mirror of
https://github.com/servo/servo.git
synced 2025-06-13 19:04:30 +00:00
Add blank FakeXRInputController interface
This commit is contained in:
parent
9ecb13d83f
commit
bf30bf26a4
4 changed files with 98 additions and 1 deletions
|
@ -534,7 +534,8 @@ unsafe_no_jsmanaged_fields!(
|
||||||
webxr_api::Registry,
|
webxr_api::Registry,
|
||||||
webxr_api::Session,
|
webxr_api::Session,
|
||||||
webxr_api::Frame,
|
webxr_api::Frame,
|
||||||
webxr_api::InputSource
|
webxr_api::InputSource,
|
||||||
|
webxr_api::InputId
|
||||||
);
|
);
|
||||||
unsafe_no_jsmanaged_fields!(ScriptToConstellationChan);
|
unsafe_no_jsmanaged_fields!(ScriptToConstellationChan);
|
||||||
unsafe_no_jsmanaged_fields!(InteractiveMetrics);
|
unsafe_no_jsmanaged_fields!(InteractiveMetrics);
|
||||||
|
|
42
components/script/dom/fakexrinputcontroller.rs
Normal file
42
components/script/dom/fakexrinputcontroller.rs
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
use crate::dom::bindings::codegen::Bindings::FakeXRInputControllerBinding::{self};
|
||||||
|
use crate::dom::bindings::reflector::{reflect_dom_object, Reflector};
|
||||||
|
use crate::dom::bindings::root::DomRoot;
|
||||||
|
use crate::dom::globalscope::GlobalScope;
|
||||||
|
use dom_struct::dom_struct;
|
||||||
|
use ipc_channel::ipc::IpcSender;
|
||||||
|
use webxr_api::{InputId, MockDeviceMsg};
|
||||||
|
|
||||||
|
#[dom_struct]
|
||||||
|
pub struct FakeXRInputController {
|
||||||
|
reflector: Reflector,
|
||||||
|
#[ignore_malloc_size_of = "defined in ipc-channel"]
|
||||||
|
sender: IpcSender<MockDeviceMsg>,
|
||||||
|
#[ignore_malloc_size_of = "defined in webxr-api"]
|
||||||
|
id: InputId,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl FakeXRInputController {
|
||||||
|
pub fn new_inherited(sender: IpcSender<MockDeviceMsg>, id: InputId) -> FakeXRInputController {
|
||||||
|
FakeXRInputController {
|
||||||
|
reflector: Reflector::new(),
|
||||||
|
sender,
|
||||||
|
id,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn new(
|
||||||
|
global: &GlobalScope,
|
||||||
|
sender: IpcSender<MockDeviceMsg>,
|
||||||
|
id: InputId,
|
||||||
|
) -> DomRoot<FakeXRInputController> {
|
||||||
|
reflect_dom_object(
|
||||||
|
Box::new(FakeXRInputController::new_inherited(sender, id)),
|
||||||
|
global,
|
||||||
|
FakeXRInputControllerBinding::Wrap,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
|
@ -301,6 +301,7 @@ pub mod eventtarget;
|
||||||
pub mod extendableevent;
|
pub mod extendableevent;
|
||||||
pub mod extendablemessageevent;
|
pub mod extendablemessageevent;
|
||||||
pub mod fakexrdevice;
|
pub mod fakexrdevice;
|
||||||
|
pub mod fakexrinputcontroller;
|
||||||
pub mod file;
|
pub mod file;
|
||||||
pub mod filelist;
|
pub mod filelist;
|
||||||
pub mod filereader;
|
pub mod filereader;
|
||||||
|
|
53
components/script/dom/webidls/FakeXRInputController.webidl
Normal file
53
components/script/dom/webidls/FakeXRInputController.webidl
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
// https://immersive-web.github.io/webxr-test-api/#fakexrinputcontroller
|
||||||
|
|
||||||
|
[Exposed=Window, Pref="dom.webxr.test"]
|
||||||
|
interface FakeXRInputController {
|
||||||
|
// void setHandedness(XRHandedness handedness);
|
||||||
|
// void setTargetRayMode(XRTargetRayMode targetRayMode);
|
||||||
|
// void setProfiles(sequence<DOMString> profiles);
|
||||||
|
// void setGripOrigin(FakeXRRigidTransformInit gripOrigin, optional boolean emulatedPosition = false);
|
||||||
|
// void clearGripOrigin();
|
||||||
|
// void setPointerOrigin(FakeXRRigidTransformInit pointerOrigin, optional boolean emulatedPosition = false);
|
||||||
|
|
||||||
|
// void disconnect();
|
||||||
|
// void reconnect();
|
||||||
|
|
||||||
|
// void startSelection();
|
||||||
|
// void endSelection();
|
||||||
|
// void simulateSelect();
|
||||||
|
|
||||||
|
// void setSupportedButtons(sequence<FakeXRButtonStateInit> supportedButtons);
|
||||||
|
// void updateButtonState(FakeXRButtonStateInit buttonState);
|
||||||
|
};
|
||||||
|
|
||||||
|
dictionary FakeXRInputSourceInit {
|
||||||
|
required XRHandedness handedness;
|
||||||
|
required XRTargetRayMode targetRayMode;
|
||||||
|
required FakeXRRigidTransformInit pointerOrigin;
|
||||||
|
required sequence<DOMString> profiles;
|
||||||
|
boolean selectionStarted = false;
|
||||||
|
boolean selectionClicked = false;
|
||||||
|
sequence<FakeXRButtonStateInit> supportedButtons;
|
||||||
|
FakeXRRigidTransformInit gripOrigin;
|
||||||
|
};
|
||||||
|
|
||||||
|
enum FakeXRButtonType {
|
||||||
|
"grip",
|
||||||
|
"touchpad",
|
||||||
|
"thumbstick",
|
||||||
|
"optional-button",
|
||||||
|
"optional-thumbstick"
|
||||||
|
};
|
||||||
|
|
||||||
|
dictionary FakeXRButtonStateInit {
|
||||||
|
required FakeXRButtonType buttonType;
|
||||||
|
required boolean pressed;
|
||||||
|
required boolean touched;
|
||||||
|
required float pressedValue;
|
||||||
|
float xValue = 0.0;
|
||||||
|
float yValue = 0.0;
|
||||||
|
};
|
Loading…
Add table
Add a link
Reference in a new issue