86 lines
2.2 KiB
C#
86 lines
2.2 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using PixelCrushers;
|
|
using Sirenix.OdinInspector;
|
|
using UnityEngine;
|
|
|
|
namespace Beyond
|
|
{
|
|
|
|
public class MaterialValueChanger : Saver
|
|
{
|
|
public Renderer m_renderer;
|
|
|
|
public enum ValueType
|
|
{
|
|
COLOR,
|
|
FLOAT,
|
|
FLOAT3,
|
|
}
|
|
[Serializable]
|
|
public struct VariableDesc
|
|
{
|
|
public string variableName;
|
|
public ValueType type;
|
|
public float floatValue;
|
|
public Vector3 float3Value;
|
|
[ColorUsageAttribute(true, true, 0f, 8f, 0.125f, 3f)]
|
|
public Color color;
|
|
}
|
|
|
|
public VariableDesc[] m_valuesToChange;
|
|
public int m_setOnStart = -1;
|
|
private int m_setId = -1;
|
|
|
|
private void OnEnable()
|
|
{
|
|
if (m_setOnStart >= 0)
|
|
ChangeValue(m_setOnStart);
|
|
}
|
|
|
|
public override string RecordData()
|
|
{
|
|
return SaveSystem.Serialize(m_setId);
|
|
}
|
|
|
|
public override void ApplyData(string s)
|
|
{
|
|
if (String.IsNullOrEmpty(s))
|
|
return;
|
|
m_setId = SaveSystem.Deserialize<int>(s);
|
|
ChangeValue(m_setId);
|
|
}
|
|
|
|
[Button]
|
|
public void ChangeValue(int changeNum)
|
|
{
|
|
if (m_renderer == null)
|
|
{
|
|
Debug.LogError("renderer is not set!", this);
|
|
return;
|
|
}
|
|
|
|
if (changeNum < 0 || changeNum >= m_valuesToChange.Length)
|
|
{
|
|
Debug.LogError("Index out of range!", this);
|
|
return;
|
|
}
|
|
|
|
var vd = m_valuesToChange[changeNum];
|
|
m_setId = changeNum;
|
|
switch (vd.type)
|
|
{
|
|
case ValueType.COLOR:
|
|
m_renderer.material.SetColor(vd.variableName, vd.color);
|
|
break;
|
|
case ValueType.FLOAT:
|
|
m_renderer.material.SetFloat(vd.variableName, vd.floatValue);
|
|
break;
|
|
case ValueType.FLOAT3:
|
|
m_renderer.material.SetVector(vd.variableName, vd.float3Value);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
} |