Panagiotis Christopoulos Charitos преди 15 години
родител
ревизия
b593e65e94
променени са 4 файла, в които са добавени 73 реда и са изтрити 4 реда
  1. 1 2
      build/debug/Makefile
  2. 1 1
      src/Misc/TestHeader.cpp
  3. 2 1
      src/Resources/Core/Resource.h
  4. 69 0
      src/Resources/Model.h

Файловите разлики са ограничени, защото са твърде много
+ 1 - 2
build/debug/Makefile


+ 1 - 1
src/Misc/TestHeader.cpp

@@ -1 +1 @@
-#include "MeshData.h"
+#include "Model.h"

+ 2 - 1
src/Resources/Core/Resource.h

@@ -30,7 +30,8 @@ class Resource
 			RT_LIGHT_PROPS,
 			RT_EXTENSION,
 			RT_PARTICLE_EMITTER_PROPS,
-			RT_SCRIPT
+			RT_SCRIPT,
+			RT_MODEL
 		};
 
 	PROPERTY_R(std::string, path, getRsrcPath);

+ 69 - 0
src/Resources/Model.h

@@ -0,0 +1,69 @@
+#ifndef MODEL_H
+#define MODEL_H
+
+#include "Resource.h"
+#include "RsrcPtr.h"
+
+
+class Mesh;
+class Material;
+class Vao;
+
+
+/// File format:
+/// @code
+/// subMeshes {
+/// 	subMesh {
+/// 		mesh <string>
+/// 		material <string>
+/// 		dpMaterial <string>
+/// 	}
+/// 	...
+/// 	subMesh {
+/// 		...
+/// 	}
+/// }
+///
+/// skeleton <string>
+///
+/// stdAnims {
+/// 	<string>
+/// 	...
+/// 	<string>
+/// }
+/// @endcode
+class Model: public Resource
+{
+	public:
+		///
+		class SubModel
+		{
+			public:
+				/// @name Accessors
+				/// @{
+				const Mesh& getMesh() const {return *mesh;}
+				const Material& getMtl() const {return *mtl;}
+				const Material& getDpMtl() const {return *dpMtl;}
+				const Vao& getVao() const {return *normVao;}
+				const Vao& getDpVao() const {return *dpVao;}
+				/// @}
+
+			private:
+				RsrcPtr<Mesh> mesh; ///< The geometry
+				RsrcPtr<Material> mtl; ///< Material for MS ans BS
+				RsrcPtr<Material> dpMtl; ///< Material for depth passes
+				Vao* normVao; ///< Normal VAO for MS ans BS
+				Vao* dpVao; ///< Depth pass VAO for SM and EarlyZ
+		};
+
+		Model(): Resource(RT_MODEL) {}
+
+		void load(const char* filename);
+
+	private:
+		RsrcPtr<Skeleton> skel;
+		//RsrcPtr<SkelAnim> sAnim;
+};
+
+
+#endif

Някои файлове не бяха показани, защото твърде много файлове са промени