How To Create Plugins/Creating Components

From Resonite Wiki

Creating components is one of the easiest part of making a plugin.

Creating the component file

  1. Add references to
    • FrooxEngine
    • Elements.Core
  2. Next, assign a namespace to your component. It can be anything but creating a custom one for your plugin is recommended to avoid conflicts. A good example is MyPlugin.Components. Making the namespace follow the category inside of the game is recommended.
  3. Set your category, this is where your component is placed in the browser.
    • This is done by adding a [Category("PATH")] before your component class.
    • Some examples:
      • [Category("MyPlugin/Transform")]
      • [Category("MyPlugin/Users")]

Creating the component class

  1. Create a new class inside of your namespace
    • It should be a public class which inherits the Component class.
    • So your code should look like: public class MyComponent : Component
  2. Create your variables
    • These go immediately after you start the class and follow a few rules to show up in the in game inspector:
      • It must be public
      • It must be readonly
      • It must be a synced equivalent of your original type. Such as Sync<T>.
    • If you do not want your variable to show up in game:
      • It should be private
      • It does not need to be readonly
      • It does not need to be a synced type.
    • Do not assign default values. These should be assigned in OnAttach()
    • Examples:
      • public readonly SyncRef<Slot> MySlotReference;
      • public readonly Sync<bool> MyBoolValue;
      • private bool AnInternalValue;

Adding functionality

FrooxEngine has many events you can hook your functionality into, to do this you need to add a protected override to each of these. Do not return any values. You can see a full list of functions at Custom Components

For this guide, we'll focus on the basics

Function Description
OnAttach() Called when the component is attached. If you want any default values, you assign them here.
OnEnabled() Called when the component is enabled
OnDisabled() Called when the component is disbaled
OnCommonUpdate() Called every update, or approximately 60 times per second.
OnDestroying() Called just before the component is destroyed. Usually used to unlink drives.