| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #include "BsShaderIncludeHandler.h"
- #include "BsProjectLibrary.h"
- #include "BsResources.h"
- #include "BsProjectResourceMeta.h"
- #include "BsBuiltinResources.h"
- #include "BsBuiltinEditorResources.h"
- namespace BansheeEngine
- {
- HShaderInclude EditorShaderIncludeHandler::findInclude(const String& name) const
- {
- Path path = toResourcePath(name);
- if (path.isEmpty())
- return HShaderInclude();
- if (name.size() >= 8)
- {
- if (name.substr(0, 8) == "$ENGINE$" || name.substr(0, 8) == "$EDITOR$")
- return static_resource_cast<ShaderInclude>(Resources::instance().load(path));
- }
- ProjectLibrary::LibraryEntry* entry = gProjectLibrary().findEntry(path);
- if (entry != nullptr && entry->type == ProjectLibrary::LibraryEntryType::File)
- {
- ProjectLibrary::ResourceEntry* resEntry = static_cast<ProjectLibrary::ResourceEntry*>(entry);
- if (resEntry->meta != nullptr)
- return static_resource_cast<ShaderInclude>(Resources::instance().loadFromUUID(resEntry->meta->getUUID()));
- }
- return HShaderInclude();
- }
- Path EditorShaderIncludeHandler::toResourcePath(const String& name)
- {
- if (name.substr(0, 8) == "$ENGINE$")
- {
- if (name.size() > 8)
- {
- Path fullPath = BuiltinResources::EngineShaderIncludeFolder;
- Path includePath = name.substr(9, name.size() - 9);
- fullPath.append(includePath);
- fullPath.setFilename(includePath.getFilename() + ".asset");
- return fullPath;
- }
- }
- else if (name.substr(0, 8) == "$EDITOR$")
- {
- if (name.size() > 8)
- {
- Path fullPath = BuiltinEditorResources::EditorShaderIncludeFolder;
- Path includePath = name.substr(9, name.size() - 9);
- fullPath.append(includePath);
- fullPath.setFilename(includePath.getFilename() + ".asset");
- return fullPath;
- }
- }
- else
- {
- return name;
- }
- return Path::BLANK;
- }
- }
|