|
|
- // Amplify Shader Editor - Visual Shader Editing Tool
- // Copyright (c) Amplify Creations, Lda <info@amplify.pt>
-
- using System;
- using UnityEditor;
- using UnityEngine;
-
- namespace AmplifyShaderEditor
- {
- [Serializable]
- public class RenderingPlatformOpHelper
- {
- private const string RenderingPlatformsStr = " Rendering Platforms";
- private readonly string[] RenderingPlatformsLabels = { " Direct3D 9",
- " Direct3D 11/12",
- " OpenGL 3.x/4.x",
- " OpenGL ES 2.0",
- " OpenGL ES 3.x",
- " iOS/Mac Metal",
- " Direct3D 11 9.x",
- " Xbox 360",
- " Xbox One",
- " PlayStation 4",
- " PlayStation Vita",
- " Nintendo 3DS",
- " Nintendo Wii U" };
-
- [SerializeField]
- private bool[] m_renderingPlatformValues;
-
- public RenderingPlatformOpHelper()
- {
- m_renderingPlatformValues = new bool[ RenderingPlatformsLabels.Length ];
- for ( int i = 0; i < m_renderingPlatformValues.Length; i++ )
- {
- m_renderingPlatformValues[ i ] = true;
- }
- }
-
-
- public void Draw( ParentNode owner )
- {
- bool value = owner.ContainerGraph.ParentWindow.InnerWindowVariables.ExpandedRenderingPlatforms;
- NodeUtils.DrawPropertyGroup( ref value, RenderingPlatformsStr, () =>
- {
- for ( int i = 0; i < m_renderingPlatformValues.Length; i++ )
- {
- m_renderingPlatformValues[ i ] = owner.EditorGUILayoutToggleLeft( RenderingPlatformsLabels[ i ], m_renderingPlatformValues[ i ] );
- }
- } );
- owner.ContainerGraph.ParentWindow.InnerWindowVariables.ExpandedRenderingPlatforms = value;
- }
-
- public void SetRenderingPlatforms( ref string ShaderBody )
- {
- int checkedPlatforms = 0;
- int uncheckedPlatforms = 0;
-
- for ( int i = 0; i < m_renderingPlatformValues.Length; i++ )
- {
- if ( m_renderingPlatformValues[ i ] )
- {
- checkedPlatforms += 1;
- }
- else
- {
- uncheckedPlatforms += 1;
- }
- }
-
- if ( checkedPlatforms > 0 && checkedPlatforms < m_renderingPlatformValues.Length )
- {
- string result = string.Empty;
- if ( checkedPlatforms < uncheckedPlatforms )
- {
- result = "only_renderers ";
- for ( int i = 0; i < m_renderingPlatformValues.Length; i++ )
- {
- if ( m_renderingPlatformValues[ i ] )
- {
- result += ( RenderPlatforms ) i + " ";
- }
- }
- }
- else
- {
- result = "exclude_renderers ";
- for ( int i = 0; i < m_renderingPlatformValues.Length; i++ )
- {
- if ( !m_renderingPlatformValues[ i ] )
- {
- result += ( RenderPlatforms ) i + " ";
- }
- }
- }
- MasterNode.AddShaderPragma( ref ShaderBody, result );
- }
- }
-
-
- public void ReadFromString( ref uint index, ref string[] nodeParams )
- {
- for ( int i = 0; i < m_renderingPlatformValues.Length; i++ )
- {
- m_renderingPlatformValues[ i ] = Convert.ToBoolean( nodeParams[ index++ ] );
- }
- }
-
- public void WriteToString( ref string nodeInfo )
- {
- for ( int i = 0; i < m_renderingPlatformValues.Length; i++ )
- {
- IOUtils.AddFieldValueToString( ref nodeInfo, m_renderingPlatformValues[ i ] );
- }
- }
- }
- }
|