r3-legacy/gulpfile.js

193 lines
7.1 KiB
JavaScript
Raw Normal View History

var gulp = require('gulp');
var concat = require('gulp-concat');
var sort = require('gulp-sort');
var minify = require('gulp-minify');
2018-11-15 14:50:58 +01:00
var replace = require('gulp-string-replace');
2016-10-14 12:32:53 +02:00
2018-11-21 20:57:14 +01:00
gulp.task('build', build);
gulp.task('monitor', monitor);
2019-07-24 14:45:42 +02:00
var code = 'if (R3.Utils.UndefinedOrNull(apiComponent)) {\n';
code += '\t\tapiComponent = {};\n';
code += '\t}\n';
code += '\tthis.apiComponent = apiComponent;\n';
2019-07-24 08:08:02 +02:00
code += '\n';
2019-07-24 14:45:42 +02:00
code += '\tR3.API.Component.call(\n';
code += '\t\tthis,\n';
code += '\t\tthis.apiComponent.parent,\n';
code += '\t\tthis.apiComponent.id,\n';
2019-08-10 19:48:08 +02:00
code += '\t\tthis.apiComponent.name,\n';
code += '\t\tthis.apiComponent.register,\n';
code += '\t\tthis.apiComponent.selected\n';
2019-07-25 22:22:32 +02:00
code += '\t)';
2019-07-24 14:45:42 +02:00
var code2 = 'if (R3.Utils.UndefinedOrNull(apiGeometryBuffer)) {\n';
code2 += '\t\tapiGeometryBuffer = {};\n';
code2 += '\t}\n';
code2 += '\tthis.apiGeometryBuffer = apiGeometryBuffer;\n';
code2 += '\n';
code2 += '\tR3.D3.API.Geometry.Buffer.call(\n';
code2 += '\t\tthis,\n';
code2 += '\t\tthis.apiGeometryBuffer,\n';
code2 += '\t\tthis.apiGeometryBuffer.attributes,\n';
code2 += '\t\tthis.apiGeometryBuffer.drawRange,\n';
code2 += '\t\tthis.apiGeometryBuffer.groups,\n';
code2 += '\t\tthis.apiGeometryBuffer.index,\n';
code2 += '\t\tthis.apiGeometryBuffer.morphAttributes\n';
2019-07-25 22:22:32 +02:00
code2 += '\t)';
2019-07-24 14:45:42 +02:00
var code3 = 'if (R3.Utils.UndefinedOrNull(apiGeometryNormal)) {\n';
code3 += '\t\tapiGeometryNormal = {};\n';
code3 += '\t}\n';
code3 += '\tthis.apiGeometryNormal = apiGeometryNormal;\n';
code3 += '\n';
code3 += '\tR3.D3.API.Geometry.Normal.call(\n';
code3 += '\t\tthis,\n';
code3 += '\t\tthis.apiGeometryNormal,\n';
code3 += '\t\tthis.apiGeometryNormal.colors,\n';
code3 += '\t\tthis.apiGeometryNormal.lineDistances,\n';
code3 += '\t\tthis.apiGeometryNormal.morphTargets,\n';
code3 += '\t\tthis.apiGeometryNormal.morphNormals,\n';
code3 += '\t\tthis.apiGeometryNormal.skinWeights,\n';
code3 += '\t\tthis.apiGeometryNormal.skinIndices,\n';
code3 += '\t\tthis.apiGeometryNormal.verticesNeedsUpdate,\n';
code3 += '\t\tthis.apiGeometryNormal.elementsNeedUpdate,\n';
code3 += '\t\tthis.apiGeometryNormal.uvsNeedUpdate,\n';
code3 += '\t\tthis.apiGeometryNormal.normalsNeedUpdate,\n';
code3 += '\t\tthis.apiGeometryNormal.colorsNeedUpdate,\n';
code3 += '\t\tthis.apiGeometryNormal.groupsNeedUpdate,\n';
code3 += '\t\tthis.apiGeometryNormal.lineDistancesNeedUpdate\n';
2019-07-25 22:22:32 +02:00
code3 += '\t)';
2019-07-24 14:45:42 +02:00
var code4 = 'if (R3.Utils.UndefinedOrNull(apiMaterial)) {\n';
code4 += '\t\tapiMaterial = {};\n';
code4 += '\t}\n';
code4 += '\tthis.apiMaterial = apiMaterial;\n';
code4 += '\n';
code4 += '\tR3.D3.API.Material.call(\n';
code4 += '\t\tthis,\n';
code4 += '\t\tthis.apiMaterial,\n';
code4 += '\t\tthis.apiMaterial.parentMeshes,\n';
code4 += '\t\tthis.apiMaterial.alphaTest,\n';
code4 += '\t\tthis.apiMaterial.blendDst,\n';
code4 += '\t\tthis.apiMaterial.blendDstAlpha,\n';
code4 += '\t\tthis.apiMaterial.blendEquation,\n';
code4 += '\t\tthis.apiMaterial.blendEquationAlpha,\n';
code4 += '\t\tthis.apiMaterial.blending,\n';
code4 += '\t\tthis.apiMaterial.blendSrc,\n';
code4 += '\t\tthis.apiMaterial.blendSrcAlpha,\n';
code4 += '\t\tthis.apiMaterial.clipIntersection,\n';
code4 += '\t\tthis.apiMaterial.clippingPlanes,\n';
code4 += '\t\tthis.apiMaterial.clipShadows,\n';
code4 += '\t\tthis.apiMaterial.colorWrite,\n';
code4 += '\t\tthis.apiMaterial.customDepthMaterial,\n';
code4 += '\t\tthis.apiMaterial.customDistanceMaterial,\n';
code4 += '\t\tthis.apiMaterial.defines,\n';
code4 += '\t\tthis.apiMaterial.depthFunc,\n';
code4 += '\t\tthis.apiMaterial.depthTest,\n';
code4 += '\t\tthis.apiMaterial.depthWrite,\n';
code4 += '\t\tthis.apiMaterial.fog,\n';
code4 += '\t\tthis.apiMaterial.lights,\n';
code4 += '\t\tthis.apiMaterial.opacity,\n';
code4 += '\t\tthis.apiMaterial.overdraw,\n';
code4 += '\t\tthis.apiMaterial.polygonOffset,\n';
code4 += '\t\tthis.apiMaterial.polygonOffsetFactor,\n';
code4 += '\t\tthis.apiMaterial.polygonOffsetUnits,\n';
code4 += '\t\tthis.apiMaterial.precision,\n';
code4 += '\t\tthis.apiMaterial.premultipliedAlpha,\n';
code4 += '\t\tthis.apiMaterial.dithering,\n';
code4 += '\t\tthis.apiMaterial.flatShading,\n';
code4 += '\t\tthis.apiMaterial.side,\n';
code4 += '\t\tthis.apiMaterial.transparent,\n';
code4 += '\t\tthis.apiMaterial.vertexColors,\n';
code4 += '\t\tthis.apiMaterial.visible\n';
2019-07-25 22:22:32 +02:00
code4 += '\t)';
2019-07-24 14:45:42 +02:00
var code5 = 'if (R3.Utils.UndefinedOrNull(apiTexture)) {\n';
code5 += '\t\tapiTexture = {};\n';
code5 += '\t}\n';
code5 += '\tthis.apiTexture = apiTexture;\n';
code5 += '\n';
code5 += '\tR3.D3.API.Texture.call(\n';
code5 += '\t\tthis,\n';
code5 += '\t\tthis.apiTexture,\n';
code5 += '\t\tthis.apiTexture.parentMaterials,\n';
code5 += '\t\tthis.apiTexture.mipmaps,\n';
code5 += '\t\tthis.apiTexture.mapping,\n';
code5 += '\t\tthis.apiTexture.wrapS,\n';
code5 += '\t\tthis.apiTexture.wrapT,\n';
code5 += '\t\tthis.apiTexture.magFilter,\n';
code5 += '\t\tthis.apiTexture.minFilter,\n';
code5 += '\t\tthis.apiTexture.anisotropy,\n';
code5 += '\t\tthis.apiTexture.format,\n';
code5 += '\t\tthis.apiTexture.storageType,\n';
code5 += '\t\tthis.apiTexture.offset,\n';
code5 += '\t\tthis.apiTexture.repeat,\n';
code5 += '\t\tthis.apiTexture.rotation,\n';
code5 += '\t\tthis.apiTexture.center,\n';
code5 += '\t\tthis.apiTexture.matrixAutoUpdate,\n';
code5 += '\t\tthis.apiTexture.generateMipMaps,\n';
code5 += '\t\tthis.apiTexture.premultiplyAlpha,\n';
code5 += '\t\tthis.apiTexture.flipY,\n';
code5 += '\t\tthis.apiTexture.unpackAlignment,\n';
code5 += '\t\tthis.apiTexture.encoding,\n';
code5 += '\t\tthis.apiTexture.version,\n';
code5 += '\t\tthis.apiTexture.animated,\n';
code5 += '\t\tthis.apiTexture.reverseAnimation,\n';
code5 += '\t\tthis.apiTexture.forward\n';
2019-07-25 22:22:32 +02:00
code5 += '\t)';
var code6 = 'if (R3.Utils.UndefinedOrNull(apiComponent)) {\n';
code6 += '\t\tapiComponent = {};\n';
code6 += '\t}\n';
code6 += '\tthis.apiComponent = apiComponent;\n';
code6 += '\n';
code6 += '\tthis.graphics\t= null;\n';
code6 += '\tthis.physics\t= null;\n';
code6 += '\tthis.gui\t\t= null;\n';
code6 += '\tthis.stats\t\t= null;\n';
code6 += '\n';
code6 += '\tR3.Event.Emit(\n';
code6 += '\t\tR3.Event.GET_RUNTIME,\n';
code6 += '\t\tfunction(runtime) {\n';
code6 += '\t\t\tthis.graphics\t= runtime.graphics;\n';
code6 += '\t\t\tthis.physics\t= runtime.physics;\n';
code6 += '\t\t\tthis.coder\t= runtime.coder;\n';
code6 += '\t\t\tthis.gui\t\t= runtime.gui;\n';
code6 += '\t\t\tthis.stats\t\t= runtime.stats;\n';
code6 += '\t\t}.bind(this)\n';
code6 += '\t)';
2019-07-24 08:08:02 +02:00
2018-11-21 20:57:14 +01:00
function build() {
return gulp.src('./src/r3-*.js')
.pipe(sort())
.pipe(concat('r3.js'))
.pipe(replace('__DATE__', new Date().toString()))
2019-07-24 14:45:42 +02:00
.pipe(replace('__API_COMPONENT_MACRO__', code))
.pipe(replace('__API_GEOMETRY_BUFFER_MACRO__', code2))
.pipe(replace('__API_GEOMETRY_NORMAL_MACRO__', code3))
.pipe(replace('__API_MATERIAL_MACRO__', code4))
.pipe(replace('__API_TEXTURE_MACRO__', code5))
2019-07-25 22:22:32 +02:00
.pipe(replace('__RUNTIME_COMPONENT_MACRO__', code6))
2018-11-21 20:57:14 +01:00
.pipe(minify({
ext:{
src:'.js',
min:'-min.js'
}
}))
.pipe(gulp.dest('./build/'));
}
function monitor() {
gulp.watch('src/*.js', build);
}
2016-10-14 12:32:53 +02:00
gulp.task(
'default',
2018-11-21 20:57:14 +01:00
gulp.series(
build,
monitor
)
2019-07-24 08:08:02 +02:00
);