Esempio n. 1
0
    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);
        }
    }
Esempio n. 2
0
    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);
        }
    }
Esempio n. 3
0
 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
     }
 }
Esempio n. 4
0
    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];
    }
Esempio n. 5
0
        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());
            }
        }
Esempio n. 6
0
        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());
            }
        }
Esempio n. 7
0
        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());
            }
        }
Esempio n. 8
0
 public void SetActive()
 {
     mode = TerrainBrushMode.Inactive;
     gameObject.SetActive(true);
     StartListening(TerrainBrushMode.Change);
 }
Esempio n. 9
0
 private void SetColorMode()
 {
     StopListening();
     mode         = TerrainBrushMode.Inactive;
     buttonB_down = StartCoroutine(WaitForButtonB_Down(TerrainBrushMode.Color));
 }
Esempio n. 10
0
 private void SetChangeMode()
 {
     StopListening();
     mode = TerrainBrushMode.Inactive;
     StartListening(TerrainBrushMode.Change);
 }