BsScriptPhysicsQueryHit.cpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "Wrappers/Physics/BsScriptPhysicsQueryHit.h"
  4. #include "BsMonoManager.h"
  5. #include "BsMonoClass.h"
  6. #include "BsMonoUtil.h"
  7. #include "Physics/BsCollider.h"
  8. namespace bs
  9. {
  10. ScriptPhysicsQueryHitHelper::ScriptPhysicsQueryHitHelper(MonoObject* instance)
  11. :ScriptObject(instance)
  12. { }
  13. void ScriptPhysicsQueryHitHelper::initRuntimeData()
  14. { }
  15. ScriptPhysicsQueryHit ScriptPhysicsQueryHitHelper::create(const PhysicsQueryHit& data)
  16. {
  17. ScriptPhysicsQueryHit output;
  18. if (data.colliderRaw != nullptr)
  19. output.collider = (MonoObject*)data.colliderRaw->_getOwner(PhysicsOwnerType::Script);
  20. else
  21. output.collider = nullptr;
  22. output.distance = data.distance;
  23. output.normal = data.normal;
  24. output.point = data.point;
  25. output.triangleIdx = data.triangleIdx;
  26. output.uv = data.uv;
  27. return output;
  28. }
  29. MonoObject* ScriptPhysicsQueryHitHelper::box(const ScriptPhysicsQueryHit& value)
  30. {
  31. // We're casting away const but it's fine since structs are passed by value anyway
  32. return MonoUtil::box(metaData.scriptClass->_getInternalClass(), (void*)&value);
  33. }
  34. ScriptPhysicsQueryHit ScriptPhysicsQueryHitHelper::unbox(MonoObject* obj)
  35. {
  36. return *(ScriptPhysicsQueryHit*)MonoUtil::unbox(obj);
  37. }
  38. }