Files
deighton-ar/mobile/ios/ViroKit.framework/Headers/VROSound.h
2018-03-27 17:46:15 -07:00

80 lines
1.8 KiB
C++

//
// VROSound.h
// ViroRenderer
//
// Created by Raj Advani on 3/23/16.
// Copyright © 2016 Viro Media. All rights reserved.
//
#ifndef VROSound_h
#define VROSound_h
#include <memory>
#include <stdio.h>
#include <string>
#include "VROSoundDelegateInternal.h"
#include "VROQuaternion.h"
#include "VROModelIOUtil.h"
enum class VROSoundType {
Normal,
Spatial,
SoundField,
};
enum class VROSoundRolloffModel {
Linear,
Logarithmic,
None,
};
class VROSound {
public:
VROSound() : _volume(1), _muted(false), _loop(false) {};
virtual ~VROSound() {}
virtual void play() = 0;
virtual void pause() = 0;
virtual void setVolume(float volume) = 0;
virtual void setMuted(bool muted) = 0;
virtual void setLoop(bool loop) = 0;
virtual void seekToTime(float seconds) = 0;
virtual void setDelegate(std::shared_ptr<VROSoundDelegateInternal> delegate) {
_delegate = delegate;
}
virtual VROSoundType getType() {
return _type;
}
// Used by SoundField
virtual void setRotation(VROQuaternion rotation) = 0;
// Used by SpatialSound
virtual void setPosition(VROVector3f position) = 0;
virtual VROVector3f getPosition() = 0;
virtual void setTransformedPosition(VROVector3f transformedPosition) = 0;
// Used by SpatialSound
virtual void setDistanceRolloffModel(VROSoundRolloffModel model, float minDistance,
float maxDistance) = 0;
protected:
std::shared_ptr<VROSoundDelegateInternal> _delegate;
float _volume;
bool _muted;
bool _loop;
VROSoundType _type;
VROQuaternion _rotation;
VROVector3f _position;
VROVector3f _transformedPosition;
VROSoundRolloffModel _rolloffModel;
float _rolloffMinDistance;
float _rolloffMaxDistance;
};
#endif /* VROSound_h */