                ==============================
                DynamicInfo Player Mesh System
                ==============================
                       (release 2 - UT)

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 UT, begin a practice session and select the "DPMS Example Game (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>. If class
	is within the BotPack package, no need to type "BotPack."
	before the class name.
	
	eg. 'SetMeshClass tmale2'
	    'SetMeshClass unreali.maleone'
	
	<class name> can be any of the following:
	
	TMale1
	TMale2
	TFemale1
	TFemale2
	TBoss
	
	Unreali.MaleOne
	Unreali.MaleTwo
	Unreali.MaleThree
	Unreali.FemaleOne
	Unreali.FemaleTwo
	Unreali.SkaarjPlayer
	Unreali.NaliPlayer


"SetSkin <skin name>"
  o Change skin to <skin name>, the name can be the skin
    description (eg. "War Machine" or "RawSteel") or can
    be texture name (eg. blkt for marine skin). Will only
    change if skin valid for current mesh.
    
    eg. 'SetSkin RawSteel'
        'SetSkin Dante'


"SetFace <face name>"
  o Change face to <face name>, the face skin will only
    change if valid for the current skin.
    
    eg. 'SetFace Slain'


DPMSExampleGame: (extends DeathMatchPlus)
----------------
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 "BotPack." in the default 
properties. This is the package that the 'SetMeshClass' command will use if no 
package name is entered, eg. 'SetMeshClass TMale2' would do the same as 
'SetMeshClass BotPack.TMale2'.
