using System; using System.Collections.Generic; using System.Text; using Axiom.MathLib; using libsecondlife; using OpenSim.types; using libsecondlife.Packets; namespace OpenSim.world { public class Entity { protected libsecondlife.LLUUID uuid; protected uint localid; public LLVector3 position; public LLVector3 velocity; protected Quaternion rotation; protected string name; protected List children; public bool needupdate; public Entity() { uuid = new libsecondlife.LLUUID(); localid = 8880000 + (OpenSim_Main.local_world._localNumber++); // FIXME - race condition! position = new LLVector3(); velocity = new LLVector3(); rotation = new Quaternion(); name = "(basic entity)"; children = new List(); } public virtual void update() { // Do any per-frame updates needed that are applicable to every type of entity foreach (Entity child in children) { if(child.needupdate) child.update(); } this.needupdate=false; } public virtual ImprovedTerseObjectUpdatePacket.ObjectDataBlock CreateTerseBlock() { return null; } public virtual string getName() { return name; } public virtual Mesh getMesh() { Mesh mesh = new Mesh(); foreach (Entity child in children) { mesh += child.getMesh(); } return mesh; } } }