Example #1
0
        //  Checks if buffer isn't full at 80% (or something like that). If is, we start fadeing-out first 20% triangles (or something like that). But always all triangles of a decal.
        void CheckIfBufferIsFull()
        {
            if (m_status == MyDecalsBufferState.FADING_OUT_ALL)
            {
                return;
            }
            else if (m_status == MyDecalsBufferState.FADING_OUT_ONLY_BEGINNING)
            {
                if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_fadingOutStartTime) > MyDecalsConstants.DECALS_FADE_OUT_INTERVAL_MILISECONDS)
                {
                    //  If fading-out phase finished, we change state and remove faded-out triangles
                    for (int i = 0; i < m_fadingOutRealTriangleCount; i++)
                    {
                        MyDecalTriangle fadedoutTriangle = m_trianglesQueue.Dequeue();
                        fadedoutTriangle.Close();
                        m_freeTriangles.Push(fadedoutTriangle);
                    }

                    m_status = MyDecalsBufferState.READY;
                }
            }
            else
            {
                if (m_trianglesQueue.Count >= m_fadingOutStartLimit)
                {
                    //  If we get here, buffer is close to be full, so we start fade-out phase
                    m_fadingOutRealTriangleCount = GetFadingOutRealTriangleCount();
                    m_status             = MyDecalsBufferState.FADING_OUT_ONLY_BEGINNING;
                    m_fadingOutStartTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;
                }
            }
        }
Example #2
0
        public void FadeOutAll()
        {
            if (m_status != MyDecalsBufferState.FADING_OUT_ONLY_BEGINNING)
            {
                m_fadingOutStartTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;
            }

            m_status = MyDecalsBufferState.FADING_OUT_ALL;
        }
        public void FadeOutAll()
        {
            if (m_status != MyDecalsBufferState.FADING_OUT_ONLY_BEGINNING)
            {
                m_fadingOutStartTime = (int)MyRender.RenderTimeInMS;
            }

            m_status = MyDecalsBufferState.FADING_OUT_ALL;
        }
        //  Because this class is reused in buffers, it isn't really initialized by constructor. We make real initialization here.
        public void Start(MyEntity entity, MyDecalTexturesEnum decalTexture)
        {
            Entity = entity;
            DecalTexture = decalTexture;
            m_status = MyDecalsBufferState.READY;
            m_fadingOutStartTime = 0;

            if (MyDecals.IsLargeTexture(decalTexture) == true)
            {
                //m_capacityAfterStart = MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER_LARGE;
                m_fadingOutStartLimit = (int)(m_capacity * MyDecalsConstants.TEXTURE_LARGE_FADING_OUT_START_LIMIT_PERCENT);
                m_fadingOutMinimalTriangleCount = (int)(m_capacity * MyDecalsConstants.TEXTURE_LARGE_FADING_OUT_MINIMAL_TRIANGLE_COUNT_PERCENT);
                MaxNeighbourTriangles = MyDecalsConstants.TEXTURE_LARGE_MAX_NEIGHBOUR_TRIANGLES;
            }
            else
            {
                //m_capacityAfterStart = MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER_SMALL;
                m_fadingOutStartLimit = (int)(m_capacity * MyDecalsConstants.TEXTURE_SMALL_FADING_OUT_START_LIMIT_PERCENT);
                m_fadingOutMinimalTriangleCount = (int)(m_capacity * MyDecalsConstants.TEXTURE_SMALL_FADING_OUT_MINIMAL_TRIANGLE_COUNT_PERCENT);
                MaxNeighbourTriangles = MyDecalsConstants.TEXTURE_SMALL_MAX_NEIGHBOUR_TRIANGLES;
            }
        }
Example #5
0
        //  Because this class is reused in buffers, it isn't really initialized by constructor. We make real initialization here.
        public void Start(MyEntity entity, MyDecalTexturesEnum decalTexture)
        {
            Entity               = entity;
            DecalTexture         = decalTexture;
            m_status             = MyDecalsBufferState.READY;
            m_fadingOutStartTime = 0;

            if (MyDecals.IsLargeTexture(decalTexture) == true)
            {
                //m_capacityAfterStart = MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER_LARGE;
                m_fadingOutStartLimit           = (int)(m_capacity * MyDecalsConstants.TEXTURE_LARGE_FADING_OUT_START_LIMIT_PERCENT);
                m_fadingOutMinimalTriangleCount = (int)(m_capacity * MyDecalsConstants.TEXTURE_LARGE_FADING_OUT_MINIMAL_TRIANGLE_COUNT_PERCENT);
                MaxNeighbourTriangles           = MyDecalsConstants.TEXTURE_LARGE_MAX_NEIGHBOUR_TRIANGLES;
            }
            else
            {
                //m_capacityAfterStart = MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER_SMALL;
                m_fadingOutStartLimit           = (int)(m_capacity * MyDecalsConstants.TEXTURE_SMALL_FADING_OUT_START_LIMIT_PERCENT);
                m_fadingOutMinimalTriangleCount = (int)(m_capacity * MyDecalsConstants.TEXTURE_SMALL_FADING_OUT_MINIMAL_TRIANGLE_COUNT_PERCENT);
                MaxNeighbourTriangles           = MyDecalsConstants.TEXTURE_SMALL_MAX_NEIGHBOUR_TRIANGLES;
            }
        }
        //  Because this class is reused in buffers, it isn't really initialized by constructor. We make real initialization here.
        public void Start(MyRenderVoxelCell voxelMap, MyDecalTexturesEnum decalTexture)
        {
            VoxelCell            = voxelMap;
            DecalTexture         = decalTexture;
            m_status             = MyDecalsBufferState.READY;
            m_fadingOutStartTime = 0;

            /*
             * if (MyDecals.IsLargeTexture(decalTexture) == true)
             * {
             *  m_capacityAfterStart = MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER_LARGE;
             *  m_fadingOutStartLimit = (int)(m_capacityAfterStart * MyDecalsConstants.TEXTURE_LARGE_FADING_OUT_START_LIMIT_PERCENT);
             *  m_fadingOutMinimalTriangleCount = (int)(m_capacityAfterStart * MyDecalsConstants.TEXTURE_LARGE_FADING_OUT_MINIMAL_TRIANGLE_COUNT_PERCENT);
             *  MaxNeighbourTriangles = MyDecalsConstants.TEXTURE_LARGE_MAX_NEIGHBOUR_TRIANGLES;
             * }
             * else*/
            {
                m_capacityAfterStart            = MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER_SMALL;
                m_fadingOutStartLimit           = (int)(m_capacityAfterStart * MyDecalsConstants.TEXTURE_SMALL_FADING_OUT_START_LIMIT_PERCENT);
                m_fadingOutMinimalTriangleCount = (int)(m_capacityAfterStart * MyDecalsConstants.TEXTURE_SMALL_FADING_OUT_MINIMAL_TRIANGLE_COUNT_PERCENT);
                MaxNeighbourTriangles           = MyDecalsConstants.TEXTURE_SMALL_MAX_NEIGHBOUR_TRIANGLES;
            }
        }
Example #7
0
        //  Because this class is reused in buffers, it isn't really initialized by constructor. We make real initialization here.
        public void Start(MyVoxelMap voxelMap, ref MyMwcVector3Int renderCellCoord, MyDecalTexturesEnum decalTexture, ref BoundingBox renderCellBoundingBox)
        {
            VoxelMap              = voxelMap;
            RenderCellCoord       = renderCellCoord;
            DecalTexture          = decalTexture;
            m_status              = MyDecalsBufferState.READY;
            m_fadingOutStartTime  = 0;
            RenderCellBoundingBox = renderCellBoundingBox;

            if (MyDecals.IsLargeTexture(decalTexture) == true)
            {
                m_capacityAfterStart            = MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER_LARGE;
                m_fadingOutStartLimit           = (int)(m_capacityAfterStart * MyDecalsConstants.TEXTURE_LARGE_FADING_OUT_START_LIMIT_PERCENT);
                m_fadingOutMinimalTriangleCount = (int)(m_capacityAfterStart * MyDecalsConstants.TEXTURE_LARGE_FADING_OUT_MINIMAL_TRIANGLE_COUNT_PERCENT);
                MaxNeighbourTriangles           = MyDecalsConstants.TEXTURE_LARGE_MAX_NEIGHBOUR_TRIANGLES;
            }
            else
            {
                m_capacityAfterStart            = MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER_SMALL;
                m_fadingOutStartLimit           = (int)(m_capacityAfterStart * MyDecalsConstants.TEXTURE_SMALL_FADING_OUT_START_LIMIT_PERCENT);
                m_fadingOutMinimalTriangleCount = (int)(m_capacityAfterStart * MyDecalsConstants.TEXTURE_SMALL_FADING_OUT_MINIMAL_TRIANGLE_COUNT_PERCENT);
                MaxNeighbourTriangles           = MyDecalsConstants.TEXTURE_SMALL_MAX_NEIGHBOUR_TRIANGLES;
            }
        }
 //  Because this class is reused in buffers, it isn't really initialized by constructor. We make real initialization here.
 public void Start(MyVoxelMap voxelMap, ref MyMwcVector3Int renderCellCoord, MyDecalTexturesEnum decalTexture, ref BoundingBox renderCellBoundingBox)
 {
     VoxelMap = voxelMap;
     RenderCellCoord = renderCellCoord;
     DecalTexture = decalTexture;
     m_status = MyDecalsBufferState.READY;
     m_fadingOutStartTime = 0;
     RenderCellBoundingBox = renderCellBoundingBox;
     
     if (MyDecals.IsLargeTexture(decalTexture) == true)
     {
         m_capacityAfterStart = MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER_LARGE;
         m_fadingOutStartLimit = (int)(m_capacityAfterStart * MyDecalsConstants.TEXTURE_LARGE_FADING_OUT_START_LIMIT_PERCENT);
         m_fadingOutMinimalTriangleCount = (int)(m_capacityAfterStart * MyDecalsConstants.TEXTURE_LARGE_FADING_OUT_MINIMAL_TRIANGLE_COUNT_PERCENT);
         MaxNeighbourTriangles = MyDecalsConstants.TEXTURE_LARGE_MAX_NEIGHBOUR_TRIANGLES;
     }
     else
     {
         m_capacityAfterStart = MyDecalsConstants.MAX_DECAL_TRIANGLES_IN_BUFFER_SMALL;
         m_fadingOutStartLimit = (int)(m_capacityAfterStart * MyDecalsConstants.TEXTURE_SMALL_FADING_OUT_START_LIMIT_PERCENT);
         m_fadingOutMinimalTriangleCount = (int)(m_capacityAfterStart * MyDecalsConstants.TEXTURE_SMALL_FADING_OUT_MINIMAL_TRIANGLE_COUNT_PERCENT);
         MaxNeighbourTriangles = MyDecalsConstants.TEXTURE_SMALL_MAX_NEIGHBOUR_TRIANGLES;
     }
 }
        //  Checks if buffer isn't full at 80% (or something like that). If is, we start fadeing-out first 20% triangles (or something like that). But always all triangles of a decal.
        void CheckIfBufferIsFull()
        {
            if (m_status == MyDecalsBufferState.FADING_OUT_ALL)
            {
                return;
            } 
            else if (m_status == MyDecalsBufferState.FADING_OUT_ONLY_BEGINNING)
            {
                if ((MyMinerGame.TotalGamePlayTimeInMilliseconds - m_fadingOutStartTime) > MyDecalsConstants.DECALS_FADE_OUT_INTERVAL_MILISECONDS)
                {
                    //  If fading-out phase finished, we change state and remove faded-out triangles
                    for (int i = 0; i < m_fadingOutRealTriangleCount; i++)
                    {
                        MyDecalTriangle triangle = m_trianglesQueue.Dequeue();
                        triangle.Close();
                        m_freeTriangles.Push(triangle);
                    }

                    m_status = MyDecalsBufferState.READY;
                }
            }
            else
            {
                if (m_trianglesQueue.Count >= m_fadingOutStartLimit) 
                {
                    //  If we get here, buffer is close to be full, so we start fade-out phase
                    m_fadingOutRealTriangleCount = GetFadingOutRealTriangleCount();
                    m_status = MyDecalsBufferState.FADING_OUT_ONLY_BEGINNING;
                    m_fadingOutStartTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;
                }
            }
        }
        public void FadeOutAll()
        {
            if (m_status != MyDecalsBufferState.FADING_OUT_ONLY_BEGINNING)
            {
                m_fadingOutStartTime = MyMinerGame.TotalGamePlayTimeInMilliseconds;
            }

            m_status = MyDecalsBufferState.FADING_OUT_ALL;
        }
        public void FadeOutAll()
        {
            if (m_status != MyDecalsBufferState.FADING_OUT_ONLY_BEGINNING)
            {
                m_fadingOutStartTime = (int)MyRender.RenderTimeInMS;
            }

            m_status = MyDecalsBufferState.FADING_OUT_ALL;
        }