                ==============================
                DynamicInfo Player Mesh System
                ==============================
                     (release 1 - Unreal)

Code/Concept: 
	Ob1-Kenobi (ob1@planetunreal.com)
	
Webpage:
	Swing by http://www.planetunreal.com/umodwizard for updates.
	(no dedicated homepage)


=================
DPMS Example Game
=================

See the 'dpms_readme.txt' file for additional information on adding dynamic 
player mesh support to game types.

Double click on the 'DPMSExample.umod' file to install the example game type.
Start up Unreal, begin a Bot match and select the "DPMS Example (DM)"
game type to start the game.

Hit TAB in game and type Type 'behindview 1' in the console to get a better view 
of the player, then use the 'SetMeshClass' command (see below) to change mesh.


Contents:
---------
    Introduction
    Console Commands
    DPMSExampleGame
    DPMSExamplePlayer


Introduction:
-------------
This is an example game type to demonstrate the DPMS code in action, and
how to add it to a game.

There are two classes that are of importance here, the DPMSExampleGame
class and the DPMSExamplePlayer class. The rest are the Dynamic Player
Mesh System classes, most of which are info classes involved with animation 
and sound for the different supported meshes.

Console Commands:
-----------------

"SetMeshClass <class name>"
  o Change to mesh associated w/ <class name>. No need to type 
    "Unreali." before the class name.
	
	eg. 'SetMeshClass maleone'
	    'SetMeshClass malethree'
	
	<class name> can be any of the following:
	
	MaleOne
	MaleTwo
	MaleThree
	FemaleOne
	FemaleTwo
	SkaarjPlayer
	NaliPlayer


"SetSkin <skin name>"
  o Change skin to <skin name>, the skin will only
    change if valid for the current mesh.
    
    eg. 'SetSkin Ash'
        'SetSkin Dante'



DPMSExampleGame: (extends DeathMatchGame)
----------------
This is the game type class.

The two important areas of this class are the 'Login' and the 'ChangeMeshClass'
functions. 

In the 'Login' function the 'GetMeshInfoClass' function is called to find the 
correct mesh info class for the desired SpawnClass (eg. if SpawnClass were 
TMale1, then the function returns the TMale1MeshInfo class). Next the function
calls super.Login to spawn the player in to the game as a 'DPMSExamplePlayer'.
After the super.Login, the 'ChangeMeshClass' function is called to set the
player up with the proper mesh based on the SpawnClass. Finally, the player's
skin is set to the desired skin with a call to the mesh info class SetMultiSkin
function: MeshInfoClass.static.SetMultiSkin(NewPlayer, InSkin, InFace, InTeam).

The 'ChangeMeshClass' function sets the players MeshInfo and SoundInfo properties
based on NewClass. It calls 'GetMeshInfoClass' to get the mesh info class for
NewClass, and then assigns the class to the players MeshInfo property. The player
SoundInfo property is set to the default for the current mesh class. Next the
collision cylinder is set up for the player (different mesh classes may have 
different collision cylinders -- eg. the NaliPlayerMeshInfo class). Finally, the
default skin and face are set for the new mesh info class.

The 'ChangeMeshClass' function is also called when clients want to change mesh.

The other functions in the class are some example utility functions that could 
be used to set the MeshInfo and SoundInfo properties of the player.

  
DPMSExamplePlayer: (extends DynamicPlayer)
------------------
The player that DPMSExampleGame spawns in to the game.

This class implements the 'ServerChangeMeshClass' function so that
it calls the 'ChangeMeshClass' function in the DPMSExampleGame class.

Note that the DefaultClassPackage variable is set to "Unreali." in the default 
properties. This is the package that the 'SetMeshClass' command will use if no 
package name is entered, eg. 'SetMeshClass MaleOne' would do the same as 
'SetMeshClass Unreali.MaleOne'.
