Procházet zdrojové kódy

manage Sprites in RenderWorld

mikymod před 12 roky
rodič
revize
cd03764bcd
2 změnil soubory, kde provedl 34 přidání a 33 odebrání
  1. 28 26
      engine/RenderWorld.cpp
  2. 6 7
      engine/RenderWorld.h

+ 28 - 26
engine/RenderWorld.cpp

@@ -31,6 +31,8 @@ OTHER DEALINGS IN THE SOFTWARE.
 #include "Allocator.h"
 #include "Camera.h"
 #include "Resource.h"
+#include "Log.h"
+#include "SpriteResource.h"
 
 namespace crown
 {
@@ -122,7 +124,7 @@ RenderWorld::~RenderWorld()
 //-----------------------------------------------------------------------------
 MeshId RenderWorld::create_mesh(const char* name, int32_t node, const Vector3& pos, const Quaternion& rot)
 {
-	MeshResource* mr = (MeshResource*) device()->resource_manager()->lookup("mesh", name);
+	MeshResource* mr = (MeshResource*) device()->resource_manager()->lookup(MESH_EXTENSION, name);
 
 	MeshId mesh = allocate_mesh(mr, node, pos, rot);
 
@@ -142,6 +144,28 @@ Mesh* RenderWorld::lookup_mesh(MeshId mesh)
 	return &m_mesh[m_sparse_to_packed[mesh.index]];
 }
 
+//-----------------------------------------------------------------------------
+SpriteId RenderWorld::create_sprite(const char* name, int32_t node, const Vector3& pos, const Quaternion& rot)
+{
+	SpriteResource* sr = (SpriteResource*) device()->resource_manager()->lookup(SPRITE_EXTENSION, name);
+
+	SpriteId sprite = allocate_sprite(sr, node, pos, rot);
+
+	return sprite;
+}
+
+//-----------------------------------------------------------------------------
+void RenderWorld::destroy_sprite(SpriteId /*id*/)
+{
+	// Stub
+}
+
+//-----------------------------------------------------------------------------
+Sprite*	RenderWorld::lookup_sprite(SpriteId id)
+{
+	return &m_sprite[m_sprite_sparse_to_packed[id.index]];
+}
+
 //-----------------------------------------------------------------------------
 void RenderWorld::update(Camera& camera, float /*dt*/)
 {
@@ -176,7 +200,7 @@ void RenderWorld::update(Camera& camera, float /*dt*/)
 
 	for (uint32_t s = 0; s < m_sprite.size(); s++)
 	{
-		const Sprite& sprite = m_sprite[s];
+		Sprite& sprite = m_sprite[s];
 
 		r->set_state(STATE_DEPTH_WRITE | STATE_COLOR_WRITE | STATE_ALPHA_WRITE | STATE_CULL_CW);
 		r->set_vertex_buffer(sprite.m_vb);
@@ -209,34 +233,12 @@ void RenderWorld::deallocate_mesh(MeshId /*id*/)
 }
 
 //-----------------------------------------------------------------------------
-SpriteId RenderWorld::create_sprite(const char* name, int32_t node, const Vector3& pos, const Quaternion& rot)
-{
-	TextureResource* tr = (TextureResource*) device()->resource_manager()->lookup(TEXTURE_EXTENSION, name);
-
-	SpriteId sprite = allocate_sprite(tr, node, pos, rot);
-
-	return sprite;
-}
-
-//-----------------------------------------------------------------------------
-void RenderWorld::destroy_sprite(SpriteId /*id*/)
-{
-	// Stub
-}
-
-//-----------------------------------------------------------------------------
-Sprite*	RenderWorld::lookup_sprite(SpriteId id)
-{
-	return &m_sprite[m_sprite_sparse_to_packed[id.index]];
-}
-
-//-----------------------------------------------------------------------------
-SpriteId RenderWorld::allocate_sprite(TextureResource* tr, int32_t node, const Vector3& pos, const Quaternion& rot)
+SpriteId RenderWorld::allocate_sprite(SpriteResource* sr, int32_t node, const Vector3& pos, const Quaternion& rot)
 {
 	SpriteId id = m_sprite_table.create();
 
 	Sprite sprite;
-	sprite.create(tr, node, pos, rot);
+	sprite.create(sr, node, pos, rot);
 
 	uint32_t index = m_sprite.push_back(sprite);
 	m_sprite_sparse_to_packed[id.index] = index;

+ 6 - 7
engine/RenderWorld.h

@@ -41,6 +41,7 @@ namespace crown
 
 typedef Id MeshId;
 typedef Id SpriteId;
+
 struct Camera;
 
 class RenderWorld
@@ -54,18 +55,16 @@ public:
 	void 		destroy_mesh(MeshId id);
 	Mesh* 		lookup_mesh(MeshId mesh);
 
+	SpriteId	create_sprite(const char* name, int32_t node = -1, const Vector3& pos = Vector3::ZERO, const Quaternion& rot = Quaternion::IDENTITY);
+	void		destroy_sprite(SpriteId id);
+	Sprite*		lookup_sprite(SpriteId id);
+
 	void 		update(Camera& camera, float dt);
 
 	MeshId 		allocate_mesh(MeshResource* mr, int32_t node, const Vector3& pos, const Quaternion& rot);
 	void 		deallocate_mesh(MeshId id);
 
-public:	// Sprites - Testing
-
-	SpriteId	create_sprite(const char* name, int32_t node = -1, const Vector3& pos = Vector3::ZERO, const Quaternion& rot = Quaternion::IDENTITY);
-	void		destroy_sprite(SpriteId id);
-	Sprite*		lookup_sprite(SpriteId id);
-
-	SpriteId	allocate_sprite(TextureResource* tr, int32_t node, const Vector3& pos, const Quaternion& rot);
+	SpriteId	allocate_sprite(SpriteResource* sr, int32_t node, const Vector3& pos, const Quaternion& rot);
 	void 		deallocate_sprite(SpriteId id);
 
 private: