//private void DrawCircleAttack(DrawingContext ctx, GameObject obj) //{ // ctx.DrawCircleWithPoint(obj.Location, obj.Heading, 11.0f, Color.FromArgb(100, Color.Red), Color.FromArgb(100, Color.Red)); //} //private void DrawSideAttack(DrawingContext ctx, GameObject obj) //{ // ctx.DrawSideAttackAgroLine(obj.Location, obj.Heading, 5.0f, 50.0f, Color.FromArgb(100, Color.Blue)); //} //private void DrawSliceAttack(DrawingContext ctx, GameObject obj) //{ // ctx.DrawAgroLine(obj.Location, obj.Heading + (float)Math.PI / 2, 5.0f, 100.0f, Color.FromArgb(100, Color.Yellow), Color.FromArgb(100, Color.Yellow)); //} private void Drawing(DrawingContext ctx) { if (QuestLogManager.InCutscene) { return; } //Gameobject list is threadstatic, always need to pulse otherwise new objects wont show up GameObjectManager.Update(); if (SelfDrawing != null) { SelfDrawing.Drawing(ctx, Core.Me); } if (TargetDrawing != null && Core.Me.CurrentTarget != null) { TargetDrawing.Drawing(ctx, Core.Me.CurrentTarget); } foreach (GameObject obj in GameObjectManager.GameObjects) { if (!obj.IsValid) { continue; } if (obj.IsMe) { continue; } if (skipObjects.Contains(obj.NpcId)) { continue; } if (NpcDrawing.ContainsKey(obj.NpcId)) { IDrawCommand d = NpcDrawing[obj.NpcId]; if (d != null) { d.Drawing(ctx, obj); } continue; } if (skipGameType.Contains(obj.Type)) { continue; } if (CustomObjectTypesDrawing.ContainsKey(obj.Type)) { IDrawCommand d = CustomObjectTypesDrawing[obj.Type]; if (d != null) { d.Drawing(ctx, obj); } continue; } var gameCharacter = obj as Character; if (gameCharacter != null && HostileDrawing != null) { if (gameCharacter.StatusFlags.HasFlag(ff14bot.Enums.StatusFlags.Hostile)) { HostileDrawing.Drawing(ctx, obj); continue; } } if (AllDrawing != null) { AllDrawing.Drawing(ctx, obj); } } foreach (GatherNode g in this.GatherNodes) { g.Drawing(ctx, null); } customPoints.Drawing(ctx, null); cacheDrawManager.Draw(ctx); }