private void RemoveBeam(TBeam b)
        {
            b.TractorSound.audio.Stop();
            b.TractorSound.audio.enabled = false;

            //foo1.removeGimbal();
            foo2.removeGimbal();
            //foo4.removeGimbal();

            UnityEngine.Debug.Log("ImpulseDrive TractorBeam: RemoveBeam 1 : " + b.ship.vesselName);
            BeamDrawer   BD1       = b.BeamDrawer1;
            LineRenderer LR1       = b.LineRenderer1;
            BeamDrawer   BD2       = b.BeamDrawer2;
            LineRenderer LR2       = b.LineRenderer2;
            BeamDrawer   debug_BD1 = b.debug1_BeamDrawer;
            LineRenderer debug_LR1 = b.debug1_LineRenderer;
            BeamDrawer   debug_BD2 = b.debug2_BeamDrawer;
            LineRenderer debug_LR2 = b.debug2_LineRenderer;

            UnityEngine.Debug.Log("ImpulseDrive TractorBeam: RemoveBeam 2 : " + b.ship.vesselName);

            UnityEngine.Debug.Log("ImpulseDrive TractorBeam: RemoveBeam 3 : " + b.ship.vesselName);
            //b.debug1_LineRenderer.enabled = false;
            UnityEngine.Debug.Log("ImpulseDrive TractorBeam: RemoveBeam 4 : " + b.ship.vesselName);



            LR1 = BD1.render(Vector3.zero, Color.blue, 1);
            LR1.SetWidth(0, 0);
            LR1.SetPosition(0, Vector3.zero);
            LR1.SetPosition(1, Vector3.zero);
            //BD1.Destroy();
            UnityEngine.Debug.Log("ImpulseDrive TractorBeam: RemoveBeam 5 : " + b.ship.vesselName);

            Color fc = new Color(0.469F, 0.484F, 0.371F, 0.8F);

            LR2 = BD2.render(Vector3.zero, fc, 1);
            LR2.SetWidth(0, 0);
            LR2.SetPosition(0, Vector3.zero);
            LR2.SetPosition(1, Vector3.zero);
            //BD2.Destroy();
            UnityEngine.Debug.Log("ImpulseDrive TractorBeam: RemoveBeam 6 : " + b.ship.vesselName);

            /*
             * debug_LR1 = debug_BD1.render(Vector3.zero, Color.green);
             * debug_LR1.SetWidth(0, 0);
             * debug_LR1.SetPosition(0, Vector3.zero);
             * debug_LR1.SetPosition(1, Vector3.zero);
             * //debug_BD1.Destroy();
             * UnityEngine.Debug.Log("ImpulseDrive TractorBeam: RemoveBeam 7 : " + b.ship.vesselName);
             *
             * debug_LR2 = debug_BD2.render(Vector3.zero, Color.yellow);
             * debug_LR2.SetWidth(0, 0);
             * debug_LR2.SetPosition(0, Vector3.zero);
             * debug_LR2.SetPosition(1, Vector3.zero);
             * //debug_BD2.Destroy();
             * UnityEngine.Debug.Log("ImpulseDrive TractorBeam: RemoveBeam 8 : " + b.ship.vesselName);
             */
            this.BeamIDList.Remove(b.beamID);
            this.BeamList.Remove(b);
            //BD = null;
            //LR = null;
            //b = null;
            UnityEngine.Debug.Log("ImpulseDrive TractorBeam: RemoveBeam 9 : " + b.ship.vesselName);
        }
        public void Update_RenderBeams()
        {
            foreach (TBeam b in this.BeamList)
            {
                Vessel  Parent = FlightGlobals.ActiveVessel;
                Vector3 parentPosition_current = Parent.GetWorldPos3D();
                Vector3 childPosition_current  = b.ship.GetWorldPos3D();
                //Vector3 parentPosition_current = Parent.findWorldCenterOfMass();
                //Vector3 childPosition_current = b.ship.findWorldCenterOfMass();
                //Vector3 parentPosition_current = Parent.findLocalCenterOfMass();
                //Vector3 childPosition_current = b.ship.findLocalCenterOfMass();
                //Vector3 parentPosition_current = Parent.transform.position;
                //Vector3 childPosition_current = b.ship.transform.position;
                //Vector3 parentPosition_current = Parent.transform.localPosition;
                //Vector3 childPosition_current = b.ship.transform.localPosition;

                BeamDrawer   BD1       = b.BeamDrawer1;
                LineRenderer LR1       = b.LineRenderer1;
                BeamDrawer   BD2       = b.BeamDrawer2;
                LineRenderer LR2       = b.LineRenderer2;
                BeamDrawer   debug_BD1 = b.debug1_BeamDrawer;
                LineRenderer debug_LR1 = b.debug1_LineRenderer;
                BeamDrawer   debug_BD2 = b.debug2_BeamDrawer;
                LineRenderer debug_LR2 = b.debug2_LineRenderer;

                GameObject Empty1 = b.Empty1;
                GameObject Empty2 = b.Empty2;



                int   width          = 0;
                float check_distance = Vector3.Distance(parentPosition_current, childPosition_current);
                if (check_distance < 2000F)
                {
                    b.ship.GoOffRails();

                    //* works!!!!
                    // MOVE THE HELPER LINE - NO FORCE APPLIED HERE
                    Empty1.transform.parent   = Parent.transform;
                    Empty1.transform.position = Parent.transform.position;
                    Empty2.transform.parent   = Empty1.transform;
                    Empty2.transform.position = Empty1.transform.position;
                    Empty2.transform.rotation = Empty1.transform.rotation;
                    Vector3 temp2          = Empty2.transform.TransformDirection(b.Vector);
                    Vector3 GimbalPosition = SetVectorLength(temp2, b.distance);
                    //Empty2.transform.position = GimbalPosition;
                    Empty2.transform.localPosition = GimbalPosition;
                    Empty1.transform.Rotate(b.x_slider, 0, b.z_slider);
                    b.xAngle   = Empty1.transform.localEulerAngles.x;
                    b.zAngle   = Empty1.transform.localEulerAngles.z;
                    b.x_slider = 0;
                    b.y_slider = 0;
                    b.z_slider = 0;
                    // MOVE THE HELPER LINE - NO FORCE APPLIED HERE
                    // OBSOLETE - RENDER THE HELPER LINE - NO FORCE APPLIED HERE
                    b.distance                    = Mathf.Clamp(b.distance, 5, 2000);
                    b.debug1_LineRenderer         = debug_BD1.render2(Empty1.transform, Empty1.transform.up, Empty1.transform.localPosition, b.distance, 0.1f, Color.green, Color.red);
                    b.debug1_LineRenderer.enabled = false;
                    // OBSOLETE - RENDER THE HELPER LINE - NO FORCE APPLIED HERE
                    // works !!!! */


                    // FORCE APPLIED HERE
                    //Vector3 newVector = SetVectorLength(Empty1.transform.TransformPoint(Empty1.transform.up), b.distance);
                    //float current_Distance = Vector3.Distance(parentPosition_current, childPosition_current);
                    //float step = current_Distance * Time.deltaTime;

                    //b.ship.transform.position = Vector3.Lerp(childPosition_current, Empty2.transform.position, 0.5F * Time.deltaTime);

                    //b.ship.transform.position = Vector3.Lerp(b.ship.transform.position, Empty2.transform.position, 0.5F * Time.deltaTime);

                    float targetError = Vector3.Distance(b.ship.transform.position, Empty2.transform.position);
                    b.targetError = targetError;
                    float step = targetError * Time.deltaTime;
                    b.ship.transform.position = Vector3.MoveTowards(b.ship.transform.position, Empty2.transform.position, step);



                    Vector3 targetErrorVector = b.ship.transform.position - Empty2.transform.position;

                    foreach (var vesselPart in b.ship.parts.Where(p => p.rigidbody != null))
                    {
                        vesselPart.rigidbody.AddForce(targetErrorVector * -1 * (b.force / targetError), ForceMode.Acceleration);
                    }
                    // FORCE APPLIED HERE

                    /*
                     */



                    // RENDER THE TRACTOR BEAM - NO FORCE APPLIED HERE
                    Vector3       TractorBeamVector = b.Vector;
                    System.Random rnd = new System.Random();
                    width = rnd.Next(5, 12);
                    LR1   = BD1.render(TractorBeamVector, Color.blue, 1);
                    LR1.SetWidth(1, width);
                    LR1.SetPosition(0, FlightGlobals.ActiveVessel.findWorldCenterOfMass());
                    LR1.SetPosition(1, b.ship.GetWorldPos3D());

                    Color fc = new Color(0.469F, 0.484F, 0.371F, 0.8F);
                    width = rnd.Next(1, 5);
                    LR2   = BD2.render(TractorBeamVector, fc, 1);
                    LR2.SetWidth(1, width);
                    LR2.SetPosition(0, FlightGlobals.ActiveVessel.findWorldCenterOfMass());
                    LR2.SetPosition(1, b.ship.GetWorldPos3D());
                    // RENDER THE TRACTOR BEAM - NO FORCE APPLIED HERE
                }
                else
                {
                    this.RemoveBeam(b);
                }
            }
        }