← Back to file list Raw

src/CTypesTransform.cpp

#include "CTypesTransform.h"
#include "CTypesRegistering.h"
#include "CScriptingEngine.h"
#include "CTransform.h"
void CScriptingEngine::RegisterTransformTypes()
{
State->new_usertype<CEulerRepresentationBase>
(
"CEulerRepresentationBase",
sol::no_constructor,
"GetRotation", &CEulerRepresentationBase::GetRotation,
"GetRotationX", &CEulerRepresentationBase::GetRotationX,
"GetRotationY", &CEulerRepresentationBase::GetRotationY,
"GetRotationZ", &CEulerRepresentationBase::GetRotationZ,
"SetRotation", [](CEulerRepresentationBase& repr, const CAngles& rot) { repr.SetRotation(rot); },
"SetRotationX", &CEulerRepresentationBase::SetRotationX,
"SetRotationY", &CEulerRepresentationBase::SetRotationY,
"SetRotationZ", &CEulerRepresentationBase::SetRotationZ,
"ResetRotation", &CEulerRepresentationBase::ResetRotation,
"Rotation", sol::property
(
[](CEulerRepresentationBase& repr) { return repr.GetRotation(); },
[](CEulerRepresentationBase& repr, const CAngles& rot) { return repr.SetRotation(rot); }
)
);
State->new_usertype<CRotationEulerRepresentation>
(
"CRotationEulerRepresentation",
sol::no_constructor,
sol::base_classes, sol::bases<CEulerRepresentationBase>(),
"GetTransform", &CRotationEulerRepresentation::GetTransform,
"Transform", sol::property([](CRotationEulerRepresentation& repr) -> CTransformBase& { return repr.GetTransform(); })
);
State->new_usertype<CQuatEulerRepresentation>
(
"CQuatEulerRepresentation",
sol::no_constructor,
sol::base_classes, sol::bases<CEulerRepresentationBase>(),
"GetQuaternion", &CQuatEulerRepresentation::GetQuaternion,
"Quaternion", sol::property([](CQuatEulerRepresentation& repr) -> glm::quat& { return repr.GetQuaternion(); })
);
State->new_usertype<CTransformBase::CMeasurePack>
(
"CMeasurePack",
sol::no_constructor,
"Position", &CTransformBase::CMeasurePack::Position,
"Rotation", &CTransformBase::CMeasurePack::Rotation,
"Scale", &CTransformBase::CMeasurePack::Scale,
"EulerRotation", sol::property([](CTransformBase::CMeasurePack& mpack) -> CQuatEulerRepresentation { return mpack.GetEulerRotation(); })
);
State->new_usertype<CTransformBoolDelta>
(
"CTransformBoolDelta",
"Position", &CTransformBoolDelta::Position,
"Rotation", &CTransformBoolDelta::Rotation,
"Scale", &CTransformBoolDelta::Scale
);
State->new_usertype<CTransformBase>
(
"CTransformBase",
sol::no_constructor,
"GetPosition", &CTransformBase::GetPosition,
"GetRotation", &CTransformBase::GetRotation,
"GetScale", &CTransformBase::GetScale,
"SetPosition", &CTransformBase::SetPosition,
"SetRotation", &CTransformBase::SetRotation,
"SetScale", &CTransformBase::SetScale,
"GetForwardVector", &CTransformBase::GetForwardVector,
"GetRightVector", &CTransformBase::GetRightVector,
"GetUpVector", &CTransformBase::GetUpVector,
"GetEulerRotation", &CTransformBase::GetEulerRotation,
"SetFromMatrix", &CTransformBase::SetFromMatrix,
"GetModelMatrix", &CTransformBase::GetModelMatrix,
"ResetTransform", &CTransformBase::ResetTransform,
"SetPRS", sol::overload
(
[](CTransformBase& trans, const CTransformBase::CMeasurePack& pack) { trans.SetPRS(pack); },
[](CTransformBase& trans, const glm::vec3& pos, const glm::quat& rot, const glm::vec3& scl) { trans.SetPRS(pos, rot, scl); },
[](CTransformBase& trans, const CTransformBase& _trans) { trans.SetPRS(_trans.GetPRS()); },
[](CTransformBase& trans, const CTransform& _trans) { trans.SetPRS(_trans.GetPRS()); }
),
"SetPR", &CTransformBase::SetPR,
"SetPS", &CTransformBase::SetPS,
"SetRS", &CTransformBase::SetRS,
"GetPRS", &CTransformBase::GetPRS,
"AcknowledgeChange", &CTransformBase::AcknowledgeChange,
"OnTransformChanged", sol::property([](CTransformBase& trans) -> HANDLER
{
return trans.OnTransformChanged;
}),
"GetBoolDelta", [](CTransformBase& trans, const CTransformBase::CMeasurePack& oldprs) { return GetTransformBoolDelta(oldprs, &trans); },
"GetTransformDelta", [](CTransformBase& trans, const CTransformBase::CMeasurePack& oldprs) { return GetTransformDelta(oldprs, &trans); },
"Forward", sol::property([](CTransformBase& trans) { return trans.GetForwardVector(); }),
"Right", sol::property([](CTransformBase& trans) { return trans.GetRightVector(); }),
"Up", sol::property([](CTransformBase& trans) { return trans.GetUpVector(); }),
"Position", sol::property
(
[](CTransformBase& trans) { return trans.GetPosition(); },
[](CTransformBase& trans, const glm::vec3& newpos) { return trans.SetPosition(newpos); }
),
"Rotation", sol::property
(
[](CTransformBase& trans) { return trans.GetRotation(); },
[](CTransformBase& trans, const glm::quat& newrot) { return trans.SetRotation(newrot); }
),
"Scale", sol::property
(
[](CTransformBase& trans) { return trans.GetScale(); },
[](CTransformBase& trans, const glm::vec3& newscl) { return trans.SetScale(newscl); }
)
);
State->new_usertype<CTransform>
(
"CTransform",
sol::no_constructor,
sol::base_classes, sol::bases<CTransformBase>()
);
}