Daniele Bartolini před 11 roky
rodič
revize
b469ff126d

+ 8 - 0
engine/lua/lua_sprite.cpp

@@ -60,6 +60,13 @@ static int sprite_set_frame(lua_State* L)
 	return 0;
 	return 0;
 }
 }
 
 
+static int sprite_set_depth(lua_State* L)
+{
+	LuaStack stack(L);
+	stack.get_sprite(1)->set_depth(stack.get_int(2));
+	return 0;
+}
+
 void load_sprite(LuaEnvironment& env)
 void load_sprite(LuaEnvironment& env)
 {
 {
 	env.load_module_function("Sprite", "local_position",     sprite_local_position);
 	env.load_module_function("Sprite", "local_position",     sprite_local_position);
@@ -69,6 +76,7 @@ void load_sprite(LuaEnvironment& env)
 	env.load_module_function("Sprite", "set_local_rotation", sprite_set_local_rotation);
 	env.load_module_function("Sprite", "set_local_rotation", sprite_set_local_rotation);
 	env.load_module_function("Sprite", "set_local_pose",     sprite_set_local_pose);
 	env.load_module_function("Sprite", "set_local_pose",     sprite_set_local_pose);
 	env.load_module_function("Sprite", "set_frame",          sprite_set_frame);
 	env.load_module_function("Sprite", "set_frame",          sprite_set_frame);
+	env.load_module_function("Sprite", "set_depth",          sprite_set_depth);
 }
 }
 
 
 } // namespace crown
 } // namespace crown

+ 7 - 1
engine/renderers/sprite.cpp

@@ -24,6 +24,7 @@ Sprite::Sprite(RenderWorld& render_world, SceneGraph& sg, int32_t node, const Sp
 	, m_node(node)
 	, m_node(node)
 	, m_resource(sr)
 	, m_resource(sr)
 	, m_frame(0)
 	, m_frame(0)
+	, _depth(0)
 {
 {
 }
 }
 
 
@@ -82,6 +83,11 @@ void Sprite::set_frame(uint32_t i)
 	m_frame = i;
 	m_frame = i;
 }
 }
 
 
+void Sprite::set_depth(int32_t z)
+{
+	_depth = z;
+}
+
 void Sprite::render()
 void Sprite::render()
 {
 {
 	if (m_material.id != INVALID_ID)
 	if (m_material.id != INVALID_ID)
@@ -97,7 +103,7 @@ void Sprite::render()
 	bgfx::setVertexBuffer(m_resource->vb);
 	bgfx::setVertexBuffer(m_resource->vb);
 	bgfx::setIndexBuffer(m_resource->ib, m_frame * 6, 6);
 	bgfx::setIndexBuffer(m_resource->ib, m_frame * 6, 6);
 	bgfx::setTransform(matrix4x4::to_float_ptr(world_pose()));
 	bgfx::setTransform(matrix4x4::to_float_ptr(world_pose()));
-	bgfx::submit(0);
+	bgfx::submit(0, _depth);
 }
 }
 
 
 } // namespace crown
 } // namespace crown

+ 3 - 0
engine/renderers/sprite.h

@@ -57,6 +57,8 @@ struct Sprite
 
 
 	void set_frame(uint32_t i);
 	void set_frame(uint32_t i);
 
 
+	void set_depth(int32_t z);
+
 	void render();
 	void render();
 
 
 public:
 public:
@@ -67,6 +69,7 @@ public:
 	const SpriteResource* m_resource;
 	const SpriteResource* m_resource;
 	MaterialId m_material;
 	MaterialId m_material;
 	uint32_t m_frame;
 	uint32_t m_frame;
+	int32_t _depth;
 };
 };
 
 
 } // namespace crown
 } // namespace crown