// Copyright (c) 2020-2024, The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/XR_EXT_samsung_odyssey_controller.adoc[]

*Last Modified Date*::
    2020-06-08

*IP Status*::
    No known IP claims.

*Contributors*::
    Lachlan Ford, Microsoft +
    Alex Turner, Microsoft +
    Yin Li, Microsoft +
    Philippe Harscoet, Samsung Electronics +

*Overview*

This extension enables the application to differentiate the newer form
factor of motion controller released with the Samsung Odyssey headset.
It enables the application to customize the appearance and experience of the
controller differently from the original
<<_microsoft_mixed_reality_motion_controller_profile, mixed reality motion
controller>>.

This extension added a new interaction profile
pathname:/interaction_profiles/samsung/odyssey_controller to describe the
Odyssey controller.
The action bindings of this interaction profile work exactly the same as the
<<_microsoft_mixed_reality_motion_controller_profile,
pathname:/interaction_profiles/microsoft/motion_controller>> in terms of
valid user paths and supported input and output component paths.

// This extension does not meet the current style guide requirements:
// the path name must be vendor-suffixed in new extensions.
:legacy-path: /interaction_profiles/samsung/odyssey_controller
:properly-suffixed-path: /interaction_profiles/samsung/odyssey_controller_samsung
include::{config}/interaction_profile_missing_suffix_warning.adoc[]

If the application does not do its own custom rendering for specific motion
controllers, it should: avoid using this extension and instead just use
subpathname:/microsoft/motion_controller, as runtimes should: treat both
controllers equally when applications declare action bindings only for that
profile.

If the application wants to customize rendering for specific motion
controllers, it should: setup the suggested bindings for
subpathname:/samsung/odyssey_controller the same as
subpathname:/microsoft/motion_controller when calling
flink:xrSuggestInteractionProfileBindings, and expect the same action
bindings.
Then the application can: listen to the
slink:XrEventDataInteractionProfileChanged event and inspect the returned
interaction profile from flink:xrGetCurrentInteractionProfile to
differentiate which controller is being used by the user, and hence
customize the appearance or experience of the motion controller specifically
for the form factor of subpathname:/samsung/odyssey_controller.

*Version History*

* Revision 1, 2020-06-08 (Yin Li)
** Initial extension proposal
