//---------------------------------------------------------------------------------------------------------------------------------------------------
//
// 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);
}
}
}