Overview
PoseSaverExtended is a complete rewrite and major expansion of the original PoseSaver plugin by Kimowal (https://hub.virtamate.com/threads/posesaver.71729/). Special thanks to Kimowal for creating the original plugin and for making the code available for modification and distribution. While maintaining the core concept, this version has been rebuilt from the ground up with improvements, new systems. The codebase has grown from ~4,100 lines to over 7,100 lines of code (+74%), with most core systems rewritten.Features
Pose Management
- Save/Load poses - Capture and restore positions of all Person and Toy atoms
- Edit poses - Recapture, rename, clone, or delete saved poses
- Auto-play system - Automatic pose progression with customizable timing per pose
- Preset system - Save/load complete pose sets to JSON files
- Thumbnails - Automatic visual pose previews with screenshots
- Screen canvas - On-screen thumbnail buttons for quick access
- Smart cleanup - All active timers (auto-play, timed triggers, dialogs) automatically stop when loading a new pose
Camera System (NEW)
- Camera checkpoints - Save multiple camera positions per pose
- Camera sequences - Smooth transitions between checkpoints with customizable duration
- Focus distance - Save and restore camera focus settings
- Multi-step animations - Create complex camera movements
- Loop option - Loop camera transitions (return to first checkpoint after last)
Fade Transitions (NEW)
- Fade out/in effects - Professional scene transitions with black screen
- Narration text - Subtitle display during fade (pitch black period)
- Customizable duration - Control fade speed and timing separately
- Storytelling enhancement - Seamless scene changes with narration
Dialog System (Enhanced)
- Speech/Thought bubbles - Display text on Person atoms
- Timing control - Set delay before showing and lifetime duration
- On Enter/Exit - Play dialogs when entering or exiting a pose
- Multiple dialogs - Add unlimited dialogs per pose per person
- Test functionality - Preview dialogs before saving
- Auto-stop - All active dialogs automatically stop when loading a new pose
Advanced Triggers (NEW)
- Event triggers - On Enter and On Exit triggers per pose
- Timed triggers - Triggers that fire at specific times during pose playback
- Multiple timed triggers - Add unlimited timed triggers per pose
- Full trigger system - Access to all VaM trigger actions
- Auto-stop - All timed triggers automatically stop when loading a new pose
CUA Objects Management (NEW)
- Custom asset saving - Capture positions, rotations, scales, and control states
- Control state preservation - Saves and restores on/off toggle state
- Scene integration - Include props, objects, and their states in poses
- Recapture support - Update object positions and states easily
- Multi-object handling - Save unlimited objects per pose
LightAtom Management (NEW)
- Light position saving - Capture LightAtom positions and rotations
- Control state - Save and restore light on/off state
- Scene lighting - Include lighting setup in poses
Subtitle System (NEW)
- Independent subtitles - Separate from fade narration
- Timing control - Delay and lifetime settings
- Per-pose subtitles - Add subtitles to any pose
- Auto-stop - Subtitles automatically stop when loading a new pose
Modern UI (Redesigned)
- Tabbed interface - 5 tabs: POSE, TRIGGERS, CAMERA, OBJECTS, DIALOGS
- Clean design - Modern minimalist with purple-blue accent palette
- Visual pose grid - Thumbnail-based pose selection
- Inline editing - Edit poses and dialogs directly
- Color-coded actions - Different colors for different actions
Technical Details
What Gets Saved
- All Person & Toy atoms: Main controller position/rotation, all free controller positions/rotations, controller states (On/Off, Hold/Parenting)
- Person atoms only: All morph values (excluding plugin-controlled), optional plugin states
- Camera: Multiple checkpoints with transition timings, focus distance
- CUA objects: Position, rotation, scale, control state (on/off)
- LightAtoms: Position, rotation, control state
- Triggers: Event triggers (On Enter/Exit), timed triggers
- Dialogs: All dialog configurations
- Fade settings: Fade duration, pitch black time, narration text
- Subtitle settings: Subtitle text, delay, lifetime
Performance Optimizations
- Freeze animation - Prevents physics interference during capture
- Efficient storage - Only saves changed morphs and controllers
- Morph filtering - Automatically skips plugin-controlled morphs
- Coroutine-based - Non-blocking operations for smooth UI
- Memory efficient - Minimal footprint with cleanup management
- Smart cleanup - All active coroutines (auto-play, timed triggers, dialogs, subtitles) automatically stop when loading a new pose
Compatibility
- RealisticForeskin compatible - Skips dynamic morphs automatically (not tested)
- Multi-person support - Handles unlimited Person atoms
- Scene independence - Presets work across different scenes (atom names must be same)
Files included:
- PoseSaver.cslist - Plugin file list
- PoseSaver.cs - Main plugin controller (1,384 lines)
- PoseData.cs - Advanced pose storage (1,848 lines)
- DialogData.cs - Enhanced dialog system (195 lines)
- PoseUI.cs - Modern tabbed UI (2,513 lines)
- PoseScreenCanvas.cs - On-screen thumbnail buttons (210 lines)
- UIHelpers.cs - Professional styling utilities (184 lines)
- ScreenshotHelper.cs - Thumbnail capture system (85 lines)
- EventTriggerHelper.cs - Custom trigger implementation (233 lines)
Important Notes
- This is a complete rewrite, not just added features
- Most core systems have been rebuilt from scratch
- Transition system uses a different approach for smooth blending
- Code has been refactored and optimized
- Smart cleanup system: When loading a new pose, all active timers and coroutines are automatically stopped:
- Auto-play coroutines
- Timed trigger coroutines
- Dialog display coroutines
- Subtitle coroutines
- This prevents conflicts and ensures clean pose transitions
Credits
- Original work: PoseSaver by Kimowal https://hub.virtamate.com/members/kimowal.57618/