Skip to main content

AreaTrigger

Associated namespace: sm.areaTrigger

A userdata object representing an area trigger in the game.

Values:
  • id [ int ]

    • Get: The ID of the AreaTrigger.
Operations:
OperationDescription
AreaTrigger == AreaTriggerChecks if two instances of AreaTrigger refer to the same AreaTrigger.

Functions

bindOnEnter

AreaTrigger:bindOnEnter( callback, object = nil )

Binds an area trigger's onEnter event to a custom callback.

The onEnter event is triggered when an object enters the trigger area.

The callback receives:

  • self [ table ]: The class instance.
  • trigger [ AreaTrigger ]: The area trigger instance.
  • results [ table ]: A table of objects that entered the trigger area.
Arguments:
  • AreaTrigger [ AreaTrigger ]: The AreaTrigger.
  • callback [ string ]: The name of the Lua function to bind.
  • object [ table ]: The object that will receive the callback. (optional)
Example Usage
MyClass = class()

function MyClass.server_onCreate( self )
local position = self.shape:getWorldPosition()
local size = sm.vec3.new( 1, 1, 1 )

self.myTrigger = sm.areaTrigger.createBox( size, position )
self.myTrigger:bindOnEnter( "onEnter" )
end

function MyClass.onEnter( self, trigger, results )
for k, object in ipairs( results ) do
print( object, "just entered" )
end
end

bindOnExit

AreaTrigger:bindOnExit( callback, object = nil )

Binds an area trigger's onExit event to a custom callback.
The onExit event is triggered when an object leaves the trigger area.

The callback receives:

  • self [ table ]: The class instance.
  • trigger [ AreaTrigger ]: The area trigger instance.
  • results [ table ]: A table of objects that left the trigger area.
Arguments:
  • AreaTrigger [ AreaTrigger ]: The AreaTrigger.
  • callback [ string ]: The name of the Lua function to bind.
  • object [ table ]: The object that will receive the callback. (optional)
Example Usage
MyClass = class()

function MyClass.server_onCreate( self )
local position = self.shape:getWorldPosition()
local size = sm.vec3.new( 1, 1, 1 )

self.myTrigger = sm.areaTrigger.createBox( size, position )
self.myTrigger:bindOnExit( "onExit" )
end

function MyClass.onExit( self, trigger, results )
for k, object in ipairs( results ) do
print( object, "just left" )
end
end

bindOnStay

AreaTrigger:bindOnStay( callback, object = nil )

Binds an area trigger's onStay event to a custom callback.
The onStay event is triggered every tick as long as an object is staying inside of the trigger area.

The callback receives:

  • self [ table ]: The class instance.
  • trigger [ AreaTrigger ]: The area trigger instance.
  • results [ table ]: A table of objects that are in the trigger area.
Arguments:
  • AreaTrigger [ AreaTrigger ]: The AreaTrigger.
  • callback [ string ]: The name of the Lua function to bind.
  • object [ table ]: The object that will receive the callback. (optional)
Example Usage
MyClass = class()

function MyClass.server_onCreate( self )
local position = self.shape:getWorldPosition()
local size = sm.vec3.new( 1, 1, 1 )

self.myTrigger = sm.areaTrigger.createBox( size, position )
self.myTrigger:bindOnStay( "onStay" )
end

function MyClass.onStay( self, trigger, results )
print( #results, "objects inside trigger area" )
end

bindOnProjectile

AreaTrigger:bindOnProjectile( callback, object = nil )

Binds an area trigger's onProjectile event to a custom callback.
The onProjectile event is triggered if a projectile collides with the trigger area.

Arguments:
  • AreaTrigger [ AreaTrigger ]: The AreaTrigger.
  • callback [ string ]: The name of the Lua function to bind.
  • object [ table ]: The object that will receive the callback. (optional)

getContents

AreaTrigger:getContents()

Gets the contents of the area trigger.

Arguments:
Returns:
  • [ table ]: The objects inside the trigger area.

getHostInteractable

AreaTrigger:getHostInteractable()

Returns the attached host interactable.

Arguments:
Returns:

getId

AreaTrigger:getId()

Returns the id of the area trigger.

Arguments:
Returns:
  • [ int ]: The area trigger's id.

getShapes

AreaTrigger:getShapes()

Returns the shapes inside the trigger area.

Arguments:
Returns:
  • [ table ]: A table containing all Shapes that are inside the AreaTrigger, each contained in the following data structure:

getSize

AreaTrigger:getSize()

Returns the size of an area trigger.

Arguments:
Returns:
  • [ Vec3 ]: The area trigger's size.

getUserData

AreaTrigger:getUserData()

Returns the userdata set on the area trigger.

Arguments:
Returns:
  • [ table ]: The area trigger's userdata.

getWorldMax

AreaTrigger:getWorldMax()

Returns the world max corner position of an area trigger.

Arguments:
Returns:
  • [ Vec3 ]: The area trigger's max corner position.

getWorldMin

AreaTrigger:getWorldMin()

Returns the world min corner position of an area trigger.

Arguments:
Returns:
  • [ Vec3 ]: The area trigger's min corner position.

getWorldPosition

AreaTrigger:getWorldPosition()

Returns the world position of an area trigger.

Arguments:
Returns:
  • [ Vec3 ]: The area trigger's world position.

getWorldRotation

AreaTrigger:getWorldRotation()

Returns the world rotation of an area trigger.

Arguments:
Returns:
  • [ Quat ]: The area trigger's world rotation.

hasVoxelTerrainContact

AreaTrigger:hasVoxelTerrainContact()

Returns true if the AreaTrigger is in contact with destructable terrain.

Arguments:
Returns:
  • [ bool ]: Destructable terrain contact.

setShapeDetection

AreaTrigger:setShapeDetection( detectShapes )

Shape detection is off by default. When set to true the area trigger can calculate which shapes are inside of the trigger area with a call to AreaTrigger:getShapes()

Arguments:
  • AreaTrigger [ AreaTrigger ]: The AreaTrigger.
  • detectShapes [ bool ]: Whether shape detection is on or off.

setSize

AreaTrigger:setSize( size )

Sets the new size of an area trigger.

Arguments:

setWorldPosition

AreaTrigger:setWorldPosition( position )

Sets the new world position of an area trigger.

Arguments:
  • AreaTrigger [ AreaTrigger ]: The AreaTrigger.
  • position [ Vec3 ]: The area trigger's new world position.

setWorldRotation

AreaTrigger:setWorldRotation( rotation )

Sets the new world rotation of an area trigger.

Arguments:
  • AreaTrigger [ AreaTrigger ]: The AreaTrigger.
  • rotation [ Quat ]: The area trigger's new world rotation.