void RandomizeObjects() { GBody[] bodies = sim.GetGBodyObjects(); foreach (GBody b in bodies) { Vector3 pos = UnityEngine.Random.insideUnitSphere; pos.Scale(genRadii); Vector3 vel = UnityEngine.Random.insideUnitSphere; vel.Scale(genVelocityRange); if (perpendicularVelocities) { vel = new Vector3(pos.z / perpendicularVelocitiesScaling, 0, -pos.x / perpendicularVelocitiesScaling); } float mass = UnityEngine.Random.Range(genMinMass, genMaxMass); b.Position = pos; b.Velocity = vel; b.Mass = mass; } }
// Use this for initialization void Start() { //Get the simulation variable NBodySimulation[] sims = gameObject.GetComponents <NBodySimulation>(); if (sims == null) { Debug.LogWarning("Warning: No NBodySimulation attached to object " + gameObject.name + " which has NBodyDemoMode component; demo will not run."); return; } if (sims.Length != 1) { Debug.LogWarning("Warning: More than one NBodySimulation attached to object " + gameObject.name + "; using first found."); } sim = sims[0]; //Load saved preferences if (loadPlayerPrefs) { LoadPlayerPrefsValues(); } //Generate Body Objects GBody[] bodies = new GBody[numberOfBodies]; for (int i = 0; i < bodies.Length; i++) { GameObject renderObject; if (i == trailsBodyIndex) { renderObject = (GameObject)GameObject.Instantiate(trailsObjectPrefab); trail = (GameObject)GameObject.Instantiate(trailObject); trail.transform.parent = renderObject.transform; trailsBodyObject = renderObject; } else { renderObject = (GameObject)GameObject.Instantiate(bodyObjectPrefab); } renderObject.transform.parent = this.transform; Vector3 pos = UnityEngine.Random.insideUnitSphere; pos.Scale(genRadii); Vector3 vel = UnityEngine.Random.insideUnitSphere; vel.Scale(genVelocityRange); if (perpendicularVelocities) { vel = new Vector3(pos.z / perpendicularVelocitiesScaling, 0, -pos.x / perpendicularVelocitiesScaling); } float mass = UnityEngine.Random.Range(genMinMass, genMaxMass); bodies[i] = new GBody(pos, vel, mass, renderObject, renderScale); if (i == trailsBodyIndex) { trailsBody = bodies[i]; } } sim.SetGBodyObjects(bodies); lookCamera.gameObject.AddComponent <SimpleObjectLogger>(); trailsBodyObject.AddComponent <SimpleObjectLogger>(); //Configure look response parameters startMass = trailsBody.Mass; lookMass = startMass * massScaling; startScale = trailsBodyObject.transform.localScale; lookScale = trailsBodyObject.transform.localScale * sizeScaling; //Configure particle emitter particles = trailsBodyObject.GetComponent <ParticleSystem>(); particles.enableEmission = false; //Populate UI element components progressSlider = accuracySliderObject.GetComponent <Slider>(); progressSlider.maxValue = sim.GetGBodyObjects().Length; itemsRemainingText = itemsRemainingTextObject.GetComponent <Text>(); timerText = timerTextObject.GetComponent <Text>(); bestScoreText = bestScoreTextObject.GetComponent <Text>(); totalTaskTimeText = totalTaskTimeTextObject.GetComponent <Text>(); //Initialize High Score UI Component bestScoreText.text = "\r\nBest Score\r\n" + bestScore.ToString("F3") + "s"; //Initialize System State Parameters isLooking = false; startTime = DateTime.Now; restartTime = DateTime.Now; if (PlayerPrefs.HasKey("showTime")) { bool showTime = PlayerPrefs.GetFloat("showTime") != 0; if (!showTime) { totalTaskTimeTextObject.GetComponent <Text>().enabled = false; } } if (PlayerPrefs.HasKey("taskTime")) { taskTime = PlayerPrefs.GetFloat("taskTime") * 60; } totalTaskTimeText.text = taskTime + "s"; log = gameObject.GetComponent <Logger>(); log.GenerateLoggableObjectsList(); log.BeginLogging(); }