root/src/AIRendering/DrawableActor.cs

User picture

Author: conkerjo

Revision: 30 («Previous)


File Size: 1.85 KB

(July 08, 2009 19:40 UTC) Almost 3 years ago


  

 
Show/hide line numbers
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);
            }
            
        }

    }
}