Example #1
0
        private void processRequests(bool processAll = false)
        {
            int num   = 0;
            int count = Requests.Count;

            for (int i = 0; i < count; i++)
            {
                LODRequest lODRequest = Requests[i];
                if (!lODRequest.CanBeSpawned)
                {
                    continue;
                }
                lODRequest.LODGameObject = generator.Spawn();
                if (lODRequest.CanBeSpawned)
                {
                    LODRequest lODRequest2 = identifyLowerWeightedToRevoke(i);
                    if (!(lODRequest2 != null))
                    {
                        break;
                    }
                    revokeRequest(lODRequest2, lODRequest);
                }
                num++;
                if (!processAll && data.MaxProcessesPerUpdate > 0 && num >= data.MaxProcessesPerUpdate)
                {
                    break;
                }
            }
        }
Example #2
0
 public void UnpauseRequest(LODRequest request)
 {
     if (Manager == null)
     {
         throw new ArgumentException("Called RemoveRequest with a null entity", "manager");
     }
     Manager.UnpauseRequest(request);
 }
 public virtual void OnDestroy()
 {
     if (request != null)
     {
         request.RemoveWeightingRule(this);
         request = null;
     }
 }
Example #4
0
 private void onRequestRevoked(LODRequest revokedRequest, LODRequest revokedForRequest)
 {
     revokedRequest.BeingProcessed    = false;
     revokedForRequest.BeingProcessed = false;
     if (revokedForRequest.CanBeSpawned && Requests.IndexOf(revokedForRequest) >= 0)
     {
         revokedForRequest.LODGameObject = generator.Spawn();
     }
 }
Example #5
0
 public void PauseRequest(LODRequest request)
 {
     request.IsPaused = true;
     if (request.CanBeRevoked)
     {
         generator.Unspawn(request.LODGameObject);
     }
     request.LODGameObject = null;
 }
Example #6
0
 public void RemoveRequest(LODRequest request)
 {
     Requests.Remove(request);
     if (request.CanBeRevoked)
     {
         generator.Unspawn(request.LODGameObject);
     }
     pool.Unspawn(request.gameObject);
 }
Example #7
0
        private LODRequest generateRequest(LODRequestData requestData)
        {
            GameObject gameObject = pool.Spawn();
            LODRequest component  = gameObject.GetComponent <LODRequest>();

            component.Data = requestData;
            component.Setup();
            Requests.Add(component);
            return(component);
        }
Example #8
0
        public LODRequest Request(LODRequestData requestData, bool attemptSpawn = true)
        {
            LODRequest lODRequest = generateRequest(requestData);

            if (attemptSpawn)
            {
                spawnSingle(lODRequest);
            }
            return(lODRequest);
        }
Example #9
0
 private void spawnSingle(LODRequest request)
 {
     if (Requests.Count < generator.MaxCount)
     {
         request.CalculateWeighting();
         if (request.CanBeSpawned)
         {
             request.LODGameObject = generator.Spawn();
         }
     }
 }
Example #10
0
        private void revokeRequest(LODRequest requestToRevoke, LODRequest revokingForRequest)
        {
            GameObject lODGameObject = requestToRevoke.LODGameObject;

            requestToRevoke.LODGameObject = null;
            generator.Unspawn(lODGameObject, delegate
            {
                onRequestRevoked(requestToRevoke, revokingForRequest);
            });
            requestToRevoke.BeingProcessed    = true;
            revokingForRequest.BeingProcessed = true;
            releasedMetric.UpdateValue(releasedMetric.Value + 1);
        }
Example #11
0
        private LODRequest identifyLowerWeightedToRevoke(int currentIndex)
        {
            int count = Requests.Count;

            for (int num = count - 1; num > currentIndex; num--)
            {
                LODRequest lODRequest = Requests[num];
                if (lODRequest.CanBeRevoked)
                {
                    return(lODRequest);
                }
            }
            return(null);
        }
Example #12
0
 public void UnpauseRequest(LODRequest request)
 {
     getRequestSystem(request.Data.Type).UnpauseRequest(request);
 }
Example #13
0
 public void RemoveRequest(LODRequest request)
 {
     getRequestSystem(request.Data.Type).RemoveRequest(request);
 }
Example #14
0
 public void UnpauseRequest(LODRequest request)
 {
     request.IsPaused = false;
 }
 public void Awake()
 {
     request = GetComponent <LODRequest>();
     request.AddWeightingRule(this);
 }