--@input float curTime = 0.0{"widget":"slider","min":0,"max":3.0} 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.first = nil return self end function SeekModeScript:constructor() end function SeekModeScript:onUpdate(comp, detalTime) self.curTim = self.curTime + detalTime self:seekToTime(comp, self.curTime - self.startTime) end function SeekModeScript:onStart(comp) self.pass6Material = comp.entity.scene:findEntityBy("SeekModeScript"):getComponent("MeshRenderer").material self.pass6Material:setVec4("borderColor", Amaz.Vector4f(1.0, 1.0, 0.0, 1.0)) self.pass6Material:setFloat("border", 0.0) self.pass6Material:setFloat("radius", 0.0) end function SeekModeScript:seekToTime(comp, time) local w = Amaz.BuiltinObject:getOutputTextureWidth() local h = Amaz.BuiltinObject:getOutputTextureHeight() self.pass6Material:setInt("imageWidth", w) self.pass6Material:setInt("imageHeight", h) end function HEX2RGBA (hex) local color = {} for i = 1,4 do local str1 = string.sub(hex,2*i-1,2*i) local number = 0 for j = 1,2 do local str = string.sub(str1,j,j) if(string.byte(str,1)>=string.byte("A",1) and string.byte(str,1)<=string.byte("F",1)) then number = number + (string.byte(str)-55)*math.pow(16,2-j) elseif(string.byte(str,1)>=string.byte("0",1) and string.byte(str,1)<=string.byte("9",1))then number = number + (string.byte(str)-48)*math.pow(16,2-j) end end color[i] = number end return Amaz.Vector4f(color[1],color[2],color[3],color[4]) end function SeekModeScript:onEvent(sys, event) if ("Border" == event.args:get(0)) then local border = event.args:get(1) self.pass6Material:setFloat("border", border) elseif ("Radius" == event.args:get(0)) then local radius = event.args:get(1) self.pass6Material:setFloat("radius", radius) elseif ("BorderColor" == event.args:get(0)) then local borderColor = event.args:get(1) if(string.byte(borderColor,1)==string.byte("#",1)) then borderColor = string.sub(borderColor, 2) end local vectorColor = HEX2RGBA(borderColor) vectorColor = vectorColor / 255.0 self.pass6Material:setVec4("borderColor", vectorColor) end end exports.SeekModeScript = SeekModeScript return exports