/*public Vessel getSink() * { * if (sinkTarget == ShuntTarget.CelestialBody) * { * return null; * } * else if (sinkTarget == ShuntTarget.CraftTarget && typeof(Vessel).IsInstanceOfType(vessel.targetObject)) * { * return (Vessel)vessel.targetObject; * } * else if(sinkTarget == ShuntTarget.NearestVessel) * { * List<Vessel> sortedLoadedVessels = FlightGlobals.FindNearestVesselWhere(part.transform.position, vessel => vessel.loaded); * if (sinkTarget == ShuntTarget.CraftTarget || sourceTarget == ShuntTarget.CraftTarget) * { * if (sortedLoadedVessels.Count < 3) * { * return null; * } * else * { * * } * } * if (sortedLoadedVessels.Count < 2) * { * return null; * } * else * { * return FlightGlobals.FindNearestVesselWhere(part.transform.position, vessel => vessel.loaded)[1]; * } * } * }*/ /*public float getTargetDistance() * { * if(sinkTarget == ShuntTarget.CelestialBody) * { * return (float)vessel.radarAltitude; * } * else if(sinkTarget == ShuntTarget.CraftTarget) * { * return (getSink().transform.position - part.transform.position).magnitude; * } * else * { * return (FlightGlobals.FindNearestVesselWhere(part.transform.position, vessel => vessel.loaded)[1].transform.position - part.transform.position).magnitude; * } * }*/ public void updateForceables() { if (sourceTarget == ShuntTarget.Self) { sourceValid = true; sourceForceable.wrap(part); } else if (sourceTarget == ShuntTarget.CelestialBody) { sourceValid = true; sourceForceable.wrap(); } else if (sourceTarget == ShuntTarget.CraftTarget && typeof(Vessel).IsInstanceOfType(vessel.targetObject)) { sourceValid = true; sourceForceable.wrap((Vessel)vessel.targetObject); } else if (sourceTarget == ShuntTarget.NearestVessel) { List <Vessel> sortedLoadedVessels = FlightGlobals.FindNearestVesselWhere(part.transform.position, vessel => vessel.loaded); if (sinkTarget == ShuntTarget.CraftTarget) { if (sortedLoadedVessels.Count < 3) { sourceValid = false; } else { if (sortedLoadedVessels[1] != (Vessel)vessel.targetObject) { sourceValid = true; sourceForceable.wrap(sortedLoadedVessels[1]); } else { sourceValid = true; sourceForceable.wrap(sortedLoadedVessels[2]); } } } if (sortedLoadedVessels.Count < 2) { sourceValid = false; } else { sourceValid = true; sourceForceable.wrap(sortedLoadedVessels[1]); } } else { sourceValid = false; } if (sinkTarget == ShuntTarget.Self) { sinkValid = true; sinkForceable.wrap(part); } else if (sinkTarget == ShuntTarget.CelestialBody) { sinkValid = true; sinkForceable.wrap(); } else if (sinkTarget == ShuntTarget.CraftTarget && typeof(Vessel).IsInstanceOfType(vessel.targetObject)) { sinkValid = true; sinkForceable.wrap((Vessel)vessel.targetObject); } else if (sinkTarget == ShuntTarget.NearestVessel) { List <Vessel> sortedLoadedVessels = FlightGlobals.FindNearestVesselWhere(part.transform.position, vessel => vessel.loaded); if (sourceTarget == ShuntTarget.CraftTarget) { if (sortedLoadedVessels.Count < 3) { sinkValid = false; } else { if (sortedLoadedVessels[1] != (Vessel)vessel.targetObject) { sinkValid = true; sinkForceable.wrap(sortedLoadedVessels[1]); } else { sinkValid = true; sinkForceable.wrap(sortedLoadedVessels[2]); } } } if (sortedLoadedVessels.Count < 2) { sinkValid = false; } else { sinkValid = true; sinkForceable.wrap(sortedLoadedVessels[1]); } } else { sinkValid = false; } }