Esempio n. 1
0
        private void initShow()
        {
            SetColX(_PalletColNums);
            SetRowY(_PalletRowNums);

            //clear old point.
            SeriesBurnOK.Points.Clear();
            SeriesBurnNG.Points.Clear();
            SeriesNotBurn.Points.Clear();

            _AllPointStatus.Clear();
            for (int y = 0; y < _PalletRowNums; y++)
            {
                for (int x = 0; x < _PalletColNums; x++)
                {
                    PointStatus p = new PointStatus();
                    p.x      = x;
                    p.y      = y;
                    p.status = BURN_STATUS_NOT_BURN;
                    _AllPointStatus.Add(p);
                }
            }

            ReFreshPoint();
        }
 /// <summary>
 /// CONSTRUCTOR, set the coordinates of the cell, and set status to Empty
 /// </summary>
 /// <param name="x">X position</param>
 /// <param name="y">Y position</param>
 public Point(int x, int y)
 {
     this.X = x;
     this.Y = y;
     //set all declarations of Point to "Empty" by default
     this.Status = PointStatus.Empty;
 }
        private static void UpdatePointStatus(LinkedListNode <PointStatus> node)
        {
            PointStatus current = node.Value;
            PointStatus prev    = node.Previous != null ? node.Previous.Value : node.List.Last.Value;
            PointStatus next    = node.Next != null ? node.Next.Value : node.List.First.Value;

            if (!current.isConvex)
            {
                // 之前是凹点,则判断此次是否为凸点
                if (Vec.Cross(current.point - prev.point, next.point - current.point) >= 0)
                {
                    current.isConvex = true;
                }
                else
                {
                    current.isSeparable = false; // 凹点一定不可分离
                    return;
                }
            }

            // 更新可分离状态
            foreach (PointStatus pointStaus in node.List)
            {
                if (pointStaus != current && pointStaus != prev && pointStaus != next)
                {
                    if (TestInTriangle(pointStaus.point, current.point, prev.point, next.point))
                    {
                        // 有一个多边形的顶点在三角形內,则此三角形不可分离
                        current.isSeparable = false;
                        return;
                    }
                }
            }
            current.isSeparable = true;
        }
 public void RemoveActiveEdge()
 {
     activeEdges--;
     if (activeEdges == 0)
     {
         status = PointStatus.FIXED;
     }
 }
Esempio n. 5
0
 /// <summary>
 /// Deserialization constructor
 /// </summary>
 /// <param name="serial"></param>
 public RemappingPoint(SerializableRemappingPoint serial)
 {
     m_attributes[(int)EveAttribute.Intelligence] = serial.Intelligence;
     m_attributes[(int)EveAttribute.Perception]   = serial.Perception;
     m_attributes[(int)EveAttribute.Willpower]    = serial.Willpower;
     m_attributes[(int)EveAttribute.Charisma]     = serial.Charisma;
     m_attributes[(int)EveAttribute.Memory]       = serial.Memory;
     m_status = serial.Status;
 }
Esempio n. 6
0
        public DeepPoint(PointF point, PointType pType, PointStatus pStatus)
        {
            p = point;

            type   = pType;
            status = pStatus;

            intersections = new List <DeepPoint>();
        }
Esempio n. 7
0
 /// <summary>
 /// Deserialization constructor
 /// </summary>
 /// <param name="serial"></param>
 public RemappingPoint(SerializableRemappingPoint serial)
 {
     m_attributes[(int)EveAttribute.Intelligence] = serial.Intelligence;
     m_attributes[(int)EveAttribute.Perception] = serial.Perception;
     m_attributes[(int)EveAttribute.Willpower] = serial.Willpower;
     m_attributes[(int)EveAttribute.Charisma] = serial.Charisma;
     m_attributes[(int)EveAttribute.Memory] = serial.Memory;
     m_description = serial.Description;
     m_status = serial.Status;
 }
    private bool XXXXXXXFlag = true; //队列第一个位置点,跟设备相关时,对应设备的状态信息来表示true, false
    #endregion

    #region Unity生命周期
    protected override void Awake()
    {
        base.Awake();
        m_stepArray = new PointStatus[]
        {
            PointStatus.Train_Down_Birth,
            PointStatus.DownTrain_Down,
            PointStatus.ExitCheckTicket,
            PointStatus.ExitCheckTicketAfter,
            PointStatus.ExitStation
        };
        m_npcActionStatus = NpcActionStatus.ExitStationTrainDown_NpcActionStatus;
        m_endStepIndex    = m_stepArray.Length - 1;
    }
Esempio n. 9
0
    private bool XXXXXXXFlag  = true; //队列第一个位置点,跟设备相关时,对应设备的状态信息来表示true, false
    #endregion

    #region Unity生命周期
    protected override void Awake()
    {
        base.Awake();
        m_areaMark = 1 + 2 + 4 + 16;
        m_navMeshAgent.areaMask = m_areaMark;
        m_stepArray             = new PointStatus[]
        {
            PointStatus.Train_Up_Birth,
            PointStatus.DownTrain_Up,
            PointStatus.ExitCheckTicket,
            PointStatus.ExitCheckTicketAfter,
            PointStatus.ExitStation
        };
        m_npcActionStatus = NpcActionStatus.ExitStationTrainUp_NpcActionStatus;
        m_endStepIndex    = m_stepArray.Length - 1;
    }
    private bool XXXXXXXFlag = true; //队列第一个位置点,跟设备相关时,对应设备的状态信息来表示true, false
    #endregion

    #region Unity生命周期
    protected override void Awake()
    {
        base.Awake();
        m_areaMark = 1 + 2 + 4 + 8;
        m_navMeshAgent.areaMask = m_areaMark;
        m_stepArray             = new PointStatus[] {
            PointStatus.EnterStation,
            PointStatus.BuyTicket,
            PointStatus.EnterCheckTicket,
            PointStatus.EnterCheckTicketAfter,
            PointStatus.WaitTrain_Down,
            PointStatus.Train_Down
        };
        m_npcActionStatus = NpcActionStatus.EnterStationTrainDown_NpcActionStatus;
        m_endStepIndex    = m_stepArray.Length - 1;
    }
Esempio n. 11
0
 public override PointStatus GetPointStatus(Vertex3 vt)
 {
     if (faces.Any(x => x.Plane.Excludes(vt)))
     {
         return(PointStatus.Outside);
     }
     foreach (CH_Polygon f in faces)
     {
         PointStatus ps = f.GetPointStatus(vt);
         if (ps != PointStatus.Outside)
         {
             return(ps);
         }
     }
     return(PointStatus.Inside);
 }
Esempio n. 12
0
        /// <summary>
        /// Add new incident edge
        /// Update
        /// </summary>
        /// <param name="edge">The size of new edge</param>
        public void AddEdge(Edge edge)
        {
            if (edge.length > MaxEdge)
            {
                MaxEdge = edge.length;
            }
            if (edge.length < MinEdge)
            {
                MinEdge = edge.length;
            }

            activeEdges++;
            if (activeEdges > 0)
            {
                status = PointStatus.ACTIVE;
            }
        }
Esempio n. 13
0
    //获得指定必达位置点,这样的点通常是EnterCheckTicketAfter, ExitCheckTicketAfter, Train_Up等类型的位置点
    public Point GetMustGotoPoint(int stepIndex)
    {
        Point       point  = null;
        PointStatus status = m_stepArray[stepIndex];

        if ((status == PointStatus.EnterCheckTicketAfter ||
             status == PointStatus.ExitCheckTicketAfter ||
             status == PointStatus.Train_Up ||
             status == PointStatus.Train_Down ||
             status == PointStatus.Train_Up_Birth ||
             status == PointStatus.Train_Down_Birth ||
             status == PointStatus.DownTrain_Down ||
             status == PointStatus.DownTrain_Up) && m_gotoPoint != null)
        {
            //下一个位置点,必须为特定位置点时, 跟该位置点当前状态没有任何关系,必须获取到该位置点
            point = StationEngine.Instance.GetFirstPoint(m_stationIndex,
                                                         (int)m_stepArray[stepIndex],
                                                         m_gotoPoint.m_belongPointQueue.m_queueIndex);
        }
        return(point);
    }
Esempio n. 14
0
        /// <summary>
        /// Will set the provided character scratchpad's base attributes as the target values to remap.
        /// </summary>
        /// <param name="newScratchpad">The scratchpad with the target base values to assign to this point</param>
        /// <param name="oldScratchpad">The scratchpad before we remapped</param>
        internal void SetBaseAttributes(CharacterScratchpad newScratchpad, CharacterScratchpad oldScratchpad)
        {
            // Update the status
            this.m_status = PointStatus.UpToDate;

            // Initialize the string
            StringBuilder builder = new StringBuilder();

            // Scroll through attributes
            for (int i = 0; i < 5; i++)
            {
                // Compute the new base attribute
                EveAttribute attrib = (EveAttribute)i;
                m_attributes[i] = newScratchpad[attrib].Base;

                // Update description
                builder.AppendLine().Append(GetStringForAttribute(attrib, oldScratchpad, newScratchpad));
            }

            // Return the final string
            this.m_description = builder.ToString();
        }
Esempio n. 15
0
 //define constructor
 public Point(int x, int y, PointStatus status)
 {
     this.X      = x;
     this.Y      = y;
     this.Status = status;
 }
Esempio n. 16
0
 public Point(int x, int y, PointStatus status)
 {
     this.x      = x;
     this.y      = y;
     this.status = status;
 }
Esempio n. 17
0
 //constructor
 public Point()
 {
     this.x      = 0;
     this.y      = 0;
     this.status = PointStatus.Empty;
 }
Esempio n. 18
0
 public Point(int x, int y, PointStatus s)
 {
     this.x = x; this.y = y;
     this.Status = s;
 }
    private static PointQueue ZZZ(Transform queueTrans, int queueIndex)
    {
        if (queueTrans == null)
        {
            return(null);
        }
        PointQueue pointQueue = new PointQueue();

        pointQueue.m_queueIndex = queueIndex;
        int pointCount = queueTrans.childCount;

        for (int i = 0; i < pointCount; i++)
        {
            Transform pointTrans = queueTrans.GetChild(i);
            string    pointName  = pointTrans.gameObject.name;
            pointName = pointName.Substring(0, pointName.Length - 6);
            PointStatus pointStatus     = (PointStatus)System.Enum.Parse(typeof(PointStatus), pointName);
            bool        isRestAreaPoint = false;
            if (pointName.Contains("RestArea"))
            {
                isRestAreaPoint = true;
            }
            bool isDeviceCtrl = false;
            if (i == 0 && (pointName == "EnterCheckTicket" ||
                           pointName == "ExitCheckTicket" ||
                           pointName == "WaitTrain_Up" ||
                           pointName == "WaitTrain_Down" ||
                           pointName == "Train_Up_Birth" ||
                           pointName == "Train_Down_Birth"))
            {
                isDeviceCtrl = true;
            }
            float posX        = pointTrans.position.x;
            float posY        = pointTrans.position.y;
            float posZ        = pointTrans.position.z;
            float eulerAngleX = pointTrans.eulerAngles.x;
            float eulerAngleY = pointTrans.eulerAngles.y;
            float eulerAngleZ = pointTrans.eulerAngles.z;
            Point point       = new Point()
            {
                m_belongPointQueue = pointQueue,
                m_queueIndex       = queueIndex,
                m_pointStatus      = pointStatus,
                m_isReservation    = false, //未提前被预约
                m_isEmpty          = true,  //为空
                m_isRestAreaPoint  = isRestAreaPoint,
                m_isDeviceCtrl     = isDeviceCtrl,
                PosX        = posX,
                PosY        = posY,
                PosZ        = posZ,
                EulerAngleX = eulerAngleX,
                EulerAngleY = eulerAngleY,
                EulerAngleZ = eulerAngleZ,
            };
            pointQueue.AddPoint2Queue(point);
            // PointBehaviour pb = pointTrans.GetComponent<PointBehaviour>();
            // point.m_pb = pb;
            // point.m_pb.IsRestArea = isRestAreaPoint;
        }
        return(pointQueue);
    }
Esempio n. 20
0
 public Point(int x, int y, PointStatus Status);
Esempio n. 21
0
 public void Update(PointStatus status)
 {
     UpdatedDate = DateTime.Now;
     Status      = status;
 }
Esempio n. 22
0
 public PointStatusRelationship GetPointStatusRelationship(PointStatus curPointStatus)
 {
     return(m_pointStatusRelatioinshipDict[curPointStatus]);
 }
Esempio n. 23
0
 public DestinationPoint(PointStatus pointStatus, Address address, DestinationPoint previousPoint = null)
 {
     Status        = pointStatus;
     Address       = address;
     PreviousPoint = previousPoint;
 }
        /// <summary>
        /// 分解多边形为三角形,返回分解后的三角形顶点在polygon中的索引
        /// </summary>
        /// <param name="polygon">输入多边形</param>
        public static List <int> Resolve(List <Vec> polygon)
        {
            if (polygon.Count < 3)
            {
                return(null);
            }
            bool       isCW = IsClockwise(polygon);
            List <int> tris = new List <int>();
            LinkedList <PointStatus> pointStatuses = new LinkedList <PointStatus>();

            for (int i = 0; i < polygon.Count; i++)
            {
                Vec         point       = polygon[i];
                PointStatus pointStatus = new PointStatus {
                    point = point, index = i
                };
                // 确保顺序为顺时针,逆时针则反向插入
                if (isCW)
                {
                    pointStatuses.AddLast(pointStatus);
                }
                else
                {
                    pointStatuses.AddFirst(pointStatus);
                }
            }
            // 可分离的点
            LinkedList <LinkedListNode <PointStatus> > separablePointStatuses = new LinkedList <LinkedListNode <PointStatus> >();

            for (LinkedListNode <PointStatus> node = pointStatuses.First; node != null; node = node.Next)
            {
                UpdatePointStatus(node);
                if (node.Value.isSeparable)
                {
                    separablePointStatuses.AddFirst(node);
                }
            }
            // 开始分离
            while (pointStatuses.Count >= 3)
            {
                if (separablePointStatuses.Count == 0)
                {
                    return(null);                                   // 分离失败,例如自身相交情况
                }
                LinkedListNode <PointStatus> current = separablePointStatuses.First.Value;
                separablePointStatuses.RemoveFirst();
                LinkedListNode <PointStatus> prev = current.Previous ?? current.List.Last;
                LinkedListNode <PointStatus> next = current.Next ?? current.List.First;
                pointStatuses.Remove(current);
                tris.Add(current.Value.index);
                tris.Add(prev.Value.index);
                tris.Add(next.Value.index);
                // 更新可分离点状态
                if (prev.Value.isSeparable)
                {
                    UpdatePointStatus(prev);
                    if (!prev.Value.isSeparable)
                    {
                        separablePointStatuses.Remove(prev);
                    }
                }
                else
                {
                    UpdatePointStatus(prev);
                    if (prev.Value.isSeparable)
                    {
                        separablePointStatuses.AddFirst(prev);
                    }
                }
                if (next.Value.isSeparable)
                {
                    UpdatePointStatus(next);
                    if (!next.Value.isSeparable)
                    {
                        separablePointStatuses.Remove(next);
                    }
                }
                else
                {
                    UpdatePointStatus(next);
                    if (next.Value.isSeparable)
                    {
                        separablePointStatuses.AddFirst(next);
                    }
                }
            }
            return(tris);
        }
    private void CreateNpc(NpcActionStatus npcActionStatus, PointStatus pointStatus)
    {
        NpcType    npcType = NpcType.None;
        GameObject npcGo   = m_npcFactory.CreateNpc(ref npcType);

        if (npcGo == null)
        {
            return;
        }
        Transform parentTrans = m_stationModule.GetNpcParentTransform(m_stationIndex, npcActionStatus);

        if (parentTrans == null)
        {
            return;
        }
        npcGo.transform.SetParent(parentTrans);
        Point point = null;

        if (pointStatus == PointStatus.Train_Up_Birth || pointStatus == PointStatus.Train_Down_Birth)
        {
            point = StationEngine.Instance.GetNoReservationPoint2RandomPointQueue(m_stationIndex, (int)pointStatus, 0, 16);
        }
        else
        {
            point = StationEngine.Instance.GetNoReservationPoint2RandomPointQueue(m_stationIndex, (int)pointStatus);
        }
        if (point == null)
        {
            return;
        }
        if (pointStatus != PointStatus.EnterStation)
        {
            point.IsReservation = true;
        }
        npcGo.transform.localPosition                = new Vector3(point.PosX, point.PosY, point.PosZ);
        npcGo.transform.localEulerAngles             = new Vector3(point.EulerAngleX, point.EulerAngleY, point.EulerAngleZ);
        npcGo.GetComponent <NavMeshAgent> ().enabled = true;

        NpcAction npcAction = null;

        switch (npcActionStatus)
        {
        case NpcActionStatus.EnterStationTrainUp_NpcActionStatus:
        {
            npcAction = npcGo.AddComponent <NpcEnterStationUpAction> ();
            npcAction.NpcActionStatus = NpcActionStatus.EnterStationTrainUp_NpcActionStatus;
            if (System.Object.ReferenceEquals(npcAction, null) == false)
            {
                npcAction.NpcType      = npcType;
                npcAction.StationIndex = m_stationIndex;
                m_stationModule.AddNpcAction(m_stationIndex, npcAction);
            }
            break;
        }

        case NpcActionStatus.EnterStationTrainDown_NpcActionStatus:
        {
            npcAction = npcGo.AddComponent <NpcEnterStationDownAction> ();
            npcAction.NpcActionStatus = NpcActionStatus.EnterStationTrainDown_NpcActionStatus;
            if (System.Object.ReferenceEquals(npcAction, null) == false)
            {
                npcAction.NpcType      = npcType;
                npcAction.StationIndex = m_stationIndex;
                m_stationModule.AddNpcAction(m_stationIndex, npcAction);
            }
            break;
        }

        case NpcActionStatus.ExitStationTrainUp_NpcActionStatus:
        {
            npcAction = npcGo.AddComponent <NpcExitStationUpAction_New> ();
            if (System.Object.ReferenceEquals(npcAction, null) == false)
            {
                npcAction.NpcType      = npcType;
                npcAction.StationIndex = m_stationIndex;
                m_stationModule.AddNpcAction(m_stationIndex, npcAction);
            }
            ((NpcExitStationUpAction_New)npcAction).StartAction(point);
            break;
        }

        case NpcActionStatus.ExitStationTrainDown_NpcActionStatus:
        {
            npcAction = npcGo.AddComponent <NpcExitStationDownAction_New> ();
            if (System.Object.ReferenceEquals(npcAction, null) == false)
            {
                npcAction.NpcType      = npcType;
                npcAction.StationIndex = m_stationIndex;
                m_stationModule.AddNpcAction(m_stationIndex, npcAction);
            }
            ((NpcExitStationDownAction_New)npcAction).StartAction(point);
            break;
        }

        default:
            break;
        }
    }
Esempio n. 26
0
 public Point(int x, int y, PointStatus pointStatus)
 {
     this.x           = x;
     this.y           = y;
     this.PointStatus = pointStatus;
 }
Esempio n. 27
0
 //Constructor that takes in x and y coordinates and sets status to Empty by default
 public Point(int x, int y)
 {
     this.X      = x; this.Y = y;
     this.Status = PointStatus.Empty;
 }
Esempio n. 28
0
        /// <summary>
        /// Will set the provided character scratchpad's base attributes as the target values to remap.
        /// </summary>
        /// <param name="newScratchpad">The scratchpad with the target base values to assign to this point</param>
        /// <param name="oldScratchpad">The scratchpad before we remapped</param>
        internal void SetBaseAttributes(CharacterScratchpad newScratchpad, CharacterScratchpad oldScratchpad)
        {
            // Update the status
            this.m_status = PointStatus.UpToDate;

            // Initialize the string
            StringBuilder builder = new StringBuilder();

            // Scroll through attributes
            for (int i = 0; i < 5; i++)
            {
                // Compute the new base attribute
                EveAttribute attrib = (EveAttribute)i;
                m_attributes[i] = newScratchpad[attrib].Base;

                // Update description
                builder.AppendLine().Append(GetStringForAttribute(attrib, oldScratchpad, newScratchpad));
            }

            // Return the final string
            this.m_description = builder.ToString();
        }