Beispiel #1
0
 public override void SetRendererCompornent()
 {
     {
         var meshFilter = voxelBase.GetComponent <MeshFilter>();
         if (meshFilter != null)
         {
             Undo.RecordObject(meshFilter, "Inspector");
             meshFilter.sharedMesh = mesh;
         }
     }
     if (voxelBase.updateMaterialTexture)
     {
         if (materials != null)
         {
             for (int i = 0; i < materials.Count; i++)
             {
                 if (materials[i] == null)
                 {
                     continue;
                 }
                 Undo.RecordObject(materials[i], "Inspector");
                 EditorCommon.SetMainTexture(materials[i], atlasTexture);
             }
         }
     }
     if (voxelBase.updateMeshRendererMaterials)
     {
         var renderer = voxelBase.GetComponent <Renderer>();
         Undo.RecordObject(renderer, "Inspector");
         if (materials != null)
         {
             Material[] tmps = new Material[voxelBase.materialIndexes.Count];
             for (int i = 0; i < voxelBase.materialIndexes.Count; i++)
             {
                 tmps[i] = materials[voxelBase.materialIndexes[i]];
             }
             renderer.sharedMaterials = tmps;
         }
         else
         {
             renderer.sharedMaterial = null;
         }
     }
     if (voxelBase.loadFromVoxelFile && voxelBase.materialData != null)
     {
         if (materials != null && materials.Count == voxelBase.materialData.Count)
         {
             for (int i = 0; i < materials.Count; i++)
             {
                 if (materials[i] == null)
                 {
                     continue;
                 }
                 Undo.RecordObject(materials[i], "Inspector");
                 SetMaterialData(materials[i], voxelBase.materialData[i]);
             }
         }
     }
 }
Beispiel #2
0
 public override void SetRendererCompornent()
 {
     if (voxelBase.updateMaterialTexture)
     {
         if (voxelObject.materials != null)
         {
             for (int i = 0; i < voxelObject.materials.Count; i++)
             {
                 if (voxelObject.materials[i] == null)
                 {
                     continue;
                 }
                 Undo.RecordObject(voxelObject.materials[i], "Inspector");
                 EditorCommon.SetMainTexture(voxelObject.materials[i], voxelObject.atlasTexture);
             }
         }
     }
     SetCurrentMesh();
 }
Beispiel #3
0
        public override void SetRendererCompornent()
        {
            var chunkObjects = voxelObject.chunks;

            if (voxelObject.materialMode == VoxelChunksObject.MaterialMode.Combine)
            {
                if (voxelBase.updateMaterialTexture)
                {
                    if (voxelObject.materials != null)
                    {
                        for (int i = 0; i < voxelObject.materials.Count; i++)
                        {
                            if (voxelObject.materials[i] == null)
                            {
                                continue;
                            }
                            Undo.RecordObject(voxelObject.materials[i], "Inspector");
                            EditorCommon.SetMainTexture(voxelObject.materials[i], voxelObject.atlasTexture);
                        }
                    }
                }
                for (int i = 0; i < chunkObjects.Length; i++)
                {
                    if (chunkObjects[i] == null)
                    {
                        continue;
                    }
                    {
                        var meshFilter = chunkObjects[i].GetComponent <MeshFilter>();
                        if (meshFilter != null)
                        {
                            Undo.RecordObject(meshFilter, "Inspector");
                            meshFilter.sharedMesh = chunkObjects[i].mesh;
                        }
                    }
                    if (voxelBase.updateMeshRendererMaterials)
                    {
                        var renderer = chunkObjects[i].GetComponent <Renderer>();
                        Undo.RecordObject(renderer, "Inspector");
                        if (voxelObject.materials != null)
                        {
                            Material[] tmps = new Material[chunkObjects[i].materialIndexes.Count];
                            for (int j = 0; j < chunkObjects[i].materialIndexes.Count; j++)
                            {
                                tmps[j] = voxelObject.materials[chunkObjects[i].materialIndexes[j]];
                            }
                            renderer.sharedMaterials = tmps;
                        }
                        else
                        {
                            renderer.sharedMaterial = null;
                        }
                    }
                    if (voxelBase.loadFromVoxelFile && voxelBase.materialData != null)
                    {
                        if (voxelObject.materials != null && voxelObject.materials.Count == voxelBase.materialData.Count)
                        {
                            for (int j = 0; j < voxelObject.materials.Count; j++)
                            {
                                if (voxelObject.materials[j] == null)
                                {
                                    continue;
                                }
                                Undo.RecordObject(voxelObject.materials[j], "Inspector");
                                SetMaterialData(voxelObject.materials[j], voxelBase.materialData[j]);
                            }
                        }
                    }
                }
            }
            else if (voxelObject.materialMode == VoxelChunksObject.MaterialMode.Individual)
            {
                if (voxelBase.updateMaterialTexture)
                {
                    for (int i = 0; i < chunkObjects.Length; i++)
                    {
                        if (chunkObjects[i].materials != null)
                        {
                            for (int j = 0; j < chunkObjects[i].materials.Count; j++)
                            {
                                if (chunkObjects[i].materials[j] == null)
                                {
                                    continue;
                                }
                                Undo.RecordObject(chunkObjects[i].materials[j], "Inspector");
                                EditorCommon.SetMainTexture(chunkObjects[i].materials[j], chunkObjects[i].atlasTexture);
                            }
                        }
                    }
                }
                for (int i = 0; i < chunkObjects.Length; i++)
                {
                    {
                        var meshFilter = chunkObjects[i].GetComponent <MeshFilter>();
                        if (meshFilter != null)
                        {
                            Undo.RecordObject(meshFilter, "Inspector");
                            meshFilter.sharedMesh = chunkObjects[i].mesh;
                        }
                    }
                    if (voxelBase.updateMeshRendererMaterials)
                    {
                        var renderer = chunkObjects[i].GetComponent <Renderer>();
                        Undo.RecordObject(renderer, "Inspector");
                        if (chunkObjects[i].materials != null)
                        {
                            Material[] tmps = new Material[chunkObjects[i].materialIndexes.Count];
                            for (int j = 0; j < chunkObjects[i].materialIndexes.Count; j++)
                            {
                                tmps[j] = chunkObjects[i].materials[chunkObjects[i].materialIndexes[j]];
                            }
                            renderer.sharedMaterials = tmps;
                        }
                        else
                        {
                            renderer.sharedMaterial = null;
                        }
                    }
                    if (voxelBase.loadFromVoxelFile && voxelBase.materialData != null)
                    {
                        if (chunkObjects[i].materials != null && chunkObjects[i].materials.Count == voxelBase.materialData.Count)
                        {
                            for (int j = 0; j < chunkObjects[i].materials.Count; j++)
                            {
                                if (chunkObjects[i].materials[j] == null)
                                {
                                    continue;
                                }
                                Undo.RecordObject(chunkObjects[i].materials[j], "Inspector");
                                SetMaterialData(chunkObjects[i].materials[j], voxelBase.materialData[j]);
                            }
                        }
                    }
                }
            }
            else
            {
                Assert.IsTrue(false);
            }
        }