BsScriptCollisionData.generated.cpp 2.9 KB

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