Files
2026-02-21 16:45:37 +08:00

94 lines
1.9 KiB
C#

using System;
using System.Collections.Generic;
using UnityEngine;
[Serializable]
public class material_class
{
public bool active;
public bool foldout;
public List<Material> material;
public List<int> combine_count;
public List<GameObject> combine_parent;
public value_class material_value;
public material_class()
{
material = new List<Material>();
combine_count = new List<int>();
combine_parent = new List<GameObject>();
material_value = new value_class();
add_material(0);
}
public virtual int set_material(GameObject @object, int material_number)
{
MeshRenderer meshRenderer = (MeshRenderer)@object.GetComponent(typeof(MeshRenderer));
float time = UnityEngine.Random.Range(0f, 1f);
material_number = Mathf.FloorToInt(material_value.curve.Evaluate(time) * (float)material.Count);
if (material_number > material.Count - 1)
{
material_number = material.Count - 1;
}
int result;
if ((bool)material[material_number])
{
if ((bool)meshRenderer)
{
if (meshRenderer.sharedMaterials.Length == 0)
{
result = 0;
}
else
{
meshRenderer.sharedMaterial = material[material_number];
result = material_number;
}
}
else
{
result = 0;
}
}
else
{
result = 0;
}
return result;
}
public virtual void add_material(int index)
{
Material item = null;
GameObject item2 = null;
material.Insert(index, item);
material_value.add_value(index, 50f);
combine_count.Insert(index, 0);
combine_parent.Insert(index, item2);
}
public virtual void erase_material(int index)
{
if (material.Count > 0)
{
material.RemoveAt(index);
material_value.erase_value(index);
combine_count.RemoveAt(index);
combine_parent.RemoveAt(index);
}
}
public virtual void clear_material()
{
material.Clear();
material_value.clear_value();
combine_count.Clear();
combine_parent.Clear();
}
}