示例#1
0
 private void Update()
 {
     if (Config.Instance.showVision)
     {
         AntDrawer.DrawPie(_t.position.x, _t.position.y, radius, Angle, lowerLimit, upperLimit, Color.green);
     }
 }
示例#2
0
        private void DrawLinks(List <AntAIDebuggerNode> aList, bool aVertical)
        {
            AntAIDebuggerNode node;

            for (int i = 0, n = aList.Count; i < n; i++)
            {
                node = aList[i];
                if (node.isActive && node.links.Count > 0)
                {
                    for (int j = 0, nj = node.links.Count; j < nj; j++)
                    {
                        if (node.links[j].Key.isActive)
                        {
                            if (aVertical)
                            {
                                AntDrawer.DrawVerticalSolidConnection(node.Output,
                                                                      node.links[j].Key.Input, node.links[j].Value, 1, 15.0f);
                            }
                            else
                            {
                                AntDrawer.DrawSolidConnection(node.Output,
                                                              node.links[j].Key.Input, node.links[j].Value, 1, 15.0f);
                            }
                        }
                    }
                }
            }
        }
示例#3
0
        public void Execute()
        {
            SpawnerNode spawner;

            for (int i = 0, n = _spawnerNodes.Count; i < n; i++)
            {
                spawner = _spawnerNodes[i];
                if (spawner.Spawner.IsActive)
                {
                    spawner.Spawner.Delay -= Time.deltaTime;
                    if (spawner.Spawner.Delay <= 0.0f)
                    {
                        spawner.Spawner.Spawn();
                        spawner.Spawner.Delay    = spawner.Spawner.spawnDelay;
                        spawner.Spawner.IsActive = false;
                    }

                    if (Config.Instance.showDropperRecharge && spawner.Spawner.IsActive)
                    {
                        AntDrawer.DrawPie(spawner.entity.Position, 0.5f, 90.0f, 0.0f,
                                          (1 - (spawner.Spawner.Delay / spawner.Spawner.spawnDelay)) * 360.0f, Color.grey);
                    }
                }
            }
        }
示例#4
0
文件: WayPoint.cs 项目: limity/GOAP-2
 public void DrawLinks()
 {
     for (int i = 0, n = neighbors.Count; i < n; i++)
     {
         AntDrawer.DrawLine(position, neighbors[i].position, Color.white);
     }
 }
示例#5
0
 private void DrawWay()
 {
     for (int i = 0, n = _way.Count; i < n; i++)
     {
         if (i > 0)
         {
             AntDrawer.DrawLine(_way[i - 1], _way[i], Color.red);
         }
     }
 }
示例#6
0
 public bool IsSee(Vector2 aPoint)
 {
     if (AntMath.Distance(_t.position.x, _t.position.y, aPoint.x, aPoint.y) < radius)
     {
         float angle = AntMath.Angle(AntMath.AngleDeg(_t.position.x, _t.position.y, aPoint.x, aPoint.y));
         float diff  = AntMath.AngleDifferenceDeg(angle, Angle);
         if (AntMath.InRange(diff, lowerLimit, upperLimit))
         {
             if (Config.Instance.showVision)
             {
                 AntDrawer.DrawLine(_t.position.x, _t.position.y, aPoint.x, aPoint.y, Color.yellow);
             }
             return(true);
         }
     }
     return(false);
 }
示例#7
0
        private void DrawLinks()
        {
            Vector2 current;

            AntDrawer.BeginHandles(Handles.matrix);
            for (int i = 0, n = _self.wayPoints.Count; i < n; i++)
            {
                current = _self.wayPoints[i];
                for (int j = 0; j < n; j++)
                {
                    if (i != j && AntMath.Distance(current, _self.wayPoints[j]) <= _self.linkRadius)
                    {
                        AntDrawer.DrawLine(current, _self.wayPoints[j], Color.yellow);
                    }
                }
            }
            AntDrawer.EndHandles();
        }
示例#8
0
        public override void Update(float aDeltaTime)
        {
            DropperNode    dropper;
            MagnetableNode item;
            float          dist;

            for (int i = 0, n = _dropperNodes.Count; i < n; i++)
            {
                dropper = _dropperNodes[i];
                dropper.Dropper.IsEmpty = true;

                // Проверяем все вещи на предмет их попадания в область дроппера.
                for (int j = 0, jn = _magnetableNodes.Count; j < jn; j++)
                {
                    item = _magnetableNodes[j];
                    dist = AntMath.Distance(dropper.entity.Position, item.entity.Position);
                    if (dist <= dropper.Dropper.observeRadius)
                    {
                        dropper.Dropper.IsEmpty = false;
                        break;
                    }
                }

                // Если дроппер пустой.
                if (dropper.Dropper.IsEmpty)
                {
                    dropper.Dropper.Delay -= aDeltaTime;
                    if (dropper.Dropper.Delay < 0.0f)
                    {
                        dropper.Dropper.DropItem();
                        dropper.Dropper.Delay = dropper.Dropper.rechargeTime;
                    }
                }

                if (Config.Instance.showDropperRecharge && dropper.Dropper.IsEmpty)
                {
                    AntDrawer.DrawPie(dropper.entity.Position, 0.3f, 90.0f, 0.0f,
                                      (1 - (dropper.Dropper.Delay / dropper.Dropper.rechargeTime)) * 360.0f, Color.grey);
                }
            }
        }
示例#9
0
 private void DrawCurrentStateLink()
 {
     // Реализация линка, что называется "в лоб" между текущим действием и состояним :)
     if (_genericNodes.Count >= 2)
     {
         var gNode = _genericNodes[1];
         AntAIDebuggerNode sNode;
         for (int i = 0, n = _nodes.Count; i < n; i++)
         {
             sNode = _nodes[i];
             if (gNode.value.Equals(sNode.value))
             {
                 AntDrawer.DrawVerticalSolidConnection(
                     new Vector2(gNode.rect.x + gNode.rect.width * 0.5f, gNode.rect.y + 10.0f),
                     new Vector2(sNode.rect.x + gNode.rect.width * 0.5f, sNode.rect.y + sNode.rect.height - 10.0f),
                     Color.gray, -1, 50.0f);
                 break;
             }
         }
     }
 }
示例#10
0
        private void OnSceneGUI()
        {
            bool dirty         = false;
            bool removePressed = ((Event.current.modifiers & (EventModifiers.Command | EventModifiers.Control)) != 0);
            bool addPressed    = ((Event.current.modifiers & (EventModifiers.Shift)) != 0);

            Handles.matrix = _self.transform.localToWorldMatrix;

            if (removePressed)
            {
                Handles.color = Color.red;
                for (int i = 0, n = _self.wayPoints.Count; i < n; i++)
                {
                    if (Handles.Button(_self.wayPoints[i], Quaternion.identity, 0.05f, 0.05f, Handles.DotHandleCap))
                    {
                        _self.wayPoints.RemoveAt(i);
                        dirty = true;
                        break;
                    }
                }
            }
            else if (addPressed)
            {
                var mouse = HandleUtility.GUIPointToWorldRay(Event.current.mousePosition).origin;
                var p     = _self.transform.InverseTransformPoint(mouse);

                AntDrawer.BeginHandles(Handles.matrix);
                AntDrawer.DrawCircle((Vector2)p, _self.linkRadius, Color.yellow);
                AntDrawer.EndHandles();

                if (Handles.Button(p, Quaternion.identity, 0.05f, 0.05f, Handles.DotHandleCap))
                {
                    _self.wayPoints.Add((Vector2)p);
                    dirty = true;
                }

                Handles.color = Color.white;
                float s = HandleUtility.GetHandleSize(p) * 0.05f;
                for (int i = 0, n = _self.wayPoints.Count; i < n; i++)
                {
                    Handles.DotHandleCap(0, _self.wayPoints[i], Quaternion.identity, s, EventType.dragUpdated);
                }

                HandleUtility.Repaint();
            }
            else
            {
                Handles.color = Color.white;
                for (int i = 0, n = _self.wayPoints.Count; i < n; i++)
                {
                    Vector2 p     = _self.wayPoints[i];
                    Vector2 delta = DotHandle(p) - p;
                    if (delta != Vector2.zero)
                    {
                        _self.wayPoints[i] = p + delta;

                        dirty = true;
                    }
                }
            }

            DrawLinks();

            if (dirty)
            {
                EditorUtility.SetDirty(target);
            }
        }