BsScriptMesh.generated.cpp 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. #include "BsScriptMesh.generated.h"
  2. #include "BsMonoMethod.h"
  3. #include "BsMonoClass.h"
  4. #include "BsMonoUtil.h"
  5. #include "../../../bsf/Source/Foundation/bsfCore/Mesh/BsMesh.h"
  6. #include "BsScriptResourceManager.h"
  7. #include "Wrappers/BsScriptRRefBase.h"
  8. #include "BsScriptSkeleton.generated.h"
  9. #include "BsScriptRendererMeshData.generated.h"
  10. #include "BsScriptMorphShapes.generated.h"
  11. #include "BsScriptSubMesh.generated.h"
  12. #include "../../../bsf/Source/Foundation/bsfCore/Mesh/BsMesh.h"
  13. #include "../../SBansheeEngine/Extensions/BsMeshEx.h"
  14. namespace bs
  15. {
  16. ScriptMesh::ScriptMesh(MonoObject* managedInstance, const ResourceHandle<Mesh>& value)
  17. :TScriptResource(managedInstance, value)
  18. {
  19. }
  20. void ScriptMesh::initRuntimeData()
  21. {
  22. metaData.scriptClass->addInternalCall("Internal_GetRef", (void*)&ScriptMesh::Internal_getRef);
  23. metaData.scriptClass->addInternalCall("Internal_getSkeleton", (void*)&ScriptMesh::Internal_getSkeleton);
  24. metaData.scriptClass->addInternalCall("Internal_getMorphShapes", (void*)&ScriptMesh::Internal_getMorphShapes);
  25. metaData.scriptClass->addInternalCall("Internal_create", (void*)&ScriptMesh::Internal_create);
  26. metaData.scriptClass->addInternalCall("Internal_create0", (void*)&ScriptMesh::Internal_create0);
  27. metaData.scriptClass->addInternalCall("Internal_create1", (void*)&ScriptMesh::Internal_create1);
  28. metaData.scriptClass->addInternalCall("Internal_create2", (void*)&ScriptMesh::Internal_create2);
  29. metaData.scriptClass->addInternalCall("Internal_getSubMeshes", (void*)&ScriptMesh::Internal_getSubMeshes);
  30. metaData.scriptClass->addInternalCall("Internal_getSubMeshCount", (void*)&ScriptMesh::Internal_getSubMeshCount);
  31. metaData.scriptClass->addInternalCall("Internal_getBounds", (void*)&ScriptMesh::Internal_getBounds);
  32. metaData.scriptClass->addInternalCall("Internal_getMeshData", (void*)&ScriptMesh::Internal_getMeshData);
  33. metaData.scriptClass->addInternalCall("Internal_setMeshData", (void*)&ScriptMesh::Internal_setMeshData);
  34. }
  35. MonoObject*ScriptMesh::createInstance()
  36. {
  37. bool dummy = false;
  38. void* ctorParams[1] = { &dummy };
  39. return metaData.scriptClass->createInstance("bool", ctorParams);
  40. }
  41. MonoObject* ScriptMesh::Internal_getRef(ScriptMesh* thisPtr)
  42. {
  43. return thisPtr->getRRef();
  44. }
  45. MonoObject* ScriptMesh::Internal_getSkeleton(ScriptMesh* thisPtr)
  46. {
  47. SPtr<Skeleton> tmp__output;
  48. tmp__output = thisPtr->getHandle()->getSkeleton();
  49. MonoObject* __output;
  50. __output = ScriptSkeleton::create(tmp__output);
  51. return __output;
  52. }
  53. MonoObject* ScriptMesh::Internal_getMorphShapes(ScriptMesh* thisPtr)
  54. {
  55. SPtr<MorphShapes> tmp__output;
  56. tmp__output = thisPtr->getHandle()->getMorphShapes();
  57. MonoObject* __output;
  58. __output = ScriptMorphShapes::create(tmp__output);
  59. return __output;
  60. }
  61. void ScriptMesh::Internal_create(MonoObject* managedInstance, int32_t numVertices, int32_t numIndices, DrawOperationType topology, MeshUsage usage, VertexLayout vertex, IndexType index)
  62. {
  63. ResourceHandle<Mesh> instance = MeshEx::create(numVertices, numIndices, topology, usage, vertex, index);
  64. ScriptResourceManager::instance().createBuiltinScriptResource(instance, managedInstance);
  65. }
  66. void ScriptMesh::Internal_create0(MonoObject* managedInstance, int32_t numVertices, int32_t numIndices, MonoArray* subMeshes, MeshUsage usage, VertexLayout vertex, IndexType index)
  67. {
  68. Vector<SubMesh> vecsubMeshes;
  69. if(subMeshes != nullptr)
  70. {
  71. ScriptArray arraysubMeshes(subMeshes);
  72. vecsubMeshes.resize(arraysubMeshes.size());
  73. for(int i = 0; i < (int)arraysubMeshes.size(); i++)
  74. {
  75. vecsubMeshes[i] = arraysubMeshes.get<SubMesh>(i);
  76. }
  77. }
  78. ResourceHandle<Mesh> instance = MeshEx::create(numVertices, numIndices, vecsubMeshes, usage, vertex, index);
  79. ScriptResourceManager::instance().createBuiltinScriptResource(instance, managedInstance);
  80. }
  81. void ScriptMesh::Internal_create1(MonoObject* managedInstance, MonoObject* data, DrawOperationType topology, MeshUsage usage)
  82. {
  83. SPtr<RendererMeshData> tmpdata;
  84. ScriptRendererMeshData* scriptdata;
  85. scriptdata = ScriptRendererMeshData::toNative(data);
  86. tmpdata = scriptdata->getInternal();
  87. ResourceHandle<Mesh> instance = MeshEx::create(tmpdata, topology, usage);
  88. ScriptResourceManager::instance().createBuiltinScriptResource(instance, managedInstance);
  89. }
  90. void ScriptMesh::Internal_create2(MonoObject* managedInstance, MonoObject* data, MonoArray* subMeshes, MeshUsage usage)
  91. {
  92. SPtr<RendererMeshData> tmpdata;
  93. ScriptRendererMeshData* scriptdata;
  94. scriptdata = ScriptRendererMeshData::toNative(data);
  95. tmpdata = scriptdata->getInternal();
  96. Vector<SubMesh> vecsubMeshes;
  97. if(subMeshes != nullptr)
  98. {
  99. ScriptArray arraysubMeshes(subMeshes);
  100. vecsubMeshes.resize(arraysubMeshes.size());
  101. for(int i = 0; i < (int)arraysubMeshes.size(); i++)
  102. {
  103. vecsubMeshes[i] = arraysubMeshes.get<SubMesh>(i);
  104. }
  105. }
  106. ResourceHandle<Mesh> instance = MeshEx::create(tmpdata, vecsubMeshes, usage);
  107. ScriptResourceManager::instance().createBuiltinScriptResource(instance, managedInstance);
  108. }
  109. MonoArray* ScriptMesh::Internal_getSubMeshes(ScriptMesh* thisPtr)
  110. {
  111. Vector<SubMesh> vec__output;
  112. vec__output = MeshEx::getSubMeshes(thisPtr->getHandle());
  113. MonoArray* __output;
  114. int arraySize__output = (int)vec__output.size();
  115. ScriptArray array__output = ScriptArray::create<ScriptSubMesh>(arraySize__output);
  116. for(int i = 0; i < arraySize__output; i++)
  117. {
  118. array__output.set(i, vec__output[i]);
  119. }
  120. __output = array__output.getInternal();
  121. return __output;
  122. }
  123. uint32_t ScriptMesh::Internal_getSubMeshCount(ScriptMesh* thisPtr)
  124. {
  125. uint32_t tmp__output;
  126. tmp__output = MeshEx::getSubMeshCount(thisPtr->getHandle());
  127. uint32_t __output;
  128. __output = tmp__output;
  129. return __output;
  130. }
  131. void ScriptMesh::Internal_getBounds(ScriptMesh* thisPtr, AABox* box, Sphere* sphere)
  132. {
  133. MeshEx::getBounds(thisPtr->getHandle(), box, sphere);
  134. }
  135. MonoObject* ScriptMesh::Internal_getMeshData(ScriptMesh* thisPtr)
  136. {
  137. SPtr<RendererMeshData> tmp__output;
  138. tmp__output = MeshEx::getMeshData(thisPtr->getHandle());
  139. MonoObject* __output;
  140. __output = ScriptRendererMeshData::create(tmp__output);
  141. return __output;
  142. }
  143. void ScriptMesh::Internal_setMeshData(ScriptMesh* thisPtr, MonoObject* value)
  144. {
  145. SPtr<RendererMeshData> tmpvalue;
  146. ScriptRendererMeshData* scriptvalue;
  147. scriptvalue = ScriptRendererMeshData::toNative(value);
  148. tmpvalue = scriptvalue->getInternal();
  149. MeshEx::setMeshData(thisPtr->getHandle(), tmpvalue);
  150. }
  151. }