Esempio n. 1
0
    /// <summary>
    /// Creates a river quad and adds uvs to it.
    /// Height1 is applied to v1 and v2 vectors and height2 is applied to v3 and v4 vectors.
    /// Therefore vector original y values are ignored.
    /// </summary>
    void TriangulateRiverQuadUnperturbed(Vector3 v1, Vector3 v2, Vector3 v3, Vector3 v4, float height1, float height2, float uv, bool reversed)
    {
        v1.y = v2.y = height1;
        v3.y = v4.y = height2;
        Rivers.AddQuadUnperturbed(v1, v2, v3, v4);

        if (reversed)
        {
            Rivers.AddQuadUV(1f, 0f, 0.8f - uv, 0.6f - uv);
        }
        else
        {
            Rivers.AddQuadUV(0f, 1f, uv, uv + 0.2f);
        }
    }
Esempio n. 2
0
    void TriangulateWaterfallInWater(Vector3 v1, Vector3 v2, Vector3 v3, Vector3 v4, float y1, float y2, float waterY)
    {
        v1.y = v2.y = y1;
        v3.y = v4.y = y2;

        v1 = HexMetrics.Perturb(v1);
        v2 = HexMetrics.Perturb(v2);
        v3 = HexMetrics.Perturb(v3);
        v4 = HexMetrics.Perturb(v4);
        float t = (waterY - y2) / (y1 - y2);

        v3 = Vector3.Lerp(v3, v1, t);
        v4 = Vector3.Lerp(v4, v2, t);

        Rivers.AddQuadUnperturbed(v1, v2, v3, v4);
        Rivers.AddQuadUV(0f, 1f, 0.8f, 1f);
    }
    /// <summary>
    /// Create geometry for a river than flows in a waterfall unto the water surface,
    /// parameter orientation is aligned with river, looking downstream, left & right start vertex,
    /// left and right end vertex, cell start height, cell end height and water (where waterfall ends) height.
    /// </summary>
    void TriangulateWaterfallInWater(Vector3 v1, Vector3 v2, Vector3 v3, Vector3 v4, float y1, float y2, float waterY, Vector3 indices)
    {
        v1.y = v2.y = y1;
        v3.y = v4.y = y2;

        // Perturn vertices before interpolating
        // If we didnt do this and did it afterwards when creating the quad then we would loose
        // the results we will calculate with our interpolation bellow
        v1 = HexMetrics.Perturb(v1);
        v2 = HexMetrics.Perturb(v2);
        v3 = HexMetrics.Perturb(v3);
        v4 = HexMetrics.Perturb(v4);

        float t = (waterY - y2) / (y1 - y2);         // calculate interpolator

        v3 = Vector3.Lerp(v3, v1, t);
        v4 = Vector3.Lerp(v4, v2, t);

        // Create unperturbed quad, we already perturbed the vertices
        Rivers.AddQuadUnperturbed(v1, v2, v3, v4);
        Rivers.AddQuadUV(0f, 1f, 0.8f, 1f);

        Rivers.AddQuadCellData(indices, weights1, weights2);
    }