public void TryPaint(Vector2Int position, TerrainBrushMode mode) { Color pixelColor = texture.GetPixel(position.x, position.y); Color pixelColorNew = pixelColor; switch (mode) { case TerrainBrushMode.ADDFOREST: pixelColorNew.g = 1f; break; case TerrainBrushMode.REMOVEFOREST: pixelColorNew.g = 0f; break; default: break; } // Edit texture if new color is different if (pixelColor != pixelColorNew) { TerrainQuadTree.Instance.PaintSend(position, pixelColorNew, id); } }
public void TryPaint(Vector2Int position, TerrainBrushMode mode) { Quadrant quadrantContainingPosition = null; Vector2Int positionOnQuadrant = new Vector2Int(-1, -1); foreach (Quadrant quadrant in root.GetLeafQuadrants()) //TODO: Optimize by only getting leafquadrants of visible quadrants { positionOnQuadrant = quadrant.PositionOnQuadrant(position); if (positionOnQuadrant != new Vector2Int(-1, -1)) { quadrantContainingPosition = quadrant; break; } } if (quadrantContainingPosition != null && positionOnQuadrant != new Vector2Int(-1, -1)) { quadrantContainingPosition.TryPaint(positionOnQuadrant, mode); } else { Debug.LogError("Couldn't find a quadrant or a local position to paint on - " + positionOnQuadrant); } }
private void StartListening(TerrainBrushMode terrainMode) { StopListening(); gameObject.SetActive(true); buttonB_down = StartCoroutine(WaitForButtonB_Down(terrainMode)); if (terrainMode != TerrainBrushMode.Color) { buttonA_down = StartCoroutine(WaitForButtonA_Down()); // automaticaly extreme change } }
private void ToggleMode() { TerrainBrushMode[] list = (TerrainBrushMode[])Enum.GetValues(typeof(TerrainBrushMode)); int index = Array.IndexOf <TerrainBrushMode>(list, Mode) + 1; if (index == list.Length) { index = 0; } Mode = list[index]; }
private IEnumerator WaitForButtonA_Up() { while (true) { if (OVRInput.GetUp(buttonA)) { StopCoroutine(buttonA_up); mode = TerrainBrushMode.Inactive; terrain.FinishShaping(); buttonA_down = StartCoroutine(WaitForButtonA_Down()); } yield return(new WaitForEndOfFrame()); } }
private IEnumerator WaitForButtonA_Down() { while (true) { if (OVRInput.GetDown(buttonA)) { StopCoroutine(buttonA_down); mode = TerrainBrushMode.ExtremeChange; terrain.StartShaping(); buttonA_up = StartCoroutine(WaitForButtonA_Up()); } yield return(new WaitForEndOfFrame()); } }
private IEnumerator WaitForButtonB_Down(TerrainBrushMode terrainMode) { while (true) { if (OVRInput.GetDown(buttonB)) { StopCoroutine(buttonB_down); mode = terrainMode; terrain.StartShaping(); buttonB_up = StartCoroutine(WaitForButtonB_Up(terrainMode)); } yield return(new WaitForEndOfFrame()); } }
public void SetActive() { mode = TerrainBrushMode.Inactive; gameObject.SetActive(true); StartListening(TerrainBrushMode.Change); }
private void SetColorMode() { StopListening(); mode = TerrainBrushMode.Inactive; buttonB_down = StartCoroutine(WaitForButtonB_Down(TerrainBrushMode.Color)); }
private void SetChangeMode() { StopListening(); mode = TerrainBrushMode.Inactive; StartListening(TerrainBrushMode.Change); }