Cogito, ergo sum
UE1:RMusicPlayer
From Unreal Wiki, The Unreal Engine Documentation Site
Contents
About
RMusicPlayer is new version of RvMp3Player. The code has been completly rewritten, this time using FMODEX. Features:
- Mod support (you can subclass RMusic_Player to define new music directory)
- Save support in SP games
- Supports many audio files (flac, mp2, mp3, ogg, wma, wav)
- Crossfades/fades in/fades out music
Current bugs (will be fixed):
- DSP plugins - everything loads fine, but I can't hear difference :)
- You can't have more then one DSP plugin
- Additional codecs doesn't work
Class tree
+- Actor_(UT) +- RMusic_Component - holds everything toghether and implements some basic functions +- RMusic_Controller - controls RMusic_Player +- RMusic_Player - plays music. This class is spawned either by RMusic_Controller or game type/console. +- RMusic_Save - spawned by RMusic_Controller. Stores information about last used RMusic_Controller
Advanced usage (gametype/console integration)
This are just two simple samples. More can be found in zip file.
Gametype integration with save support
Subclass of SinglePlayer2 (SinglePlayer2 is part of OldSkool by UsAaR33)
class RMusic_SingleGameInfo extends SinglePlayer2; event PostLogin( playerpawn NewPlayer ) { local RMusic_Controller RMusic_Controller; local RMusic_Save RMusic_Save; local RMusic_Player RMusic_Player; Super.PostLogin(NewPlayer); if(Level.NetMode != NM_DedicatedServer) { //we have to find out we're in save or not foreach AllActors(class'RMusic_Save', RMusic_Save) { //we have to check if we have saved controller if(RMusic_Save.SavedController != none) { RMusic_Controller=RMusic_Save.SavedController; break; } } //if save controller is found, we have to restore music if(RMusic_Controller != none) RMusic_Controller.EVENT_Player(); else { //we found RMusic_Save, so RMusic_Controller is used, but wasn't activated. We have to stop the music if playing RMusic_Player = class'RMusic_Component'.static.Find_RMusicPlayerByPPawn(NewPlayer,none,true); if( RMusic_Player != none) { if( RMusic_Player.RMusic_IsPlaying() ) RMusic_Player.RMusic_Stop(); } } } }
Console integration
Subclass of UTConsole
class RMusic_Console extends UTConsole; function DrawLevelAction( canvas C ) { local RMusic_Player RMusic_Player; local PlayerPawn PP; if ( Viewport.Actor.Level.LevelAction == LEVACT_Loading ) // Loading Screen { PP = Root.GetPlayerOwner(); if(PP != none) { if(PP.GetEntryLevel() != none) { foreach PP.GetEntryLevel().AllActors(class'RMusic_Player', RMusic_Player) break; if (RMusic_Player != none && RMusic_Player.RMusic_IsPlaying()) RMusic_Player.RMusic_Stop(); } } } Super.DrawLevelAction(C); }
Changelog
- v 0.1.4
- File is searched in all paths ([Core.System] in main ini) with *.umx
- v 0.1.3
- added information about current volume to the menu.
- removed unused configuration from advanced options->audio
- v 0.1.2
- RMusic_Controller spawns RMusic_Save at startup
- RMusic_SingleGameInfo2 detects save and stops/plays correct music
- v 0.1.1
- fixed Trigger function in RMusic_Controller
- in RMusic_Player function RMusic_Play stops music (if something is playing), before playing new one
- v 0.1.0
- added new RMusic_Controller actions (AC_Pause and AC_UnPause)
- DSP manager moved form RMusic_Controller into RMusic_DSPController
- new samples in SDK (integration with gametype and playerpawn)
- v 0.0.3
- fixed fade in/out/corssfade bug
- fixed crashes on dedicated server
- added DSP related functions into RMusic_Player
- v 0.0.2 (first public release)
- fixed few RMusic_Player bugs
Download
As always source code is included in zip file.
Unreal Tournament
link: RMusicPlayer 0.1.4 (~694kb)