MCPcopy Create free account
hub / github.com/Illation/ETEngine / Process

Method Process

Engine/source/EtFramework/Systems/AudioSourceSystem.cpp:109–161  ·  view source on GitHub ↗

--------------------------------------- AudioSourceSystem::Translate::Process Update 3D source data within openAL

Source from the content-addressed store, hash-verified

107// Update 3D source data within openAL
108//
109void AudioSourceSystem::Translate::Process(ComponentRange<AudioSourceSystem::TranslateView>& range)
110{
111 for (TranslateView& view : range)
112 {
113 // 3D source params, if dirty
114 if (view.source3D->m_UpdateParams)
115 {
116 alSourcef(view.source->m_Source, AL_REFERENCE_DISTANCE, view.source3D->m_Params.referenceDistance);
117 alSourcef(view.source->m_Source, AL_ROLLOFF_FACTOR, view.source3D->m_Params.rolloffFactor);
118 alSourcef(view.source->m_Source, AL_MAX_DISTANCE, view.source3D->m_Params.maxDistance);
119 alSourcef(view.source->m_Source, AL_CONE_INNER_ANGLE, view.source3D->m_Params.innerConeAngle);
120 alSourcef(view.source->m_Source, AL_CONE_OUTER_ANGLE, view.source3D->m_Params.outerConeAngle);
121 alSourcef(view.source->m_Source, AL_CONE_OUTER_GAIN, view.source3D->m_Params.outerConeGain);
122
123 if (!view.source3D->m_Params.isDirectional)
124 {
125 alSource3f(view.source->m_Source, AL_DIRECTION, 0.f, 0.f, 0.f);
126 }
127 else
128 {
129 vec3 const fwd = ALvec3(view.transf->GetForward());
130 alSource3f(view.source->m_Source, AL_DIRECTION, fwd.x, fwd.y, fwd.z);
131 }
132
133 ET_ASSERT(!AudioManager::GetInstance()->TestALError("AL 3D source params error"));
134
135 view.source3D->m_UpdateParams = false;
136 }
137
138 // 3D source position, rotation, direction
139 if (view.transf->HasTransformChanged())
140 {
141 vec3 const pos = ALvec3(view.transf->GetWorldPosition());
142 alSource3f(view.source->m_Source, AL_POSITION, pos.x, pos.y, pos.z);
143
144 vec3 const vel = pos - view.source3D->m_PrevPos;
145 view.source3D->m_PrevPos = pos;
146 alSource3f(view.source->m_Source, AL_VELOCITY, vel.x, vel.y, vel.z);
147
148 if (view.source3D->m_Params.isDirectional)
149 {
150 vec3 const fwd = ALvec3(view.transf->GetForward());
151 alSource3f(view.source->m_Source, AL_DIRECTION, fwd.x, fwd.y, fwd.z);
152 }
153 }
154 else
155 {
156 alSource3f(view.source->m_Source, AL_VELOCITY, 0.f, 0.f, 0.f);
157 }
158
159 ET_ASSERT(!AudioManager::GetInstance()->TestALError("AL 3D source transform error"));
160 }
161}
162
163//------------------------------------
164// AudioSourceSystem::State::Process

Callers

nothing calls this directly

Calls 5

ALvec3Function · 0.85
TestALErrorMethod · 0.80
HasTransformChangedMethod · 0.80
GetIdMethod · 0.45
GetHandleMethod · 0.45

Tested by

no test coverage detected