IEnumerator DetectAxis(Step step) { inputMapper.Init(); ResetJoystickThumbs(); InputMapperItem m; switch (step) { case Step.Yaw: invertValue = leftJoystickLeftRightInvert.isOn ? -1 : 1; break; case Step.Throttle: invertValue = leftJoystickUpDownInvert.isOn ? -1 : 1; break; case Step.Roll: invertValue = rightJoystickLeftRightInvert.isOn ? -1 : 1; break; case Step.Pitch: invertValue = rightJoystickUpDownInvert.isOn ? -1 : 1; break; } while (cancelAxisDetection == false) { m = inputMapper.SelectActiveAxis(); if (m != null) { m.invertValue = invertValue; switch (step) { case Step.Yaw: m.trim = trimHorizontalLeftSlider.GetValue(); m.scale = scaleHorizontalLeftSlider.GetValue(); m.deadzone = deadzoneHorizontalLeftSlider.GetValue(); break; case Step.Throttle: m.trim = trimVerticalLeftSlider.GetValue(); m.scale = scaleVerticalLeftSlider.GetValue(); m.deadzone = deadzoneVerticalLeftSlider.GetValue(); break; case Step.Roll: m.trim = trimHorizontalRightSlider.GetValue(); m.scale = scaleHorizontalRightSlider.GetValue(); m.deadzone = deadzoneHorizontalRightSlider.GetValue(); break; case Step.Pitch: m.trim = trimVerticalRightSlider.GetValue(); m.scale = scaleVerticalRightSlider.GetValue(); m.deadzone = deadzoneVerticalRightSlider.GetValue(); break; } UpdateInputMap(step, m); float v = InputHelper.GetInputAxis(m.axisName); //Debug.Log(string.Format("m.invertValue={0}", m.invertValue)); //Debug.Log(string.Format("InputHelper.GetInputAxis(m.axisName) m.axisName={0} raw v={1}", m.axisName, v)); v = m.ApplyInvertTrimScale(v); //Debug.Log(string.Format("InputHelper.GetInputAxis(m.axisName) m.axisName={0} m.trim={1} m.scale={2} v={3}", m.axisName, m.trim, m.scale, v)); switch (step) { case Step.Yaw: leftThumbMover.LeftRight(v, m.minValue, m.maxValue); break; case Step.Throttle: leftThumbMover.UpDown(v, m.minValue, m.maxValue); break; case Step.Roll: rightThumbMover.LeftRight(v, m.minValue, m.maxValue); break; case Step.Pitch: rightThumbMover.UpDown(v, m.minValue, m.maxValue); break; } } DisableDroneRacerInput(); yield return(new WaitForSeconds(updateFreq)); } axisDetectionActive = false; //Debug.Log("DetectAxis() end"); }