#

API Docs for: 0.6.1
Show: Inherited Protected Private Deprecated

# File: src/collision/RaycastResult.js

    var Vec3 = require('../math/Vec3');

    module.exports = RaycastResult;

    /**
     * Storage for Ray casting data.
     * @class RaycastResult
     * @constructor
     */
    function RaycastResult(){

    	/**
    	 * @property {Vec3} rayFromWorld
    	 */
    	this.rayFromWorld = new Vec3();

    	/**
    	 * @property {Vec3} rayToWorld
    	 */
    	this.rayToWorld = new Vec3();

    	/**
    	 * @property {Vec3} hitNormalWorld
    	 */
    	this.hitNormalWorld = new Vec3();

    	/**
    	 * @property {Vec3} hitPointWorld
    	 */
    	this.hitPointWorld = new Vec3();

    	/**
    	 * @property {boolean} hasHit
    	 */
    	this.hasHit = false;

    	/**
    	 * The hit shape, or null.
    	 * @property {Shape} shape
    	 */
    	this.shape = null;

    	/**
    	 * The hit body, or null.
    	 * @property {Body} body
    	 */
    	this.body = null;

    	/**
    	 * The index of the hit triangle, if the hit shape was a trimesh.
    	 * @property {number} hitFaceIndex
    	 * @default -1
    	 */
    	this.hitFaceIndex = -1;

    	/**
    	 * Distance to the hit. Will be set to -1 if there was no hit.
    	 * @property {number} distance
    	 * @default -1
    	 */
    	this.distance = -1;

    	/**
    	 * If the ray should stop traversing the bodies.
    	 * @private
    	 * @property {Boolean} _shouldStop
    	 * @default false
    	 */
    	this._shouldStop = false;
    }

    /**
     * Reset all result data.
     * @method reset
     */
    RaycastResult.prototype.reset = function () {
    	this.rayFromWorld.setZero();
    	this.rayToWorld.setZero();
    	this.hitNormalWorld.setZero();
    	this.hitPointWorld.setZero();
    	this.hasHit = false;
    	this.shape = null;
    	this.body = null;
    	this.hitFaceIndex = -1;
    	this.distance = -1;
    	this._shouldStop = false;
    };

    /**
     * @method abort
     */
    RaycastResult.prototype.abort = function(){
    	this._shouldStop = true;
    };

    /**
     * @method set
     * @param {Vec3} rayFromWorld
     * @param {Vec3} rayToWorld
     * @param {Vec3} hitNormalWorld
     * @param {Vec3} hitPointWorld
     * @param {Shape} shape
     * @param {Body} body
     * @param {number} distance
     */
    RaycastResult.prototype.set = function(
    	rayFromWorld,
    	rayToWorld,
    	hitNormalWorld,
    	hitPointWorld,
    	shape,
    	body,
    	distance
    ){
    	this.rayFromWorld.copy(rayFromWorld);
    	this.rayToWorld.copy(rayToWorld);
    	this.hitNormalWorld.copy(hitNormalWorld);
    	this.hitPointWorld.copy(hitPointWorld);
    	this.shape = shape;
    	this.body = body;
    	this.distance = distance;
    };