using System; using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; using UnityEngine.UI; using WI; namespace CHN { public class Machine : MonoBehaviour { public string code; public string[] typeOptions; public UI_MachineKPI machineKPI; public Sprite previewImage; public Vector3 centerPos; Renderer[] renderers; Dictionary originMaterials = new(); public Material translucentMat; public override void AfterAwake() { if (!gameObject.activeSelf) return; GetComponentInParent().machines.Add(this); centerPos = transform.GetMeshGroupCenter(); renderers = GetComponentsInChildren(); CachingOriginMat(); translucentMat = Resources.Load("MAT_Translucent"); } void CachingOriginMat() { foreach (Renderer renderer in renderers) { Material[] originMat = renderer.materials; originMaterials.Add(renderer, originMat); } } public void ActivateTranslucent() { foreach (Renderer renderer in renderers) { Material[] newMats = renderer.sharedMaterials; for (int i = 0; i < newMats.Length; i++) { newMats[i] = translucentMat; } renderer.sharedMaterials = newMats; } } public void DeactivateTranslucent() { foreach (Renderer renderer in renderers) { Material[] originMat = originMaterials[renderer]; renderer.sharedMaterials = originMat; } } public int GetMachineFloorIndex() { Transform currentParent = transform.parent; while (currentParent != null) { Floor myFloor = currentParent.GetComponent(); if (myFloor != null) { return myFloor.floorIndex; } currentParent = currentParent.parent; } return 0; } } }