diff --git a/src/DifBuilder.hx b/src/DifBuilder.hx index 6e61252b..dadecb44 100644 --- a/src/DifBuilder.hx +++ b/src/DifBuilder.hx @@ -71,7 +71,7 @@ class DifBuilder { } ]; - public static function loadDif(path:String, loader:Loader, itr:InteriorGeometry) { + public static function loadDif(path:String, itr:InteriorGeometry) { var dif = ResourceLoader.loadInterior(path); var geo = dif.interiors[0]; @@ -296,7 +296,7 @@ class DifBuilder { var material:Material; var texture:Texture; if (canFindTex(grp)) { - texture = loader.load(tex(grp)).toImage().toTexture(); + texture = ResourceLoader.loader.load(tex(grp)).toImage().toTexture(); texture.wrap = Wrap.Repeat; material = h3d.mat.Material.create(texture); } else { diff --git a/src/DtsObject.hx b/src/DtsObject.hx index 67f1cbf7..d93ef306 100644 --- a/src/DtsObject.hx +++ b/src/DtsObject.hx @@ -88,8 +88,6 @@ class DtsObject extends Object { var skinMeshData:SkinMeshData; - var fs:Loader; - var rootObject:Object; var colliders:Array; @@ -143,8 +141,8 @@ class DtsObject extends Object { if (mesh == null) continue; - var vertices = mesh.vertices.map(v -> new Vector(-v.x, v.y, v.z)); - var vertexNormals = mesh.normals.map(v -> new Vector(-v.x, v.y, v.z)); + var vertices = mesh.vertices.map(v -> new Vector(v.x, v.y, v.z)); + var vertexNormals = mesh.normals.map(v -> new Vector(v.x, v.y, v.z)); var geometry = this.generateMaterialGeometry(mesh, vertices, vertexNormals); for (k in 0...geometry.length) { @@ -240,7 +238,7 @@ class DtsObject extends Object { rootObject.addChild(this.skinMeshData.geometry); } - // rootObject.scaleX = -1; + rootObject.scaleX = -1; } function computeMaterials() { @@ -266,7 +264,7 @@ class DtsObject extends Object { } else if (Path.extension(fullName) == "ifl") { // TODO IFL SHIT } else { - var texture:Texture = this.fs.load(this.directoryPath + "/" + fullName).toImage().toTexture(); + var texture:Texture = ResourceLoader.loader.load(fullName).toImage().toTexture(); texture.wrap = Wrap.Repeat; material.texture = texture; // TODO TRANSLUENCY SHIT @@ -346,10 +344,10 @@ class DtsObject extends Object { for (index in [i1, i2, i3]) { var vertex = vertices[index]; - geometrydata.points.push(new Vector(-vertex.x, vertex.y, vertex.z)); + geometrydata.points.push(new Vector(vertex.x, vertex.y, vertex.z)); var normal = vertexNormals[index]; - geometrydata.normals.push(new Vector(-normal.x, normal.y, normal.z)); + geometrydata.normals.push(new Vector(normal.x, normal.y, normal.z)); } geometrydata.indices.push(geometrydata.indices.length); diff --git a/src/Main.hx b/src/Main.hx index 7e62b7e0..99614322 100644 --- a/src/Main.hx +++ b/src/Main.hx @@ -8,9 +8,6 @@ import src.PathedInterior; import src.MarbleWorld; import collision.CollisionWorld; import src.Marble; -import hxd.res.Loader; -import hxd.fs.LocalFileSystem; -import hxd.fs.FileSystem; import src.DifBuilder; import h3d.Vector; import h3d.scene.fwd.DirLight; @@ -21,7 +18,6 @@ import src.DtsObject; class Main extends hxd.App { var scene:Scene; - var fileSystem:FileSystem; var world:MarbleWorld; var dtsObj:DtsObject; @@ -29,21 +25,16 @@ class Main extends hxd.App { override function init() { super.init(); - this.fileSystem = new LocalFileSystem(".", null); - - var loader = new Loader(fileSystem); - dtsObj = new DtsObject(); - dtsObj.dtsPath = "data/shapes/bumpers/pball_tri.dts"; + dtsObj.dtsPath = "data/shapes/images/helicopter.dts"; dtsObj.isCollideable = false; dtsObj.isTSStatic = false; - dtsObj.fs = loader; // dtsObj.setRotation(Math.PI / 2, 0, 0); world = new MarbleWorld(s3d); var db = new InteriorGeometry(); - DifBuilder.loadDif("data/interiors/beginner/training_friction.dif", loader, db); + DifBuilder.loadDif("data/interiors/beginner/training_friction.dif", db); world.addInterior(db); var tform = db.getTransform(); tform.setPosition(new Vector(0, 0, 7.5)); diff --git a/src/Marble.hx b/src/Marble.hx index e1a0d088..05088868 100644 --- a/src/Marble.hx +++ b/src/Marble.hx @@ -1,5 +1,7 @@ package src; +import h3d.Quat; +import src.ResourceLoader; import collision.Collision; import dif.math.Point3F; import dif.math.PlaneF; @@ -71,7 +73,9 @@ class Marble extends Object { super(); var geom = Sphere.defaultUnitSphere(); geom.addUVs(); - var obj = new CustomObject(geom, Material.create(), this); + var marbleTexture = ResourceLoader.loader.load("data/shapes/balls/base.marble.png").toTexture(); + var marbleMaterial = Material.create(marbleTexture); + var obj = new CustomObject(geom, marbleMaterial, this); obj.scale(_radius); this.velocity = new Vector(); @@ -548,7 +552,14 @@ class Marble extends Object { var pos = this.getAbsPos().getPosition(); var newPos = pos.add(this.velocity.multiply(timeStep)); + var rot = this.getRotationQuat(); + var quat = new Quat(); + quat.initRotation(omega.x * timeStep, omega.y * timeStep, omega.z * timeStep); + quat.multiply(quat, rot); + this.setRotationQuat(quat); + this.setPosition(newPos.x, newPos.y, newPos.z); + var tform = this.collider.transform; tform.setPosition(new Vector(newPos.x, newPos.y, newPos.z)); this.collider.setTransform(tform); diff --git a/src/ResourceLoader.hx b/src/ResourceLoader.hx index 11ffebc8..98831b31 100644 --- a/src/ResourceLoader.hx +++ b/src/ResourceLoader.hx @@ -5,8 +5,13 @@ import sys.io.File; import haxe.io.Path; import dts.DtsFile; import dif.Dif; +import hxd.fs.LocalFileSystem; +import hxd.fs.FileSystem; +import hxd.res.Loader; class ResourceLoader { + public static var fileSystem:FileSystem = new LocalFileSystem(".", null); + public static var loader = new Loader(fileSystem); static var interiorResources:Map = new Map(); static var dtsResources:Map = new Map(); @@ -40,12 +45,13 @@ class ResourceLoader { } public static function getFullNamesOf(path:String) { - var files = FileSystem.readDirectory(Path.directory(path)); + var files = fileSystem.dir(Path.directory(path)); // FileSystem.readDirectory(Path.directory(path)); var names = []; var fname = Path.withoutExtension(Path.withoutDirectory(path)).toLowerCase(); for (file in files) { - if (Path.withoutExtension(Path.withoutDirectory(file)).toLowerCase() == fname) - names.push(file); + var fname2 = file.name; + if (Path.withoutExtension(fname2).toLowerCase() == fname) + names.push(file.path); } return names; }