Example #1
0
        public void UpdateGravity(IGravityObject gravityObject)
        {
            var gravityObjToPlanet = (transform.position - gravityObject.CurrentPosition);
            // 중력 영향 범위 내에 gravityObject가 있다면
            if (gravityObjToPlanet.IsInDistance(GravityRange))
            {

            }
        }
        private Vector CalcGravityForce(IGravityObject gravityObject)
        {
            Vector targetGravityForce = new Vector(0, 0);

            foreach (ISpaceObject so in SpaceObjects)
            {
                if (so is IGravityObject go)
                {
                    if (gravityObject == go)
                    {
                        continue;
                    }

                    Vector gravityForce = go.Position - gravityObject.Position;
                    if (gravityForce.GetSize() != 0)
                    {
                        gravityForce        = new Vector((double)(G * (gravityObject.GetWeight() * go.GetWeight()) / Math.Pow(gravityForce.GetSize(), 2)), gravityForce.GetAngle());
                        targetGravityForce += gravityForce;
                    }
                }
            }

            return(targetGravityForce);
        }
 public void RemoveObject(IGravityObject gravityObject)
 {
     _gravityObjects.Remove(gravityObject);
 }
 public void AddObject(IGravityObject gravityObject)
 {
     _gravityObjects.Add(gravityObject);
 }