void PlaceMarkerCube(ref GameObject marker, Vector3 query)
    {
        if (marker == null)
        {
            marker = GameObject.CreatePrimitive(PrimitiveType.Cube);
            Destroy(marker.GetComponent <Collider>());
        }

        query.y = 0f;

        var rect = new Rect(query.x - 0.5f, query.z - 0.5f, 1f, 1f);
        int lod  = OceanRenderer.SuggestCollisionLOD(rect);

        if (lod > -1)
        {
            var disp = Vector3.zero;
            if (OceanRenderer.Instance.Builder._shapeWDCs[lod].SampleDisplacement(ref query, ref disp))
            {
                Debug.DrawLine(query, query + disp);
                marker.transform.position = query + disp;
            }
        }
        else
        {
            marker.transform.position = query;
        }
    }
Пример #2
0
    void Update()
    {
        float scale = transform.lossyScale.x;

        var rect = new Rect(transform.position.x - scale / 2f, transform.position.z - scale / 2f, scale, scale);
        int lod  = OceanRenderer.SuggestCollisionLOD(rect);

        if (lod > -1)
        {
            var pos    = transform.position;
            var height = OceanRenderer.Instance.Builder._shapeWDCs[lod].GetHeight(ref pos);
            transform.position += Vector3.up * (height - pos.y);
        }
    }
Пример #3
0
        public bool Validate(OceanRenderer ocean, ValidatedHelper.ShowMessage showMessage)
        {
            var isValid = true;

            if (TryGetComponent <Spline.Spline>(out var spline) && !spline.Validate(ocean, ValidatedHelper.Suppressed))
            {
                showMessage
                (
                    "A <i>Spline</i> component is attached but it has validation errors.",
                    "Check this component in the Inspector for issues.",
                    ValidatedHelper.MessageType.Error, this
                );
            }

            return(isValid);
        }