@@ -12,12 +12,14 @@ const baseDir = path.resolve(scriptDir, '..');
12
12
13
13
const jsSrcDir = path . resolve ( baseDir , 'src/' ) ;
14
14
const pySrcDir = path . resolve ( baseDir , '..' , 'pythreejs' ) ;
15
+ const cppSrcDir = path . resolve ( baseDir , '..' , 'xthreejs/xthreejs' ) ;
15
16
const templateDir = path . resolve ( scriptDir , 'templates' ) ;
16
17
17
18
const threeSrcDir = path . resolve ( baseDir , 'node_modules' , 'three' , 'src' ) ;
18
19
19
20
const jsEnumDst = path . resolve ( jsSrcDir , '_base' , 'enums.js' ) ;
20
21
const pyEnumDst = path . resolve ( pySrcDir , 'enums.py' ) ;
22
+ const cppEnumDst = path . resolve ( cppSrcDir , '_base' , 'enums.hpp' ) ;
21
23
22
24
//
23
25
// Actual THREE constants:
@@ -47,6 +49,7 @@ function compileTemplate(templateName) {
47
49
48
50
var jsEnumTemplate = compileTemplate ( 'js_enums' ) ;
49
51
var pyEnumTemplate = compileTemplate ( 'py_enums' ) ;
52
+ var cppEnumTemplate = compileTemplate ( 'cpp_enums' ) ;
50
53
51
54
52
55
//
@@ -150,11 +153,45 @@ function createPythonFiles() {
150
153
} ) ;
151
154
}
152
155
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
+
153
189
function generateFiles ( ) {
154
190
155
191
return Promise . all ( [
156
192
createJavascriptFiles ( ) ,
157
193
createPythonFiles ( ) ,
194
+ createCppFiles ( ) ,
158
195
checkUnused ( ) ,
159
196
] ) ;
160
197
0 commit comments