EscapeShooter/My project/Assets/Project Files/Game/Scripts/Enemy/EliteCase.cs

63 lines
2.0 KiB
C#

using System.Collections.Generic;
using UnityEngine;
namespace Watermelon.SquadShooter
{
[System.Serializable]
public class EliteCase
{
public List<MeshPair> pairs;
public List<SimpleMeshPair> simplePairs;
public void SetElite()
{
pairs?.ForEach((pair) => pair.renderer.sharedMesh = pair.eliteMesh);
simplePairs?.ForEach((pair) => pair.filter.mesh = pair.eliteMesh);
}
public void SetRegular()
{
pairs?.ForEach((pair) => pair.renderer.sharedMesh = pair.simpleMesh);
simplePairs?.ForEach((pair) => pair.filter.mesh = pair.simpleMesh);
}
public void Validate()
{
for (int i = 0; i < pairs.Count; i++)
{
if (pairs[i].renderer == null || pairs[i].simpleMesh == null || pairs[i].eliteMesh == null)
{
Debug.LogError("[Enemy Behavior] Elite enemy case is not properly configured. Please check if all references are assigned on enemy script field Elite Case.");
pairs.RemoveAt(i);
i--;
}
}
for (int i = 0; i < simplePairs.Count; i++)
{
if (simplePairs[i].filter == null || simplePairs[i].simpleMesh == null || simplePairs[i].eliteMesh == null)
{
Debug.LogError("[Enemy Behavior] Elite enemy case is not properly configured. Please check if all references are assigned on enemy script field Elite Case.");
simplePairs.RemoveAt(i);
i--;
}
}
}
[System.Serializable]
public struct MeshPair
{
public SkinnedMeshRenderer renderer;
public Mesh simpleMesh;
public Mesh eliteMesh;
}
[System.Serializable]
public struct SimpleMeshPair
{
public MeshFilter filter;
public Mesh simpleMesh;
public Mesh eliteMesh;
}
}
}