public void AddTrile(TrileInstance trile) { if (LevelManager.TrileExists(trile.Emplacement)) { TrileEmplacement emplacement = trile.Emplacement; LevelMaterializer.RemoveInstance(LevelManager.TrileInstanceAt(ref emplacement)); } if (LevelManager.Triles.ContainsKey(trile.Emplacement)) { //TODO investigate: Probably an empty trile. LevelManager.Triles.Remove(trile.Emplacement); } trile.Update(); trile.OriginalEmplacement = trile.Emplacement; trile.RefreshTrile(); LevelMaterializer.AddInstance(trile); LevelManager.Triles.Add(trile.Emplacement, trile); trile.Removed = false; if (LevelMaterializer.GetTrileMaterializer(trile.Trile) == null) { LevelMaterializer.RebuildTrile(trile.Trile); LevelMaterializer.RebuildInstances(); } LevelManager.RecullAt(trile); trile.PhysicsState.UpdateInstance(); LevelMaterializer.UpdateInstance(trile); if (LevelManager.Triles.Count == 1) { PlayerManager.CheckpointGround = trile; PlayerManager.RespawnAtCheckpoint(); } CameraManager.RebuildView(); if (CameraManager is DefaultCameraManager) { ((DefaultCameraManager) CameraManager).RebuildProjection(); } }
public void AddInstance(TrileInstance instance) { if (instance.TrileId == -1 || this.LevelManager.TrileSet == null || !this.LevelManager.TrileSet.Triles.ContainsKey(instance.TrileId)) { instance.TrileId = -1; instance.RefreshTrile(); this.fallbackMaterializer.Trile.Instances.Add(instance); } else instance.VisualTrile.Instances.Add(instance); }