private void Awake() { if (Instance != null) { Debug.LogError("There is another WaterWavesController on the scene"); } Instance = this; _wavesDirection = new Vector2(Mathf.Cos(_wavesDirectionInDegrees * Mathf.Deg2Rad), Mathf.Sin(_wavesDirectionInDegrees * Mathf.Deg2Rad)); _wavesDirection.Normalize(); }
public Mesh UpdateMesh(WaterWavesController wavesController, float xOffset, float zOffset) { for (int i = 0; i < _vertexCount; i++) { Vector3 vert = _vertices[i]; vert.y = wavesController.GetHeightAtPosition(vert.x + xOffset, vert.z + zOffset); _vertices[i] = vert; } _mesh.SetVertices(_vertices); _mesh.RecalculateNormals(); return(_mesh); }
// Editor function public void GenerateWavesPreview(WaterWavesController controller) { MeshFilter filter = GetComponent <MeshFilter>(); if (filter == null) { Debug.LogError($"There is no MeshFilter attached to the {name}."); return; } MeshData meshData = new MeshData(_templateMesh); float xOffset = _appendPosition ? transform.position.x : 0; float zOffset = _appendPosition ? transform.position.z : 0; filter.sharedMesh = meshData.UpdateMesh(controller, xOffset, zOffset); }
private void Start() => _wavesController = WaterWavesController.Instance;