public override void OnStart(StartState state) { Logger.Log("[MMT] OnStart Start", Logger.Level.Debug); //part.stackIcon.SetIcon(DefaultIcons.STRUT); limitTweakableFlag = limitTweakableFlag | rotateLimits; if (!float.IsNaN(Position)) Interpolator.Position = Position; Translator.Init(isMotionLock, new Servo(this), Interpolator); ConfigureInterpolator(); if (vessel == null) { Logger.Log(string.Format("[MMT] OnStart vessel is null")); return; } if (motorSound==null) motorSound = new SoundSource(part, "motor"); motorSound.Setup(motorSndPath, true); CreationOrder = globalCreationOrder++; FindTransforms(); if (ModelTransform == null) Logger.Log("[MMT] OnStart ModelTransform is null", Logger.Level.Warning); BuildAttachments(); UpdateState(); if (limitTweakable) { Events["LimitTweakableToggle"].active = rotateJoint; Events["LimitTweakableToggle"].guiName = limitTweakableFlag ? "Disengage Limits" : "Engage Limits"; } //it seems like we do need to call this one more time as OnVesselChange was called after Awake //for some reason it was not necessary for legacy parts, but needed for rework parts. SetupMinMaxTweaks(); Logger.Log("[MMT] OnStart End, rotateLimits=" + rotateLimits + ", minTweak=" + minTweak + ", maxTweak=" + maxTweak + ", rotateJoint = " + rotateJoint, Logger.Level.Debug); }
public override void OnAwake() { Logger.Log("[OnAwake] Start", Logger.Level.Debug); LoadConfigXml(); FindTransforms(); if (ModelTransform == null) Logger.Log("[OnAwake] ModelTransform is null", Logger.Level.Warning); ColliderizeChilds(ModelTransform); limitTweakableFlag = limitTweakableFlag | rotateLimits; try { Events["InvertAxisToggle"].guiName = invertAxis ? "Un-invert Axis" : "Invert Axis"; Events["MotionLockToggle"].guiName = isMotionLock ? "Disengage Lock" : "Engage Lock"; if (rotateJoint) { minTweak = rotateMin; maxTweak = rotateMax; if (limitTweakable) { Events["LimitTweakableToggle"].active = true; Events["LimitTweakableToggle"].guiName = limitTweakableFlag ? "Disengage Limits" : "Engage Limits"; } if (freeMoving) { Events["InvertAxisToggle"].active = false; Events["MotionLockToggle"].active = false; Fields["minTweak"].guiActive = false; Fields["minTweak"].guiActiveEditor = false; Fields["maxTweak"].guiActive = false; Fields["maxTweak"].guiActiveEditor = false; Fields["speedTweak"].guiActive = false; Fields["speedTweak"].guiActiveEditor = false; Fields["accelTweak"].guiActive = false; Fields["accelTweak"].guiActiveEditor = false; Fields["rotation"].guiActive = false; Fields["rotation"].guiActiveEditor = false; } Fields["translation"].guiActive = false; Fields["translation"].guiActiveEditor = false; } else if (translateJoint) { minTweak = translateMin; maxTweak = translateMax; Events["LimitTweakableToggle"].active = false; Fields["rotation"].guiActive = false; Fields["rotation"].guiActiveEditor = false; } if (motorSound==null) motorSound = new SoundSource(part, "motor"); } catch (Exception ex) { Logger.Log(string.Format("MMT.OnAwake exception {0}", ex.Message), Logger.Level.Fatal); } SetupMinMaxTweaks(); ParsePresetPositions(); FixedMeshTransform = KSPUtil.FindInPartModel(transform, fixedMesh); Logger.Log(string.Format("[OnAwake] End, rotateLimits={0}, minTweak={1}, maxTweak={2}, rotateJoint={0}", rotateLimits, minTweak, maxTweak), Logger.Level.Debug); }