/
Configuring an Extended Command
Configuring an Extended Command
How to Register/use the Extended Command Type
The following shows how to implement your own extended command message and handler. The main components are:
Register your command handler to NetworkManager
Implement the handler and process your payload
Example Implementation:
// Requirements:
// Register your command handler
NetworkManager.Instance.RegisterExtendedCommandHandler("[Type.NameHere]", ProcessExtendedCommandHandlerHere);
// Implement your handlers processor `ProcessExtendedCommandHandlerHere`
private void ProcessExtendedCommandHandlerHere(ushort connectionId, uint fromNetworkId, uint networkId, UserWorldContext ux, string type, byte[] commandBuffer) { /* Process message here */ }
// Example:
// Register to NetworkManager
NetworkManager.Instance.RegisterExtendedCommandHandler("Diagnostic.timeToJoin", ProcessExtendedTimeToJoin);
// Build message and fire off
// A ProcessUserJoin starts and ends, invoking UserJoinedInXSeconds via an event handler which prepares the message and sends it.
private void UserJoinedInXSeconds(object sender, long timeTaken)
{
// Declare type and payload
var type = "Diagnostic.timeToJoin";
var message = $"User joined the session in: {timeTaken} ms.";
// Encode payload
byte[] buffer = Encoding.UTF8.GetBytes(message);
// Pass onto NetworkManager to broadcast message to clients
NetworkManager.Instance.SendToHostOrBroadcast(new ExtendedCommandMessage
{
Command = buffer,
ExtendedType = type
});
}
// On client's receiving extended command, process payload.
private void ProcessExtendedTimeToJoin(ushort connectionId, uint fromNetworkId, uint networkId, UserWorldContext ux, string type, byte[] commandBuffer)
{
// Decode the command buffer back into the original string message
string message = Encoding.UTF8.GetString(commandBuffer);
UnityEngine.Debug.Log($"Received extended command '{type}' from NetworkId: {fromNetworkId}. Message: {message}");
}
, multiple selections available,
Related content
Configuring a Motive App to use Liveplay
Configuring a Motive App to use Liveplay
Read with this
How to use Timer Conditions to Prompt the Learner
How to use Timer Conditions to Prompt the Learner
More like this
Creating an Intent
Creating an Intent
More like this
Best Practices for Creating Intents
Best Practices for Creating Intents
More like this
Object Event Condition
Object Event Condition
More like this