diff options
author | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
commit | 15740faf9fe9fe4be08965098bbf2947e096aeeb (patch) | |
tree | a730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Shaders/ShaderNameRegistry.h |
Diffstat (limited to 'Runtime/Shaders/ShaderNameRegistry.h')
-rw-r--r-- | Runtime/Shaders/ShaderNameRegistry.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/Runtime/Shaders/ShaderNameRegistry.h b/Runtime/Shaders/ShaderNameRegistry.h new file mode 100644 index 0000000..1643f4d --- /dev/null +++ b/Runtime/Shaders/ShaderNameRegistry.h @@ -0,0 +1,54 @@ +#pragma once + +#include "Runtime/BaseClasses/GameManager.h" +#include <string> +#include <map> +#include "Runtime/Shaders/NameToObjectMap.h" +#include "Runtime/Modules/ExportModules.h" + +using std::string; + +class Shader; +typedef std::vector< PPtr<Shader> > ShaderPtrVector; + + +class EXPORT_COREMODULE ScriptMapper : public GlobalGameManager +{ +public: + typedef std::multimap<UnityStr, PPtr<Shader> > StringToShader; + REGISTER_DERIVED_CLASS (ScriptMapper, GlobalGameManager) + DECLARE_OBJECT_SERIALIZE (ScriptMapper) + + typedef NameToObjectMap<Shader, std::map<PPtr<Shader>, UnityStr>, std::multimap<UnityStr, PPtr<Shader> > > Shaders; + + ScriptMapper (MemLabelId label, ObjectCreationMode mode); + // virtual ~ScriptMapper (); declared-by-macro + + // Add a shader to the system. + void AddShader (Shader& ptr); + void AddBuiltinShader (const std::string& className, PPtr<Shader> ptr); + + // Get a shader by name. + // If the shader could not be loaded (e.g. because it was deleted), it is removed from the master list. + Shader* FindShader (const string &name); + + bool ShouldIgnoreInGarbageDependencyTracking (); + + #if UNITY_EDITOR + + Shader *GetDefaultShader() { return FindShader( "Diffuse" ); } + + const Shaders& GetShaders () { return m_Shaders; } + void SetShaders (const Shaders& shaders) { m_Shaders = shaders; } + + #endif // UNITY_EDITOR + +private: + Shaders m_Shaders; +}; + +ScriptMapper& GetScriptMapper (); +ScriptMapper* GetScriptMapperPtr (); + + +Shader* FindShaderLabShader (const std::string& name, ShaderPtrVector& shaderLookup, bool useLookup); |