/ Scripts /

Contains all scripts neccessary to get started with Vivox

/3D Positional

Contains 3D positional scripts for different networking stacks. Work In Progress (WIP)

/EasyBackend

Contains scripts that are that are related to EasyCodeForVivox and not really necessary to get Vivox working. These scripts make using Vivox as easy as possible by abstracting boiler-plate code

/EasyEvents

Provides access to all Vivox events and an easy way to subscribe methods to Vivox Events using Attributes like NetCode or Mirror Networking does with Server/Client RPC's. This functionality relies on the System.Reflection library which is known to be slow but I don't know how to use Mono.Cecil or C# Dynamic Methods with IL Emit/OpCodes. EasyCode searches assemblies for any methods containing EasyCode event Attributes (ex. [LoginEvent(LoginStatus.LoggedIn)]) at the start of the application.

When running starting your game/app EasyCode skips common assemblies (you can't modify them anyways) to speed up the search and uses async methods to prevent UI blocking as your application starts. EasyCode also stores all found methods containing event Attributes and caches/stores them in-memory (static dictionary) and when Vivox Events are invoked it searches the cache, finds the gameobject that contains the correct event Attribute with a matching parameter type and calls/invokes the method.

As of right now using DynamicEvents will work on public, private, and static methods. Gotcha - If the method and class is static an exception may be thrown. I have yet to test this out but be warned.

/Extensions

Extension methods used to make accessing Unity UI and Vivox related classes/interfaces easier

/Interfaces

Provides interfaces to be used with Dependency Injection. May delete in future because I am not currently using them(Most of the current interfaces will not have duplicate implementations)

/ScriptableObjects

Scriptable Objects that EasyCode Uses to make using and configuring EasyCode asset easier

/Utilities

Scripts that don't have dependencies that are helper methods to make working with Vivox easier

/VivoxBackend

Contains all core Vivox Functionality and scripts that are Vivox related. I wanted to keep EasyCode logic out of these scripts but decided it was pointless because I will eventually have documentation or updated YouTube tutorials on how to create this asset from scratch. It would have been redundant and created more duplicate code

/Zenject Installers

Installer Scripts that specify which dependencies I want Zenject to manage and inject for me

Anyways if you need working examples of how to use Vivox before I create In-Depth tutorials checkout the /VivoxBackend folder!

Last updated