BsScriptControllerCollision.cpp 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. namespace BansheeEngine
  8. {
  9. ScriptControllerCollisionHelper::ScriptControllerCollisionHelper(MonoObject* instance)
  10. :ScriptObject(instance)
  11. { }
  12. void ScriptControllerCollisionHelper::initRuntimeData()
  13. { }
  14. ScriptControllerCollision ScriptControllerCollisionHelper::create(const ControllerColliderCollision& data)
  15. {
  16. ScriptControllerCollision output;
  17. if (data.colliderRaw != nullptr)
  18. output.collider = (MonoObject*)data.colliderRaw->_getOwner(PhysicsOwnerType::Script);
  19. output.isControllerCollision = false;
  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.isControllerCollision = true;
  33. output.motionAmount = data.motionAmount;
  34. output.motionDir = data.motionDir;
  35. output.normal = data.normal;
  36. output.position = data.position;
  37. output.triangleIndex = 0;
  38. return output;
  39. }
  40. MonoObject* ScriptControllerCollisionHelper::box(const ScriptControllerCollision& value)
  41. {
  42. // We're casting away const but it's fine since structs are passed by value anyway
  43. return mono_value_box(MonoManager::instance().getDomain(),
  44. metaData.scriptClass->_getInternalClass(), (void*)&value);
  45. }
  46. ScriptControllerCollision ScriptControllerCollisionHelper::unbox(MonoObject* obj)
  47. {
  48. return *(ScriptControllerCollision*)mono_object_unbox(obj);
  49. }
  50. }