package; import flash.Vector; /** * @licence Creative Common BY NC SA - http://creativecommons.org/licenses/by-nc-sa/2.0/ * @author Blue112 */ // simple base class for 3D objects class Mesh3D { // original 3D object vertex data public var vertices3D:Vector; // modified 3D vertex data (used for interactive transformations) public var vertices3D2:Vector; // projected 2D vertex data public var vertices2D:Vector; // indexed face set public var indices:Vector; // texture uvt data (if needed) public var uvtData:Vector; public var x:Float; public var y:Float; public var z:Float; public var scaleX:Float; public var scaleY:Float; public var scaleZ:Float; public var rotX:Float; public var rotY:Float; public var rotZ:Float; public var number:Int; // constructor public function new() { scaleX = scaleY = scaleZ = 1; rotX = rotY = rotZ = 0; x = y = z = 0; vertices3D = new Vector(); vertices3D2 = new Vector(); vertices2D = new Vector(); indices = new Vector(); uvtData = new Vector(); } private function v(x:Float, y:Float, z:Float):Void { vertices3D.push(x); vertices3D.push(y); vertices3D.push(z); // initialize vertices2D and uvtData with some values vertices2D.push(0); vertices2D.push(0); vertices2D.push(0); uvtData.push(1); uvtData.push(0); uvtData.push(0); } private function addFace(index0:Int, index1:Int, index2:Int):Void { // first triangle indices.push(index2); indices.push(index1); indices.push(index0); } private function f2(vn0:Int, vn1:Int, vn2:Int) { addFace(vn0, vn1, vn2); } private function f(vn0:Int, vn1:Int, vn2:Int, uvn0:Int, uvn1:Int, uvn2:Int):Void { addFace(vn0, vn1, vn2); } private function uv(u:Float,v:Float):Void { //nothing } public function toString():String { return "[Mesh3D " + number + "]"; } }