diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2022-04-27 10:14:42 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-27 10:14:42 +0200 |
commit | b3f4a81a9e1b3fd82940b89ff0b4ecf5ec31507b (patch) | |
tree | c69af10d2b16e663ec191cd53cb8fb393116962b /modules | |
parent | 8dfa12cae729258155fbad51ed41f1bb3ad1006a (diff) | |
parent | 925e8c8f3ea915470484f096847ec4abd9cc6839 (diff) |
Merge pull request #60385 from timothyqiu/openxr-set-array
Diffstat (limited to 'modules')
-rw-r--r-- | modules/openxr/action_map/openxr_action_map.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/modules/openxr/action_map/openxr_action_map.cpp b/modules/openxr/action_map/openxr_action_map.cpp index 2ba33419d7..366e131369 100644 --- a/modules/openxr/action_map/openxr_action_map.cpp +++ b/modules/openxr/action_map/openxr_action_map.cpp @@ -55,7 +55,14 @@ void OpenXRActionMap::_bind_methods() { } void OpenXRActionMap::set_action_sets(Array p_action_sets) { - action_sets = p_action_sets; + action_sets.clear(); + + for (int i = 0; i < p_action_sets.size(); i++) { + Ref<OpenXRActionSet> action_set = p_action_sets[i]; + if (action_set.is_valid() && action_sets.find(action_set) == -1) { + action_sets.push_back(action_set); + } + } } Array OpenXRActionMap::get_action_sets() const { @@ -99,7 +106,14 @@ void OpenXRActionMap::remove_action_set(Ref<OpenXRActionSet> p_action_set) { } void OpenXRActionMap::set_interaction_profiles(Array p_interaction_profiles) { - interaction_profiles = p_interaction_profiles; + interaction_profiles.clear(); + + for (int i = 0; i < p_interaction_profiles.size(); i++) { + Ref<OpenXRInteractionProfile> interaction_profile = p_interaction_profiles[i]; + if (interaction_profile.is_valid() && interaction_profiles.find(interaction_profile) == -1) { + interaction_profiles.push_back(interaction_profile); + } + } } Array OpenXRActionMap::get_interaction_profiles() const { |