Commit Graph
23 Commits
Author SHA1 Message Date
adminandClaude Opus 4.8 c7e3b6cad7 feat: Camo/Height/Emission-Slider nicht mehr persistieren
Die 8 HUD-Slider (Half Lambert, Brightness, Saturation, Specular Damp,
Occlusion Threshold, Normal/Parallax/Emission Intensity) als
[NonSerialized] markiert: bleiben zur Laufzeit ueber Respawn erhalten,
werden aber nicht mehr im PaintHud.json gespeichert/geladen. Tote
hasCamoValues/hasHeightValues-Flags entfernt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 08:29:25 +02:00
adminandClaude Fable 5 5f5892047c Add pose icon capture pipeline, icon scale, Esc/Tab opens overview in paint mode
- PoseIconStage: permanent editor capture pipeline (context menu 'Capture All Icons') — renders each entry at 4096x4096, alpha-crops, writes Icon_pose_*.png and wires sprites onto matching PlayerPose assets
- PlayerPose: new iconScale property (0.1-2), applied to the icon child in PoseMenu's radial layout
- OverviewMenu: paint-mode special-case removed — Esc/Tab opens the overview menu in every mode

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 21:08:56 +02:00
adminandClaude Fable 5 7e9f255de5 Cycle pose directly instead of radial menu with 2 or fewer poses
With a small pose set (hunter) the pose button and C hotkey advance
to the next pose immediately instead of opening the radial overlay.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 18:48:00 +02:00
adminandClaude Fable 5 3a2e8a7057 Add radial pose menu with hotkeys, remove C cycle hotkey
- PlayerPose: Icon (Sprite) + Title (string) UI properties
- PoseMenu: modal pause overlay building a radial menu from Icon Button
  prefab instances; active pose disabled (hover ring marks it); click
  applies pose via SetPoseIndex and closes
- OverviewMenu: pose button wiring with pause hand-off, Esc/Tab chain
  extended; hotkeys C (toggle pose menu) and V (paint mode) mirroring
  the buttons incl. identical gating
- PlayerPoseController: C cycle hotkey and NextPose() removed

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 16:17:40 +02:00
adminandClaude Fable 5 782c3b4381 Block escape/tab menu while loading locally (join sync + Loading phase)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 15:30:31 +02:00
adminandClaude Fable 5 c6a22c1643 Add taunt button, Tab as Escape alternative, free cam Q/E removal
- OverviewMenu: taunt button (manual ping + close, hider/seek-only), Tab triggers the Escape chain (TypingGuard-gated)
- GameModeManager: LocalPlayerIsHider helper, allow E-ping in free cam (Q/E no longer used for movement)
- FreeCamController: vertical movement only via Space/Ctrl
- Icons: Icon_taunt (wired), Icon_firstperson_paint (unwired, for later)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 15:22:47 +02:00
adminandClaude Fable 5 c6b67faa60 Add Overview UI icon set, Icon Button prefab and hover/disabled ring
- 7 generated icons (settings, statistics, paint, freecam, thirdperson,
  firstperson v3 viewfinder, spectator eye) + hand-painted hover ring,
  full-res PNGs imported as sprites (max size 256)
- Icon Background texture (user asset)
- IconButtonHover: shows the Hover child on pointer hover or while the
  button is non-interactable (doubles as active-mode marker)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 14:46:41 +02:00
adminandClaude Fable 5 7669ae1b66 Complete Match Results modal: standalone overlay, auto-open on resolution
MatchResultScreen becomes a self-contained modal (IsOpen/Open/Close,
_panelRoot, pause handling); resolution auto-open moves there from the
session browser. OverviewMenu integrates it into the Esc chain and hides
the Match Results button until results exist (same pattern as the
role-scoped mode buttons).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 12:55:05 +02:00
adminandClaude Fable 5 7ac6038121 Add OverviewMenu escape menu, remove Tab mode cycling
- New OverviewMenu component: Esc toggles the pause overlay, buttons
  switch modes via GameModeManager.TrySwitchTo<T>() and close the panel;
  visibility follows the role-scoped mode set, active mode disabled.
- Esc in paint mode exits to camera mode instead (PlayerControlMode,
  hunter falls back to FirstPersonMode) rather than opening the menu.
- Centralized all Esc handling in OverviewMenu (browser close included)
  to avoid frame races; OnlineSessionBrowserUI gains IsOpen/Open/Close.
- GameModeManager: switchKey Tab-cycle removed, TrySwitchTo<T> added.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 12:34:12 +02:00
adminandClaude Fable 5 423a2d15ec Cursors: Krea-Grafiken in voller Auflösung, Blank-Cursor beim Malen, normalisierte Hotspots
- Cursor_Normal/Paint/Pipette: generierte Grafiken jetzt in Vollauflösung (766-829 px, Max Size im Importer steuert Anzeigegröße), Paint-Ring-Inneres freigestellt
- Neuer Cursor_Blank (transparent): wird während eines Strokes auf dem Mesh gesetzt statt Cursor.visible zu togglen (fixt Flicker-Kampf mit dem Orbit-Input)
- CursorController: Hotspots normalisiert (0-1, unabhängig von Import Max Size); Zustandskette Pipette > (Stroke ? Blank : Paint) > Normal; off-mesh während Stroke -> Normal
- MeshPainter: StrokeInProgress-Flag (Maustaste auf Paint-Pfad gehalten)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 21:35:36 +02:00
adminandClaude Fable 5 ae5fa63141 Custom mouse cursor: normal/paint/pipette with recorder-aware software mode
- CursorController: polls painter state in LateUpdate; paint cursor only
  while the brush preview decal actually draws (MeshPainter.BrushPreviewVisible),
  pipette while held/toggled, fallback to normal over UI (InputUtil.PointerOverUi)
- Auto ForceSoftware while Unity Recorder is recording (reflection into
  editor-only assembly, 0.5s poll, editor-only) so the cursor is captured;
  back to hardware cursor when recording stops
- 3 placeholder cursor PNGs (32x32, cursor import type) with per-cursor hotspots

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 18:09:14 +02:00
adminandClaude Fable 5 14015d7134 Ignore drag-releases in slider double-click reset; tune HUD slider defaults
A pointer-up after a drag no longer counts as a click (dragging flag +
press-to-release distance within the existing tolerance), so drag ->
release -> click cannot trigger a reset anymore. PaintHud prefab:
pointer tolerance 4 px, HalfLambert default back to 0.5.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 22:37:03 +02:00
adminandClaude Fable 5 7fb0ff54b1 Add double-click-to-reset on all sliders (interval + pointer tolerance) and sync PaintHud slider defaults
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 19:28:22 +02:00
adminandClaude Fable 5 270c42d85b Add host-configurable match settings persisted in settings
- GameSettings: 7 match fields (mode, hunter count, hide/seek/resolve
  durations, radar ping interval/lifetime) with authored defaults
- MatchSettingSlider (new): enum-driven panel binder, seeds from
  settings, saves on change; lifetime label shows one decimal
  (invariant culture)
- MatchManager: ApplyHostMatchSettings() on StartMatch (clamped);
  phase message now carries ping interval so clients tick correctly

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 22:04:54 +02:00
adminandClaude Fable 5 6c03e5d3f6 Refactor Assets/Scripts: trim restating comments, minor structure cleanups
Sweep over 48 files (Editor/ excluded): remove comments that restate the
code, condense class summaries, fix three stale doc statements
(HsvColorPicker alpha bar, PaintHud layoutPrefab, MasterVolume
FallbackDefault). Inline two single-use wrappers (IsPointerOverUi,
BuildModes), drop an unused using, replace a magic literal with the
existing ParallaxBase constant, and convert ~10 UnityEngine.Object null
checks to the implicit-bool convention. No serialized fields, signatures,
RPC/NetworkVariable names, defaults, or #if blocks touched.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 08:29:18 +02:00
adminandClaude Opus 4.8 50781e32d2 Camo: generalize brightness + add persistent saturation
Move brightness out of the half-lambert diffuse term to a final exposure
multiply on the whole shaded body color (diffuse + GI + specular), and add
a saturation grade (0 = neutral, -1 = grayscale, >0 = boosted) on the same
final stage. Saturation rides as a 4th component on CamoKnobs (Vector3 ->
Vector4) so it inherits all three persistence paths: HUD JSON, network
replication (_camo NetworkVariable), and painting-slot metadata. Wires the
renamed Slider_Brightness and new Slider_Saturation. Bumps HudFileVersion
and PaintMetaVersion with load-time remaps so existing paintings keep their
look (old 1=neutral saturation remaps to 0=neutral).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 07:23:40 +02:00
adminandClaude Opus 4.8 e571375cab feat(ui): move HSV swatch onto the SV handle
HsvColorPicker: read the color swatch from the SV handle's child
("Handle/Swatch") instead of a standalone root child; drop the dead
leftover-alpha bar and root-swatch fallback handling.
PaintHudPanel.prefab: restructure the picker so the swatch lives under
the SV handle and wire _swatch accordingly.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 17:26:57 +02:00
adminandClaude Opus 4.8 1b783a39be Fur: Albedo-gekoppelte Länge, Toggle-Gate, Soft-Edge, World-Gravity, Pipette & FP-Hide
- Fur-Map trägt nur noch R = Länge (linearer Datenkanal); Farbe kommt per-texel
  aus der Live-Albedo-RT (an _BaseMap des Shell-Shaders gebunden)
- Toggle_Fur als echtes Gate (IsChannelActive = fur), Default aus, furLength 0.5
- Weicher Alpha-Übergang (radial/tip/length coverage) statt Hard-Clip; Transparent-
  Pass mit Depth-Bias (Offset -1,-1) gegen Body-Durchflimmern
- Root dunkler / Tip heller aus gemalter Farbe abgeleitet (kein Fix-Tint)
- Gravity/Curl in World-Space nach Transform (unabhängig von Mesh-Rotation)
- Pipette aktiviert Fur-Toggle immer; liest R-Kanal als Länge
- First-Person blendet FurShellRenderer mit aus
- Netzwerk (FlagFur), Undo, Persistence (fur.png R=Länge) mitgezogen

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 23:40:58 +02:00
adminandClaude Opus 4.8 7536e8ec8b Fur als 4. Paint-Map + Ziel-Opacity-Blend
Fur wird die vierte kanonische Paint-Map (RGB=Farbe, A=Länge). Integration
über Seed (kahl), GPU/CPU-Paint, Undo, Netzwerk-Sync, Persistence (fur.png,
v6) und Live-RT-Hook im FurShellRenderer. HUD-Binding (Toggle/Picker/Alpha)
aktiviert. Fur-Alpha lerpt jetzt zu einer Ziel-Opacity (Slider_FurOpacity)
statt additiv Richtung 1 zu akkumulieren (zwei Brush-Passes: Fade + Deposit).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 21:35:53 +02:00
adminandClaude Opus 4.8 ba7f3c2e89 Move settings to Settings.json and add master volume
Replace the former per-value PlayerPrefs storage with a shared human-readable
Settings.json store (GameSettings). MouseSensitivity keeps its public .Multiplier
API and only swaps its backing to the JSON store, so the camera controllers stay
untouched. Add a MasterVolume facade that drives the AudioMixer's exposed
"MasterVolume" parameter (loaded from Resources, linear<->dB mapping), applied at
startup and on change, plus a MasterVolumeSlider binder. The default is the level
currently authored on the mixer instead of an arbitrary constant.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 15:30:44 +02:00
adminandClaude Opus 4.8 f586ef7a15 Simplify HUD layout save path to a fixed PaintHud.json
Drop the scene-derived hudSaveId/key mechanism and save the HUD layout to a
single PaintHud.json under persistentDataPath.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 14:52:22 +02:00
adminandClaude Opus 4.8 cadc8f8b17 Bind PaintHud to the scene-authored canvas
Drop the code-gen canvas/EventSystem bootstrap and the layoutPrefab
instantiation; the canvas and its panel now live in the scene, so PaintHud
binds to its first child at startup instead of building the UI at runtime.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 10:32:42 +02:00
adminandClaude Opus 4.8 e23fae0c50 Reorganize scripts into subfolders by responsibility
Move scripts under Assets/Scripts/ into Components, GameMode, Helper,
Network, Enum, Struct and ScriptableObject folders. Pure file moves
(plus folder .meta files); no code changes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 15:02:15 +02:00