Esempio n. 1
0
    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();
    }
Esempio n. 2
0
    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);
    }
Esempio n. 4
0
 private void Start() => _wavesController = WaterWavesController.Instance;