UE1:RMusicPlayer: Difference between revisions

From Unreal Wiki, The Unreal Engine Documentation Site
Raven (talk | contribs)
Raven (talk | contribs)
Line 120: Line 120:
As always source code is included in zip file.
As always source code is included in zip file.


'''link:''' [http://turniej.unreal.pl/files/RMusicPlayer.zip RMusicPlayer (~603kb)] || [http://turniej.unreal.pl/files/RMusicPlayer_newbeta.zip RMusicPlayer 0.1.4 beta (~694kb)]
'''link:''' [http://turniej.unreal.pl/files/RMusicPlayer.zip RMusicPlayer (~603kb)] || [http://turniej.unreal.pl/files/RMusicPlayer_newbeta.zip RMusicPlayer 0.1.4 beta (~694kb)] ||  [http://turniej.unreal.pl/files/RMusicPlayer_Rune.zip RMusicPlayer 0.1.4 beta for Rune (~694kb)]

Revision as of 08:35, 9 March 2009

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) <uscript> 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(); } }

       }

} </uscript>

Console integration

Subclass of UTConsole <uscript> 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); } </uscript>


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.

link: RMusicPlayer (~603kb) || RMusicPlayer 0.1.4 beta (~694kb) || RMusicPlayer 0.1.4 beta for Rune (~694kb)