Exemple #1
0
 public void SetBlock(int x, int y, int z, Wixel block)
 {
     if (InRange(x) && InRange(y) && InRange(z))
     {
         _blocks[x, y, z] = block;
     }
     else
     {
         World.SetBlock(WorldPosition.x + x, WorldPosition.y + y, WorldPosition.z + z, block);
     }
 }
    /// <summary>
    /// Sets the given block at the X/Y/Z chunk coordinates for a chunk.
    /// </summary>
    /// <param name="x">Chunk X coordinate</param>
    /// <param name="y">Chunk Y coordinate</param>
    /// <param name="z">Chunk Z coordinate</param>
    /// <param name="block">Block to set</param>
    /// <param name="chunk">Chunk in which to set the block</param>
    /// <param name="replaceBlocks">Optional; if true, overwrite any block at the current chunk coordinate.</param>
    protected static void SetBlock(int x, int y, int z, Wixel block, WixelChunk chunk, bool replaceBlocks = false)
    {
        x -= chunk.WorldPosition.x;
        y -= chunk.WorldPosition.y;
        z -= chunk.WorldPosition.z;

        bool isInRange = WixelChunk.InRange(x) && WixelChunk.InRange(y) && WixelChunk.InRange(z);

        if (isInRange && (replaceBlocks || chunk.Blocks[x, y, z] == null))
        {
            chunk.SetBlock(x, y, z, block);
        }
    }
    public Wixel GetBlock(RaycastHit hit, bool adjacent = false)
    {
        WixelChunk chunk = hit.collider.GetComponent <WixelChunk>();

        if (chunk == null)
        {
            return(null);
        }

        WorldPosition pos = GetBlockPosition(hit, adjacent);

        Wixel block = chunk.World.GetBlock(pos.x, pos.y, pos.z);

        return(block);
    }
    public bool SetBlock(RaycastHit hit, Wixel block, bool adjacent = false)
    {
        WixelChunk chunk = hit.collider.GetComponent <WixelChunk>();

        if (chunk == null)
        {
            return(false);
        }

        WorldPosition pos = GetBlockPosition(hit, adjacent);

        chunk.World.SetBlock(pos.x, pos.y, pos.z, block);

        return(true);
    }
    public void SetBlock(int x, int y, int z, Wixel block)
    {
        WixelChunk chunk = GetChunk(x, y, z);

        if (chunk == null)
        {
            return;
        }

        chunk.SetBlock(x - chunk.WorldPosition.x, y - chunk.WorldPosition.y, z - chunk.WorldPosition.z, block);
        chunk.PerformUpdates = true;

        UpdateIfEqual(x - chunk.WorldPosition.x, WixelChunk.chunkSize - 1, new WorldPosition(x + 1, y, z));
        UpdateIfEqual(y - chunk.WorldPosition.y, 0, new WorldPosition(x, y - 1, z));
        UpdateIfEqual(y - chunk.WorldPosition.y, WixelChunk.chunkSize - 1, new WorldPosition(x, y + 1, z));
        UpdateIfEqual(z - chunk.WorldPosition.z, 0, new WorldPosition(x, y, z - 1));
        UpdateIfEqual(z - chunk.WorldPosition.z, WixelChunk.chunkSize - 1, new WorldPosition(x, y, z + 1));
    }
    public Wixel GetBlock(int x, int y, int z)
    {
        WixelChunk containerChunk = GetChunk(x, y, z);

        if (containerChunk != null)
        {
            Wixel block = containerChunk.GetBlock(
                x - containerChunk.WorldPosition.x,
                y - containerChunk.WorldPosition.y,
                z - containerChunk.WorldPosition.z
                );

            return(block);
        }
        else
        {
            Wixel airWixel = WixelRepository.GetWixelByName("Air");
            return(airWixel);
        }
    }
Exemple #7
0
    public DefaultChunkGenerator(WixelRepository repository) : base(repository)
    {
        _generationCriteria = new List <WixelGenerationCriteria>
        {
            new WixelGenerationCriteria {
                Condition = CaveCondition, Action = StoneGenerate
            },
            new WixelGenerationCriteria {
                Condition = DirtTreeCondition, Action = DirtTreeGenerate
            },
            new WixelGenerationCriteria {
                Condition = DefaultCondition, Action = AirGenerate
            }
        };

        _air    = _repository.GetWixelByName("Air");
        _stone  = _repository.GetWixelByName("Stone");
        _grass  = _repository.GetWixelByName("Grass");
        _wood   = _repository.GetWixelByName("Wood");
        _leaves = _repository.GetWixelByName("Leaves");
    }