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 |