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