public void DrawPrim(Matrix world) { if (BoundingBoxPrim != null) { //BonePrim.Transform = new Transform(Matrix.CreateScale(Length) * CurrentMatrix); //BonePrim.Draw(null, world); BoundingBoxPrim.OverrideColor = DBG.COLOR_FLVER_BONE_BBOX; BoundingBoxPrim.UpdateTransform(new Transform(CurrentMatrix)); BoundingBoxPrim.Draw(null, world); } Vector3 boneStart = Vector3.Transform(Vector3.Zero, CurrentMatrix); void DrawToEndPoint(Vector3 endPoint) { var forward = -Vector3.Normalize(endPoint - boneStart); Matrix hitboxMatrix = Matrix.CreateWorld(boneStart, forward, Vector3.Up); if (forward.X == 0 && forward.Z == 0) { if (forward.Y >= 0) { hitboxMatrix = Matrix.CreateRotationX(MathHelper.PiOver2) * Matrix.CreateTranslation(boneStart); } else { hitboxMatrix = Matrix.CreateRotationX(-MathHelper.PiOver2) * Matrix.CreateTranslation(boneStart); } } float boneLength = (endPoint - boneStart).Length(); GlobalBonePrim.Transform = new Transform(Matrix.CreateRotationY(-MathHelper.PiOver2) * Matrix.CreateScale(boneLength) * hitboxMatrix); GlobalBonePrim.OverrideColor = DBG.COLOR_FLVER_BONE; GlobalBonePrim.Draw(null, world); //using (var tempBone = new DbgPrimWireBone(Name, new Transform(Matrix.CreateRotationY(-MathHelper.PiOver2) * hitboxMatrix), DBG.COLOR_FLVER_BONE, boneLength, boneLength * 0.2f)) //{ // tempBone.Draw(null, world); //} } if (DBG.GetCategoryEnableDraw(DbgPrimCategory.FlverBone)) { if (NubReferenceMatrix != null) { DrawToEndPoint(Vector3.Transform(Vector3.Zero, NubReferenceMatrix.Value * CurrentMatrix)); } foreach (var cb in ChildBones) { DrawToEndPoint(Vector3.Transform(Vector3.Zero, cb.CurrentMatrix)); } } //if (DBG.CategoryEnableNameDraw[DbgPrimCategory.FlverBone]) //{ // SpawnPrinter.Position3D = Vector3.Transform(Vector3.Zero, CurrentMatrix * world); // SpawnPrinter.Draw(); //} }
public static void DrawAllTasks() { lock (_lock_TaskDictEdit) { if (TaskDict.Count > 0) { GFX.SpriteBatchBegin(); //int i = 0; int currentVerticalOffset = 0; foreach (var kvp in TaskDict) { int taskRectHeight = GuiTaskRectHeightWithBar; if (kvp.Value.ProgressRatio < 0) { taskRectHeight = GuiTaskRectHeightNoBar; } // Draw Task Rect Rectangle thisTaskRect = new Rectangle( GFX.Device.Viewport.Width - GuiTaskRectWidth - GuiDistFromEdgesOfScreenX, GuiDistFromEdgesOfScreenY + currentVerticalOffset, GuiTaskRectWidth, taskRectHeight); GFX.SpriteBatch.Draw(Main.DEFAULT_TEXTURE_DIFFUSE, thisTaskRect, Color.Black * 0.85f); if (kvp.Value.ProgressRatio >= 0) { // Draw Progress Background Rect Rectangle progBackgroundRect = new Rectangle(thisTaskRect.X + GuiProgBarDistFromRectEdge, thisTaskRect.Y + taskRectHeight - GuiProgBarDistFromRectEdge - GuiProgBarHeight, thisTaskRect.Width - (GuiProgBarDistFromRectEdge * 2), GuiProgBarHeight); GFX.SpriteBatch.Draw(Main.DEFAULT_TEXTURE_DIFFUSE, progBackgroundRect, new Color(0.25f, 0.25f, 0.25f) * 0.95f); // Draw Progress Foreground Rect Rectangle progForegroundRect = new Rectangle( progBackgroundRect.X + GuiProgBarEdgeThickness, progBackgroundRect.Y + GuiProgBarEdgeThickness, (int)((progBackgroundRect.Width - (GuiProgBarEdgeThickness * 2)) * kvp.Value.ProgressRatio), progBackgroundRect.Height - (GuiProgBarEdgeThickness * 2)); GFX.SpriteBatch.Draw(Main.DEFAULT_TEXTURE_DIFFUSE, progForegroundRect, kvp.Value.IsBeingKilledManually ? Color.Red : Color.White); } // Draw Task Name Vector2 taskNamePos = new Vector2(thisTaskRect.X + GuiProgNameDistFromEdge, thisTaskRect.Y + GuiProgNameDistFromEdge); DBG.DrawOutlinedText(kvp.Value.DisplayString, taskNamePos, Color.White, DBG.DEBUG_FONT_SMALL, startAndEndSpriteBatchForMe: false); currentVerticalOffset += (GuiDistBetweenProgressRects + taskRectHeight); } GFX.SpriteBatchEnd(); } } }
public void DrawPrimitives() { for (int i = 0; i < FlverSkeleton.Count; i++) { var prevBoneColor = DBG.COLOR_FLVER_BONE; if (DebugDrawTransformOfFlverBoneIndex >= 0) { if (DebugDrawTransformOfFlverBoneIndex == i) { DBG.COLOR_FLVER_BONE = Main.Colors.ColorHelperFlverBoneBoundingBox * 0.75f; } else { DBG.COLOR_FLVER_BONE = Main.Colors.ColorHelperFlverBone * 0.5f; } } FlverSkeleton[i].DrawPrim(MODEL.CurrentTransform.WorldMatrix); DBG.COLOR_FLVER_BONE = Main.Colors.ColorHelperFlverBone = prevBoneColor; if (i == DebugDrawTransformOfFlverBoneIndex || (FlverSkeleton[i].EnablePrimDraw && DebugDrawTransformOfFlverBoneIndex < 0)) { if (DBG.GetCategoryEnableDraw(DebugPrimitives.DbgPrimCategory.FlverBone)) { DebugDrawTransformOfFlverBonePrim.Transform = new Transform( Matrix.CreateRotationY(MathHelper.Pi) * Matrix.CreateScale(0.1f, 0.1f, 0.1f) * FlverSkeleton[i].CurrentMatrix); if (DebugDrawTransformOfFlverBoneIndex == i) { DebugDrawTransformOfFlverBonePrim.OverrideColor = Main.Colors.ColorHelperFlverBone; } else { DebugDrawTransformOfFlverBonePrim.OverrideColor = new Color(Main.Colors.ColorHelperFlverBone.R, Main.Colors.ColorHelperFlverBone.G, Main.Colors.ColorHelperFlverBone.B, (byte)(255 / 4)); } DebugDrawTransformOfFlverBonePrim.Draw(null, MODEL.CurrentTransform.WorldMatrix); } if (i == DebugDrawTransformOfFlverBoneIndex || DBG.GetCategoryEnableNameDraw(DebugPrimitives.DbgPrimCategory.FlverBone)) { DebugDrawTransformOfFlverBoneTextDrawer.Clear(); DebugDrawTransformOfFlverBoneTextDrawer.AppendLine( FlverSkeleton[i].Name, Main.Colors.ColorHelperFlverBone); DebugDrawTransformOfFlverBoneTextDrawer.Position3D = Vector3.Transform(Vector3.Zero, FlverSkeleton[i].CurrentMatrix * MODEL.CurrentTransform.WorldMatrix); GFX.SpriteBatchBeginForText(); DebugDrawTransformOfFlverBoneTextDrawer.Draw(); GFX.SpriteBatchEnd(); } } } }
public void DrawPrimText(Matrix world, bool isForce, int globalIDOffset) { if (DisableTextDraw && !isForce) { return; } SpawnPrinter.Clear(); bool hasSpawnStuff = !(SFXSpawnIDs.Count == 0 && BulletSpawnIDs.Count == 0 && MiscSpawnTexts.Count == 0); //string dmyIDTxt = (ReferenceID == 200) ? $"[{ReferenceID} (All Over Body)]" : $"[{ReferenceID}]"; string dmyIDTxt = $"{(ReferenceID + globalIDOffset)}"; if (hasSpawnStuff && !isForce) { SpawnPrinter.AppendLine(dmyIDTxt, GetCurrentSpawnColor()); } else if (DBG.GetCategoryEnableNameDraw(DbgPrimCategory.DummyPoly) || isForce) { SpawnPrinter.AppendLine(dmyIDTxt, DBG.COLOR_DUMMY_POLY); } Vector3 currentPos = Vector3.Transform(Vector3.Zero, CurrentMatrix * world); if (hasSpawnStuff && !isForce) { foreach (var sfx in SFXSpawnIDs) { SpawnPrinter.AppendLine($"SFX {sfx}", ColorSpawnSFX); } foreach (var bullet in BulletSpawnIDs) { SpawnPrinter.AppendLine($"Bullet {bullet}", ColorSpawnBulletsMisc); } foreach (var misc in MiscSpawnTexts) { SpawnPrinter.AppendLine(misc, ColorSpawnBulletsMisc); } } if (ShowAttack != null && !isForce) { string atkName = ShowAttack.Name; if (!string.IsNullOrWhiteSpace(atkName) && atkName.Length > 64) { atkName = atkName.Substring(0, 64) + "..."; } SpawnPrinter.AppendLine($"ATK {ShowAttack.ID}" + (!string.IsNullOrWhiteSpace(atkName) ? $" {atkName}" : ""), ShowAttack.Hits[0].GetColor()); } if (SpawnPrinter.LineCount > 0) { SpawnPrinter.Position3D = currentPos; SpawnPrinter.Draw(); } }