78 lines
2.2 KiB
C#
78 lines
2.2 KiB
C#
|
//-----------------------------------------------------------------------------
|
||
|
// Torque Game Engine
|
||
|
//
|
||
|
// Copyright (c) 2001 GarageGames.Com
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
datablock AudioProfile(ButtonClick)
|
||
|
{
|
||
|
filename = "~/data/sound/ButtonClick.wav";
|
||
|
description = AudioDefault3d;
|
||
|
preload = true;
|
||
|
};
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Single action button that resets after a default elapsed time.
|
||
|
// When activated the button triggers all the objects in it's group.
|
||
|
|
||
|
datablock StaticShapeData(PushButton)
|
||
|
{
|
||
|
className = "Button";
|
||
|
category = "Buttons";
|
||
|
shapeFile = "~/data/shapes/buttons/pushButton.dts";
|
||
|
resetTime = 5000;
|
||
|
};
|
||
|
|
||
|
function PushButton::onAdd(%this, %obj)
|
||
|
{
|
||
|
%obj.activated = false;
|
||
|
if (%obj.triggerMesg $= "")
|
||
|
%obj.triggerMesg = "true";
|
||
|
if (%obj.resetTime $= "")
|
||
|
%obj.resetTime = "Default";
|
||
|
}
|
||
|
|
||
|
function PushButton::onCollision(%this,%obj,%col,%vec, %vecLen, %material)
|
||
|
{
|
||
|
echo(%material);
|
||
|
// Currently activates when any object hits it.
|
||
|
if (%material $= "ButtonMaterial")
|
||
|
%this.activate(%obj,true);
|
||
|
}
|
||
|
|
||
|
function PushButton::onEndSequence(%this, %obj, %slot)
|
||
|
{
|
||
|
if (%obj.activated) {
|
||
|
// Trigger all the objects in our mission group
|
||
|
%group = %obj.getGroup();
|
||
|
for (%i = 0; %i < %group.getCount(); %i++)
|
||
|
%group.getObject(%i).onTrigger(%this,%obj.triggerMesg);
|
||
|
// %group.getObject(%i).onTrigger(%this,%this.triggerMesg);
|
||
|
|
||
|
// Schedule the button reset
|
||
|
%resetTime = (%obj.resetTime $= "Default")? %this.resetTime: %obj.resetTime;
|
||
|
if (%resetTime)
|
||
|
%this.schedule(%resetTime,activate,%obj,false);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function PushButton::activate(%this,%obj,%state)
|
||
|
{
|
||
|
if (%state && !%obj.activated) {
|
||
|
%obj.playThread(0,"push");
|
||
|
%obj.setThreadDir(0,true);
|
||
|
%obj.playAudio(0,ButtonClick);
|
||
|
%obj.activated = true;
|
||
|
}
|
||
|
else
|
||
|
if (!%state && %obj.activated) {
|
||
|
%obj.setThreadDir(0,false);
|
||
|
%obj.playAudio(0,ButtonClick);
|
||
|
%obj.activated = false;
|
||
|
}
|
||
|
}
|