BDAnimationModules.SurfaceWalker.FixedUpdate C# (CSharp) Method

FixedUpdate() public method

public FixedUpdate ( ) : void
return void
        public void FixedUpdate()
        {
            if(HighLogic.LoadedSceneIsFlight && vessel!=null && vessel.IsControllable)
            {
                if(!hasInitialized)
                {
                    hasInitialized = true;
                    part.FindModelTransform("bounds").GetComponent<Collider>().enabled = false;
                }
            }
            else return;

            Ray feetDownRay = new Ray(transform.position, -transform.up);
            if(Physics.Raycast(feetDownRay, 5, 1<<15))
            {
                feetAreDown = true;
            }
            else
            {
                feetAreDown = false;
            }

            if(walkerEnabled && vessel!=null && vessel.loaded)
            {
                if(vessel.checkLanded() && !vessel.rigidbody.isKinematic && feetAreDown)
                {

                    //stickyFeet
                    if(stickyFeet) vessel.rigidbody.AddForce(10 * -part.transform.up);

                    forwardForce = Vector3.MoveTowards(forwardForce, -vessel.ctrlState.pitch * moveForce * Vector3.forward, moveForce * moveAccelFactor * Time.fixedDeltaTime);
                    strafeForce = Vector3.MoveTowards(strafeForce, vessel.ctrlState.yaw * moveForce * Vector3.right, moveForce * moveAccelFactor * Time.fixedDeltaTime);
                    turnTorque = Mathf.MoveTowards(turnTorque, rotateTorque * vessel.ctrlState.roll, rotateTorque * moveAccelFactor*2 * Time.fixedDeltaTime);

                    Vector3 force = Vector3.ClampMagnitude(forwardForce+strafeForce, moveForce);

                    rigidbody.AddRelativeForce(force);
                    rigidbody.AddRelativeTorque(Vector3.up * turnTorque);

                    //drag
                    rigidbody.AddTorque(-slowForce * rigidbody.angularVelocity);
                    rigidbody.AddForce(-slowForce * rigidbody.velocity);

                    foreach(var wheel in part.FindModelTransforms("wheelCollider"))
                    {
                        var wheelCollider = wheel.GetComponent<WheelCollider>();
                        debugWheelSuspDist = wheelCollider.suspensionDistance;
                        WheelHit hit;
                        Transform colEnhancer = wheel.FindChild("collisionEnhancer");

                        if(wheelCollider.GetGroundHit(out hit))
                        {
                            groundHit = true;
                            colEnhancer.localPosition = new Vector3(0,(hit.point - wheel.position).magnitude, 0);
                        }
                        else
                        {
                            groundHit = false;
                        }

                    }

                }

            }
        }