diff --git a/src/DtsObject.hx b/src/DtsObject.hx index d93ef306..0c6a76d2 100644 --- a/src/DtsObject.hx +++ b/src/DtsObject.hx @@ -91,6 +91,8 @@ class DtsObject extends Object { var rootObject:Object; var colliders:Array; + var mountPointNodes:Array; + public function new() { super(); } @@ -104,6 +106,7 @@ class DtsObject extends Object { var graphNodes = []; var rootNodesIdx = []; colliders = []; + this.mountPointNodes = [for (i in 0...32) -1]; for (i in 0...this.dts.nodes.length) { graphNodes.push(new Object()); @@ -127,6 +130,12 @@ class DtsObject extends Object { var objects = dts.objects.filter(object -> object.node == i); var sequenceAffected = ((1 << i) & affectedBySequences) != 0; + if (dts.names[dts.nodes[i].name].substr(0, 5) == "mount") { + var mountindex = dts.names[dts.nodes[i].name].substr(5); + var mountNode = Std.parseInt(mountindex); + mountPointNodes[mountNode] = i; + } + for (object in objects) { var isCollisionObject = dts.names[object.name].substr(0, 3).toLowerCase() == "col"; @@ -629,7 +638,13 @@ class DtsObject extends Object { } public function getMountTransform(mountPoint:Int) { - // TODO FIX WHEN DTS SUPPORT - return Matrix.I(); + if (mountPoint < 32) { + var ni = mountPointNodes[mountPoint]; + if (ni != -1) { + var mtransform = this.graphNodes[ni].getAbsPos().clone(); + return mtransform; + } + } + return this.getTransform().clone(); } } diff --git a/src/Main.hx b/src/Main.hx index 99614322..b5465861 100644 --- a/src/Main.hx +++ b/src/Main.hx @@ -26,7 +26,7 @@ class Main extends hxd.App { super.init(); dtsObj = new DtsObject(); - dtsObj.dtsPath = "data/shapes/images/helicopter.dts"; + dtsObj.dtsPath = "data/shapes/hazards/ductfan.dts"; dtsObj.isCollideable = false; dtsObj.isTSStatic = false; // dtsObj.setRotation(Math.PI / 2, 0, 0);