From 15740faf9fe9fe4be08965098bbf2947e096aeeb Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 14 Aug 2019 22:50:43 +0800 Subject: +Unity Runtime code --- Runtime/Shaders/ShaderNameRegistry.h | 54 ++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Runtime/Shaders/ShaderNameRegistry.h (limited to 'Runtime/Shaders/ShaderNameRegistry.h') 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 +#include +#include "Runtime/Shaders/NameToObjectMap.h" +#include "Runtime/Modules/ExportModules.h" + +using std::string; + +class Shader; +typedef std::vector< PPtr > ShaderPtrVector; + + +class EXPORT_COREMODULE ScriptMapper : public GlobalGameManager +{ +public: + typedef std::multimap > StringToShader; + REGISTER_DERIVED_CLASS (ScriptMapper, GlobalGameManager) + DECLARE_OBJECT_SERIALIZE (ScriptMapper) + + typedef NameToObjectMap, UnityStr>, std::multimap > > 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 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); -- cgit v1.1-26-g67d0