Browser gets Textures/Models tabs (per-type catalog cache). Model file
JSON is parsed into per-set texture maps (generic set-prefix matching),
FBX is downloaded with resolution fallback, one URP/Lit material is
built per set via the shared PbrMaterialBuilder (which now returns the
created Material), and new ModelImportUtil remaps FBX material slots to
the built materials by set-name matching.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Imported ambientCG assets plus adjustments to the three Poly Haven
brick materials and The Room scene.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
New Tools/ambientCG Importer window (catalog browser, ZIP download with
selective map extraction, URP/Lit material build). Generic pieces moved
from the PolyHaven tool into Editor/WebAssets (EditorWebRequest,
PbrMapType, PbrMaterialBuilder, ImportUtil, AssetBrowserGrid); PolyHaven
API/window now delegate to the shared code, behavior unchanged.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Drop the roughness (now consumed into _metallic_smoothness), ARM, and
height textures from the three existing brick material sets; no material
referenced them.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
PolyHavenMaterialBuilder now removes the separate roughness map (asset +
meta) once its data has been packed into the generated
_metallic_smoothness.png; skipped when the repack fails or roughness came
from the ARM texture.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Three imported PBR texture sets with generated URP/Lit materials
(Brick 4, Brick Floor 002, Brick Wall 003), scene churn in Main and
The Room, ProBuilder palette/settings updates.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Tools/Poly Haven Importer: fetches asset metadata/files via the public
Poly Haven API, browsable texture catalog with searchable thumbnail
grid, per-map resolution selection, async non-blocking downloads, and
automatic URP/Lit material build (roughness->smoothness repacking into
_MetallicGlossMap, ARM unpacking as fallback for missing AO/Rough/Metal
maps, linear import settings for data textures). Thumbnails survive
play mode via HideAndDontSave + destroyed-cache recovery.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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>
Scene-Component HTraceLobbyToggle (in Main) hoert auf additive
Szenen-Events und schaltet die HTraceWSGI-Component aus, solange die
Lobby geladen ist, sonst an. Lobby-Szenenname im Inspector konfigurierbar.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Zusätzlich zum Kugel-Test wird die Oberflächen-Normale jedes Texels gegen
die Brush-Normale geprüft (CPU/GPU/Preview). Neues Inspector-Feld
"Brush Max Surface Angle" (90-180°, Default 120°). Bei fehlenden Mesh-Normalen
Degradation zur reinen Kugel.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Neue T-Pose (Paintman-TPose.anim, Pose_TPose.asset, Icon_pose_tpose),
UMotion-Projekt erweitert, alle Pose-Icons neu gerendert; dazu Szenen-
Churn (Main, The Room, Pose Icon) und ProBuilder-Settings.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Stamp testet den Brush wieder als 3D-Kugel (du²+dv²+dn² = r²) statt
als Box (|du|,|dv|,|dn| = r) — konsistent über CPU, GPU-Brush und
Preview. Die Box reichte diagonal bis r·√3 und spannte einen 2r-dicken
Slab entlang der Normale, wodurch an Nähten/Kanten/dünner Geometrie auf
die Gegenseite/Nachbarinseln gemalt wurde. Die Kugel reicht in jede
Richtung exakt r und überbrückt echte 3D-Nähte weiterhin, greift aber
nicht mehr über r hinaus.
cornerGuard war nur ein Pflaster gegen genau diesen Box-Übergriff und
ist damit überflüssig: Config-Felder, Suppress-Check und Helper
(DabWrapsAroundCorner, CornerWrapFraction, InBrushBox, SquareReach)
entfernt.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 24 generierte Concealment-Collider fuer Hemnes Shelf (The Room)
- The Room.unity Umbau, Lobby.unity, Couch_Big-Prefab-Wiring
- White Glow.mat, Majoras Mask.glb.meta
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Material-Read-Helper (GetColorProp/GetTexProp/GetFloatProp/ApplyST) auf
variadische Namenslisten umgestellt
- Albedo/Metallic/Smoothness/Emission der AVP-Shader (POM, Glass, Velvet,
Velvet_Curtains) werden jetzt name- und typ-tolerant gepickt
- typ-gepruefter HasProp (Shader.GetPropertyType) verhindert GetFloat-Spam
bei _Metallic/_Smoothness als Textur
- ConcealmentVolume: begleitende Anpassung
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Generate concealment colliders for Big_Light_01, Kallax_Chest and
Kragsta_Tall in The Room; wire the Big_Light_01 prefab and scene
references. Includes incidental ProBuilder settings churn.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Generated concealment colliders for The Room (Fortuny ON base/top)
- Main + The Room scene edits, Wall_White material variants
- ProjectSettings churn (PackageManager, ProBuilder settings)
- .gitignore: exclude imported Allsky / ArchVizPRO Vol.6 / Isle of Assets packs
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Clamp override was off (value 65472 = effectively unbounded), so single
bright HDR pixels pulsed the bloom frame-to-frame. Clamp on at 80,
threshold 0.6->0.8, intensity 0.2->0.3.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 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>
Cel-shaded white body with tinted shadow band plus inverted-hull
clip-space outline (constant screen width, works in deferred via
SRPDefaultUnlit). Key light added to the Pose Icon scene, material
wired to the Paintman.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Applies a pose clip plus root position/rotation to the staged Paintman
for authoring pose icons (screenshot pipeline follows later).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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>
- 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>
The center re-probe could miss the still-touching climbed face and adopt
a hit on a different collider much farther out, flipping the wall normal
and letting the standoff servo drag the capsule across the pinch every
other frame. When the probed gap is well beyond the standoff and the
full-capsule span still holds a steep surface meaningfully closer, keep
that contact instead of defecting to the far hit.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 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>
Scene edits wiring the new Icon Button prefab/icons into the Overview
menu (includes the usual re-save YAML reshuffle) plus TMP font SDF
atlas churn from the UI work.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
New Match Results menu + button (user authoring), MatchResultScreen
_panelRoot reference; includes the usual re-save YAML reshuffle.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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>
- Overview UI canvas active, OverviewMenu component wired to panel,
browser reference and mode buttons; includes YAML reshuffle from the
scene re-save (content verified unchanged).
- EditorSettings: known 1-line churn.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 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>
- The Room export split/renamed to 'The Room Scene.asset' / 'The Room Audio.asset' under Assets/Scenes (old root-level export removed), scene references updated
- Default Steam Audio material: transmission raised (0.8/0.6/0.3) so walls dampen less aggressively
- EditorSettings: enter-play-mode options reset
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
SteamAudioGeometry on Map root (exportAllChildren) + exported static
mesh asset so occlusion raycasts have scene geometry to hit.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- New occlusion opt-in on SoundEffect: spatialized instances get a
SteamAudioSource with raycast occlusion + frequency-dependent
transmission (walls muffle instead of hard-mute)
- Replace SoundEffectDistanceRange asset indirection with an explicit
_3d bool (user refactor); rolloff/distance now left to defaults
- Hey.asset: occlusion enabled
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
New Assets/Audio/ with Hey.asset (+ ogg samples), Sound Effect
Distance Range moved there; Main.unity wires Hey.asset to the
MatchManager radar ping; The Room AudioSource tweak and regenerated
Player.prefab GlobalObjectIdHash (editor churn).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
MatchManager: new Radar Ping Sound property; MsgRadarPing now goes to
all clients (spawnBlips flag keeps blips hunter-only), sound plays 3D
at each pinged hider. Distance-based stagger (speed of sound + 35 ms
min gap) prevents phase cancellation when multiple hiders ping.
SoundEffect: new spatialize toggle (per asset, applied only to 3D
instances -> Steam Audio HRTF); removed unused fade field.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Official Unity package under Assets/Plugins/SteamAudio; enabled as
Spatializer + Ambisonic Decoder in the audio settings (HRTF: sounds
behind the listener are filtered/muffled directionally). Download
staging Tools/SteamAudio/ gitignored.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Particles kept playing at the last hit position when the cursor left the
mesh mid-stroke. New _stampLandedThisFrame flag: reset before each stamp
attempt, set only where the dab actually paints (after placement and
corner guard); no landed stamp -> StopPaintParticles immediately.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Enthält zwangsläufig auch den PaintHud-RectTransform-Churn (Prefab-Override-Anker/Größen) — Szenen-File nicht splitbar.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 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>