示例#1
0
        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();
            }
        }
示例#2
0
 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);
 }