Developer Guide

Slot Structure

Keys:

++ Persistent on Avatar
> Receives Extension Impulses
- <name>/ DynVar Space
EVSConfig ++ - EVSConfig/
├── AvatarSettings ++
├── Advanced ++ (transferred across installs)
├── System ++
│   └── Ring - EVS/
│       └── Templates
│           └── EVSAnchor - EVSAnchor/
│               └── > Extensions
├── ConfigVars ++
└── > Extensions ++ (not transferred across installs)

Extensions may be installed dynamically or, for extensions in EVSConfig/Extensions, saved with the avatar.

Generally, Extensions in EVSConfig/Extensions interface with the Avatar (i.e. driving a blendshape or altering Avatar configuration). Extensions System/Ring/Extensions provide additional system functionality.

There is a template for an installable System Extension which includes context menu functionality as well.

Extension Events

Event Sync? Args? Description
OnPreyMoved Sync Slot Fires when prey moves between containers. Receives a reference to the EVSAnchor slot containing the prey
OnPreyAdded Async Slot Fires when a prey is added to the system. Receives a reference to the EVSAnchor slot containing the prey
OnPreyRemoved Async User Fires when a prey is removed from the system. Receives a reference to the released prey User
OnDigested Sync Slot Fires when a prey is digested. Receives a reference to the EVSAnchor slot containing the prey
OnEquip Sync None Fires when the pred equips a ring
OnUnequip Async None Fires when the pred removes the ring
OnFirstInside Sync Slot Fires when a prey is placed in an inside container for the first time

EVSConfig Vars

All vars are in the EVSConfig/ variable space unless noted otherwise.

Var Type Description
CurrentInsideTotal int Number of prey currently in the EVS

System Vars

All vars are in the EVS/ variable space unless noted otherwise.

Var Type Description
PreyList Slot A slot with a child for each prey currently within the EVS. See the PreyListEntry in "Templates" for details on how to read the entry.
ContainerList Slot A slot with a child for each container currently within the EVS. See the ContainerListEntry in "Templates" for details on how to read the entry.
RecoverySpeed float The speed at which prey recovers after being partially digested if they are removed from digestion before being fully digested. A value of 0.01 will recover 1% per second (I think?)
User/EVSPreyDigested int Total number of digested prey in the current session (resets on User respawn, persists across avatar changes)

EVSAnchor

All vars are in the EVSAnchor/ variable space unless noted otherwise.

Var Type Description
HeadOnly bool True when only prey's head is visible for same-size functionality
InteractivePreyViewTexture IAssetProvider Internal
EVSContainer/LocalVolume float Value local to prey, volume of system sounds
EVSContainer/LocalUserInside bool Value local to prey, indicates whether prey is in the current container
digestBlock bool True if the user does not consent to digestion
User User The user currently within this EVSAnchor
Anchor IAnchor The Resonite Anchor object containing the user
FluxRoot Slot The slot containing the EVSAnchor's flux
SystemRoot Slot The system ring's slot
transition bool True when the prey's view is faded out when travelling between containers
userTexture IAssetProvider The prey's profile pic
username String The prey's username
userIcon SpriteProvider SpriteProvider version of userTexture
digestion float Value 0 to 1 indicating digestion progress
fadeDuration float The duration of the fade transition when the prey moves between anchors
EVSContainer/LocalMovement float Value 0 to 1 indicating how much the prey is moving
CamActive bool True when the prey is visible in the UI
UserRegistered bool True once the system has fully registered this EVSAnchor
PortalActive bool True when the prey has the pred portal visible
PreyMenuRoot Slot The root slot of the prey's context menu
PredMenuRoot Slot The root slot of the pred's context menu
PosingVisible bool True when the prey is adjusting the Anchor pose
ShowFluidJiggle bool Local to prey user.
PortalTexture IAssetProvider<ITexture2D> The texture being displayed on the prey's end of the portal.
Digested bool Becomes true when digestion reaches 1 and stays true
OutsideMuffle bool Decreases the volume of users outside the pred
InitialHipsScale float3 Internal
InitialHeadScale float3 Internal
InitialHipsProxyPos float3 Internal
Fullbody bool True if the system has detected that the prey has fullbody trackers
WasSameSize bool True if the prey entered the system with same-size enabled
Movement float Non-local version of LocalMovement
isInside bool True when the prey is within an interior anchor (i.e. not in the maw or booty anchors)

The variables below may be set on a user's Avatar to override EVS functionality:

Var Type Description
customPreyName String If set, used instead of the prey's username
customPreyIcon URI If set, used instead of the prey's user icon
customPreyColor ColorX If set, used instead of the prey's color
customPreyRemains Slot If set, used as the remains when digested

EVSContainer

Containers are placed under slots on the user's avatar and have an EVSContainer variable space. When prey are inside the container, they exist within the container's hierarchy and can access EVSContainer variables.

While unequipped, containers can be found under the EVSConfig/System/Ring/ContainerStorage slot. Each container should have a "ContainerVars" slot containing a slot for each dynamic variable. Some containers have unique/container-specific variables.

Common Vars

Var Type Description RW?
IsDigesting bool True if digestion is enabled on the container r
EquippedUser User The pred user. If installed in debug/userless mode, this is the host of the session r
FluxRoot Slot The slot containing the container's flux r
TypeHint String One of "mouth", "throat", "stomach", "bowels", "booty", "tip", "urethra", "balls", "vagina", "womb" r
ContainerAbove Slot The previous container (i.e. for throat this would be maw) r
ContainerBelow Slot The next container (i.e. for throat this would be stomach) r
ContainerRoot Slot The slot at the root of the container r
IsInsideContainer bool True when the container is interior (i.e. stomach or throat) r
AcceptingAnchors bool True when the current container can accept an anchor through the dynamic impulses r
escapable bool True when the prey can jump out of the container rw
Name String Name of container for use in UI r
Anchoring bool True when collision anchoring active r
OrifaceUnlocked bool True when orifice an be opened using controller or mouth tracking for mouth container rw

Common Impulses

Above/Below may indicate animation direction for some containers.

Event Sync? Args? Description
AcceptAnchorFromAbove Sync Slot Call this with a ref to the EVSAnchor you would like to transfer to the container.
AcceptAnchorFromBelow Sync Slot Call this with a ref to the EVSAnchor you would like to transfer to the container.

Item Events

Event Sync? Args? Description
EVSRemainsAdded Sync None Fires when a prey is digested and remains are added to the system
EVSItemMoved Sync None Fires when the pred moves an item in the system?
EVSItemForce Sync None Fires when the pred forcibly ejects an item