Ejemplo n.º 1
0
        public static bool isWayClearToNode(PhysicObj startObj, PathFinderNode node)
        {
            Vertices objVertices = ((PolygonShape)startObj.getBoundsFixture()?.Shape)?.Vertices;

            if (((AdditionalFixtureData)startObj.body.FixtureList[0].UserData).isTouching == true)
            {
                return(false);
            }
            if (objVertices == null)
            {
                return(false);
            }
            bool isVisible = true;

            foreach (Vector2 vertex in objVertices)
            {
                Bloodbender.ptr.world.RayCast((fixture, point, normal, fraction) =>
                {
                    if (fixture.UserData == null)
                    {
                        //isVisible = false;
                        return(-1);
                    }
                    if (fixture.IsSensor || ((AdditionalFixtureData)fixture.UserData).physicParent.pathNodeType == PathFinderNodeType.CENTER)
                    {
                        return(-1);
                    }
                    if (((AdditionalFixtureData)fixture.UserData).physicParent.Equals(startObj))
                    {
                        return(-1);
                    }
                    isVisible = false;
                    return(0);
                }, vertex + startObj.body.Position, node.position);

                if (isVisible == false)
                {
                    return(false);
                }
            }

            return(true);
        }