Beispiel #1
0
 void VoxelListener_OnVoxelDestroyed(LocalVoxelCoordinate voxelID)
 {
     if (Voxel.IsValid && Voxel.Coordinate == (Voxel.Chunk.ID + voxelID))
     {
         GetRoot().Die();
     }
 }
Beispiel #2
0
 private VoxelHandle(VoxelChunk Chunk, LocalVoxelCoordinate Coordinate)
 {
     this.Coordinate     = Chunk.ID + Coordinate;
     this._cache_Chunk   = Chunk;
     this._cache_Index   = VoxelConstants.DataIndexOf(Coordinate);
     this._cache_Local_Y = Coordinate.Y;
 }
Beispiel #3
0
 public void NotifyDestroyed(LocalVoxelCoordinate voxel)
 {
     if (OnVoxelDestroyed != null)
     {
         OnVoxelDestroyed.Invoke(voxel);
     }
 }
Beispiel #4
0
 public void NotifyExplored(LocalVoxelCoordinate voxel)
 {
     if (OnVoxelExplored != null)
     {
         OnVoxelExplored.Invoke(voxel);
     }
 }
Beispiel #5
0
 void ExploredListener_OnVoxelExplored(LocalVoxelCoordinate voxelID)
 {
     if (voxelID == VoxelID)
     {
         Delete();
         EntityFactory.CreateEntity <GameComponent>(EntityToSpawn, SpawnLocation, BlackboardData);
     }
 }
Beispiel #6
0
 public ExploredListener(ComponentManager manager, ChunkManager chunkManager, VoxelHandle vref) :
     base("ExploredListener", manager)
 {
     Chunk   = vref.Chunk;
     VoxelID = vref.Coordinate.GetLocalVoxelCoordinate();
     Chunk.OnVoxelExplored += ExploredListener_OnVoxelExplored;
     ChunkID = Chunk.ID;
 }
Beispiel #7
0
 void ExploredListener_OnVoxelExplored(LocalVoxelCoordinate voxelID)
 {
     if (voxelID == VoxelID)
     {
         GetRoot().SetFlagRecursive(Flag.Active, true);
         GetRoot().SetFlagRecursive(Flag.Visible, true);
         Delete();
     }
 }
Beispiel #8
0
 public void CalculateInitialSunlight()
 {
     for (int x = 0; x < VoxelConstants.ChunkSizeX; x++)
     {
         for (int z = 0; z < VoxelConstants.ChunkSizeZ; z++)
         {
             for (int y = VoxelConstants.ChunkSizeY - 1; y >= 0; y--)
             {
                 LocalVoxelCoordinate coord = new LocalVoxelCoordinate(x, y, z);
                 VoxelHandle          voxel = new VoxelHandle(this, coord)
                 {
                     Sunlight = true
                 };
                 if (!voxel.IsEmpty && !voxel.Type.IsTransparent)
                 {
                     break;
                 }
             }
         }
     }
 }
Beispiel #9
0
 public static Int32 DataIndexOf(LocalVoxelCoordinate C)
 {
     return((C.Y * ChunkSizeX * ChunkSizeZ) + (C.Z * ChunkSizeX) + C.X);
 }
Beispiel #10
0
 public static VoxelHandle UnsafeCreateLocalHandle(VoxelChunk Chunk, LocalVoxelCoordinate Coordinate)
 {
     return(new VoxelHandle(Chunk, Coordinate));
 }
Beispiel #11
0
 public GlobalVoxelCoordinate(GlobalChunkCoordinate C, LocalVoxelCoordinate L)
 {
     X = (C.X * VoxelConstants.ChunkSizeX) + L.X;
     Y = (C.Y * VoxelConstants.ChunkSizeY) + L.Y;
     Z = (C.Z * VoxelConstants.ChunkSizeZ) + L.Z;
 }