public Uni2DEditorSerializedSprite_InteractiveBuildSettings( SerializedObject a_rSerializedSprite )
	{
		if( a_rSerializedSprite != null )
		{
			m_rSerializedSprite = a_rSerializedSprite;

			serializedTexture     	 = new SerializedSetting<Texture2D>( a_rSerializedSprite, "m_rSpriteSettings.textureContainer.m_rTexture" );
			serializedTextureGUID 	 = new SerializedSetting<string>( a_rSerializedSprite, "m_rSpriteSettings.textureContainer.m_oTextureGUID" );
			serializedAtlas       	 = new SerializedSetting<Uni2DTextureAtlas>( a_rSerializedSprite, "m_rSpriteSettings.atlas" );
			serializedSharedMaterial = new SerializedSetting<Material>(a_rSerializedSprite, "m_rSpriteSettings.sharedMaterial");
			
			serializedSpriteScaleMode = new SerializedSetting<SpriteScaleMode>( a_rSerializedSprite, "m_rSpriteSettings.spriteScaleMode"   );
			serializedSpriteScale = new SerializedSetting<float>( a_rSerializedSprite, "m_rSpriteSettings.spriteScale"   );
			serializedSpriteScaleNotUniform = new SerializedSetting<Vector2>( a_rSerializedSprite, "m_rSpriteSettings.spriteScaleNotUniform"   );
			
			serializedPivotType         = new SerializedSetting<PivotType>( a_rSerializedSprite, "m_rSpriteSettings.pivotType" );
			serializedPivotCustomCoords = new SerializedSetting<Vector2>( a_rSerializedSprite, "m_rSpriteSettings.pivotCustomCoords" );

			serializedVertexColor = new SerializedSetting<Color>( a_rSerializedSprite, "m_rSpriteSettings.vertexColor" );

			serializedExtrusionDepth = new SerializedSetting<float>( a_rSerializedSprite, "m_rSpriteSettings.extrusionDepth" );
			serializedIsKinematic    = new SerializedSetting<bool>( a_rSerializedSprite, "m_rSpriteSettings.isKinematic" );
			serializedIsTrigger    = new SerializedSetting<bool>( a_rSerializedSprite, "m_rSpriteSettings.isTrigger" );

			serializedBoneInfluenceFalloff = new SerializedSetting<float>( a_rSerializedSprite, "m_rSpriteSettings.boneInfluenceFalloff" );
			serializedSkinQuality = new SerializedSetting<UnityEngine.SkinQuality>( a_rSerializedSprite, "m_rSpriteSettings.skinQuality" );
			serializedPhysicsSkinMode = new SerializedSetting<Uni2DSprite.EPhysicsSkinMode>( a_rSerializedSprite, "m_rSpriteSettings.physicsSkinMode" );
			serializedRenderSkinMode = new SerializedSetting<Uni2DSprite.ERenderSkinMode>( a_rSerializedSprite, "m_rSpriteSettings.renderSkinMode" );
		}
	}
        public void TestWrite()
        {
            var setting = new SerializedSetting <SerializedSetting <int> >
            {
                Category          = "Test category",
                Description       = "Some value for testing",
                HumanReadableName = "Test string",
                Value             = new SerializedSetting <int>
                {
                    Category          = "Test category",
                    Description       = "Some value for testing",
                    HumanReadableName = "Test int",
                    Value             = 666
                }
            };

            string filePath = @".\testSetting.xml";

            if (File.Exists(filePath))
            {
                File.Delete(filePath);
            }

            XmlSerializer writer = new XmlSerializer(setting.GetType());

            FileStream file = File.Create(filePath);

            writer.Serialize(file, setting);
            file.Close();
        }
	public Uni2DEditorSerializedSprite_BuildSettings( SerializedObject a_rSerializedSprite )
	{
		if( a_rSerializedSprite != null )
		{
			m_rSerializedSprite     = a_rSerializedSprite;
		
			serializedDimensionMode = new SerializedSetting<DimensionMode>(a_rSerializedSprite, "m_rSpriteSettings.dimensionMode");
			serializedPhysicsMode    = new SerializedSetting<PhysicsMode>(    a_rSerializedSprite, "m_rSpriteSettings.physicsMode" );
			serializedCollisionType = new SerializedSetting<CollisionType>( a_rSerializedSprite, "m_rSpriteSettings.collisionType" );

			serializedAlphaCutOff            = new SerializedSetting<float>( a_rSerializedSprite, "m_rSpriteSettings.alphaCutOff" );
			serializedPolygonizationAccuracy = new SerializedSetting<float>( a_rSerializedSprite, "m_rSpriteSettings.polygonizationAccuracy" );
			serializedPolygonizeHoles        = new SerializedSetting<bool>(  a_rSerializedSprite, "m_rSpriteSettings.polygonizeHoles" );

			serializedRenderMesh = new SerializedSetting<SpriteRenderMesh>( a_rSerializedSprite, "m_rSpriteSettings.renderMesh" );
			serializedUsePhysicBuildSettings = new SerializedSetting<bool>( a_rSerializedSprite, "m_rSpriteSettings.usePhysicBuildSettings" );

			serializedRenderMeshAlphaCutOff = new SerializedSetting<float>( a_rSerializedSprite, "m_rSpriteSettings.renderMeshAlphaCutOff" );
			serializedRenderMeshPolygonizationAccuracy = new SerializedSetting<float>( a_rSerializedSprite, "m_rSpriteSettings.renderMeshPolygonizationAccuracy" );
			serializedRenderMeshPolygonizeHoles = new SerializedSetting<bool>( a_rSerializedSprite, "m_rSpriteSettings.renderMeshPolygonizeHoles" );
			
			serializedOnlyBorder = new SerializedSetting<bool>( a_rSerializedSprite, "m_rSpriteSettings.onlyBorder" );
			serializedSubdivide = new SerializedSetting<bool>( a_rSerializedSprite, "m_rSpriteSettings.subdivide" );
			serializedSubdivisionCount = new SerializedSetting<int>(a_rSerializedSprite, "m_rSpriteSettings.subdivisionCount");

			serializedIsPhysicsDirty = new SerializedSetting<bool>( a_rSerializedSprite, "isPhysicsDirty" );

			serializedRenderMeshGridHorizontalSubDivs = new SerializedSetting<int>( a_rSerializedSprite, "m_rSpriteSettings.renderMeshGridHorizontalSubDivs" );
			serializedRenderMeshGridVerticalSubDivs   = new SerializedSetting<int>( a_rSerializedSprite, "m_rSpriteSettings.renderMeshGridVerticalSubDivs" );
		}
	}
        private void DisplaySetting(SerializedSetting serializedSetting)
        {
            EditorGUILayout.Space();

            switch (serializedSetting.Type)
            {
            case SettingType.Boolean:
                DisplayBoolToggle(serializedSetting);
                break;

            case SettingType.Enumeration:
                DisplayLabelField(serializedSetting);
                break;

            case SettingType.Integer:
                DisplayIntSlider(serializedSetting);
                break;

            case SettingType.Float:
                DisplayFloatSlider(serializedSetting);
                break;

            case SettingType.ListOfIntegers:
                DisplayList(serializedSetting);
                break;

            case SettingType.ListOfFloats:
                DisplayList(serializedSetting);
                break;

            default:
                DisplayTextField(serializedSetting);
                break;
            }
        }
    public Uni2DEditorSerializedSprite_BuildSettings(SerializedObject a_rSerializedSprite)
    {
        if (a_rSerializedSprite != null)
        {
            m_rSerializedSprite = a_rSerializedSprite;

            serializedDimensionMode = new SerializedSetting <DimensionMode>(a_rSerializedSprite, "m_rSpriteSettings.dimensionMode");
            serializedPhysicsMode   = new SerializedSetting <PhysicsMode>(a_rSerializedSprite, "m_rSpriteSettings.physicsMode");
            serializedCollisionType = new SerializedSetting <CollisionType>(a_rSerializedSprite, "m_rSpriteSettings.collisionType");

            serializedAlphaCutOff            = new SerializedSetting <float>(a_rSerializedSprite, "m_rSpriteSettings.alphaCutOff");
            serializedPolygonizationAccuracy = new SerializedSetting <float>(a_rSerializedSprite, "m_rSpriteSettings.polygonizationAccuracy");
            serializedPolygonizeHoles        = new SerializedSetting <bool>(a_rSerializedSprite, "m_rSpriteSettings.polygonizeHoles");

            serializedRenderMesh             = new SerializedSetting <SpriteRenderMesh>(a_rSerializedSprite, "m_rSpriteSettings.renderMesh");
            serializedUsePhysicBuildSettings = new SerializedSetting <bool>(a_rSerializedSprite, "m_rSpriteSettings.usePhysicBuildSettings");

            serializedRenderMeshAlphaCutOff            = new SerializedSetting <float>(a_rSerializedSprite, "m_rSpriteSettings.renderMeshAlphaCutOff");
            serializedRenderMeshPolygonizationAccuracy = new SerializedSetting <float>(a_rSerializedSprite, "m_rSpriteSettings.renderMeshPolygonizationAccuracy");
            serializedRenderMeshPolygonizeHoles        = new SerializedSetting <bool>(a_rSerializedSprite, "m_rSpriteSettings.renderMeshPolygonizeHoles");

            serializedOnlyBorder       = new SerializedSetting <bool>(a_rSerializedSprite, "m_rSpriteSettings.onlyBorder");
            serializedSubdivide        = new SerializedSetting <bool>(a_rSerializedSprite, "m_rSpriteSettings.subdivide");
            serializedSubdivisionCount = new SerializedSetting <int>(a_rSerializedSprite, "m_rSpriteSettings.subdivisionCount");

            serializedIsPhysicsDirty = new SerializedSetting <bool>(a_rSerializedSprite, "isPhysicsDirty");

            serializedRenderMeshGridHorizontalSubDivs = new SerializedSetting <int>(a_rSerializedSprite, "m_rSpriteSettings.renderMeshGridHorizontalSubDivs");
            serializedRenderMeshGridVerticalSubDivs   = new SerializedSetting <int>(a_rSerializedSprite, "m_rSpriteSettings.renderMeshGridVerticalSubDivs");
        }
    }
        private void DisplayList(SerializedSetting serializedSetting)
        {
            var dataArray = serializedSetting.CurrentValue.Trim().Split(' ');

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.PrefixLabel(
                new GUIContent(serializedSetting.ShortName,
                               serializedSetting.Name + TOOLTIP_SEPERATOR + serializedSetting.Description));

            switch (serializedSetting.Type)
            {
            case SettingType.ListOfFloats:
            {
                for (var dataIndex = 0; dataIndex < dataArray.Length; dataIndex++)
                {
                    float number = float.Parse(dataArray[dataIndex], CultureInfo.InvariantCulture);
                    dataArray[dataIndex] = Convert.ToString(EditorGUILayout.FloatField(number));
                }
                break;
            }

            case SettingType.ListOfIntegers:
            {
                for (var dataIndex = 0; dataIndex < dataArray.Length; dataIndex++)
                {
                    int number = int.Parse(dataArray[dataIndex], CultureInfo.InvariantCulture);
                    dataArray[dataIndex] = Convert.ToString(EditorGUILayout.IntField(number));
                }
                break;
            }
            }

            EditorGUILayout.EndHorizontal();
            serializedSetting.CurrentValue = String.Join(" ", dataArray);
        }
Beispiel #7
0
    public Uni2DEditorSerializedSprite_InteractiveBuildSettings(SerializedObject a_rSerializedSprite)
    {
        if (a_rSerializedSprite != null)
        {
            m_rSerializedSprite = a_rSerializedSprite;

            serializedTexture        = new SerializedSetting <Texture2D>(a_rSerializedSprite, "m_rSpriteSettings.textureContainer.m_rTexture");
            serializedTextureGUID    = new SerializedSetting <string>(a_rSerializedSprite, "m_rSpriteSettings.textureContainer.m_oTextureGUID");
            serializedAtlas          = new SerializedSetting <Uni2DTextureAtlas>(a_rSerializedSprite, "m_rSpriteSettings.atlas");
            serializedSharedMaterial = new SerializedSetting <Material>(a_rSerializedSprite, "m_rSpriteSettings.sharedMaterial");

            serializedSpriteScaleMode       = new SerializedSetting <SpriteScaleMode>(a_rSerializedSprite, "m_rSpriteSettings.spriteScaleMode");
            serializedSpriteScale           = new SerializedSetting <float>(a_rSerializedSprite, "m_rSpriteSettings.spriteScale");
            serializedSpriteScaleNotUniform = new SerializedSetting <Vector2>(a_rSerializedSprite, "m_rSpriteSettings.spriteScaleNotUniform");

            serializedPivotType         = new SerializedSetting <PivotType>(a_rSerializedSprite, "m_rSpriteSettings.pivotType");
            serializedPivotCustomCoords = new SerializedSetting <Vector2>(a_rSerializedSprite, "m_rSpriteSettings.pivotCustomCoords");

            serializedVertexColor = new SerializedSetting <Color>(a_rSerializedSprite, "m_rSpriteSettings.vertexColor");

            serializedExtrusionDepth = new SerializedSetting <float>(a_rSerializedSprite, "m_rSpriteSettings.extrusionDepth");
            serializedIsKinematic    = new SerializedSetting <bool>(a_rSerializedSprite, "m_rSpriteSettings.isKinematic");
            serializedIsTrigger      = new SerializedSetting <bool>(a_rSerializedSprite, "m_rSpriteSettings.isTrigger");

            serializedBoneInfluenceFalloff = new SerializedSetting <float>(a_rSerializedSprite, "m_rSpriteSettings.boneInfluenceFalloff");
            serializedSkinQuality          = new SerializedSetting <UnityEngine.SkinQuality>(a_rSerializedSprite, "m_rSpriteSettings.skinQuality");
            serializedPhysicsSkinMode      = new SerializedSetting <Uni2DSprite.EPhysicsSkinMode>(a_rSerializedSprite, "m_rSpriteSettings.physicsSkinMode");
            serializedRenderSkinMode       = new SerializedSetting <Uni2DSprite.ERenderSkinMode>(a_rSerializedSprite, "m_rSpriteSettings.renderSkinMode");
        }
    }
 private void DisplayLabelField(SerializedSetting serializedSetting)
 {
     EditorGUILayout.LabelField(
         new GUIContent(
             serializedSetting.ShortName,
             serializedSetting.Name + TOOLTIP_SEPERATOR + serializedSetting.Description),
         new GUIContent(serializedSetting.CurrentValue));
 }
 private void DisplayBoolToggle(SerializedSetting serializedSetting)
 {
     serializedSetting.CurrentValue = EditorGUILayout.Toggle(
         new GUIContent(
             serializedSetting.ShortName,
             serializedSetting.Name + TOOLTIP_SEPERATOR + serializedSetting.Description),
         StringToBool(serializedSetting.CurrentValue)).ToString();
 }
 private void DisplayText(SerializedSetting serializedSetting)
 {
     if (ContainsAdmissibleValues(serializedSetting))
     {
         DisplayLabelField(serializedSetting);
     }
     else
     {
         DisplayTextField(serializedSetting);
     }
 }
        private void DisplayFloatSlider(SerializedSetting serializedSetting)
        {
            float minimumValue;
            float maximumValue;

            ParseRangeAllowedValues(serializedSetting.AllowedValues, out minimumValue, out maximumValue);

            serializedSetting.CurrentValue = EditorGUILayout.Slider(
                new GUIContent(
                    serializedSetting.ShortName,
                    serializedSetting.Name + TOOLTIP_SEPERATOR + serializedSetting.Description),
                Convert.ToSingle(serializedSetting.CurrentValue), minimumValue, maximumValue).ToString();
        }
    // Displays a popup menu filled with all potential atlases for the given input textures
    // Displays all available atlases if a_rTexturesToContain is null
    // Manages the serialized settings update
    public static Uni2DTextureAtlas SerializedAtlasPopup(SerializedSetting <Uni2DTextureAtlas> a_rSerializedTextureAtlas, IEnumerable <string> a_rTextureGUIDsToContain = null)
    {
        Uni2DTextureAtlas rCurrentAtlas = a_rSerializedTextureAtlas.HasMultipleDifferentValues ? null : a_rSerializedTextureAtlas.Value;

        bool bSavedShowMixedValue = EditorGUI.showMixedValue;

        EditorGUI.showMixedValue = a_rSerializedTextureAtlas.HasMultipleDifferentValues;
        {
            EditorGUI.BeginChangeCheck( );
            {
                rCurrentAtlas = Uni2DEditorGUIUtils.AtlasPopup(rCurrentAtlas, a_rTextureGUIDsToContain);
            }
            if (EditorGUI.EndChangeCheck( ))
            {
                a_rSerializedTextureAtlas.Value = rCurrentAtlas;
            }
        }
        EditorGUI.showMixedValue = bSavedShowMixedValue;

        return(rCurrentAtlas);
    }
    // Templated enum popup control for serialized object
    public static T SerializedEnumPopup <T>(SerializedSetting <T> a_rSerializedSetting, string a_rLabel = "") where T : struct
    {
        System.Enum eNewValue;
        bool        bSavedShowMixedValue = EditorGUI.showMixedValue;

        EditorGUI.BeginChangeCheck( );
        {
            EditorGUI.showMixedValue = a_rSerializedSetting.HasMultipleDifferentValues;
            eNewValue = EditorGUILayout.EnumPopup(a_rLabel, a_rSerializedSetting.Value as System.Enum);
        }

        T eResult = (T)System.Enum.Parse(typeof(T), eNewValue.ToString( ));

        if (EditorGUI.EndChangeCheck( ))
        {
            a_rSerializedSetting.Value = eResult;
        }

        EditorGUI.showMixedValue = bSavedShowMixedValue;

        return(eResult);
    }
	// Slider control for serialized object
	public void SerializedSlider( SerializedSetting<float> a_rSerializedSetting, float a_fMinValue, float a_fMaxValue, string a_rLabel = "" )
	{
		float fNewValue;
		bool bSavedShowMixedValue = EditorGUI.showMixedValue;

		EditorGUI.BeginChangeCheck( );
		{
			EditorGUI.showMixedValue = a_rSerializedSetting.HasMultipleDifferentValues;
			fNewValue = EditorGUILayout.Slider( a_rLabel, a_rSerializedSetting.Value, a_fMinValue, a_fMaxValue );
		}

		if( EditorGUI.EndChangeCheck( ) )
		{
			a_rSerializedSetting.Value = fNewValue;
		}

		EditorGUI.showMixedValue = bSavedShowMixedValue;
	}
	// Vector3 field control for serialized object
	public Vector3 SerializedVector3Field( SerializedSetting<Vector3> a_rSerializedSetting, string a_rLabel = "" )
	{
		Vector3 f3NewValue;
		bool bSavedShowMixedValue = EditorGUI.showMixedValue;

		EditorGUI.BeginChangeCheck( );
		{
			EditorGUI.showMixedValue = a_rSerializedSetting.HasMultipleDifferentValues;
			f3NewValue = EditorGUILayout.Vector3Field( a_rLabel, a_rSerializedSetting.Value );
		}

		if( EditorGUI.EndChangeCheck( ) )
		{
			a_rSerializedSetting.Value = f3NewValue;
		}

		EditorGUI.showMixedValue = bSavedShowMixedValue;

		return f3NewValue;
	}
 private bool ContainsAdmissibleValues(SerializedSetting serializedSetting)
 {
     return(String.IsNullOrEmpty(serializedSetting.AllowedValues));
 }
	// Int field control for serialized object
	public int SerializedIntField( SerializedSetting<int> a_rSerializedSetting, string a_rLabel = "" )
	{
		int iNewValue;
		bool bSavedShowMixedValue = EditorGUI.showMixedValue;

		EditorGUI.BeginChangeCheck( );
		{
			EditorGUI.showMixedValue = a_rSerializedSetting.HasMultipleDifferentValues;
			iNewValue = EditorGUILayout.IntField( a_rLabel, a_rSerializedSetting.Value );
		}

		if( EditorGUI.EndChangeCheck( ) )
		{
			a_rSerializedSetting.Value = iNewValue;
		}

		EditorGUI.showMixedValue = bSavedShowMixedValue;

		return iNewValue;
	}
	// Color field control for serialized object
	public Color SerializedColorField( SerializedSetting<Color> a_rSerializedSetting, string a_rLabel = "" )
	{
		Color f4NewValue;
		bool bSavedShowMixedValue = EditorGUI.showMixedValue;

		EditorGUI.BeginChangeCheck( );
		{
			EditorGUI.showMixedValue = a_rSerializedSetting.HasMultipleDifferentValues;
			f4NewValue = EditorGUILayout.ColorField( a_rLabel, a_rSerializedSetting.Value );
		}

		if( EditorGUI.EndChangeCheck( ) )
		{
			a_rSerializedSetting.Value = f4NewValue;
		}

		EditorGUI.showMixedValue = bSavedShowMixedValue;

		return f4NewValue;
	}
	// Float field control for serialized object
	public float SerializedFloatField( SerializedSetting<float> a_rSerializedSetting, string a_rLabel = "" )
	{
		float fNewValue;
		bool bSavedShowMixedValue = EditorGUI.showMixedValue;

		EditorGUI.BeginChangeCheck( );
		{
			EditorGUI.showMixedValue = a_rSerializedSetting.HasMultipleDifferentValues;
			fNewValue = EditorGUILayout.FloatField( a_rLabel, a_rSerializedSetting.Value );
		}

		if( EditorGUI.EndChangeCheck( ) )
		{
			a_rSerializedSetting.Value = fNewValue;
		}

		EditorGUI.showMixedValue = bSavedShowMixedValue;

		return fNewValue;
	}
	// Toggle control for serialized object
	public void SerializedToggle( SerializedSetting<bool> a_rSerializedSetting, string a_rLabel = "" )
	{
		bool bNewValue;
		bool bSavedShowMixedValue = EditorGUI.showMixedValue;

		EditorGUI.BeginChangeCheck( );
		{
			EditorGUI.showMixedValue = a_rSerializedSetting.HasMultipleDifferentValues;
			bNewValue = EditorGUILayout.Toggle( a_rLabel, a_rSerializedSetting.Value );
		}

		if( EditorGUI.EndChangeCheck( ) )
		{
			a_rSerializedSetting.Value = bNewValue;
		}

		EditorGUI.showMixedValue = bSavedShowMixedValue;
	}
	// Slider control for serialized object
	public void SerializedSlider( SerializedSetting<int> a_rSerializedSetting, int a_iMinValue, int a_iMaxValue, string a_rLabel = "" )
	{
		int iNewValue;
		bool bSavedShowMixedValue = EditorGUI.showMixedValue;

		EditorGUI.BeginChangeCheck( );
		{
			EditorGUI.showMixedValue = a_rSerializedSetting.HasMultipleDifferentValues;
			iNewValue = EditorGUILayout.IntSlider( a_rLabel, a_rSerializedSetting.Value, a_iMinValue, a_iMaxValue );
		}

		if( EditorGUI.EndChangeCheck( ) )
		{
			a_rSerializedSetting.Value = iNewValue;
		}

		EditorGUI.showMixedValue = bSavedShowMixedValue;
	}
	////////// Serialized controls //////////

	// Templated object field control for serialized object
	//public void SerializedObjectField<T>( SerializedSetting<T> a_rSerializedSetting, string a_rLabel = "", bool a_bAllowSceneObject = false ) where T : Object
	public void SerializedTexture2DField( SerializedSetting<string> a_rSerializedTextureGUID, string a_rLabel = "", bool a_bAllowSceneObject = false )
	{
		Texture2D rObject;
		
		bool bSavedShowMixedValue = EditorGUI.showMixedValue;

		EditorGUI.BeginChangeCheck( );
		{
			EditorGUI.showMixedValue = a_rSerializedTextureGUID.HasMultipleDifferentValues;
			rObject = Uni2DEditorUtils.GetAssetFromUnityGUID<Texture2D>( a_rSerializedTextureGUID.Value );
			rObject = (Texture2D) EditorGUILayout.ObjectField( a_rLabel, rObject, typeof( Texture2D ), a_bAllowSceneObject );
		}

		if( EditorGUI.EndChangeCheck( ) )
		{
			a_rSerializedTextureGUID.Value = Uni2DEditorUtils.GetUnityAssetGUID( rObject );
		}
			
		EditorGUI.showMixedValue = bSavedShowMixedValue;
	}
	// Templated object field control for serialized object
	//public void SerializedObjectField<T>( SerializedSetting<T> a_rSerializedSetting, string a_rLabel = "", bool a_bAllowSceneObject = false ) where T : Object
	public void SerializedMaterialField(SerializedSetting<Material> a_rSerializedMaterial, string a_rLabel = "")
	{
		Material rObject;
		
		bool bSavedShowMixedValue = EditorGUI.showMixedValue;

		EditorGUI.BeginChangeCheck( );
		{
			EditorGUI.showMixedValue = a_rSerializedMaterial.HasMultipleDifferentValues;
			rObject = (Material) EditorGUILayout.ObjectField( a_rLabel, a_rSerializedMaterial.Value, typeof( Material ), false );
		}

		if( EditorGUI.EndChangeCheck( ) )
		{
			a_rSerializedMaterial.Value = rObject;
		}
			
		EditorGUI.showMixedValue = bSavedShowMixedValue;
	}