Exemplo n.º 1
0
    /// <summary>
    /// Makes a new quadrilateral using v0..3 as vertices in this order:
    ///  1 - - 2
    ///  |   / |
    ///  |  /  |
    ///  0 - - 3
    /// </summary>
    /// <param name="v0">Vertex 0</param>
    /// <param name="v1">Vertex 1</param>
    /// <param name="v2">Vertex 2</param>
    /// <param name="v3">Vertex 3</param>
    /// <param name="blockID">The ID of the block that will set the color of the quad</param>
    void NewQuadrilateral(Vector3 v0, Vector3 v1, Vector3 v2, Vector3 v3, int blockID)
    {
        int xOffset, yOffset;

        Palette.ColorToCoord(IntArrayFromTexture.IntToColor(blockID), out xOffset, out yOffset);

        //Offset is the center of the pixel color on the texture
        Vector2 offset = new Vector2((float)xOffset * _tileWidth + _tileWidth * .5f, (float)yOffset * _tileHeight + _tileHeight * .5f);


        _vertices.Add(v0);
        _vertices.Add(v1);
        _vertices.Add(v2);
        _vertices.Add(v3);

        _meshTris.Add(_quadCounter * 4 + 0);
        _meshTris.Add(_quadCounter * 4 + 1);
        _meshTris.Add(_quadCounter * 4 + 2);
        _meshTris.Add(_quadCounter * 4 + 0);
        _meshTris.Add(_quadCounter * 4 + 2);
        _meshTris.Add(_quadCounter * 4 + 3);


        //uvs coords are really close to "stretch" the texture a lot so only one pixel in the texture
        //is enough to fill any quad with the same color
        _uvs.Add(offset + new Vector2(0, 0));
        _uvs.Add(offset + new Vector2(0, .0000001f));
        _uvs.Add(offset + new Vector2(.0000001f, .0000001f));
        _uvs.Add(offset + new Vector2(.0000001f, 0));


        Vector3 side1  = v1 - v0;
        Vector3 side2  = v3 - v0;
        Vector3 normal = Vector3.Cross(side1, side2).normalized;

        _normals.Add(normal);
        _normals.Add(normal);
        _normals.Add(normal);
        _normals.Add(normal);


        QuadCounter = _quadCounter + 1;
    }
Exemplo n.º 2
0
 void SelectColor(Color color)
 {
     _previewImage.color    = color;
     paintingBlockID        = IntArrayFromTexture.ColorToInt(color);
     _colorDetailsText.text = IntArrayFromTexture.IntToColor(paintingBlockID).ToString() + "\t\tint(" + paintingBlockID.ToString() + ")";
 }