public void OnKISAction(BaseEventData baseEventData)
{
var action = baseEventData.GetString("action");
var tgtPart = baseEventData.Get<Part>("targetPart");
var tgtNode = baseEventData.Get<AttachNode>("targetNode");
if (action == "Store") {
if (winchConnected) {
winchConnected.UnplugHead(false);
}
}
if (action == "DropEnd") {
if (winchConnected) {
winchConnected.cableJointLength = winchConnected.cableRealLenght;
winchConnected.PlugHead(this, KASModuleWinch.PlugState.PlugDocked, false, false, true);
}
}
if (action == "AttachStart") {
if (tgtNode != null) {
KASModuleWinch moduleWinch = tgtNode.owner.GetComponent<KASModuleWinch>();
if (moduleWinch && winchConnected
&& moduleWinch.headState == KASModuleWinch.PlugState.Deployed
&& tgtNode.id == moduleWinch.connectedPortNodeName) {
winchConnected.UnplugHead(false);
return;
}
}
}
if (action == "AttachEnd") {
if (winchConnected) {
winchConnected.cableJointLength = winchConnected.cableRealLenght;
}
if (tgtNode != null) {
KASModuleWinch moduleWinch = tgtNode.owner.GetComponent<KASModuleWinch>();
if (moduleWinch && moduleWinch.headState == KASModuleWinch.PlugState.Deployed
&& tgtNode.id == moduleWinch.connectedPortNodeName) {
moduleWinch.PlugHead(this, KASModuleWinch.PlugState.PlugDocked, alreadyDocked: true);
StartCoroutine(WaitAndRemoveJoint());
}
}
}
}