I am adding an extra parameter to
#playaudio Five_Circles.mp3 50 loop sync
in mobj.h
} else if (strcmp(szBuffer, "#playaudio") == 0) { // 10-09-2019 Bass.dll
s1[0] = 0; s2[0] = 0; s3[0] = 0; s4[0] = 0;
fgets(szBuffer, sizeof(szBuffer), pFile);
sscanf(szBuffer, "%s %s %s %s", s1, s2, s3, s4);
MultiByteToWideChar(CP_ACP, 0, s1, lstrlenA(s1), gB.playaudio, MAX_PATH); // gB.playaudio the audio file to play
gB.volume = max((float) atof(s2) / 100.0f, 0.0625f); // gB.volume the audio volume percentage converted to float 0.0f to 1.0f
if (strcmp(s3, "loop") == 0) { gB.loop = TRUE; } // gB.loop "loop" means play in loop mode
if (strcmp(s4, "sync") == 0) { gP.bSyncAudio = TRUE; } // PAT: 12-27-2019 play animation in sync mode with audio
in gl_LoadModel from Main.cpp
if (lstrlen(gB.playaudio)) { // 10-09-2019 Bass.dll
hCtrl = GetDlgItem(gP.hMain, IDC_AUDIO); // PAT: 11-05-2019
SendMessage(hCtrl, BM_SETCHECK, BST_CHECKED, 0); // PAT: 11-05-2019
EnableWindow(hCtrl, TRUE); // PAT: 11-05-2019
hCtrl = GetDlgItem(gP.hMain, IDC_GAUGE_VOLUME); // PAT: 12-05-2019
if (IsWindow(hCtrl)) { EnableWindow(hCtrl, TRUE); } // PAT: 12-05-2019
hCtrl = GetDlgItem(gP.hMain, IDC_SYNC_AUDIO); // PAT: 12-25-2019
EnableWindow(hCtrl, TRUE);
if (gP.bSyncAudio) { SendMessage(hCtrl, BM_SETCHECK, BST_CHECKED, 0); } // PAT: 12-27-2019
WCHAR zAudioFile[MAX_PATH] = { 0 }; // 10-09-2019 Bass.dll
Path_Combine(zAudioFile, gP.wModelPath, gB.playaudio); // 10-09-2019 Bass.dll
BassChannelPlay(zAudioFile); // 10-09-2019 Bass.dll
}
and a small project to test with.
Strangely this simple project doesn't work with some of the shaders.