Test EllipsoidCollider. Bug with axis-aligned box...

by Glidias
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
play

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

        
    }
}