62 lines
1.5 KiB
JavaScript
62 lines
1.5 KiB
JavaScript
|
|
// генерирует код для форм блоков из json моделей
|
|
|
|
const fs = require('fs')
|
|
const root_main = './src/main/resources/assets/overdrive_that_matters/models/block/'
|
|
const root_datagen = './src/data/resources/assets/overdrive_that_matters/models/block/'
|
|
|
|
const args = process.argv.slice(2)
|
|
|
|
if (args.length == 0) {
|
|
console.error('No model(s) names specified.')
|
|
process.exit(2)
|
|
}
|
|
|
|
const handle = fs.openSync('./shapegen_output.java', 'w')
|
|
|
|
for (const model of args) {
|
|
fs.writeSync(handle, 'public static final BlockShape ' + model.toUpperCase() + ' = new BlockShape(\n')
|
|
|
|
let readData
|
|
|
|
try {
|
|
readData = fs.readFileSync(root_main + model + '.json', {encoding: 'utf-8'})
|
|
} catch(err1) {
|
|
try {
|
|
readData = fs.readFileSync(root_datagen + model + '.json', {encoding: 'utf-8'})
|
|
} catch(err2) {
|
|
console.error('Unable to read model file in either of locations')
|
|
console.error(err1)
|
|
console.error(err2)
|
|
process.exit(1)
|
|
}
|
|
}
|
|
|
|
const obj = JSON.parse(readData)
|
|
let first = true
|
|
|
|
for (const elementID in obj.elements) {
|
|
const element = obj.elements[elementID]
|
|
|
|
if (element.rotation && element.rotation.angle != 0)
|
|
continue;
|
|
|
|
const from = element.from
|
|
const to = element.to
|
|
|
|
if (first) {
|
|
first = false
|
|
} else {
|
|
fs.writeSync(handle, ',\n')
|
|
}
|
|
|
|
fs.writeSync(handle, `\tnew SimpleCuboid(${from[0] / 16}d, ${from[1] / 16}d, ${from[2] / 16}d, ${to[0] / 16}d, ${to[1] / 16}d, ${to[2] / 16}d)`)
|
|
}
|
|
|
|
console.log(`Parsed and generated shape of ${model}.json`)
|
|
|
|
fs.writeSync(handle, '\n);\n\n')
|
|
}
|
|
|
|
fs.closeSync(handle)
|