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 | WaterLog = {} |
4 | |
5 | WaterLog.STATE_EMERGING = 0; |
6 | WaterLog.STATE_PAUSING = 1; |
7 | WaterLog.STATE_MOVING = 2; |
8 | |
9 | local WaterLog_mt = Class(WaterLog); |
10 | |
11 | function WaterLog:onCreate(id) |
12 | g_currentMission:addUpdateable(WaterLog:new(id)); |
13 | -- print("created WaterLog, id: ", id); |
14 | end; |
15 | |
16 | function WaterLog:new(id) |
17 | local self = {}; |
18 | setmetatable(self, WaterLog_mt); |
19 | |
20 | self.splineId = getChildAt(id, 0); |
21 | self.waterLogId = getChildAt(id, 1); |
22 | self.splinePos = 0; |
23 | |
24 | self.speed = Utils.getNoNil(getUserAttribute(id, "speed"), 0.001); |
25 | self.emergeTime = Utils.getNoNil(getUserAttribute(id, "emergeTime"), 15000); |
26 | self.emergeTimer = self.emergeTime; |
27 | self.pauseTime = Utils.getNoNil(getUserAttribute(id, "pauseTime"), 15000); |
28 | self.pauseTimer = self.pauseTime; |
29 | |
30 | self.state = WaterLog.STATE_EMERGING; |
31 | |
32 | return self; |
33 | end; |
34 | |
35 | function WaterLog:delete() |
36 | |
37 | end; |
38 | |
39 | function WaterLog:update(dt) |
40 | |
41 | if self.state == WaterLog.STATE_EMERGING then |
42 | |
43 | self.emergeTimer = self.emergeTimer - dt; |
44 | if self.emergeTimer < 0 then |
45 | self.emergeTimer = 0; |
46 | self.state = WaterLog.STATE_PAUSING; |
47 | end; |
48 | local x, y, z = getSplinePosition(self.splineId, 0); |
49 | local rx, ry, rz = getSplineOrientation(self.splineId, 0, 0, -1, 0); |
50 | setTranslation(self.waterLogId, x, y - 3.5 * (self.emergeTimer / self.emergeTime), z); |
51 | setRotation(self.waterLogId, rx, ry, rz); |
52 | |
53 | elseif self.state == WaterLog.STATE_PAUSING then |
54 | |
55 | self.pauseTimer = self.pauseTimer - dt; |
56 | if self.pauseTimer < 0 then |
57 | self.splinePos = 0; |
58 | self.state = WaterLog.STATE_MOVING; |
59 | end; |
60 | |
61 | elseif self.state == WaterLog.STATE_MOVING then |
62 | |
63 | self.splinePos = self.splinePos + dt * self.speed * 0.01; |
64 | if self.splinePos > 1 then |
65 | self.splinePos = 1; |
66 | self.emergeTimer = self.emergeTime; |
67 | self.pauseTimer = self.pauseTime; |
68 | self.state = WaterLog.STATE_EMERGING; |
69 | end; |
70 | local x, y, z = getSplinePosition(self.splineId, self.splinePos); |
71 | local rx, ry, rz = getSplineOrientation(self.splineId, self.splinePos, 0, -1, 0); |
72 | setTranslation(self.waterLogId, x, y, z); |
73 | setRotation(self.waterLogId, rx, ry, rz); |
74 | |
75 | end; |
76 | end;
|
Copyright (c) 2008-2015 GIANTS Software GmbH, Confidential, All Rights Reserved.
This document is to be published solely by ls-mods.de