dts stuff and marble texture

This commit is contained in:
RandomityGuy 2021-06-03 22:48:04 +05:30
parent 81e728e168
commit 6f21a90d62
5 changed files with 31 additions and 25 deletions

View file

@ -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 {

View file

@ -88,8 +88,6 @@ class DtsObject extends Object {
var skinMeshData:SkinMeshData;
var fs:Loader;
var rootObject:Object;
var colliders:Array<CollisionEntity>;
@ -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);

View file

@ -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));

View file

@ -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);

View file

@ -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<String, Dif> = new Map();
static var dtsResources:Map<String, DtsFile> = 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;
}