private SgtAtmosphereOuter GetOrAddOuter(int index) { var outer = default(SgtAtmosphereOuter); if (Outers == null) { Outers = new List <SgtAtmosphereOuter>(); } if (index < Outers.Count) { outer = Outers[index]; if (outer == null) { outer = SgtAtmosphereOuter.Create(this); Outers[index] = outer; } } else { outer = SgtAtmosphereOuter.Create(this); Outers.Add(outer); } return(outer); }
public void UpdateOuters() { updateOutersCalled = true; var meshCount = OuterMeshes != null ? OuterMeshes.Count : 0; var outerScale = SgtHelper.Divide(OuterRadius, OuterMeshRadius); for (var i = 0; i < meshCount; i++) { var outerMesh = OuterMeshes[i]; var outer = GetOrAddOuter(i); outer.SetMesh(outerMesh); outer.SetMaterial(OuterMaterial); outer.SetScale(outerScale); } // Remove any excess if (Outers != null) { for (var i = Outers.Count - 1; i >= meshCount; i--) { var outer = Outers[i]; if (outer != null) { SgtAtmosphereOuter.Pool(outer); } Outers.RemoveAt(i); } } }
public static void MarkForDestruction(SgtAtmosphereOuter outer) { if (outer != null) { outer.Atmosphere = null; outer.gameObject.SetActive(true); } }
public static void Pool(SgtAtmosphereOuter outer) { if (outer != null) { outer.Atmosphere = null; SgtComponentPool <SgtAtmosphereOuter> .Add(outer); } }
protected virtual void OnDestroy() { if (Outers != null) { for (var i = Outers.Count - 1; i >= 0; i--) { SgtAtmosphereOuter.MarkForDestruction(Outers[i]); } } SgtHelper.Destroy(OuterMaterial); SgtHelper.Destroy(InnerMaterial); }