Test EllipsoidCollider. Bug with axis-aligned box...
For an axis-aligned Box primitive surface, the collision normal with Elliipsoid Collider's getCollision() is a zero vector! This bug needs to be fixed.
♥0 |
Line 29 |
Modified 2012-10-23 16:11:43 |
MIT License
archived:2017-03-20 03:20:41
ActionScript3 source code
/**
* Copyright Glidias ( http://wonderfl.net/user/Glidias )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/6Q2K
*/
package {
import alternativ7.engine3d.core.EllipsoidCollider;
import alternativ7.engine3d.core.Object3DContainer;
import alternativ7.engine3d.materials.FillMaterial;
import alternativ7.engine3d.objects.Mesh;
import alternativ7.engine3d.primitives.Box;
import flash.geom.Vector3D;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
/**
* Test collider, bug with A3D!!
*/
public class TestCollider extends Sprite {
private var rootContainer:Object3DContainer = new Object3DContainer();
public function TestCollider() {
// Test collider hit box!!
var box:Box = new Box(300, 300, 300, 1, 1, 1, false);
box.setMaterialToAllFaces( new FillMaterial(0xFF0000, .6, 1));
var testCollider:EllipsoidCollider = new EllipsoidCollider(32, 32, 32);
var collisionNormal:Vector3D = new Vector3D();
var origin:Vector3D = new Vector3D( -500, 0, 0);
if (testCollider.getCollision(origin, new Vector3D(500, 0, 0), new Vector3D(), collisionNormal, box) ) {
if (collisionNormal.lengthSquared == 0) {
graphics.beginFill(0xFF0000);
graphics.drawRect(0,0,stage.stageWidth, stage.stageHeight);
throw new Error("ZERO length vector!" + collisionNormal );
}
}
}
}
}