mirror of
https://github.com/servo/servo.git
synced 2025-07-23 15:23:42 +01:00
Add PannerNode.setPosition(), setOrientation()
This commit is contained in:
parent
7daec55010
commit
18960b6c94
2 changed files with 20 additions and 5 deletions
|
@ -7,7 +7,7 @@ use dom::audioparam::AudioParam;
|
||||||
use dom::baseaudiocontext::BaseAudioContext;
|
use dom::baseaudiocontext::BaseAudioContext;
|
||||||
use dom::bindings::codegen::Bindings::AudioNodeBinding::{ChannelCountMode, ChannelInterpretation};
|
use dom::bindings::codegen::Bindings::AudioNodeBinding::{ChannelCountMode, ChannelInterpretation};
|
||||||
use dom::bindings::codegen::Bindings::AudioNodeBinding::AudioNodeOptions;
|
use dom::bindings::codegen::Bindings::AudioNodeBinding::AudioNodeOptions;
|
||||||
use dom::bindings::codegen::Bindings::AudioParamBinding::AutomationRate;
|
use dom::bindings::codegen::Bindings::AudioParamBinding::{AudioParamMethods, AutomationRate};
|
||||||
use dom::bindings::codegen::Bindings::PannerNodeBinding::{self, PannerNodeMethods, PannerOptions};
|
use dom::bindings::codegen::Bindings::PannerNodeBinding::{self, PannerNodeMethods, PannerOptions};
|
||||||
use dom::bindings::codegen::Bindings::PannerNodeBinding::{DistanceModelType, PanningModelType};
|
use dom::bindings::codegen::Bindings::PannerNodeBinding::{DistanceModelType, PanningModelType};
|
||||||
use dom::bindings::error::Fallible;
|
use dom::bindings::error::Fallible;
|
||||||
|
@ -17,9 +17,9 @@ use dom::bindings::reflector::reflect_dom_object;
|
||||||
use dom::bindings::root::{Dom, DomRoot};
|
use dom::bindings::root::{Dom, DomRoot};
|
||||||
use dom::window::Window;
|
use dom::window::Window;
|
||||||
use dom_struct::dom_struct;
|
use dom_struct::dom_struct;
|
||||||
|
use servo_media::audio::node::{AudioNodeInit, AudioNodeMessage};
|
||||||
use servo_media::audio::panner_node::{DistanceModel, PannerNodeOptions, PanningModel};
|
use servo_media::audio::panner_node::{DistanceModel, PannerNodeOptions, PanningModel};
|
||||||
use servo_media::audio::panner_node::PannerNodeMessage;
|
use servo_media::audio::panner_node::PannerNodeMessage;
|
||||||
use servo_media::audio::node::{AudioNodeInit, AudioNodeMessage};
|
|
||||||
use servo_media::audio::param::{ParamDir, ParamType};
|
use servo_media::audio::param::{ParamDir, ParamType};
|
||||||
use std::cell::Cell;
|
use std::cell::Cell;
|
||||||
use std::f32;
|
use std::f32;
|
||||||
|
@ -189,6 +189,7 @@ impl PannerNodeMethods for PannerNode {
|
||||||
fn OrientationZ(&self) -> DomRoot<AudioParam> {
|
fn OrientationZ(&self) -> DomRoot<AudioParam> {
|
||||||
DomRoot::from_ref(&self.orientation_z)
|
DomRoot::from_ref(&self.orientation_z)
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://webaudio.github.io/web-audio-api/#dom-pannernode-distancemodel
|
// https://webaudio.github.io/web-audio-api/#dom-pannernode-distancemodel
|
||||||
fn DistanceModel(&self) -> DistanceModelType {
|
fn DistanceModel(&self) -> DistanceModelType {
|
||||||
match self.distance_model.get() {
|
match self.distance_model.get() {
|
||||||
|
@ -276,6 +277,20 @@ impl PannerNodeMethods for PannerNode {
|
||||||
let msg = PannerNodeMessage::SetConeGain(self.cone_outer_gain.get());
|
let msg = PannerNodeMessage::SetConeGain(self.cone_outer_gain.get());
|
||||||
self.upcast::<AudioNode>().message(AudioNodeMessage::PannerNode(msg));
|
self.upcast::<AudioNode>().message(AudioNodeMessage::PannerNode(msg));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://webaudio.github.io/web-audio-api/#dom-pannernode-setposition
|
||||||
|
fn SetPosition(&self, x: Finite<f32>, y: Finite<f32>, z: Finite<f32>) {
|
||||||
|
self.position_x.SetValue(x);
|
||||||
|
self.position_y.SetValue(y);
|
||||||
|
self.position_z.SetValue(z);
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://webaudio.github.io/web-audio-api/#dom-pannernode-setorientation
|
||||||
|
fn SetOrientation(&self, x: Finite<f32>, y: Finite<f32>, z: Finite<f32>) {
|
||||||
|
self.orientation_x.SetValue(x);
|
||||||
|
self.orientation_y.SetValue(y);
|
||||||
|
self.orientation_z.SetValue(z);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> From<&'a PannerOptions> for PannerNodeOptions {
|
impl<'a> From<&'a PannerOptions> for PannerNodeOptions {
|
||||||
|
|
|
@ -51,6 +51,6 @@ interface PannerNode : AudioNode {
|
||||||
attribute double coneInnerAngle;
|
attribute double coneInnerAngle;
|
||||||
attribute double coneOuterAngle;
|
attribute double coneOuterAngle;
|
||||||
attribute double coneOuterGain;
|
attribute double coneOuterGain;
|
||||||
// void setPosition (float x, float y, float z);
|
void setPosition (float x, float y, float z);
|
||||||
// void setOrientation (float x, float y, float z);
|
void setOrientation (float x, float y, float z);
|
||||||
};
|
};
|
Loading…
Add table
Add a link
Reference in a new issue