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