// ------------------- public void ApplyClampedVec(Vector2 v, JoystickConfig.ClampMode clampMode) { if (clampMode != this.config.clampMode) { if (this.config.clampMode == JoystickConfig.ClampMode.Circle) { v = CFUtils.SquareToCircularJoystickVec(v); } else { v = CFUtils.CircularToSquareJoystickVec(v); } } this.nextFramePos.x = CFUtils.ApplyDeltaInput(this.nextFramePos.x, v.x); this.nextFramePos.y = CFUtils.ApplyDeltaInput(this.nextFramePos.y, v.y); }
//private float buttonHeight = 40; // --------------------- protected void DrawJoystickConfigGUI(JoystickConfig target) { bool blockX = target.blockX, blockY = target.blockY, perAxisDeadzones = target.perAxisDeadzones; JoystickConfig.ClampMode clampMode = target.clampMode; //circularClamp = target.circularClamp; JoystickConfig.StickMode stickMode = target.stickMode; DirectionState.OriginalDirResetMode originalDirResetMode = target.originalDirResetMode; JoystickConfig.DigitalDetectionMode digitalDetectionMode = target.digitalDetectionMode; float angularMagnet = target.angularMagnet; stickMode = (JoystickConfig.StickMode)CFGUI.EnumPopup(new GUIContent("Mode", "Joystick mode"), stickMode, 120); // GUILayout.MinWidth(30)); clampMode = (JoystickConfig.ClampMode)CFGUI.EnumPopup(new GUIContent("Vector Range", "Vector Range Mode"), clampMode, 120); //GUILayout.MinWidth(30)); digitalDetectionMode = (JoystickConfig.DigitalDetectionMode)CFGUI.EnumPopup(new GUIContent("Digi. Detect. Mode", "Digital Detection Mode"), digitalDetectionMode, 120); angularMagnet = CFGUI.Slider(new GUIContent("Digi. Angular Magnet", "Angular Magnet Strength used when changing digital direction. Higher value will make changing direction harder, which is recommended for Touch Digital Detection Mode."), angularMagnet, 0f, 1f, 100); if (stickMode == JoystickConfig.StickMode.Analog) { perAxisDeadzones = EditorGUILayout.ToggleLeft(new GUIContent("Per-Axis Analog Range", "Per-Axis deadzone, endzone and ramp transformations."), perAxisDeadzones, GUILayout.MinWidth(30)); } blockX = EditorGUILayout.ToggleLeft(new GUIContent("Block X"), blockX, GUILayout.MinWidth(30)); blockY = EditorGUILayout.ToggleLeft(new GUIContent("Block Y"), blockY, GUILayout.MinWidth(30)); originalDirResetMode = (DirectionState.OriginalDirResetMode)CFGUI.EnumPopup(new GUIContent("Dir. Reset Mode", "Original Direction Reset Mode - choose when original stick direction will be reset. This option is used mainly by the Direction Binding..."), originalDirResetMode, 120); // GUILayout.MinWidth(30)); if ((blockX != target.blockX) || (blockY != target.blockY) || (perAxisDeadzones != target.perAxisDeadzones) || (clampMode != target.clampMode) || (originalDirResetMode != target.originalDirResetMode) || (digitalDetectionMode != target.digitalDetectionMode) || (stickMode != target.stickMode) || (angularMagnet != target.angularMagnet)) { CFGUI.CreateUndo("Joy Config modification", this.undoObject); target.perAxisDeadzones = perAxisDeadzones; target.blockX = blockX; target.blockY = blockY; //target.circularClamp = circularClamp; target.clampMode = clampMode; target.stickMode = stickMode; target.originalDirResetMode = originalDirResetMode; target.angularMagnet = angularMagnet; target.digitalDetectionMode = digitalDetectionMode; CFGUI.EndUndo(this.undoObject); } }