Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/audaspace/include/fx/DynamicMusic.h')
-rw-r--r--extern/audaspace/include/fx/DynamicMusic.h235
1 files changed, 0 insertions, 235 deletions
diff --git a/extern/audaspace/include/fx/DynamicMusic.h b/extern/audaspace/include/fx/DynamicMusic.h
deleted file mode 100644
index 5d59f77401a..00000000000
--- a/extern/audaspace/include/fx/DynamicMusic.h
+++ /dev/null
@@ -1,235 +0,0 @@
-/*******************************************************************************
-* Copyright 2015-2016 Juan Francisco Crespo Galán
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-******************************************************************************/
-
-#pragma once
-
-/**
-* @file DynamicMusic.h
-* @ingroup fx
-* The DynamicMusic class.
-*/
-
-#include "devices/IHandle.h"
-#include "devices/IDevice.h"
-#include "ISound.h"
-
-#include <memory>
-#include <vector>
-#include <thread>
-#include <atomic>
-#include <condition_variable>
-#include <mutex>
-
-AUD_NAMESPACE_BEGIN
-
-/**
-* This class allows to play music depending on a current "scene", scene changes are managed by the class.
-* The default scene is silent and has id 0.
-*/
-class AUD_API DynamicMusic
-{
-private:
- /**
- * Matrix of pointers which will store the sounds of the scenes and the transitions between them.
- */
- std::vector<std::vector<std::shared_ptr<ISound>>> m_scenes;
-
- /**
- * Id of the current scene.
- */
- std::atomic_int m_id;
-
- /**
- * Length of the crossfade transition in seconds, used when no custom transition has been set.
- */
- float m_fadeTime;
-
- /**
- * Handle to the playback of the current scene.
- */
- std::shared_ptr<IHandle> m_currentHandle;
-
- /**
- * Handle used during transitions.
- */
- std::shared_ptr<IHandle> m_transitionHandle;
-
- /**
- * Device used for playback.
- */
- std::shared_ptr<IDevice> m_device;
-
- /**
- * Flag that is true when a transition is happening.
- */
- std::atomic_bool m_transitioning;
-
- /**
- * Flag that is true when the music is paused.
- */
- std::atomic_bool m_stopThread;
-
- /**
- * Id of the sound that will play with the next transition.
- */
- std::atomic_int m_soundTarget;
-
- /**
- * Volume of the scenes.
- */
- float m_volume;
-
- /**
- * A thread that manages the crossfade transition.
- */
- std::thread m_fadeThread;
-
- // delete copy constructor and operator=
- DynamicMusic(const DynamicMusic&) = delete;
- DynamicMusic& operator=(const DynamicMusic&) = delete;
-
-public:
- /**
- * Creates a new dynamic music manager with the default silent scene (id: 0).
- * \param device The device that will be used to play sounds.
- */
- DynamicMusic(std::shared_ptr<IDevice> device);
-
- virtual ~DynamicMusic();
-
- /**
- * Adds a new scene to the manager.
- * \param sound The sound that will play when the scene is selected with the changeScene().
- * \return The identifier of the new scene.
- */
- int addScene(std::shared_ptr<ISound> sound);
-
- /**
- * Changes to another scene.
- * \param id The id of the scene which should start playing the changeScene method.
- * \return
- * - true if the change has been scheduled succesfully.
- * - false if there already is a transition in course or the scene selected doesnt exist.
- */
- bool changeScene(int id);
-
- /**
- * Retrieves the scene currently selected.
- * \return The identifier of the current scene.
- */
- int getScene();
-
- /**
- * Adds a new transition between scenes
- * \param init The id of the initial scene that will allow the transition to play.
- * \param end The id if the target scene for the transition.
- * \param sound The sound that will play when the scene changes from init to end.
- * \return false if the init or end scenes don't exist.
- */
- bool addTransition(int init, int end, std::shared_ptr<ISound> sound);
-
- /**
- * Sets the length of the crossfade transition (default 1 second).
- * \param seconds The time in seconds.
- */
- void setFadeTime(float seconds);
-
- /**
- * Gets the length of the crossfade transition (default 1 second).
- * \return The length of the cressfade transition in seconds.
- */
- float getFadeTime();
-
- /**
- * Resumes a paused sound.
- * \return
- * - true if the sound has been resumed.
- * - false if the sound isn't paused or the handle is invalid.
- */
- bool resume();
-
- /**
- * Pauses the current played back sound.
- * \return
- * - true if the sound has been paused.
- * - false if the sound isn't playing back or the handle is invalid.
- */
- bool pause();
-
- /**
- * Seeks in the current played back sound.
- * \param position The new position from where to play back, in seconds.
- * \return
- * - true if the handle is valid.
- * - false if the handle is invalid.
- * \warning Whether the seek works or not depends on the sound source.
- */
- bool seek(float position);
-
- /**
- * Retrieves the current playback position of a sound.
- * \return The playback position in seconds, or 0.0 if the handle is
- * invalid.
- */
- float getPosition();
-
- /**
- * Retrieves the volume of the scenes.
- * \return The volume.
- */
- float getVolume();
-
- /**
- * Sets the volume for the scenes.
- * \param volume The volume.
- * \return
- * - true if the handle is valid.
- * - false if the handle is invalid.
- */
- bool setVolume(float volume);
-
- /**
- * Returns the status of the current played back sound.
- * \return
- * - STATUS_INVALID if the sound has stopped or the handle is
- *. invalid
- * - STATUS_PLAYING if the sound is currently played back.
- * - STATUS_PAUSED if the sound is currently paused.
- * - STATUS_STOPPED if the sound finished playing and is still
- * kept in the device.
- * \see Status
- */
- Status getStatus();
-
- /**
- * Stops any played back or paused sound and sets the dynamic music player to default silent state (scene 0)
- * \return
- * - true if the sound has been stopped.
- * - false if the handle is invalid.
- */
- bool stop();
-
- private:
- //Callbacks used to schedule transitions after a sound ends.
- static void transitionCallback(void* player);
- static void sceneCallback(void* player);
- //These functions can fade sounds in and out if used with a thread.
- void crossfadeThread();
- void fadeInThread();
- void fadeOutThread();
-};
-
-AUD_NAMESPACE_END