private void OnCalculateCoord1(Vector3 localPosition, Vector3 localCenter, ref Vector2 coord)
    {
        coord.x = Mathf.Atan2(localPosition.x, localPosition.z);
        coord.y = Mathf.Asin(localPosition.y / localPosition.magnitude);

        coord.x = 0.5f - coord.x / (Mathf.PI * 2.0f);
        coord.y = 0.5f + coord.y / Mathf.PI;

        coord = SgtHelper.CartesianToPolarUV(localPosition);

        if (coord.x < 0.001f)
        {
            if (localCenter.x < 0.0f)
            {
                coord.x = 1.0f;
            }
        }
        else if (coord.x > 0.999f)
        {
            if (localCenter.x > 0.0f)
            {
                coord.x = 0.0f;
            }
        }
    }
Ejemplo n.º 2
0
    private void OnCalculateHeight(Vector3 localPosition, ref float height)
    {
        if (Heightmap != null)
        {
            var uv    = SgtHelper.CartesianToPolarUV(localPosition);
            var color = SampleBilinear(uv);

            height += (color.a - 0.5f) * Strength;
        }
    }
Ejemplo n.º 3
0
    public override float GetHeight(Vector3 point)
    {
        if (HeightTex != null)
        {
            var uv = SgtHelper.CartesianToPolarUV(point);

            return(Mathf.Lerp(InnerRadius, OuterRadius, GetHeightTexAlpha(uv)));
        }

        return(1.0f);
    }
Ejemplo n.º 4
0
    // This will return the local terrain height at the given local position
    public float GetSurfaceHeightLocal(Vector3 localPosition)
    {
        if (HeightTex != null)
        {
            var uv       = SgtHelper.CartesianToPolarUV(localPosition);
            var height01 = GetHeightTexAlphaBilinear(uv);

            return(Mathf.Lerp(InnerRadius, OuterRadius, height01));
        }

        return(1.0f);
    }
Ejemplo n.º 5
0
    private void CalculateHeight(SgtVector3D localPosition, ref float height)
    {
        if (Heightmap != null)
        {
            var uv    = SgtHelper.CartesianToPolarUV((Vector3)localPosition);
            var color = SampleBilinear(uv);

            switch (Encoding)
            {
            case EncodingType.Alpha:
            {
                height += Mathf.Lerp(DisplacementMin, DisplacementMax, color.a);
            }
            break;

            case EncodingType.RedGreen:
            {
                height += Mathf.Lerp(DisplacementMin, DisplacementMax, (color.r * 255.0f + color.g) / 256.0f);
            }
            break;
            }
        }
    }