public static void SetGravity(float gravityForce, List <Vector3> targets) { #if UNITY_EDITOR if (pilotObjects.Count > targets.Count) { for (int i = targets.Count; i < pilotObjects.Count; i++) { Destroy(pilotObjects[i]); } pilotObjects = pilotObjects.GetRange(0, targets.Count); } #endif // UNITY_EDITOR Gravity.ForceVector[] forceVectors = new Gravity.ForceVector[targets.Count]; for (int j = 0; j < targets.Count; j++) { forceVectors[j] = new Gravity.ForceVector(gravityForce, targets[j]); #if UNITY_EDITOR if (j > pilotObjects.Count - 1) { pilotObjects.Add(GameObject.CreatePrimitive(PrimitiveType.Sphere)); Destroy(pilotObjects[j].GetComponent <SphereCollider>()); } pilotObjects[j].transform.position = targets[j]; #endif // UNITY_EDITOR } for (int k = 0; k < Space.planetesimals.Count; k++) { Space.planetesimals[k].SetGravityForce(forceVectors); } }
// Takes an array of gravity forces and sets it each bar. public static void SetGravityPerBar(float[] gravityForces, List <Vector3> targets, int perBar, int initialBar) { Gravity.ForceVector[] forceVectors = new Gravity.ForceVector[targets.Count]; for (int i = 0; i < gravityForces.Length; i++) { if (((float)(Sequencer.CurrentBar - initialBar) / perBar) % (float)gravityForces.Length == i) { SetGravity(gravityForces[i], targets); } } }