@@ -12,12 +12,14 @@ const baseDir = path.resolve(scriptDir, '..');
1212
1313const jsSrcDir = path . resolve ( baseDir , 'src/' ) ;
1414const pySrcDir = path . resolve ( baseDir , '..' , 'pythreejs' ) ;
15+ const cppSrcDir = path . resolve ( baseDir , '..' , 'xthreejs/include/xthreejs' ) ;
1516const templateDir = path . resolve ( scriptDir , 'templates' ) ;
1617
1718const threeSrcDir = path . resolve ( baseDir , 'node_modules' , 'three' , 'src' ) ;
1819
1920const jsEnumDst = path . resolve ( jsSrcDir , '_base' , 'enums.js' ) ;
2021const pyEnumDst = path . resolve ( pySrcDir , 'enums.py' ) ;
22+ const cppEnumDst = path . resolve ( cppSrcDir , 'base' , 'xenums.hpp' ) ;
2123
2224//
2325// Actual THREE constants:
@@ -47,6 +49,7 @@ function compileTemplate(templateName) {
4749
4850var jsEnumTemplate = compileTemplate ( 'js_enums' ) ;
4951var pyEnumTemplate = compileTemplate ( 'py_enums' ) ;
52+ var cppEnumTemplate = compileTemplate ( 'cpp_enums' ) ;
5053
5154
5255//
@@ -150,11 +153,45 @@ function createPythonFiles() {
150153 } ) ;
151154}
152155
156+ function writeCppFile ( ) {
157+ // Here we generate lists of enum keys
158+
159+ var categories = [ ] ;
160+
161+ _ . keys ( enumConfigs ) . map ( category => {
162+ var categoryObj = { key : category , enums : [ ] } ;
163+ categories . push ( categoryObj ) ;
164+ enumConfigs [ category ] . forEach ( function ( enumKey ) {
165+ if ( Array . isArray ( enumKey ) ) {
166+ // Several keys share the same value, use the first one.
167+ enumKey = enumKey [ 0 ] ;
168+ }
169+ categoryObj . enums . push ( { key : enumKey , value : threeEnums [ enumKey ] } ) ;
170+ } , this ) ;
171+ } , this ) ;
172+
173+ var content = cppEnumTemplate ( {
174+ now : new Date ( ) ,
175+ generatorScriptName : path . basename ( __filename ) ,
176+
177+ categories : categories
178+ } ) ;
179+
180+ return fse . outputFile ( cppEnumDst , content ) ;
181+ }
182+
183+ function createCppFiles ( ) {
184+ return new Promise ( function ( resolve ) {
185+ resolve ( writeCppFile ( ) ) ;
186+ } ) ;
187+ }
188+
153189function generateFiles ( ) {
154190
155191 return Promise . all ( [
156192 createJavascriptFiles ( ) ,
157193 createPythonFiles ( ) ,
194+ createCppFiles ( ) ,
158195 checkUnused ( ) ,
159196 ] ) ;
160197
0 commit comments