示例#1
0
 public void MarkAsUpdated()
 {
     if (m_UpdateMark != UpdateMark.Changed)
     {
         m_UpdateMark = UpdateMark.EndUpdate;
     }
 }
示例#2
0
 public bool RefreshTexture()
 {
     if (m_UpdateMark == UpdateMark.None)
     {
         return(false);
     }
     if (m_UpdateMark == UpdateMark.EndUpdate)
     {
         return(true);
     }
     //bool isNew = false;
     if (m_MaskTexture == null)
     {
         m_MaskTexture = GenerateTexture();
         //isNew = true;
     }
     //for (int i = 0; i < m_MaskTexture.width; i++)
     //{
     //    for (int j = 0; j < m_MaskTexture.height; j++)
     //    {
     //        bool isVisible = m_MaskCache[i, j] == 1;
     //        Color origin = isNew ? Color.black : m_MaskTexture.GetPixel(i, j);
     //        origin.r = Mathf.Clamp01(origin.r + origin.g);
     //        origin.b = origin.g;
     //        origin.g = isVisible ? 1 : 0;
     //        m_MaskTexture.SetPixel(i, j, origin);
     //        m_Visible[i, j] = (byte) (isVisible ? 1 : 0);
     //        m_MaskCache[i, j] = 0;
     //    }
     //}
     m_MaskTexture.SetPixels(m_ColorBuffer);
     m_MaskTexture.Apply();
     m_UpdateMark = UpdateMark.None;
     return(true);
 }
示例#3
0
    public void UpdateColorBuffer()
    {
        if (m_UpdateMark != UpdateMark.Changed)
        {
            m_UpdateMark = UpdateMark.EndUpdate;
        }
        else
        {
            for (int i = 0; i < texWidth; i++)
            {
                for (int j = 0; j < texHeight; j++)
                {
                    bool isVisible = m_MaskCache[j * texWidth + i] == 1;

                    // Update last and current frame's color buffer channel
                    Color origin = m_ColorBuffer[j * texWidth + i];
                    origin.r = Mathf.Clamp01(origin.r + origin.g);
                    origin.b = origin.g;
                    origin.g = isVisible ? 1 : 0;
                    origin.a = 1.0f;

                    m_ColorBuffer[j * texWidth + i] = origin;
                    m_MaskCache[j * texWidth + i]   = 0;
                }
            }
        }
    }
示例#4
0
    private bool UpdateMaskTexture()
    {
        lock (m_Lock)
        {
            if (m_UpdateMark == UpdateMark.None)
            {
                return(false);
            }
            if (m_UpdateMark == UpdateMark.EndUpdate)
            {
                return(true);
            }

            // Update MaskTexture from ColorBuffer
            m_MaskTexture.SetPixels(m_ColorBuffer);
            m_MaskTexture.Apply();

            // Mark as clean
            m_UpdateMark = UpdateMark.None;
            return(true);
        }
    }
示例#5
0
 public void MarkAsUpdated()
 {
     if (m_UpdateMark != UpdateMark.Changed)
     {
         m_UpdateMark = UpdateMark.EndUpdate;
     }
     else
     {
         for (int i = 0; i < m_Width; i++)
         {
             for (int j = 0; j < m_Height; j++)
             {
                 bool  isVisible = m_MaskCache[j * m_Width + i] == 1;
                 Color origin    = m_ColorBuffer[j * m_Width + i];
                 origin.r = Mathf.Clamp01(origin.r + origin.g);
                 origin.b = origin.g;
                 origin.g = isVisible ? 1 : 0;
                 m_ColorBuffer[j * m_Width + i] = origin;
                 //m_Visible[i, j] = (byte)(isVisible ? 1 : 0);
                 m_MaskCache[j * m_Width + i] = 0;
             }
         }
     }
 }
示例#6
0
 public void SetAsVisible(int x, int y)
 {
     // m_MaskCache[x, y] = 1;
     m_MaskCache[y * m_Width + x] = 1;
     m_UpdateMark = UpdateMark.Changed;
 }
示例#7
0
 public void SetAsVisible(int x, int y)
 {
     m_MaskCache[x, y] = 1;
     m_UpdateMark      = UpdateMark.Changed;
 }
示例#8
0
 private async void TSB_UpdateMark_Click(object sender, EventArgs e)
 {
     await UpdateMark?.Invoke();
 }
示例#9
0
    private void SetVisible(int x, int y)
    {
        m_MaskCache[y * texWidth + x] = 1;

        m_UpdateMark = UpdateMark.Changed;
    }