This is a work in progress, check back later.
A NeosModLoader mod for Neos VR that allows for creating clones that can be puppeted and controlled by the original.
- Install NeosModLoader.
- Place Puppeteer.dll into your
nml_mods
folder. This folder should be atC:\Program Files (x86)\Steam\steamapps\common\NeosVR\nml_mods
for a default install. You can create it if it's missing, or if you launch the game once with NeosModLoader installed it will create the folder for you. - Start the game. If you want to verify that the mod is working you can check your Neos logs.
This plugin is controlled using dynamic impulses. It will only listen for impulses coming from the user running it.
<userID>.Puppeteer.Available
- Check if the plugin is enabled, will send an impulse to<userID>.Puppeteer.Output
if it is.<userID>.Puppeteer.Start
Slot
- Starts the cloning/puppeting process. The slot passed should include a dynamic variable space containing all the variables listed below. If the process has already started this does nothing.<userID>.Puppeteer.Refresh
Slot
- Performs a deep refresh of everything including source, template and variable changes<userID>.Puppeteer.Stop
Slot
- Stops the cloning/puppeting process on a slot thatStart
was previously called on.
<userID>.Puppeteer.Output
string
- Called by the plugin after a successful impulse<userID>.Puppeteer.Error
string
- Called by the plugin when it encounters an internal error
Alternatively to stop the puppeting process, simply destroy the slot passed in to <userID>.Puppeteer.Start
Source
Slot
- The slot to clone fromTarget
Slot
- The slot to parent the clone underTemplate
Slot
- A slot containing components that will serve as the template for all cloned slots.Include
string
- What slots and components should be cloned over, see options belowPuppet
string
- What fields should be puppeted by the original object, see options belowLive
bool
- If false the clone will only happen once, if true the system will monitor for added/deleted slots. This does not track any other changes.Frequency
float
- Live updates will happen every X seconds, if not included updates happen every frameKeepEmptySlots
bool
- If true keep slots even if they have no components or children
<comma seperate list of component names>
- Copies over only the specified componentsPuppeteer.MeshRenderers
- Will only cloneMeshRenderers
andSkinnedMeshRenderer
componentsPuppeteer.Everything
- Copies everything
Regardless of options provided, SimpleAvatarProtection
components will always be copied.
Puppeteer.Transform
- Copies over position, rotation and scalePuppeteer.Template
- On every slot looks for aReferenceField<Slot>
calledPuppeteer.Source
and writes the source of the current slot to it