Example #1
0
        public void CheckIfBufferIsFull()
        {
            if (m_status == MyDecalForVoxelsState.FADING_OUT)
            {
                if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_fadingOutStartTime) > MyDecalsConstants.DECALS_FADE_OUT_INTERVAL_MILISECONDS)
                {
                    //  If fading-out phase finished, we change state and remove faded-out buffers
                    for (int i = 0; i < m_fadingOutBuffersCount; i++)
                    {
                        MyDecalsForVoxelsTriangleBuffer releasedBuffer = m_usedTriangleBuffers.Dequeue();
                        releasedBuffer.Clear();
                        m_freeTriangleBuffers.Push(releasedBuffer);
                        m_triangleBuffersByKey.Remove(new MyDecalsForVoxelsDictionaryKey(releasedBuffer.VoxelMap.VoxelMapId, ref releasedBuffer.RenderCellCoord, releasedBuffer.DecalTexture));
                    }

                    m_status = MyDecalForVoxelsState.READY;
                }
            }
            else
            {
                if (m_triangleBuffersByKey.Count >= m_fadingOutStartLimit)
                {
                    int i = 0;
                    foreach (MyDecalsForVoxelsTriangleBuffer buffer in m_usedTriangleBuffers)
                    {
                        if (i < m_fadingOutBuffersCount)
                        {
                            buffer.FadeOutAll();
                        }
                        i++;
                    }

                    m_status             = MyDecalForVoxelsState.FADING_OUT;
                    m_fadingOutStartTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;
                }
            }
        }