BsScriptControllerCollision.cpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "BsScriptControllerCollision.h"
  4. #include "BsMonoManager.h"
  5. #include "BsMonoClass.h"
  6. #include "BsCollider.h"
  7. #include "BsMonoUtil.h"
  8. namespace bs
  9. {
  10. ScriptControllerCollisionHelper::ScriptControllerCollisionHelper(MonoObject* instance)
  11. :ScriptObject(instance)
  12. { }
  13. void ScriptControllerCollisionHelper::initRuntimeData()
  14. { }
  15. ScriptControllerCollision ScriptControllerCollisionHelper::create(const ControllerColliderCollision& data)
  16. {
  17. ScriptControllerCollision output;
  18. if (data.colliderRaw != nullptr)
  19. output.collider = (MonoObject*)data.colliderRaw->_getOwner(PhysicsOwnerType::Script);
  20. output.motionAmount = data.motionAmount;
  21. output.motionDir = data.motionDir;
  22. output.normal = data.normal;
  23. output.position = data.position;
  24. output.triangleIndex = data.triangleIndex;
  25. return output;
  26. }
  27. ScriptControllerCollision ScriptControllerCollisionHelper::create(const ControllerControllerCollision& data)
  28. {
  29. ScriptControllerCollision output;
  30. if (data.controllerRaw != nullptr)
  31. output.controller = (MonoObject*)data.controllerRaw->_getOwner(PhysicsOwnerType::Script);
  32. output.motionAmount = data.motionAmount;
  33. output.motionDir = data.motionDir;
  34. output.normal = data.normal;
  35. output.position = data.position;
  36. output.triangleIndex = 0;
  37. return output;
  38. }
  39. MonoObject* ScriptControllerCollisionHelper::box(const ScriptControllerCollision& value)
  40. {
  41. // We're casting away const but it's fine since structs are passed by value anyway
  42. return MonoUtil::box(metaData.scriptClass->_getInternalClass(), (void*)&value);
  43. }
  44. ScriptControllerCollision ScriptControllerCollisionHelper::unbox(MonoObject* obj)
  45. {
  46. return *(ScriptControllerCollision*)MonoUtil::unbox(obj);
  47. }
  48. }