collision import fix

This commit is contained in:
Tubix
2024-12-21 19:34:14 +00:00
parent fc9d453045
commit 5ea343eca6
3 changed files with 18 additions and 13 deletions

View File

@@ -20,16 +20,16 @@ package alternativa.editor.mapexport
{ {
var loc8:Vertex = null; var loc8:Vertex = null;
var loc9:Point3D = null; var loc9:Point3D = null;
var loc10:Point3D = null; var loc10:Point3D = new Point3D();
var loc2:Number = Number.MAX_VALUE; var loc2:Number = Number.MAX_VALUE;
var loc3:Number = -Number.MAX_VALUE; var loc3:Number = -Number.MAX_VALUE;
var loc4:Number = Number.MAX_VALUE; var loc4:Number = Number.MAX_VALUE;
var loc5:Number = -Number.MAX_VALUE; var loc5:Number = -Number.MAX_VALUE;
var loc6:Number = Number.MAX_VALUE; var loc6:Number = Number.MAX_VALUE;
var loc7:Number = -Number.MAX_VALUE; var loc7:Number = -Number.MAX_VALUE;
for each(loc8 in param1.alternativa3d::_vertices) for each(loc8 in param1.vertices)
{ {
loc10 = loc8.alternativa3d::_coords; loc10.copyFromVertex(loc8);
if(loc10.x < loc2) if(loc10.x < loc2)
{ {
loc2 = loc10.x; loc2 = loc10.x;

View File

@@ -5,9 +5,13 @@ package alternativa.editor.mapexport
import alternativa.engine3d.objects.Mesh; import alternativa.engine3d.objects.Mesh;
import alternativa.types.Matrix4; import alternativa.types.Matrix4;
import alternativa.types.Point3D; import alternativa.types.Point3D;
import alternativa.engine3d.core.Vertex;
public class CollisionRect extends CollisionPrimitive public class CollisionRect extends CollisionPrimitive
{ {
private static const p1:Point3D = new Point3D();
private static const p2:Point3D = new Point3D();
public var width:Number = 0; public var width:Number = 0;
public var length:Number = 0; public var length:Number = 0;
@@ -22,7 +26,8 @@ package alternativa.editor.mapexport
var loc2:int = 0; var loc2:int = 0;
var loc14:Point3D = null; var loc14:Point3D = null;
var loc15:Number = NaN; var loc15:Number = NaN;
var loc3:Face = param1.alternativa3d::_faces.peek() as Face; var loc3:Face = param1.faceList;
var vertices:Vector.<Vertex> = loc3.vertices;
var loc4:Number = -1; var loc4:Number = -1;
var loc5:int = 0; var loc5:int = 0;
var loc6:Vector.<Point3D> = Vector.<Point3D>([new Point3D(),new Point3D(),new Point3D()]); var loc6:Vector.<Point3D> = Vector.<Point3D>([new Point3D(),new Point3D(),new Point3D()]);
@@ -31,7 +36,7 @@ package alternativa.editor.mapexport
while(loc2 < 3) while(loc2 < 3)
{ {
loc14 = loc6[loc2]; loc14 = loc6[loc2];
loc14.difference(loc3.vertices[(loc2 + 1) % 3].alternativa3d::_coords,loc3.vertices[loc2].alternativa3d::_coords); loc14.difference(p1.copyFromVertex(vertices[(loc2 + 1) % 3]),p2.copyFromVertex(vertices[loc2]));
loc15 = loc7[loc2] = loc14.length; loc15 = loc7[loc2] = loc14.length;
if(loc15 > loc4) if(loc15 > loc4)
{ {
@@ -47,7 +52,7 @@ package alternativa.editor.mapexport
loc11.invert(); loc11.invert();
this.width = loc7[loc8]; this.width = loc7[loc8];
this.length = loc7[loc9]; this.length = loc7[loc9];
var loc12:Point3D = loc3.vertices[(loc5 + 2) % 3].alternativa3d::_coords.clone(); var loc12:Point3D = new Point3D().copyFromVertex(vertices[(loc5 + 2) % 3]);
loc12.x += 0.5 * (loc10.x + loc11.x); loc12.x += 0.5 * (loc10.x + loc11.x);
loc12.y += 0.5 * (loc10.y + loc11.y); loc12.y += 0.5 * (loc10.y + loc11.y);
loc12.z += 0.5 * (loc10.z + loc11.z); loc12.z += 0.5 * (loc10.z + loc11.z);
@@ -55,8 +60,8 @@ package alternativa.editor.mapexport
loc11.normalize(); loc11.normalize();
var loc13:Point3D = Point3D.cross(loc10,loc11); var loc13:Point3D = Point3D.cross(loc10,loc11);
transform.setVectors(loc10,loc11,loc13,loc12); transform.setVectors(loc10,loc11,loc13,loc12);
transform.rotate(param1.alternativa3d::_rotationX,param1.alternativa3d::_rotationY,param1.alternativa3d::_rotationZ); transform.rotate(param1.rotationX,param1.rotationY,param1.rotationZ);
transform.translate(param1.alternativa3d::_coords.x,param1.alternativa3d::_coords.y,param1.alternativa3d::_coords.z); transform.translate(param1.x,param1.y,param1.z);
} }
override public function getXml(param1:Matrix4) : XML override public function getXml(param1:Matrix4) : XML

View File

@@ -26,9 +26,9 @@ package alternativa.editor.mapexport
override public function parse(param1:Mesh) : void override public function parse(param1:Mesh) : void
{ {
var loc2:Vector.<Vertex> = param1.faceList.vertices; var loc2:Vector.<Vertex> = param1.faceList.vertices;
this.v0.copy((loc2[0]).alternativa3d::_coords); this.v0.copyFromVertex((loc2[0]));
this.v1.copy((loc2[1]).alternativa3d::_coords); this.v1.copyFromVertex((loc2[1]));
this.v2.copy((loc2[2]).alternativa3d::_coords); this.v2.copyFromVertex((loc2[2]));
var loc3:Point3D = new Point3D(); var loc3:Point3D = new Point3D();
loc3.x = (this.v0.x + this.v1.x + this.v2.x) / 3; loc3.x = (this.v0.x + this.v1.x + this.v2.x) / 3;
loc3.y = (this.v0.y + this.v1.y + this.v2.y) / 3; loc3.y = (this.v0.y + this.v1.y + this.v2.y) / 3;
@@ -48,8 +48,8 @@ package alternativa.editor.mapexport
loc5.cross2(loc8,loc4); loc5.cross2(loc8,loc4);
loc5.normalize(); loc5.normalize();
transform.setVectors(loc4,loc5,loc8,loc3); transform.setVectors(loc4,loc5,loc8,loc3);
transform.rotate(param1.alternativa3d::_rotationX,param1.alternativa3d::_rotationY,param1.alternativa3d::_rotationZ); transform.rotate(param1.rotationX,param1.rotationY,param1.rotationZ);
transform.translate(param1.alternativa3d::_coords.x,param1.alternativa3d::_coords.y,param1.alternativa3d::_coords.z); transform.translate(param1.x,param1.y,param1.z);
loc6 = (this.v1.x + this.v2.x) / 3; loc6 = (this.v1.x + this.v2.x) / 3;
loc7 = (this.v1.y + this.v2.y) / 3; loc7 = (this.v1.y + this.v2.y) / 3;
this.v0.reset(-loc6,-loc7,0); this.v0.reset(-loc6,-loc7,0);