zones
trigger datablock
datablock TriggerData(Bounds_Trigger)
{
tickPeriodMS = 50;
};
tickPeriodMS specifies how often it checks for updates on player positions
code for entering and leaving triggers
function Bounds_Trigger::onEnterTrigger(%db,%trig,%pl)
{
parent::onEnterTrigger(%db,%trig,%pl);
}
function Bounds_Trigger::onLeaveTrigger(%db,%trig,%pl)
{
parent::onLeaveTrigger(%db,%trig,%pl);
}
every tick of the trigger any player inside will call this function
function Bounds_Trigger::onTickTrigger(%db,%trig,%pl)
{
parent::onTickTrigger(%db,%trig,%pl);
}
code to create a trigger the same position and dimensions of a brick
function fxDtsBrick::createTrigger(%this,%data,%polyhedron)
{
if(%polyhedron $= "")
%polyhedron = "0 0 0 1 0 0 0 -1 0 0 0 1";
if(isObject(%this.trigger))
%this.trigger.delete();
%t = new Trigger()
{
datablock = %data;
polyhedron = %polyhedron;
};
missionCleanup.add(%t);
%boxMax = getWords(%this.getWorldBox(), 3, 5);
%boxMin = getWords(%this.getWorldBox(), 0, 2);
%boxDiff = vectorSub(%boxMax,%boxMin);
%boxDiff = vectorAdd(%boxDiff,"0 0 0.2");
%t.setScale(%boxDiff);
%posA = %this.getWorldBoxCenter();
%posB = %t.getWorldBoxCenter();
%posDiff = vectorSub(%posA, %posB);
%posDiff = vectorAdd(%posDiff, "0 0 0.1");
%t.setTransform(%posDiff);
%this.trigger = %t;
%t.brick = %this;
return %t;
}