module Omni { export class Cube extends Physijs.Scene implements Tickable { private blocks:Block[]; private puzzles:Puzzle[]; static SIZE:number = 4; constructor(private loader:BlockLoader) { super(); } init(level?:number):void { //cube size, 4*4*4 //generate corners first let half = Cube.SIZE / 2; let corners = [ new THREE.Vector3(-1, -1, -1), new THREE.Vector3(1, -1, -1), new THREE.Vector3(-1, -1, 1), new THREE.Vector3(1, -1, 1), new THREE.Vector3(-1, 1, -1), new THREE.Vector3(1, 1, -1), new THREE.Vector3(-1, 1, 1), new THREE.Vector3(1, 1, 1) ]; for (let corner of corners) { let vertex = corner.clone().multiplyScalar(half); let block = new PlainBlock(this.loader); block.setPosition(vertex.add(corner.clone().multiplyScalar(0.5))); this.add(block.getObject()); this.blocks.push(block); } //then edges //then fill in the rest } tick(delta:number):void { this.simulate(delta); } } }