Exemple #1
0
        public void Init()
        {
            m_currentLod    = 0;
            m_transitionLod = -1;
            m_transition    = 0;
            m_transitionStartedAtDistance = 0;
            m_explicitState     = MyInstanceLodState.Solid;
            m_explicitStateData = 0;
            m_updatedAtFrameId  = 0;

            m_cachedResultsPool.AllocateOrCreate(out m_cachedResults);
            MyLodStrategyCachedResultsUtils.InitList(m_cachedResults);
        }
Exemple #2
0
 void UpdateCachedResults(int maxLod, List <int> activePassIds)
 {
     foreach (var passId in activePassIds)
     {
         MyPassLoddingSetting lodSetting = m_loddingSetting[passId];
         int currentLod = m_currentLod;
         currentLod = Math.Max(lodSetting.MinLod, currentLod + lodSetting.LodShift);
         currentLod = Math.Min(maxLod, currentLod);
         int transitionLod = m_transitionLod;
         transitionLod = Math.Max(lodSetting.MinLod, transitionLod + lodSetting.LodShift);
         transitionLod = Math.Min(maxLod, transitionLod);
         if (passId == 0)
         {
             if (m_transition == 0 || m_explicitState != MyInstanceLodState.Solid)
             {
                 MyLodStrategyCachedResultsUtils.UpdateSingleLod(m_cachedResults, passId,
                                                                 currentLod, m_explicitState, m_explicitStateData);
             }
             else
             {
                 MyLodStrategyCachedResultsUtils.UpdateTwoLods(m_cachedResults, passId,
                                                               currentLod, MyInstanceLodState.Transition, 1 - m_transition,
                                                               transitionLod, MyInstanceLodState.Transition, 2 + m_transition); // because of the implementation
             }
         }
         else
         {
             if (m_explicitState == MyInstanceLodState.Solid)
             {
                 MyLodStrategyCachedResultsUtils.UpdateSingleLod(m_cachedResults, passId,
                                                                 currentLod, MyInstanceLodState.Solid, 0);
             }
             else
             {
                 MyLodStrategyCachedResultsUtils.UpdateNoneLod(m_cachedResults, passId);
             }
         }
     }
 }
Exemple #3
0
 public void GetLod(int passId, int i, out int lodNum, out MyInstanceLodState stateId, out float stateData)
 {
     MyLodStrategyCachedResultsUtils.GetLod(m_cachedResults, passId, i, out lodNum, out stateId, out stateData);
 }
Exemple #4
0
 public int GetLodsCount(int passId)
 {
     return(MyLodStrategyCachedResultsUtils.GetLodsCount(m_cachedResults, passId));
 }