RMenu
Class RuneMenuPlayerMeshClient

source: c:\runehov\RMenu\Classes\RuneMenuPlayerMeshClient.uc
Core.Object
   |
   +--UWindow.UWindowBase
      |
      +--UWindow.UWindowWindow
         |
         +--UWindow.UWindowClientWindow
            |
            +--UWindow.UWindowDialogClientWindow
               |
               +--UWindow.UWindowPageWindow
                  |
                  +--RMenu.RuneMenuPageWindow
                     |
                     +--RMenu.RuneMenuPlayerMeshClient
Direct Known Subclasses:None

class RuneMenuPlayerMeshClient
extends RMenu.RuneMenuPageWindow


Variables
 UWindowSmallButton AnimButton
 name AnimTable[7]
 string AnimText
 UWindowButton CenterButton
 RuneLookMesh PlayerMesh
 LeftButton, RightButton
 CenterRotator, ViewRotator
 int curAnim


Function Summary
 void AnimEnd(RuneMeshActor MyMesh)
 void AnimPressed()
 void BeforePaint(Canvas C, float X, float Y)
 void ClearSkins()
 void Close(optional bool)
 void Created()
 void Notify(UWindowDialogControl C, byte E)
 void Paint(Canvas C, float X, float Y)
 void Resized()
 void SetMesh(int MeshIndex)
 void SetNoAnimMesh(int MeshIndex)
 void SetSkin(Texture NewSkin)
 void SetTeam(int TeamNum)
 void SpawnPlayerMesh()



Source Code


00001	class RuneMenuPlayerMeshClient extends RuneMenuPageWindow;
00002	
00003	var UWindowSmallButton AnimButton;
00004	var UWindowButton CenterButton;
00005	var UWindowButton LeftButton, RightButton;
00006	var localized string AnimText;
00007	
00008	var RuneLookMesh PlayerMesh;
00009	var rotator CenterRotator, ViewRotator;
00010	var int curAnim;
00011	var name AnimTable[7];
00012	
00013	function Created()
00014	{
00015		Super.Created();
00016	
00017		SpawnPlayerMesh();
00018	
00019		CenterButton = UWindowButton(CreateControl(class'UWindowButton', WinWidth/3, 0, WinWidth/3, WinHeight));
00020		CenterButton.bIgnoreLDoubleclick = True;
00021		ViewRotator = rot(0, 32768, 0);
00022	
00023		LeftButton = UWindowButton(CreateControl(class'UWindowButton', 0, 0, WinWidth/3, WinHeight));
00024		LeftButton.bIgnoreLDoubleclick = True;
00025	
00026		RightButton = UWindowButton(CreateControl(class'UWindowButton', (WinWidth/3)*2, 0, WinWidth/3, WinHeight));
00027		RightButton.bIgnoreLDoubleclick = True;
00028	
00029		AnimButton = UWindowSmallButton(CreateControl(class'UWindowSmallButton', 0, WinHeight - 16, 48, 16));
00030		AnimButton.Text = AnimText;
00031		AnimButton.bAlwaysOnTop = True;
00032		AnimButton.bIgnoreLDoubleclick = True;
00033	}
00034	
00035	function SpawnPlayerMesh()
00036	{
00037		if (PlayerMesh == None)
00038		{
00039			PlayerMesh = GetEntryLevel().Spawn(class'RuneLookMesh', GetEntryLevel());
00040			PlayerMesh.Skeletal = GetPlayerOwner().Skeletal;
00041			PlayerMesh.SkelMesh = GetPlayerOwner().SkelMesh;
00042			PlayerMesh.SubstituteMesh = GetPlayerOwner().SubstituteMesh;
00043			PlayerMesh.Skin = GetPlayerOwner().Skin;
00044			PlayerMesh.NotifyClient = Self;
00045			PlayerMesh.SetDefaultPolyGroups();
00046		}
00047	}
00048	
00049	function Resized()
00050	{
00051		Super.Resized();
00052	
00053		CenterButton.SetSize(WinWidth/3, WinHeight);
00054		CenterButton.WinLeft = WinWidth/3;
00055	
00056		LeftButton.SetSize(WinWidth/3, WinHeight);
00057		LeftButton.WinLeft = 0;
00058	
00059		RightButton.SetSize(WinWidth/3, WinHeight);
00060		RightButton.WinLeft = (WinWidth/3)*2;
00061	
00062		AnimButton.WinLeft = 0;
00063		AnimButton.WinTop = WinHeight - 16;
00064	}
00065	
00066	function BeforePaint(Canvas C, float X, float Y)
00067	{
00068		AnimButton.AutoWidth(C);
00069		if (LeftButton.bMouseDown)
00070		{
00071			ViewRotator.Yaw += 256;
00072		}
00073		else if (RightButton.bMouseDown)
00074		{
00075			ViewRotator.Yaw -= 256;
00076		}
00077	}
00078	
00079	function Paint(Canvas C, float X, float Y) 
00080	{
00081		local float OldFov;
00082	
00083		C.Style = GetPlayerOwner().ERenderStyle.STY_Modulated;
00084		DrawStretchedTexture(C, 0, 0, WinWidth, WinHeight, Texture'BlackTexture');
00085		C.Style = GetPlayerOwner().ERenderStyle.STY_Normal;
00086	
00087		if (PlayerMesh == None)
00088			SpawnPlayerMesh();
00089	
00090		if (PlayerMesh != None)
00091		{
00092			OldFov = GetPlayerOwner().FOVAngle;
00093			GetPlayerOwner().SetFOVAngle(30);
00094	
00095			DrawClippedActor( C, WinWidth/2, WinHeight/2, PlayerMesh, False, ViewRotator, vect(-2, 0, 4) );
00096			GetPlayerOwner().SetFOVAngle(OldFov);
00097		}
00098	}
00099	
00100	function ClearSkins()
00101	{
00102		local int i;
00103	
00104		PlayerMesh.Skin = None;
00105		for(i=0;i<4;i++)
00106			PlayerMesh.MultiSkins[i] = None;
00107	}
00108	
00109	function SetSkin(texture NewSkin)
00110	{
00111		ClearSkins();
00112		PlayerMesh.Skin = NewSkin;
00113	}
00114	
00115	function SetClass(class<Pawn> newclass)
00116	{
00117		local int i;
00118	
00119		if (PlayerMesh == None)
00120			SpawnPlayerMesh();
00121	
00122		PlayerMesh.DrawScale = PlayerMesh.Default.DrawScale;
00123		PlayerMesh.Skeletal = newclass.Default.Skeletal;
00124		PlayerMesh.SkelMesh = newclass.Default.SkelMesh;
00125		PlayerMesh.SubstituteMesh = newclass.Default.SubstituteMesh;
00126	
00127		for (i=0; i<16; i++)
00128		{
00129			PlayerMesh.SkelGroupSkins[i] = newclass.Default.SkelGroupSkins[i];
00130			PlayerMesh.SkelGroupFlags[i] = newclass.Default.SkelGroupFlags[i];
00131		}
00132		PlayerMesh.LoopAnim(AnimTable[curAnim], 1.0, 0.1);
00133	}
00134	
00135	function SetTeam(int TeamNum)
00136	{
00137		local float brightness;
00138		brightness = 102;
00139		switch(TeamNum)
00140		{
00141		case 0:
00142			PlayerMesh.DesiredColorAdjust = vect(1,0,0)*brightness;
00143			break;
00144		case 1:
00145			PlayerMesh.DesiredColorAdjust = vect(0,0,1)*brightness;
00146			break;
00147		case 2:
00148			PlayerMesh.DesiredColorAdjust = vect(0,1,0)*brightness;
00149			break;
00150		case 3:
00151			PlayerMesh.DesiredColorAdjust = vect(1,1,0)*brightness;
00152			break;
00153		case 255:
00154			PlayerMesh.DesiredColorAdjust = vect(0,0,0);
00155			break;
00156		}
00157		PlayerMesh.ColorAdjust = PlayerMesh.DesiredColorAdjust;
00158	}
00159	
00160	function SetMesh(int MeshIndex)
00161	{
00162		local int i;
00163		PlayerMesh.bMeshEnviroMap = False;
00164		PlayerMesh.DrawScale = PlayerMesh.Default.DrawScale;
00165		PlayerMesh.SkelMesh = MeshIndex;
00166		for (i=0; i<16; i++)
00167			PlayerMesh.SkelGroupSkins[i] = None;
00168		PlayerMesh.SetDefaultPolygroups();
00169		PlayerMesh.LoopAnim(AnimTable[curAnim], 1.0, 0.1);
00170	}
00171	
00172	function SetNoAnimMesh(int MeshIndex)
00173	{
00174		local int i;
00175		PlayerMesh.bMeshEnviroMap = False;
00176		PlayerMesh.DrawScale = PlayerMesh.Default.DrawScale;
00177		PlayerMesh.SkelMesh = MeshIndex;
00178		for (i=0; i<16; i++)
00179			PlayerMesh.SkelGroupSkins[i] = None;
00180		PlayerMesh.SetDefaultPolygroups();
00181	}
00182	
00183	function Close(optional bool bByParent)
00184	{
00185		Super.Close(bByParent);
00186	/*	if(PlayerMesh != None)
00187		{
00188			PlayerMesh.Destroy();
00189			PlayerMesh = None;
00190		}*/
00191	}
00192	
00193	function Notify(UWindowDialogControl C, byte E)
00194	{
00195		switch (E)
00196		{
00197			case DE_Click:
00198				switch (C)
00199				{
00200					case AnimButton:
00201						AnimPressed();
00202						break;
00203					case CenterButton:
00204						ViewRotator = rot(0, 32768, 0) + CenterRotator;
00205						break;
00206				}
00207				break;
00208		}
00209	}
00210	
00211	function AnimPressed()
00212	{
00213		curAnim = (curAnim+1)%7;
00214		PlayerMesh.LoopAnim(AnimTable[curAnim], 1.0, 0.2);
00215	}
00216	
00217	function AnimEnd(RuneMeshActor MyMesh)
00218	{
00219	//	MyMesh.PlayAnim(AnimTable[curAnim], 1.0, 0.2);
00220	}
00221	
00222	defaultproperties
00223	{
00224	     AnimText="Change Anim"
00225	     AnimTable(0)=neutral_idle
00226	     AnimTable(1)=IDL_ALL_breathe1_AN0N
00227	     AnimTable(2)=MOV_ALL_run1_AA0N
00228	     AnimTable(3)=cine_vil_armpump1
00229	     AnimTable(4)=MOV_ALL_lstrafe1_AN0N
00230	     AnimTable(5)=MOV_ALL_rstrafe1_AN0N
00231	     AnimTable(6)=MOV_ALL_runback1_AA0S
00232	}

End Source Code