Exemplo n.º 1
0
        private static void MovePointerForward(ref QueuePosition ptr)
        {
            switch (ptr)
            {
            case QueuePosition.Q1:
                ptr = QueuePosition.Q2;
                break;

            case QueuePosition.Q2:
                ptr = QueuePosition.Q3;
                break;

            case QueuePosition.Q3:
                ptr = QueuePosition.Q4;
                break;

            case QueuePosition.Q4:
                ptr = QueuePosition.Q5;
                break;

            case QueuePosition.Q5:
                ptr = QueuePosition.Q1;
                break;
            }
        }
Exemplo n.º 2
0
        private static Video GetVideoFromPointer(QueuePosition ptr, bool includePriority = false)
        {
            if (includePriority)
            {
                if (PriorityQueue.Count > 0)
                {
                    return(PriorityQueue.First());
                }
            }

            switch (ptr)
            {
            case QueuePosition.Q1:
                return(VidQueue[0]);

            case QueuePosition.Q2:
                return(VidQueue[1]);

            case QueuePosition.Q3:
                return(VidQueue[2]);

            case QueuePosition.Q4:
                return(VidQueue[3]);

            case QueuePosition.Q5:
                return(VidQueue[4]);
            }

            return(null);
        }
Exemplo n.º 3
0
        private static void MovePointerToNextVideo(ref QueuePosition ptr)
        {
            int   count    = 11;
            Video vidAtPos = GetVideoFromPointer(ptr);

            while (vidAtPos == null && count > 0)
            {
                MovePointerForward(ref ptr);
                vidAtPos = GetVideoFromPointer(ptr);
                count--;
            }
        }
Exemplo n.º 4
0
    private void Awake()
    {
        QueuePositions = GetComponentsInChildren <QueuePosition>().ToList();
        QueuePositions.Sort((p1, p2) => string.Compare(p1.name, p2.name, StringComparison.Ordinal));

        Entrypoint = QueuePositions.First();
        Endpoint   = QueuePositions.Last();

        if (QueuePositions.Count < 1)
        {
            Debug.LogError("Invalid queue size");
        }
        else
        {
            BuildLink();
        }
    }
Exemplo n.º 5
0
        public static Boolean ClearQueue()
        {
            //Reset the pointers
            pointer      = QueuePosition.Q1;
            queuePointer = QueuePosition.Q1;

            //Check if the queue is already empty
            if (IsEmpty())
            {
                return(false);
            }

            //Clear the queue
            VidQueue = new Video[5];

            return(true);
        }
Exemplo n.º 6
0
        public static void AddToQueue(Video video, QueuePosition position = QueuePosition.Nextfree)
        {
            //Check if the queue is empty -> If this is the first video, the pointer must be set appropriately
            bool wasEmpty = IsEmpty();

            switch (position)
            {
            case QueuePosition.Nextfree:
                int count = 5;
                pointer = queuePointer;
                Video vidAtCurrentPosition = GetVideoFromPointer(pointer);

                while (vidAtCurrentPosition != null && count >= 0)
                {
                    MovePointerForward(ref pointer);
                    vidAtCurrentPosition = GetVideoFromPointer(pointer);
                    count--;
                }

                if (vidAtCurrentPosition == null)
                {
                    InsertOnPointer(video);
                }
                break;

            case QueuePosition.Priority:
                PriorityQueue.Add(video);
                break;

            default:
                MovePointer(position);
                InsertOnPointer(video);
                break;
            }

            if (wasEmpty)
            {
                //Move the pointer to the next video
                MovePointerToNextVideo(ref queuePointer);
            }
        }
        public void AddThumbnailAssetItems(IEnumerable <AssetItem> assetItems, QueuePosition position)
        {
            if (!thumbnailThreadShouldTerminate)
            {
                assetBuilderService.WaitForShaders();

                lock (hashLock)
                {
                    foreach (var asset in assetItems)
                    {
                        if (thumbnailsInProgressAndContinuation.ContainsKey(asset.Id))
                        {
                            // Thumbnail is already being generated, set this one as continuation
                            thumbnailsInProgressAndContinuation[asset.Id] = new ThumbnailContinuation(asset, position);
                        }
                        else if (position == QueuePosition.First)
                        {
                            PriorityQueueNode <AssetBuildUnit> node;
                            if (thumbnailQueueHash.TryGetValue(asset, out node))
                            {
                                assetBuilderService.RemoveBuildUnit(node);
                                thumbnailQueueHash.Remove(asset);
                            }

                            node = assetBuilderService.PushBuildUnit(new ThumbnailAssetBuildUnit(asset, currentGameSettings, this, firstPriority--));
                            thumbnailQueueHash.Add(asset, node);
                        }
                        else
                        {
                            if (!thumbnailQueueHash.ContainsKey(asset))
                            {
                                var node = assetBuilderService.PushBuildUnit(new ThumbnailAssetBuildUnit(asset, currentGameSettings, this, lastPriority++));
                                thumbnailQueueHash.Add(asset, node);
                            }
                        }
                    }
                }
            }
        }
 public ThumbnailContinuation(AssetItem updatedAssetToRecompile, QueuePosition position)
 {
     UpdatedAssetToRecompile = updatedAssetToRecompile;
     Position = position;
 }
Exemplo n.º 9
0
 public static void RemoveFromQueue(QueuePosition position)
 {
     MovePointer(position);
     RemoveOnPointer();
 }
Exemplo n.º 10
0
 private static void MovePointer(QueuePosition position)
 {
     pointer = position;
 }