gulp-structify v1.3.0
gulp-structify
Generates WebGL-compatible structs and struct buffers from a template file.
Install
npm install gulp-structify --save
Create a template file:
Suppose we want to create a Vec2 struct backed by a Float32Array. We start with a minimal template file called Vec2.template.ts:
import {Template} from "gulp-structify/template";
/**
* A two-dimensional vector with (x,y) components.
*/
class Vec2 extends Template<Float32Array> {
/**
* The X component of this Vec2.
*/
x: number;
/**
* The Y component of this Vec2.
*/
y: number;
}Note: the template should not include a constructor or any static methods.
Add methods to the template
Now suppose we want to add a dot method to our Vec2 struct. We do this by adding the method to our template:
// ...
class Vec2 extends Template<Float32Array> {
// ...
/**
* Computes the dot product of this Vec2 with the other Vec2.
*/
dot(other: Vec2): number {
return this.x * other.x + this.y * other.y;
}
}Note: gulp-structify automatically generates the following methods:
set(other: this)setScalar(k: number)add(other: this)subtract(other: this)mulScalar(k: number)divScalar(k: number)equals(other: this)equalsScalar(k: number)epsilonEquals(other: this, e: number)epsilonEqualsScalar(k: number, e: number)toString()
Create gulp task
var gulp = require("gulp");
var rename = require("gulp-rename");
var structify = require("gulp-structify");
// Directory where template file is located
var directory = "./";
gulp.task("structify", function () {
// Search for files ending in .template.ts
return gulp.src(directory + "*.template.ts")
// Generate struct file
.pipe(structify())
// Remove ".template" from filename
.pipe(rename(function(p) {
let base = p.basename;
let length = base.length - ".template".length;
p.basename = base.substr(0, length);
}))
// Output to same directory to preserve imports
.pipe(gulp.dest(directory));
});Run gulp task
gulp structify
Examples
| Template | Output | Usage |
|---|---|---|
| point.template.ts | point.ts | |
| vec2.template.ts | vec2.ts | |
| color.template.ts | color.ts |
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
