int main () { printf ("Results of test 'test':\n"); try { Timer timer (bind (&Application::Exit, 0), TEST_WORK_TIME); srand ((unsigned int)time (NULL)); SoundManager manager ("OpenAL", "*"); Listener listener; Emitter emitter; emitter.SetSource ("declaration1"); emitter.SetSampleIndex (rand ()); /* Testing basic manager properties */ printf ("Initial volume = %f,", manager.Volume ()); manager.SetVolume (0.7f); printf (" new volume = %f.\n", manager.Volume ()); printf ("Initial mute: "); print (manager.IsMuted ()); manager.SetMute (true); printf ("Mute: "); print (manager.IsMuted ()); manager.SetMute (false); printf ("Mute: "); print (manager.IsMuted ()); printf ("Initial listener status: "); print (manager.Listener ()); listener.position = vec3f (0.f, 1.f, 0.f); listener.direction = vec3f (0.f, 0.f, 1.f); listener.up = vec3f (0.f, -1.f, 0.f); listener.velocity = vec3f (1.f, 0.f, 0.f); manager.SetListener (listener); printf ("New listener status: "); print (manager.Listener ()); manager.LoadSoundLibrary (library_file); /* Testing basic emitter properties */ printf ("Emitter source - %s\n", emitter.Source ()); printf ("Initial emitter volume = %f,", emitter.Volume ()); emitter.SetVolume (0.9f); printf (" new emitter volume = %f.\n", emitter.Volume ()); printf ("Initial position: "); print (emitter.Position ()); printf ("\nInitial direction: "); print (emitter.Direction ()); printf ("\nInitial velocity: "); print (emitter.Velocity ()); emitter.SetPosition (vec3f (-50.f, 2.f, 4.f)); emitter.SetDirection (vec3f (-2.f, -2.f, -4.f)); emitter.SetVelocity (vec3f (0.f, 0.f, 0.1f)); printf ("\nNew position: "); print (emitter.Position ()); printf ("\nNew direction: "); print (emitter.Direction ()); printf ("\nNew velocity: "); print (emitter.Velocity ()); printf ("\n"); /* Testing manager work */ manager.PlaySound (emitter, 0.3f); printf ("Current offset in seconds = %f\n", manager.Tell (emitter)); printf ("Duration in seconds = %f\n", manager.Duration (emitter)); printf ("Looping = %c\n", manager.IsLooping (emitter) ? 'y' : 'n'); printf ("Is Playing = %c\n", manager.IsPlaying (emitter) ? 'y' : 'n'); Timer timer2 (bind (&TimerHandler, ref (emitter)), ACTION_TIME); Application::Run (); } catch (std::exception& exception) { printf ("exception: %s\n",exception.what ()); } catch (...) { printf ("unknown exception\n"); } printf ("exit\n"); return Application::GetExitCode (); }
void TimerHandler (Emitter& emitter) { emitter.SetPosition (emitter.Position () + vec3f (5.f, 0.f, 0.f)); }