Example #1
0
        private void GenerateGravityObjects()
        {
            var gravityObjects = new GravityObjectModel[gravityGameObjects.Length];

            int centerIndex = -1;

            for (int i = 0; i < gravityObjects.Length; i++)
            {
                if (gravityGameObjects[i] == FocusGameObject)
                {
                    centerIndex = i;
                }

                Vector position = new Vector();
                Vector velocity = new Vector();

                GravityGameObjectProperties properties = gravityGameObjects[i].GetComponent <GravityGameObjectProperties>();

                vectorUtilities.MakeFristVectorEqualSecondVector(position, gravityGameObjects[i].transform.position);
                vectorUtilities.MakeFristVectorEqualSecondVector(velocity, properties.StartVelocity);

                gravityObjects[i] = new GravityObjectModel(properties.Mass, position, velocity);
            }

            if (!CenterPlanets)
            {
                centerIndex = -1;
            }

            gameController = new GameController(gravityObjects, centerIndex); //centerIndex
        }
 public void UpdateVelocity(GravityObjectModel objectNow, GravityObjectModel[] objects)
 {
     for (int i = 0; i < objects.Length; i++)
     {
         if (objects[i] != objectNow)
         {
             float  sqrtDst      = vectorService.SqrMagnitude(objects[i].Position - objectNow.Position);
             Vector forceDir     = vectorService.Normilize(objects[i].Position - objectNow.Position);
             Vector force        = forceDir * gravitationalConstant * objectNow.Mass * objects[i].Mass / sqrtDst;
             Vector acceleration = force / objectNow.Mass;
             objectNow.Velocity = objectNow.Velocity + acceleration * physicsTimeStep;
         }
     }
 }
 public void UpdatePosition(GravityObjectModel objectNow)
 {
     objectNow.Position = objectNow.Position + objectNow.Velocity * physicsTimeStep;
 }
 public void UpdatePosition(GravityObjectModel objectNow, Vector centerPosition)
 {
     objectNow.Position = objectNow.Position + objectNow.Velocity * physicsTimeStep - centerPosition;
 }