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/Camera/GraphicsSettings.cpp |
Diffstat (limited to 'Runtime/Camera/GraphicsSettings.cpp')
-rw-r--r-- | Runtime/Camera/GraphicsSettings.cpp | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/Runtime/Camera/GraphicsSettings.cpp b/Runtime/Camera/GraphicsSettings.cpp new file mode 100644 index 0000000..004f6ed --- /dev/null +++ b/Runtime/Camera/GraphicsSettings.cpp @@ -0,0 +1,79 @@ +#include "UnityPrefix.h" +#include "GraphicsSettings.h" +#include "RenderManager.h" +#include "Runtime/BaseClasses/ManagerContext.h" +#include "Runtime/Serialize/TransferFunctions/SerializeTransfer.h" +#if UNITY_EDITOR +#include "Runtime/Misc/ResourceManager.h" +#endif + + +GraphicsSettings::GraphicsSettings (MemLabelId label, ObjectCreationMode mode) +: Super(label, mode) +, m_NeedToInitializeDefaultShaders(false) +{ +} + +GraphicsSettings::~GraphicsSettings () +{ +} + + +void GraphicsSettings::InitializeClass () +{ + RenderManager::InitializeClass(); +} + +void GraphicsSettings::CleanupClass () +{ + RenderManager::CleanupClass(); +} + + +void GraphicsSettings::SetDefaultAlwaysIncludedShaders() +{ + #if UNITY_EDITOR + m_AlwaysIncludedShaders.clear(); + if (BuiltinResourceManager::AreResourcesInitialized()) + m_AlwaysIncludedShaders.push_back(GetBuiltinExtraResource<Shader> ("Normal-Diffuse.shader")); + else + m_NeedToInitializeDefaultShaders = true; + SetDirty(); + #endif +} + +bool GraphicsSettings::IsAlwaysIncludedShader (PPtr<Shader> shader) const +{ + for (int i = 0; i < m_AlwaysIncludedShaders.size (); ++i) + if (m_AlwaysIncludedShaders[i] == shader) + return true; + + return false; +} + +#if UNITY_EDITOR + +void GraphicsSettings::AddAlwaysIncludedShader (PPtr<Shader> shader) +{ + m_AlwaysIncludedShaders.push_back (shader); + SetDirty (); +} + +#endif + +void GraphicsSettings::Reset () +{ + Super::Reset (); + SetDefaultAlwaysIncludedShaders (); +} + +template<class TransferFunction> +void GraphicsSettings::Transfer (TransferFunction& transfer) +{ + Super::Transfer (transfer); + transfer.Transfer (m_AlwaysIncludedShaders, "m_AlwaysIncludedShaders"); +} + +IMPLEMENT_CLASS_HAS_INIT (GraphicsSettings) +IMPLEMENT_OBJECT_SERIALIZE (GraphicsSettings) +GET_MANAGER (GraphicsSettings) |