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