BsScriptPhysicsQueryHit.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "BsScriptPhysicsQueryHit.h"
  4. #include "BsMonoManager.h"
  5. #include "BsMonoClass.h"
  6. #include "BsMonoUtil.h"
  7. #include "BsCollider.h"
  8. namespace BansheeEngine
  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 mono_value_box(MonoManager::instance().getDomain(),
  33. metaData.scriptClass->_getInternalClass(), (void*)&value);
  34. }
  35. ScriptPhysicsQueryHit ScriptPhysicsQueryHitHelper::unbox(MonoObject* obj)
  36. {
  37. return *(ScriptPhysicsQueryHit*)mono_object_unbox(obj);
  38. }
  39. }