Ejemplo n.º 1
0
        private void FlushBlockSet(ChunkSubspacePosition position, BlockDefinition definition,
                                   BlockDefinition prevDefinition)
        {
            if (prevDefinition.IsTransparent() != definition.IsTransparent())
            {
                PushTransparencyCacheToAdjacentBlocks(position, definition.IsTransparent());
            }

            MarkForMeshUpdate();

            if (definition.IsLightEmitter())
            {
                BlockLight light;
                light.chunk           = this;
                light.chunkPosition   = position;
                light.blockDefinition = definition;
                lights.Add(light);
            }
        }
Ejemplo n.º 2
0
        private void FlushBlockRemoval(ChunkSubspacePosition position, BlockDefinition definition,
                                       BlockDefinition prevDefinition)
        {
            PushTransparencyCacheToAdjacentBlocks(position, definition.IsTransparent());

            if (prevDefinition.IsLightEmitter())
            {
                BlockLight light;
                light.chunk           = this;
                light.chunkPosition   = position;
                light.blockDefinition = prevDefinition;
                lights.Remove(light);
            }

            needsMeshUpdate = true;
        }