Draw directly on your Lethal Company suit in a third-person in-game editor with decals, stickers, text, save/load, design codes, and multiplayer apply/save sync.
Removed the JetpackWarning compatibility guard, including its log scanning, Harmony unpatching, config entry, and session-safety diagnostics.
0.5.76
Removed the external decal picker path. The Decals menu now copies the Decals folder path and relies on manual PNG/JPG placement plus Refresh.
Moved runtime components onto a dedicated hidden DrawableSuitsRuntimeRoot instead of the BepInEx plugin GameObject.
Removed the old full-scene closed-editor stray-object repair scan and repeated startup repair loop.
Rewrote the README with safer decal instructions, clearer multiplayer sync notes, and Thunderstore review guidance.
0.5.75
Fixed UV-panel Decal, Sticker, and Text placement at 90/270 degree panel rotations by transforming the full placement frame instead of only the angle.
Reflowed the editor shortcut help text so the UV rotation and placement shortcut instructions no longer clip.
0.5.74
Fixed rotated UV-panel Decal, Sticker, and Text placement so the final stamp uses the same visible orientation as the preview.
Corrected the dead-body spawn patch signature and added suit-ID snapshots so corpses/ragdolls can inherit the player's applied DrawableSuits texture more reliably.
Improved diagnostics for UV placement rotation and dead-body suit material application.
0.5.73
Fixed Decal, Sticker, and Text stamping in the rotated UV panel so the final stamp keeps the same visible rotation as the preview.
Applied synced/current suit textures to dead bodies and ragdolls, with short retry passes for late body renderers.
Added diagnostics for UV placement rotation resolution and dead-body suit application.
0.5.72
Fixed multiplayer sync chunk receiving so incoming texture chunks read into an allocated buffer instead of failing with a null destination.
Added player-slot identity to sync payloads and active-design caching so received suit textures apply to the correct player more reliably.
Improved sync diagnostics for owner resolution, payload matching, chunk read failures, and player identity snapshots.
0.5.71
Fixed multiplayer suit sync reliability by normalizing local owner client IDs before broadcasting applied/saved designs.
Added server-side active design caching so late joiners can receive the latest applied player suit textures.
Added retry reapplication after sync receive, player spawn/connect, and suit-switch events so remote renderers get synced materials when they appear late.
Raised the default/effective legacy multiplayer sync payload limit to 4 MB and added clearer sync skip/apply diagnostics.
0.5.70
Added view-only UV panel rotation in 90-degree steps with [ / ] and controller LB / RB.
Updated UV panel pointer mapping, overlays, zoom, and pan to respect the rotated view.
Replaced bumper camera rotation with UV panel rotation; right stick remains the camera orbit control.
0.5.69
Fixed the Design action buttons overflowing past their section border.
Spread Recent Colors across the available Color section width for a cleaner layout.
Added layout diagnostics for the Design, Undo History, and Recent Colors rects.
0.5.68
Polished editor layout spacing and button row formatting after the 0.5.67 layout pass.
Added clearer UV panel grouping and lighter section cards without changing editor behavior.
0.5.67
Cleaned up editor layout spacing after the debug HUD removal.
Rebalanced the left and right editor columns, enlarged the UV panel slot, and added subtle section grouping diagnostics.
0.5.66
Tightened the pause-menu inline prefix spacing so DrawableSuits aligns more closely with native menu rows.
Added a Ko-Fi support section to the README noting that donations help development and commissions are available.
0.5.65
Fixed the pause-menu DrawableSuits prefix alignment by using an inline > fallback when the native row does not expose a prefix child.
Removed the fragile separately positioned pause-menu prefix text object from the injected row.
Added diagnostics for preserved-child versus inline-label prefix handling.
0.5.64
Fixed the pause-menu DrawableSuits row so it preserves or synthesizes the native > prefix.
Adjusted pause-menu insertion to preserve native row spacing instead of reflowing every existing row.
Added diagnostics for prefix handling, row placement, target graphic mapping, and navigation.
0.5.63
Made the pause-menu DrawableSuits row clone the native Resume row style first so it matches surrounding menu buttons.
Preserved native pause-menu prefix/arrow text while replacing only the primary row label.
Added pause-menu style diagnostics for template selection, preserved labels, navigation, and button colors.
0.5.62
Reclaimed the empty left-panel space left by the removed editor diagnostics block.
Rewrote the README into a shorter informational guide without install instructions.
Kept the right-column UV panel and editor tool behavior unchanged.
0.5.61
Removed visible startup/F9 debug HUDs and the editor diagnostics text block while keeping file-based diagnostics logging.
Stopped creating obsolete DebugOverlayKey, ShowStartupDiagnostics, and StartupDiagnosticsSeconds config entries for new configs.
Removed the fallback diagnostics canvas; editor UI build failures now log to diagnostics.log and report a concise open failure.
0.5.60
Added Decal and Sticker placement rotation shortcuts: keyboard , rotates left, . rotates right, and controller D-pad left/right rotates by 5 degrees per press.
Rotation shortcuts now sync the placement rotation slider/label, invalidate previews, and log PlacementRotationShortcutApplied diagnostics.
Shortcuts are ignored while modal panels are open, text fields are focused, or UI controls are being dragged.
0.5.59
Froze the third-person editor avatar proxy after the initial setup bake so idle breathing animation no longer moves the paint target.
Stopped normal world raycasts and editor updates from rebaking the skinned suit mesh every frame.
Added WorldAvatarProxyRebaked and WorldAvatarProxyPoseFrozen diagnostics for explicit proxy rebuilds.
0.5.58
Isolated Decal/Sticker edit modals from world/UV placement preview generation so slider changes no longer trigger full-quality edited stamp generation.
Deferred full-quality placement stamp creation until after target checks and the settled world-preview idle delay.
Added PlacementPreviewSkippedForModal and PlacementPreviewStampDeferred diagnostics.
0.5.57
Replaced Decal edit-panel full-quality preview jobs with a small preview-resolution CPU render path so crop, stretch, flip, and filter sliders stay responsive.
Kept final Decal placement previews and stamped pixels full quality while separating modal-preview cache keys from placement/stamp cache keys.
Added DecalEditPreviewFastUpdated, DecalEditPreviewFastCacheHit, DecalEditPreviewFastSkipped, and EditedDecalFullQualityGenerated diagnostics.
0.5.56
Moved full-quality Decal temporary edit preview rendering into a latest-only async CPU job so slider changes no longer block Unity's main thread.
Completed Decal edit-preview jobs now populate the same full-quality edited stamp cache used by placement previews and final stamping.
Added DecalEditPreviewJobQueued, DecalEditPreviewJobCompleted, DecalEditPreviewJobDiscarded, and DecalEditPreviewJobApplied diagnostics.
0.5.55
Cached Decal edit-panel source pixels and switched preview-quality rendering to manual CPU bilinear sampling so large decal previews no longer call Unity texture APIs per pixel.
Kept final Decal and Sticker placement/stamping full quality while the edit-panel preview remains lightweight and responsive.
Added placement source pixel cache diagnostics for cached, reused, and cleared preview source buffers.
0.5.54
Restored real-time Decal/Sticker edit-panel previews by rendering a lightweight preview-quality stamp while keeping final placement and stamping full quality.
Split temporary placement edit caches into preview-quality and full-quality stamp textures with cleanup on source changes, reset, close, and plugin shutdown.
Increased the shared orange slider dot handle size slightly while keeping long selected-decal filenames safely truncated inside compact UI boxes.
0.5.53
Deferred Decal/Sticker temporary edit preview rebuilds while crop, stretch, and filter sliders are moving, keeping the last preview visible until the new preview is ready.
Replaced the large rectangular slider handles with compact orange dot handles across the editor and edit panels.
Middle-ellipsized long selected decal filenames in compact display boxes so they no longer overflow the UI.
0.5.52
Fixed edited Decals stamping the original image by routing final Decal placement through the same temporary edited stamp texture used by previews.
Replaced single Decal/Sticker filter selection with fixed multi-filter rows, each with its own intensity.
Fixed the temporary edit panel preview so crop and width/height stretch preserve the generated stamp aspect instead of stretching into a square.
0.5.51
Added temporary Decal and Sticker edit panels for crop, width/height stretch, flip X/Y, and preset filters.
Edited decal/sticker stamps now affect previews and future placements only; source decal files and built-in sticker masks are not modified.
Routed edited Decal and Sticker stamps through the existing third-person projection, UV panel preview, Mirror, undo history, and recent-color behavior.
0.5.50
Added controller right-stick panning for the zoomed UV panel while the cursor is over the panel.
Kept right-stick third-person camera orbit unchanged when the cursor is outside the UV panel.
Updated UV panel diagnostics/help text to reflect contextual controller pan behavior.
0.5.49
Added UV panel zoom and pan: wheel or controller D-pad zooms the UV panel while the cursor is over it, and right-mouse drag pans the zoomed texture view.
UV panel painting, erasing, fill, decals, text, stickers, eyedropper, Mirror previews, and brush cursor sizing now respect the zoomed texture viewport.
Added UvPanelViewChanged diagnostics and included UV panel zoom/uvRect in texture-panel and UI input diagnostics.
0.5.48
Retired the previous in-process file-selection approach after it proved unsafe in-game.
Kept manual Decals-folder placement plus Refresh as the fallback.
Added import-path diagnostics while preserving decal validation, row refresh, and selection behavior.
0.5.47
Added an earlier decal image import workflow in the Decals menu.
Imported decals were validated, copied under a safe unique filename, refreshed, and selected automatically.
Kept manual folder placement plus Refresh as the fallback path.
0.5.46
Added a Clear History button that clears undo/redo history without changing the current suit texture.
Added two-step Delete Selected controls to the Saved Designs and Decals menus, limited to files inside the DrawableSuits save/decal folders.
Clearing or deleting now logs explicit diagnostics and cancels stale delete confirmations when selections, refreshes, or modals change.
0.5.45
Changed third-person Decal and Sticker previews to hide while the cursor is moving, then rebuild only after the cursor has been still briefly.
Kept final Decal and Sticker stamping immediate and full quality, while leaving UV-panel previews immediate.
Added settled-preview diagnostics for waiting, hidden-while-moving, and idle rebuilds.
0.5.44
Replaced inline decal and sticker selectors with separate modal menus so they no longer cover the UV editor or each other.
Fixed the Sticker toolbar icon asset so it tints with the same brightness as the other terminal icons.
Reduced third-person Decal and Sticker preview rebuild cost with preview caching, throttling, and coarser hover keys while keeping final stamps full quality.
0.5.43
Added a UI-only Sticker tool with built-in shape stamps, live preview, one-shot placement, Mirror support, undo history, and recent-color tracking.
Updated third-person surface painting, UV panel painting, Mirror, cursor visuals, and diagnostics to respect the selected brush shape.
0.5.32
Removed the manual suit selector from the editor.
Locked editor operations to the local player's currently worn suit.
Added README guidance that ModelReplacementAPI is not compatible with DrawableSuits.
0.5.25
Made the UV texture panel visible alongside the third-person editor instead of requiring a normal view toggle.
Added target-based input routing so hovering the UV panel edits the texture panel while hovering the world edits the third-person suit.
Kept texture-only fallback behavior for StartInUvFallbackMode and failed third-person setup.
Added TexturePanel[...] diagnostics for UV panel assignment and input target distinction.
0.5.24
Moved the UV fallback preview into a reserved right-column slot so it no longer covers the color picker or brush controls.
Rebalanced the right-column design/action/list controls around the new UV preview area.
Added UV preview sibling index and anchored position diagnostics to TexturePreview[...] logs.
0.5.23
Added a UI-only Fill Bucket tool with a visible Fill Tolerance slider.
Fill flood-fills the contiguous matching texture region under the cursor using the current brush color and opacity.
Added single-shot mouse/controller RT fill behavior with one undo entry for primary plus mirrored fills.
Added anatomical Mirror support for Fill when a mirror target is available.
Added FillBucketApplied and FillBucketSkipped diagnostics.
0.5.22
Changed third-person Paint and Erase to project brush strokes onto the visible suit surface before resolving to texture UVs.
Added filled surface-brush coverage with seam guards so strokes no longer cut off at normal UV island boundaries while avoiding unrelated-island bleeding.
Kept UV fallback Paint and Erase as direct UV-layout editing.
Added BrushSurfaceStrokeApplied, BrushSurfaceStrokeSkipped, and BrushSurfaceProjectionWarning diagnostics.
0.5.21
Replaced the native software cursor renderer with a direct editor-canvas cursor drawn through the same UGUI canvas as the visible editor controls.
Kept dynamic Paint and Erase brush rings plus dot-mode cursor behavior without relying on Unity native cursor textures, IMGUI, or a separate cursor canvas.
Stopped controller cursor rendering from depending on OS mouse warping while preserving existing virtual-cursor UI targeting.
Added CanvasCursorBuilt, CanvasCursorUpdated, and CanvasCursorHidden diagnostics.
0.5.20
Replaced the IMGUI cursor renderer with Unity's native software cursor path using generated cursor textures.
Restored visible native cursor handling while the editor is open, including dynamic Paint and Erase brush rings plus dot-mode cursor behavior.
Added controller cursor warping so the native cursor follows the virtual cursor during gamepad editing.
Added NativeCursorUpdated, NativeCursorWarped, NativeCursorReset, and NativeCursorSetFailed diagnostics.
0.5.19
Replaced the unreliable UGUI cursor canvas with an immediate-mode overlay cursor drawn through OnGUI.
Kept dynamic Paint and Erase brush rings plus dot-mode cursor behavior without relying on Canvas, Image, CanvasScaler, sorting order, EventSystem, or raycasters.
Hid the native Unity cursor while the editor is open so the immediate cursor is the only editor pointer.
Added ImmediateCursorUpdated and ImmediateCursorDrawSkipped diagnostics for the new cursor renderer.
0.5.18
Fixed the invisible dynamic cursor caused by assigning the cursor canvas sorting order above Unity's safe signed range.
Moved the editor canvas below the cursor canvas and kept the cursor canvas at sortingOrder=32767 with override sorting enabled.
Slightly increased dot cursor contrast/size and expanded cursor diagnostics with requested versus actual canvas order.
0.5.17
Fixed the missing dynamic cursor by moving it to a dedicated topmost DrawableSuitsCursorCanvas.
Rebuilt cursor visuals as layered non-raycastable dot/ring images with a dark backing for contrast.
Kept Paint and Erase brush rings dynamic while UI hover, invalid targets, Decal, Text, Eyedropper, and normal navigation use a small dot.
Added CursorCanvasState diagnostics and expanded DynamicCursorUpdated cursor visibility details.
0.5.16
Replaced the fixed square editor cursor with a dynamic UGUI cursor.
Added hollow Paint and Erase brush rings that scale to the active brush radius in third-person and UV fallback modes.
Changed non-paint tools, invalid targets, and UI hover to use a small dot cursor while keeping the old filled brush indicator and world sphere marker hidden.
Added rate-limited DynamicCursorUpdated diagnostics for cursor mode, target, brush size, computed diameter, UV, triangle, and fallback sizing.
0.5.15
Fixed third-person decal tearing by rasterizing projected decal coverage between valid surface samples instead of writing only individual projected points.
Added seam guards so projected decals skip cells that jump across UV islands instead of bleeding into unrelated atlas regions.
Expanded decal projection diagnostics with sample, hit, rasterized-cell, seam-skip, off-suit, and written-pixel counts.
Preserved third-person camera yaw, pitch, and zoom when importing a design code.
Changed third-person Decal preview and stamping to project onto the visible suit surface, matching the Text projection path and avoiding UV island clipping/rotation issues.
Added DecalSurfacePreviewUpdated, DecalSurfaceStampCommitted, and expanded design-code diagnostics for payload and code lengths.
0.5.13
Added shareable DSUIT1: design codes that export the current editable suit texture and metadata into a copy/paste code.
Added an import/export design code panel with Copy Current, Paste, Import, and Close controls.
Imports validate code prefix, Base64Url, compressed JSON, PNG data, texture dimensions, and design name before loading into the current suit without auto-saving or broadcasting.
Added DesignCodeExported, DesignCodeImportRequested, DesignCodeImported, and DesignCodeImportFailed diagnostics without logging full codes.
0.5.12
Fixed third-person Text preview and stamping appearing horizontally mirrored by preserving camera-right alignment in the surface projection basis.
Added focused TextProjectionFrameBuilt diagnostics for text projection orientation, handedness, sample order, and camera alignment.
Kept mirrored Text behavior limited to the UI-only Mirror toggle.
0.5.11
Changed third-person Text stamping to project glyph pixels onto the visible suit surface instead of applying a flat UV rectangle.
Added third-person Text preview and stamp diagnostics for projected world size, written pixels, skipped glyph pixels, hit point, and hit normal.
Kept UV fallback Text stamping as direct UV editing while preserving transparent alpha-mask text rendering from 0.5.10.
0.5.10
Fixed Text stamps rendering with an opaque black background by converting rendered glyphs into transparent alpha-mask textures.
Fixed clipped Text stamps by trimming generated glyph bounds with padding so first and last letters are preserved.
Updated Text diagnostics to log raw render size, glyph bounds, final texture size, visible pixel count, and alpha extraction mode.
0.5.9
Added a UI-only Text tool that previews and stamps single-line text onto the suit in third-person mode and UV fallback.
Text stamps use the built-in Arial font, current brush color, brush opacity, size/rotation placement controls, and one undo entry per stamp.
Added Mirror support for text stamps plus TextPreviewUpdated, TextPreviewHidden, TextStampCommitted, and TextStampSkipped diagnostics.
0.5.8
Added a UI-only one-shot Eyedropper tool for sampling colors from the third-person suit surface or UV fallback preview.
Sampling updates the brush color, swatch, hue/SV picker, and hex input, then returns to the previous Paint, Erase, or Decal tool.
Added EyedropperSampled and rate-limited miss diagnostics without adding undo entries or new keyboard/controller shortcuts.
0.5.7
Replaced UV-axis mirror painting with anatomical surface-map mirroring in third-person mode.
Added mesh-based mirror lookup for UV fallback when the clicked UV maps to the suit mesh.
Updated mirrored decal previews and stamps to use the resolved opposite suit surface instead of uv.x = 1 - uv.x.
Added mirror diagnostics for source local point, reflected local point, selected mirror triangle, distance, and skipped mirror targets.
0.5.6
Added a UI-only Mirror toggle that duplicates Paint, Erase, and Decal edits across the suit texture's left-right UV axis.
Mirrored decal stamping now places the primary and mirrored decal in one click or right-trigger press, with one undo entry.
Added mirrored decal placement previews in third-person mode and UV fallback mode.
Added mirror diagnostics for primary and mirrored UV/pixel coordinates.
0.5.5
Removed the part picker and restored full-suit third-person editing as the only active editing workflow.
Stopped filtering third-person proxy meshes, UV fallback textures, paint strokes, erase strokes, and decal stamps through generated part masks.
Stopped creating the PartPresets folder during runtime setup; existing user files are left untouched but ignored by the editor.
Updated diagnostics so active editor logs report full proxy mesh state instead of part classifier output.
0.5.4
Tightened the vanilla humanoid part preset so Helmet no longer absorbs upper torso geometry.
Moved central upper-body and strap geometry back into Torso before arm classification, preventing the right arm from including chest strap pieces.
Added vanilla preset correction diagnostics for helmetToTorso, otherToTorso, armStrapToTorso, otherToArm, and per-part connected-component ranges.
Preserved the improved vanilla leg classification from 0.5.3 while correcting Helmet, Torso, Arm, and Other cleanup behavior.
0.5.3
Added preset-based part classification for the vanilla Lethal Company humanoid suit, matched by renderer, mesh, material, and texture fingerprint.
Added optional JSON part preset loading from BepInEx/config/DrawableSuits/PartPresets for future modded suit overrides.
Reworked vanilla Helmet, Torso, Arm, and Leg selection to use the vanilla suit's baked mesh orientation instead of loose broad bounds thresholds.
Expanded part diagnostics with mesh fingerprints, preset match results, preset triangle counts, and clearer fallback reporting.
0.5.2
Reworked part isolation to use corrected bone-token classification as the primary path, with bounds fallback only for weak or missing bone data.
Fixed right-side bone names such as arm.R_lower being misread as left-side names.
Rebuilt selected third-person parts as compact proxy meshes so hidden triangles and unused vertices no longer leak into selected-part bounds, colliders, or visuals.
Changed part cleanup diagnostics to report suspicious tiny components without aggressively reassigning bone-classified triangles.
0.5.1
Reworked suit part classification to use geometry gates first and bone weights only when they match plausible helmet, torso, arm, or leg regions.
Fixed vanilla helmet detection when suit bones do not expose a usable head/helmet bone, so the Helmet selector can be available from top-cap geometry.
Added connected-component cleanup for tiny stray triangle islands that previously made torso/limb selections show fragments from other parts.
Changed part button availability to use visible geometry instead of requiring editable UV pixels, with visible-only warnings when a part cannot paint.
Reduced false shared-UV warnings by ignoring tiny raster edge overlaps and expanded part classifier diagnostics with raw/cleaned counts, bounds, components, and mapped bones.
0.5.0
Added All, Helmet, Torso, Left Arm, Right Arm, Left Leg, Right Leg, and conditional Other part selection controls.
Added automatic proxy classification using recognized bone influences with normalized geometry fallback for modded or unrecognized suit meshes.
Filtered the third-person avatar proxy and paint collider so only the selected part is shown and targetable while editing.
Added UV masks that clip paint, erase, decal preview, and decal stamps to the selected part, with overlap diagnostics for suits that reuse UV pixels across body parts.
Applied part isolation to UV fallback mode by displaying and editing only the selected part's UV islands while retaining full-texture save/load/sync compatibility.
0.4.8
Added a translucent decal placement preview in third-person paint mode using a temporary proxy-only preview texture/material.
Added a non-raycastable rotated decal preview overlay for UV fallback mode.
Refactored decal compositing so preview and final stamping use the same placement math.
Changed Decal tool input to place one decal per mouse click or controller RT press instead of repeatedly stamping while held.
Added rate-limited DecalPreviewUpdated, DecalPreviewHidden, and DecalStampCommitted diagnostics.
0.4.7
Replaced decal and saved-design list rebuilds with stable row pools so Reset, Save, and Load cannot hit stale list row buttons during the same click.
Changed Save to preserve only an already selected saved-design row instead of auto-selecting the newly saved file.
Fixed hue ring and saturation/value handle placement by parenting handles to their own picker rects and using shared coordinate conversion for input and visuals.
Preserved third-person camera yaw, pitch, and zoom when loading a design or switching suits while the editor is open.
Reduced repeated world proxy material diagnostics to change-based/rate-limited logs.
0.4.6
Rebuilt the color picker layout so the saturation/value square sits beside the hue ring instead of covering it.
Replaced the color handle squares with small outline handles and added editable #RRGGBB hex color input.
Added a controller virtual-cursor arming guard so the first A press after opening cannot close the menu or switch suits before the stick is moved.
Removed the duplicate decal refresh button and kept one short-status Refresh Decals action.
Further neutralized normal button highlight/selection state while preserving selected styling for tools, decals, and saves.
0.4.5
Reworked controller virtual-cursor A clicks to resolve only actionable UI controls under the cursor, including buttons, input fields, DrawableSuits sliders, and the new color picker.
Stopped normal buttons from keeping stale selected/highlight colors after unrelated clicks while preserving selected styling for tools, decals, and saved designs.
Replaced RGB brush sliders with a compact hue-ring and saturation/value color picker with a live hex swatch.
Shortened the in-game Refresh Decals status message so it no longer overlaps the world-help text or diagnostics area.
Added diagnostics for raw UI raycast hits, resolved virtual-cursor targets, press targets, and release targets.
0.4.4
Made active edited textures player-specific by owner client ID instead of global per suit ID, so editing one player no longer changes every player or rack using the same base suit.
Added owner client ID to multiplayer texture sync and late-join active design responses.
Stopped mutating UnlockableItem.suitMaterial and suit rack materials for player-specific edits.
Removed right trigger from third-person camera zoom; right trigger now paints only and controller zoom uses D-pad up/down.
Disabled the filled UV fallback brush indicator that looked like a second color-changing cursor.
Added first-person overlay hiding/filtering for nearby helmet, visor, viewmodel, arms, hands, camera, and held-item renderers while the editor is open.
Added proxy material filtering and diagnostics for visible editor-camera renderers, hidden first-person overlays, proxy material slots, and player-specific sync state.
0.4.3
Replaced direct live local-player rendering in third-person editor mode with a DrawableSuits-owned DrawableSuitsWorldAvatarProxy.
Added renderer candidate scoring and diagnostics so the editor selects a body/suit SkinnedMeshRenderer instead of first-person arms, held items, camera children, or viewmodel pieces.
Hid and restored local player/camera renderers while editing so the third-person camera shows the proxy model without first-person rig clutter.
Updated world painting to raycast only against the proxy collider layer and to keep the proxy renderer using the active DrawableSuits runtime material.
Added diagnostics for selected source renderer, hidden renderer count, avatar proxy, proxy material, camera mask, and restore behavior.
0.4.2
Added AutoDisableBrokenJetpackWarningLateUpdatePatch, enabled by default, to disable only the broken JetpackWarning.Patches.PlayerControllerB_LateUpdate_Postfix after repeated null-reference errors are detected in BepInEx/LogOutput.log.
Made SessionSafetyCheck run in SampleSceneRelay even when Camera.main is null and added diagnostics for Camera.main, active cameras, local player flags, prompt-related fields, local renderer materials, and JetpackWarning guard status.
Kept DrawableSuits editor cameras, paint proxies, brush markers, input locks, and local renderer overrides repaired/restored while EditorOpen=False.
Gated early scene/session material reapplies until unlockables and player scripts are ready, reducing non-editor startup side effects.
Disabled the startup HUD by default for normal builds; F9 still toggles the debug HUD when needed.
0.4.1
Added closed-session safety checks on plugin start, scene load, player connect/spawn, and early gameplay frames.
Destroyed or disabled stray DrawableSuits third-person/preview cameras, paint proxies, and brush markers whenever the editor is closed.
Restored closed-editor cursor/input/renderer state and added SessionSafetyCheck diagnostics for active cameras and local renderer materials.
Stopped applying DrawableSuits runtime materials to the local first-person arms/body outside the editor by default.
Added ApplyLocalFirstPersonArms, disabled by default and documented as experimental.
Hardened third-person editor lifetime so the editor camera is created only during open and remains disabled until setup succeeds.
Added a one-time diagnostic warning when the active BepInEx log shows repeated external JetpackWarningPlayerControllerB.LateUpdate null-reference errors.
0.4.0
Replaced the UV texture-preview workflow as the default editor with an in-world third-person paint mode.
Added a third-person editor camera around the local player and force-shows the local suit renderer while editing.
Added a hidden baked MeshCollider paint proxy from PlayerControllerB.thisPlayerModel and raycasts from the editor camera to paint/erase/place decals on suit UV coordinates.
Added a surface brush marker and third-person orbit/zoom controls for mouse and controller.
Kept the UV texture preview as Use UV Fallback and added StartInUvFallbackMode plus ThirdPersonCameraDistance config entries.
Replaced fragile ScrollRect/layout decal and save lists with deterministic anchored row buttons and page controls.
Broadened gameplay input suppression aliases for scan, item use, and inventory switching while the editor is open.
Updated diagnostics for world camera setup, renderer visibility, paint proxy baking, raycast hits, UV/pixel paint data, and list row creation.
0.3.6
Added PaintAttempt/PaintApplied diagnostics for the texture preview paint path, including pointer source, UV, pixel coordinate, active tool, brush size, opacity, and decal state.
Prevented Decal mode from silently no-oping when no decal is selected; the editor now keeps Paint active and shows a clear status message.
Added a brush indicator over the texture preview so small brush sizes are easier to see.
Disabled and restored known global Lethal Company gameplay actions while the editor is open, including scan, item use, inventory switching, crouch, utility slot, and emote actions where present.
Added guarded optional Harmony blocks for leaked PlayerControllerB gameplay callbacks so missing method names do not break startup.
0.3.5
Replaced the camera/RenderTexture model preview as the default editor view with a deterministic live suit texture preview.
Changed paint, erase, and decal placement to map the mouse/controller cursor directly to preview texture coordinates, avoiding the black 3D viewport failure path.
Added EnableExperimentalModelPreview, disabled by default, for the old 3D preview diagnostic path.
Added black RenderTexture readback detection that falls back to the texture preview when experimental model rendering produces an empty frame.
Improved preview diagnostics with active preview mode, editable texture details, UI texture assignment, and pointer-to-texture coordinates.
0.3.4
Delayed pause-menu editor opening until after QuickMenuManager.CloseQuickMenu() has had a frame to release cursor/UI state.
Reapplied editor cursor unlock while open and logged cursor lock recovery when the game recaptures it.
Made mouse the default editor pointer even when a controller is connected; controller virtual cursor only takes over while actively used.
Avoided preview layer 31 and rebuilt preview rendering around a pivoted, centered mesh with a RenderTexture-targeted camera.
Kept the preview camera enabled while it targets the RenderTexture and rendered the preview every frame.
Added pointer-source, mouse position, gamepad stick, cursor-lock, and preview camera diagnostics.
0.3.3
Isolated the preview rig from the gameplay world by normalizing the baked suit mesh, rendering through a disabled manual preview camera, and avoiding active world-lighting side effects.
Added preview diagnostics for selected layer, camera enabled state, culling masks, normalized bounds, scale, and RenderTexture state.
Added Harmony input guards that block Lethal Company jump, look, interact, and item-interact callbacks while the DrawableSuits editor is open.
Removed gamepad A from Unity UI submit and routed it through DrawableSuits' virtual-cursor raycast so it clicks only the control under the visible cursor.
Replaced Unity Slider controls with DrawableSuits-owned slider controls to prevent stretched orange fill/handle blocks.
Disabled the in-game Windows file dialog import path; decals are now refreshed from BepInEx/config/DrawableSuits/Decals only.
Updated troubleshooting for white-world rendering, missing preview model, controller jump, cursor offset, and import crashes.
0.3.2
Moved the suit preview into an editor-owned camera and RenderTexture shown inside the UI, so the model is not hidden by the world camera, ship geometry, or darkness.
Changed painting, erasing, and decals to raycast through the editor preview viewport instead of Camera.main.
Fixed slider child rect setup so fill and handle graphics no longer stretch into large orange blocks.
Added a DrawableSuits-owned InputSystemUIInputModule while the editor is open, then restored the game's UI input modules on close.
Made the virtual cursor marker ignore UI raycasts so mouse clicks can reach buttons, sliders, and inputs.
Disabled the local player's PlayerActions.Movement map while editing and restored it on close, preventing controller A from jumping in the menu.
Removed the global controller A Apply shortcut; A now submits the selected UI control only.