예제 #1
0
    public void UpdateShape(SplatRenderer.WetMap wetMap)
    {
        if (life <= 0)
            return;
        life--;

        for (var i = 0; i < vertices.Length; i++) {
            var x = vertices[i];
            var v = velocities[i];
            var d = (1f - alpha) * motionBias + alpha / Random.Range(1f, 1f + roughness) * v;
            var x1 = (Vector2)x + flow * d + new Vector2(Random.Range(-roughness, roughness), Random.Range(-roughness, roughness));
            var w = wetMap.GetWater((int)x1.x, (int)x1.y);
            if (w > 0)
                vertices[i] = (Vector3)x1;
        }

        #if USE_MESH_DOUBLE_BUFFERING
        var tmpMesh = mesh; mesh = _backbufferMesh; _backbufferMesh = tmpMesh;
        if (_backbufferMesh.vertexCount == vertices.Length) {
            _backbufferMesh.vertices = vertices;
            _backbufferMesh.RecalculateBounds();
        } else {
            UpdateMesh(_backbufferMesh);
        }
        #else
        if (mesh.vertexCount == vertices.Length) {
            mesh.vertices = vertices;
            mesh.RecalculateBounds();
        } else {
            UpdateMesh(mesh);
        }
        #endif
    }
예제 #2
0
 // Use this for initialization
 void Start()
 {
     _selectedBrushfab = brushfabs[0];
     _splatRenderer    = GetComponent <SplatRenderer>();
 }
예제 #3
0
 // Use this for initialization
 void Start()
 {
     _selectedBrushfab = brushfabs[0];
     _splatRenderer = GetComponent<SplatRenderer>();
 }