diff options
Diffstat (limited to 'extern/audaspace/bindings/C/AUD_Handle.cpp')
-rw-r--r-- | extern/audaspace/bindings/C/AUD_Handle.cpp | 384 |
1 files changed, 384 insertions, 0 deletions
diff --git a/extern/audaspace/bindings/C/AUD_Handle.cpp b/extern/audaspace/bindings/C/AUD_Handle.cpp new file mode 100644 index 00000000000..265c7bf08d2 --- /dev/null +++ b/extern/audaspace/bindings/C/AUD_Handle.cpp @@ -0,0 +1,384 @@ +/******************************************************************************* + * 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. + ******************************************************************************/ + +#include "devices/I3DHandle.h" +#include "Exception.h" + +#include <cassert> + +using namespace aud; + +#define AUD_CAPI_IMPLEMENTATION +#include "AUD_Handle.h" + +AUD_API int AUD_Handle_pause(AUD_Handle* handle) +{ + assert(handle); + return (*handle)->pause(); +} + +AUD_API int AUD_Handle_resume(AUD_Handle* handle) +{ + assert(handle); + return (*handle)->resume(); +} + +AUD_API int AUD_Handle_stop(AUD_Handle* handle) +{ + assert(handle); + int result = (*handle)->stop(); + delete handle; + return result; +} + +AUD_API float AUD_Handle_getAttenuation(AUD_Handle* handle) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + return h->getAttenuation(); + return 0.0f; +} + +AUD_API int AUD_Handle_setAttenuation(AUD_Handle* handle, float value) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + return h->setAttenuation(value); + return false; +} + +AUD_API float AUD_Handle_getConeAngleInner(AUD_Handle* handle) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + return h->getConeAngleInner(); + return 0.0f; +} + +AUD_API int AUD_Handle_setConeAngleInner(AUD_Handle* handle, float value) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + return h->setConeAngleInner(value); + return false; +} + +AUD_API float AUD_Handle_getConeAngleOuter(AUD_Handle* handle) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + return h->getConeAngleOuter(); + return 0.0f; +} + +AUD_API int AUD_Handle_setConeAngleOuter(AUD_Handle* handle, float value) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + return h->setConeAngleOuter(value); + return false; +} + +AUD_API float AUD_Handle_getConeVolumeOuter(AUD_Handle* handle) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + return h->getConeVolumeOuter(); + return 0.0f; +} + +AUD_API int AUD_Handle_setConeVolumeOuter(AUD_Handle* handle, float value) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + return h->setConeVolumeOuter(value); + return false; +} + +AUD_API float AUD_Handle_getDistanceMaximum(AUD_Handle* handle) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + return h->getDistanceMaximum(); + return 0.0f; +} + +AUD_API int AUD_Handle_setDistanceMaximum(AUD_Handle* handle, float value) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + return h->setDistanceMaximum(value); + return false; +} + +AUD_API float AUD_Handle_getDistanceReference(AUD_Handle* handle) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + return h->getDistanceReference(); + return 0.0f; +} + +AUD_API int AUD_Handle_setDistanceReference(AUD_Handle* handle, float value) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + return h->setDistanceReference(value); + return false; +} + +AUD_API int AUD_Handle_doesKeep(AUD_Handle* handle) +{ + assert(handle); + return (*handle)->getKeep(); +} + +AUD_API int AUD_Handle_setKeep(AUD_Handle* handle, int value) +{ + assert(handle); + return (*handle)->setKeep(value); +} + +AUD_API int AUD_Handle_getLocation(AUD_Handle* handle, float value[3]) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + { + Vector3 v = h->getLocation(); + value[0] = v.x(); + value[1] = v.y(); + value[2] = v.z(); + return true; + } + return false; +} + +AUD_API int AUD_Handle_setLocation(AUD_Handle* handle, const float value[3]) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + { + Vector3 v = Vector3(value[0], value[1], value[2]); + return h->setLocation(v); + } + return false; +} + +AUD_API int AUD_Handle_getLoopCount(AUD_Handle* handle) +{ + assert(handle); + return (*handle)->getLoopCount(); +} + +AUD_API int AUD_Handle_setLoopCount(AUD_Handle* handle, int value) +{ + assert(handle); + return (*handle)->setLoopCount(value); +} + +AUD_API int AUD_Handle_getOrientation(AUD_Handle* handle, float value[4]) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + { + Quaternion v = h->getOrientation(); + value[0] = v.x(); + value[1] = v.y(); + value[2] = v.z(); + value[3] = v.w(); + return true; + } + return false; +} + +AUD_API int AUD_Handle_setOrientation(AUD_Handle* handle, const float value[4]) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + { + Quaternion v(value[3], value[0], value[1], value[2]); + return h->setOrientation(v); + } + return false; +} + +AUD_API float AUD_Handle_getPitch(AUD_Handle* handle) +{ + assert(handle); + return (*handle)->getPitch(); +} + +AUD_API int AUD_Handle_setPitch(AUD_Handle* handle, float value) +{ + assert(handle); + return (*handle)->setPitch(value); +} + +AUD_API float AUD_Handle_getPosition(AUD_Handle* handle) +{ + assert(handle); + return (*handle)->getPosition(); +} + +AUD_API int AUD_Handle_setPosition(AUD_Handle* handle, float value) +{ + assert(handle); + return (*handle)->seek(value); +} + +AUD_API int AUD_Handle_isRelative(AUD_Handle* handle) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + return h->isRelative(); + return true; +} + +AUD_API int AUD_Handle_setRelative(AUD_Handle* handle, int value) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + return h->setRelative(value); + return false; +} + +AUD_API AUD_Status AUD_Handle_getStatus(AUD_Handle* handle) +{ + assert(handle); + return static_cast<AUD_Status>((*handle)->getStatus()); +} + +AUD_API int AUD_Handle_getVelocity(AUD_Handle* handle, float value[3]) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + { + Vector3 v = h->getVelocity(); + value[0] = v.x(); + value[1] = v.y(); + value[2] = v.z(); + return true; + } + return false; +} + +AUD_API int AUD_Handle_setVelocity(AUD_Handle* handle, const float value[3]) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + { + Vector3 v = Vector3(value[0], value[1], value[2]); + return h->setVelocity(v); + } + return false; +} + +AUD_API float AUD_Handle_getVolume(AUD_Handle* handle) +{ + assert(handle); + return (*handle)->getVolume(); +} + +AUD_API int AUD_Handle_setVolume(AUD_Handle* handle, float value) +{ + assert(handle); + return (*handle)->setVolume(value); +} + +AUD_API float AUD_Handle_getVolumeMaximum(AUD_Handle* handle) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + return h->getVolumeMaximum(); + return 0.0f; +} + +AUD_API int AUD_Handle_setVolumeMaximum(AUD_Handle* handle, float value) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + return h->setVolumeMaximum(value); + return false; +} + +AUD_API float AUD_Handle_getVolumeMinimum(AUD_Handle* handle) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + return h->getVolumeMinimum(); + return 0.0f; +} + +AUD_API int AUD_Handle_setVolumeMinimum(AUD_Handle* handle, float value) +{ + assert(handle); + std::shared_ptr<I3DHandle> h = std::dynamic_pointer_cast<I3DHandle>(*handle); + + if(h.get()) + return h->setVolumeMinimum(value); + return false; +} + +AUD_API void AUD_Handle_free(AUD_Handle* handle) +{ + delete handle; +} |