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