private static void Build_(MeshBuilder builder, Decal decal) { var objects = DecalUtils.GetAffectedObjects(decal); var terrains = DecalUtils.GetAffectedTerrains(decal); var bounds = DecalUtils.GetBounds(decal); var worldToDecalMatrix = decal.transform.worldToLocalMatrix; var triangles1 = MeshUtils.GetTriangles(objects, worldToDecalMatrix).Where(i => Filter(i, decal)); var triangles2 = TerrainUtils.GetTriangles(terrains, bounds, worldToDecalMatrix).Where(i => Filter(i, decal)); AddTriangles(builder, triangles1); AddTriangles(builder, triangles2); }
void OnDrawGizmosSelected() { Gizmos.matrix = transform.localToWorldMatrix; Gizmos.color = Color.green; Gizmos.DrawWireCube(Vector3.zero, Vector3.one); var bounds = DecalUtils.GetBounds(this); Gizmos.matrix = Matrix4x4.identity; Gizmos.color = Color.white; Gizmos.DrawWireCube(bounds.center, bounds.size + Vector3.one * 0.01f); //Gizmos.matrix = transform.localToWorldMatrix; //Gizmos.color = Color.yellow; //var mesh = MeshFilter.sharedMesh; //if (mesh) { // var vertices = mesh.vertices; // var normals = mesh.normals; // for (var i = 0; i < vertices.Length; i++) { // Gizmos.DrawRay( vertices[ i ], normals[ i ] * 0.15f ); // } //} }