public override void OnStart(PartModule.StartState state) { base.OnStart(state); emptyAnimation = part.FindModelAnimators(animationName)[0]; anim = emptyAnimation[animationName]; //set max and min for wheel height var wheelHeightTweakable = (UI_FloatRange)Fields["wheelHeight"].uiControlEditor; wheelHeightTweakable.maxValue = maxHeight; wheelHeightTweakable.minValue = minHeight; //set max wheelAngle tweakable var wheelAngleTweakable = (UI_FloatRange)Fields["wheelAngle"].uiControlEditor; wheelAngleTweakable.maxValue = maxWheelAngle; wheelAngleTweakable.minValue = 0; //set min/max leg tilt tweakable var tiltAngleTweakable = (UI_FloatRange)Fields["legAngle"].uiControlEditor; tiltAngleTweakable.maxValue = maxTilt; tiltAngleTweakable.minValue = minTilt; //set max brakeTorque tweakable var brakeTorqueTweakable = (UI_FloatRange)Fields["brakeTorque"].uiControlEditor; brakeTorqueTweakable.maxValue = maxBrakeTorque; //tiltTransforms tiltTransform = part.FindModelTransform(tiltTransformName); tiltTargetTransform = part.FindModelTransform(tiltTargetTransformName); tiltRetractTargetTransform = part.FindModelTransform(tiltRetractTargetTransformName); //deployTransforms deployTransform = part.FindModelTransform(deployTransformName); deployTargetTransform = part.FindModelTransform(deployTargetTransformName); retractTargetTransform = part.FindModelTransform(retractTargetTransformName); //wheelTransforms wheelHingeTransform = part.FindModelTransform(wheelHingeTransformName); retractedWheelTargetTransform = part.FindModelTransform(retractedWheelTargetTransformName); deployedWheelTargetTransform = part.FindModelTransform(deployedWheelTargetTransformName); wheelColliderTarget = part.FindModelTransform(wheelColliderTargetName); wheelColliderHolderTransform = part.FindModelTransform("wheelColliderHolder"); wheelAlignmentTransform = part.FindModelTransform(wheelAlignmentTransformName); if (canSteer) { steeringTransform = part.FindModelTransform(steeringTransformName); } initialHeight = Vector3.Distance(deployedWheelTargetTransform.localPosition, retractedWheelTargetTransform.localPosition); SetUpDoors(); if (animSpeedP > 0) { animNormTimeP = 1; } else if (animSpeedP < 0) { animNormTimeP = 0; } anim.normalizedTime = animNormTimeP; float animNormTime = 1 - animNormTimeP; animNormTime = Mathf.Clamp01(animNormTime); if (animNormTime >= 1) { CurrentState = GearStates.Deployed; } else if (animNormTime <= 0) { CurrentState = GearStates.Retracted; } else if (anim.speed < 0) { CurrentState = GearStates.Deploying; } else { CurrentState = GearStates.Retracting; } if (posAndRotSaved) { LoadPosAndRot(); } if (CurrentState == GearStates.Deployed || CurrentState == GearStates.Deploying) { wheelHingeTransform.localPosition = deployedWheelTargetTransform.localPosition; wheelHingeTransform.localRotation = deployedWheelTargetTransform.localRotation; tiltTransform.localRotation = tiltTargetTransform.localRotation; deployTransform.localRotation = deployTargetTransform.localRotation; } else { wheelHingeTransform.localPosition = retractedWheelTargetTransform.localPosition; wheelHingeTransform.localRotation = retractedWheelTargetTransform.localRotation; tiltTransform.localRotation = tiltRetractTargetTransform.localRotation; deployTransform.localRotation = retractTargetTransform.localRotation; } part.OnEditorAttach += new Callback(OnEditorAttach); //fs wheel overrides fsWheel = part.FindModuleImplementing <FSBDwheel>(); fsWheel.brakeTorque = brakeTorque; //scale transform.localScale = algScale * Vector3.one; if (part.FindModelTransform(boundsCollider) != null) { Destroy(part.FindModelTransform(boundsCollider).gameObject); } if (!HighLogic.LoadedSceneIsEditor) { showSettings = false; } RefreshTweakables(); wheelColliders = part.FindModelComponents <WheelCollider>(); }
public override void OnStart(PartModule.StartState state) { base.OnStart(state); emptyAnimation = part.FindModelAnimators(animationName)[0]; anim = emptyAnimation[animationName]; //set max and min for wheel height var wheelHeightTweakable = (UI_FloatRange) Fields["wheelHeight"].uiControlEditor; wheelHeightTweakable.maxValue = maxHeight; wheelHeightTweakable.minValue = minHeight; //set max wheelAngle tweakable var wheelAngleTweakable = (UI_FloatRange) Fields["wheelAngle"].uiControlEditor; wheelAngleTweakable.maxValue = maxWheelAngle; wheelAngleTweakable.minValue = 0; //set min/max leg tilt tweakable var tiltAngleTweakable = (UI_FloatRange) Fields["legAngle"].uiControlEditor; tiltAngleTweakable.maxValue = maxTilt; tiltAngleTweakable.minValue = minTilt; //set max brakeTorque tweakable var brakeTorqueTweakable = (UI_FloatRange)Fields["brakeTorque"].uiControlEditor; brakeTorqueTweakable.maxValue = maxBrakeTorque; //tiltTransforms tiltTransform = part.FindModelTransform(tiltTransformName); tiltTargetTransform = part.FindModelTransform(tiltTargetTransformName); tiltRetractTargetTransform = part.FindModelTransform(tiltRetractTargetTransformName); //deployTransforms deployTransform = part.FindModelTransform(deployTransformName); deployTargetTransform = part.FindModelTransform (deployTargetTransformName); retractTargetTransform = part.FindModelTransform(retractTargetTransformName); //wheelTransforms wheelHingeTransform = part.FindModelTransform (wheelHingeTransformName); retractedWheelTargetTransform = part.FindModelTransform (retractedWheelTargetTransformName); deployedWheelTargetTransform = part.FindModelTransform (deployedWheelTargetTransformName); wheelColliderTarget = part.FindModelTransform(wheelColliderTargetName); wheelColliderHolderTransform = part.FindModelTransform("wheelColliderHolder"); wheelAlignmentTransform = part.FindModelTransform(wheelAlignmentTransformName); if(canSteer) { steeringTransform = part.FindModelTransform (steeringTransformName); } initialHeight = Vector3.Distance(deployedWheelTargetTransform.localPosition, retractedWheelTargetTransform.localPosition); SetUpDoors(); if(animSpeedP > 0) { animNormTimeP = 1; } else if(animSpeedP < 0) { animNormTimeP = 0; } anim.normalizedTime = animNormTimeP; float animNormTime = 1-animNormTimeP; animNormTime = Mathf.Clamp01(animNormTime); if(animNormTime >= 1) { CurrentState = GearStates.Deployed; } else if(animNormTime <= 0) { CurrentState = GearStates.Retracted; } else if(anim.speed < 0) { CurrentState = GearStates.Deploying; } else { CurrentState = GearStates.Retracting; } if(posAndRotSaved) LoadPosAndRot(); if(CurrentState == GearStates.Deployed || CurrentState == GearStates.Deploying) { wheelHingeTransform.localPosition = deployedWheelTargetTransform.localPosition; wheelHingeTransform.localRotation = deployedWheelTargetTransform.localRotation; tiltTransform.localRotation = tiltTargetTransform.localRotation; deployTransform.localRotation = deployTargetTransform.localRotation; } else { wheelHingeTransform.localPosition = retractedWheelTargetTransform.localPosition; wheelHingeTransform.localRotation = retractedWheelTargetTransform.localRotation; tiltTransform.localRotation = tiltRetractTargetTransform.localRotation; deployTransform.localRotation = retractTargetTransform.localRotation; } part.OnEditorAttach += new Callback(OnEditorAttach); //fs wheel overrides fsWheel = part.FindModuleImplementing<FSBDwheel>(); fsWheel.brakeTorque = brakeTorque; //scale transform.localScale = algScale * Vector3.one; if(part.FindModelTransform(boundsCollider)!=null) { DestroyImmediate(part.FindModelTransform(boundsCollider).gameObject); } if(!HighLogic.LoadedSceneIsEditor) { showSettings = false; } RefreshTweakables(); wheelColliders = part.FindModelComponents<WheelCollider>(); previousState = CurrentState; part.SendMessage("GeometryPartModuleRebuildMeshData"); if(state != StartState.Editor) { part.mass = baseMass * Mathf.Pow(algScale, 3); } }