Cogs.Core
AudioListenerComponent.cpp
1#include "AudioListenerComponent.h"
2
3#include "ExtensionRegistry.h"
4#include "Context.h"
5
6#include "AudioSystem.h"
7
8#include "Foundation/Reflection/TypeDatabase.h"
9
10using namespace Cogs::Reflection;
11
12void Cogs::Core::AudioListenerComponent::registerType()
13{
14 Field fields[] = {
15 Field(Name("volume"), &AudioListenerComponent::volume),
16 };
17
18 Method methods[] = {
19 Method(Name("update"), &AudioListenerComponent::update),
20 Method(Name("initialize"), &AudioListenerComponent::initialize),
21 Method(Name("cleanup"), &AudioListenerComponent::cleanup),
22 };
23
24 DynamicComponent::registerDerivedType<AudioListenerComponent>().setFields(fields).setMethods(methods);
25}
26
27void Cogs::Core::AudioListenerComponent::initialize(Context * context)
28{
29 auto audioSystem = ExtensionRegistry::getExtensionSystem<AudioSystem>(context);
30
31 if (!audioSystem) return;
32
33 //NOTE: Workaround to get handle cleanly.
34 audioSystem->setAudioListener(getContainer()->getComponentHandle<AudioListenerComponent>());
35}
36
37void Cogs::Core::AudioListenerComponent::update()
38{
39}
40
41void Cogs::Core::AudioListenerComponent::cleanup(Context * context)
42{
43 auto audioSystem = ExtensionRegistry::getExtensionSystem<AudioSystem>(context);
44
45 if (!audioSystem) return;
46
47 audioSystem->setAudioListener(ComponentHandle::Empty());
48}
Field definition describing a single data member of a data structure.
Definition: Field.h:68
Simple method definition.
Definition: Method.h:72
Contains reflection support.
Definition: Component.h:11
static ComponentHandle Empty()
Returns an empty, invalid handle. Will evaluate to false if tested against using operator bool().
Definition: Component.h:119
Represents an unique name.
Definition: Name.h:70