--@input float curTime = 0.0{"widget":"slider","min":0,"max":1} local exports = exports or {} local SeekModeScript = SeekModeScript or {} SeekModeScript.__index = SeekModeScript function SeekModeScript.new(construct, ...) local self = setmetatable({}, SeekModeScript) if construct and SeekModeScript.constructor then SeekModeScript.constructor(self, ...) end self.startTime = 0.0 self.endTime = 3.0 self.curTime = 0.0 self.width = 0 self.height = 0 self.speedIntensity = 0.33 self.intensity = 1 self.horzIntensity = 0.2 return self end function SeekModeScript:constructor() end function SeekModeScript:onUpdate(comp, detalTime) ---154788126623430832219511065127975508711173527549435695743 -- local props = comp.entity:getComponent("ScriptComponent").properties -- if props:has("curTime") then -- self:seekToTime(comp, props:get("curTime")) -- end ---486158496203046556263158757421186850461173527549435695743 self:seekToTime(comp, self.curTime - self.startTime) end function SeekModeScript:start(comp) self.material = comp.entity:getComponent("MeshRenderer").material end function SeekModeScript:seekToTime(comp, time) if self.first == nil then self.first = true self:start(comp) end local localTime = time * (0.5 + 1.5 * self.speedIntensity) local count = math.floor(localTime / 0.05) self.material:setFloat("timer", count/40.0) self.material:setFloat("intensity", self.intensity) self.material:setFloat("horzIntensity", self.horzIntensity) end function SeekModeScript:onEvent(sys, event) if "effects_adjust_speed" == event.args:get(0) then local intensity = event.args:get(1) self.speedIntensity = intensity end if "effects_adjust_intensity" == event.args:get(0) then local intensity = event.args:get(1) self.intensity = intensity end if "effects_adjust_horizontal_chromatic" == event.args:get(0) then local intensity = event.args:get(1) self.horzIntensity = (intensity - 0.5) * 2 end -- if "effects_adjust_vertical_chromatic" == event.args:get(0) then -- local intensity = event.args:get(1) -- self.vertIntensity = intensity -- end end exports.SeekModeScript = SeekModeScript return exports