void OnCustomMessage( BitReader reader ) { CustomMessageType message = (CustomMessageType)reader.Byte(); if( message != CustomMessageType.RoomNameResponse ) { _settings.display.text += $"Unexpected custom message type: {message}\n"; return; } int length = reader.ArrayPacked<char>( _charBuffer ); _sb.Clear(); _sb.Append( _charBuffer, 0, length ); _world.SetClientRoom( _sb.ToString() ); _settings.display.text += "Got room scene from server: '" + _world.GetClientRoom() + "'\n"; _exitTime = Time.time + _world.GetMinimumDisplayTime(); }
public void OnUpdate() { _network.UpdateClient(); if( !_load.isDone ) { return; } else if( _exitTime == 0f ) { _settings.display.text = "Room load completed."; _exitTime = Time.time + _world.GetMinimumDisplayTime(); } if( Time.time > _exitTime ) { _transitionState = ClientStateId.SpawnAvatar; } }
// PRIVATE void OnEntitySpawn( Entity entity ) { if( entity.GetOwner() != _network.GetLocalNodeIndex() || entity.GetPrefabIndex() != Prefab.PLAYER ) { // ignore any spawns that are not owned by us or that are not players Log.Info( $"Server spawned prefab: {entity.GetPrefabIndex().GetIndex()} with owner: {entity.GetOwner().GetDebugString()} but that is not our avatar." ); return; } GameObject go = entity.gameObject; AvatarSettings avatarSettings = go.GetComponent<AvatarSettings>(); if( avatarSettings == null ) { _settings.display.text += $"Spawned player entity doesn't have an AvatarSettings behaviour\n\n"; return; } Avatar avatar = new Avatar( avatarSettings, _world ); _settings.display.text += "Successfully spawned player entity with AvatarController\n\n"; _world.SetAvatar( avatar ); _exitTime = Time.time + _world.GetMinimumDisplayTime(); }