seed-engine
Version:
A Lightweight 2D game engine using WebGL2. The engine is designed on the focus of creating a bridge between creating and publishing games to the Seed Network as modules.
105 lines (98 loc) • 4.13 kB
JavaScript
import log from '../helper/Log';
import Test from '../helper/Test';
import Loader from '../../src/utils/Loader';
import Matrix3 from '../../src/render/WebGL/Matrix3';
export default class Matrix3Test extends Test {
constructor() {
super('Matrix3 Test (Checking all indexes)', 5);
}
steps() {
this.addStep('Set Position', () => {
let m = new Matrix3();
m.setPosition(10, 8);
let res = true;
res = res && this.equals(m.m[0], 1);
res = res && this.equals(m.m[1], 0);
res = res && this.equals(m.m[2], 0);
res = res && this.equals(m.m[3], 0);
res = res && this.equals(m.m[4], 1);
res = res && this.equals(m.m[5], 0);
res = res && this.equals(m.m[6], 10);
res = res && this.equals(m.m[7], 8);
res = res && this.equals(m.m[8], 1);
return res;
});
this.addStep('Set Scale', () => {
let m = new Matrix3();
m.setScale(10, 8);
let res = true;
res = res && this.equals(m.m[0], 10);
res = res && this.equals(m.m[1], 0);
res = res && this.equals(m.m[2], 0);
res = res && this.equals(m.m[3], 0);
res = res && this.equals(m.m[4], 8);
res = res && this.equals(m.m[5], 0);
res = res && this.equals(m.m[6], 0);
res = res && this.equals(m.m[7], 0);
res = res && this.equals(m.m[8], 1);
return res;
});
this.addStep('Set Rotation', () => {
let m = new Matrix3();
m.setRotation(100);
let res = true;
res = res && this.equals(m.m[0], -0.17364817766693);
res = res && this.equals(m.m[1], -0.984807753012208);
res = res && this.equals(m.m[2], 0);
res = res && this.equals(m.m[3], 0.984807753012208);
res = res && this.equals(m.m[4], -0.17364817766693);
res = res && this.equals(m.m[5], 0);
res = res && this.equals(m.m[6], 0);
res = res && this.equals(m.m[7], 0);
res = res && this.equals(m.m[8], 1);
return res;
});
this.addStep('Copy', () => {
let m = new Matrix3();
m.setPosition(10, 10);
let m2 = Matrix3.copy(m);
m2.setPosition(-5, -5);
let res = true;
res = res && this.equals(m.m[0], 1);
res = res && this.equals(m.m[1], 0);
res = res && this.equals(m.m[2], 0);
res = res && this.equals(m.m[3], 0);
res = res && this.equals(m.m[4], 1);
res = res && this.equals(m.m[5], 0);
res = res && this.equals(m.m[6], 10);
res = res && this.equals(m.m[7], 10);
res = res && this.equals(m.m[8], 1);
res = res && this.equals(m2.m[0], 1);
res = res && this.equals(m2.m[1], 0);
res = res && this.equals(m2.m[2], 0);
res = res && this.equals(m2.m[3], 0);
res = res && this.equals(m2.m[4], 1);
res = res && this.equals(m2.m[5], 0);
res = res && this.equals(m2.m[6], -5);
res = res && this.equals(m2.m[7], -5);
res = res && this.equals(m2.m[8], 1);
return res;
});
this.addStep('Multiply Matricies', () => {
let m1 = new Matrix3([4, 0, 0, 0, 3, 0, -10, 5, 1]);
let m2 = new Matrix3([2, 0, 0, 0, 1, 0, 40, -10, 1]);
let m3 = m1.multiply(m2);
let res = true;
res = res && this.equals(m3.m[0], 8);
res = res && this.equals(m3.m[1], 0);
res = res && this.equals(m3.m[2], 0);
res = res && this.equals(m3.m[3], 0);
res = res && this.equals(m3.m[4], 3);
res = res && this.equals(m3.m[5], 0);
res = res && this.equals(m3.m[6], 150);
res = res && this.equals(m3.m[7], -25);
res = res && this.equals(m3.m[8], 1);
return res;
});
}
}