OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 15 matching lines...) Expand all Loading... | |
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
27 */ | 27 */ |
28 | 28 |
29 #ifndef AudioListener_h | 29 #ifndef AudioListener_h |
30 #define AudioListener_h | 30 #define AudioListener_h |
31 | 31 |
32 #include "bindings/v8/ScriptWrappable.h" | 32 #include "bindings/v8/ScriptWrappable.h" |
33 #include "platform/geometry/FloatPoint3D.h" | 33 #include "platform/geometry/FloatPoint3D.h" |
34 #include "wtf/PassRefPtr.h" | 34 #include "wtf/PassRefPtr.h" |
35 #include "wtf/RefCounted.h" | 35 #include "wtf/RefCounted.h" |
36 #include "wtf/Vector.h" | |
36 | 37 |
37 namespace WebCore { | 38 namespace WebCore { |
38 | 39 |
40 class PannerNode; | |
41 | |
39 // AudioListener maintains the state of the listener in the audio scene as defin ed in the OpenAL specification. | 42 // AudioListener maintains the state of the listener in the audio scene as defin ed in the OpenAL specification. |
40 | 43 |
41 class AudioListener : public ScriptWrappable, public RefCounted<AudioListener> { | 44 class AudioListener : public ScriptWrappable, public RefCounted<AudioListener> { |
42 public: | 45 public: |
43 static PassRefPtr<AudioListener> create() | 46 static PassRefPtr<AudioListener> create() |
44 { | 47 { |
45 return adoptRef(new AudioListener()); | 48 return adoptRef(new AudioListener()); |
46 } | 49 } |
50 virtual ~AudioListener(); | |
KhNo
2014/04/14 11:23:30
This destructor was added for clear m_panners whic
| |
47 | 51 |
48 // Position | 52 // Position |
49 void setPosition(float x, float y, float z) { setPosition(FloatPoint3D(x, y, z)); } | 53 void setPosition(float x, float y, float z) { setPosition(FloatPoint3D(x, y, z)); } |
50 void setPosition(const FloatPoint3D &position) { m_position = position; } | |
KhNo
2014/04/14 11:23:30
Moved to private, no need to public.
| |
51 const FloatPoint3D& position() const { return m_position; } | 54 const FloatPoint3D& position() const { return m_position; } |
52 | 55 |
53 // Orientation | 56 // Orientation and Up-vector |
KhNo
2014/04/14 11:23:30
Orientation and up-vector should be categorized to
| |
54 void setOrientation(float x, float y, float z, float upX, float upY, float u pZ) | 57 void setOrientation(float x, float y, float z, float upX, float upY, float u pZ) |
55 { | 58 { |
56 setOrientation(FloatPoint3D(x, y, z)); | 59 setOrientation(FloatPoint3D(x, y, z)); |
57 setUpVector(FloatPoint3D(upX, upY, upZ)); | 60 setUpVector(FloatPoint3D(upX, upY, upZ)); |
58 } | 61 } |
59 void setOrientation(const FloatPoint3D &orientation) { m_orientation = orien tation; } | |
KhNo
2014/04/14 11:23:30
Moved to private, no need to public.
| |
60 const FloatPoint3D& orientation() const { return m_orientation; } | 62 const FloatPoint3D& orientation() const { return m_orientation; } |
61 | |
62 // Up-vector | |
KhNo
2014/04/14 11:23:30
Orientation and up-vector should be categorized to
| |
63 void setUpVector(const FloatPoint3D &upVector) { m_upVector = upVector; } | |
KhNo
2014/04/14 11:23:30
Moved to private, no need to public.
| |
64 const FloatPoint3D& upVector() const { return m_upVector; } | 63 const FloatPoint3D& upVector() const { return m_upVector; } |
65 | 64 |
66 // Velocity | 65 // Velocity |
67 void setVelocity(float x, float y, float z) { setVelocity(FloatPoint3D(x, y, z)); } | 66 void setVelocity(float x, float y, float z) { setVelocity(FloatPoint3D(x, y, z)); } |
68 void setVelocity(const FloatPoint3D &velocity) { m_velocity = velocity; } | |
KhNo
2014/04/14 11:23:30
Moved to private, no need to public.
| |
69 const FloatPoint3D& velocity() const { return m_velocity; } | 67 const FloatPoint3D& velocity() const { return m_velocity; } |
70 | 68 |
71 // Doppler factor | 69 // Doppler factor |
72 void setDopplerFactor(double dopplerFactor) { m_dopplerFactor = dopplerFacto r; } | 70 void setDopplerFactor(double); |
73 double dopplerFactor() const { return m_dopplerFactor; } | 71 double dopplerFactor() const { return m_dopplerFactor; } |
74 | 72 |
75 // Speed of sound | 73 // Speed of sound |
76 void setSpeedOfSound(double speedOfSound) { m_speedOfSound = speedOfSound; } | 74 void setSpeedOfSound(double); |
77 double speedOfSound() const { return m_speedOfSound; } | 75 double speedOfSound() const { return m_speedOfSound; } |
78 | 76 |
77 // Provide for pannerNodes. | |
78 Mutex& listenerLock() { return m_listenerLock; } | |
KhNo
2014/04/14 11:23:30
listener lock will be used for pannerNode's proces
| |
79 void addPanner(PannerNode*); | |
80 void removePanner(PannerNode*); | |
81 | |
79 private: | 82 private: |
80 AudioListener(); | 83 AudioListener(); |
81 | 84 |
82 // Position / Orientation | 85 void setPosition(const FloatPoint3D&); |
86 void setOrientation(const FloatPoint3D&); | |
87 void setUpVector(const FloatPoint3D&); | |
88 void setVelocity(const FloatPoint3D&); | |
89 | |
90 void updatePannersDirty(unsigned); | |
KhNo
2014/04/14 11:23:30
Common private method for change dirties of all pa
| |
91 | |
83 FloatPoint3D m_position; | 92 FloatPoint3D m_position; |
84 FloatPoint3D m_orientation; | 93 FloatPoint3D m_orientation; |
85 FloatPoint3D m_upVector; | 94 FloatPoint3D m_upVector; |
86 | |
KhNo
2014/04/14 11:23:30
blank is not necessary for categorization.
| |
87 FloatPoint3D m_velocity; | 95 FloatPoint3D m_velocity; |
88 | |
KhNo
2014/04/14 11:23:30
blank is not necessary for categorization.
| |
89 double m_dopplerFactor; | 96 double m_dopplerFactor; |
90 double m_speedOfSound; | 97 double m_speedOfSound; |
98 | |
99 // Synchronize a panner's process() with setting of the state of the listene r. | |
100 mutable Mutex m_listenerLock; | |
101 | |
102 // List for pannerNodes in context. | |
103 typedef Vector<PannerNode*> PannerList; | |
104 PannerList m_panners; | |
KhNo
2014/04/14 11:23:30
audio listener should have all pannernode's instan
| |
91 }; | 105 }; |
92 | 106 |
93 } // WebCore | 107 } // WebCore |
94 | 108 |
95 #endif // AudioListener_h | 109 #endif // AudioListener_h |
OLD | NEW |