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;
		}
	}
Exemplo n.º 3
0
	// 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();
	}