BsScriptCapsuleCollider.cpp 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "Wrappers/Physics/BsScriptCapsuleCollider.h"
  4. #include "Physics/BsCapsuleCollider.h"
  5. namespace bs
  6. {
  7. ScriptCapsuleCollider::ScriptCapsuleCollider(MonoObject* instance, const SPtr<Collider>& collider)
  8. :TScriptCollider(instance, collider)
  9. {
  10. }
  11. void ScriptCapsuleCollider::initRuntimeData()
  12. {
  13. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptCapsuleCollider::internal_CreateInstance);
  14. metaData.scriptClass->addInternalCall("Internal_SetHalfHeight", &ScriptCapsuleCollider::internal_SetHalfHeight);
  15. metaData.scriptClass->addInternalCall("Internal_GetHalfHeight", &ScriptCapsuleCollider::internal_GetHalfHeight);
  16. metaData.scriptClass->addInternalCall("Internal_SetRadius", &ScriptCapsuleCollider::internal_SetRadius);
  17. metaData.scriptClass->addInternalCall("Internal_GetRadius", &ScriptCapsuleCollider::internal_GetRadius);
  18. }
  19. CapsuleCollider* ScriptCapsuleCollider::getCapsuleCollider() const
  20. {
  21. return static_cast<CapsuleCollider*>(mCollider.get());
  22. }
  23. void ScriptCapsuleCollider::internal_CreateInstance(MonoObject* instance)
  24. {
  25. SPtr<CapsuleCollider> collider = CapsuleCollider::create(0.2f, 0.5f);
  26. collider->_setOwner(PhysicsOwnerType::Script, instance);
  27. new (bs_alloc<ScriptCapsuleCollider>()) ScriptCapsuleCollider(instance, collider);
  28. }
  29. void ScriptCapsuleCollider::internal_SetHalfHeight(ScriptCapsuleCollider* thisPtr, float halfHeight)
  30. {
  31. thisPtr->getCapsuleCollider()->setHalfHeight(halfHeight);
  32. }
  33. float ScriptCapsuleCollider::internal_GetHalfHeight(ScriptCapsuleCollider* thisPtr)
  34. {
  35. return thisPtr->getCapsuleCollider()->getHalfHeight();
  36. }
  37. void ScriptCapsuleCollider::internal_SetRadius(ScriptCapsuleCollider* thisPtr, float radius)
  38. {
  39. thisPtr->getCapsuleCollider()->setRadius(radius);
  40. }
  41. float ScriptCapsuleCollider::internal_GetRadius(ScriptCapsuleCollider* thisPtr)
  42. {
  43. return thisPtr->getCapsuleCollider()->getRadius();
  44. }
  45. }