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; } }
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); } }
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); }