Пример #1
0
        private void AssignMaterialToMeshes(ModlEntry modlEntry, Material meshMaterial)
        {
            int    subIndex = 0;
            string prevMesh = "";

            if (RenderModel != null)
            {
                foreach (RMesh mesh in RenderModel.SubMeshes)
                {
                    if (prevMesh.Equals(mesh.Name))
                    {
                        subIndex++;
                    }
                    else
                    {
                        subIndex = 0;
                    }
                    prevMesh = mesh.Name;
                    if (subIndex == modlEntry.SubIndex && mesh.Name.Equals(modlEntry.MeshName))
                    {
                        mesh.Material = meshMaterial;
                        break;
                    }
                }
            }
        }
Пример #2
0
        public static Modl CreateMODLFile(SBUltimateModel model)
        {
            Modl modl = new Modl();

            modl.ModelEntries = new ModlEntry[model.Meshes.Count];
            Dictionary <string, int> subindex = new Dictionary <string, int>();
            int i = 0;

            foreach (var mesh in model.Meshes)
            {
                var entry = new ModlEntry();
                modl.ModelEntries[i++] = entry;

                if (!subindex.ContainsKey(mesh.Name))
                {
                    subindex.Add(mesh.Name, 0);
                }

                entry.MeshName = mesh.Name;
                entry.SubIndex = subindex[mesh.Name];
                if (mesh.Material != null)
                {
                    entry.MaterialLabel = mesh.Material.Label;
                }
                else
                {
                    SBConsole.WriteLine("Warning: Missing material");
                }
                subindex[mesh.Name]++;
                SBConsole.WriteLine($"Creating modl entry: {entry.MeshName} {entry.SubIndex} {entry.MaterialLabel}");
            }

            return(modl);
        }
Пример #3
0
        private void AssignMaterialToMeshes(ModlEntry modlEntry, RMaterial meshMaterial)
        {
            var meshes = RenderModel.SubMeshes.Where(m => m.Name == modlEntry.MeshName && m.SubIndex == modlEntry.SubIndex);

            foreach (var mesh in meshes)
            {
                mesh.Material = meshMaterial;
            }
        }