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/sequence/SequenceEntry.h')
-rw-r--r--extern/audaspace/include/sequence/SequenceEntry.h315
1 files changed, 315 insertions, 0 deletions
diff --git a/extern/audaspace/include/sequence/SequenceEntry.h b/extern/audaspace/include/sequence/SequenceEntry.h
new file mode 100644
index 00000000000..98f15faf7ff
--- /dev/null
+++ b/extern/audaspace/include/sequence/SequenceEntry.h
@@ -0,0 +1,315 @@
+/*******************************************************************************
+ * Copyright 2009-2016 Jörg Müller
+ *
+ * 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 SequenceEntry.h
+ * @ingroup sequence
+ * The SequenceEntry class.
+ */
+
+#include "sequence/AnimateableProperty.h"
+#include "util/ILockable.h"
+
+#include <mutex>
+#include <memory>
+
+AUD_NAMESPACE_BEGIN
+
+class ISound;
+
+/**
+ * This class represents a sequenced entry in a sequencer sound.
+ */
+class AUD_API SequenceEntry : public ILockable
+{
+ friend class SequenceHandle;
+private:
+ /// The status of the entry. Changes every time a non-animated parameter changes.
+ int m_status;
+
+ /// The positional status of the entry. Changes every time the entry is moved.
+ int m_pos_status;
+
+ /// The sound status, changed when the sound is changed.
+ int m_sound_status;
+
+ /// The unique (regarding the sound) ID of the entry.
+ int m_id;
+
+ /// The sound this entry plays.
+ std::shared_ptr<ISound> m_sound;
+
+ /// The begin time.
+ float m_begin;
+
+ /// The end time.
+ float m_end;
+
+ /// How many seconds are skipped at the beginning.
+ float m_skip;
+
+ /// Whether the entry is muted.
+ bool m_muted;
+
+ /// Whether the position to the listener is relative or absolute
+ bool m_relative;
+
+ /// Maximum volume.
+ float m_volume_max;
+
+ /// Minimum volume.
+ float m_volume_min;
+
+ /// Maximum distance.
+ float m_distance_max;
+
+ /// Reference distance;
+ float m_distance_reference;
+
+ /// Attenuation
+ float m_attenuation;
+
+ /// Cone outer angle.
+ float m_cone_angle_outer;
+
+ /// Cone inner angle.
+ float m_cone_angle_inner;
+
+ /// Cone outer volume.
+ float m_cone_volume_outer;
+
+ /// The mutex for locking.
+ std::recursive_mutex m_mutex;
+
+ /// The animated volume.
+ AnimateableProperty m_volume;
+
+ /// The animated panning.
+ AnimateableProperty m_panning;
+
+ /// The animated pitch.
+ AnimateableProperty m_pitch;
+
+ /// The animated location.
+ AnimateableProperty m_location;
+
+ /// The animated orientation.
+ AnimateableProperty m_orientation;
+
+ // delete copy constructor and operator=
+ SequenceEntry(const SequenceEntry&) = delete;
+ SequenceEntry& operator=(const SequenceEntry&) = delete;
+
+public:
+ /**
+ * Creates a new sequenced entry.
+ * \param sound The sound this entry should play.
+ * \param begin The start time.
+ * \param end The end time or a negative value if determined by the sound.
+ * \param skip How much seconds should be skipped at the beginning.
+ * \param id The ID of the entry.
+ */
+ SequenceEntry(std::shared_ptr<ISound> sound, float begin, float end, float skip, int id);
+ virtual ~SequenceEntry();
+
+ /**
+ * Locks the entry.
+ */
+ virtual void lock();
+
+ /**
+ * Unlocks the previously locked entry.
+ */
+ virtual void unlock();
+
+ /**
+ * Retrieves the sound of the entry.
+ * \return The sound.
+ */
+ std::shared_ptr<ISound> getSound();
+
+ /**
+ * Sets the sound of the entry.
+ * \param sound The new sound.
+ */
+ void setSound(std::shared_ptr<ISound> sound);
+
+ /**
+ * Moves the entry.
+ * \param begin The new start time.
+ * \param end The new end time or a negative value if unknown.
+ * \param skip How many seconds to skip at the beginning.
+ */
+ void move(float begin, float end, float skip);
+
+ /**
+ * Retrieves the muting state of the entry.
+ * \return Whether the entry should is muted or not.
+ */
+ bool isMuted();
+
+ /**
+ * Sets the muting state of the entry.
+ * \param mute Whether the entry should be muted or not.
+ */
+ void mute(bool mute);
+
+ /**
+ * Retrieves the ID of the entry.
+ * \return The ID of the entry.
+ */
+ int getID() const;
+
+ /**
+ * Retrieves one of the animated properties of the entry.
+ * \param type Which animated property to retrieve.
+ * \return A pointer to the animated property, valid as long as the
+ * entry is.
+ */
+ AnimateableProperty* getAnimProperty(AnimateablePropertyType type);
+
+ /**
+ * Checks whether the source location, velocity and orientation are relative
+ * to the listener.
+ * \return Whether the source is relative.
+ */
+ bool isRelative();
+
+ /**
+ * Sets whether the source location, velocity and orientation are relative
+ * to the listener.
+ * \param relative Whether the source is relative.
+ * \return Whether the action succeeded.
+ */
+ void setRelative(bool relative);
+
+ /**
+ * Retrieves the maximum volume of a source.
+ * \return The maximum volume.
+ */
+ float getVolumeMaximum();
+
+ /**
+ * Sets the maximum volume of a source.
+ * \param volume The new maximum volume.
+ * \return Whether the action succeeded.
+ */
+ void setVolumeMaximum(float volume);
+
+ /**
+ * Retrieves the minimum volume of a source.
+ * \return The minimum volume.
+ */
+ float getVolumeMinimum();
+
+ /**
+ * Sets the minimum volume of a source.
+ * \param volume The new minimum volume.
+ * \return Whether the action succeeded.
+ */
+ void setVolumeMinimum(float volume);
+
+ /**
+ * Retrieves the maximum distance of a source.
+ * If a source is further away from the reader than this distance, the
+ * volume will automatically be set to 0.
+ * \return The maximum distance.
+ */
+ float getDistanceMaximum();
+
+ /**
+ * Sets the maximum distance of a source.
+ * If a source is further away from the reader than this distance, the
+ * volume will automatically be set to 0.
+ * \param distance The new maximum distance.
+ * \return Whether the action succeeded.
+ */
+ void setDistanceMaximum(float distance);
+
+ /**
+ * Retrieves the reference distance of a source.
+ * \return The reference distance.
+ */
+ float getDistanceReference();
+
+ /**
+ * Sets the reference distance of a source.
+ * \param distance The new reference distance.
+ * \return Whether the action succeeded.
+ */
+ void setDistanceReference(float distance);
+
+ /**
+ * Retrieves the attenuation of a source.
+ * \return The attenuation.
+ */
+ float getAttenuation();
+
+ /**
+ * Sets the attenuation of a source.
+ * This value is used for distance calculation.
+ * \param factor The new attenuation.
+ * \return Whether the action succeeded.
+ */
+ void setAttenuation(float factor);
+
+ /**
+ * Retrieves the outer angle of the cone of a source.
+ * \return The outer angle of the cone.
+ */
+ float getConeAngleOuter();
+
+ /**
+ * Sets the outer angle of the cone of a source.
+ * \param angle The new outer angle of the cone.
+ * \return Whether the action succeeded.
+ */
+ void setConeAngleOuter(float angle);
+
+ /**
+ * Retrieves the inner angle of the cone of a source.
+ * \return The inner angle of the cone.
+ */
+ float getConeAngleInner();
+
+ /**
+ * Sets the inner angle of the cone of a source.
+ * \param angle The new inner angle of the cone.
+ * \return Whether the action succeeded.
+ */
+ void setConeAngleInner(float angle);
+
+ /**
+ * Retrieves the outer volume of the cone of a source.
+ * The volume between inner and outer angle is interpolated between inner
+ * volume and this value.
+ * \return The outer volume of the cone.
+ */
+ float getConeVolumeOuter();
+
+ /**
+ * Sets the outer volume of the cone of a source.
+ * The volume between inner and outer angle is interpolated between inner
+ * volume and this value.
+ * \param volume The new outer volume of the cone.
+ * \return Whether the action succeeded.
+ */
+ void setConeVolumeOuter(float volume);
+};
+
+AUD_NAMESPACE_END