Răsfoiți Sursa

Port PhysicsPlayground to the new format

Panagiotis Christopoulos Charitos 3 luni în urmă
părinte
comite
09232860d4

+ 2 - 6
AnKi/Importer/GltfImporter.cpp

@@ -1133,12 +1133,8 @@ Error GltfImporter::writeMeshMaterialNode(const cgltf_node& node, const Importer
 
 	for(U32 primIdx = 0; primIdx < mesh.primitives_count; ++primIdx)
 	{
-		ANKI_CHECK(m_sceneFile.writeText("mtlc = node:newMaterialComponent()\n"));
-
-		ANKI_CHECK(m_sceneFile.writeTextf("mtlc:setMaterialFilename(\"%s%s\")\n", m_rpath.cstr(),
-										  computeMaterialResourceFilename(*mesh.primitives[primIdx].material).cstr()));
-
-		ANKI_CHECK(m_sceneFile.writeTextf("mtlc:setSubmeshIndex(%d)\n", primIdx));
+		ANKI_CHECK(m_sceneFile.writeTextf("node:newMaterialComponent():setMaterialFilename(\"%s%s\"):setSubmeshIndex(%u)\n", m_rpath.cstr(),
+										  computeMaterialResourceFilename(*mesh.primitives[primIdx].material).cstr(), primIdx));
 	}
 
 	if(node.skin)

+ 11 - 6
AnKi/Scene/Components/MaterialComponent.cpp

@@ -29,28 +29,33 @@ MaterialComponent::~MaterialComponent()
 	m_gpuSceneMeshLods.free();
 }
 
-void MaterialComponent::setMaterialFilename(CString fname)
+MaterialComponent& MaterialComponent::setMaterialFilename(CString fname)
 {
 	MaterialResourcePtr newRsrc;
 	const Error err = ResourceManager::getSingleton().loadResource(fname, newRsrc);
 	if(err)
 	{
 		ANKI_SCENE_LOGE("Failed to load resource: %s", fname.cstr());
-		return;
+	}
+	else
+	{
+		m_resource = std::move(newRsrc);
+		m_castsShadow = m_resource->castsShadow();
+		m_resourceDirty = true;
 	}
 
-	m_resource = std::move(newRsrc);
-	m_castsShadow = m_resource->castsShadow();
-	m_resourceDirty = true;
+	return *this;
 }
 
-void MaterialComponent::setSubmeshIndex(U32 submeshIdx)
+MaterialComponent& MaterialComponent::setSubmeshIndex(U32 submeshIdx)
 {
 	if(m_submeshIdx != submeshIdx)
 	{
 		m_submeshIdx = submeshIdx;
 		m_submeshIdxDirty = true;
 	}
+
+	return *this;
 }
 
 void MaterialComponent::onOtherComponentRemovedOrAdded(SceneComponent* other, Bool added)

+ 2 - 2
AnKi/Scene/Components/MaterialComponent.h

@@ -28,9 +28,9 @@ public:
 
 	~MaterialComponent();
 
-	void setMaterialFilename(CString fname);
+	MaterialComponent& setMaterialFilename(CString fname);
 
-	void setSubmeshIndex(U32 submeshIdx);
+	MaterialComponent& setSubmeshIndex(U32 submeshIdx);
 
 private:
 	GpuSceneArrays::MeshLod::Allocation m_gpuSceneMeshLods;

+ 7 - 4
AnKi/Scene/Components/MeshComponent.cpp

@@ -18,18 +18,21 @@ MeshComponent::~MeshComponent()
 {
 }
 
-void MeshComponent::setMeshFilename(CString fname)
+MeshComponent& MeshComponent::setMeshFilename(CString fname)
 {
 	MeshResourcePtr newRsrc;
 	const Error err = ResourceManager::getSingleton().loadResource(fname, newRsrc);
 	if(err)
 	{
 		ANKI_SCENE_LOGE("Failed to load resource: %s", fname.cstr());
-		return;
+	}
+	else
+	{
+		m_resource = newRsrc;
+		m_resourceDirty = true;
 	}
 
-	m_resource = newRsrc;
-	m_resourceDirty = true;
+	return *this;
 }
 
 void MeshComponent::update([[maybe_unused]] SceneComponentUpdateInfo& info, Bool& updated)

+ 1 - 1
AnKi/Scene/Components/MeshComponent.h

@@ -25,7 +25,7 @@ public:
 
 	void update(SceneComponentUpdateInfo& info, Bool& updated) override;
 
-	void setMeshFilename(CString fname);
+	MeshComponent& setMeshFilename(CString fname);
 
 	Bool isEnabled() const
 	{

+ 53 - 32
AnKi/Script/Scene.cpp

@@ -40,7 +40,7 @@ static EventManager* getEventManager(lua_State* l)
 
 using WeakArraySceneNodePtr = WeakArray<SceneNode*>;
 
-LuaUserDataTypeInfo luaUserDataTypeInfoLightComponentType = {6206133836153136512, "LightComponentType", 0, nullptr, nullptr};
+LuaUserDataTypeInfo luaUserDataTypeInfoLightComponentType = {719535561358076220, "LightComponentType", 0, nullptr, nullptr};
 
 template<>
 const LuaUserDataTypeInfo& LuaUserData::getDataTypeInfoFor<LightComponentType>()
@@ -75,7 +75,7 @@ static inline void wrapLightComponentType(lua_State* l)
 	lua_settop(l, 0);
 }
 
-LuaUserDataTypeInfo luaUserDataTypeInfoBodyComponentCollisionShapeType = {2101311552635064966, "BodyComponentCollisionShapeType", 0, nullptr,
+LuaUserDataTypeInfo luaUserDataTypeInfoBodyComponentCollisionShapeType = {-6304619620946394365, "BodyComponentCollisionShapeType", 0, nullptr,
 																		  nullptr};
 
 template<>
@@ -120,7 +120,7 @@ static inline void wrapBodyComponentCollisionShapeType(lua_State* l)
 }
 
 LuaUserDataTypeInfo luaUserDataTypeInfoWeakArraySceneNodePtr = {
-	6151684403601409780, "WeakArraySceneNodePtr", LuaUserData::computeSizeForGarbageCollected<WeakArraySceneNodePtr>(), nullptr, nullptr};
+	-5576003085739332971, "WeakArraySceneNodePtr", LuaUserData::computeSizeForGarbageCollected<WeakArraySceneNodePtr>(), nullptr, nullptr};
 
 template<>
 const LuaUserDataTypeInfo& LuaUserData::getDataTypeInfoFor<WeakArraySceneNodePtr>()
@@ -238,7 +238,7 @@ static inline void wrapWeakArraySceneNodePtr(lua_State* l)
 	lua_settop(l, 0);
 }
 
-LuaUserDataTypeInfo luaUserDataTypeInfoLightComponent = {1168355668964602089, "LightComponent",
+LuaUserDataTypeInfo luaUserDataTypeInfoLightComponent = {3873585113943008776, "LightComponent",
 														 LuaUserData::computeSizeForGarbageCollected<LightComponent>(), nullptr, nullptr};
 
 template<>
@@ -849,7 +849,7 @@ static inline void wrapLightComponent(lua_State* l)
 	lua_settop(l, 0);
 }
 
-LuaUserDataTypeInfo luaUserDataTypeInfoDecalComponent = {-7371831488065499415, "DecalComponent",
+LuaUserDataTypeInfo luaUserDataTypeInfoDecalComponent = {6811154422270415588, "DecalComponent",
 														 LuaUserData::computeSizeForGarbageCollected<DecalComponent>(), nullptr, nullptr};
 
 template<>
@@ -971,7 +971,7 @@ static inline void wrapDecalComponent(lua_State* l)
 	lua_settop(l, 0);
 }
 
-LuaUserDataTypeInfo luaUserDataTypeInfoLensFlareComponent = {-7298340444981222053, "LensFlareComponent",
+LuaUserDataTypeInfo luaUserDataTypeInfoLensFlareComponent = {604038026485804297, "LensFlareComponent",
 															 LuaUserData::computeSizeForGarbageCollected<LensFlareComponent>(), nullptr, nullptr};
 
 template<>
@@ -1134,7 +1134,7 @@ static inline void wrapLensFlareComponent(lua_State* l)
 	lua_settop(l, 0);
 }
 
-LuaUserDataTypeInfo luaUserDataTypeInfoBodyComponent = {7978234134318632844, "BodyComponent",
+LuaUserDataTypeInfo luaUserDataTypeInfoBodyComponent = {-7063592649961628038, "BodyComponent",
 														LuaUserData::computeSizeForGarbageCollected<BodyComponent>(), nullptr, nullptr};
 
 template<>
@@ -1444,7 +1444,7 @@ static inline void wrapBodyComponent(lua_State* l)
 	lua_settop(l, 0);
 }
 
-LuaUserDataTypeInfo luaUserDataTypeInfoTriggerComponent = {2808989255191418359, "TriggerComponent",
+LuaUserDataTypeInfo luaUserDataTypeInfoTriggerComponent = {-1123327168149663686, "TriggerComponent",
 														   LuaUserData::computeSizeForGarbageCollected<TriggerComponent>(), nullptr, nullptr};
 
 template<>
@@ -1558,7 +1558,7 @@ static inline void wrapTriggerComponent(lua_State* l)
 	lua_settop(l, 0);
 }
 
-LuaUserDataTypeInfo luaUserDataTypeInfoFogDensityComponent = {7663103238216056190, "FogDensityComponent",
+LuaUserDataTypeInfo luaUserDataTypeInfoFogDensityComponent = {346637918581847223, "FogDensityComponent",
 															  LuaUserData::computeSizeForGarbageCollected<FogDensityComponent>(), nullptr, nullptr};
 
 template<>
@@ -1664,7 +1664,7 @@ static inline void wrapFogDensityComponent(lua_State* l)
 	lua_settop(l, 0);
 }
 
-LuaUserDataTypeInfo luaUserDataTypeInfoCameraComponent = {-3047531355007612535, "CameraComponent",
+LuaUserDataTypeInfo luaUserDataTypeInfoCameraComponent = {852899725312716665, "CameraComponent",
 														  LuaUserData::computeSizeForGarbageCollected<CameraComponent>(), nullptr, nullptr};
 
 template<>
@@ -1746,8 +1746,8 @@ static inline void wrapCameraComponent(lua_State* l)
 }
 
 LuaUserDataTypeInfo luaUserDataTypeInfoGlobalIlluminationProbeComponent = {
-	-1542937361096598697, "GlobalIlluminationProbeComponent", LuaUserData::computeSizeForGarbageCollected<GlobalIlluminationProbeComponent>(),
-	nullptr, nullptr};
+	7683081894085046403, "GlobalIlluminationProbeComponent", LuaUserData::computeSizeForGarbageCollected<GlobalIlluminationProbeComponent>(), nullptr,
+	nullptr};
 
 template<>
 const LuaUserDataTypeInfo& LuaUserData::getDataTypeInfoFor<GlobalIlluminationProbeComponent>()
@@ -1943,7 +1943,7 @@ static inline void wrapGlobalIlluminationProbeComponent(lua_State* l)
 }
 
 LuaUserDataTypeInfo luaUserDataTypeInfoReflectionProbeComponent = {
-	-5775990258474066730, "ReflectionProbeComponent", LuaUserData::computeSizeForGarbageCollected<ReflectionProbeComponent>(), nullptr, nullptr};
+	8310430098927318936, "ReflectionProbeComponent", LuaUserData::computeSizeForGarbageCollected<ReflectionProbeComponent>(), nullptr, nullptr};
 
 template<>
 const LuaUserDataTypeInfo& LuaUserData::getDataTypeInfoFor<ReflectionProbeComponent>()
@@ -1959,7 +1959,7 @@ static inline void wrapReflectionProbeComponent(lua_State* l)
 }
 
 LuaUserDataTypeInfo luaUserDataTypeInfoParticleEmitterComponent = {
-	-4976236030670301177, "ParticleEmitterComponent", LuaUserData::computeSizeForGarbageCollected<ParticleEmitterComponent>(), nullptr, nullptr};
+	1740612382933529549, "ParticleEmitterComponent", LuaUserData::computeSizeForGarbageCollected<ParticleEmitterComponent>(), nullptr, nullptr};
 
 template<>
 const LuaUserDataTypeInfo& LuaUserData::getDataTypeInfoFor<ParticleEmitterComponent>()
@@ -2021,7 +2021,7 @@ static inline void wrapParticleEmitterComponent(lua_State* l)
 	lua_settop(l, 0);
 }
 
-LuaUserDataTypeInfo luaUserDataTypeInfoMeshComponent = {-9054491431494561014, "MeshComponent",
+LuaUserDataTypeInfo luaUserDataTypeInfoMeshComponent = {3466398713081927742, "MeshComponent",
 														LuaUserData::computeSizeForGarbageCollected<MeshComponent>(), nullptr, nullptr};
 
 template<>
@@ -2058,9 +2058,16 @@ static inline int pwrapMeshComponentsetMeshFilename(lua_State* l)
 	}
 
 	// Call the method
-	self->setMeshFilename(arg0);
+	MeshComponent& ret = self->setMeshFilename(arg0);
 
-	return 0;
+	// Push return value
+	voidp = lua_newuserdata(l, sizeof(LuaUserData));
+	ud = static_cast<LuaUserData*>(voidp);
+	luaL_setmetatable(l, "MeshComponent");
+	extern LuaUserDataTypeInfo luaUserDataTypeInfoMeshComponent;
+	ud->initPointed(&luaUserDataTypeInfoMeshComponent, &ret);
+
+	return 1;
 }
 
 /// Wrap method MeshComponent::setMeshFilename.
@@ -2084,7 +2091,7 @@ static inline void wrapMeshComponent(lua_State* l)
 	lua_settop(l, 0);
 }
 
-LuaUserDataTypeInfo luaUserDataTypeInfoMaterialComponent = {-6001790615088507422, "MaterialComponent",
+LuaUserDataTypeInfo luaUserDataTypeInfoMaterialComponent = {840835603277348057, "MaterialComponent",
 															LuaUserData::computeSizeForGarbageCollected<MaterialComponent>(), nullptr, nullptr};
 
 template<>
@@ -2121,9 +2128,16 @@ static inline int pwrapMaterialComponentsetMaterialFilename(lua_State* l)
 	}
 
 	// Call the method
-	self->setMaterialFilename(arg0);
+	MaterialComponent& ret = self->setMaterialFilename(arg0);
 
-	return 0;
+	// Push return value
+	voidp = lua_newuserdata(l, sizeof(LuaUserData));
+	ud = static_cast<LuaUserData*>(voidp);
+	luaL_setmetatable(l, "MaterialComponent");
+	extern LuaUserDataTypeInfo luaUserDataTypeInfoMaterialComponent;
+	ud->initPointed(&luaUserDataTypeInfoMaterialComponent, &ret);
+
+	return 1;
 }
 
 /// Wrap method MaterialComponent::setMaterialFilename.
@@ -2167,9 +2181,16 @@ static inline int pwrapMaterialComponentsetSubmeshIndex(lua_State* l)
 	}
 
 	// Call the method
-	self->setSubmeshIndex(arg0);
+	MaterialComponent& ret = self->setSubmeshIndex(arg0);
 
-	return 0;
+	// Push return value
+	voidp = lua_newuserdata(l, sizeof(LuaUserData));
+	ud = static_cast<LuaUserData*>(voidp);
+	luaL_setmetatable(l, "MaterialComponent");
+	extern LuaUserDataTypeInfo luaUserDataTypeInfoMaterialComponent;
+	ud->initPointed(&luaUserDataTypeInfoMaterialComponent, &ret);
+
+	return 1;
 }
 
 /// Wrap method MaterialComponent::setSubmeshIndex.
@@ -2194,7 +2215,7 @@ static inline void wrapMaterialComponent(lua_State* l)
 	lua_settop(l, 0);
 }
 
-LuaUserDataTypeInfo luaUserDataTypeInfoSkinComponent = {-8726082595272407756, "SkinComponent",
+LuaUserDataTypeInfo luaUserDataTypeInfoSkinComponent = {-1564186081984009359, "SkinComponent",
 														LuaUserData::computeSizeForGarbageCollected<SkinComponent>(), nullptr, nullptr};
 
 template<>
@@ -2257,7 +2278,7 @@ static inline void wrapSkinComponent(lua_State* l)
 	lua_settop(l, 0);
 }
 
-LuaUserDataTypeInfo luaUserDataTypeInfoSkyboxComponent = {2091570007609746680, "SkyboxComponent",
+LuaUserDataTypeInfo luaUserDataTypeInfoSkyboxComponent = {2242564588996850216, "SkyboxComponent",
 														  LuaUserData::computeSizeForGarbageCollected<SkyboxComponent>(), nullptr, nullptr};
 
 template<>
@@ -2748,7 +2769,7 @@ static inline void wrapSkyboxComponent(lua_State* l)
 	lua_settop(l, 0);
 }
 
-LuaUserDataTypeInfo luaUserDataTypeInfoSceneNode = {6187537764740648313, "SceneNode", LuaUserData::computeSizeForGarbageCollected<SceneNode>(),
+LuaUserDataTypeInfo luaUserDataTypeInfoSceneNode = {2187633709272075521, "SceneNode", LuaUserData::computeSizeForGarbageCollected<SceneNode>(),
 													nullptr, nullptr};
 
 template<>
@@ -4691,7 +4712,7 @@ static inline void wrapSceneNode(lua_State* l)
 	lua_settop(l, 0);
 }
 
-LuaUserDataTypeInfo luaUserDataTypeInfoSceneGraph = {-4227639901763694526, "SceneGraph", LuaUserData::computeSizeForGarbageCollected<SceneGraph>(),
+LuaUserDataTypeInfo luaUserDataTypeInfoSceneGraph = {-4504117787585012859, "SceneGraph", LuaUserData::computeSizeForGarbageCollected<SceneGraph>(),
 													 nullptr, nullptr};
 
 template<>
@@ -4877,7 +4898,7 @@ static inline void wrapSceneGraph(lua_State* l)
 	lua_settop(l, 0);
 }
 
-LuaUserDataTypeInfo luaUserDataTypeInfoEvent = {-5087053072849455196, "Event", LuaUserData::computeSizeForGarbageCollected<Event>(), nullptr,
+LuaUserDataTypeInfo luaUserDataTypeInfoEvent = {-8037780990830956566, "Event", LuaUserData::computeSizeForGarbageCollected<Event>(), nullptr,
 												nullptr};
 
 template<>
@@ -4942,7 +4963,7 @@ static inline void wrapEvent(lua_State* l)
 	lua_settop(l, 0);
 }
 
-LuaUserDataTypeInfo luaUserDataTypeInfoLightEvent = {1008992105105927788, "LightEvent", LuaUserData::computeSizeForGarbageCollected<LightEvent>(),
+LuaUserDataTypeInfo luaUserDataTypeInfoLightEvent = {-887179890638014087, "LightEvent", LuaUserData::computeSizeForGarbageCollected<LightEvent>(),
 													 nullptr, nullptr};
 
 template<>
@@ -5061,7 +5082,7 @@ static inline void wrapLightEvent(lua_State* l)
 	lua_settop(l, 0);
 }
 
-LuaUserDataTypeInfo luaUserDataTypeInfoScriptEvent = {-6564037159457118038, "ScriptEvent", LuaUserData::computeSizeForGarbageCollected<ScriptEvent>(),
+LuaUserDataTypeInfo luaUserDataTypeInfoScriptEvent = {-3599694744897696875, "ScriptEvent", LuaUserData::computeSizeForGarbageCollected<ScriptEvent>(),
 													  nullptr, nullptr};
 
 template<>
@@ -5077,7 +5098,7 @@ static inline void wrapScriptEvent(lua_State* l)
 	lua_settop(l, 0);
 }
 
-LuaUserDataTypeInfo luaUserDataTypeInfoJitterMoveEvent = {-6608557523474619704, "JitterMoveEvent",
+LuaUserDataTypeInfo luaUserDataTypeInfoJitterMoveEvent = {216767496191450146, "JitterMoveEvent",
 														  LuaUserData::computeSizeForGarbageCollected<JitterMoveEvent>(), nullptr, nullptr};
 
 template<>
@@ -5152,7 +5173,7 @@ static inline void wrapJitterMoveEvent(lua_State* l)
 	lua_settop(l, 0);
 }
 
-LuaUserDataTypeInfo luaUserDataTypeInfoAnimationEvent = {-7864411020435003692, "AnimationEvent",
+LuaUserDataTypeInfo luaUserDataTypeInfoAnimationEvent = {7826530453645847513, "AnimationEvent",
 														 LuaUserData::computeSizeForGarbageCollected<AnimationEvent>(), nullptr, nullptr};
 
 template<>
@@ -5168,7 +5189,7 @@ static inline void wrapAnimationEvent(lua_State* l)
 	lua_settop(l, 0);
 }
 
-LuaUserDataTypeInfo luaUserDataTypeInfoEventManager = {-3654862218911070552, "EventManager",
+LuaUserDataTypeInfo luaUserDataTypeInfoEventManager = {8340995330108727532, "EventManager",
 													   LuaUserData::computeSizeForGarbageCollected<EventManager>(), nullptr, nullptr};
 
 template<>

+ 3 - 0
AnKi/Script/Scene.xml

@@ -280,6 +280,7 @@ using WeakArraySceneNodePtr = WeakArray<SceneNode*>;
 					<args>
 						<arg>CString</arg>
 					</args>
+					<return>MeshComponent&amp;</return>
 				</method>
 			</methods>
 		</class>
@@ -290,11 +291,13 @@ using WeakArraySceneNodePtr = WeakArray<SceneNode*>;
 					<args>
 						<arg>CString</arg>
 					</args>
+					<return>MaterialComponent&amp;</return>
 				</method>
 				<method name="setSubmeshIndex">
 					<args>
 						<arg>U32</arg>
 					</args>
+					<return>MaterialComponent&amp;</return>
 				</method>
 			</methods>
 		</class>

+ 0 - 8
Samples/PhysicsPlayground/Assets/Icosphere_walls_ac2438354c62251.ankimdl

@@ -1,8 +0,0 @@
-<model>
-	<modelPatches>
-		<modelPatch>
-			<mesh>Assets/Icosphere_834d64c142beaa13.ankimesh</mesh>
-			<material>Assets/walls_9619132fa258d22d.ankimtl</material>
-		</modelPatch>
-	</modelPatches>
-</model>

BIN
Samples/PhysicsPlayground/Assets/MESH_grenade_818651700502e14b.ankimesh


+ 0 - 8
Samples/PhysicsPlayground/Assets/MESH_grenade_MTL_grenade_85852a78645563d8.ankimdl

@@ -1,8 +0,0 @@
-<model>
-	<modelPatches>
-		<modelPatch>
-			<mesh>Assets/MESH_grenade_818651700502e14b.ankimesh</mesh>
-			<material>Assets/MTL_grenade_4346150e31bdb957.ankimtl</material>
-		</modelPatch>
-	</modelPatches>
-</model>

+ 180 - 119
Samples/PhysicsPlayground/Assets/Scene.lua

@@ -1,9 +1,10 @@
--- Generated by: C:\src\anki\out\build\x64-Release-VK\Binaries\GltfImporter.exe PhysicsPlayground.gltf C:/src/anki/Samples/PhysicsPlayground/Assets/ -rpath Assets -texrpath Assets -v -light-scale 0.00116 -import-textures 0
+-- Generated by: /home/godlike/src/anki/build_rel/Binaries/GltfImporter PhysicsPlayground.gltf /home/godlike/src/anki/Samples/PhysicsPlayground/Assets/ -rpath Assets -texrpath Assets -v -light-scale 0.00116 -import-textures 0
 local scene = getSceneGraph()
 local events = getEventManager()
 
 node = scene:newSceneNode("Icosphere.001")
-node:newModelComponent():loadModelResource("Assets/Icosphere_walls_ac2438354c62251.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/Icosphere_834d64c142beaa13.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls_9619132fa258d22d.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(25.411236, 3.345554, 28.742823))
 rot = Mat3.new()
@@ -12,11 +13,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.912920, 1.912920, 1.912920))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Icosphere")
-node:newModelComponent():loadModelResource("Assets/Icosphere_walls_ac2438354c62251.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/Icosphere_834d64c142beaa13.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls_9619132fa258d22d.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(25.411236, 3.316930, 22.637743))
 rot = Mat3.new()
@@ -25,11 +27,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.264235, 1.264235, 1.264235))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.019")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(30.249128, 0.936152, -6.000000))
 rot = Mat3.new()
@@ -38,11 +41,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(0.419062, 0.419062, 0.799866))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.018")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(29.830065, 0.517090, -6.000000))
 rot = Mat3.new()
@@ -51,11 +55,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(0.419062, 0.419062, 0.799866))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.017")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(29.411005, 0.098028, -6.000000))
 rot = Mat3.new()
@@ -64,11 +69,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(0.419062, 0.419062, 0.799866))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.016")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(30.668188, 1.355214, -6.000000))
 rot = Mat3.new()
@@ -77,11 +83,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(0.419062, 0.419062, 0.799866))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.015")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(31.087252, 1.774276, -6.000000))
 rot = Mat3.new()
@@ -90,11 +97,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(0.419062, 0.419062, 0.799866))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.014")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(31.506311, 2.193337, -6.000000))
 rot = Mat3.new()
@@ -103,11 +111,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(0.419062, 0.419062, 0.799866))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.013")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(39.798492, 6.376611, 0.000000))
 rot = Mat3.new()
@@ -116,11 +125,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.012")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(39.798492, 6.376611, -6.000000))
 rot = Mat3.new()
@@ -129,11 +139,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.011")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(39.798492, 6.376611, 6.000000))
 rot = Mat3.new()
@@ -142,11 +153,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.010")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(39.798492, 6.376611, 12.000000))
 rot = Mat3.new()
@@ -155,11 +167,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.009")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(42.271385, 2.886189, 0.000000))
 rot = Mat3.new()
@@ -168,11 +181,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.008")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(42.271385, 2.886189, -6.000000))
 rot = Mat3.new()
@@ -181,11 +195,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.007")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(42.271385, 2.886189, 6.000000))
 rot = Mat3.new()
@@ -194,11 +209,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.006")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(42.271385, 2.886189, 12.000000))
 rot = Mat3.new()
@@ -207,11 +223,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.005")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(37.271385, 2.886189, 12.000000))
 rot = Mat3.new()
@@ -220,11 +237,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.004")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(37.271385, 2.886189, 6.000000))
 rot = Mat3.new()
@@ -233,11 +251,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.003")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(37.271385, 2.886189, -6.000000))
 rot = Mat3.new()
@@ -246,11 +265,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.002")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(37.271385, 2.886189, 0.000000))
 rot = Mat3.new()
@@ -259,11 +279,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Suzanne")
-node:newModelComponent():loadModelResource("Assets/Suzanne_dynamic_36043dae41fe12d5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/Suzanne_e3526e1428c0763c.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/dynamic_f238b379a41079ff.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(86.774399, -21.439922, 0.000000))
 rot = Mat3.new()
@@ -272,11 +293,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube")
-node:newModelComponent():loadModelResource("Assets/floor_walls_784c261d516a979d.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/floor_71cbd2644e53ab8c.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls_9619132fa258d22d.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(0.000000, -5.068616, 0.000000))
 rot = Mat3.new()
@@ -285,7 +307,7 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Lamp")
@@ -314,7 +336,8 @@ trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 
 node = scene:newSceneNode("Cube.021")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(39.798492, 6.376611, -12.000000))
 rot = Mat3.new()
@@ -323,11 +346,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.022")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(42.271385, 2.886189, -12.000000))
 rot = Mat3.new()
@@ -336,11 +360,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.023")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(37.271385, 2.886189, -12.000000))
 rot = Mat3.new()
@@ -349,11 +374,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.024")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(39.798492, 6.376611, -18.000000))
 rot = Mat3.new()
@@ -362,11 +388,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.025")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(42.271385, 2.886189, -18.000000))
 rot = Mat3.new()
@@ -375,11 +402,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.026")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(37.271385, 2.886189, -18.000000))
 rot = Mat3.new()
@@ -388,11 +416,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.027")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(34.761005, 2.886189, -21.498241))
 rot = Mat3.new()
@@ -401,11 +430,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.028")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(44.761005, 2.886189, -21.498241))
 rot = Mat3.new()
@@ -414,11 +444,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.029")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(47.271385, 2.886189, -25.000000))
 rot = Mat3.new()
@@ -427,11 +458,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.030")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(32.271385, 2.886189, -25.000000))
 rot = Mat3.new()
@@ -440,11 +472,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.031")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(32.271385, 2.886189, -31.000000))
 rot = Mat3.new()
@@ -453,11 +486,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.032")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(47.271385, 2.886189, -31.000000))
 rot = Mat3.new()
@@ -466,11 +500,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.033")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(44.761005, 2.886189, -34.498241))
 rot = Mat3.new()
@@ -479,11 +514,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.034")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(38.761005, 2.886189, -34.498241))
 rot = Mat3.new()
@@ -492,11 +528,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.035")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(34.761005, 2.886189, -34.498241))
 rot = Mat3.new()
@@ -505,11 +542,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(0.995130, 0.995130, 0.995130))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.036")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(34.798492, 6.376611, -32.000000))
 rot = Mat3.new()
@@ -518,11 +556,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.038")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(34.798492, 6.376611, -24.000000))
 rot = Mat3.new()
@@ -531,11 +570,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.039")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(34.798492, 6.398044, -28.000000))
 rot = Mat3.new()
@@ -544,11 +584,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.037")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(44.798492, 6.376611, -32.000000))
 rot = Mat3.new()
@@ -557,11 +598,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.040")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(44.798492, 6.376611, -24.000000))
 rot = Mat3.new()
@@ -570,11 +612,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.041")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(44.798492, 6.398044, -28.000000))
 rot = Mat3.new()
@@ -583,11 +626,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.042")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(39.798492, 6.334259, -31.947594))
 rot = Mat3.new()
@@ -596,11 +640,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.043")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(39.798492, 6.334259, -23.947592))
 rot = Mat3.new()
@@ -609,11 +654,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.044")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(39.798492, 6.355691, -27.947592))
 rot = Mat3.new()
@@ -622,11 +668,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.001")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(46.798492, 7.787276, 12.000000))
 rot = Mat3.new()
@@ -635,11 +682,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.046")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(53.798492, 8.787276, 12.000000))
 rot = Mat3.new()
@@ -648,11 +696,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.049")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(32.763500, 3.450523, -6.000000))
 rot = Mat3.new()
@@ -661,11 +710,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(0.419062, 0.419062, 0.799866))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.050")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(32.344437, 3.031460, -6.000000))
 rot = Mat3.new()
@@ -674,11 +724,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(0.419062, 0.419062, 0.799866))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.051")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(31.925379, 2.612399, -6.000000))
 rot = Mat3.new()
@@ -687,11 +738,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(0.419062, 0.419062, 0.799866))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.052")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(33.182560, 3.869584, -6.000000))
 rot = Mat3.new()
@@ -700,11 +752,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(0.419062, 0.419062, 0.799866))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.053")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(33.601627, 4.288646, -6.000000))
 rot = Mat3.new()
@@ -713,11 +766,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(0.419062, 0.419062, 0.799866))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.054")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(34.020683, 4.707707, -6.000000))
 rot = Mat3.new()
@@ -726,11 +780,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(0.419062, 0.419062, 0.799866))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.047")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(34.410061, 5.122275, -6.000000))
 rot = Mat3.new()
@@ -739,11 +794,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(0.419062, 0.419062, 0.799866))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.048")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(34.829124, 5.541336, -6.000000))
 rot = Mat3.new()
@@ -752,11 +808,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(0.419062, 0.419062, 0.799866))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.055")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(35.248188, 5.960398, -6.000000))
 rot = Mat3.new()
@@ -765,11 +822,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(0.419062, 0.419062, 0.799866))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("Cube.056")
-node:newModelComponent():loadModelResource("Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/wall_87565b500719f7c4.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/walls.001_2469a4d42c8d129c.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(35.667244, 6.379460, -6.000000))
 rot = Mat3.new()
@@ -778,11 +836,12 @@ trf:setRotation(rot)
 trf:setScale(Vec3.new(0.419062, 0.419062, 0.799866))
 node:setLocalTransform(trf)
 comp = node:newBodyComponent()
-comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromModelComponent)
+comp:setCollisionShapeType(BodyComponentCollisionShapeType.kFromMeshComponent)
 comp:teleportTo(trf:getOrigin(), trf:getRotation())
 
 node = scene:newSceneNode("grenade")
-node:newModelComponent():loadModelResource("Assets/MESH_grenade_MTL_grenade_85852a78645563d8.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/MESH_grenade_818651700502e14b.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/MTL_grenade_4346150e31bdb957.ankimtl"):setSubmeshIndex(0)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(88.981850, -21.239265, 0.044049))
 rot = Mat3.new()
@@ -835,7 +894,9 @@ trf:setScale(Vec3.new(1.000000, 1.000000, 1.000000))
 node:setLocalTransform(trf)
 
 node = scene:newSceneNode("arm")
-node:newModelComponent():loadModelResource("Assets/sleevegloveLOW.001_arms_boomstick_76e1c49d9efa9619.ankimdl")
+node:newMeshComponent():setMeshFilename("Assets/sleevegloveLOW.001_893660395596b206.ankimesh")
+node:newMaterialComponent():setMaterialFilename("Assets/arms_3a4232ebbd425e7a.ankimtl"):setSubmeshIndex(0)
+node:newMaterialComponent():setMaterialFilename("Assets/boomstick_89a614a521ace7fd.ankimtl"):setSubmeshIndex(1)
 trf = Transform.new()
 trf:setOrigin(Vec3.new(88.521500, -21.250355, 0.000000))
 rot = Mat3.new()

+ 0 - 8
Samples/PhysicsPlayground/Assets/Suzanne_dynamic_36043dae41fe12d5.ankimdl

@@ -1,8 +0,0 @@
-<model>
-	<modelPatches>
-		<modelPatch>
-			<mesh>Assets/Suzanne_e3526e1428c0763c.ankimesh</mesh>
-			<material>Assets/dynamic_f238b379a41079ff.ankimtl</material>
-		</modelPatch>
-	</modelPatches>
-</model>

+ 0 - 8
Samples/PhysicsPlayground/Assets/floor_walls_784c261d516a979d.ankimdl

@@ -1,8 +0,0 @@
-<model>
-	<modelPatches>
-		<modelPatch>
-			<mesh>Assets/floor_71cbd2644e53ab8c.ankimesh</mesh>
-			<material>Assets/walls_9619132fa258d22d.ankimtl</material>
-		</modelPatch>
-	</modelPatches>
-</model>

+ 0 - 12
Samples/PhysicsPlayground/Assets/sleevegloveLOW.001_arms_boomstick_76e1c49d9efa9619.ankimdl

@@ -1,12 +0,0 @@
-<model>
-	<modelPatches>
-		<modelPatch>
-			<mesh subMeshIndex="0">Assets/sleevegloveLOW.001_893660395596b206.ankimesh</mesh>
-			<material>Assets/arms_3a4232ebbd425e7a.ankimtl</material>
-		</modelPatch>
-		<modelPatch>
-			<mesh subMeshIndex="1">Assets/sleevegloveLOW.001_893660395596b206.ankimesh</mesh>
-			<material>Assets/boomstick_89a614a521ace7fd.ankimtl</material>
-		</modelPatch>
-	</modelPatches>
-</model>

+ 0 - 8
Samples/PhysicsPlayground/Assets/wall_walls.001_cc03fb9e615c68b5.ankimdl

@@ -1,8 +0,0 @@
-<model>
-	<modelPatches>
-		<modelPatch>
-			<mesh>Assets/wall_87565b500719f7c4.ankimesh</mesh>
-			<material>Assets/walls.001_2469a4d42c8d129c.ankimtl</material>
-		</modelPatch>
-	</modelPatches>
-</model>

+ 3 - 2
Samples/PhysicsPlayground/FpsCharacter.h

@@ -26,8 +26,9 @@ public:
 
 		SceneNode* shotgun = SceneGraph::getSingleton().newSceneNode<SceneNode>("Shotgun");
 		shotgun->setLocalTransform(Transform(Vec3(0.065f, -0.13f, -0.4f), Mat3(Euler(0.0f, kPi, 0.0f)), Vec3(1.0f)));
-		ModelComponent* modelc = shotgun->newComponent<ModelComponent>();
-		modelc->loadModelResource("sleevegloveLOW.001_arms_boomstick_76e1c49d9efa9619.ankimdl");
+		shotgun->newComponent<MeshComponent>()->setMeshFilename("sleevegloveLOW.001_893660395596b206.ankimesh");
+		shotgun->newComponent<MaterialComponent>()->setMaterialFilename("arms_3a4232ebbd425e7a.ankimtl").setSubmeshIndex(0);
+		shotgun->newComponent<MaterialComponent>()->setMaterialFilename("boomstick_89a614a521ace7fd.ankimtl").setSubmeshIndex(1);
 		cam->addChild(shotgun);
 	}
 

+ 12 - 11
Samples/PhysicsPlayground/Main.cpp

@@ -112,13 +112,14 @@ Error MyApp::sampleExtraInit()
 		base->addChild(joint);
 
 		SceneNode* monkey = SceneGraph::getSingleton().newSceneNode<SceneNode>("monkey_p2p");
-		ModelComponent* modelc = monkey->newComponent<ModelComponent>();
-		modelc->loadModelResource("Assets/Suzanne_dynamic_36043dae41fe12d5.ankimdl");
-		const Aabb aabb = modelc->getModelResource()->getBoundingVolume();
+		monkey->newComponent<MeshComponent>()->setMeshFilename("Assets/Suzanne_e3526e1428c0763c.ankimesh");
+		monkey->newComponent<MaterialComponent>()->setMaterialFilename("Assets/dynamic_f238b379a41079ff.ankimtl");
+
+		const Aabb aabb = monkey->getFirstComponentOfType<MeshComponent>().getMeshResource().getBoundingShape();
 		const F32 height = aabb.getMax().y() - aabb.getMin().y();
 
 		bodyc = monkey->newComponent<BodyComponent>();
-		bodyc->setCollisionShapeType(BodyComponentCollisionShapeType::kFromModelComponent);
+		bodyc->setCollisionShapeType(BodyComponentCollisionShapeType::kFromMeshComponent);
 		bodyc->teleportTo(Vec3(-0.0f, 4.8f - height / 2.0f, -3.0f), Mat3::getIdentity());
 		bodyc->setMass(2.0f);
 
@@ -151,15 +152,15 @@ Error MyApp::sampleExtraInit()
 			joint->setParent(prevNode);
 
 			SceneNode* monkey = SceneGraph::getSingleton().newSceneNode<SceneNode>(String().sprintf("monkey_chain%u", i).toCString());
-			ModelComponent* modelc = monkey->newComponent<ModelComponent>();
-			modelc->loadModelResource("Assets/Suzanne_dynamic_36043dae41fe12d5.ankimdl");
-			const Aabb aabb = modelc->getModelResource()->getBoundingVolume();
+			const MeshComponent& meshc = monkey->newComponent<MeshComponent>()->setMeshFilename("Assets/Suzanne_e3526e1428c0763c.ankimesh");
+			monkey->newComponent<MaterialComponent>()->setMaterialFilename("Assets/dynamic_f238b379a41079ff.ankimtl");
+			const Aabb aabb = meshc.getMeshResource().getBoundingShape();
 			const F32 height = aabb.getMax().y() - aabb.getMin().y();
 
 			trf.setOrigin(trf.getOrigin() - Vec4(0.0f, height / 2.0f + 0.1f, 0.0f, 0.0f));
 
 			BodyComponent* bodyc = monkey->newComponent<BodyComponent>();
-			bodyc->setCollisionShapeType(BodyComponentCollisionShapeType::kFromModelComponent);
+			bodyc->setCollisionShapeType(BodyComponentCollisionShapeType::kFromMeshComponent);
 			bodyc->teleportTo(trf.getOrigin().xyz(), trf.getRotation().getRotationPart());
 			bodyc->setMass(1.0f);
 			joint->addChild(monkey);
@@ -380,12 +381,12 @@ Error MyApp::userMainLoop(Bool& quit, [[maybe_unused]] Second elapsedTime)
 
 		SceneNode* grenade = SceneGraph::getSingleton().newSceneNode<SceneNode>(String().sprintf("Grenade%u", instance++).toCString());
 		grenade->setLocalScale(Vec3(2.8f));
-		ModelComponent* modelc = grenade->newComponent<ModelComponent>();
-		modelc->loadModelResource("Assets/MESH_grenade_MTL_grenade_85852a78645563d8.ankimdl");
+		grenade->newComponent<MeshComponent>()->setMeshFilename("Assets/MESH_grenade_818651700502e14b.ankimesh");
+		grenade->newComponent<MaterialComponent>()->setMaterialFilename("Assets/MTL_grenade_4346150e31bdb957.ankimtl");
 		// monkey->getFirstComponentOfType<MoveComponent>().setLocalTransform(camTrf);
 
 		BodyComponent* bodyc = grenade->newComponent<BodyComponent>();
-		bodyc->setCollisionShapeType(BodyComponentCollisionShapeType::kFromModelComponent);
+		bodyc->setCollisionShapeType(BodyComponentCollisionShapeType::kFromMeshComponent);
 		bodyc->teleportTo(camTrf.getOrigin().xyz(), camTrf.getRotation().getRotationPart());
 		bodyc->setMass(1.0f);