|
- -- 技能撤销操作
- -- 删除技能轨迹
- function Commands:deleteTrack(ce, track)
- local releaseTrack = false
- local function redo()
- -- 如果preTrack不为空
- local preTrack = track:getPrevTrack()
- if preTrack ~= nil then
- track.PrevTrack = preTrack;
- preTrack:setNextTrack(-1);
- end
-
- -- nextTrack不为空
- local nextTrack = track:getNextTrack()
- if nextTrack ~= nil then
- track.NextTrack = nextTrack
- track:setNextTrack(-1)
- end
-
- track:retain()
- releaseTrack = true
- -- 移除这个轨迹
- track:removeFromParent();
- -- 更新树
- app.cs.updateCombineTree();
- -- 选中空
- app.cs.selectTrackObject(ce);
- return true;
- end
-
- local function undo()
- ce:addTrack(track);
- track:release()
- releaseTrack = false
- if not tolua.isnull(track.PrevTrack) then
- track.PrevTrack:setNextTrack(track:getTrackId())
- end
-
- if not tolua.isnull(track.NextTrack) then
- track:setNextTrack(track.NextTrack:getTrackId())
- end
-
- app.cs.updateCombineTree();
- app.cs.selectTrackObject(track);
- end
-
- local function clear()
- if releaseTrack then
- track:release()
- end
- end
-
- return {redo = redo , undo = undo, clear = clear};
- end
-
- -- 创建技能轨迹
- function Commands:createTrack(ce, track)
- local releaseTrack = false
- local function redo()
- -- 如果preTrack不为空
- local preTrack = track:getPrevTrack()
- if preTrack ~= nil then
- track.PrevTrack = preTrack;
- preTrack:setNextTrack(-1);
- end
-
- -- nextTrack不为空
- local nextTrack = track:getNextTrack()
- if nextTrack ~= nil then
- track.NextTrack = nextTrack
- track:setNextTrack(-1)
- end
-
- -- 添加
- ce:addTrack(track);
- if releaseTrack then
- track:release()
- releaseTrack = false
- end
- -- 更新树
- app.cs.updateCombineTree();
- -- 选中空
- app.cs.selectTrackObject(track);
- return true;
- end
-
- local function undo()
- if not tolua.isnull(track.PrevTrack) then
- track.PrevTrack:setNextTrack(track:getTrackId())
- end
-
- if not tolua.isnull(track.NextTrack) then
- track:setNextTrack(track.NextTrack:getTrackId())
- end
-
- track:retain()
- releaseTrack = true
- -- 移除这个轨迹
- track:removeFromParent();
- app.cs.updateCombineTree();
- app.cs.selectTrackObject(ce);
- end
-
- local function clear()
- if releaseTrack then
- track:release()
- end
- end
-
- return {redo = redo , undo = undo, clear = clear};
- end
|