User:Mint Shock/System Standard

From Resonite Wiki

This is a early draft of this proposal. Please don't use anything in here yet. Everything is still subject to change.

Standardization is required for collaboration and shared assets. This is a proposal made by Mint_Shock which standardizes a list of Dynamic Variables on the "System" namespace to make systems interoperable and portable and enables users to create systems which can easily be installed onto other objects like tools, avatars, and much more. All without using any developer tools.

Systems are anything that goes on top of an base object. This includes ProtoFlux logic and other assets such as slots, meshes, textures and much more.

All variables must be defined including their namespace to avoid them accidentally binding to the wrong namespace: System/VariableName. The namespace must not rely on non-direct binding of variables.

Setup

The simplest possible system consists of a single slot with all required variables present.

Variables

Dynamic Variables
Name Type Purpose
Root Slot Root slot of the system.
Name String Name of the system. Use a DynamicField with the target being the tag on the system root
User User The user that has the avatar equipped as assigned by the Avatar User Reference Assigner.
HasUser bool If the avatar is currently equipped.
IsAway bool If the user of the avatar is shown as away.
Base String Name of the avatar base. Examples: Davali, Mayu.
Bone.Name Slot All bones of the rig using the original bone names.
BodyNode.Name Slot All armature body nodes using Body Node names.
BodyNode.Name.Bone Slot The associated fake bone, if one is being used.
BodyNode.Name.Hidden bool If the body part should be hidden.
Proxy.Name Slot Proxies using the Body Node names.
RigCollidersEnabled bool As set by Component:VRIKAvatar rigCollidersEnabledStates.
Renderers Slot All renderers are children of this slot.
Renderer.Mesh SkinnedMeshRenderer

MeshRenderer

Renderer.Mesh.Enabled bool Defaults to true.
Material.Name IAssetProvider<Material>
Material.Name.Away IAssetProvider<Material> Material version when IsAway is true.
Menu Slot Radial menu items root slot.
Menu colorX Avatar menu color.
Menu IAssetProvider<Sprite> Avatar menu icon.
Systems Slots All systems are children of this slot.
Voice IWorldAudioDataSource Assigned by Avatar Voice Source Assigner.
VisemeAnalyzer VisemeAnalyzer
VisemeAnalyzer.Strength float Defaults to 1.
VisemeAnalyzer.VoiceOverride IWorldAudioDataSource Defaults to Voice.

Systems

Avatar Standard

The System standard is designed primarely as a extension of the Avatar standard. Both proposals are designed to work together seamlessly. Systems can access variables from the Avatar standard by reading variables from the Avatar namespace.

Example: a flight thruster system might need to know the users hand position. Normally you would have to manually find the users hand slots using ProtoFlux. Avatar standard simplifies this by providing Dynamic variable Avatar/BodyNode.HandL and Avatar/BodyNode.HandR of type Slot

le

See also