Example #1
0
        public void LoadModels()
        {
            DirectoryInfo Folder = new DirectoryInfo(ModelLocation);

            if (Folder.Exists)
            {
                FileInfo[] ConfigFiles = Folder.GetFiles();

                foreach (FileInfo CurrentFile in ConfigFiles)
                {
                    if (CurrentFile.Extension.Equals(".obj"))
                    {
                        string        Name     = CurrentFile.Name.Remove(CurrentFile.Name.Length - 4, 4);
                        GeometryModel NewModel = ModelUtil.ImportOBJModel(CurrentFile.FullName);

                        string[] ModelMaterialData = GetModelMaterialData(Name);

                        if (ModelMaterialData.Length != 0)
                        {
                            for (int i = 0; i < ModelMaterialData.Length; i++)
                            {
                                if (ModelMaterialData[i].Length == 0 || ModelMaterialData[i].StartsWith("//") || ModelMaterialData[i].StartsWith("#"))
                                {
                                    continue;
                                }
                                string Key   = ModelMaterialData[i].Split(new char[] { ':' })[0].Trim();
                                string Value = ModelMaterialData[i].Split(new char[] { ':' })[1].Trim();

                                if (Key.ToLower().StartsWith("shader"))
                                {
                                    if (Shaders.ContainsKey(Value))
                                    {
                                        NewModel.Shader = Shaders[Value].Clone();
                                    }
                                }
                                if (Key.ToLower().StartsWith("depthshader"))
                                {
                                    if (Shaders.ContainsKey(Value))
                                    {
                                        NewModel.DepthShader = Shaders[Value].Clone();
                                    }
                                }
                                else
                                {
                                    if (Textures.ContainsKey(Value))
                                    {
                                        NewModel.AddTexture(Key, Value);
                                    }
                                }
                            }


                            if (NewModel.Shader == null || NewModel.DepthShader == null)
                            {
                                continue;
                            }
                            //Debug.WriteLine(Name);
                            NewModel.Name = Name;
                            Models.Add(Name, NewModel);
                        }
                    }
                }
            }
        }