/// <summary> /// This is called when the game should draw itself. /// </summary> public override void Draw(double deltaTime, GraphicsDevice graphics, SpriteBatch spriteBatch) { //cam.UpdateTransform(); graphics.Clear(Color.CornflowerBlue); spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend, null, null, null, null, cam.Transform); Submarine.Draw(spriteBatch, true); spriteBatch.End(); spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend, null, null, null, null, cam.Transform); //if (EntityPrefab.Selected != null) EntityPrefab.Selected.UpdatePlacing(spriteBatch, cam); //Entity.DrawSelecting(spriteBatch, cam); if (editingCharacter != null) { editingCharacter.Draw(spriteBatch, Cam); } spriteBatch.End(); //-------------------- HUD ----------------------------- spriteBatch.Begin(SpriteSortMode.Deferred, null, null, null, GameMain.ScissorTestEnable); GUIpanel.DrawManually(spriteBatch); EditLimb(spriteBatch); int y = 0; for (int i = 0; i < textures.Count; i++) { int x = GameMain.GraphicsWidth - textures[i].Width; spriteBatch.Draw(textures[i], new Vector2(x, y), Color.White); foreach (Limb limb in editingCharacter.AnimController.Limbs) { if (limb.ActiveSprite == null || limb.ActiveSprite.FilePath != texturePaths[i]) { continue; } Rectangle rect = limb.ActiveSprite.SourceRect; rect.X += x; rect.Y += y; GUI.DrawRectangle(spriteBatch, rect, Color.Red); Vector2 limbBodyPos = new Vector2( rect.X + limb.ActiveSprite.Origin.X, rect.Y + limb.ActiveSprite.Origin.Y); DrawJoints(spriteBatch, limb, limbBodyPos); //if (limb.BodyShapeTexture == null) continue; //spriteBatch.Draw(limb.BodyShapeTexture, limbBodyPos, // null, Color.White, 0.0f, // new Vector2(limb.BodyShapeTexture.Width, limb.BodyShapeTexture.Height) / 2, // 1.0f, SpriteEffects.None, 0.0f); GUI.DrawLine(spriteBatch, limbBodyPos + Vector2.UnitY * 5.0f, limbBodyPos - Vector2.UnitY * 5.0f, Color.White); GUI.DrawLine(spriteBatch, limbBodyPos + Vector2.UnitX * 5.0f, limbBodyPos - Vector2.UnitX * 5.0f, Color.White); if (Vector2.Distance(PlayerInput.MousePosition, limbBodyPos) < 5.0f && PlayerInput.LeftButtonHeld()) { limb.ActiveSprite.Origin += PlayerInput.MouseSpeed; } } y += textures[i].Height; } GUI.Draw(Cam, spriteBatch); //EntityPrefab.DrawList(spriteBatch, new Vector2(20,50)); //Entity.Edit(spriteBatch, cam); spriteBatch.End(); }