Always snap to grid

UE1:RMusic Controller

From Unreal Wiki, The Unreal Engine Documentation Site
Revision as of 04:41, 2 June 2008 by Raven (Talk | contribs) (Advanced usage (gametype/console integration))

Jump to: navigation, search

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