|
- -- 技能系统一些额外的数据和接口
- require("luaScript.Tools.Effect.CCEffectNode")
- require("luaScript.Tools.Tracks.CCTrack")
- require("luaScript.Tools.Tracks.CCBaseTrack")
- require("luaScript.Tools.Tracks.CCStaticEffectTrack")
- require("luaScript.Tools.Tracks.CCAnimationChangeTrack")
- require("luaScript.Tools.Tracks.AnimationSpeedTrack")
- require("luaScript.Tools.Tracks.CCFlyEffectTrack")
- require("luaScript.Tools.Tracks.CCAttractEffectTrack")
- require("luaScript.Tools.Tracks.CCChannelEffectTrack")
- require("luaScript.Tools.Tracks.CCNodeShakeTrack")
- require("luaScript.Tools.Tracks.AnimationFreezeTrack")
- require("luaScript.Tools.Tracks.BlendMaterialTrack")
- require("luaScript.Tools.Tracks.CCCameraShakeTrack")
- require("luaScript.Tools.Tracks.CCCEFileTrack")
- require("luaScript.Tools.Tracks.ModelAppearanceTrack")
- require("luaScript.Tools.Tracks.ModelTransformTrack")
- require("luaScript.Tools.Tracks.CCPlayClipTrack")
- require("luaScript.Tools.Tracks.SphericalCameraTrack")
-
- -- 技能点绑定信息
- EffectBinder =
- {
- None = 0,
- SourcePos = 1,
- TargetPos = 2,
- SourceNode = 3,
- TargetNode = 4,
- FirstSourceNode = 5,
- OtherSourceNode = 6,
- FirstTargetNode = 7,
- OtherTargetNode = 8,
- ScreenCenter = 9,
- }
-
- function createDefaultCombineEffectParams()
- return
- {
- -- 在这个节点上播放
- ParentNode,
- -- 相机震动节点
- CameraNode,
- -- 源点列表
- SourcePos = {},
- -- 目标点列表
- TargetPos = {},
- -- 源节点列表
- SourceNode = {},
- -- 目标节点列表
- TargetNode = {},
- }
- end
-
-
- -- 预加载技能效果所需的资源
- function preloadCombineEffectFromXmlNode(xmlNode)
- if xmlNode.Children then
- for i , v in ipairs(xmlNode.Children) do
- local cls = cc[v.ClassName];
- cls:preload(v);
- end
- end
- end
-
- -- 预加载技能效果所需的资源
- function preloadCombineEffect(fileName)
- if fileName ~= "" then
- print("预加载技能效果:" , fileName);
- preloadCombineEffectFromXmlNode(table.loadFile(fileName));
- end
- end
-
-
- -- 创建技能效果实例
- function createCombineEffectFromXmlNode(xmlNode)
- local className = xmlNode.ClassName;
- local node = cc[className]:create();
- node:loadFromXmlNode(xmlNode);
- if xmlNode.Children then
- for i , v in ipairs(xmlNode.Children) do
- node:addTrack(createCombineEffectFromXmlNode(v));
- end
- end
- -- 链接轨迹
- if type(node.getChildren) == "function" then
- local children = node:getChildren()
- if table.nums(children) > 0 then
- for i , v in pairs(children) do
- if v:getNextTrackId() ~= 0 then
- v:setNextTrack(v:getNextTrackId())
- end
- v:setNextTrackId(0);
- end
- end
- end
-
- return node;
- end
-
- function createCombineEffectFromXmlString(xmlString)
- local effect = createCombineEffectFromXmlNode(table.loadString(xmlString));
- return effect;
- end
-
- -- 从文件中创建特效
- function createCombineEffectFromXmlFile(combineEffectFile)
- if combineEffectFile == "" or combineEffectFile == nil then
- return;
- end
- print("创建技能效果:" , combineEffectFile);
- TimeSpan:enterSpan("createCombineEffect" .. combineEffectFile);
- --TimeSpan:enterSpan("table.loadFile");
- local xmlFile = table.loadFile(combineEffectFile);
- --TimeSpan:leaveSpan();
- --TimeSpan:enterSpan("createNodeFromXmlNode");
- local effect = createCombineEffectFromXmlNode(xmlFile);
- effect.FileName = combineEffectFile;
- --TimeSpan:leaveSpan();
- TimeSpan:leaveSpan();
- return effect;
- end
-
- -- 从文件中创建特效
- function createCombineEffect(combineEffectFile)
- if combineEffectFile == "" or combineEffectFile == nil then
- return;
- end
- print("创建技能效果:" , combineEffectFile);
- TimeSpan:enterSpan("createCombineEffect" .. combineEffectFile);
- --TimeSpan:enterSpan("table.loadFile");
- --local xmlFile = table.loadFile(combineEffectFile);
- --TimeSpan:leaveSpan();
- --TimeSpan:enterSpan("createNodeFromXmlNode");
- local effect = tolua.cast(cc.StreamObject:loadFromFile(combineEffectFile) , "cc.CombineEffect");
- --local effect = createCombineEffectFromXmlNode(xmlFile);
- effect.FileName = combineEffectFile;
- --TimeSpan:leaveSpan();
- TimeSpan:leaveSpan();
- return effect;
- end
-
- function prepareCombineEffect(combineEffectFile)
- local ce = createCombineEffect(combineEffectFile);
- ce:prepare();
- end
-
- function getWorldPositionToNode(source , target)
- local pos = source:getTranslation();
- local worldPos = source:getParent():convertToWorldSpace(pos);
- return target:convertToNodeSpace(worldPos);
- end
|