public void cycleForceAxis() { switch (forceAxis) { case "left": forceAxis = "right"; break; case "right": forceAxis = "up"; break; case "up": forceAxis = "down"; break; case "down": forceAxis = "forward"; break; case "forward": forceAxis = "back"; break; case "back": forceAxis = "left"; break; } Log.info("FSrudder forceAxis: {0}", forceAxis); }
public override void OnStart(PartModule.StartState state) { FARActive = AssemblyLoader.loadedAssemblies.Any(a => a.assembly.GetName().Name.Equals("FerramAerospaceResearch", StringComparison.InvariantCultureIgnoreCase)); // This line breaks the plugin :( if (FARActive) { this.enabled = false; } if (liftTransformName == string.Empty) { liftTransform = part.transform; } else { liftTransform = part.FindModelTransform(liftTransformName); } if (liftTransform == null) { Log.info("FSliftSurface: Can't find lift transform {0}", liftTransformName); } //if (moduleID == 0) //{ liftSurfaces = part.GetComponents <FSliftSurface>().ToList(); //liftSurfaces.Add(this); // uhm, what? //} }
public void ApplyDamage(float amount) // used by InfiniteDice's damage code. 0f is broken, 1f is OK { partHealth = amount; Log.info("=== FSwing damage set to {0} ===", amount); ctrlSurfaceRange = originalCtrlSurfaceRange * amount; Log.info("=== FSwing range now {0} ===", ctrlSurfaceRange); if (amount >= 1f) { status = "Undamaged"; } else if (amount > 0.5f) { status = "Damaged"; } else { status = "Broken"; jammed = true; } if (showTweakables) { Log.info("FSwing - setting fields to {0}", jammed); Fields["status"].guiActive = (amount < 1f); Fields["pitchResponse"].guiActive = !jammed; Fields["rollResponse"].guiActive = !jammed; Fields["yawResponse"].guiActive = !jammed; Fields["flapResponse"].guiActive = !jammed; } }
public void increaseRange() { range += 1f; if (range > 60f) { range = 60f; } Log.info("FSrudder range: {0}", range); }
public void decreaseRange() { range -= 1f; if (range < 0f) { range = 0f; } Log.info("FSrudder range: {0}", range); }
public void decreasePower() { power -= 0.01f; if (power < 0f) { power = 0f; } Log.info("FSrudder power: {0}", power); }
public void toggleRequiresWaterContact() { if (requiresWaterContact == 0) { requiresWaterContact = 1; } else { requiresWaterContact = 0; } Log.info("FSrudder req. water contact: {0}", requiresWaterContact); }
public void addWheel(string wheelName) { if (wheelName != string.Empty) { Transform newWheel = base.internalProp.FindModelTransform(wheelName); if (newWheel != null) { analogCounter.wheels.Add(newWheel); } else { Log.info("FSaltimeterCounter: Could not find dial wheel {0}", wheelName); } } }
public static List <int> parseIntegers(string stringOfInts) { List <int> newIntList = new List <int>(); string[] valueArray = stringOfInts.Split(';'); for (int i = 0; i < valueArray.Length; i++) { int newValue = 0; if (int.TryParse(valueArray[i], out newValue)) { newIntList.Add(newValue); } else { Log.info("invalid integer: {0}", valueArray[i]); } } return(newIntList); }
void Start() { refTransform = new GameObject().transform; refTransform.parent = part.transform; refTransform.rotation = Quaternion.LookRotation(vessel.ReferenceTransform.up, -vessel.ReferenceTransform.forward); shipHeading = new Firespitter.ShipHeading(refTransform); try // overdoing the error protection a bit just because I can't be sure the renderer will be valid { Transform innerDiscTransform = base.internalProp.FindModelTransform(innerDiscName); if (innerDiscTransform != null) { innerDisc = innerDiscTransform.gameObject; discMat = innerDisc.GetComponent <Renderer>().material; } } catch { Log.err("FSartificialHorizon: Can't find object, or its material: {0}", innerDiscName); } if (discMat == null) { useOffset = false; Log.info("FSartificialHorizon: Couldn't find disc material"); } if (useOffset) { testButton = base.internalProp.FindModelTransform(testButtonName).gameObject; minusButton = base.internalProp.FindModelTransform(minusButtonName).gameObject; plusButton = base.internalProp.FindModelTransform(plusButtonName).gameObject; testButtonHandler = testButton.AddComponent <FSgenericButtonHandler>(); minusButtonHandler = minusButton.AddComponent <FSgenericButtonHandler>(); plusButtonHandler = plusButton.AddComponent <FSgenericButtonHandler>(); testButtonHandler.mouseDownFunction = testCageToggle; minusButtonHandler.mouseDownFunction = cageMinus; plusButtonHandler.mouseDownFunction = cagePlus; } needle = base.internalProp.FindModelTransform(outerRingName); }
public override void OnStart(PartModule.StartState state) { try { deploymentStateEnum = (DeploymentStates)Enum.Parse(typeof(DeploymentStates), deploymentState); } catch { Log.dbg("FSwheel: Could not set deployment state {0}", deploymentState); } #region animation anim = part.FindModelAnimators(animationName).FirstOrDefault(); if (anim != null) { hasAnimation = true; anim[animationName].layer = animationLayer; float startAnimTime = 0f; if (deploymentStateEnum == DeploymentStates.Retracted) { startAnimTime = 1f; animSpeed = 1f * customAnimationSpeed; } else { animSpeed = -1f * customAnimationSpeed; } anim[animationName].normalizedTime = startAnimTime; anim[animationName].speed = animSpeed; anim.Play(animationName); } #endregion #region In flight if (HighLogic.LoadedSceneIsFlight) { #region create wheel setup List <WheelCollider> colliderList = new List <WheelCollider>(); List <Transform> wheelMeshList = new List <Transform>(); List <Transform> suspensionList = new List <Transform>(); for (int i = 0; i < numberOfWheels; i++) { string suffix = (i + 1).ToString(); // the names used are e.g. "Wheel", "Wheel2", "Wheel3", to remain compatible with stock wheels if (i == 0) { suffix = ""; } Transform colliderTransform = part.FindModelTransform(wheelColliderName + suffix); if (colliderTransform != null) { WheelCollider collider = colliderTransform.GetComponent <WheelCollider>(); if (collider != null) { colliderList.Add(collider); Transform wheelMeshTransform = part.FindModelTransform(wheelMeshName + suffix); if (wheelMeshTransform != null) { wheelMeshList.Add(wheelMeshTransform); } else { Log.info("FSwheel: missing wheel mesh {0}{1}", wheelMeshName, suffix); } Transform suspensionTransform = part.FindModelTransform(suspensionParentName + suffix); if (suspensionTransform != null) { suspensionList.Add(suspensionTransform); } else { Log.info("FSwheel: missing suspensionParent {0}{1}", suspensionParentName, suffix); } } } else { Log.info("FSwheel: missing wheel collider {0}{1}", wheelColliderName, suffix); } } wheelList.Create(colliderList, wheelMeshList, suspensionList); if (wheelList != null) { if (!wheelList.enabled) { wheelList.enabled = true; } } // set the motor direction based on the first found wheelColliders orientation Log.dbg("FSwheel: wheelist count is {0}", wheelList.wheels.Count); if (wheelList.wheels.Count > 0) { Log.info("FSwheel: reversemotorset: {0}", reverseMotorSet); if (!reverseMotorSet) //run only the first time the craft is loaded { float dot = Vector3.Dot(wheelList.wheels[0].wheelCollider.transform.forward, vessel.ReferenceTransform.up); // up is forward if (dot < 0) // below 0 means the engine is on the left side of the craft { reverseMotor = true; Log.dbg("FSwheel: Reversing motor, dot: {0}", dot); } else { reverseMotor = false; Log.dbg("FSwheel: Motor reversing skipped, dot: {0}", dot); } if (motorStartsReversed) { reverseMotor = !reverseMotor; } reverseMotorSet = true; } } if (disableColliderWhenRetracted) { if (deploymentStateEnum == DeploymentStates.Retracted) { wheelList.enabled = false; } } //friction override if (overrideModelFrictionValues) { wheelList.forwardStiffness = forwardsStiffness; wheelList.forwardsAsymptoteSlip = forwardsAsymptoteSlip; wheelList.forwardsAsymptoteValue = forwardsAsymptoteValue; wheelList.forwardsExtremumSlip = forwardsExtremumSlip; wheelList.forwardsExtremumValue = forwardsExtremumValue; wheelList.sidewaysStiffness = sidewaysStiffness; wheelList.sidewaysAsymptoteSlip = sidewaysAsymptoteSlip; wheelList.sidewaysAsymptoteValue = sidewaysAsymptoteValue; wheelList.sidewaysExtremumSlip = sidewaysExtremumSlip; wheelList.sidewaysExtremumValue = sidewaysExtremumValue; wheelList.updateWheelFriction(); } //optionally set collider and spring values if ((suspensionSpring >= 0f && suspensionDamper >= 0f && suspensionTargetPosition >= 0f) || overrideModelSpringValues) { wheelList.updateSpring(suspensionSpring, suspensionDamper, suspensionTargetPosition); } if (wheelColliderRadius >= 0f) { wheelList.radius = wheelColliderRadius; } else { wheelColliderRadius = wheelList.radius; } if (wheelColliderMass >= 0f) { wheelList.mass = wheelColliderMass; } if (wheelColliderSuspensionDistance >= 0f || overrideSuspensionDistance) { wheelList.suspensionDistance = wheelColliderSuspensionDistance; } else { wheelColliderSuspensionDistance = wheelList.suspensionDistance; } #endregion #region GUI popup popup = new FSGUIPopup(part, "FSwheel", moduleID, FSGUIwindowID.wheel, new Rect(500f, 300f, 250f, 100f), "Wheel settings", new PopupElement("Suspension Settings:")); popup.useInFlight = true; wheelRadiusElement = new PopupElement("Radius", wheelColliderRadius.ToString()); suspensionDistanceElement = new PopupElement("Distance", wheelColliderSuspensionDistance.ToString()); suspensionSpringElement = new PopupElement("Spring", suspensionSpring.ToString()); suspensionDamperElement = new PopupElement("Damper", suspensionDamper.ToString()); suspensionTargetPositionElement = new PopupElement("Target pos", suspensionTargetPosition.ToString()); popup.sections[0].elements.Add(wheelRadiusElement); popup.sections[0].elements.Add(suspensionDistanceElement); popup.sections[0].elements.Add(suspensionSpringElement); popup.sections[0].elements.Add(suspensionDamperElement); popup.sections[0].elements.Add(suspensionTargetPositionElement); suspensionUpdateElement = new PopupElement(new PopupButton("Update", 0f, popupUpdateSuspension)); popup.sections[0].elements.Add(suspensionUpdateElement); #endregion if (brakeEmissiveObjectName != string.Empty) { brakeEmissiveObject = part.FindModelTransform(brakeEmissiveObjectName); } setBrakeLight(brakesEngaged); #region set up fx if (useCustomParticleFX) { smokeFXtexture = GameDatabase.Instance.GetTexture(smokeFXtextureName, false); if (smokeFXtexture == null) { useCustomParticleFX = false; } else { for (int i = 0; i < wheelList.wheels.Count; i++) { wheelList.wheels[i].smokeFX = new Firespitter.FSparticleFX(wheelList.wheels[i].fxLocation, smokeFXtexture); wheelList.wheels[i].smokeFX.AnimatorColor0 = new Color(1.0f, 1.0f, 1.0f, 0.8f); wheelList.wheels[i].smokeFX.AnimatorColor1 = new Color(1.0f, 1.0f, 1.0f, 0.5f); wheelList.wheels[i].smokeFX.AnimatorColor2 = new Color(1.0f, 1.0f, 1.0f, 0.2f); wheelList.wheels[i].smokeFX.AnimatorColor3 = new Color(1.0f, 1.0f, 1.0f, 0.1f); wheelList.wheels[i].smokeFX.AnimatorColor4 = new Color(1.0f, 1.0f, 1.0f, 0.0f); wheelList.wheels[i].smokeFX.EmitterMinSize = 0.3f; wheelList.wheels[i].smokeFX.EmitterMaxSize = 0.5f; wheelList.wheels[i].smokeFX.EmitterMinEnergy = 0.1f; wheelList.wheels[i].smokeFX.EmitterMaxEnergy = 0.3f; wheelList.wheels[i].smokeFX.EmitterMinEmission = 0f; wheelList.wheels[i].smokeFX.EmitterMaxEmission = 0f; wheelList.wheels[i].smokeFX.AnimatorSizeGrow = 0.1f; wheelList.wheels[i].smokeFX.setupFXValues(); } } } #endregion } #endregion #region GUI element changes Events["RaiseGear"].guiActiveUnfocused = guiActiveUnfocused; Events["RaiseGear"].unfocusedRange = unfocusedRange; Events["LowerGear"].guiActiveUnfocused = guiActiveUnfocused; Events["LowerGear"].unfocusedRange = unfocusedRange; Events["EnableMotorEvent"].guiActive = !motorEnabled; Events["DisableMotorEvent"].guiActive = motorEnabled; Events["EnableMotorEvent"].guiActiveEditor = !motorEnabled; Events["DisableMotorEvent"].guiActiveEditor = motorEnabled; Events["brakesOnEvent"].guiActive = !brakesEngaged; Events["brakesOffEvent"].guiActive = brakesEngaged; Events["brakesOnEvent"].guiActiveEditor = !brakesEngaged; Events["brakesOffEvent"].guiActiveEditor = brakesEngaged; Events["EnableReverseMotorEvent"].guiActive = !reverseMotor; Events["DisableReverseMotorEvent"].guiActive = reverseMotor; Events["EnableReverseMotorEvent"].guiActiveEditor = !reverseMotor; Events["DisableReverseMotorEvent"].guiActiveEditor = reverseMotor; Events["brakesOnEvent"].guiActiveUnfocused = guiActiveUnfocused; Events["brakesOffEvent"].guiActiveUnfocused = guiActiveUnfocused; if (!hasMotor) { //Events["EnableMotorEvent"].guiActive = false; //Events["DisableMotorEvent"].guiActive = false; Events["EnableMotorEvent"].active = false; Events["DisableMotorEvent"].active = false; Events["EnableReverseMotorEvent"].active = false; Events["DisableReverseMotorEvent"].active = false; } if (!hasAnimation) { Events["RaiseGear"].active = false; Events["LowerGear"].active = false; } if (debugMode) { Events["increaseFrictionEvent"].guiActive = true; Events["decreaseFrictionEvent"].guiActive = true; Events["suspensionGUIEvent"].guiActive = true; } if (brakesLockedOn) { Events["brakesOnEvent"].guiActive = false; Events["brakesOffEvent"].guiActive = false; Events["brakesOnEvent"].guiActiveUnfocused = false; Events["brakesOffEvent"].guiActiveUnfocused = false; } #endregion }
public void toggleEvent() { Events["toggleEvent"].active = false; //see if this removes the button when clicking isAnimating = true; //if (startDeployed && reverseAnimation && anim[animationName].normalizedTime == 0f) // anim[animationName].normalizedTime = 0.999f; if (reverseAnimation) { Actions["toggleAction"].guiName = startEventGUIName; Events["toggleEvent"].guiName = startEventGUIName; if (toggleActionName != string.Empty) { Actions["toggleAction"].guiName = toggleActionName; } // Following two commented out lines (anim[animationName].speed =, and anim.Play) now taken care of in LateUpdate //anim[animationName].speed = -1f * customAnimationSpeed; if (anim[animationName].normalizedTime == 0f || anim[animationName].normalizedTime == 1f) { anim[animationName].normalizedTime = 1f; } anim.Play(animationName); startDeployed = false; // to get the hangar toggle button state right if (startRetractEffect != string.Empty) { part.Effect(startRetractEffect); Log.info("start retract effect"); } rampDirection = RampDirection.down; } else { Actions["toggleAction"].guiName = endEventGUIName; Events["toggleEvent"].guiName = endEventGUIName; if (toggleActionName != string.Empty) { Actions["toggleAction"].guiName = toggleActionName; } // Following two commented out lines (anim[animationName].speed =, and anim.Play) now taken care of in LateUpdate //anim[animationName].speed = 1f * customAnimationSpeed; if (anim[animationName].normalizedTime == 0f || anim[animationName].normalizedTime == 1f) { anim[animationName].normalizedTime = 0f; Log.info("normalizedTime 2 "); } anim.Play(animationName); startDeployed = true; // to get the hangar toggle button state right if (startDeployEffect != string.Empty) { part.Effect(startDeployEffect); Log.info("start deploy effect"); } rampDirection = RampDirection.up; } reverseAnimation = !reverseAnimation; oldspeed = -9999f; //if (isOneShot) //{ // locked = true; // Events["toggleEvent"].active = false; //} }
public void increasePower() { power += 0.01f; Log.info("FSrudder power: {0}", power); }
private void Start() { Log.info("Version {0}", Version.Text); }
public void refForward(KSPActionParam param) { Log.info("Setting vessel reference transform"); vessel.SetReferenceTransform(part); }