//---------------------------------------------------------------------------------------------------------------------------------------------------
//
// 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
/*
* GameObject Interface is child of GameFlow.
* * Objects inheriting this interface must overload all methods for GameFlow and GameObject
*
* Methods of GameObject follow the GameFlow pattern to ensure quick and efficient loading and unloading procedures.
* Additional properties are included in GameObject and are used by Renderer and Update to manipulate the GameObject.
* Each object specifies its draw and update procedures internally and is passed to Physics for in game motion and rotation.
*
*
*/
public interface GameObjectInterface
{
Mass mass { get; set; } // Contains physical properties used in physics, motion, and collision equations
Model model { get; set; } // Loaded from .X file format
Effect effect { get; set; } // A programmable shader effect
BasicEffect basicEffect { get; set; } // Microsoft's standard no-mess shader
Matrix matrix { get; set; } // The GameObject's world space coordinate matrix
BoundingSphere boundingSphere { get; set; } // Mathmatical sphere defining the bounding space of the object
List textureList { get; set; } // Generic list for textures
string objectModelName { get; set;}
bool isCollectable { get ; set; }
bool isKey { get; set; }
/// Load Level from XML files
void Load(XmlNode node);
/// Update this object
void Update(ObjectLibrary objectLibrary);
// Draw this object's shadow
void DrawShadow(ModelManager modelManager);
// Draw this object
void Draw(ModelManager modelManager);
}
}