public void UpdateModels() { updateModelsCalled = true; var meshCount = Meshes != null ? Meshes.Count : 0; for (var i = 0; i < meshCount; i++) { var mesh = Meshes[i]; var model = GetOrAddModel(i); model.SetMesh(mesh); model.SetMaterial(Material); } // Remove any excess if (Models != null) { for (var i = Models.Count - 1; i >= meshCount; i--) { SgtSkysphereModel.Pool(Models[i]); Models.RemoveAt(i); } } }
private SgtSkysphereModel GetOrAddModel(int index) { var model = default(SgtSkysphereModel); if (Models == null) { Models = new List <SgtSkysphereModel>(); } if (index < Models.Count) { model = Models[index]; if (model == null) { model = SgtSkysphereModel.Create(this); Models[index] = model; } } else { model = SgtSkysphereModel.Create(this); Models.Add(model); } return(model); }
public static void Pool(SgtSkysphereModel model) { if (model != null) { model.Skysphere = null; SgtComponentPool<SgtSkysphereModel>.Add(model); } }
public static void MarkForDestruction(SgtSkysphereModel model) { if (model != null) { model.Skysphere = null; model.gameObject.SetActive(true); } }
public static void Pool(SgtSkysphereModel model) { if (model != null) { model.Skysphere = null; SgtComponentPool <SgtSkysphereModel> .Add(model); } }
protected virtual void OnDestroy() { SgtHelper.Destroy(material); for (var i = models.Count - 1; i >= 0; i--) { SgtSkysphereModel.MarkForDestruction(models[i]); } models.Clear(); }
protected virtual void OnDestroy() { if (Models != null) { for (var i = Models.Count - 1; i >= 0; i--) { SgtSkysphereModel.MarkForDestruction(Models[i]); } } SgtHelper.Destroy(Material); }
private void UpdateModels() { models.RemoveAll(m => m == null); if (Meshes.Count != models.Count) { SgtHelper.ResizeArrayTo(ref models, Meshes.Count, i => SgtSkysphereModel.Create(this), m => SgtSkysphereModel.Pool(m)); } for (var i = Meshes.Count - 1; i >= 0; i--) { models[i].ManualUpdate(Meshes[i], material); } }