Skip to content

Commit a13e8a4

Browse files
committed
Initial work for moving away from o_line_audio controller object to a simple function for updating the engine every tick
1 parent bcbf5a8 commit a13e8a4

File tree

9 files changed

+146
-54
lines changed

9 files changed

+146
-54
lines changed

objects/o_example/Create_0.gml

Lines changed: 0 additions & 1 deletion
This file was deleted.

objects/o_example/Step_0.gml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
line_audio_update();

objects/o_example/o_example.yy

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

objects/o_line_audio/Create_0.gml

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +0,0 @@
1-
// Define Sounds
2-
line_audio_define_sounds();
3-
4-
// Falloff model
5-
audio_falloff_set_model(audio_falloff_exponent_distance_clamped);
6-
7-
// Emitter Arrays - They store structs
8-
emitter_array = array_create(0);
9-
attached_emitter_array = array_create(0);
10-
ambience_sound_array = array_create(0);
11-
12-
// Stack Limit Array
13-
per_frame_stack_limit_array = array_create(sounds.enum_length,0);
14-
15-
// Audio Channel Number
16-
audio_channel_num(256);
17-
18-
// Music
19-
music_to_play = undefined;
20-
music_to_play_audiogroup = undefined;
21-
music_playing_currently = undefined;
22-
23-
// Load Audiogroups
24-
//audio_group_load(ag_music);
25-
//audio_group_load(ag_sfx);
26-
27-
stop_over_time_array = [];
28-
29-
global.__line_audio_everpresent_frame_counter = 0;

objects/o_line_audio/Step_2.gml

Lines changed: 0 additions & 5 deletions
This file was deleted.

objects/o_line_audio/o_line_audio.yy

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scripts/LineAudio/LineAudio.gml

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ function line_audio_play(index,x=undefined,y=undefined,volume_mod=1,pitch_mod=1,
2222
// Kill Previous
2323
if struct.kill_previous == true
2424
{
25-
__line_audio_stop_all_of_one_entry(index);
25+
line_audio_stop_all_of_one_entry(index);
2626
}
2727

2828
var sound = undefined;
@@ -110,22 +110,6 @@ function line_audio_play_ambience(index)
110110
array_push(o_line_audio.ambience_sound_array,sound_struct);
111111
}
112112

113-
// Update Line Audio
114-
function line_audio_update()
115-
{
116-
// Stop Faded-out Sounds
117-
var length = array_length(global.__line_audio_stop_over_time_array)
118-
for(var i=0;i<length;i++)
119-
{
120-
var sound_instance = global.__line_audio_stop_over_time_array[i];
121-
if audio_sound_get_gain(sound_instance) == 0
122-
{
123-
audio_stop_sound(sound_instance);
124-
array_delete(global.__line_audio_stop_over_time_array,i,1);
125-
}
126-
}
127-
}
128-
129113
// Stop Audio
130114
function line_audio_stop_sound(sound_instance,time_ms=0)
131115
{

scripts/LineAudioErrorChecking/LineAudioErrorChecking.gml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@ function __line_audio_error_check_controller_exists()
44
if instance_exists(o_line_audio) == false
55
{
66
show_debug_message("LineAudio: The o_line_audio object had to be re-created. Please make sure you're not deactivating or destroying it at any point.",false);
7+
instance_create_depth(0,0,0,o_line_audio);
78
}
89
}
Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
function line_audio_update()
2+
{
3+
#region Initialization
4+
static initialized = false;
5+
6+
if initialized == false
7+
{
8+
global.__line_audio_per_frame_stack_limit_array = array_create(sounds.enum_length,0);
9+
global.__line_audio_stop_over_time_array = [];
10+
global.__line_audio_everpresent_frame_counter = 0;
11+
12+
// Emitter Arrays - They store structs
13+
global.__line_audio_emitter_array = array_create(0);
14+
global.__line_audio_attached_emitter_array = array_create(0);
15+
global.__line_audio_ambience_sound_array = array_create(0);
16+
17+
// Falloff model
18+
audio_falloff_set_model(audio_falloff_exponent_distance_clamped);
19+
20+
// Audio Channel Number
21+
audio_channel_num(256);
22+
23+
// Music
24+
global.__line_audio_music_to_play = undefined;
25+
global.__line_audio_music_to_play_audiogroup = undefined;
26+
global.__line_audio_music_playing_currently = undefined;
27+
28+
stop_over_time_array = [];
29+
30+
line_audio_define_sounds();
31+
32+
initialized = true;
33+
}
34+
#endregion
35+
36+
// Reset Per-Frame Stack Limit
37+
for(var i=0;i<=sounds.enum_length;i++)
38+
{
39+
global.__line_audio_per_frame_stack_limit_array[i] = 0;
40+
array_all()
41+
}
42+
43+
// Stop Faded-out Sounds
44+
var length = array_length(global.__line_audio_stop_over_time_array)
45+
for(var i=0;i<length;i++)
46+
{
47+
var sound_instance = global.__line_audio_stop_over_time_array[i];
48+
if audio_sound_get_gain(sound_instance) == 0
49+
{
50+
audio_stop_sound(sound_instance);
51+
array_delete(global.__line_audio_stop_over_time_array,i,1);
52+
}
53+
}
54+
55+
//if instance_exists(obj_ui_pause_0) == false
56+
{
57+
// Local Emitters
58+
var size = array_length(global.__line_audio_emitter_array);
59+
for(var i=0;i<size;i++)
60+
{
61+
var emitter_id = global.__line_audio_emitter_array[i].emitter_id;
62+
if emitter_id != undefined
63+
{
64+
if audio_emitter_exists(emitter_id)
65+
{
66+
// When Time Runs Out
67+
if audio_is_playing(global.__line_audio_emitter_array[i].sound) == false
68+
{
69+
// Free Emitter, Remove from Array
70+
audio_emitter_free(emitter_id);
71+
delete global.__line_audio_emitter_array[i];
72+
array_delete(global.__line_audio_emitter_array,i,1);
73+
size--;
74+
continue;
75+
}
76+
}
77+
}
78+
}
79+
80+
// Attached Local Emitters
81+
var size = array_length(global.__line_audio_attached_emitter_array)
82+
for(var i=0;i<size;i++)
83+
{
84+
var emitter_id = global.__line_audio_attached_emitter_array[i].emitter_id;
85+
var emitter_attached_to = global.__line_audio_attached_emitter_array[i].attached_to;
86+
var sound = global.__line_audio_attached_emitter_array[i].sound;
87+
if emitter_id != undefined
88+
{
89+
if instance_exists(emitter_attached_to)
90+
{
91+
audio_emitter_position(emitter_id,emitter_attached_to.x,emitter_attached_to.y,0);
92+
}
93+
else
94+
{
95+
global.__line_audio_attached_emitter_array[i].fading_out = true;
96+
97+
if variable_struct_exists(global.__line_audio_attached_emitter_array[i],"fading_out")
98+
{
99+
audio_sound_gain(sound,0,100);
100+
101+
if audio_sound_get_gain(sound) <= 0.01
102+
{
103+
audio_emitter_free(emitter_id);
104+
delete global.__line_audio_attached_emitter_array[i];
105+
array_delete(global.__line_audio_attached_emitter_array,i,1)
106+
size--;
107+
continue;
108+
}
109+
}
110+
}
111+
}
112+
}
113+
114+
// Ambient Sounds (NOT EMITTERS)
115+
var size = array_length(global.__line_audio_ambience_sound_array)
116+
for(var i=0;i<size;i++)
117+
{
118+
var sound_id = global.__line_audio_ambience_sound_array[i].sound_id;
119+
if sound_id != undefined
120+
{
121+
// Volume Lerp
122+
if global.__line_audio_ambience_sound_array[i].fade_out == false
123+
{
124+
audio_sound_gain(sound_id,global.__line_audio_ambience_sound_array[i].volume_goal,300);
125+
}
126+
else
127+
{
128+
audio_sound_gain(sound_id,0,300);
129+
130+
// Free Ambience Sound
131+
if audio_sound_get_gain(sound_id) <= 0.01
132+
{
133+
audio_stop_sound(sound_id);
134+
array_delete(global.__line_audio_ambience_sound_array,i,1);
135+
size--;
136+
//trace("AMBIENCE SOUND FREED");
137+
}
138+
}
139+
}
140+
}
141+
}
142+
}

0 commit comments

Comments
 (0)