//--------------------------------------------------------------------------------------------------------------------------------------------------- // // Copyright (C)2007 DarkWynter Studios. All rights reserved. // //--------------------------------------------------------------------------------------------------------------------------------------------------- // {License Information: Creative Commons} //--------------------------------------------------------------------------------------------------------------------------------------------------- namespace ElementalGame { #region Using Statements using System; using System.Collections.Generic; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Storage; using System.Xml; #endregion public struct ModelInfo { public string subTypeName; public Texture2D currentTexture; public Texture2D bumpTexture; public float[] materialDiffuse; public float[] materialSpecular; public Model model; } public class ModelManager { private List modelInfoList; private ModelInfo newModelInfo; public ModelManager() { } public void LoadGame() { modelInfoList = new List(); } public void LoadLevel() { } public ModelInfo GetModelInfo(string modelName) { foreach (ModelInfo modelInfo in modelInfoList) { if (modelInfo.subTypeName == modelName) { return modelInfo; } } return new ModelInfo(); } // Not sure if this is needed but still adding it just in case public void LoadXML(ContentManager content, XmlNode node) { } public bool CheckIfWeHaveANewModel(string newModelName) { // Check to make sure that this model hasn't already been loaded foreach (ModelInfo modelInfo in modelInfoList) { if (modelInfo.subTypeName == newModelName) { return false; } } return true; } public void AddNewModel(string newModelName, Model newModel, Texture2D newTexture, Texture2D newBumpTexture, Effect newEffect, float[] materialDiffuse, float[] materialSpecular) { // Its a new Model, so lets load it newModelInfo = new ModelInfo(); newModelInfo.subTypeName = newModelName; newModelInfo.currentTexture = newTexture; newModelInfo.bumpTexture = newBumpTexture; newModelInfo.model = newModel; newModelInfo.materialDiffuse = materialDiffuse; newModelInfo.materialSpecular = materialSpecular; // Apply our own advanced Effect to the Model foreach (ModelMesh mesh in newModelInfo.model.Meshes) { for (int i = 0; i < mesh.MeshParts.Count; i++) { // Add effect to mesh mesh.MeshParts[i].Effect = newEffect; } } modelInfoList.Add(newModelInfo); } } }