コード例 #1
0
            public int EmitNodsIndex;            // where in m_nodEmits to start looking

            public DynamicOrder OrderAgainst(object other)
            {
                var ot     = (ItemInfo)other;
                var aOrder = Item.ScheduleAgainst(ot.Item);
                var bOrder = ot.Item.ScheduleAgainst(Item);

                aOrder = ScheduleOrderUtil.ResolveOrder(aOrder, bOrder, out var conflict);
                if (conflict)
                {
                    CoreException.Throw("Bad dynamic order");
                }

                if (aOrder == ScheduleOrder.RunBefore)
                {
                    return(DynamicOrder.RequireABeforeB);
                }
                if (aOrder == ScheduleOrder.RunAfter)
                {
                    return(DynamicOrder.RequireBBeforeA);
                }

                // ok, soft order by hint
                var diff = (int)Item.Hint - (int)ot.Item.Hint;

                if (diff > 0)
                {
                    return(DynamicOrder.PreferBBeforeA);
                }
                if (diff < 0)
                {
                    return(DynamicOrder.PreferABeforeB);
                }
                return(DynamicOrder.AnyOrder);
            }