BsScriptVector.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #include "BsScriptVector.h"
  2. #include "BsMonoManager.h"
  3. #include "BsMonoClass.h"
  4. #include "BsMonoUtil.h"
  5. namespace BansheeEngine
  6. {
  7. ScriptVector2::ScriptVector2(MonoObject* instance)
  8. :ScriptObject(instance)
  9. { }
  10. void ScriptVector2::initRuntimeData()
  11. { }
  12. MonoObject* ScriptVector2::box(const Vector2& value)
  13. {
  14. // We're casting away const but it's fine since structs are passed by value anyway
  15. return mono_value_box(MonoManager::instance().getDomain(),
  16. metaData.scriptClass->_getInternalClass(), (void*)&value);
  17. }
  18. Vector2 ScriptVector2::unbox(MonoObject* obj)
  19. {
  20. return *(Vector2*)mono_object_unbox(obj);
  21. }
  22. ScriptVector3::ScriptVector3(MonoObject* instance)
  23. :ScriptObject(instance)
  24. { }
  25. void ScriptVector3::initRuntimeData()
  26. { }
  27. MonoObject* ScriptVector3::box(const Vector3& value)
  28. {
  29. // We're casting away const but it's fine since structs are passed by value anyway
  30. return mono_value_box(MonoManager::instance().getDomain(),
  31. metaData.scriptClass->_getInternalClass(), (void*)&value);
  32. }
  33. Vector3 ScriptVector3::unbox(MonoObject* obj)
  34. {
  35. return *(Vector3*)mono_object_unbox(obj);
  36. }
  37. ScriptVector4::ScriptVector4(MonoObject* instance)
  38. :ScriptObject(instance)
  39. { }
  40. void ScriptVector4::initRuntimeData()
  41. { }
  42. MonoObject* ScriptVector4::box(const Vector4& value)
  43. {
  44. // We're casting away const but it's fine since structs are passed by value anyway
  45. return mono_value_box(MonoManager::instance().getDomain(),
  46. metaData.scriptClass->_getInternalClass(), (void*)&value);
  47. }
  48. Vector4 ScriptVector4::unbox(MonoObject* obj)
  49. {
  50. return *(Vector4*)mono_object_unbox(obj);
  51. }
  52. }