Просмотр исходного кода

update UnitResource according to Actor implementation

mikymod 12 лет назад
Родитель
Сommit
a7085554e2
1 измененных файлов с 27 добавлено и 0 удалено
  1. 27 0
      engine/resource/UnitResource.h

+ 27 - 0
engine/resource/UnitResource.h

@@ -42,6 +42,8 @@ struct UnitHeader
 	uint32_t renderables_offset;
 	uint32_t num_cameras;
 	uint32_t cameras_offset;
+	uint32_t num_actors;
+	uint32_t actors_offset;
 };
 
 struct UnitRenderable
@@ -57,6 +59,14 @@ struct UnitCamera
 	uint32_t name;
 };
 
+struct UnitActor
+{
+	uint32_t name;
+	enum {STATIC, DYNAMIC, UNK_TYPE} type;
+	enum {SPHERE, BOX, PLANE, UNK_SHAPE} shape;
+	bool active;
+};
+
 class UnitResource
 {
 public:
@@ -131,6 +141,23 @@ public:
 		return begin[i];
 	}
 
+	//-----------------------------------------------------------------------------
+	uint32_t num_actors() const
+	{
+		CE_ASSERT_NOT_NULL(m_data);
+
+		return ((UnitHeader*)m_data)->num_actors;
+	}
+
+	//-----------------------------------------------------------------------------
+	const UnitActor& get_actor(uint32_t i) const
+	{
+		CE_ASSERT(i < num_actors(), "Index out of bounds");
+
+		UnitActor* begin = (UnitActor*)(m_data + ((UnitHeader*)m_data)->actors_offset);
+		return begin[i];
+	}
+
 private:
 
 	char* m_data;