Daniele Bartolini %!s(int64=9) %!d(string=hai) anos
pai
achega
e266f8007c

+ 0 - 5
src/world/physics_world_bullet.cpp

@@ -1023,11 +1023,6 @@ public:
 
 private:
 
-	bool is_valid(ColliderInstance i) { return i.i != UINT32_MAX; }
-	bool is_valid(ActorInstance i) { return i.i != UINT32_MAX; }
-	bool is_valid(ControllerInstance i) { return i.i != UINT32_MAX; }
-	bool is_valid(JointInstance i) { return i.i != UINT32_MAX; }
-
 	ColliderInstance make_collider_instance(u32 i) { ColliderInstance inst = { i }; return inst; }
 	ActorInstance make_actor_instance(u32 i) { ActorInstance inst = { i }; return inst; }
 	ControllerInstance make_controller_instance(u32 i) { ControllerInstance inst = { i }; return inst; }

+ 4 - 4
src/world/render_world.cpp

@@ -81,7 +81,7 @@ void RenderWorld::mesh_instances(UnitId id, Array<MeshInstance>& instances)
 {
 	MeshInstance inst = _mesh_manager.first(id);
 
-	while (_mesh_manager.is_valid(inst))
+	while (is_valid(inst))
 	{
 		array::push_back(instances, inst);
 		inst = _mesh_manager.next(inst);
@@ -477,7 +477,7 @@ void RenderWorld::unit_destroyed_callback(UnitId id)
 		MeshInstance curr = _mesh_manager.first(id);
 		MeshInstance next;
 
-		while (_mesh_manager.is_valid(curr))
+		while (is_valid(curr))
 		{
 			next = _mesh_manager.next(curr);
 			mesh_destroy(curr);
@@ -488,14 +488,14 @@ void RenderWorld::unit_destroyed_callback(UnitId id)
 	{
 		SpriteInstance first = sprite_instances(id);
 
-		if (_sprite_manager.is_valid(first))
+		if (is_valid(first))
 			sprite_destroy(id, first);
 	}
 
 	{
 		LightInstance first = light_instances(id);
 
-		if (_light_manager.is_valid(first))
+		if (is_valid(first))
 			light_destroy(id, first);
 	}
 }

+ 0 - 3
src/world/render_world.h

@@ -180,7 +180,6 @@ public:
 		void destroy();
 
 		MeshInstance make_instance(u32 i) { MeshInstance inst = { i }; return inst; }
-		bool is_valid(MeshInstance i) { return i.i != UINT32_MAX; }
 	};
 
 	struct SpriteManager
@@ -224,7 +223,6 @@ public:
 		void destroy();
 
 		SpriteInstance make_instance(u32 i) { SpriteInstance inst = { i }; return inst; }
-		bool is_valid(SpriteInstance i) { return i.i != UINT32_MAX; }
 	};
 
 	struct LightManager
@@ -266,7 +264,6 @@ public:
 		void destroy();
 
 		LightInstance make_instance(u32 i) { LightInstance inst = { i }; return inst; }
-		bool is_valid(LightInstance i) { return i.i != UINT32_MAX; }
 	};
 
 	u32 _marker;

+ 0 - 5
src/world/scene_graph.cpp

@@ -369,11 +369,6 @@ void SceneGraph::get_changed(Array<UnitId>& units, Array<Matrix4x4>& world_poses
 	}
 }
 
-bool SceneGraph::is_valid(TransformInstance i)
-{
-	return i.i != UINT32_MAX;
-}
-
 void SceneGraph::set_local(TransformInstance i)
 {
 	TransformInstance parent = _data.parent[i.i];

+ 0 - 1
src/world/scene_graph.h

@@ -130,7 +130,6 @@ struct SceneGraph
 
 	void clear_changed();
 	void get_changed(Array<UnitId>& units, Array<Matrix4x4>& world_poses);
-	bool is_valid(TransformInstance i);
 	void set_local(TransformInstance i);
 	void transform(const Matrix4x4& parent, TransformInstance i);
 	void grow();

+ 18 - 43
src/world/world_types.h

@@ -259,50 +259,25 @@ struct hash<UnitId>
 	}
 };
 
-struct TransformInstance
-{
-	u32 i;
-};
-
-struct CameraInstance
-{
-	u32 i;
-};
-
-struct MeshInstance
-{
-	u32 i;
-};
-
-struct SpriteInstance
-{
-	u32 i;
-};
-
-struct LightInstance
-{
-	u32 i;
-};
-
-struct ColliderInstance
-{
-	u32 i;
-};
-
-struct ActorInstance
-{
-	u32 i;
-};
-
-struct ControllerInstance
-{
-	u32 i;
-};
+#define INSTANCE_ID(name)            \
+	struct name                      \
+	{                                \
+		u32 i;                       \
+	};                               \
+	inline bool is_valid(name inst)  \
+	{                                \
+		return inst.i != UINT32_MAX; \
+	}
 
-struct JointInstance
-{
-	u32 i;
-};
+INSTANCE_ID(TransformInstance);
+INSTANCE_ID(CameraInstance);
+INSTANCE_ID(MeshInstance);
+INSTANCE_ID(SpriteInstance);
+INSTANCE_ID(LightInstance);
+INSTANCE_ID(ColliderInstance);
+INSTANCE_ID(ActorInstance);
+INSTANCE_ID(ControllerInstance);
+INSTANCE_ID(JointInstance);
 
 /// Mesh renderer description.
 ///