示例#1
0
    void Awake()
    {
        GameObject go = new GameObject("vignetting");

        go.transform.parent = transform;
        go.layer            = LayerMask.NameToLayer("Player");

        MeshFilter meshFilter = go.AddComponent <MeshFilter>();
        Mesh       mesh       = MeshEx.CreateQuad();

        Camera cam = gameObject.camera;

        Vector3 camPointA = cam.ScreenToWorldPoint(new Vector3(0.0f, 0.0f, 1.0f));
        Vector3 camPointB = cam.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height, 1.0f));

        Vector2 vignetteScale = new Vector2(camPointB.x - camPointA.x, camPointB.z - camPointA.z);

        //MeshEx.TransformMesh( mesh, Vector3.zero, Quaternion.identity, new Vector3( vignetteScale.x, vignetteScale.y, 1.0f) );
        meshFilter.mesh = mesh;

        go.transform.localPosition = transform.InverseTransformPoint(camPointA);
        go.transform.localScale    = new Vector3(vignetteScale.x, 1.0f, vignetteScale.y);

        go.AddComponent <MeshRenderer>();
        go.renderer.material = vignetteMat;
    }
示例#2
0
    void UpdateLayerCollider(MeshCollider obj, int index, MeshParams <WorldVertexDefinition> meshParams)
    {
        var data = meshParams.GetColliderMesh(index);

        var mesh = obj.sharedMesh;

        MeshEx.SetColliderMeshParams(mesh, data.verticesSize, data.indexesSize);

        mesh.SetVertexBufferData(data.vertices, 0, 0, data.verticesSize);
        mesh.SetIndexBufferData(data.indexes, 0, 0, data.indexesSize);

        mesh.subMeshCount = 1;
        mesh.SetSubMesh(0, new UnityEngine.Rendering.SubMeshDescriptor(0, data.indexesSize, MeshTopology.Triangles));

        //full chunk layer
        mesh.bounds = new Bounds(new Vector3(Chunk.chunkSize, Chunk.chunkSize, Chunk.chunkSize) / 2, new Vector3(Chunk.chunkSize, Chunk.chunkSize, Chunk.chunkSize));
    }
示例#3
0
    void UpdateLayerObject(LayerObject obj, Material material, int index, MeshParams <WorldVertexDefinition> meshParams)
    {
        var data = meshParams.GetMesh(material, index);

        obj.meshRenderer.material = material;

        var mesh = obj.meshFilter.mesh;

        MeshEx.SetWorldMeshParams(mesh, data.verticesSize, data.indexesSize);

        mesh.SetVertexBufferData(data.vertices, 0, 0, data.verticesSize);
        mesh.SetIndexBufferData(data.indexes, 0, 0, data.indexesSize);

        mesh.subMeshCount = 1;
        mesh.SetSubMesh(0, new UnityEngine.Rendering.SubMeshDescriptor(0, data.indexesSize, MeshTopology.Triangles));

        //full chunk layer
        mesh.bounds = new Bounds(new Vector3(Chunk.chunkSize, Chunk.chunkSize, Chunk.chunkSize) / 2, new Vector3(Chunk.chunkSize, Chunk.chunkSize, Chunk.chunkSize));
    }