Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //------------------------------------------------------------------
- // console building info
- //------------------------------------------------------------------
- datablock StaticShapeData( bridgeConsole )
- {
- category = "Interactable";
- shapeFile = "art/shapes/buildings/bridges/turningbridge/tempfornow/gateway2.dae";
- //go ahead and use defaults. We're locking it physically anyway.
- named = false;
- isInvincible = true;
- UseCollisonLods = true;
- };
- //------------------------------------------------------------------
- // trigger info
- //------------------------------------------------------------------
- datablock TriggerData(BridgeTriggerData)
- {
- tickPeriodMS = 1000;
- };
- //------------------------------------------------------------------
- // bridge info
- //------------------------------------------------------------------
- datablock PathShapeData(TurningBridge : LoopingShape)
- {
- //This is the Path this shape will follow
- // It's best to assign this in script or in the mission editor after it's been created
- // in the oncollision, it will look for this path
- category = "Pathshapes";
- // put path to your shape here!!
- shapeFile = "art/shapes/buildings/bridges/turningbridge/bridge_turning_top.DAE";
- mode = "";
- cameraMaxDist = "23.2902";
- };
- //------------------------------------------------------------------
- // console building server
- //------------------------------------------------------------------
- function bridgeConsole::onAdd(%this,%obj)
- {
- %this.createTrigger(%obj);
- %obj.screen = %this.addConsole(%obj);
- %this.setDown(%obj);
- }
- function bridgeConsole::addConsole(%this,%obj)
- {
- %mountxyz = getWords(%obj.getSlotTransform(1),0,2);
- %mountrxyz = getWords(%obj.getSlotTransform(1),3,5);
- %mountrt = mRadToDeg(getWord(%obj.getSlotTransform(1),6));
- %rot = %mountrxyz SPC %mountrt;
- %console = new TSStatic() {
- shapeName = "art/shapes/buildings/bridges/turningbridge/tempfornow/gatewayMonitor.dae";
- collisionType = "Visible Mesh";
- decalType = "Visible Mesh";
- position = %mountxyz;
- };
- MissionCleanup.add(%console);
- return %console;
- }
- function serverCmdToggleObject(%client,%toggleState)
- {
- %obj = %client.interactingWith;
- %obj.getDatablock().toggleObject(%obj,%toggleState);
- }
- function bridgeConsole::onAmbient(%this,%obj)
- {
- %this.setCollision(%obj,%obj.colLodTarg);
- }
- function bridgeConsole::toggleObject(%this,%obj,%toggleState)
- {
- %controlledObj = %obj.controls;
- //trigger controlers down
- //set the path shape to go in the picked direction
- if (isObject(%controlledObj))
- {
- for (%i=0;%i<4;%i++)
- {
- %controller = %controlledObj.Controler[%i];
- %controller.getDatablock().setDown(%controller);
- }
- if (%toggleState)
- {
- %controlledObj.moveForward();
- }
- else
- {
- %controlledObj.moveBackward();
- }
- }
- }
- function bridgeConsole::setDown(%this,%obj)
- {
- if(!isObject(%obj)) return;
- if (%obj.isDown == true) return;
- %obj.isDown = true;
- %obj.stopThread(0);
- %obj.playThread( 0, "ambient" );
- %obj.setThreadPosition(0,1);
- %obj.setThreadDir(0,false);
- %obj.colLodTarg = 0;
- }
- function bridgeConsole::setUp(%this,%obj)
- {
- if(!isObject(%obj)) return;
- if (%obj.isDown == false) return;
- %obj.isDown = false;
- %obj.stopThread(0);
- %obj.playthread(0,"ambient");
- %obj.setThreadDir(0,true);
- %obj.colLodTarg = 1;
- }
- function bridgeConsole::setCollision(%this,%obj,%lod)
- {
- %obj.setActiveCollision(%lod);
- NavMeshUpdateAll(%obj);
- }
- function bridgeConsole::createTrigger(%this,%obj)
- {
- %mountxy = getWords(%obj.getSlotTransform(0),0,1);
- %mountz = getWord(%obj.getSlotTransform(0),2);
- %mountrxyz = getWords(%obj.getSlotTransform(0),3,5);
- %mountrt = mRadToDeg(getWord(%obj.getSlotTransform(0),6));
- %pos = %mountxy SPC %mountz-2;
- %rot = %mountrxyz SPC %mountrt;
- %obj.trigger = %this.createBridgeTrigger(%pos,%rot,%obj);
- }
- function bridgeConsole::createBridgeTrigger(%this,%pos,%rot,%owner)
- {
- %trigger = new Trigger()
- {
- dataBlock = BridgeTriggerData;
- name = "BridgeTrigger";
- position = %pos;
- rotation = %rot;
- scale = "4 4 4";
- polyhedron = "-0.5000000 0.5000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000";
- };
- %trigger.owner = %owner;
- if (isObject(MissionCleanup))
- MissionCleanup.add(%trigger);
- else
- schedule(300, Game, "MissionCleanup.add", %trigger);
- return %trigger;
- }
- //------------------------------------------------------------------
- // trigger server
- //------------------------------------------------------------------
- function BridgeTriggerData::onTickTrigger(%this,%trigger)
- {
- if (!isObject(%trigger.owner))
- {
- %trigger.delete();
- return;
- }
- %count = %trigger.getNumObjects();
- for (%i=0;%i<%count;%i++)
- {
- %obj = %trigger.getObject(%i);
- if ((%obj != %trigger.owner))
- {
- if (raycheck(%obj,%trigger.owner))
- {
- if (!%obj.prompted)
- {
- commandToClient(%obj.client,'toggleInteractPrompt', 1);
- commandtoClient(%obj.client,'setInteractCommand',"interacting");
- %obj.client.interactingWith = %trigger.owner;
- commandToClient(%obj.client,'setSwitchState', %trigger.owner.isDown);
- %obj.prompted = true;
- }
- }
- else
- {
- commandToClient(%obj.client,'toggleInteractPrompt', 0);
- commandtoClient(%obj.client,'setInteractCommand',"placebo");
- %obj.client.interactingWith = "";
- %obj.prompted = false;
- }
- }
- }
- }
- //------------------------------------------------------------------
- // bridge server
- //------------------------------------------------------------------
- function TurningBridge::onAdd(%this,%obj)
- {
- // do whatever you want with that shape, e.g. play animations:
- if (isObject(%obj.Path))
- {
- %obj.setState("forward");
- %obj.followPath(%obj.Path);
- %obj.reset();
- }
- else
- %obj.schedule(300, "assignPath", %obj.Path);
- %obj.setState("stop");
- for (%i=0;%i<2;%i++)
- {
- %controller = %obj.Controler[%i];
- %controller.getDatablock().setUp(%controller);
- }
- for (%i=2;%i<4;%i++)
- {
- %controller = %obj.Controler[%i];
- %controller.getDatablock().setDown(%controller);
- }
- }
- function TurningBridge::onNode(%this,%obj,%node)
- {
- if (%node == 0)
- {
- for (%i=0;%i<2;%i++)
- {
- %controller = %obj.Controler[%i];
- %controller.getDatablock().setUp(%controller);
- }
- }
- else
- {
- for (%i=2;%i<4;%i++)
- {
- %controller = %obj.Controler[%i];
- %controller.getDatablock().setUp(%controller);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement