Exemple #1
0
        void OnEnable()
        {
            meshFilter = GetComponent <MeshFilter>();
            generator  = new RockGenerator();

            generator.foundNearest += OnSettingsOnfoundNearest;
        }
        void Initialize()
        {
            RockGeneratorGUI.fileExported += HandleFileExported;

            generator = new RockGenerator {
                Settings = defaultSettings
            };
            previewObj = new GameObject {
                hideFlags = HideFlags.HideAndDontSave
            };
            previewMeshFilter = previewObj.AddComponent <MeshFilter>();

            var renderer = previewObj.AddComponent <MeshRenderer>();

            renderer.material = Resources.Load <Material>("Rock");

            previewObj.SetActive(false);

            backgroundTexture = new Texture2D(1, 1);
            backgroundTexture.SetPixel(0, 0, new Color(.5f, .5f, .5f));
            backgroundTexture.Apply();
            previewBackground = new GUIStyle {
                normal = { background = backgroundTexture }
            };

            CreateMesh();
        }
        public void Start()
        {
            RockGenerator.Generate(domain, Settings.NUM_ROCKS);
            domain.Clean();

            // Upload the Server's domain
            // We're just using UpdateId 1, as this will be the only update from the server
            lobbySpace.Put("components", "1", JsonBuilder.BuildComponentsJSONString(domain));
        }
        void Start()
        {
            var settings = new RockGenerationSettings {
                GridSettings = new VoronoiGridSettings {
                    Size       = 5,
                    Randomness = .75f
                },
                StockDensity        = 8,
                TargetTriangleCount = 220,
                Distortion          = .5f,
                PatternSize         = 1.35f,
                Transform           = Convert.FromUnityMatrix(UnityEngine.Matrix4x4.TRS(new Vector3(2, 2, 2),
                                                                                        Quaternion.identity,
                                                                                        Vector3.one))
            };

            generator = new RockGenerator {
                Settings = settings
            };
        }
        public static bool OnGUI(RockGenerator generator)
        {
            var groupStyle  = GUI.skin.box;
            var newSettings = new RockGenerationSettings(generator.Settings);

            using (var vs = new VerticalScope(groupStyle))
            {
                newSettings.StockDensity = SettingSlider(nameof(newSettings.StockDensity),
                                                         newSettings.StockDensity, 2, 16, "N1");
                newSettings.TargetTriangleCount = Mathf.RoundToInt(
                    SettingSlider(nameof(newSettings.TargetTriangleCount),
                                  newSettings.TargetTriangleCount, 50, 2000,
                                  "N0",
                                  logScale: true
                                  )
                    );
            }

            using (var vs = new VerticalScope(groupStyle))
            {
                using (var gcs = new GUIChangedScope())
                {
                    var Uniformity = Mathf.Clamp01(1 - newSettings.GridSettings.Randomness);
                    Uniformity = SettingSlider(nameof(Uniformity), Uniformity, 0, 1);

                    if (GUI.changed)
                    {
                        newSettings.GridSettings = new VoronoiGridSettings(newSettings.GridSettings)
                        {
                            Randomness = 1 - Uniformity
                        };
                    }
                }

                newSettings.Distortion = SettingSlider(nameof(newSettings.Distortion),
                                                       newSettings.Distortion, -1, 1);
                newSettings.PatternSize = SettingSlider(nameof(newSettings.PatternSize),
                                                        newSettings.PatternSize, .5f, 2.5f);
            }

            using (var vs = new VerticalScope(groupStyle))
                using (var gcs = new GUIChangedScope())
                {
                    var scale = newSettings.Scale;
                    Label("Shape:");
                    var newX = SettingSlider("X", Mathf.Clamp((float)scale.X, .5f, 2), 0.5f, 2);
                    var newY = SettingSlider("Y", Mathf.Clamp((float)scale.Y, .5f, 2), 0.5f, 2);
                    var newZ = (float)scale.Z;

                    if (GUI.changed)
                    {
                        var m = UnityEngine.Matrix4x4.TRS(DEFAULT_POS,
                                                          rotation,
                                                          new Vector3(newX, newY, newZ));
                        newSettings.Transform = Convert.FromUnityMatrix(m);
                    }
                }

            if (Button("Make Rock"))
            {
                var newGridSettings = new VoronoiGridSettings(newSettings.GridSettings);
                newGridSettings.Randomness += 1e-6f;

                newSettings.Transform = Convert.FromUnityMatrix(
                    UnityEngine.Matrix4x4.TRS(DEFAULT_POS + Random.insideUnitSphere,
                                              rotation = Random.rotation,
                                              Convert.ToVector3(newSettings.Scale))
                    );

                newSettings.GridSettings = newGridSettings;
            }

            var settingsChanged = GUI.changed;

            if (settingsChanged)
            {
                generator.Settings = newSettings;
            }

            if (Button("Save this one"))
            {
                var path = FileSaver.SaveMesh(generator.LatestMesh, "rock");
                OnFileExported(path);
            }

            return(settingsChanged);
        }
Exemple #6
0
 public void Init()
 {
     ItemGen = new ItemGenerator();
     RockGen = new RockGenerator();
     ItemGen.Start();
 }