Todo / Notes / Changelog
Last updated
Was this helpful?
Last updated
Was this helpful?
Transfer blogs to HashNode for time being
Setup forums with identity
This does not reflect what will or wont be in EasyCodeForVivox officially
Figure out where to Unsubscribe events **Update** I originally was unsubscribing from the event reference that was passed in when invoking event handlers but realized after messing with the UI that it was not properly unsubscribing because I would have duplicate values when re-logging in. Have realized that you need to Unsubscribe using the original object (ex. loginSession, channelSession) and it is best to do so when Loggin out or leaving a channel for example and not from the invoked method called by event delegates
Delete LocalUserUnmuted or remove bool parameter
Handle Failed direct messages (should be handled server side so maybe not, provide easy way for users to access these )
audio injection ** not working right now. posted question Unity Vivox Forum
add Login Properties changed methods
add CloudCode support so EasyCode calls users cloud function url and gets access token instead of creating token on client
add lobby support to auto create channels
add unity authentication support so player name is PlayerId from authentication
Add Server example of getting access token from server (not cloud code)
add events for detecting audio device change
add events for LoginSessions added - dynamic, normal & async
add errors /warnings for mismatched parameter types in dynamic events
If are using Zenject project context in your project this may cause conflicts. I will test this and see if it's a problem
add DisplayName optional parameter for Login method
Dynamic events don't work on internal classes (test it out)
Decide if it's worth keeping the SendEventMessage because it is bad practice IMO. Keep an example for the archive for users who dont use a networking stack
remove unused casts/unboxing in Event callbacks in backend scripts and EasyEvents
add validation option in editor and at runtime to see if Dynamic events have matching parameters since i dont know how to use Linters/Code Analysis/Rosylin. Maybe use Mono.Cecil
test new multiple login sessions (it works but can't switch between login sessions they are all active, custom logic must be implemented to handle this)
Add unity authentication
add EasySettings for Logging, APi keys, Dynamic events and other config settings. Use Scriptable objects for settings/config instead of static variables. Can dependency inject settings
use epoch for VivoxAccessToken unique identifier?
Test channel name for regions and squad matches (large scale channel identifiers, probably not needed but I want to provide as production as ready as possible)
Move UserMuted events from EasyUsers to EasyMute
3d demo scene
add Lobby and matchmaking to 3d demo scene. Maybe seperate scene
Test 3d positional audio with Human Models
EasyManager singleton pattern Demo scene (Using Static EasySession)
Easy Manager Dependency Injection split into different game objects/scripts based on functionality with wrapper classes to make using buttons (they require void methods) easier
Easy Manager Dependency Injection without wrapper class that still has wrapper methods for using buttons
Add Squad and server naming for large scale matches to demo scene
Set transmission mode is for unsecured channels. how to do with VivoxAccesTokens??
see if Cross mute works
add events for audio devices, cross mute communications
make sure TTS works, handle full queue for TTS
add TTS options dropdown to demo scene
Transfer OldExtensions to new EasyExtensions
add option to set mic sensitivity and Noise Floor (VAD)
add option to switch transmission for logged in user in the demo scene
add option to set 3d audio settings for positional channel in demo scene
test android audio/speakers with Bluetooth headphones
add opt-in for EasyCode Debug.Logs for Vivox Events, use Log Levels like Serilog and Unity's NetCode for Gameobjects
test importing EasyCode with an emptyish project that already has zenject to see if there are assembly/naming conflicts, ** Update ** Unity will detect if the same files exist in a project and therefor not import them. A user would have to force import and that would create naming conflicts
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.
remotePlayerinChannelDropdown - Selected player can be muted/unmuted using the Admin Panel (Will be added in future version. Version 2.0 will not have it)
Add EasyServer for Server2Server moderation / Create ready to go examples for Cloud Code/Lambda/Functions
Tried removing dependencies from EasyManager.cs but ended up still injecting everything. It is basically a super class. I plan on making examples on how to break apart easy manager for more modular design
Project Context - Loaded by empty Zenject Scene Context (EasyManager requires it and will add automatically). When loaded it uses Zenject to create a Project Level Context so dependencies will be stored/available across scenes. If are using Zenject project context in your project this may cause conflicts. I will test this eventually and see if it's a problem. You can always report an issue here
Zenject is a 3rd party dependency that I may not be able to use because of licensing and Unity Asset Store Guidelines. Add Zenject license in my asset and specify in new release
Update Offline Documentation, can't publish to Unity Asset Store without it
xml docs
go thru and search for // todo
comments and fix/handle them
Go thru discord and look at all the errors and code snippets and questions that are asked to update the FAQ, get YouTube video ideas and create an Error Solution page that shows common fixes to common errors
If I update asset to only use Unity 2020+ consider using interfaces with public and private members and consider bringing back Michael Milton's custom chat scene (ask him if it's okay to remove editor coroutines and his custom versioning scripts)
Have someone test EasyCode on IOS, Mac, Consoles
provide examples on how to have different Project context for Zenject and have multiple EasySettings for different scenes, game types, or prod/dev environments