BsScriptCollisionData.generated.cpp 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #include "BsScriptCollisionData.generated.h"
  2. #include "BsMonoMethod.h"
  3. #include "BsMonoClass.h"
  4. #include "BsMonoUtil.h"
  5. #include "BsScriptGameObjectManager.h"
  6. #include "BsScriptCCollider.generated.h"
  7. #include "BsScriptContactPoint.generated.h"
  8. namespace bs
  9. {
  10. ScriptCollisionData::ScriptCollisionData(MonoObject* managedInstance)
  11. :ScriptObject(managedInstance)
  12. { }
  13. void ScriptCollisionData::initRuntimeData()
  14. { }
  15. MonoObject*ScriptCollisionData::box(const __CollisionDataInterop& value)
  16. {
  17. return MonoUtil::box(metaData.scriptClass->_getInternalClass(), (void*)&value);
  18. }
  19. __CollisionDataInterop ScriptCollisionData::unbox(MonoObject* value)
  20. {
  21. return *(__CollisionDataInterop*)MonoUtil::unbox(value);
  22. }
  23. CollisionData ScriptCollisionData::fromInterop(const __CollisionDataInterop& value)
  24. {
  25. CollisionData output;
  26. GameObjectHandle<CCollider> veccollider[2];
  27. if(value.collider != nullptr)
  28. {
  29. ScriptArray arraycollider(value.collider);
  30. for(int i = 0; i < (int)arraycollider.size(); i++)
  31. {
  32. ScriptCColliderBase* scriptcollider;
  33. scriptcollider = (ScriptCColliderBase*)ScriptCCollider::toNative(arraycollider.get<MonoObject*>(i));
  34. if(scriptcollider != nullptr)
  35. veccollider[i] = static_object_cast<CCollider>(scriptcollider->getComponent());
  36. }
  37. }
  38. auto tmpcollider = veccollider;
  39. for(int i = 0; i < 2; ++i)
  40. output.collider[i] = tmpcollider[i];
  41. Vector<ContactPoint> veccontactPoints;
  42. if(value.contactPoints != nullptr)
  43. {
  44. ScriptArray arraycontactPoints(value.contactPoints);
  45. veccontactPoints.resize(arraycontactPoints.size());
  46. for(int i = 0; i < (int)arraycontactPoints.size(); i++)
  47. {
  48. veccontactPoints[i] = arraycontactPoints.get<ContactPoint>(i);
  49. }
  50. }
  51. output.contactPoints = veccontactPoints;
  52. return output;
  53. }
  54. __CollisionDataInterop ScriptCollisionData::toInterop(const CollisionData& value)
  55. {
  56. __CollisionDataInterop output;
  57. int arraySizecollider = 2;
  58. MonoArray* veccollider;
  59. ScriptArray arraycollider = ScriptArray::create<ScriptCCollider>(arraySizecollider);
  60. for(int i = 0; i < arraySizecollider; i++)
  61. {
  62. ScriptComponentBase* scriptcollider = nullptr;
  63. if(value.collider[i])
  64. scriptcollider = ScriptGameObjectManager::instance().getBuiltinScriptComponent(static_object_cast<Component>(value.collider[i]));
  65. if(scriptcollider != nullptr)
  66. arraycollider.set(i, scriptcollider->getManagedInstance());
  67. else
  68. arraycollider.set(i, nullptr);
  69. }
  70. veccollider = arraycollider.getInternal();
  71. output.collider = veccollider;
  72. int arraySizecontactPoints = (int)value.contactPoints.size();
  73. MonoArray* veccontactPoints;
  74. ScriptArray arraycontactPoints = ScriptArray::create<ScriptContactPoint>(arraySizecontactPoints);
  75. for(int i = 0; i < arraySizecontactPoints; i++)
  76. {
  77. arraycontactPoints.set(i, value.contactPoints[i]);
  78. }
  79. veccontactPoints = arraycontactPoints.getInternal();
  80. output.contactPoints = veccontactPoints;
  81. return output;
  82. }
  83. }