1
/* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
2
*******************************************************************************
4
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6
* Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011.
8
* All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
10
* The copyright notice above does not evidence any actual of intended
11
* publication of such source code, and is an unpublished work by create3000.
12
* This material contains CONFIDENTIAL INFORMATION that is the property of
15
* No permission is granted to copy, distribute, or create derivative works from
16
* the contents of this software, in whole or in part, without the prior written
17
* permission of create3000.
19
* NON-MILITARY USE ONLY
21
* All create3000 software are effectively free software with a non-military use
22
* restriction. It is free. Well commented source is provided. You may reuse the
23
* source in any way you please with the exception anything that uses it must be
24
* marked to indicate is contains 'non-military use only' components.
26
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
28
* Copyright 2015, 2016 Holger Seelig <holger.seelig@yahoo.de>.
30
* This file is part of the Cobweb Project.
32
* Cobweb is free software: you can redistribute it and/or modify it under the
33
* terms of the GNU General Public License version 3 only, as published by the
34
* Free Software Foundation.
36
* Cobweb is distributed in the hope that it will be useful, but WITHOUT ANY
37
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
38
* A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
39
* details (a copy is included in the LICENSE file that accompanied this code).
41
* You should have received a copy of the GNU General Public License version 3
42
* along with Cobweb. If not, see <http://www.gnu.org/licenses/gpl.html> for a
43
* copy of the GPLv3 License.
45
* For Silvio, Joy and Adi.
47
******************************************************************************/
52
"cobweb/Components/Core/X3DChildNode",
53
"cobweb/Components/Time/X3DTimeDependentNode",
54
"cobweb/Bits/X3DConstants",
63
function X3DSoundSourceNode (executionContext)
65
X3DChildNode .call (this, executionContext);
66
X3DTimeDependentNode .call (this, executionContext);
68
this .addType (X3DConstants .X3DSoundSourceNode);
74
X3DSoundSourceNode .prototype = $.extend (Object .create (X3DChildNode .prototype),
75
X3DTimeDependentNode .prototype,
77
constructor: X3DSoundSourceNode,
78
initialize: function ()
80
X3DChildNode .prototype .initialize .call (this);
81
X3DTimeDependentNode .prototype .initialize .call (this);
84
set_browser_live__: function ()
86
X3DTimeDependentNode .prototype .set_browser_live__ .call (this);
88
if (this .getDisabled ())
90
this .getBrowser () .volume_ .removeInterest ("set_volume__", this);
91
this .getBrowser () .mute_ .removeInterest ("set_volume__", this);
95
this .getBrowser () .volume_ .addInterest ("set_volume__", this);
96
this .getBrowser () .mute_ .addInterest ("set_volume__", this);
97
this .set_volume__ ();
100
setMedia: function (value)
104
this .media [0] .volume = 0;
105
this .media [0] .pause ();
106
this .media .unbind ("ended");
113
var media = value [0];
116
this .duration_changed_ = media .duration;
118
//this .set_loop__ ();
120
if (this .enabled_ .getValue ())
122
if (this .isActive_ .getValue ())
124
if (this .loop_ .getValue ())
125
media .currentTime = this .getElapsedTime () % media .duration;
127
media .currentTime = this .getElapsedTime ();
129
if (! this .isPaused_ .getValue ())
131
if (this .speed_ .getValue ())
138
getMedia: function ()
142
setVolume: function (volume)
144
this .volume = volume;
146
this .set_volume__ ();
148
set_volume__: function ()
151
this .media [0] .volume = (! this .getBrowser () .mute_ .getValue ()) * this .getBrowser () .volume_ .getValue () * this .volume;
153
set_speed: function ()
155
set_pitch: function ()
157
set_start: function ()
161
if (this .speed_ .getValue ())
163
this .media [0] .currentTime = 0;
164
this .media [0] .play ();
168
set_pause: function ()
172
this .media .unbind ("ended");
173
this .media [0] .pause ();
176
set_resume: function ()
180
if (this .speed_ .getValue ())
181
this .media [0] .play ();
184
set_stop: function ()
188
this .media .unbind ("ended");
189
this .media [0] .pause ();
192
set_ended: function ()
196
var media = this .media [0];
198
if (media .currentTime < media .duration)
201
if (this .loop_ .getValue ())
203
if (this .speed_ .getValue ())
206
// The event order below is very important.
208
this .elapsedTime_ = this .getElapsedTime ();
209
this .cycleTime_ = this .getBrowser () .getCurrentTime ();
215
prepareEvents: function ()
219
this .elapsedTime_ = this .getElapsedTime ();
223
return X3DSoundSourceNode;