Download rectangle/lua/LumiFamily/LumiManager.lua from Visecall/video-masks: direct link, hf CLI and curl.
- Browser
- Download file 4.9 kB
-
https://huggingface.co/Visecall/video-masks/resolve/main/rectangle/lua/LumiFamily/LumiManager.lua
- Command line
-
hf download hf://Visecall/video-masks/rectangle/lua/LumiFamily/LumiManager.lua
-
curl -L -o LumiManager.lua https://huggingface.co/Visecall/video-masks/resolve/main/rectangle/lua/LumiFamily/LumiManager.lua
4.9 kB
| local isEditor = (Amaz.Macros and Amaz.Macros.EditorSDK) and true or false | |
| local exports = exports or {} | |
| local LumiManager = LumiManager or {} | |
| LumiManager.__index = LumiManager | |
| ---@class LumiManager : ScriptComponent | |
| ---@field LumiEffectTrans Transform | |
| ---@field start_render_layer int | |
| ---@field start_render_order int | |
| ---@field InputTex Texture | |
| ---@field OutputTex Texture | |
| ---@field PingPongTex Texture | |
| local function handleAllEntityBySingleParent(_trans, func, ...) | |
| if _trans.children:size() > 0 then | |
| for i = 1, _trans.children:size() do | |
| local child = _trans.children:get(i-1) | |
| handleAllEntityBySingleParent(child, func, ...) | |
| end | |
| end | |
| func(_trans, ...) | |
| end | |
| function LumiManager.new(construct, ...) | |
| local self = setmetatable({}, LumiManager) | |
| self.LumiEffectTrans = nil | |
| self.start_render_layer = 1 | |
| self.start_render_order = 1 | |
| self.InputTex = nil | |
| self.OutputTex = nil | |
| self.PingPongTex = nil | |
| self.startTime = 0.0 | |
| self.endTime = 6.0 | |
| self.curTime = 0.0 | |
| if construct and LumiManager.constructor then LumiManager.constructor(self, ...) end | |
| return self | |
| end | |
| function LumiManager:onStart(comp) | |
| self.entity = comp.entity | |
| self.trans = self.entity:getComponent("Transform") | |
| -- self.input = comp.entity.scene.assetMgr:SyncLoad("share://input.texture") | |
| -- self.output = comp.entity.scene.assetMgr:SyncLoad("rt/outputTex.rt") | |
| self.lumi_obj_extension = includeRelativePath("LumiObjectExtension") | |
| self.lumi_obj = nil | |
| self.LumiParamsSetter = includeRelativePath("LumiParamsSetter") | |
| if self.LumiParamsSetter then | |
| local ae_tools = includeRelativePath("AETools") | |
| self.lumi_params_setter = self.LumiParamsSetter.new(ae_tools) | |
| end | |
| end | |
| function LumiManager:onDestroy(comp) | |
| if self.LumiEffectTrans and self.lumi_obj_extension then | |
| self.lumi_obj_extension.deregister(self.LumiEffectTrans.entity) | |
| end | |
| self.lumi_obj = nil | |
| end | |
| ---@function [UI(Button="ReRender")] | |
| function LumiManager:getCameraCount() | |
| if self.LumiEffectTrans == nil then | |
| return 0 | |
| end | |
| self.lumi_obj = nil | |
| self:ReRender() | |
| local cam_count = 0 | |
| if self.lumi_obj then | |
| cam_count = self.lumi_obj:getCameraCount() | |
| Amaz.LOGI("AE_LUA_TAG", self.lumi_obj.entity.name .. " camera_count: " .. tostring(cam_count)) | |
| end | |
| return cam_count | |
| end | |
| function LumiManager:ReRender() | |
| if self.LumiEffectTrans == nil then | |
| return | |
| end | |
| -- re register | |
| self.lumi_obj = nil | |
| self:registerLumiObj(self.LumiEffectTrans, 1) | |
| if self.lumi_obj == nil then | |
| Amaz.LOGE('AE_LUA_TAG', 'No lumi_obj register') | |
| return | |
| end | |
| -- change layer & order | |
| self:updateCameraLayerAndOrder() | |
| -- change rt pingpong | |
| self:updateRtPingpong() | |
| end | |
| function LumiManager:registerLumiObj(_trans, _idx) | |
| if _trans == nil then return end | |
| -- Amaz.LOGI("lrc ".._idx, _trans.entity.name) | |
| local script_comp = _trans.entity:getComponent("ScriptComponent") | |
| if script_comp then | |
| local lua_obj = Amaz.ScriptUtils.getLuaObj(script_comp:getScript()) | |
| if lua_obj then | |
| self.lumi_obj_extension.deregister(_trans.entity) | |
| self.lumi_obj = self.lumi_obj_extension.register(_trans.entity) | |
| end | |
| end | |
| end | |
| function LumiManager:updateCameraLayerAndOrder() | |
| if self.lumi_obj then | |
| self.lumi_obj:updateCameraLayerAndOrder(self.start_render_layer, self.start_render_order) | |
| end | |
| end | |
| function LumiManager:updateRtPingpong() | |
| if self.lumi_obj then | |
| self.lumi_obj:updateRt(self.InputTex, self.OutputTex, self.PingPongTex) | |
| end | |
| end | |
| function LumiManager:onUpdate(comp, deltaTime) | |
| if isEditor then | |
| end | |
| if self.lumi_obj == nil then | |
| self:registerLumiObj(self.LumiEffectTrans, 1) | |
| end | |
| self.curTime = self.curTime + deltaTime | |
| if self.lumi_obj then | |
| self.lumi_obj:setEffectAttr("startTime", self.startTime) | |
| self.lumi_obj:setEffectAttr("endTime", self.endTime) | |
| self.lumi_obj:setEffectAttr("curTime", self.curTime) | |
| end | |
| if self.lumi_params_setter and self.lumi_params_setter.updateKeyFrameData then | |
| self.lumi_params_setter:updateKeyFrameData(self.lumi_obj, self.startTime, self.endTime, self.curTime) | |
| end | |
| if self.lumi_obj and self.lumi_obj.updateMaterials then | |
| self.lumi_obj:updateMaterials(deltaTime) | |
| end | |
| end | |
| function LumiManager:onEvent(comp, event) | |
| if self.lumi_obj == nil then | |
| self:registerLumiObj(self.LumiEffectTrans, 1) | |
| end | |
| if self.lumi_obj == nil then | |
| Amaz.LOGE('AE_LUA_TAG', 'Failed to find lumi_obj') | |
| return | |
| end | |
| if self.lumi_params_setter and self.lumi_params_setter.onEvent then | |
| self.lumi_params_setter:onEvent(self.lumi_obj, event) | |
| end | |
| end | |
| exports.LumiManager = LumiManager | |
| return exports | |