feat(scripting): add transform orientation overloads

This commit is contained in:
2026-03-27 14:39:19 +08:00
parent 727b6ca249
commit 3e2608a802
6 changed files with 141 additions and 0 deletions

View File

@@ -565,6 +565,23 @@ void InternalCall_Transform_Rotate(uint64_t gameObjectUUID, XCEngine::Math::Vect
gameObject->GetTransform()->Rotate(*eulers, ResolveManagedSpace(relativeTo));
}
void InternalCall_Transform_RotateAxisAngle(
uint64_t gameObjectUUID,
XCEngine::Math::Vector3* axis,
float angle,
int32_t relativeTo) {
if (!axis) {
return;
}
Components::GameObject* gameObject = FindGameObjectByUUID(gameObjectUUID);
if (!gameObject || !gameObject->GetTransform()) {
return;
}
gameObject->GetTransform()->Rotate(*axis, angle, ResolveManagedSpace(relativeTo));
}
void InternalCall_Transform_LookAt(uint64_t gameObjectUUID, XCEngine::Math::Vector3* target) {
if (!target) {
return;
@@ -578,6 +595,22 @@ void InternalCall_Transform_LookAt(uint64_t gameObjectUUID, XCEngine::Math::Vect
gameObject->GetTransform()->LookAt(*target);
}
void InternalCall_Transform_LookAtWithUp(
uint64_t gameObjectUUID,
XCEngine::Math::Vector3* target,
XCEngine::Math::Vector3* up) {
if (!target || !up) {
return;
}
Components::GameObject* gameObject = FindGameObjectByUUID(gameObjectUUID);
if (!gameObject || !gameObject->GetTransform()) {
return;
}
gameObject->GetTransform()->LookAt(*target, *up);
}
void InternalCall_Transform_TransformPoint(uint64_t gameObjectUUID, XCEngine::Math::Vector3* point, XCEngine::Math::Vector3* outPoint) {
if (!point || !outPoint) {
return;
@@ -831,7 +864,9 @@ void RegisterInternalCalls() {
mono_add_internal_call("XCEngine.InternalCalls::Transform_GetUp", reinterpret_cast<const void*>(&InternalCall_Transform_GetUp));
mono_add_internal_call("XCEngine.InternalCalls::Transform_Translate", reinterpret_cast<const void*>(&InternalCall_Transform_Translate));
mono_add_internal_call("XCEngine.InternalCalls::Transform_Rotate", reinterpret_cast<const void*>(&InternalCall_Transform_Rotate));
mono_add_internal_call("XCEngine.InternalCalls::Transform_RotateAxisAngle", reinterpret_cast<const void*>(&InternalCall_Transform_RotateAxisAngle));
mono_add_internal_call("XCEngine.InternalCalls::Transform_LookAt", reinterpret_cast<const void*>(&InternalCall_Transform_LookAt));
mono_add_internal_call("XCEngine.InternalCalls::Transform_LookAtWithUp", reinterpret_cast<const void*>(&InternalCall_Transform_LookAtWithUp));
mono_add_internal_call("XCEngine.InternalCalls::Transform_TransformPoint", reinterpret_cast<const void*>(&InternalCall_Transform_TransformPoint));
mono_add_internal_call("XCEngine.InternalCalls::Transform_InverseTransformPoint", reinterpret_cast<const void*>(&InternalCall_Transform_InverseTransformPoint));
mono_add_internal_call("XCEngine.InternalCalls::Transform_TransformDirection", reinterpret_cast<const void*>(&InternalCall_Transform_TransformDirection));