local WorldSceneMgr = WorldSceneMgr local setmetatable = setmetatable local VisualObject = {} local VisualObjectMT = { __newindex = function(self, key, val) logging.error(LTAG.ERROR, "__newindex on visual object", key, val) end } VisualObjectMT.__index = VisualObjectMT function VisualObjectMT:SetPosition(x, y, z, offsetY) if offsetY then self._csObj:SetPosition(x, y, z, offsetY) else self._csObj:SetPosition(x, y, z) end end function VisualObjectMT:SetPositionDirectly(x, y, z) self._csObj:SetPositionDirectly(x, y, z) end function VisualObjectMT:SetDirection(x, z) self._csObj:SetDirection(x, z) end function VisualObjectMT:SetPositionAndDirection(dx, dz,px, py, pz,pyOffset) if pyOffset == nil then pyOffset = 0 end self._csObj:SetPositionAndDirection(dx, dz,px, py, pz,pyOffset) end function VisualObjectMT:SetScale(x, y, z) self._csObj:SetScale(x, y, z) end function VisualObjectMT:AccumScale(x, y, z) self._csObj:AccumScale(x, y, z) end function VisualObjectMT:SetColor(x, y, z) self._csObj:SetColor(x, y, z) end function VisualObjectMT:Dispose() self._csObj:Dispose() self._csObj = nil end function VisualObjectMT:Invoke(funcName, ...) local csFunc = self._csObj[funcName] return csFunc(self._csObj, ...) end --------------------------------------------------------- function VisualObject.CreateVisualObject(path, parentTf) local csObj = WorldSceneMgr.CreateVisualObject(path, parentTf) return setmetatable({ _csObj = csObj }, VisualObjectMT) end function VisualObject.CreateEffectObject(path, parentTf) local csObj = WorldSceneMgr.CreateEffectObject(path, parentTf) return setmetatable({ _csObj = csObj }, VisualObjectMT) end function VisualObject.CreateEffectSphereTrigger(parentTf, effectPath, radius) local csObj = WorldSceneMgr.CreateEffectSphereTrigger(parentTf, effectPath, radius) return setmetatable({ _csObj = csObj }, VisualObjectMT) end function VisualObject.CreateEffectBoxTrigger(parentTf, path, x, y, z) local csObj = WorldSceneMgr.CreateEffectBoxTrigger(parentTf, path, x, y, z) return setmetatable({ _csObj = csObj }, VisualObjectMT) end function VisualObject.CreateConveyEffectTrigger(parentTf, effectPath, radius, param) local csObj = WorldSceneMgr.CreateConveyEffectTrigger(parentTf, effectPath, radius, param) return setmetatable({ _csObj = csObj }, VisualObjectMT) end function VisualObject.CreateObstructEffectTrigger(parentTf, path, x, y, z) local csObj = WorldSceneMgr.CreateObstructEffectTrigger(parentTf, path, x, y, z) return setmetatable({ _csObj = csObj }, VisualObjectMT) end function VisualObject.CreateOccupyObject(parentTf, path, duration) local csObj = WorldSceneMgr.CreateOccupyObject(parentTf, path, duration) return setmetatable({ _csObj = csObj }, VisualObjectMT) end --------------------------------------------------------- if USE_LUA_STANDALONE then local dummyFunc = function() end VisualObjectMT = {__index = function() return dummyFunc end} WorldSceneMgr = setmetatable({}, VisualObjectMT) end return VisualObject