//----------------------------------------------------------------------------- // 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; } }