Skip to content

Commit 4763909

Browse files
authored
fix: added double click setting, opt in by default (#8179)
* Added double tap setting, opt in by default * Added feature flag --double-click-walk
1 parent 32283de commit 4763909

10 files changed

Lines changed: 65 additions & 1 deletion

File tree

Explorer/Assets/DCL/Character/CharacterMotion/Systems/UpdatePointAndClickInputSystem.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using DCL.CharacterMotion.Utils;
99
using DCL.Diagnostics;
1010
using DCL.Input;
11+
using DCL.Prefs;
1112
using ECS.Abstract;
1213
using ECS.LifeCycle.Components;
1314
using System.Collections.Generic;
@@ -125,6 +126,9 @@ private bool TryResolveDoubleClick(Camera cam, float maxDistance, out Vector3 ta
125126
if (!navigateToAction.WasPerformedThisFrame())
126127
return false;
127128

129+
if (!DCLPlayerPrefs.GetBool(DCLPrefKeys.SETTINGS_DOUBLE_TAP_TO_MOVE, false))
130+
return false;
131+
128132
var mouse = Mouse.current;
129133

130134
if (mouse == null)

Explorer/Assets/DCL/FeatureFlags/FeatureFlagsStrings.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ public static class FeatureFlagsStrings
7373
public const string REPORT_USER = "alfa-report-user";
7474
public const string POINT_AT = "alfa-point-at";
7575
public const string AVATAR_CONTEXT_MENU = "alfa-avatar-context-menu";
76+
public const string DOUBLE_CLICK_WALK = "alfa-double-click-walk";
7677

7778
public static class Endpoints
7879
{

Explorer/Assets/DCL/FeatureFlags/FeaturesRegistry.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ public FeaturesRegistry(
5454
[FeatureId.REPORT_USER] = appArgs.ResolveFeatureFlagArg(AppArgsFlags.REPORT_USER, featureFlags.IsEnabled(FeatureFlagsStrings.REPORT_USER) || Application.isEditor),
5555
[FeatureId.POINT_AT] = appArgs.ResolveFeatureFlagArg(AppArgsFlags.POINT_AT, featureFlags.IsEnabled(FeatureFlagsStrings.POINT_AT) || Application.isEditor),
5656
[FeatureId.AVATAR_CONTEXT_MENU] = appArgs.ResolveFeatureFlagArg(AppArgsFlags.AVATAR_CONTEXT_MENU, featureFlags.IsEnabled(FeatureFlagsStrings.AVATAR_CONTEXT_MENU) || Application.isEditor),
57+
[FeatureId.DOUBLE_CLICK_WALK] = appArgs.ResolveFeatureFlagArg(AppArgsFlags.DOUBLE_CLICK_WALK, featureFlags.IsEnabled(FeatureFlagsStrings.DOUBLE_CLICK_WALK) || Application.isEditor),
5758
// Note: COMMUNITIES feature is not cached here because it depends on user identity
5859
});
5960

@@ -172,5 +173,6 @@ public enum FeatureId
172173
REPORT_USER,
173174
POINT_AT,
174175
AVATAR_CONTEXT_MENU,
176+
DOUBLE_CLICK_WALK,
175177
}
176178
}

Explorer/Assets/DCL/Infrastructure/Global/AppArgs/AppArgsFlags.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ public static class AppArgsFlags
9494
public const string REPORT_USER = "report-user";
9595

9696
public const string AVATAR_CONTEXT_MENU = "avatar-context-menu";
97+
public const string DOUBLE_CLICK_WALK = "double-click-walk";
9798

9899
public static class Multiplayer
99100
{

Explorer/Assets/DCL/PluginSystem/Global/CharacterMotionPlugin.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,8 @@ public void InjectToWorld(ref ArchSystemsWorldBuilder<Arch.Core.World> builder,
121121
new HandPointAtComponent(),
122122
new TorsoIKComponent());
123123

124-
UpdatePointAndClickInputSystem.InjectToWorld(ref builder, destinationMarkerPrefab);
124+
if (FeaturesRegistry.Instance.IsEnabled(FeatureId.DOUBLE_CLICK_WALK))
125+
UpdatePointAndClickInputSystem.InjectToWorld(ref builder, destinationMarkerPrefab);
125126
InterpolateCharacterSystem.InjectToWorld(ref builder, scenesCache);
126127
TeleportPositionCalculationSystem.InjectToWorld(ref builder, landscape);
127128
TeleportCharacterSystem.InjectToWorld(ref builder, sceneReadinessReportQueue);

Explorer/Assets/DCL/Prefs/DCLPrefKeys.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ public static class DCLPrefKeys
9393

9494
public const string SETTINGS_HEAD_SYNC_ENABLED = "Settings_HeadSync";
9595

96+
public const string SETTINGS_DOUBLE_TAP_TO_MOVE = "Settings_DoubleTapToMove";
97+
9698
public const string RECENTLY_VISITED_PLACES = "Recently_Visited_Places";
9799

98100
public const string SKYBOX_FIXED_TIME = "Skybox_FixedTime";

Explorer/Assets/DCL/Settings/Configuration/SettingsMenuConfiguration.asset

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ MonoBehaviour:
9292
- rid: 3126482891795070976
9393
- rid: 3126482891795070977
9494
- rid: 5190442991532376251
95+
- rid: 3126482891795070978
9596
- <GroupTitle>k__BackingField: Point At
9697
<FeatureFlagName>k__BackingField: 0
9798
<FeatureId>k__BackingField: 53
@@ -735,3 +736,19 @@ MonoBehaviour:
735736
<IsEnabled>k__BackingField: 1
736737
defaultIsOn: 0
737738
<Feature>k__BackingField: 10
739+
- rid: 3126482891795070978
740+
type: {class: ToggleModuleBinding, ns: DCL.Settings.Configuration, asm: Settings}
741+
data:
742+
<FeatureId>k__BackingField: 0
743+
<View>k__BackingField:
744+
m_AssetGUID: 39458b71e0ed84549b1b280c4fb1f105
745+
m_SubObjectName:
746+
m_SubObjectType:
747+
m_SubObjectGUID:
748+
m_EditorAssetChanged: 0
749+
<Config>k__BackingField:
750+
<ModuleName>k__BackingField: Double tap to move
751+
<Description>k__BackingField: Double-click on any surface to walk there automatically.
752+
<IsEnabled>k__BackingField: 1
753+
defaultIsOn: 0
754+
<Feature>k__BackingField: 11

Explorer/Assets/DCL/Settings/Configuration/ToggleModuleBinding.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public enum ToggleFeatures
3939
SCENE_SHADOWS_FEATURE,
4040
SCENE_LIGHTS_FEATURE,
4141
FULLSCREEN_FEATURE,
42+
DOUBLE_TAP_TO_MOVE,
4243
// add other features...
4344
}
4445

@@ -80,6 +81,7 @@ public override async UniTask<SettingsFeatureController> CreateModuleAsync(
8081
ToggleFeatures.SCENE_SHADOWS_FEATURE => CreateSimpleToggle(viewInstance, qualitySettingsController, qualitySettingsController.SetSceneLightShadows, x => x.SceneLightShadows),
8182
ToggleFeatures.SCENE_LIGHTS_FEATURE => CreateSimpleToggle(viewInstance, qualitySettingsController, qualitySettingsController.SetSceneLights, x => x.SceneLights),
8283
ToggleFeatures.FULLSCREEN_FEATURE => new FullscreenSettingsController(viewInstance),
84+
ToggleFeatures.DOUBLE_TAP_TO_MOVE => new DoubleTapToMoveSettingsController(viewInstance),
8385
// add other cases...
8486
_ => throw new ArgumentOutOfRangeException(nameof(viewInstance))
8587
};
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using DCL.FeatureFlags;
2+
using DCL.Prefs;
3+
using DCL.Settings.ModuleViews;
4+
5+
namespace DCL.Settings.ModuleControllers
6+
{
7+
public class DoubleTapToMoveSettingsController : SettingsFeatureController
8+
{
9+
private readonly SettingsToggleModuleView view;
10+
11+
public DoubleTapToMoveSettingsController(SettingsToggleModuleView view)
12+
{
13+
this.view = view;
14+
15+
if (!FeaturesRegistry.Instance.IsEnabled(FeatureId.DOUBLE_CLICK_WALK))
16+
{
17+
view.SetActive(false);
18+
return;
19+
}
20+
21+
bool value = DCLPlayerPrefs.GetBool(DCLPrefKeys.SETTINGS_DOUBLE_TAP_TO_MOVE, false);
22+
view.ToggleView.Toggle.SetIsOnWithoutNotify(value);
23+
view.ToggleView.Toggle.onValueChanged.AddListener(OnToggleValueChanged);
24+
}
25+
26+
public override void Dispose() =>
27+
view.ToggleView.Toggle.onValueChanged.RemoveAllListeners();
28+
29+
private static void OnToggleValueChanged(bool isOn) =>
30+
DCLPlayerPrefs.SetBool(DCLPrefKeys.SETTINGS_DOUBLE_TAP_TO_MOVE, isOn, true);
31+
}
32+
}

Explorer/Assets/DCL/Settings/ModuleControllers/DoubleTapToMoveSettingsController.cs.meta

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)