Skip to main content
Skip to main content

PlayerRemoteNetworkComponent

PlayerRemoteNetworkComponent

Description

The class which handles interpolating player actions for non-controlled players on other clients.

Parent

PlayerNetworkComponent

Functions

new

Description

Creates a new network component for the given player.

Definition

new(Player player)

Arguments

PlayerplayerThe player whose position and state is being managed by this component.

Return Values

PlayerinstanceThe created instance.

Code

function PlayerRemoteNetworkComponent.new(player)
local self = PlayerNetworkComponent.new(player, PlayerRemoteNetworkComponent _mt)

-- The player.
self.player = player

return self
end

readUpdateStream

Description

Reads the data from the incoming network stream and handles the state.

Definition

readUpdateStream(integer streamId, Connection connection, integer timestamp)

Arguments

integerstreamIdThe id of the stream from which to read.
ConnectionconnectionThe connection between the server and the target client.
integertimestampThe current timestamp for synchronisation purposes.

Code

function PlayerRemoteNetworkComponent:readUpdateStream(streamId, connection, timestamp)

PlayerRemoteNetworkComponent:superClass().readUpdateStream( self , streamId, connection, timestamp)

local isControlled = streamReadBool(streamId)
local skipModel = streamReadBool(streamId)
local skipMover = streamReadBool(streamId)
self.player:updateControlledState(isControlled, skipModel, skipMover)

local receivedPositionX = streamReadFloat32(streamId)
local receivedPositionY = streamReadFloat32(streamId)
local receivedPositionZ = streamReadFloat32(streamId)
local receivedYaw = NetworkUtil.readCompressedAngle(streamId)
local isGrounded = streamReadBool(streamId)
local isFirstPerson = streamReadBool(streamId)
local isCrouching = streamReadBool(streamId)

local isVisible = streamReadBool(streamId)
self.player.graphicsComponent:setGraphicsRootNodeVisibility(isVisible)

local interpolator = self.player.positionalInterpolator
interpolator:setTargetPosition(receivedPositionX, receivedPositionY, receivedPositionZ)
interpolator:setTargetYaw(receivedYaw)
interpolator:startNetworkNewPhase()

self.player.mover.isGrounded = isGrounded
self.player.mover:setIsCrouching(isCrouching)

self.player.isFirstPerson = isFirstPerson
end