BsScriptSphericalJoint.cpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "BsScriptSphericalJoint.h"
  4. #include "BsScriptJointCommon.h"
  5. #include "BsSphericalJoint.h"
  6. namespace BansheeEngine
  7. {
  8. ScriptSphericalJoint::ScriptSphericalJoint(MonoObject* instance, const SPtr<Joint>& joint)
  9. :TScriptJoint(instance, joint)
  10. {
  11. }
  12. void ScriptSphericalJoint::initRuntimeData()
  13. {
  14. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptSphericalJoint::internal_CreateInstance);
  15. metaData.scriptClass->addInternalCall("Internal_SetLimit", &ScriptSphericalJoint::internal_SetLimit);
  16. metaData.scriptClass->addInternalCall("Internal_SetEnableLimit", &ScriptSphericalJoint::internal_SetEnableLimit);
  17. }
  18. SphericalJoint* ScriptSphericalJoint::getSphericalJoint() const
  19. {
  20. return static_cast<SphericalJoint*>(mJoint.get());
  21. }
  22. void ScriptSphericalJoint::internal_CreateInstance(MonoObject* instance)
  23. {
  24. SPtr<SphericalJoint> joint = SphericalJoint::create();
  25. joint->_setOwner(PhysicsOwnerType::Script, instance);
  26. ScriptSphericalJoint* scriptJoint = new (bs_alloc<ScriptSphericalJoint>()) ScriptSphericalJoint(instance, joint);
  27. }
  28. void ScriptSphericalJoint::internal_SetLimit(ScriptSphericalJoint* thisPtr, MonoObject* limit)
  29. {
  30. LimitConeRange nativeLimit = ScriptLimitConeRange::convert(limit);
  31. thisPtr->getSphericalJoint()->setLimit(nativeLimit);
  32. }
  33. void ScriptSphericalJoint::internal_SetEnableLimit(ScriptSphericalJoint* thisPtr, bool enable)
  34. {
  35. thisPtr->getSphericalJoint()->setFlag(SphericalJoint::Flag::Limit, enable);
  36. }
  37. }