UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

94 lines (93 loc) 2.04 kB
"use strict"; import { Vector3 } from "three"; import { _matchArrayLength } from "./_ArrayUtils"; import { NamedFunction2 } from "./_Base"; export function _sizzleVec2(src, target) { target.x = src.y; target.y = src.x; return target; } export function _sizzleVec3XY(src, target) { target.x = src.x; target.y = src.y; return target; } export class sizzleVec3XY extends NamedFunction2 { constructor() { super(...arguments); this.func = _sizzleVec3XY; } static type() { return "sizzleVec3XY"; } } export function _sizzleVec3XZ(src, target) { target.x = src.x; target.y = src.z; return target; } export class sizzleVec3XZ extends NamedFunction2 { constructor() { super(...arguments); this.func = _sizzleVec3XZ; } static type() { return "sizzleVec3XZ"; } } export function _sizzleVec3YZ(src, target) { target.x = src.y; target.y = src.z; return target; } export class sizzleVec3YZ extends NamedFunction2 { constructor() { super(...arguments); this.func = _sizzleVec3YZ; } static type() { return "sizzleVec3YZ"; } } export class sizzleVec4XYZ extends NamedFunction2 { static type() { return "sizzleVec4XYZ"; } func(src, target) { target.x = src.x; target.y = src.y; target.z = src.z; return target; } } export class sizzleVec4XYZArray extends NamedFunction2 { static type() { return "sizzleVec4XYZArray"; } func(src, target) { _matchArrayLength(src, target, () => new Vector3()); let i = 0; for (let srcElement of src) { const targetElement = target[i]; targetElement.x = srcElement.x; targetElement.y = srcElement.y; targetElement.z = srcElement.z; i++; } return target; } } export class sizzleVec4WArray extends NamedFunction2 { static type() { return "sizzleVec4WArray"; } func(src, target) { _matchArrayLength(src, target, () => 0); let i = 0; for (let srcElement of src) { target[i] = srcElement.w; i++; } return target; } }