public static void SetRendererShow(int id, bool show) { if (!CheckID(id)) { return; } Transform trans = GetTransform(id); if (!trans) { return; } GoObj obj = goList[id]; if (obj.rendererArr != null) { for (int i = 0, count = obj.rendererArr.Length; i < count; i++) { obj.rendererArr[i].enabled = show; } } else if (obj.smrArr != null) { for (int i = 0, count = obj.smrArr.Length; i < count; i++) { obj.smrArr[i].enabled = show; } } }
public static void SetToStatic(int id) { GameObject go = GetGameObject(id); if (!go) { return; } GoObj obj = goList[id]; obj.temp = false; goList[id] = obj; Object.DontDestroyOnLoad(go); }
public static void Destroy(int id) { if (id < 0 || id >= goActive.Count) { return; } if (goActive[id] == DEACTIVE) { return; } goActive[id] = DEACTIVE; indexIdle.Enqueue(id); GoObj go = goList[id]; if (go.go) { Object.Destroy(go.go); } }
public static void StoreMeshRenderer(int id, bool force) { if (!CheckID(id)) { return; } Transform trans = GetTransform(id); if (!trans) { return; } GoObj obj = goList[id]; if (obj.rendererArr == null || force) { MeshRenderer[] arr = obj.go.GetComponentsInChildren <MeshRenderer>(); obj.rendererArr = arr; goList[id] = obj; } }
// 0:off 1:on 2:two side 3:shadow only public static void SetCastShadow(int id, int castShadow) { if (!CheckID(id)) { return; } if (castShadow < 0 || castShadow > 3) { return; } Transform trans = GetTransform(id); if (!trans) { return; } UnityEngine.Rendering.ShadowCastingMode mode = (UnityEngine.Rendering.ShadowCastingMode)castShadow; GoObj obj = goList[id]; if (obj.rendererArr != null) { for (int i = 0, count = obj.rendererArr.Length; i < count; i++) { obj.rendererArr[i].shadowCastingMode = mode; } } else if (obj.smrArr != null) { for (int i = 0, count = obj.smrArr.Length; i < count; i++) { obj.smrArr[i].shadowCastingMode = mode; } } }
public static int RegisterGameObject(GameObject go, bool temp) { if (go == null) { return(-1); } int index = -1; if (indexIdle.Count > 0) { index = indexIdle.Dequeue(); } GoObj obj = new GoObj(); obj.go = go; obj.trans = go.transform; obj.smrArr = null; obj.rendererArr = null; obj.temp = temp; if (index < 0) { index = goList.Count; goList.Add(obj); goActive.Add(ACTIVE); } else { goList[index] = obj; goActive[index] = ACTIVE; } return(index); }