The three virtues of a programmer: Laziness, Impatience, and Hubris. – Larry Wall

Difference between revisions of "UE1:RMusic Controller"

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search
m
m (Gametype integration (with save support and level change detection))
Line 133: Line 133:
 
{
 
{
 
//we have to find music player in Entry level
 
//we have to find music player in Entry level
foreach NewPlayer.GetEntryLevel().AllActors(class'RMusic_Player',RMusic_Player)
+
RMusic_Player = class'RMusic_Component'.static.Find_RMusicPlayerByPPawn(NewPlayer,none,true);
 +
if( RMusic_Player != none)
 
{
 
{
 
//then we stops currently played song
 
//then we stops currently played song

Revision as of 03:40, 2 June 2008

This class is part of RMusicPlayer by Raven

About

RMusic_Controller is part of RMusicPlayer beta. It controls RMusic_Player.

Usage

In ActorBrowser find Actor->RMusic_Component->RMusic_Controller, place it on map and configure it.

RMusic_Controller properties

You can configure following properties:

Name: PlayerClass

Type: class<RMusic_Player>

Description: Player class (if you want to have own music directory)


Name: RMusic_File

Type: string

Description: Music file to play


Name: RMusic_PlayAtStartup

Type: bool

Description: Should it be played at level start


Name: RMusic_MuteUMX

Type: bool

Description: If true will mute all music in umx files


Name: RMusic_BroadcastToAll

Type: bool

Description: If true, it'll broadcast functions to all players


Name: RMusic_bUnloadPreviousDSP

Type: bool

Description: If true, all DSP plugins will be unloaded


Name: RMusic_bOwnFadeUpdateTime

Type: bool

Description: If true, RMusic_OwnFadeUpdateTime will be used instead of default FaderUpdateTime in RMusic_Player


Name: RMusic_OwnFadeUpdateTime

Type: float

Description: Defines how fast music will fade in/out


Name: RMusic_bUseSaveControl

Type: bool

Description: If true, special RMusic_Save will be spawned to track last used controller


Name: RMusic_DSPPlugins[16]

Type: string

Description: DSP plugins to load


Name: Action

Type: ENum

Values:

  • AC_Play - Plays music
  • AC_Stop - Stops music
  • AC_ShutDown - Shutdown FMODEX (avoid this one ;) )

Description: Action


Name: RMusic_PlayType

Type: ENum

Values:

  • PT_Loop - Loops music
  • PT_PlayOnce - Plays once

Description: Play type


Name: RMusic_Transition

Type: ENum

Values:

  • TRANS_Instanly - Instant transition
  • TRANS_Fade - Smooth fade

Description: Transition type

Advanced usage (gametype/console integration)

RMusicPlayer can be also integrated with gametypes, console.

Gametype integration (with save support and level change detection)

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)
	{
		if(NewPlayer.GetEntryLevel() != none)
		{
			//we have to find music player in Entry level
			RMusic_Player = class'RMusic_Component'.static.Find_RMusicPlayerByPPawn(NewPlayer,none,true);
			if( RMusic_Player != none)
			{
				//then we stops currently played song
				RMusic_Player.RMusic_Stop();
				//and eventually add info about player/current level
				if( RMusic_Player.bAuthoritative )
				{
					RMusic_Player.RMusic_LocalPlayer = NewPlayer;
					RMusic_Player.RMusic_OldLevel = NewPlayer.Level;
				}
			}
		}
		//we have to found save part
		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 saved controller is found, we have to restore music
		if(RMusic_Controller != none) RMusic_Controller.EVENT_Player();
	}
}

Gametype integration (with level change detection only)

Subclass of coopgame2 (SinglePlayer2is part of OldSkool by UsAaR33)

class RMusic_CoopGameInfo 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)
	{
		if(NewPlayer.GetEntryLevel() != none)
		{
			//we have to find music player in Entry level
			foreach NewPlayer.GetEntryLevel().AllActors(class'RMusic_Player',RMusic_Player)
			{
				//then we stops currently played song
				RMusic_Player.RMusic_Stop();
				//and eventually add info about player/current level
				if( RMusic_Player.bAuthoritative )
				{
					RMusic_Player.RMusic_LocalPlayer = NewPlayer;
					RMusic_Player.RMusic_OldLevel = NewPlayer.Level;
				}
			}
		}
	}
}

Gametype integration (with save support only)

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 found save part
		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 saved controller is found, we have to restore music
		if(RMusic_Controller != none) RMusic_Controller.EVENT_Player();
	}
}

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