@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
97 lines (96 loc) • 2.46 kB
JavaScript
;
import { NamedFunction1, NamedFunction2, NamedFunction3 } from "./_Base";
import { sampleData0 } from "../../core/keyframes/KeyframeSamples";
import { Channel } from "../../core/keyframes/Channel";
function _getChannelByIndexOrFirst(data, index) {
if (data.length > index) {
return data[index];
} else {
return data[0] || sampleData0();
}
}
export class channelFloat extends NamedFunction1 {
static type() {
return "channelFloat";
}
func(data) {
return new Channel(data);
}
}
export class channelVector2 extends NamedFunction1 {
static type() {
return "channelVector2";
}
func(data) {
return {
x: new Channel(_getChannelByIndexOrFirst(data, 0)),
y: new Channel(_getChannelByIndexOrFirst(data, 1))
};
}
}
export class channelVector3 extends NamedFunction1 {
static type() {
return "channelVector3";
}
func(data) {
return {
x: new Channel(_getChannelByIndexOrFirst(data, 0)),
y: new Channel(_getChannelByIndexOrFirst(data, 1)),
z: new Channel(_getChannelByIndexOrFirst(data, 2))
};
}
}
export class channelVector4 extends NamedFunction1 {
static type() {
return "channelVector4";
}
func(data) {
return {
x: new Channel(_getChannelByIndexOrFirst(data, 0)),
y: new Channel(_getChannelByIndexOrFirst(data, 1)),
z: new Channel(_getChannelByIndexOrFirst(data, 2)),
w: new Channel(_getChannelByIndexOrFirst(data, 3))
};
}
}
export class channelValueFloat extends NamedFunction2 {
static type() {
return "channelValueFloat";
}
func(channel, t) {
return channel.value(t);
}
}
export class channelValueVector2 extends NamedFunction3 {
static type() {
return "channelValueVector2";
}
func(channel, t, target) {
target.x = channel.x.value(t);
target.y = channel.y.value(t);
return target;
}
}
export class channelValueVector3 extends NamedFunction3 {
static type() {
return "channelValueVector3";
}
func(channel, t, target) {
target.x = channel.x.value(t);
target.y = channel.y.value(t);
target.z = channel.z.value(t);
return target;
}
}
export class channelValueVector4 extends NamedFunction3 {
static type() {
return "channelValueVector4";
}
func(channel, t, target) {
target.x = channel.x.value(t);
target.y = channel.y.value(t);
target.z = channel.z.value(t);
target.w = channel.w.value(t);
return target;
}
}