Пример #1
0
    void Awake()
    {
        NavManagerProvider provider = (NavManagerProvider)FindObjectOfType(typeof(NavManagerProvider));

        if (provider == null)
        {
            Debug.LogError(string.Format("{0}: There is no {1} in the scene."
                                         , name, typeof(NavManagerProvider).Name));

            return;
        }


        NavManager manager = provider.CreateManager();

        if (manager == null)
        {
            Debug.LogError(string.Format("{0}: Could not get the navigation manager.", name));

            return;
        }

        mHelper = manager.NavGroup;

        //mPath = new BufferHandler<uint>();

        isInit = true;
    }
Пример #2
0
    private bool Initialize()
    {
        if (mState != null)
        {
            mState.Exit();
        }

        mState = null;

        NavManagerProvider provider =
            (NavManagerProvider)FindObjectOfType(typeof(NavManagerProvider));

        if (provider == null)
        {
            Debug.LogError(string.Format("{0}: There is no {1} in the scene."
                                         , name, typeof(NavManagerProvider).Name));

            return(false);
        }

        NavManager manager = provider.CreateManager();

        if (manager == null)
        {
            Debug.LogError(string.Format("{0}: Could not get the navigation manager.", name));

            return(false);
        }

        mHelper = manager.NavGroup;

        return(true);
    }
Пример #3
0
    void Start()
    {
        NavManagerProvider provider = (NavManagerProvider)FindObjectOfType(typeof(NavManagerProvider));

        if (provider == null)
        {
            Debug.LogError(string.Format("{0}: There is no {1} in the scene."
                                         , name, typeof(NavManagerProvider).Name));

            enabled = false;
            return;
        }

        NavManager.ActiveManager = provider.CreateManager();  // Provides error reporting.

        if (NavManager.ActiveManager == null)
        {
            enabled = false;
            return;
        }

        mManager = NavManager.ActiveManager;
        mNav     = mManager.NavGroup;

        SimGUIUtil.contextHelpText = string.Format(
            "Agent: Add: [{0}], Select: [{1}], Move Selected: [{2}]"
            , StdButtons.SetA, StdButtons.SelectB, StdButtons.SelectA);

        SimGUIUtil.contextControlZone.height = SimGUIUtil.LineHeight + SimGUIUtil.Margin;
        SimGUIUtil.contextActive             = true;
    }
Пример #4
0
    void Start()
    {
        if (agentA == null || agentB == null || agentC == null)
        {
            Debug.LogError(name + ": One or more agents are not assigned.");
            enabled = false;
            return;
        }

        NavManagerProvider provider =
            (NavManagerProvider)FindObjectOfType(typeof(NavManagerProvider));

        if (provider == null)
        {
            Debug.LogError(string.Format("{0}: There is no {1} in the scene."
                                         , name, typeof(NavManagerProvider).Name));

            enabled = false;
            return;
        }

        NavManager.ActiveManager = provider.CreateManager();  // Provides error reporting.

        if (NavManager.ActiveManager == null)
        {
            enabled = false;
            return;
        }

        mManager = NavManager.ActiveManager;
        mNav     = mManager.NavGroup;

        SimGUIUtil.contextHelpText = string.Format(
            "Agent: Add: [{0}], Select: [{1}], Move Selected: [{2}]"
            , StdButtons.SetA, StdButtons.SelectB, StdButtons.SelectA);

        SimGUIUtil.contextControlZone.height = SimGUIUtil.LineHeight + SimGUIUtil.Margin;
        SimGUIUtil.contextActive             = true;

        mCam = Camera.main;

        agentNames = GetComponent <StringList>().values;
    }
Пример #5
0
    private bool InitializeNav()
    {
        NavManagerProvider provider =
            (NavManagerProvider)FindObjectOfType(typeof(NavManagerProvider));

        if (provider == null)
        {
            Debug.LogError(string.Format("{0}: There is no {1} in the scene."
                                         , name, typeof(NavManagerProvider).Name));

            return(false);
        }

        NavManager manager = provider.CreateManager();

        if (manager == null)
        {
            Debug.LogError(string.Format("{0}: Could not get the navigation manager.", name));

            return(false);
        }

        mGroup = manager.NavGroup;

        maxPathSize = Mathf.Max(1, maxPathSize);

        mPath = new BufferHandler <uint>(
            "Max Path Size", 1, maxPathSize, 1, Mathf.Max(100, maxPathSize));

        mPathStart = new NavmeshPoint();
        mPathEnd   = new NavmeshPoint();

        maxCorners = Mathf.Max(1, maxCorners);

        mCornerPolys =
            new BufferHandler <uint>("Max Corner Size", 1, maxCorners, 1, Mathf.Max(maxCorners, 20));

        HandlePathBufferResize();

        return(true);
    }
Пример #6
0
    /// <summary>
    /// Controls behavior of the inspector.
    /// </summary>
    public override void OnInspectorGUI()
    {
        NavManagerProvider targ = (NavManagerProvider)target;

        INavmeshData navmeshData = targ.NavmeshData;

        string msg = "";

        if (navmeshData == null || !navmeshData.HasNavmesh)
        {
            msg = "No navigation mesh.\n";
        }

        if (!targ.AvoidanceSet)
        {
            msg += "No avoidance set.\n";
        }

        if (!targ.AgentGroups)
        {
            msg += "No agent groups.\n";
        }

        if (msg.Length > 0)
        {
            GUILayout.Box(msg.Trim(), EditorUtil.ErrorStyle, GUILayout.ExpandWidth(true));
        }

        EditorGUILayout.Separator();

        bool bv = EditorGUILayout.Toggle("Show Mesh", targ.DebugEnabled);

        if (bv != targ.DebugEnabled)
        {
            if (bv)
            {
                // Turn off asset draw.
                org.critterai.nav.u3d.editor.NavmeshSceneDraw.Instance.Hide();
            }

            targ.DebugEnabled = bv;
        }

        EditorGUILayout.Separator();

        EditorGUILayout.LabelField("Navigation Settings");

        EditorGUILayout.Separator();

        targ.NavmeshData = NavEditorUtil.OnGUINavmeshDataField("Navmesh Data", targ.NavmeshData);

        targ.AgentGroups = (AgentGroupSettings)EditorGUILayout.ObjectField(
            "Agent Groups", targ.AgentGroups, typeof(AgentGroupSettings), false);

        EditorGUILayout.Separator();

        targ.MaxQueryNodes       = EditorGUILayout.IntField("Max Query Nodes", targ.MaxQueryNodes);
        targ.MaxPathSize         = EditorGUILayout.IntField("Max Path Size", targ.MaxPathSize);
        targ.MaxStraightPathSize =
            EditorGUILayout.IntField("Max Straight Path", targ.MaxStraightPathSize);

        targ.MaxAgents = EditorGUILayout.IntField("Max Nav Agents", targ.MaxAgents);

        EditorGUILayout.Separator();

        EditorGUILayout.LabelField("Crowd Settings");

        EditorGUILayout.Separator();

        targ.MaxCrowdAgents = EditorGUILayout.IntField("Max Crowd Agents", targ.MaxCrowdAgents);
        targ.MaxAgentRadius = EditorGUILayout.FloatField("Max Agent Radius", targ.MaxAgentRadius);

        EditorGUILayout.Separator();

        targ.AvoidanceSet = (CrowdAvoidanceSet)EditorGUILayout.ObjectField(
            "Avoidance Set", targ.AvoidanceSet, typeof(CrowdAvoidanceSet), false);

        EditorGUILayout.Separator();

        EditorGUILayout.LabelField("Accuracy Settings");

        EditorGUILayout.Separator();

        targ.Extents     = EditorGUILayout.Vector3Field("Extents", targ.Extents);
        targ.WideExtents = EditorGUILayout.Vector3Field("Wide Extents", targ.WideExtents);

        EditorGUILayout.Separator();

        targ.RadiusAt        = EditorGUILayout.FloatField("Radius At", targ.RadiusAt);
        targ.RadiusNear      = EditorGUILayout.FloatField("Radius Near", targ.RadiusNear);
        targ.HeightTolerance = EditorGUILayout.FloatField("Height Tolerance", targ.HeightTolerance);

        EditorGUILayout.Separator();

        targ.TurnThreshold = EditorGUILayout.FloatField("Turn Threshold", targ.TurnThreshold);
        targ.AngleAt       = EditorGUILayout.FloatField("Angle At", targ.AngleAt);

        EditorGUILayout.Separator();

        EditorGUILayout.Separator();

        if (GUI.changed)
        {
            EditorUtility.SetDirty(target);
        }
    }