using System; using System.Collections.Generic; using System.Linq; using System.Text; using Brains.Framework; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework; using System.Xml.Serialization; using Brains.Framework.Behaviors; namespace AIRendering { public class DrawableActor:Agent,IRender { public DrawableActor(Vector2 position, float radius) : base(position, radius) { } public virtual void Render(PrimitiveBatch batch) { batch.DrawCircle(Position, Radius, Color.White); //batch.DrawLine(Position,Position+Orientation*Radius*2, Color.Green); foreach (var item in Feelers) { batch.DrawLine(Position,item.TipWorldPosition, Color.Green); } DrawBehavior(RootBehavior,batch); } private void DrawBehavior(IBehavior behavior, PrimitiveBatch batch) { if (behavior == null) return; if (behavior is ISubBehaviorHolder) { ISubBehaviorHolder subs = (ISubBehaviorHolder)behavior; foreach (var item in subs.SubBehaviors) { if (item.State == BehaviorState.Running && item is IRender) ((IRender)item).Render(batch); DrawBehavior(item, batch); } } if (behavior is IRender) ((IRender)behavior).Render(batch); if (CellsIAmIn.Count > 0) { Vector2 cellsize = new Vector2(ParentWorld.Map.ClusterGrid.Grids[0].CellSize); batch.DrawBox(CellsIAmIn[0].Position - (cellsize / 2), CellsIAmIn[0].Position + (cellsize / 2), Color.Blue); } } } }