Sprache Deutsch Language English

Script Dokumentation LS 2015 - WaterLog (Patch 1.3)

Script Dokumentation Übersicht

scripts/objects/WaterLog.lua

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
3WaterLog = {}
4
5WaterLog.STATE_EMERGING = 0;
6WaterLog.STATE_PAUSING = 1;
7WaterLog.STATE_MOVING = 2;
8
9local WaterLog_mt = Class(WaterLog);
10
11function WaterLog:onCreate(id)
12 g_currentMission:addUpdateable(WaterLog:new(id));
13 -- print("created WaterLog, id: ", id);
14end;
15
16function 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;
33end;
34
35function WaterLog:delete()
36
37end;
38
39function 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;
76end;
Copyright (c) 2008-2015 GIANTS Software GmbH, Confidential, All Rights Reserved.
This document is to be published solely by ls-mods.de
Script Dokumentation Übersicht