Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections.Generic;
- using System.Threading;
- public class Blok
- {
- public int id;
- public Blok(int t)
- {
- id = t;
- }
- }
- public class GenerowanieTerenu : MonoBehaviour
- {
- public float skalaSzumu, skalaSzumu2, skalaSzumu3;
- public int maksymalnaWysokosc, maksymalnaWysokosc2, maksymalnaWysokosc3, seed, obnizenieTerenu;
- bool wygenerowano = false;
- Vector3 pozycja;
- Mesh mesh;
- Thread generowanie;
- List<Vector3> wierzcholki = new List<Vector3> ();
- List<int> trojkaty = new List<int> ();
- Blok [,,] blok = new Blok[33, 33, 33];
- void Start ()
- {
- seed = (int) Network.time - (int) Time.realtimeSinceStartup;
- pozycja = transform.position;
- generowanie = new Thread (Generuj);
- generowanie.Start ();
- }
- void Generuj ()
- {
- for (int x = 0; x < 33; x++)
- for (int z = 0; z < 33; z++)
- for
- (
- int y = Mathf.RoundToInt
- (
- Mathf.PerlinNoise ((x + seed + pozycja.x) / skalaSzumu, (z + seed + pozycja.z) / skalaSzumu) * maksymalnaWysokosc +
- Mathf.PerlinNoise ((x + seed + pozycja.x) / skalaSzumu2, (z + seed + pozycja.z) / skalaSzumu2) * maksymalnaWysokosc2 +
- Mathf.PerlinNoise ((x + seed + pozycja.x) / skalaSzumu3, (z + seed + pozycja.z) / skalaSzumu3) * maksymalnaWysokosc3 -
- (int) pozycja.y -
- obnizenieTerenu
- );
- y >= 0;
- y--
- )
- {
- if (y >= 33)
- y = 32;
- blok [x, y, z] = new Blok(1);
- }
- Wczytaj ();
- }
- void Wczytaj()
- {
- if (wygenerowano)
- wygenerowano = false;
- for (int x = 0; x < 32; x++)
- {
- for (int y = 0; y < 32; y++)
- {
- for (int z = 0; z < 32; z++)
- {
- int idKsztaltu = 0;
- if (blok [x, y, z + 1] != null)
- idKsztaltu += 1;
- if (blok [x + 1, y, z + 1] != null)
- idKsztaltu += 2;
- if (blok [x + 1, y, z] != null)
- idKsztaltu += 4;
- if (blok [x, y, z] != null)
- idKsztaltu += 8;
- if (blok [x, y + 1, z + 1] != null)
- idKsztaltu += 16;
- if (blok [x + 1, y + 1, z + 1] != null)
- idKsztaltu += 32;
- if (blok [x + 1, y + 1, z] != null)
- idKsztaltu += 64;
- if (blok [x, y + 1, z] != null)
- idKsztaltu += 128;
- //Debug.Log (x + " " + y + " " + z + " : " + idKsztaltu);
- //List<int> numeryWierzcholkow = new List<int> ();
- //Debug.Log ("Usuwanie: " + x + " " + y + " " + z);
- generowanie = new Thread (Wczytaj);
- generowanie.Start ();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement