Preset Definitions (Non-person Atoms)

Guides Preset Definitions (Non-person Atoms)

Support me on Patreon and get exclusive access to plugin features: https://www.patreon.com/jayjaywon

The below table captures the scope of each preset type for non-person atoms. Please let me know if you spot any inaccuracies or missing differences.
A similar summary for Person atoms can be found here: https://hub.virtamate.com/resources/preset-definitions.189/

VAM FeatureAtom Types / CategoriesLook
(Legacy)
Pose
(Legacy)
Preset
(Legacy)
Preset
Atom Name
All​
✅
✅
✅
Atom Position
All​
✅
✅
Control Node state
All​
✅
✅
Physics Control & Object
All except:
AudioSource, RhythmAudioSource, ClothGrabSphere, SimpleSign, UIText, VaMLogo, VaMSign, WebBrowser, WebPanel, WebPanelEmissive​
✅
✅
Physics Material Control (bounciness and friction)
All except:
CustomUnityAsset, SimSheet, AudioSource, RhythmAudioSource, ClothGrabSphere, SimpleSign, UIText, VaMLogo, VaMSign, WebBrowser, WebPanel, WebPanelEmissive​
✅
✅
✅
Parent Atom
All​
✅
✅
✅
Scale
All except:
AudioSource, RhythmAudioSource, SimpleSign​
✅
✅
✅
Scene Animation
All​
✅
✅
Collision Triggers
All​
✅
✅
✅
Plugins
All​
✅
✅
Plugin Parameters
All​
✅
❌
Asset
CustomUnityAsset​
✅
✅
✅
Animation Pattern settings
AnimationPattern, AnimationStep​
✅
✅
✅
Animation Triggers
AnimationPattern, AnimationStep​
✅
✅
✅
Child Animation Steps
AnimationPattern​
✅
✅
Material
FloorsAndWalls, Lights (except InvisibleLight), Props, ReflectiveGlass, Shapes, AptSpeaker, Toys, ImagePanel, SimpleSign, VaMLogo, WebPanel, WebPanelEmissive​
✅
✅
✅
Cycle Force
CycleForce​
✅
✅
✅
Grab Point
GrabPoint​
✅
✅
✅
Rhythm Force
RhythmForce​
✅
✅
✅
Rhythm Audio
RhythmForce​
✅
✅
Rhythm Audio Volume Triggers
RhythmForce​
✅
✅
✅
Sync Force
SyncForce​
✅
✅
✅
Light
Lights
✅
✅
✅
Light Drive
TechnoLight​
✅
✅
✅
Cloth Physics
SimSheet​
✅
✅
✅
Reflection
Reflective
✅
✅
✅
Audio Source
Sound
✅
✅
Audio Volume Triggers
Sound
✅
✅
✅
Toy Spring
Dildo​
✅
✅
✅
Url
ImagePanel, ImagePanelEmissive, ImagePanelTransparent, ImagePanelTransparenEmissive​
✅
✅
✅
Sign
SimpleSign​
✅
✅
✅
Text
UIText​
✅
✅
✅
Motion Animation
SubScene​
SubScene
SubScene​
Browser
WebBrowser​
✅
✅
✅
Web
WebPanel, WebPanelEmissive​
✅
✅
✅

Notes:
  1. Legacy Presets
    Prior to VAM v1.17 there were only three types of presets (Look, Pose and Preset) and these remain as the 'legacy' preset functions:
    1590068793849.png

    In v1.17 a more refined set of 9 Presets (.vap file extension) were introduced for Person atoms and a single equivalent preset for non-person atoms was also added:
    1608555176061.png
  2. Plugin parameters / data
    As of VAM v1.20.1.5, there is a bug in the new preset type (.vap file extensions) that means plugin data is not saved as part of the preset. Meshed has indicated this will be fixed in the next version: https://hub.virtamate.com/threads/1-20-1-6-cua-preset-plugin-storables-missing.4096/
  3. Plugin parameters & Legacy presets
    Plugin authors can determine which data items are stored in each of the 3 legacy preset types. Most commonly this is done by setting the storeType attribute of a JSONStorable object as follows:
C#:
_offsetZ = new JSONStorableFloat("Offset Z", 0f, -maxoffset, +maxoffset);
RegisterFloat(_offsetZ);
_offsetZ.storeType = JSONStorableParam.StoreType.Full;

The storeType can be set to Appearance, Physical, Full or Any which will result in the attribute being stored as follows:
JSONStorableParam.StoreTypeLook
(Legacy)
Pose
(Legacy)
Preset
(Legacy)
Appearance✅✅
Physical✅✅
Full✅
Any✅✅✅
The default storeType (should the plugin author not specify) is Appearance. Therefore a common problem is that plugin settings are saved and restored with Save/Load Look - which is often not intended. If the plugin author does not want registered JSONStorables to be included in legacy Looks or Poses, then the storeType should be set to Full. With the increased prevalence of non-legacy presets this is less of a problematic issue, but many of the problems people experience with legacy presets and plugins are due to the plugin author (jncluding myself!) not correctly setting the storeType attribute.

The alternative method for plugin authors to store data is by overriding the GetJSON() and RestoreFromJSON() methods. These methods have Appearance and Physical boolean parameters to allow the plugin author to support similar functionality for legacy preset saving/restoring of plugin data (or not).

JayJayWon Patreon Link 2 (white).png
Author
JayJayWon
Views
6,775
First release
Last update
Rating
5.00 star(s) 3 ratings

More resources from JayJayWon

Latest updates

  1. Issued v1

    Completed a first cut of this guide. I believe this is comprehensive and accurate, but welcome...

Latest reviews

Another priceless table
Upvote 0
Thanks for making this guide! It is very helpful :)
Upvote 0
Thank you for sharing! I'm finally find a way to keep Collision Triggers val !!
Upvote 0
Back
Top Bottom