Copyright (c) 2008-2015 GIANTS Software GmbH, Confidential, All Rights Reserved.
This document is to be published solely by ls-mods.de
1 | -- Copyright (C) GIANTS Software GmbH, Confidential, All Rights Reserved. |
2 | |
3 | Barrier = {}; |
4 | |
5 | local Barrier_mt = Class(Barrier); |
6 | |
7 | function Barrier:onCreate(id) |
8 | g_currentMission:addUpdateable(Barrier:new(id)); |
9 | --print("created tip trigger, id: ", id); |
10 | end; |
11 | |
12 | function Barrier:new(id, customMt) |
13 | |
14 | local instance = {}; |
15 | if customMt ~= nil then |
16 | setmetatable(instance, customMt); |
17 | else |
18 | setmetatable(instance, Barrier_mt); |
19 | end; |
20 | |
21 | instance.triggerId = id; |
22 | addTrigger(id, "triggerCallback", instance); |
23 | |
24 | instance.barriers = {}; |
25 | |
26 | local num = getNumOfChildren(id); |
27 | for i=0, num-1 do |
28 | local childLevel1 = getChildAt(id, i); |
29 | if childLevel1 ~= 0 and getNumOfChildren(id) >= 1 then |
30 | local barrierId = getChildAt(childLevel1, 0); |
31 | if barrierId ~= 0 then |
32 | table.insert(instance.barriers, barrierId); |
33 | end; |
34 | end; |
35 | end; |
36 | |
37 | instance.isEnabled = true; |
38 | |
39 | self.count = 0; |
40 | |
41 | self.angle = 90; |
42 | self.maxAngle = 90; |
43 | self.minAngle = 0; |
44 | |
45 | return instance; |
46 | end; |
47 | |
48 | function Barrier:delete() |
49 | |
50 | removeTrigger(self.triggerId); |
51 | end; |
52 | |
53 | function Barrier:update(dt) |
54 | |
55 | local old = self.angle; |
56 | if self.count > 0 then |
57 | if self.angle < self.maxAngle then |
58 | self.angle = self.angle + dt*0.001*60; |
59 | end; |
60 | |
61 | if self.angle > self.maxAngle then |
62 | self.angle = self.maxAngle; |
63 | end; |
64 | else |
65 | if self.angle > self.minAngle then |
66 | self.angle = self.angle - dt*0.001*60; |
67 | end; |
68 | |
69 | if self.angle < self.minAngle then |
70 | self.angle = self.minAngle; |
71 | end; |
72 | end; |
73 | |
74 | if old ~= self.angle then |
75 | for i=1, table.getn(self.barriers) do |
76 | setRotation(self.barriers[i], 0, 0, Utils.degToRad(self.angle)); |
77 | end; |
78 | end; |
79 | |
80 | end; |
81 | |
82 | function Barrier:triggerCallback(triggerId, otherId, onEnter, onLeave, onStay) |
83 | |
84 | if onEnter and self.isEnabled then |
85 | self.count = self.count + 1; |
86 | elseif onLeave then |
87 | self.count = self.count - 1; |
88 | end; |
89 | end;
|
Copyright (c) 2008-2015 GIANTS Software GmbH, Confidential, All Rights Reserved.
This document is to be published solely by ls-mods.de