File MaterialLoader.h

namespace Gsage
class MaterialLoader : public EventDispatcher, public EventSubscriber<MaterialLoader>
#include <MaterialLoader.h>

TODO: INDEXER

{ “filename”: { “checksum”: “…”, “changed”: “…”, “materials”: [] } }

for(auto& file : filesystem->ls(folder)) { if(filesystem->extension(file) != “material”) { continue; } } Custom OGRE material loader

Public Functions

MaterialLoader(OgreRenderSystem *render, GsageFacade *facade)
bool load(const std::string &material, const std::string &group, bool background = true)

Loads material from any of resource folders

Parameters
  • material: Material name

  • group: Material group

  • background: Loads material in background

void scan(const std::string &folder)

Indexer scans materials files to detect materials sets defined there

Parameters
  • folder: Folder to scan

Private Types

typedef std::map<std::string, FileInfo> MaterialIndex

Private Functions

void scanFolder(const std::string &folder, std::vector<std::string> &files, const std::string extension)
void readIndexFile()
void writeIndexFile()
bool onEnvUpdated(EventDispatcher *sender, const Event &event)
void reloadIndex()

Private Members

OgreRenderSystem *mRender
GsageFacade *mFacade
DataProxy mIndex
std::string mWorkdir
MaterialIndex mMaterialIndex
struct FileInfo

Public Members

std::string path
signed long modified
std::string folder