Skip to main content
Skip to main content

FenceSegmentEvent

FenceSegmentEvent

Description

Event for adding fence segment

Parent

Event

Functions

emptyNew

Description

Create instance of Event class

Definition

emptyNew()

Return Values

anyselfinstance of class event

Code

function FenceSegmentEvent.emptyNew()
return Event.new( FenceSegmentEvent _mt, NetworkNode.CHANNEL_MAIN)
end

new

Description

Create new instance of event

Definition

new(Placeable fencePlaceable, Segment segment)

Arguments

PlaceablefencePlaceablefencePlaceable object
Segmentsegmentsegment instance

Return Values

Segmentself

Code

function FenceSegmentEvent.new(fencePlaceable, segment)
local self = FenceSegmentEvent.emptyNew()

self.fencePlaceable = fencePlaceable
self.segment = segment

return self
end

readStream

Description

Called on client side on join

Definition

readStream(integer streamId, Connection connection)

Arguments

integerstreamIdstreamId
Connectionconnectionconnection

Code

function FenceSegmentEvent:readStream(streamId, connection)
self.fencePlaceable = NetworkUtil.readNodeObject(streamId)
local templateIndex = streamReadUInt8(streamId)

local fence = self.fencePlaceable:getFence()
local templateId = fence:getSegmentTemplateIdByIndex(templateIndex)
self.segment = fence:createNewSegment(templateId)

self.segment:readStream(streamId, connection)

self:run(connection)
end

run

Description

Run action on receiving side

Definition

run(Connection connection)

Arguments

Connectionconnectionconnection

Code

function FenceSegmentEvent:run(connection)
if self.fencePlaceable ~ = nil and self.fencePlaceable:getIsSynchronized() then

-- segments should be valid because data was already validated on server
self.segment:updateMeshes( true , false )
self.segment:finalize()
end
end

writeStream

Description

Called on server side on join

Definition

writeStream(integer streamId, Connection connection)

Arguments

integerstreamIdstreamId
Connectionconnectionconnection

Code

function FenceSegmentEvent:writeStream(streamId, connection)
NetworkUtil.writeNodeObject(streamId, self.fencePlaceable)

local segmentId = self.segment:getId()
local fence = self.fencePlaceable:getFence()
local fenceTemplateIndex = fence:getSegmentTemplateIndexById(segmentId)

streamWriteUInt8(streamId, fenceTemplateIndex)
self.segment:writeStream(streamId, connection)
end