Exemplo n.º 1
0
        public Model(CitySettings settings)
        {
            this.nPatches = settings.patchNum != -1 ? settings.patchNum : 15;

            plazaNeeded   = settings.plaza;
            citadelNeeded = true;
            wallsNeeded   = settings.wall;

            var seed = settings.seed;

            do
            {
                try
                {
                    Random.InitState(++seed);
                    Debug.Log(seed);

                    build();
                    instance = this;
                }
                catch (Exception e)
                {
                    Debug.Log(
                        e.StackTrace
                        );

                    instance = null;
                }
                finally
                {
                    Random.State oldstate = Random.state;
                    Random.state = oldstate;
                }
            }while (instance == null);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Found yourself a brand spankin' new city! Make sure to give it some settings
        /// so it knows how to build itself.
        /// </summary>
        /// <param name="position"></param>
        /// <param name="settings"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public static City CreateCity(Vector3 position, CitySettings settings, string name = "City")
        {
            City temp = new GameObject(name).AddComponent <City>();

            temp.Init(position, settings);
            return(temp);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Initialize this viewModel
        /// </summary>
        public void Initialize(DrawService drawService)
        {
            //initialize draw service
            _drawService = drawService;
            //_drawService.OnClick += OnClick;

            //create empty voronoi Diagram
            _points         = new List <Point>();
            _voronoiDiagram = new VoronoiDiagram();
            _cityData       = new CityData();

            _citySettings = new CitySettings();

            //seed for random generation
            Seed = DateTime.Now.GetHashCode();

            //store default settings
            foreach (var districtType in _districtTypes)
            {
                DistrictSettings.Add(new DistrictSettings(districtType));
                break;
            }

            RaisePropertyChanged("DistrictSettings");

            //debug for math test and drawing
            MathTesting();
        }
Exemplo n.º 4
0
 public void Init(Vector3 position, CitySettings settings)
 {
     transform.position = position;
     this.settings      = settings;
     metricConstraint   = MetricFactory.Process(this.settings.metric, settings);
     origin             = CigenFactory.CreateOrMergeIntersection(RandomLocalPosition(), this);
 }
Exemplo n.º 5
0
        /// <summary>
        /// set required data for generating the terrain
        /// </summary>
        public void InitializeSettings(TerrainSettings terrainSettings, GenerationSettings voronoiSettings, GameObject parent, CitySettings citySettings)
        {
            //store settings
            _terrainSettings  = terrainSettings;
            _voronoiSettings  = voronoiSettings;
            _citySettings     = citySettings;
            _parentGameObject = parent;

            //initialize noise
            //if no seed is specified generate a random one
            if (!terrainSettings.UseSeed)
            {
                _terrainSettings.GroundSeed   = Random.Range(int.MinValue, int.MaxValue);
                _terrainSettings.MountainSeed = Random.Range(int.MinValue, int.MaxValue);
                _terrainSettings.TreeSeed     = Random.Range(int.MinValue, int.MaxValue);
                _terrainSettings.DetailSeed   = Random.Range(int.MinValue, int.MaxValue);
            }

            //create noise
            _groundNoise = new PerlinNoise(_terrainSettings.GroundSeed);
            _treeNoise   = new PerlinNoise(_terrainSettings.TreeSeed);
            _detailNoise = new PerlinNoise(_terrainSettings.DetailSeed);

            //calculate total size of 1 terrain tile based on the city bounds
            _terrainSize = (int)(_voronoiSettings.Width * 2f);

            _grassLayers = 0;
            _meshLayers  = 0;

            //create the prototypes used by the generator
            CreatePrototypes();
        }
        /// <summary>
        /// Initialize base settings
        /// </summary>
        public void Initialize()
        {
            //create a town generator object when it doesn't exist yet
            if (_townGenerator != null)
            {
                return;
            }


            //Access towngenerator
            _townGenerator = TownGenerator.GetInstance();

            //Set default settings
            _generationSettings = new GenerationSettings
            {
                VoronoiAlgorithm = VoronoiAlgorithm.Fortune,
                PointAlgorithm   = PointGenerationAlgorithm.CityLike
            };

            //City settings
            _citySettings           = new CitySettings();
            _citySettings.DebugMode = false;

            //Create a base district type
            CreatePrefabSelection("Grass");

            //Terrain settings editor
            _terrainEditor = new TerrainEditor(new TerrainSettings(), this);

            //Define a style for the foldout
            _foldoutStyle = new GUIStyle(EditorStyles.foldout)
            {
                fontStyle = FontStyle.Bold,
            };

            var c = Color.black;

            _foldoutStyle.onActive.textColor  = c;
            _foldoutStyle.normal.textColor    = c;
            _foldoutStyle.onNormal.textColor  = c;
            _foldoutStyle.hover.textColor     = c;
            _foldoutStyle.onHover.textColor   = c;
            _foldoutStyle.focused.textColor   = c;
            _foldoutStyle.onFocused.textColor = c;
            _foldoutStyle.active.textColor    = c;
            _foldoutStyle.onActive.textColor  = c;
        }
Exemplo n.º 7
0
        /// <summary>
        /// Convert an enum MetricSpace to it's corresponding MetricConstraint.
        /// </summary>
        /// <param name="metric"></param>
        /// <param name="settings"></param>
        /// <returns></returns>
        public static MetricConstraint.MetricConstraint Process(MetricSpace metric, CitySettings settings)
        {
            MetricConstraint.MetricConstraint m = null;

            switch (metric)
            {
            case MetricSpace.EUCLIDEAN:
                m = new EuclideanConstraint(settings);
                break;

            case MetricSpace.MANHATTAN:
                m = new ManhattanConstraint(settings);
                break;

            case MetricSpace.GRID:
                m = new GridConstraint(settings);
                break;
            }
            return(m);
        }
Exemplo n.º 8
0
        /// Generates a voronoi diagram as a basic layout of the town
        public void Generate(GenerationSettings generationSettings, CitySettings citySettings,
                             TerrainSettings terrainSettings)
        {
            //clean up previous generation and build
            Clear();

            //save settings
            GenerationSettings = generationSettings;
            CitySettings       = citySettings;

            //create a parent object at 0,0,0 if none is set
            if (Parent == null)
            {
                Parent = new GameObject("Town");
                Parent.transform.position = Vector3.zero;
            }

            //Generate the city
            GenerateCity();

            //set the terrain settings and build the terrain
            TerrainTileGenerator.InitializeSettings(terrainSettings, GenerationSettings, Parent, CitySettings);
            TerrainTileGenerator.BuildTerrain();

            _bCanBuild = true;

            if (!_bCanBuild)
            {
                Debug.LogWarning("CityGenerator: Unable to build city. \nPlease generate data first!");
                return;
            }

            //Build the town
            _townBuilder.Initialize(TerrainTileGenerator.CityTerrain, _cityData, TerrainTileGenerator.Settings, Parent,
                                    PrefabsPerZone);
            _townBuilder.Build();
        }
Exemplo n.º 9
0
 public MetricConstraint(CitySettings settings)
 {
     this.settings = settings;
 }
Exemplo n.º 10
0
 public GridConstraint(CitySettings settings) : base(settings)
 {
 }
Exemplo n.º 11
0
 public ManhattanConstraint(CitySettings settings) : base(settings)
 {
 }
Exemplo n.º 12
0
 public EuclideanConstraint(CitySettings settings) : base(settings)
 {
 }
Exemplo n.º 13
0
 private void OnEnable()
 {
     _settings = GeneratorAssets.Get().CitySettings;
 }