Skip to main content
Skip to main content

Basketball

Basketball

Description

Class for basketballs

Parent

PhysicsObject

Functions

createNode

Description

Load node from i3d file

Definition

createNode(string i3dFilename)

Arguments

stringi3dFilenamei3d file name

Code

function Basketball:createNode(i3dFilename)
self.i3dFilename = i3dFilename
self.customEnvironment, self.baseDirectory = Utils.getModNameAndBaseDirectory(i3dFilename)
local basketballRoot, sharedLoadRequestId = g_i3DManager:loadSharedI3DFile(i3dFilename, false , false )
self.sharedLoadRequestId = sharedLoadRequestId

local basketballId = getChildAt(basketballRoot, 0 )
link(getRootNode(), basketballId)
delete(basketballRoot)

self:setNodeId(basketballId)
end

delete

Description

Deleting basketball object

Definition

delete()

Code

function Basketball:delete()
if self.sharedLoadRequestId ~ = nil then
g_i3DManager:releaseSharedI3DFile( self.sharedLoadRequestId)
self.sharedLoadRequestId = nil
end
unregisterObjectClassName( self )
Basketball:superClass().delete( self )
end

load

Description

Load Basketball

Definition

load(string i3dFilename, float x, float y, float z, float rx, float ry, float rz)

Arguments

stringi3dFilenamei3d file name
floatxx world position
floatyz world position
floatzz world position
floatrxrx world rotation
floatryry world rotation
floatrzrz world rotation

Code

function Basketball:load(i3dFilename, x,y,z, rx,ry,rz)
self.i3dFilename = i3dFilename
self.customEnvironment, self.baseDirectory = Utils.getModNameAndBaseDirectory(i3dFilename)
self:createNode(i3dFilename)
setTranslation( self.nodeId, x, y, z)
setRotation( self.nodeId, rx, ry, rz)

return true
end

new

Description

Creating basketball object

Definition

new(boolean isServer, boolean isClient, table? customMt)

Arguments

booleanisServeris server
booleanisClientis client
table?customMtcustomMt

Return Values

table?instanceInstance of object

Code

function Basketball.new(isServer, isClient, customMt)
local self = PhysicsObject.new(isServer, isClient, customMt or Basketball _mt)

self.forcedClipDistance = 150
self.sharedLoadRequestId = nil
registerObjectClassName( self , "Basketball" )

return self
end

onCreate

Description

Creating basketball

Definition

onCreate(integer id)

Arguments

integeridnode id

Code

function Basketball:onCreate(id)
local basketball = Basketball.new(g_server ~ = nil , g_client ~ = nil )
local x, y, z = getWorldTranslation(id)
local rx, ry, rz = getWorldRotation(id)
local filename = Utils.getNoNil(getUserAttribute(id, "filename" ), "$data/objects/basketball/basketball.i3d" )
filename = Utils.getFilename(filename, g_currentMission.loadingMapBaseDirectory)

if basketball:load(filename, x, y, z, rx, ry, rz) then
g_currentMission.onCreateObjectSystem:add(basketball)
basketball:register( true )
else
basketball:delete()
end
end

readStream

Description

Called on client side on join

Definition

readStream(integer streamId, table connection)

Arguments

integerstreamIdstream ID
tableconnectionconnection

Code

function Basketball:readStream(streamId, connection)
if connection:getIsServer() then
local i3dFilename = NetworkUtil.convertFromNetworkFilename(streamReadString(streamId))
if self.nodeId = = 0 then
self:createNode(i3dFilename)
end
Basketball:superClass().readStream( self , streamId, connection)
end
end

writeStream

Description

Called on server side on join

Definition

writeStream(integer streamId, table connection)

Arguments

integerstreamIdstream ID
tableconnectionconnection

Code

function Basketball:writeStream(streamId, connection)
if not connection:getIsServer() then
streamWriteString(streamId, NetworkUtil.convertToNetworkFilename( self.i3dFilename))
Basketball:superClass().writeStream( self , streamId, connection)
end
end