From d99e5992c4a7f2593b26e0ddf2d8c6b1d01f890f Mon Sep 17 00:00:00 2001 From: tankorsmash Date: Mon, 5 Feb 2018 16:58:15 -0500 Subject: [PATCH 01/15] whitespace --- .../core/parser/Node.js | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/creator_project/packages/creator-luacpp-support/core/parser/Node.js b/creator_project/packages/creator-luacpp-support/core/parser/Node.js index fba99c64..156628e8 100644 --- a/creator_project/packages/creator-luacpp-support/core/parser/Node.js +++ b/creator_project/packages/creator-luacpp-support/core/parser/Node.js @@ -52,15 +52,15 @@ class Node { 'cc.ParticleSystem', 'cc.TiledMap', 'cc.Canvas', 'cc.RichText', 'cc.VideoPlayer', 'cc.WebView', 'cc.Slider', 'cc.Toggle', 'cc.ToggleGroup', 'cc.PageView', 'cc.Mask', 'dragonBones.ArmatureDisplay']; - + if (!components) return 'cc.Node'; - + let node_components = components.map(x => x.__type__); // special case for object without components if (node_components.length == 0) return 'cc.Node'; - + for (let i = 0, len = supported_components.length; i < len; ++i) { let supported = supported_components[i]; if (node_components.includes(supported)) { @@ -72,16 +72,16 @@ class Node { Utils.log('treat all unknown components as cc.Node') return 'cc.Node'; } - + static guess_type(node_data) { let components = Node.get_node_components(node_data); if (components) return Node.guess_type_from_components(components); - + // prefab don't have componets, should guess type from prefab node data if (node_data._prefab) return 'cc.Prefab'; - + return null; } @@ -147,7 +147,7 @@ class Node { parse_properties() { // 1st: parse self this.parse_node_properties(); - + // 2nd: parse children this.parse_children(); } @@ -276,7 +276,7 @@ class Node { addProp(props, 'skewX', result, 'skewX'); addProp(props, 'skewY', result, 'skewY'); addProp(props, 'opacity', result, 'opacity'); - + // position -> {x:, y:, curveType?, curveData?} if (props.position) { @@ -316,7 +316,7 @@ class Node { else { let clip_content = JSON.parse(fs.readFileSync(uuidinfos[clip_uuid])); - + // parse curveData let animationClip = { name: clip_content._name, @@ -345,7 +345,7 @@ class Node { // parse self animationclip if (curveData.props) - animationClip.curveData.push({props: parseCurveDataProps(curveData.props)}); + animationClip.curveData.push({props: parseCurveDataProps(curveData.props)}); anim.clips.push(animationClip); state._clips[clip_uuid] = animationClip; From 290b1a98a8f2f7ab81455b73751839764ede3d0c Mon Sep 17 00:00:00 2001 From: tankorsmash Date: Mon, 5 Feb 2018 23:24:10 -0500 Subject: [PATCH 02/15] move repeated ifs into a object map --- .../core/parser/Utils.js | 71 +++++++------------ 1 file changed, 27 insertions(+), 44 deletions(-) diff --git a/creator_project/packages/creator-luacpp-support/core/parser/Utils.js b/creator_project/packages/creator-luacpp-support/core/parser/Utils.js index ee98444e..023b37e1 100644 --- a/creator_project/packages/creator-luacpp-support/core/parser/Utils.js +++ b/creator_project/packages/creator-luacpp-support/core/parser/Utils.js @@ -251,50 +251,33 @@ let create_node = function (node_type, node_data) { const MotionStreak = require('./MotionStreak'); let n = null; - if (node_type === 'cc.Node') - n = new Node(node_data); - else if (node_type === 'cc.Sprite') - n = new Sprite(node_data); - else if (node_type === 'cc.Canvas') - n = new Canvas(node_data); - else if (node_type === 'cc.Label') - n = new Label(node_data); - else if (node_type === 'cc.RichText') - n = new RichText(node_data); - else if (node_type === 'cc.Button') - n = new Button(node_data); - else if (node_type === 'cc.ProgressBar') - n = new ProgressBar(node_data); - else if (node_type === 'cc.ScrollView') - n = new ScrollView(node_data); - else if (node_type === 'cc.EditBox') - n = new EditBox(node_data); - else if (node_type === 'cc.TiledMap') - n = new TiledMap(node_data); - else if (node_type === 'cc.ParticleSystem') - n = new ParticleSystem(node_data); - else if (node_type === 'sp.Skeleton') - n = new SpineSkeleton(node_data); - else if (node_type === 'cc.VideoPlayer') - n = new VideoPlayer(node_data); - else if (node_type === 'cc.WebView') - n = new WebView(node_data); - else if (node_type === 'cc.Slider') - n = new Slider(node_data); - else if (node_type === 'cc.Toggle') - n = new Toggle(node_data); - else if (node_type === 'cc.ToggleGroup') - n = new ToggleGroup(node_data); - else if (node_type === 'cc.PageView') - n = new PageView(node_data); - else if (node_type === 'cc.Mask') - n = new Mask(node_data); - else if (node_type === 'cc.Prefab') - n = new Prefab(node_data); - else if (node_type === 'dragonBones.ArmatureDisplay') - n = new DragonBones(node_data); - else if (node_type === 'cc.MotionStreak') - n = new MotionStreak(node_data); + + const classMap = { + 'cc.Node': Node, + 'cc.Sprite': Sprite, + 'cc.Canvas': Canvas, + 'cc.Label': Label, + 'cc.RichText': RichText, + 'cc.Button': Button, + 'cc.ProgressBar': ProgressBar, + 'cc.ScrollView': ScrollView, + 'cc.EditBox': EditBox, + 'cc.TiledMap': TiledMap, + 'cc.ParticleSystem': ParticleSystem, + 'sp.Skeleton': SpineSkeleton, + 'cc.VideoPlayer': VideoPlayer, + 'cc.WebView': WebView, + 'cc.Slider': Slider, + 'cc.Toggle': Toggle, + 'cc.ToggleGroup': ToggleGroup, + 'cc.PageView': PageView, + 'cc.Mask': Mask, + 'cc.Prefab': Prefab, + 'dragonBones.ArmatureDisplay': DragonBones, + 'cc.MotionStreak': MotionStreak, + }; + + n = new classMap[node_type](node_data); if (n != null) n.parse_properties(); From 0afdd6a0271f0bb63b4c985f27027a2e7d83fec9 Mon Sep 17 00:00:00 2001 From: tankorsmash Date: Mon, 5 Feb 2018 23:24:47 -0500 Subject: [PATCH 03/15] first pass at adding in Layout support to flatbuffer --- .../creator-luacpp-support/CreatorReader.fbs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/creator_project/packages/creator-luacpp-support/CreatorReader.fbs b/creator_project/packages/creator-luacpp-support/CreatorReader.fbs index c6526039..1db8b645 100644 --- a/creator_project/packages/creator-luacpp-support/CreatorReader.fbs +++ b/creator_project/packages/creator-luacpp-support/CreatorReader.fbs @@ -18,11 +18,14 @@ enum EditBoxInputMode:byte {Any, EmailAddress, Numeric, PhoneNumber, URL, Decime enum LabelOverflowType:byte {None, Clamp, Shrink, ResizeHeight, Toggle} enum MaskType:byte {Rect, Ellipse, ImageStencil} enum ColliderType:byte {BoxCollider, PolygonCollider, CircleCollider} +enum LayoutType:byte { None = 0, Horizontal = 1, Vertical = 2, Grid = 3 } +enum ResizeMode:byte { None = 0, Container = 1, Children = 2 } // New nodes should be added at the end of the union // no more than 255 union objects can be added -union AnyNode {Scene, Sprite, Label, Particle, TileMap, Node, Button, ProgressBar, ScrollView, CreatorScene, - EditBox, RichText, SpineSkeleton, VideoPlayer, WebView, Slider, Toggle, ToggleGroup, PageView, Mask, DragonBones, MotionStreak} +union AnyNode {Scene, Sprite, Label, Particle, TileMap, Node, Button, ProgressBar, ScrollView, CreatorScene, + EditBox, RichText, SpineSkeleton, VideoPlayer, WebView, Slider, Toggle, ToggleGroup, PageView, + Mask, DragonBones, MotionStreak} table SceneGraph { @@ -180,6 +183,13 @@ table Button ignoreContentAdaptWithSize:bool = false; } +table Layout +{ + node:Node; + type:LayoutType, + resizeMode:ResizeMode +} + table ProgressBar { node:Node; From a8b12accc40b012b577d7f2d2c17aec880cb603d Mon Sep 17 00:00:00 2001 From: tankorsmash Date: Mon, 5 Feb 2018 23:27:28 -0500 Subject: [PATCH 04/15] update .gitignore to ignore vim files --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index f54921af..2bab5b60 100755 --- a/.gitignore +++ b/.gitignore @@ -57,6 +57,8 @@ quick_gen_project_*_autogen.sh quick_gen_project_*_autogen.sh.meta .exvim.app *.swp +*.un~ +tags #///////////////////////////////////////////////////////////////////////////// # webstorm files From 3c2b1f097684d3ce8ab11f91ac19a994c85d2c72 Mon Sep 17 00:00:00 2001 From: tankorsmash Date: Mon, 5 Feb 2018 23:29:21 -0500 Subject: [PATCH 05/15] fix fbs syntax and compile --- .../creator-luacpp-support/CreatorReader.fbs | 4 +- .../reader/CreatorReader_generated.h | 77 +++++++++++++++++++ 2 files changed, 79 insertions(+), 2 deletions(-) diff --git a/creator_project/packages/creator-luacpp-support/CreatorReader.fbs b/creator_project/packages/creator-luacpp-support/CreatorReader.fbs index 1db8b645..9d9efa3c 100644 --- a/creator_project/packages/creator-luacpp-support/CreatorReader.fbs +++ b/creator_project/packages/creator-luacpp-support/CreatorReader.fbs @@ -186,8 +186,8 @@ table Button table Layout { node:Node; - type:LayoutType, - resizeMode:ResizeMode + type:LayoutType; + resizeMode:ResizeMode; } table ProgressBar diff --git a/creator_project/packages/creator-luacpp-support/reader/CreatorReader_generated.h b/creator_project/packages/creator-luacpp-support/reader/CreatorReader_generated.h index 22cd2c5c..d3f4763a 100644 --- a/creator_project/packages/creator-luacpp-support/reader/CreatorReader_generated.h +++ b/creator_project/packages/creator-luacpp-support/reader/CreatorReader_generated.h @@ -34,6 +34,8 @@ struct Scene; struct Button; +struct Layout; + struct ProgressBar; struct ScrollView; @@ -313,6 +315,37 @@ inline const char **EnumNamesColliderType() { inline const char *EnumNameColliderType(ColliderType e) { return EnumNamesColliderType()[static_cast(e)]; } +enum LayoutType { + LayoutType_None = 0, + LayoutType_Horizontal = 1, + LayoutType_Vertical = 2, + LayoutType_Grid = 3, + LayoutType_MIN = LayoutType_None, + LayoutType_MAX = LayoutType_Grid +}; + +inline const char **EnumNamesLayoutType() { + static const char *names[] = { "None", "Horizontal", "Vertical", "Grid", nullptr }; + return names; +} + +inline const char *EnumNameLayoutType(LayoutType e) { return EnumNamesLayoutType()[static_cast(e)]; } + +enum ResizeMode { + ResizeMode_None = 0, + ResizeMode_Container = 1, + ResizeMode_Children = 2, + ResizeMode_MIN = ResizeMode_None, + ResizeMode_MAX = ResizeMode_Children +}; + +inline const char **EnumNamesResizeMode() { + static const char *names[] = { "None", "Container", "Children", nullptr }; + return names; +} + +inline const char *EnumNameResizeMode(ResizeMode e) { return EnumNamesResizeMode()[static_cast(e)]; } + enum AnyNode { AnyNode_NONE = 0, AnyNode_Scene = 1, @@ -1530,6 +1563,50 @@ inline flatbuffers::Offset