82 lines
1.9 KiB
C++
82 lines
1.9 KiB
C++
#include "DeerCore/Scripting/InternalAPI/Math.h"
|
|
#include "glm/glm.hpp"
|
|
|
|
namespace Deer {
|
|
namespace Scripting {
|
|
void vec3_constructor(void* mem) {
|
|
new (mem) glm::vec3();
|
|
}
|
|
|
|
void mat4_constructor(void* mem) {
|
|
new (mem) glm::mat4(1.0f);
|
|
}
|
|
|
|
glm::mat4 mat4_getRelativeMatrix(glm::mat4& other, glm::mat4& self) {
|
|
return glm::inverse(other) * self;
|
|
}
|
|
|
|
glm::vec3 mat4_getPosition(glm::mat4& matrix) {
|
|
return glm::vec3(matrix[3][0], matrix[3][1], matrix[3][2]);
|
|
}
|
|
|
|
void vec3_constructor_params(float x, float y, float z, void* mem) {
|
|
new (mem) glm::vec3(x, y, z);
|
|
}
|
|
|
|
glm::vec3 vec3_add(glm::vec3& value, glm::vec3& self) {
|
|
return self + value;
|
|
}
|
|
|
|
glm::vec3 vec3_sub(const glm::vec3& value, glm::vec3& self) {
|
|
return self - value;
|
|
}
|
|
|
|
glm::vec3 vec3_neg(glm::vec3& self) {
|
|
return -self;
|
|
}
|
|
|
|
glm::vec3 vec3_mult(float value, glm::vec3& self) {
|
|
return self * value;
|
|
}
|
|
|
|
void quat_construct(glm::quat* mem) {
|
|
new (mem) glm::quat();
|
|
}
|
|
|
|
void quat_copyConstruct(glm::quat* data, glm::quat* mem) {
|
|
new (mem) glm::quat(*data);
|
|
}
|
|
|
|
void quat_constructFromValue(float x, float y, float z, float w, glm::quat* mem) {
|
|
new (mem) glm::quat(x, y, z, w);
|
|
}
|
|
|
|
glm::vec3 quat_getEuler(glm::quat* mem) {
|
|
return glm::degrees(glm::eulerAngles(*mem));
|
|
}
|
|
|
|
void quat_setEuler(glm::vec3 euler, glm::quat* mem) {
|
|
new (mem) glm::quat(glm::radians(euler));
|
|
}
|
|
|
|
glm::quat quat_multiply(glm::quat* data, glm::quat* mem) {
|
|
return *mem * *data;
|
|
}
|
|
|
|
glm::vec3 transform_relative(glm::vec3 pos, TransformComponent* transform) {
|
|
return transform->getMatrix() * glm::vec4(pos, 1.0f);
|
|
}
|
|
|
|
void transform_construct(TransformComponent* mem) {
|
|
new (mem) TransformComponent();
|
|
}
|
|
|
|
void camera_construct(CameraComponent* mem) {
|
|
new (mem) CameraComponent();
|
|
}
|
|
|
|
void sceneCamera_Construct(WorldCamera* mem) {
|
|
new (mem) WorldCamera();
|
|
}
|
|
} // namespace Scripting
|
|
} // namespace Deer
|