/* * Copyright 2013, kaj dijkstra , * Author, Kaj Dijkstra. * All rights reserved. * */ import {matrix4, math} from './math.js'; class transform{ constructor() { this.entity = false; this.world = matrix4.identity(); this.local = matrix4.identity(); this.position = [0, 0, 0]; this.scale = [1, 1, 1]; this.rotation = [0, 0, 0];//Degrees } translate(x,y,z) { this.position[0] += x; this.position[1] += y; this.position[2] += z; } translateTo(x,y,z) { this.position = [x,y,z]; this.update(); } update(x,y,z) { this.local = matrix4.identity(); this.local = matrix4.translate(this.local, this.position); this.local = matrix4.rotateZYX(this.local, [this.rotation[0] * ( Math.PI * 180), this.rotation[1]* ( Math.PI * 180), this.rotation[2]* ( Math.PI * 180)]); this.local = matrix4.scale(this.local, this.scale); //if(this.entity) { //this.world = matrix4.mul( this.local, this.entity.parent.transform.world ); this.world = this.local; //} } scaleXYZ(x,y,z) { this.scale = [x,y,z]; this.update(); } rotate(x,y,z) { } rotateTo(x,y,z) { this.rotation = [x,y,z]; this.update(); } rotateZ(x) { this.world = matrix4.rotateZ( this.world, math.degToRad( x ) ); } rotateX(x) { this.world = matrix4.rotateX( this.world, math.degToRad( x ) ); } rotateY(y) { this.world = matrix4.rotateY( this.world, math.degToRad( y ) ); } getWorldPosition(y) { return [this.world[3][0], this.world[3][1], this.world[3][2]]; } getUpdatedWorldMatrix() { return this.world; } translateVec(v) { this.world = matrix4.translate(this.world, v); } } export {transform as default};