Filter setup

This commit is contained in:
CawawaC
2017-12-19 14:43:10 +01:00
committed by Joshua Granick
parent dc0f6a0c7a
commit 025cc48dfb
4 changed files with 129 additions and 5 deletions

View File

@@ -24,7 +24,7 @@ namespace lime {
void lime_al_delete_buffer (value buffer);
void lime_al_delete_source (value source);
void lime_al_delete_filter (value filter);
void gc_al_buffer (value buffer) {
@@ -38,6 +38,10 @@ namespace lime {
lime_al_delete_source (source);
}
void gc_al_filter(value filter) {
lime_al_delete_filter(filter);
}
void gc_alc_object (value object) {
@@ -193,6 +197,19 @@ namespace lime {
}
}
void lime_al_delete_filter(value filter) {
if (!val_is_null(filter)) {
ALuint data = (ALuint)(uintptr_t)val_data(filter);
alDeleteFilters(1, &data);
val_gc(filter, 0);
}
}
void lime_al_delete_source (value source) {
@@ -230,6 +247,8 @@ namespace lime {
}
}
void lime_al_disable (int capability) {
@@ -265,6 +284,26 @@ namespace lime {
alEnable (capability);
}
void lime_al_filteri(value filter, int param, value val) {
ALuint id = (ALuint)(uintptr_t)val_data(filter);
ALuint data;
data = val_int(val);
alFilteri(id, param, data);
}
void lime_al_filterf(value filter, int param, float value) {
ALuint id = (ALuint)(uintptr_t)val_data(filter);
alFilterf(id, param, value);
}
value lime_al_gen_buffer () {
@@ -302,6 +341,15 @@ namespace lime {
return result;
}
value lime_al_gen_filter() {
ALuint filter;
alGenFilters((ALuint)1, &filter);
return CFFIPointer((void*)(uintptr_t)filter, gc_al_filter);
}
value lime_al_gen_source () {
@@ -1079,7 +1127,7 @@ namespace lime {
ALuint id = (ALuint)(uintptr_t)val_data (source);
ALuint data;
if (param == AL_BUFFER) {
if (param == AL_BUFFER || param == AL_DIRECT_FILTER) {
data = (ALuint)(uintptr_t)val_data (val);
@@ -1092,7 +1140,7 @@ namespace lime {
alSourcei (id, param, data);
}
void lime_al_sourceiv (value source, int param, value values) {
@@ -1307,6 +1355,8 @@ namespace lime {
alcSuspendContext (alcContext);
}
DEFINE_PRIME5v (lime_al_buffer_data);
@@ -1318,15 +1368,19 @@ namespace lime {
DEFINE_PRIME3v (lime_al_bufferiv);
DEFINE_PRIME1v (lime_al_delete_buffer);
DEFINE_PRIME2v (lime_al_delete_buffers);
DEFINE_PRIME1v(lime_al_delete_filter);
DEFINE_PRIME1v (lime_al_delete_source);
DEFINE_PRIME2v (lime_al_delete_sources);
DEFINE_PRIME1v (lime_al_disable);
DEFINE_PRIME1v (lime_al_distance_model);
DEFINE_PRIME1v (lime_al_doppler_factor);
DEFINE_PRIME1v (lime_al_doppler_velocity);
DEFINE_PRIME1v (lime_al_enable);
DEFINE_PRIME1v (lime_al_enable);
DEFINE_PRIME3v (lime_al_filteri);
DEFINE_PRIME3v (lime_al_filterf);
DEFINE_PRIME0 (lime_al_gen_buffer);
DEFINE_PRIME1 (lime_al_gen_buffers);
DEFINE_PRIME0 (lime_al_gen_filter);
DEFINE_PRIME0 (lime_al_gen_source);
DEFINE_PRIME1 (lime_al_gen_sources);
DEFINE_PRIME1 (lime_al_get_boolean);
@@ -1401,7 +1455,6 @@ namespace lime {
DEFINE_PRIME1v (lime_alc_resume_device);
DEFINE_PRIME1v (lime_alc_suspend_context);
}