/// <summary>
        /// Find and return referneces to three bodies: self, target and mutual attractor.
        /// Additional attractors chain arrays are used when mutual attractor is not direct parent of target body.
        /// If mutual attractor not existent, or target not assigned, then return empty data.
        /// </summary>
        /// <returns>All references data, or empty data if not found.</returns>
        public BodiesReferencesData GetBodiesReferences()
        {
            if (_orbitMover == null)
            {
                _orbitMover = GetComponent <KeplerOrbitMover>();
            }
            if (_orbitMover == null || Target == null || _orbitMover == Target)
            {
                return(default(BodiesReferencesData));
            }
            List <KeplerOrbitMover> attractorsA = new List <KeplerOrbitMover>();
            List <KeplerOrbitMover> attractorsB = new List <KeplerOrbitMover>();
            double    mass            = 0;
            double    g               = 0;
            Transform mutualAttractor = KeplerOrbitUtils.FindMutualAttractor(
                a: _orbitMover,
                b: Target,
                isGetFullChain: false,
                attractorsAChain: ref attractorsA,
                attractorsBChain: ref attractorsB,
                mass: ref mass,
                gConst: ref g);

            if (mutualAttractor != null)
            {
                return(new BodiesReferencesData()
                {
                    Origin = _orbitMover,
                    Target = Target,
                    Attractor = mutualAttractor,
                    OriginAttractorsChain = attractorsA.ToArray(),
                    TargetAttractorsChain = attractorsB.ToArray(),
                    AttractorMass = mass,
                    GConst = g,
                });
            }
            return(default(BodiesReferencesData));
        }