public void MarkAsUpdated() { if (m_UpdateMark != UpdateMark.Changed) { m_UpdateMark = UpdateMark.EndUpdate; } }
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); }
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; } } } }
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); } }
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; } } } }
public void SetAsVisible(int x, int y) { // m_MaskCache[x, y] = 1; m_MaskCache[y * m_Width + x] = 1; m_UpdateMark = UpdateMark.Changed; }
public void SetAsVisible(int x, int y) { m_MaskCache[x, y] = 1; m_UpdateMark = UpdateMark.Changed; }
private async void TSB_UpdateMark_Click(object sender, EventArgs e) { await UpdateMark?.Invoke(); }
private void SetVisible(int x, int y) { m_MaskCache[y * texWidth + x] = 1; m_UpdateMark = UpdateMark.Changed; }