KAS.KASModuleWinch.GrabHead C# (CSharp) Method

GrabHead() public method

public GrabHead ( Vessel kerbalEvaVessel, KASModulePort grabbedPort = null ) : void
kerbalEvaVessel Vessel
grabbedPort KASModulePort
return void
        public void GrabHead(Vessel kerbalEvaVessel, KASModulePort grabbedPort = null)
        {
            KAS_Shared.DebugLog("GrabHead(Winch) Grabbing part");
            //Drop already grabbed head
            KASModuleWinch tmpGrabbbedHead = KAS_Shared.GetWinchModuleGrabbed(kerbalEvaVessel);
            if (tmpGrabbbedHead) {
              KAS_Shared.DebugLog("GrabHead(Winch) - Drop current grabbed head");
              tmpGrabbbedHead.DropHead();
            }

            if (headState == PlugState.PlugDocked || headState == PlugState.PlugUndocked) {
              KAS_Shared.DebugLog("GrabHead(Winch) - Unplug head");
              UnplugHead();
            }

            if (headState == PlugState.Locked) {
              KAS_Shared.DebugLog("GrabHead(Winch) - Deploy head");
              Deploy();
            }

            evaCollider = KAS_Shared.GetEvaCollider(kerbalEvaVessel, "jetpackCollider");

            evaHeadNodeTransform = new GameObject("KASEvaHeadNode").transform;
            evaHeadNodeTransform.parent = evaCollider.transform;
            evaHeadNodeTransform.localPosition = evaGrabHeadPos;
            evaHeadNodeTransform.rotation =
            KAS_Shared.DirectionToQuaternion(evaCollider.transform, evaGrabHeadDir);

            SetHeadToPhysic(false);

            grabbedPortModule = grabbedPort;

            if (grabbedPort) {
              KAS_Shared.DebugLog("GrabHead(Winch) - Moving head to grabbed port node...");
              headTransform.rotation =
              Quaternion.FromToRotation(headPortNode.forward, -grabbedPort.portNode.forward)
              * headTransform.rotation;
              headTransform.position =
              headTransform.position - (headPortNode.position - grabbedPort.portNode.position);
            } else {
              KAS_Shared.DebugLog("GrabHead(Winch) - Moving head to eva node...");
              KAS_Shared.MoveAlign(headTransform, headPortNode, evaHeadNodeTransform);
            }
            // Set cable joint connected body to eva
            SetCableJointConnectedBody(kerbalEvaVessel.rootPart.rb);
            headTransform.parent = evaHeadNodeTransform;
            cableJointLength = cableRealLenght;

            evaHolderPart = kerbalEvaVessel.rootPart;
            release.active = true;
            fxSndHeadGrab.audio.Play();
        }