void VoxelListener_OnVoxelDestroyed(LocalVoxelCoordinate voxelID) { if (Voxel.IsValid && Voxel.Coordinate == (Voxel.Chunk.ID + voxelID)) { GetRoot().Die(); } }
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; }
public void NotifyDestroyed(LocalVoxelCoordinate voxel) { if (OnVoxelDestroyed != null) { OnVoxelDestroyed.Invoke(voxel); } }
public void NotifyExplored(LocalVoxelCoordinate voxel) { if (OnVoxelExplored != null) { OnVoxelExplored.Invoke(voxel); } }
void ExploredListener_OnVoxelExplored(LocalVoxelCoordinate voxelID) { if (voxelID == VoxelID) { Delete(); EntityFactory.CreateEntity <GameComponent>(EntityToSpawn, SpawnLocation, BlackboardData); } }
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; }
void ExploredListener_OnVoxelExplored(LocalVoxelCoordinate voxelID) { if (voxelID == VoxelID) { GetRoot().SetFlagRecursive(Flag.Active, true); GetRoot().SetFlagRecursive(Flag.Visible, true); Delete(); } }
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; } } } } }
public static Int32 DataIndexOf(LocalVoxelCoordinate C) { return((C.Y * ChunkSizeX * ChunkSizeZ) + (C.Z * ChunkSizeX) + C.X); }
public static VoxelHandle UnsafeCreateLocalHandle(VoxelChunk Chunk, LocalVoxelCoordinate Coordinate) { return(new VoxelHandle(Chunk, Coordinate)); }
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; }