#include "CTypesTransform.h" #include "CTypesRegistering.h" #include "CScriptingEngine.h" #include "CTransform.h" void CScriptingEngine::RegisterTransformTypes() { State->new_usertype ( "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", sol::no_constructor, sol::base_classes, sol::bases(), "GetTransform", &CRotationEulerRepresentation::GetTransform, "Transform", sol::property([](CRotationEulerRepresentation& repr) -> CTransformBase& { return repr.GetTransform(); }) ); State->new_usertype ( "CQuatEulerRepresentation", sol::no_constructor, sol::base_classes, sol::bases(), "GetQuaternion", &CQuatEulerRepresentation::GetQuaternion, "Quaternion", sol::property([](CQuatEulerRepresentation& repr) -> glm::quat& { return repr.GetQuaternion(); }) ); State->new_usertype ( "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", "Position", &CTransformBoolDelta::Position, "Rotation", &CTransformBoolDelta::Rotation, "Scale", &CTransformBoolDelta::Scale ); State->new_usertype ( "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", sol::no_constructor, sol::base_classes, sol::bases() ); }