|
- local SceneEditor = class("SceneEditor" , require("NodeEditor"));
-
- function SceneEditor:ctor()
- SceneEditor.super.ctor(self);
- end
-
- function SceneEditor:activate()
- SceneEditor.super.activate(self);
- app.setting.OriginAnchor = cc.p(0,0);
- app:refreshSetting();
- end
-
- function SceneEditor:unactivate()
- SceneEditor.super.unactivate(self);
- if self.MapEditor ~= nil then
- self.MapEditor:close();
- end
- end
-
- function SceneEditor:play()
- if self.node then
- self.node:playCurveAnimation();
- local cameraSphericlNode = self.node:findNode("SphericalCameraNode")
- if cameraSphericlNode then
- cameraSphericlNode:setCollectAnimationClip(false)
- local function curveAnimationEnd()
- -- 编辑器里需要更新
- if cameraSphericlNode:isSphericalActive() then
- cameraSphericlNode:startUpdate()
- end
- end
- cameraSphericlNode:playCurveAnimation(curveAnimationEnd)
- end
-
- -- 递归遍历下面的所有子节点
- local function visit(node)
- if node.stop then
- node:stop();
- end
- if node.play then
- node:play();
- end
- end
- self.node:visitNode(visit);
- end
- end
-
- function SceneEditor:stop()
- if self.node then
- self.node:stopCurveAnimation();
- local cameraSphericlNode = self.node:findNode("SphericalCameraNode")
- if cameraSphericlNode then
- cameraSphericlNode:stopCurveAnimation()
- -- 编辑器里需要更新
- if cameraSphericlNode:isSphericalActive() then
- cameraSphericlNode:startUpdate()
- end
- end
- -- 递归遍历下面的所有子节点
- local function visit(node)
- if node.stop then
- node:stop();
- end
- end
- self.node:visitNode(visit);
- end
- end
-
- -- 创建新的光效
- function SceneEditor:newNode()
- self:closeNode();
- local node = self:createNode("Scene");
- node:setName("Root");
- self:initNode(node)
- -- 创建一个新的地图
- self.Map = require("Map"):new();
- self.MapEditor = require("MapEditor"):new();
- return node;
- end
-
- -- 设置地图的宽度和高度
- function SceneEditor:initMap(mapWidth, mapHeight, tileWidth, tileHeight)
- if self.Map == nil then
- error("没有创建地图");
- end
-
- -- 初始化地图宽度和高度
- self.Map:initWidthAndHeight(mapWidth, mapHeight, tileWidth, tileHeight);
- self.Map:initObstacles();
- self.MapEditor:init();
- end
-
- -- 从文件载入节点
- function SceneEditor:loadNode(nodeFile)
- local node = SceneEditor.super.loadNode(self, nodeFile);
- -- 创建一个题图载入资源
- self.Map = require("Map"):new();
- local arr = string.split(nodeFile, ".");
- self.Map:loadLua(arr[1] .. ".lmap");
- self.MapEditor = require("MapEditor"):new();
- self.MapEditor:init();
-
- --[[-- 获取相机
- local cameraNode = node:findNode("main_camera");
- app.mainLayer:setActiveCamera(cameraNode:getCamera());
- app.mainCamera = cameraNode:getCamera();
- local winSize = cc.Director:getInstance():getWinSize();
- app.mainCamera:setAspectRatio(winSize.width / winSize.height);
- app.cameraController:refreshSetting();--]]
- return node;
- end
-
- function SceneEditor:save(filename)
- SceneEditor.super.save(self, filename);
- local arr = string.split(filename, ".");
- -- 保存地图
- self.Map:saveLua(arr[1] .. ".lmap");
- self.Map:saveXml(arr[1] .. ".map");
- end
-
- -- 关闭光效
- function SceneEditor:closeNode()
- SceneEditor.super.closeNode(self);
-
- end
-
- -- 初始化光效,添加到场景中
- function SceneEditor:initNode(node)
- SceneEditor.super.initNode(self , node);
- end
-
- function SceneEditor:createNode(nodeType)
- local node = SceneEditor.super.createNode(self , nodeType);
- if node.enableAutoPlay then
- node:enableAutoPlay();
- end
- return node;
- end
-
- return SceneEditor;
|