root/src/AIRendering/DrawableGoToBehavior.cs

User picture

Author: conkerjo

Revision: 30 («Previous)


File Size: 2.16 KB

(June 30, 2009 23:12 UTC) Almost 3 years ago

Initial Checkin

 
Show/hide line numbers
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Brains.Framework.Behaviors;
using Microsoft.Xna.Framework.Graphics;
using Brains.Framework.Behaviors.PathFinding;
using Microsoft.Xna.Framework;

namespace AIRendering
{
    public class DrawableBehaviorGoTo : GoToBehavior, IRender
    {


        public void Render(PrimitiveBatch primitiveBatch)
        {

            
            FollowPathBehavior followBehaviour = (FollowPathBehavior)this.SubBehaviors[1];

            if (followBehaviour == null)
            {
                return;
            }

            if (followBehaviour.pathNodes == null)
            {
                return;
            }

            DrawFollowPath(followBehaviour,primitiveBatch);

        }
        public static void DrawFollowPath(FollowPathBehavior follow, PrimitiveBatch primitiveBatch)
        {
            Color pathColor;
            Color bisectorsColor;
            if (follow.pathNodes == null)
                return;
            for (int index = 0; index < follow.pathNodes.Length; index++)
            {
                if (follow.pathNodes[index].nodeVisited)
                {
                    pathColor = Color.Gray;
                    bisectorsColor = Color.Gray;
                }
                else
                {
                    pathColor = Color.Gold;
                    bisectorsColor = Color.Honeydew;
                }

                if (index < follow.pathNodes.Length - 1)
                {
                    primitiveBatch.DrawLine(
                        follow.pathNodes[index].nodePosition,
                        follow.pathNodes[index + 1].nodePosition,
                        pathColor
                    );
                }

                primitiveBatch.DrawLine(
                    follow.pathNodes[index].biNormalStart,
                    follow.pathNodes[index].biNormalEnd,
                    bisectorsColor
                    );
            }
        }
        public override void Update(GameTime gameTime)
        {
            base.Update(gameTime);
        }

      
    }
}