//---------------------------------------------------------------------------------------------------------------------------------------------------
//
// Copyright (C)2007 DarkWynter Studios. All rights reserved.
//
//---------------------------------------------------------------------------------------------------------------------------------------------------
// {Contact : darkwynter.com for licensing information
//---------------------------------------------------------------------------------------------------------------------------------------------------
namespace DarkWynterEngine.GameObjects
{
#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
using Physics;
using ObjectLib;
/*
* GameObject Interface is child of Statics.
* * 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
Matrix matrix { get; set; } // The GameObject's world space coordinate matrix
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
bool Load(XmlNode node, ObjectLibrary objectLibrary);
/// Update this object
void Update(ref ObjectLibrary objectLibrary);
// Draw this object
void Draw(ModelManager modelManager, string technique);
}
}