|
|
@@ -1111,16 +1111,13 @@ void MaterialBrowser::Resize(Number width, Number height) {
|
|
|
}
|
|
|
|
|
|
PolycodeMaterialEditor::PolycodeMaterialEditor() : PolycodeEditor(true){
|
|
|
- resourcePool = new ResourcePool("Local", CoreServices::getInstance()->getResourceManager()->getGlobalPool());
|
|
|
- resourcePool->reloadResourcesOnModify = true;
|
|
|
|
|
|
- CoreServices::getInstance()->getResourceManager()->addResourcePool(resourcePool);
|
|
|
+
|
|
|
selectedMaterialNode = NULL;
|
|
|
}
|
|
|
|
|
|
PolycodeMaterialEditor::~PolycodeMaterialEditor() {
|
|
|
- delete resourcePool;
|
|
|
-
|
|
|
+ CoreServices::getInstance()->getResourceManager()->unsubscibeFromResourcePool(resourcePool);
|
|
|
|
|
|
mainWindow->setOwnsChildrenRecursive(true);
|
|
|
delete mainWindow;
|
|
|
@@ -1130,6 +1127,19 @@ PolycodeMaterialEditor::~PolycodeMaterialEditor() {
|
|
|
|
|
|
bool PolycodeMaterialEditor::openFile(OSFileEntry filePath) {
|
|
|
|
|
|
+ String resourceName = filePath.fullPath.replace(parentProject->getRootFolder()+"/", "");
|
|
|
+
|
|
|
+ resourcePool = CoreServices::getInstance()->getResourceManager()->getResourcePoolByName(resourceName);
|
|
|
+
|
|
|
+ if(!resourcePool) {
|
|
|
+ resourcePool = new ResourcePool(resourceName, CoreServices::getInstance()->getResourceManager()->getGlobalPool());
|
|
|
+ resourcePool->reloadResourcesOnModify = true;
|
|
|
+ resourcePool->deleteOnUnsubscribe = true;
|
|
|
+ CoreServices::getInstance()->getMaterialManager()->loadMaterialLibraryIntoPool(resourcePool, filePath.fullPath);
|
|
|
+ CoreServices::getInstance()->getResourceManager()->addResourcePool(resourcePool);
|
|
|
+ }
|
|
|
+
|
|
|
+ CoreServices::getInstance()->getResourceManager()->subscribeToResourcePool(resourcePool);
|
|
|
|
|
|
mainSizer = new UIHSizer(100,100,200,false);
|
|
|
addChild(mainSizer);
|
|
|
@@ -1139,42 +1149,33 @@ bool PolycodeMaterialEditor::openFile(OSFileEntry filePath) {
|
|
|
|
|
|
materialBrowser->addEventListener(this, Event::CHANGE_EVENT);
|
|
|
|
|
|
-
|
|
|
- shaders = CoreServices::getInstance()->getMaterialManager()->loadShadersFromFile(resourcePool, filePath.fullPath);
|
|
|
- for(int i=0; i < shaders.size(); i++) {
|
|
|
- materialBrowser->addShader(shaders[i]);
|
|
|
- CoreServices::getInstance()->getMaterialManager()->addShader(shaders[i]);
|
|
|
- resourcePool->addResource(shaders[i]);
|
|
|
- shaders[i]->vp->reloadOnFileModify = true;
|
|
|
- shaders[i]->fp->reloadOnFileModify = true;
|
|
|
- }
|
|
|
-
|
|
|
- cubemaps = CoreServices::getInstance()->getMaterialManager()->loadCubemapsFromFile(filePath.fullPath);
|
|
|
- for(int i=0; i < cubemaps.size(); i++) {
|
|
|
- materialBrowser->addCubemap(cubemaps[i]);
|
|
|
- resourcePool->addResource(cubemaps[i]);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- std::vector<Material*> mats = CoreServices::getInstance()->getMaterialManager()->loadMaterialsFromFile(resourcePool, filePath.fullPath);
|
|
|
-
|
|
|
- materials.clear();
|
|
|
- for(int i=0; i < mats.size(); i++) {
|
|
|
- if(mats[i]->screenMaterial) {
|
|
|
- postMaterials.push_back(mats[i]);
|
|
|
+ std::vector<Resource*> res = resourcePool->getResources(Resource::RESOURCE_SHADER);
|
|
|
+ for(int i=0; i < res.size(); i++) {
|
|
|
+ Shader *shader = (Shader*)res[i];
|
|
|
+ materialBrowser->addShader(shader);
|
|
|
+ shader->vp->reloadOnFileModify = true;
|
|
|
+ shader->fp->reloadOnFileModify = true;
|
|
|
+ shaders.push_back(shader);
|
|
|
+ }
|
|
|
+
|
|
|
+ res = resourcePool->getResources(Resource::RESOURCE_CUBEMAP);
|
|
|
+ for(int i=0; i < res.size(); i++) {
|
|
|
+ Cubemap *cubemap = (Cubemap*)res[i];
|
|
|
+ materialBrowser->addCubemap(cubemap);
|
|
|
+ cubemaps.push_back(cubemap);
|
|
|
+ }
|
|
|
+
|
|
|
+ res = resourcePool->getResources(Resource::RESOURCE_MATERIAL);
|
|
|
+ for(int i=0; i < res.size(); i++) {
|
|
|
+ Material *material = (Material*)res[i];
|
|
|
+ if(material->screenMaterial) {
|
|
|
+ postMaterials.push_back(material);
|
|
|
+ materialBrowser->addPostMaterial(material);
|
|
|
} else {
|
|
|
- materials.push_back(mats[i]);
|
|
|
+ materials.push_back(material);
|
|
|
+ materialBrowser->addMaterial(material);
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- for(int i=0; i < materials.size(); i++) {
|
|
|
- materialBrowser->addMaterial(materials[i]);
|
|
|
- resourcePool->addResource(materials[i]);
|
|
|
- }
|
|
|
-
|
|
|
- for(int i=0; i < postMaterials.size(); i++) {
|
|
|
- materialBrowser->addPostMaterial(postMaterials[i]);
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
mainWindow = new MaterialMainWindow(resourcePool);
|
|
|
mainSizer->addLeftChild(mainWindow);
|