BsScriptControllerCollision.cpp 2.0 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. 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.motionAmount = data.motionAmount;
  20. output.motionDir = data.motionDir;
  21. output.normal = data.normal;
  22. output.position = data.position;
  23. output.triangleIndex = data.triangleIndex;
  24. return output;
  25. }
  26. ScriptControllerCollision ScriptControllerCollisionHelper::create(const ControllerControllerCollision& data)
  27. {
  28. ScriptControllerCollision output;
  29. if (data.controllerRaw != nullptr)
  30. output.controller = (MonoObject*)data.controllerRaw->_getOwner(PhysicsOwnerType::Script);
  31. output.motionAmount = data.motionAmount;
  32. output.motionDir = data.motionDir;
  33. output.normal = data.normal;
  34. output.position = data.position;
  35. output.triangleIndex = 0;
  36. return output;
  37. }
  38. MonoObject* ScriptControllerCollisionHelper::box(const ScriptControllerCollision& value)
  39. {
  40. // We're casting away const but it's fine since structs are passed by value anyway
  41. return mono_value_box(MonoManager::instance().getDomain(),
  42. metaData.scriptClass->_getInternalClass(), (void*)&value);
  43. }
  44. ScriptControllerCollision ScriptControllerCollisionHelper::unbox(MonoObject* obj)
  45. {
  46. return *(ScriptControllerCollision*)mono_object_unbox(obj);
  47. }
  48. }