From 76ed15591f8194545bf30d53b94ddb54263e5a06 Mon Sep 17 00:00:00 2001 From: zhangcheng Date: Fri, 6 Nov 2015 11:56:45 +0800 Subject: [PATCH 1/2] Update web submodule to latest. --- .../studio/parsers/timelineParser-2.x.js | 412 +----------------- web | 2 +- 2 files changed, 16 insertions(+), 398 deletions(-) diff --git a/cocos/scripting/js-bindings/script/studio/parsers/timelineParser-2.x.js b/cocos/scripting/js-bindings/script/studio/parsers/timelineParser-2.x.js index fa0f84aa6f..8eab3690b5 100644 --- a/cocos/scripting/js-bindings/script/studio/parsers/timelineParser-2.x.js +++ b/cocos/scripting/js-bindings/script/studio/parsers/timelineParser-2.x.js @@ -160,20 +160,12 @@ } }; - var skyBoxBrushInstance = null; - var getSkyboxRes = function(json, key) { - if(json.hasOwnProperty(key) && json[key].hasOwnProperty("Path")) { - return json[key]["Path"]; - } - return ""; - } - /** * SingleNode * @param json * @returns {cc.Node} */ - parser.initSingleNode = function(json, resourcePath){ + parser.initSingleNode = function(json){ var node = new cc.Node(); this.generalAttributes(node, json); @@ -181,27 +173,6 @@ if(color != null) node.setColor(getColor(color)); - if(json.hasOwnProperty("SkyBoxEnabled") && true == json["SkyBoxEnabled"]&& - json.hasOwnProperty("SkyBoxValid") && true == json["SkyBoxValid"]) - { - var leftFileData = resourcePath + getSkyboxRes(json, "LeftImage"); - var rightFileData = resourcePath + getSkyboxRes(json, "RightImage"); - var upFileData = resourcePath + getSkyboxRes(json, "UpImage"); - var downFileData = resourcePath + getSkyboxRes(json, "DownImage"); - var forwardFileData = resourcePath + getSkyboxRes(json, "ForwardImage"); - var backFileData = resourcePath + getSkyboxRes(json, "BackImage"); - var fileUtil = jsb.fileUtils; - if(fileUtil.isFileExist(leftFileData)&& - fileUtil.isFileExist(rightFileData)&& - fileUtil.isFileExist(upFileData)&& - fileUtil.isFileExist(downFileData)&& - fileUtil.isFileExist(forwardFileData)&& - fileUtil.isFileExist(backFileData)) - { - skyBoxBrushInstance = cc.CameraBackgroundSkyBoxBrush.create(leftFileData,rightFileData,upFileData,downFileData,forwardFileData,backFileData); - } - } - return node; }; @@ -257,6 +228,8 @@ var node, self = this; loadTexture(json["FileData"], resourcePath, function(path, type){ + if(!cc.loader.getRes(path)) + cc.log("%s need to be preloaded", path); node = new cc.ParticleSystem(path); self.generalAttributes(node, json); node.setPositionType(cc.ParticleSystem.TYPE_GROUPED); @@ -496,7 +469,7 @@ this.widgetAttributes(widget, json); - var clipEnabled = json["ClipAble"]; + var clipEnabled = json["ClipAble"] || false; if(clipEnabled != null) widget.setClippingEnabled(clipEnabled); @@ -777,7 +750,7 @@ widget.setBackGroundImage(path, type); }); - var clipEnabled = json["ClipAble"]; + var clipEnabled = json["ClipAble"] || false; widget.setClippingEnabled(clipEnabled); var colorType = getParam(json["ComboBoxIndex"], 0); @@ -914,6 +887,8 @@ ]; textureList.forEach(function(item){ loadTexture(json[item.name], resourcePath, function(path, type){ + if(type === 0 && !loader.getRes(path)) + cc.log("%s need to be preloaded", path); item.handle.call(widget, path, type); }); }); @@ -1078,6 +1053,8 @@ var startCharMap = json["StartChar"]; loadTexture(json["LabelAtlasFileImage_CNB"], resourcePath, function(path, type){ + if(!cc.loader.getRes(path)) + cc.log("%s need to be preloaded", path); if(type === 0){ widget.setProperty(stringValue, path, itemWidth, itemHeight, startCharMap); } @@ -1102,6 +1079,8 @@ widget.setString(text); loadTexture(json["LabelBMFontFile_CNB"], resourcePath, function(path, type){ + if(!cc.loader.getRes(path)) + cc.log("%s need to be pre loaded", path); widget.setFntFile(path); }); widget.ignoreContentAdaptWithSize(true); @@ -1296,6 +1275,8 @@ }); + delete json["AnchorPoint"]; + delete json["Size"]; parser.generalAttributes(node, json); node.setColor(getColor(json["CColor"])); @@ -1312,7 +1293,7 @@ var blendFunc = json["BlendFunc"]; if(blendFunc && blendFunc["Src"] !== undefined && blendFunc["Dst"] !== undefined) - node.setBlendFunc(new cc.BlendFunc(blendFunc["Src"] || 0, blendFunc["Dst"] || 0)); + node.setBlendFunc(new cc.BlendFunc(blendFunc["Src"], blendFunc["Dst"])); parser.generalAttributes(node, json); var color = json["CColor"]; @@ -1375,363 +1356,6 @@ node.setContentSize(cc.size(x, y)); }; - var get3DVector = function(json, name, defValue){ - var x = defValue, y = defValue, z = defValue; - if(json && name && json[name]){ - if(undefined !== json[name]["ValueX"]) { - x = json[name]["ValueX"]; - } else if(undefined !== json[name]["X"]) { - x = json[name]["X"] - } - if(null === x || isNaN(x)) - x = defValue; - - if(undefined !== json[name]["ValueY"]) { - y = json[name]["ValueY"]; - } else if(undefined !== json[name]["Y"]) { - y = json[name]["Y"] - } - if(null === y || isNaN(y)) - y = defValue; - - if(undefined !== json[name]["ValueZ"]) { - z = json[name]["ValueZ"]; - } else if(undefined !== json[name]["Z"]) { - z = json[name]["Z"] - } - if(null === z || isNaN(z)) - z = defValue; - } - var vec3 = cc.math.vec3(x, y, z); - return vec3; - }; - - parser.general3DAttributes = function(node, json){ - var pos = get3DVector(json, "Position3D", 0); - node.setPosition3D(pos); - - var rotation = get3DVector(json, "Rotation3D", 0); - node.setRotation3D(rotation); - - var scale = get3DVector(json, "Scale3D", 1.0); - node.setScaleX(scale.x); - node.setScaleY(scale.y); - node.setScaleZ(scale.z); - - var camMask =json["CameraFlagMode"]; - if(undefined !== camMask && null !== camMask) - node.setCameraMask(camMask); - - this.generalAttributes(node, json); - }; - - /** - * Node3D - * @param json - * @returns {*} - */ - parser.initNode3D = function(json){ - var node = cc.Node.create(); - if(node) - this.general3DAttributes(node, json); - return node; - }; - - /** - * Camera - * @param json - * @returns {*} - */ - parser.initCamera = function(json,resourcePath){ - var s = cc.winSize; - var fov = json["Fov"] ? json["Fov"] : 60; - - var nearClip = 1; - var farClip = 500; - if(json["ClipPlane"]){ - if(undefined !== json["ClipPlane"]["ValueX"]) { - nearClip = json["ClipPlane"]["ValueX"]; - } else if(undefined !== json["ClipPlane"]["X"]) { - nearClip = json["ClipPlane"]["X"]; - } - - if(undefined !== json["ClipPlane"]["ValueY"]) { - farClip = json["ClipPlane"]["ValueY"]; - } else if(undefined !== json["ClipPlane"]["Y"]) { - farClip = json["ClipPlane"]["Y"]; - } - - if(null === nearClip || isNaN(nearClip)) - nearClip = 1; - if(null === farClip || isNaN(farClip)) - farClip = 500; - } - - var node = cc.Camera.createPerspective(fov, s.width/s.height, nearClip, farClip); - - if(node){ - this.general3DAttributes(node, json); - - var camMode = json["UserCameraFlagMode"]; - var cameraFlagData = json["CameraFlagData"]; - var cameraFlag = cc.CameraFlag.USER1; - if(undefined === cameraFlagData || isNaN(cameraFlagData) || 0 === cameraFlagData) - { - switch(camMode){ - case "USER1": - cameraFlag = cc.CameraFlag.USER1; break; - case "USER2": - cameraFlag = cc.CameraFlag.USER2; break; - case "USER3": - cameraFlag = cc.CameraFlag.USER3; break; - case "USER4": - cameraFlag = cc.CameraFlag.USER4; break; - case "USER5": - cameraFlag = cc.CameraFlag.USER5; break; - case "USER6": - cameraFlag = cc.CameraFlag.USER6; break; - case "USER7": - cameraFlag = cc.CameraFlag.USER7; break; - case "USER8": - cameraFlag = cc.CameraFlag.USER8; break; - case "DEFAULT": - cameraFlag = cc.CameraFlag.DEFAULT; break; - } - } else { - cameraFlag = cameraFlagData; - } - node.setCameraFlag(cameraFlag); - } - - if(json.hasOwnProperty("SkyBoxEnabled") && true == json["SkyBoxEnabled"] && - json.hasOwnProperty("SkyBoxValid") && true == json["SkyBoxValid"]) - { - var leftFileData = resourcePath + getSkyboxRes(json, "LeftImage"); - var rightFileData = resourcePath + getSkyboxRes(json, "RightImage"); - var upFileData = resourcePath + getSkyboxRes(json, "UpImage"); - var downFileData = resourcePath + getSkyboxRes(json, "DownImage"); - var forwardFileData = resourcePath + getSkyboxRes(json, "ForwardImage"); - var backFileData = resourcePath + getSkyboxRes(json, "BackImage"); - - var fileUtil = jsb.fileUtils; - if(fileUtil.isFileExist(leftFileData)&& - fileUtil.isFileExist(rightFileData)&& - fileUtil.isFileExist(upFileData)&& - fileUtil.isFileExist(downFileData)&& - fileUtil.isFileExist(forwardFileData)&& - fileUtil.isFileExist(backFileData)) - { - var innerBrush = cc.CameraBackgroundSkyBoxBrush.create(leftFileData,rightFileData,upFileData,downFileData,forwardFileData,backFileData); - node.setBackgroundBrush(innerBrush); - } - else - node.setBackgroundBrush(skyBoxBrushInstance); - } - else if(skyBoxBrushInstance != null) - { - node.setBackgroundBrush(skyBoxBrushInstance); - } - return node; - }; - - /** - * Sprite3D - * @param json - * @param resourcePath - * @returns {*} - */ - parser.initSprite3D = function(json, resourcePath){ - var resFile = null; - if(json["FileData"] && json["FileData"]["Path"]) - resFile = resourcePath + json["FileData"]["Path"]; - - var node = null; - if(resFile) { - if(jsb.fileUtils.isFileExist(resFile)) - node = jsb.Sprite3D.create(resFile); - } - if(null === node) - node = jsb.Sprite3D.create(); - - if(node) { - this.general3DAttributes(node, json); - - if(json["CColor"]) { - var col = getColor(json["CColor"]); - if(col && col.r !== 255 || col.g !== 255 || col.b !== 255) - node.setColor(col); - } - - if(json.hasOwnProperty("IsFlipped") && true == json["IsFlipped"]) { - node.setCullFaceEnabled(true); - node.setCullFace(gl.FRONT); - } - - if(json.hasOwnProperty("LightFlag")){ - var lightFlagStr = json["LightFlag"]; - var lightFlag = 0; - switch(lightFlagStr){ - case "LIGHT0": - lightFlag = cc.LightFlag.LIGHT0; break; - case "LIGHT1": - lightFlag = cc.LightFlag.LIGHT1; break; - case "LIGHT2": - lightFlag = cc.LightFlag.LIGHT2; break; - case "LIGHT3": - lightFlag = cc.LightFlag.LIGHT3; break; - case "LIGHT4": - lightFlag = cc.LightFlag.LIGHT4; break; - case "LIGHT5": - lightFlag = cc.LightFlag.LIGHT5; break; - case "LIGHT6": - lightFlag = cc.LightFlag.LIGHT6; break; - case "LIGHT7": - lightFlag = cc.LightFlag.LIGHT7; break; - case "LIGHT8": - lightFlag = cc.LightFlag.LIGHT8; break; - case "LIGHT9": - lightFlag = cc.LightFlag.LIGHT9; break; - case "LIGHT10": - lightFlag = cc.LightFlag.LIGHT10; break; - case "LIGHT11": - lightFlag = cc.LightFlag.LIGHT11; break; - case "LIGHT12": - lightFlag = cc.LightFlag.LIGHT12; break; - } - node.setLightMask(lightFlag); - } - var autoAction = getParam(json["RunAction3D"], false); - if(autoAction && resFile){ - var animation = jsb.Animation3D.create(resFile, ""); - if(animation){ - var animate = jsb.Animate3D.create(animation); - var action = cc.RepeatForever.create(animate); - node.runAction(action); - } - } - } - - return node; - }; - - /** - * Particle3D - * @param json - * @param resourcePath - * @returns {*} - */ - parser.initParticle3D = function(json, resourcePath){ - var node = null; - - var resFile = null; - if(json["FileData"] && json["FileData"]["Path"]) - resFile = resourcePath+json["FileData"]["Path"]; - - if(resFile){ - if(jsb.fileUtils.isFileExist(resFile)) - node = jsb.PUParticleSystem3D.create(resFile); - } - - if(null === node) - node = jsb.PUParticleSystem3D.create(); - - if(node){ - this.general3DAttributes(node, json); - node.startParticleSystem(); - } - - return node; - }; - - /** - * Light3D - * @param json - * @param resourcePath - * @returns {*} - */ - parser.initLight3D = function(json, resourcePath){ - var node = new cc.Node(); - - var light = jsb.DirectionLight.create(cc.math.vec3(0, 0, 1), cc.color(255,255,255,255)); - var flag = 0; - var intensity = 1; - var range = 5.0; - var outerAngle = 30.0; - var enabled = true; - - if(json.hasOwnProperty("Intensity")){ - intensity = json["Intensity"]; - } - if(json.hasOwnProperty("Enable")){ - enabled = json["Enable"]; - } - if(json.hasOwnProperty("Range")){ - range = json["Range"]; - } - if(json.hasOwnProperty("OuterAngle")){ - outerAngle = json["OuterAngle"] * 0.5; - } - if(json.hasOwnProperty("Flag")){ - var lightFlagStr = json["Flag"]; - switch(lightFlagStr){ - case "LIGHT0": - flag = cc.LightFlag.LIGHT0; break; - case "LIGHT1": - flag = cc.LightFlag.LIGHT1; break; - case "LIGHT2": - flag = cc.LightFlag.LIGHT2; break; - case "LIGHT3": - flag = cc.LightFlag.LIGHT3; break; - case "LIGHT4": - flag = cc.LightFlag.LIGHT4; break; - case "LIGHT5": - flag = cc.LightFlag.LIGHT5; break; - case "LIGHT6": - flag = cc.LightFlag.LIGHT6; break; - case "LIGHT7": - flag = cc.LightFlag.LIGHT7; break; - case "LIGHT8": - flag = cc.LightFlag.LIGHT8; break; - case "LIGHT9": - flag = cc.LightFlag.LIGHT9; break; - case "LIGHT10": - flag = cc.LightFlag.LIGHT10; break; - case "LIGHT11": - flag = cc.LightFlag.LIGHT11; break; - case "LIGHT12": - flag = cc.LightFlag.LIGHT12; break; - } - } - if(json.hasOwnProperty("Type")){ - var type = json["Type"]; - switch(type){ - case "DIRECTIONAL": - light = jsb.DirectionLight.create(cc.math.vec3(0, 0, 1), cc.color(255, 255, 255, 255)); break; - case "POINT": - light = jsb.PointLight.create(cc.math.vec3(0, 0, 0), cc.color(255, 255, 255, 255), range); break; - case "SPOT": - light = jsb.SpotLight.create(cc.math.vec3(0, 0, 1), cc.math.vec3(0, 0, 0), cc.color(255, 255, 255, 255), 0, cc.degreesToRadians(outerAngle), range); break; - case "AMBIENT": - light = jsb.AmbientLight.create(cc.color(255,255,255,255)); break; - } - } - - light.setIntensity(intensity); - light.setEnabled(enabled); - light.setLightFlag(flag); - - node.addChild(light); - if(node) - this.general3DAttributes(node, json); - - if(json["CColor"]) { - var col = getColor(json["CColor"]); - if(col && col.r !== 255 || col.g !== 255 || col.b !== 255) - node.setColor(col); - } - return node; - }; - var register = [ {name: "SingleNodeObjectData", handle: parser.initSingleNode}, {name: "NodeObjectData", handle: parser.initSingleNode}, @@ -1758,13 +1382,7 @@ {name: "ProjectNodeObjectData", handle: parser.initProjectNode}, {name: "ArmatureNodeObjectData", handle: parser.initArmature}, {name: "BoneNodeObjectData", handle: parser.initBoneNode}, - {name: "SkeletonNodeObjectData", handle: parser.initSkeletonNode}, - - {name: "Sprite3DObjectData", handle: parser.initSprite3D}, - {name: "Particle3DObjectData", handle: parser.initParticle3D}, - {name: "UserCameraObjectData", handle: parser.initCamera}, - {name: "Node3DObjectData", handle: parser.initNode3D}, - {name: "Light3DObjectData", handle: parser.initLight3D} + {name: "SkeletonNodeObjectData", handle: parser.initSkeletonNode} ]; register.forEach(function(item){ diff --git a/web b/web index e52c98198f..85518886f7 160000 --- a/web +++ b/web @@ -1 +1 @@ -Subproject commit e52c98198fd8325017b213365180580be06d2259 +Subproject commit 85518886f7ba8a618ec69bb75a9b7d67ea2d1c7d From 8183d34b683f12e2c6c897797b15393def1d78d2 Mon Sep 17 00:00:00 2001 From: zhangcheng Date: Fri, 6 Nov 2015 12:50:36 +0800 Subject: [PATCH 2/2] revert old timelineParser-2.x.js and add "||false" to it. --- .../studio/parsers/timelineParser-2.x.js | 408 +++++++++++++++++- 1 file changed, 395 insertions(+), 13 deletions(-) diff --git a/cocos/scripting/js-bindings/script/studio/parsers/timelineParser-2.x.js b/cocos/scripting/js-bindings/script/studio/parsers/timelineParser-2.x.js index 8eab3690b5..0a023cbdf0 100644 --- a/cocos/scripting/js-bindings/script/studio/parsers/timelineParser-2.x.js +++ b/cocos/scripting/js-bindings/script/studio/parsers/timelineParser-2.x.js @@ -160,12 +160,20 @@ } }; + var skyBoxBrushInstance = null; + var getSkyboxRes = function(json, key) { + if(json.hasOwnProperty(key) && json[key].hasOwnProperty("Path")) { + return json[key]["Path"]; + } + return ""; + } + /** * SingleNode * @param json * @returns {cc.Node} */ - parser.initSingleNode = function(json){ + parser.initSingleNode = function(json, resourcePath){ var node = new cc.Node(); this.generalAttributes(node, json); @@ -173,6 +181,27 @@ if(color != null) node.setColor(getColor(color)); + if(json.hasOwnProperty("SkyBoxEnabled") && true == json["SkyBoxEnabled"]&& + json.hasOwnProperty("SkyBoxValid") && true == json["SkyBoxValid"]) + { + var leftFileData = resourcePath + getSkyboxRes(json, "LeftImage"); + var rightFileData = resourcePath + getSkyboxRes(json, "RightImage"); + var upFileData = resourcePath + getSkyboxRes(json, "UpImage"); + var downFileData = resourcePath + getSkyboxRes(json, "DownImage"); + var forwardFileData = resourcePath + getSkyboxRes(json, "ForwardImage"); + var backFileData = resourcePath + getSkyboxRes(json, "BackImage"); + var fileUtil = jsb.fileUtils; + if(fileUtil.isFileExist(leftFileData)&& + fileUtil.isFileExist(rightFileData)&& + fileUtil.isFileExist(upFileData)&& + fileUtil.isFileExist(downFileData)&& + fileUtil.isFileExist(forwardFileData)&& + fileUtil.isFileExist(backFileData)) + { + skyBoxBrushInstance = cc.CameraBackgroundSkyBoxBrush.create(leftFileData,rightFileData,upFileData,downFileData,forwardFileData,backFileData); + } + } + return node; }; @@ -228,8 +257,6 @@ var node, self = this; loadTexture(json["FileData"], resourcePath, function(path, type){ - if(!cc.loader.getRes(path)) - cc.log("%s need to be preloaded", path); node = new cc.ParticleSystem(path); self.generalAttributes(node, json); node.setPositionType(cc.ParticleSystem.TYPE_GROUPED); @@ -887,8 +914,6 @@ ]; textureList.forEach(function(item){ loadTexture(json[item.name], resourcePath, function(path, type){ - if(type === 0 && !loader.getRes(path)) - cc.log("%s need to be preloaded", path); item.handle.call(widget, path, type); }); }); @@ -1053,8 +1078,6 @@ var startCharMap = json["StartChar"]; loadTexture(json["LabelAtlasFileImage_CNB"], resourcePath, function(path, type){ - if(!cc.loader.getRes(path)) - cc.log("%s need to be preloaded", path); if(type === 0){ widget.setProperty(stringValue, path, itemWidth, itemHeight, startCharMap); } @@ -1079,8 +1102,6 @@ widget.setString(text); loadTexture(json["LabelBMFontFile_CNB"], resourcePath, function(path, type){ - if(!cc.loader.getRes(path)) - cc.log("%s need to be pre loaded", path); widget.setFntFile(path); }); widget.ignoreContentAdaptWithSize(true); @@ -1275,8 +1296,6 @@ }); - delete json["AnchorPoint"]; - delete json["Size"]; parser.generalAttributes(node, json); node.setColor(getColor(json["CColor"])); @@ -1293,7 +1312,7 @@ var blendFunc = json["BlendFunc"]; if(blendFunc && blendFunc["Src"] !== undefined && blendFunc["Dst"] !== undefined) - node.setBlendFunc(new cc.BlendFunc(blendFunc["Src"], blendFunc["Dst"])); + node.setBlendFunc(new cc.BlendFunc(blendFunc["Src"] || 0, blendFunc["Dst"] || 0)); parser.generalAttributes(node, json); var color = json["CColor"]; @@ -1356,6 +1375,363 @@ node.setContentSize(cc.size(x, y)); }; + var get3DVector = function(json, name, defValue){ + var x = defValue, y = defValue, z = defValue; + if(json && name && json[name]){ + if(undefined !== json[name]["ValueX"]) { + x = json[name]["ValueX"]; + } else if(undefined !== json[name]["X"]) { + x = json[name]["X"] + } + if(null === x || isNaN(x)) + x = defValue; + + if(undefined !== json[name]["ValueY"]) { + y = json[name]["ValueY"]; + } else if(undefined !== json[name]["Y"]) { + y = json[name]["Y"] + } + if(null === y || isNaN(y)) + y = defValue; + + if(undefined !== json[name]["ValueZ"]) { + z = json[name]["ValueZ"]; + } else if(undefined !== json[name]["Z"]) { + z = json[name]["Z"] + } + if(null === z || isNaN(z)) + z = defValue; + } + var vec3 = cc.math.vec3(x, y, z); + return vec3; + }; + + parser.general3DAttributes = function(node, json){ + var pos = get3DVector(json, "Position3D", 0); + node.setPosition3D(pos); + + var rotation = get3DVector(json, "Rotation3D", 0); + node.setRotation3D(rotation); + + var scale = get3DVector(json, "Scale3D", 1.0); + node.setScaleX(scale.x); + node.setScaleY(scale.y); + node.setScaleZ(scale.z); + + var camMask =json["CameraFlagMode"]; + if(undefined !== camMask && null !== camMask) + node.setCameraMask(camMask); + + this.generalAttributes(node, json); + }; + + /** + * Node3D + * @param json + * @returns {*} + */ + parser.initNode3D = function(json){ + var node = cc.Node.create(); + if(node) + this.general3DAttributes(node, json); + return node; + }; + + /** + * Camera + * @param json + * @returns {*} + */ + parser.initCamera = function(json,resourcePath){ + var s = cc.winSize; + var fov = json["Fov"] ? json["Fov"] : 60; + + var nearClip = 1; + var farClip = 500; + if(json["ClipPlane"]){ + if(undefined !== json["ClipPlane"]["ValueX"]) { + nearClip = json["ClipPlane"]["ValueX"]; + } else if(undefined !== json["ClipPlane"]["X"]) { + nearClip = json["ClipPlane"]["X"]; + } + + if(undefined !== json["ClipPlane"]["ValueY"]) { + farClip = json["ClipPlane"]["ValueY"]; + } else if(undefined !== json["ClipPlane"]["Y"]) { + farClip = json["ClipPlane"]["Y"]; + } + + if(null === nearClip || isNaN(nearClip)) + nearClip = 1; + if(null === farClip || isNaN(farClip)) + farClip = 500; + } + + var node = cc.Camera.createPerspective(fov, s.width/s.height, nearClip, farClip); + + if(node){ + this.general3DAttributes(node, json); + + var camMode = json["UserCameraFlagMode"]; + var cameraFlagData = json["CameraFlagData"]; + var cameraFlag = cc.CameraFlag.USER1; + if(undefined === cameraFlagData || isNaN(cameraFlagData) || 0 === cameraFlagData) + { + switch(camMode){ + case "USER1": + cameraFlag = cc.CameraFlag.USER1; break; + case "USER2": + cameraFlag = cc.CameraFlag.USER2; break; + case "USER3": + cameraFlag = cc.CameraFlag.USER3; break; + case "USER4": + cameraFlag = cc.CameraFlag.USER4; break; + case "USER5": + cameraFlag = cc.CameraFlag.USER5; break; + case "USER6": + cameraFlag = cc.CameraFlag.USER6; break; + case "USER7": + cameraFlag = cc.CameraFlag.USER7; break; + case "USER8": + cameraFlag = cc.CameraFlag.USER8; break; + case "DEFAULT": + cameraFlag = cc.CameraFlag.DEFAULT; break; + } + } else { + cameraFlag = cameraFlagData; + } + node.setCameraFlag(cameraFlag); + } + + if(json.hasOwnProperty("SkyBoxEnabled") && true == json["SkyBoxEnabled"] && + json.hasOwnProperty("SkyBoxValid") && true == json["SkyBoxValid"]) + { + var leftFileData = resourcePath + getSkyboxRes(json, "LeftImage"); + var rightFileData = resourcePath + getSkyboxRes(json, "RightImage"); + var upFileData = resourcePath + getSkyboxRes(json, "UpImage"); + var downFileData = resourcePath + getSkyboxRes(json, "DownImage"); + var forwardFileData = resourcePath + getSkyboxRes(json, "ForwardImage"); + var backFileData = resourcePath + getSkyboxRes(json, "BackImage"); + + var fileUtil = jsb.fileUtils; + if(fileUtil.isFileExist(leftFileData)&& + fileUtil.isFileExist(rightFileData)&& + fileUtil.isFileExist(upFileData)&& + fileUtil.isFileExist(downFileData)&& + fileUtil.isFileExist(forwardFileData)&& + fileUtil.isFileExist(backFileData)) + { + var innerBrush = cc.CameraBackgroundSkyBoxBrush.create(leftFileData,rightFileData,upFileData,downFileData,forwardFileData,backFileData); + node.setBackgroundBrush(innerBrush); + } + else + node.setBackgroundBrush(skyBoxBrushInstance); + } + else if(skyBoxBrushInstance != null) + { + node.setBackgroundBrush(skyBoxBrushInstance); + } + return node; + }; + + /** + * Sprite3D + * @param json + * @param resourcePath + * @returns {*} + */ + parser.initSprite3D = function(json, resourcePath){ + var resFile = null; + if(json["FileData"] && json["FileData"]["Path"]) + resFile = resourcePath + json["FileData"]["Path"]; + + var node = null; + if(resFile) { + if(jsb.fileUtils.isFileExist(resFile)) + node = jsb.Sprite3D.create(resFile); + } + if(null === node) + node = jsb.Sprite3D.create(); + + if(node) { + this.general3DAttributes(node, json); + + if(json["CColor"]) { + var col = getColor(json["CColor"]); + if(col && col.r !== 255 || col.g !== 255 || col.b !== 255) + node.setColor(col); + } + + if(json.hasOwnProperty("IsFlipped") && true == json["IsFlipped"]) { + node.setCullFaceEnabled(true); + node.setCullFace(gl.FRONT); + } + + if(json.hasOwnProperty("LightFlag")){ + var lightFlagStr = json["LightFlag"]; + var lightFlag = 0; + switch(lightFlagStr){ + case "LIGHT0": + lightFlag = cc.LightFlag.LIGHT0; break; + case "LIGHT1": + lightFlag = cc.LightFlag.LIGHT1; break; + case "LIGHT2": + lightFlag = cc.LightFlag.LIGHT2; break; + case "LIGHT3": + lightFlag = cc.LightFlag.LIGHT3; break; + case "LIGHT4": + lightFlag = cc.LightFlag.LIGHT4; break; + case "LIGHT5": + lightFlag = cc.LightFlag.LIGHT5; break; + case "LIGHT6": + lightFlag = cc.LightFlag.LIGHT6; break; + case "LIGHT7": + lightFlag = cc.LightFlag.LIGHT7; break; + case "LIGHT8": + lightFlag = cc.LightFlag.LIGHT8; break; + case "LIGHT9": + lightFlag = cc.LightFlag.LIGHT9; break; + case "LIGHT10": + lightFlag = cc.LightFlag.LIGHT10; break; + case "LIGHT11": + lightFlag = cc.LightFlag.LIGHT11; break; + case "LIGHT12": + lightFlag = cc.LightFlag.LIGHT12; break; + } + node.setLightMask(lightFlag); + } + var autoAction = getParam(json["RunAction3D"], false); + if(autoAction && resFile){ + var animation = jsb.Animation3D.create(resFile, ""); + if(animation){ + var animate = jsb.Animate3D.create(animation); + var action = cc.RepeatForever.create(animate); + node.runAction(action); + } + } + } + + return node; + }; + + /** + * Particle3D + * @param json + * @param resourcePath + * @returns {*} + */ + parser.initParticle3D = function(json, resourcePath){ + var node = null; + + var resFile = null; + if(json["FileData"] && json["FileData"]["Path"]) + resFile = resourcePath+json["FileData"]["Path"]; + + if(resFile){ + if(jsb.fileUtils.isFileExist(resFile)) + node = jsb.PUParticleSystem3D.create(resFile); + } + + if(null === node) + node = jsb.PUParticleSystem3D.create(); + + if(node){ + this.general3DAttributes(node, json); + node.startParticleSystem(); + } + + return node; + }; + + /** + * Light3D + * @param json + * @param resourcePath + * @returns {*} + */ + parser.initLight3D = function(json, resourcePath){ + var node = new cc.Node(); + + var light = jsb.DirectionLight.create(cc.math.vec3(0, 0, 1), cc.color(255,255,255,255)); + var flag = 0; + var intensity = 1; + var range = 5.0; + var outerAngle = 30.0; + var enabled = true; + + if(json.hasOwnProperty("Intensity")){ + intensity = json["Intensity"]; + } + if(json.hasOwnProperty("Enable")){ + enabled = json["Enable"]; + } + if(json.hasOwnProperty("Range")){ + range = json["Range"]; + } + if(json.hasOwnProperty("OuterAngle")){ + outerAngle = json["OuterAngle"] * 0.5; + } + if(json.hasOwnProperty("Flag")){ + var lightFlagStr = json["Flag"]; + switch(lightFlagStr){ + case "LIGHT0": + flag = cc.LightFlag.LIGHT0; break; + case "LIGHT1": + flag = cc.LightFlag.LIGHT1; break; + case "LIGHT2": + flag = cc.LightFlag.LIGHT2; break; + case "LIGHT3": + flag = cc.LightFlag.LIGHT3; break; + case "LIGHT4": + flag = cc.LightFlag.LIGHT4; break; + case "LIGHT5": + flag = cc.LightFlag.LIGHT5; break; + case "LIGHT6": + flag = cc.LightFlag.LIGHT6; break; + case "LIGHT7": + flag = cc.LightFlag.LIGHT7; break; + case "LIGHT8": + flag = cc.LightFlag.LIGHT8; break; + case "LIGHT9": + flag = cc.LightFlag.LIGHT9; break; + case "LIGHT10": + flag = cc.LightFlag.LIGHT10; break; + case "LIGHT11": + flag = cc.LightFlag.LIGHT11; break; + case "LIGHT12": + flag = cc.LightFlag.LIGHT12; break; + } + } + if(json.hasOwnProperty("Type")){ + var type = json["Type"]; + switch(type){ + case "DIRECTIONAL": + light = jsb.DirectionLight.create(cc.math.vec3(0, 0, 1), cc.color(255, 255, 255, 255)); break; + case "POINT": + light = jsb.PointLight.create(cc.math.vec3(0, 0, 0), cc.color(255, 255, 255, 255), range); break; + case "SPOT": + light = jsb.SpotLight.create(cc.math.vec3(0, 0, 1), cc.math.vec3(0, 0, 0), cc.color(255, 255, 255, 255), 0, cc.degreesToRadians(outerAngle), range); break; + case "AMBIENT": + light = jsb.AmbientLight.create(cc.color(255,255,255,255)); break; + } + } + + light.setIntensity(intensity); + light.setEnabled(enabled); + light.setLightFlag(flag); + + node.addChild(light); + if(node) + this.general3DAttributes(node, json); + + if(json["CColor"]) { + var col = getColor(json["CColor"]); + if(col && col.r !== 255 || col.g !== 255 || col.b !== 255) + node.setColor(col); + } + return node; + }; + var register = [ {name: "SingleNodeObjectData", handle: parser.initSingleNode}, {name: "NodeObjectData", handle: parser.initSingleNode}, @@ -1382,7 +1758,13 @@ {name: "ProjectNodeObjectData", handle: parser.initProjectNode}, {name: "ArmatureNodeObjectData", handle: parser.initArmature}, {name: "BoneNodeObjectData", handle: parser.initBoneNode}, - {name: "SkeletonNodeObjectData", handle: parser.initSkeletonNode} + {name: "SkeletonNodeObjectData", handle: parser.initSkeletonNode}, + + {name: "Sprite3DObjectData", handle: parser.initSprite3D}, + {name: "Particle3DObjectData", handle: parser.initParticle3D}, + {name: "UserCameraObjectData", handle: parser.initCamera}, + {name: "Node3DObjectData", handle: parser.initNode3D}, + {name: "Light3DObjectData", handle: parser.initLight3D} ]; register.forEach(function(item){