예제 #1
0
    public void SimpleAABBTree_TreeRayHitDetection_CheckCountIsAmount()
    {
        SimpleAABBTree myTree   = new SimpleAABBTree();
        var            myEntity = new SimpleAABBTreeStaticOBJ(new BoundingBox(new Vector3(0, 0, 0), new Vector3(1, 1, 1)));

        myTree.Insert(myEntity);
        myEntity = new SimpleAABBTreeStaticOBJ(new BoundingBox(new Vector3(0.5f, 0.5f, 0.5f), new Vector3(2, 2, 2)));
        myTree.Insert(myEntity);

        Ray aRay = new Ray(new Vector3(0, 0, 0), new Vector3(0, 1, 0));
        RayCastHit <Object> myHit = myTree.Raycast <Object>(aRay);

        Assert.AreEqual(myHit.Count, 1);
        aRay  = new Ray(new Vector3(0.5f, 0.5f, 0.5f), new Vector3(0, 1, 0));
        myHit = myTree.Raycast <Object>(aRay);
        Assert.AreEqual(myHit.Count, 2);
        aRay  = new Ray(new Vector3(0.5f, -1, 0.5f), new Vector3(0, 1, 0));
        myHit = myTree.Raycast <Object>(aRay);
        Assert.AreEqual(myHit.Count, 2);
        aRay  = new Ray(new Vector3(1.5f, 1.5f, 1.5f), new Vector3(0, 1, 0));
        myHit = myTree.Raycast <Object>(aRay);
        Assert.AreEqual(myHit.Count, 1);
    }