Пример #1
0
    private void _addNewEmptyGlobalPathWayPointAtIndex(int i)
    {
        // we are statically allocating one grid waypoint as we are creating one corresponding grid navigation task which will watch it
        globalPath.Add(new State());

        globalPathPolygonIndices.Add(0);        // adding dummy polygon index

        offMeshLinkWayPoint.Add(false);         // adding off mesh link state defaults to false

        // creating the grid task
        List <State> gridPath = new List <State> ();

        localPaths.Add(gridPath);

        State gridStartState = (i == 0) ? currentState : globalPath[i - 1];

        // tunnel planner stuff
        GridTimeDomain gridTimeDomain = new GridTimeDomain(neighborObstacles, neighborAgents);
        List <State>   spaceTimePath  = new List <State> ();

        spaceTimePaths.Add(spaceTimePath);

        GridNavigationTask gridNavigationTask = new GridNavigationTask(gridStartState, globalPath[i], 2.5F, ref gridPath,
                                                                       1.0f, 1.0f, ref spaceTimePath, gridTimeDomain,
                                                                       TaskPriority.Inactive, taskManager);

        gridNavigationTask.taskName = "gridNavigationTask:" + i.ToString();

        globalPath[i].notifyObservers(Event.GOAL_INVALID);         // currently the goal is invalid

        gridNavigationTasks.Add(gridNavigationTask);

        if (i == 0)       // first grid navigation task
        {
            neighborAgents.observable.registerObserver(Event.NEIGBHOR_AGENTS_CHANGED, gridNavigationTask);
            neighborObstacles.observable.registerObserver(Event.NEIGBHOR_DYNAMIC_OBSTACLES_CHANGED, gridNavigationTask);
            gridNavigationTask.currentlyExecutingTask = true;
        }

        /*
         * // creating the grid time task
         * List<State> spaceTimePath = new List<State> ();
         * spaceTimePaths.Add(spaceTimePath);
         *
         * GridTimeDomain gridTimeDomain = new GridTimeDomain (neigbhorObstacles);
         * GridTimeTunnelNavigationTask tunnelNavigationTask  =
         *      new GridTimeTunnelNavigationTask(gridStartState, globalPath[i], gridPath,1.0F,1.0F,ref gridTimeDomain, ref spaceTimePath, TaskPriority.Inactive,taskManager);
         * tunnelNavigationTask.taskName = "tunnelNavigationTask" + i.ToString();
         *
         * // EVENT: gridNavigationTask will send Event.GRID_PATH_CHANGED to tunnelNavigationTask
         * gridNavigationTask.registerObserver(Event.GRID_PATH_CHANGED,tunnelNavigationTask);
         */
    }
Пример #2
0
    private void _addNewEmptyGlobalPathWayPointAtIndex(int i)
    {
        // we are statically allocating one grid waypoint as we are creating one corresponding grid navigation task which will watch it
        globalPath.Add(new State());

        globalPathPolygonIndices.Add(0); // adding dummy polygon index

        offMeshLinkWayPoint.Add(false); // adding off mesh link state defaults to false

        // creating the grid task
        List<State> gridPath = new List<State> ();
        localPaths.Add(gridPath);

        State gridStartState = (i == 0) ? currentState : globalPath[i-1];

        // tunnel planner stuff
        GridTimeDomain gridTimeDomain = new GridTimeDomain (neighborObstacles, neighborAgents);
        List<State> spaceTimePath = new List<State> ();
        spaceTimePaths.Add(spaceTimePath);

        GridNavigationTask gridNavigationTask = new GridNavigationTask (gridStartState, globalPath[i],2.5F, ref gridPath,
            1.0f, 1.0f, ref spaceTimePath, gridTimeDomain,
            TaskPriority.Inactive, taskManager);
        gridNavigationTask.taskName = "gridNavigationTask:" + i.ToString();

        globalPath[i].notifyObservers(Event.GOAL_INVALID); // currently the goal is invalid

        gridNavigationTasks.Add(gridNavigationTask);

        if (i==0) // first grid navigation task
        {
            neighborAgents.observable.registerObserver(Event.NEIGBHOR_AGENTS_CHANGED, gridNavigationTask);
            neighborObstacles.observable.registerObserver(Event.NEIGBHOR_DYNAMIC_OBSTACLES_CHANGED, gridNavigationTask);
            gridNavigationTask.currentlyExecutingTask = true;
        }

        /*
        // creating the grid time task
        List<State> spaceTimePath = new List<State> ();
        spaceTimePaths.Add(spaceTimePath);

        GridTimeDomain gridTimeDomain = new GridTimeDomain (neigbhorObstacles);
        GridTimeTunnelNavigationTask tunnelNavigationTask  =
            new GridTimeTunnelNavigationTask(gridStartState, globalPath[i], gridPath,1.0F,1.0F,ref gridTimeDomain, ref spaceTimePath, TaskPriority.Inactive,taskManager);
        tunnelNavigationTask.taskName = "tunnelNavigationTask" + i.ToString();

        // EVENT: gridNavigationTask will send Event.GRID_PATH_CHANGED to tunnelNavigationTask
        gridNavigationTask.registerObserver(Event.GRID_PATH_CHANGED,tunnelNavigationTask);
        */
    }