Simple game engine with complete export to scripting language
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
1.5 KiB

// system includes
#include <map>
#include <string>
// project includes
#include "Utilities/Referenced.h"
#include "Utilities/Named.h"
#include "TextureManager.h"
#include "ShaderManager.h"
#include "MeshManager.h"
#include "RenderQueue.h"
// forward declaration
class TiXmlElement;
namespace BlueCore
class Model : public Named, public RenderItem
struct TextureUnit
std::string mName;
ref_ptr<Texture> mTexture;
struct RenderPassDefinition
bool Enabled;
std::vector<TextureUnit> Textures;
ShaderProgram Program;
bool Tangents;
float Shininess;
float Specular[4];
ref_ptr<Mesh> ModelMesh;
ref_ptr<Mesh> ShadowMesh;
RenderPassDefinition AmbientPass;
RenderPassDefinition LitPass;
RenderPassDefinition DefaultPass;
void render(RenderDevice *) const;
class ModelManager : public Referenced
typedef std::map< std::string, weak_ptr<Model> > ModelContainer;
ModelContainer _Models;
weak_ptr<TextureManager> _TextureManager;
weak_ptr<ShaderManager> _ShaderManager;
weak_ptr<MeshManager> _MeshManager;
void parseRenderPassDefinition(Model::RenderPassDefinition &Definition,
const TiXmlElement* DefinitionElement);
void unload();
ModelManager(TextureManager *texturemanager, ShaderManager* shadermanager,
MeshManager* meshmanager);
Model *loadModel(const std::string &name);
} // namespace BlueCore