Hier ist der script
-- Copyright (C) GIANTS Software GmbH, Confidential, All Rights Reserved.
Truck = {}
local Truck_mt = Class(Truck);
function onCreate(self, id)
g_currentMission:addUpdateable(Truck:new(id));
print("created Truck, id: ", id);
end;
function Truck:new(id)
local instance = {};
setmetatable(instance, Truck_mt);
instance.nurbsId = getChildAt(id, 0);
instance.truckIds = {};
table.insert(instance.truckIds, getChildAt(id, 1));
instance.times = {};
table.insert(instance.times, 0);
local length = getSplineLength(instance.nurbsId);
instance.timeScale = (Utils.getNoNil(getUserAttribute(id, "speed"), 10)/3.6);
local numTrucks = Utils.getNoNil(getUserAttribute(id, "numTrucks"), 1);
for i=2,numTrucks do
local truckId = clone(instance.truckIds[1], false, true);
link(id, truckId);
table.insert(instance.truckIds, truckId);
table.insert(instance.times, (1/numTrucks)*(i-1));
end;
if length ~= 0 then
instance.timeScale = instance.timeScale/length;
end;
instance.initCount = 0;
return instance;
end;
function Truck:delete()
end;
function Truck:update(dt)
-- Avoid depth buffer of the water shader (initial one frame delay)
if self.initCount > 0 then
for i=1, table.getn(self.truckIds) do
self.times[i] = self.times[i] - 0.001*dt*self.timeScale;
local x,y,z = getSplinePosition(self.nurbsId, self.times[i]);
local rx,ry,rz = getSplineOrientation(self.nurbsId, self.times[i], 0, -1, 0);
setTranslation(self.truckIds[i], x, y, z);
setRotation(self.truckIds[i], rx, ry, rz);
end;
else
self.initCount = self.initCount + 1;
end;
end;