Engine
Class Actor

source: C:\XIII\Engine\Classes\Actor.uc
Core.Object
   |
   +--Engine.Actor
Direct Known Subclasses:Brush, Controller, DamageType, Decal, Decoration, Effects, Emitter, HUD, Info, Inventory, InventoryAttachment, Keypoint, Light, Mover, NavigationPoint, Note, Pawn, Pickup, Projectile, Projector, SMActorRotating, StaticMeshActor, Trail, Triggers, VehiclePart, CineHook, XIIIQuickSLManager, Spads01SpotLight, SMAttached

class Actor
extends Core.Object

//============================================================================= // Actor: The base class of all actors. // Actor is the base class of all gameplay objects. // A large number of properties, behaviors and interfaces are implemented in Actor, including: // // - Display // - Animation // - Physics and world interaction // - Making sounds // - Networking properties // - Actor creation and destruction // - Triggering and timers // - Actor iterator functions // - Message broadcasting // // This is a built-in Unreal class and it shouldn't be modified. //=============================================================================
Variables
 array Attached
           array of actors attached to this actor.
 array Attached
           array of actors attached to this actor.
 name AttachmentBone
           name of bone to which actor is attached (if attached to center of base, =='')
 Actor Base
           Actor we're standing on.
 model Brush
           Brush if DrawType=DT_Brush.
 vector ColLocation
           Actor's old location one move ago. Only for debugging
 int CollisionInfo
           Next actor in just-deleted chain.
 Actor Deleted
           Next actor in just-deleted chain.
 Actor Deleted
           Next actor in just-deleted chain.
 enum ESNDMaterial
           Brush if DrawType=DT_Brush.
 Pawn Instigator
           Pawn responsible for damage caused by this actor.
 Inventory Inventory
           Inventory chain.
 byte IterationCategory
           used by ActorInIterationCategory() iterator, to iterate actors in a given range of IterationCategory
 float LatentFloat
           Internal latent function use.
 array Leaves
           BSP leaves this actor is in.
 array Leaves
           BSP leaves this actor is in.
 LevelInfo Level
           Level this actor is on.
 MeshInstance MeshInstance
           Mesh instance.
 class MessageClass
           Internal/path building
 float NetPriority
           Higher priorities means update it more frequently.
 int NetTag
           Everything but the owner can see this actor.
 float NetUpdateFrequency
           How many seconds between net updates.
 Actor Owner
           Owner actor.
 PhysicsVolume PhysicsVolume
           physics volume this actor is currently in
 array Projectors
           Projected textures on this actor
 array Projectors
           Projected textures on this actor
 PointRegion Region
           Region this actor is in.
 vector RelativeLocation
           location relative to base/bone (valid if base exists)
 rotator RelativeRotation
           rotation relative to base/bone (valid if base exists)
 ENetRole RemoteRole
           Everything but the owner can see this actor.
 ENetRole Role
           Everything but the owner can see this actor.
 AnimRep SimAnim
           only replicated if bReplicateAnimations is true
 StaticMeshInstance StaticMeshInstance
           Contains per-instance static mesh data, like static lighting data.
 array Touching
           List of touching actors.
 array Touching
           List of touching actors.
 float TweenRate
           Tween-into rate.
 Level XLevel
           Level object.
 bool bClientDemoNetFunc
           True if we're client-side demo recording and this call originated from the remote.
 bool bClientDemoRecording
           True we are currently recording a client-side demo
 bool bDemoRecording
           True we are currently demo recording
 bool bEdLocked
           Locked in editor (no movement or rotation).
 bool bNetInitial
           Initial network update.
 bool bNetOwner
           Player owns this actor.
 bool bNetRelevant
           Actor is currently relevant. Only valid server side, only when replicating variables.
 bool bOwnerNoSee
           Everything but the owner can see this actor.
 bool bPathTemp
           Internal/path building
 bool bSelected
           Selected in UnrealEd.
 bool bTempEditor
           Internal UnrealEd.


Function Summary
 void ActorInIterationCategory(byte MinCategory, byte MaxCategory, out actor)
     
/* ActorInInterationCategory() returns actors that have an IterationCategory between MinCategory and MaxCategory, included.
*/
 void AnimBlendParams(int Stage, optional float, optional float, optional float, optional name)
 void AnimBlendToAlpha(int Stage, float TargetAlpha, float TimeInterval)
 bool AnimIsInGroup(int Channel, name GroupName)
 bool AttachToBone(Actor Attachment, name BoneName)
 void AutonomousPhysics(float DeltaSeconds)
 void BecomeViewTarget()
     
// Called by PlayerController when this actor becomes its ViewTarget.
//
 bool CanSplash()
 bool CheckWasVisible(float time)
 string ConsoleCommand(string Command)
     
// Execute a console command in the context of the current level and game engine.
 bool Destroy()
     
//
// Destroy this actor. Returns true if destroyed, false if indestructable.
// Destruction is latent. It occurs at the end of the tick.
//
 bool DetachFromBone(Actor Attachment)
 
simulated
DisplayDebug(Canvas Canvas, out float, out float)
     
/* DisplayDebug()
list important actor variable on canvas.  HUD will call DisplayDebug() on the current ViewTarget when
the ShowDebug exec is used
*/
 
simulated
DumpContent(float TimeStamp, int tabulation)
 void EnableChannelNotify(int Channel, int Switch)
     
// Animation notifications.
 void Error(string S)
     
// Handle an error and kill this one actor.
 void FinishAnim(optional int)
 void FinishInterpolation()
     
// Physics control.
 void GetAnimParams(int Channel, out name, out float, out float)
 coords GetBoneCoords(name BoneName)
 rotator GetBoneRotation(name BoneName, optional int)
 Box GetBoundingBox()
 bool GetCacheEntry(int Num, out string, out string)
 vector GetCartoonLightDir()
 String GetHumanReadableName()
     
// Returns the human readable string representation of an object.
//
// CHANGED function name from GetHumanName()
 String GetItemName(string FullName)
     
// Returns the string representation of the name of an object without the package
// prefixes.
//
 name GetLastTraceBone()
     
// Get the last bone name, intersected during the last Trace call with the flag TRACETYPE_RequestBones.
 string GetLocalString(optional int, optional PlayerReplicationInfo, optional PlayerReplicationInfo)
     
// Get localized message string associated with this actor
 string GetMapName(string NameEnding, string MapName, int Dir)
     
// Find files.
 Material GetMaterial(int Index)
 string GetNextInt(string ClassName, int Num)
 void GetNextIntDesc(string ClassName, int Num, out string, out string)
 void GetNextSkin(string Prefix, string CurrentSkin, int Dir, out string, out string)
 int GetNotifyChannel()
 plane GetRenderBoundingSphere()
     
//=========================================================================
// Rendering.
 vector GetRootLocation()
 vector GetRootLocationDelta()
 rotator GetRootRotation()
 rotator GetRootRotationDelta()
 string GetURLMap()
 bool HasAnim(name Sequence)
 Actor IntersectWaterPlane(vector Start, vector End, out vector)
 bool IsAnimating(optional int)
 bool IsInPain()
 bool IsInVolume(Volume aVolume)
 bool IsTweening(int Channel)
 void KillAllSounds()
     
//Kill all sounds
 void LinkSkelAnim(MeshAnimation Anim)
     
// Skeletal animation.
 void LockRootMotion(int Lock)
 void LoopAnim(name Sequence, optional float, optional float, optional int)
 void MakeNoise(float Loudness)
     
/* Inform other creatures that you've made a noise
 they might hear (they are sent a HearNoise message)
 Senders of MakeNoise should have an instigator if they are not pawns.
*/
 void MatchStarting()
 bool Move(vector Delta)
     
// Movement.
 bool MoveCacheEntry(string GUID, optional string)
 bool MoveSmooth(vector Delta)
 bool NearSpot(vector Spot)
     
// NearSpot() returns true is spot is within collision cylinder
// FIXME - make intrinsic
 float PSX2BootstrapDemoGetGamePlayTimeout()
     
// Gameplay Timeout
 void PauseAllSounds()
     
//Pause all sounds
 void PauseMusic()
     
//Pause music and streamed ambient sounds
 void PlayAnim(name Sequence, optional float, optional float, optional int)
     
// Animation functions.
 void PlayMusic(sound Sound, optional int, optional int, optional int, optional int, optional int)
     
// Play a music
 void PlayRolloffSound(sound Sound, Actor RolloffActor, optional int, optional int, optional int, optional int, optional int)
     
// Play a sound
 void PlaySndDeathOno(deathono Sound, int CodeMesh, int Timbre)
     
//Play deathono
 void PlaySndPNJOno(sndono Sound, int CodeMesh, int Timbre)
     
//Play sndono
 void PlaySndPNJStep(sndpnjstep Sound, float Speed, int SndStepCategory, bool bSilent)
     
// Play footstepsounds
 void PlaySndXIIIStep(sndxiiistep Sound, float Speed, int EndStep, bool bSilent)
 void PlaySound(sound Sound, optional int, optional int, optional int, optional int, optional int)
     
// Play a sound effect.
 void PlayStrAmb(sound Sound)
     
// Play a streamed ambient sound
 bool PlayStrVoice(string SoundName, optional actor)
     
//native(355) static final function bool CanHearFootstepSound
//(//to know if footsteps can be heard...
//);
//Play a streamed voice
 void PlayVoice(sound Sound, optional int, optional int, optional int, optional int, optional int)
     
// Play a voice (wave or handler)
 bool PlayerCanSeeMe()
     
/* PlayerCanSeeMe returns true if any player (server) or the local player (standalone
or client) has a line of sight to actor's location.
*/
 bool PlusDir(int A, int B)
     
// returns true if shortest rotation direction is in the positive (clockwise) direction
// from A to B
 void RecomputeBoundingVolume(bool Static)
 void RefreshDisplaying()
 void RefreshLighting()
 void RenderOverlays(Canvas Canvas)
     
/* RenderOverlays()
called by player's hud to request drawing of actor specific overlays onto canvas
*/
 void ReplaceATextureByAnOther(Texture SrcTexture, Texture DestTexture)
 void ReplaceText(out string, string Replace, string With)
 void Reset()
     
/* Reset()
reset actor to initial state - used when restarting level without reloading.
*/
 void ResetInputs()
 void ResumeAllSounds()
     
//Resume all sounds
 void ResumeMusic()
     
//Resume music and streamed ambient sounds
 bool SaveAtCheckpoint(string TeleporterName, string ContentDescription)
     
//=============================================================================
 void SetBase(Actor NewBase, optional vector)
     
// Relations.
 void SetBoneDirection(name BoneName, rotator BoneTurn, optional vector, optional float)
 void SetBoneLocation(name BoneName, optional vector, optional float)
 void SetBoneRotation(name BoneName, optional rotator, optional int, optional float)
 void SetBoneScale(int Slot, optional float, optional name)
 void SetBoneScalePerAxis(int Slot, optional float, optional float, optional float, optional name)
 void SetCollision(optional bool, optional bool, optional bool)
     
// Collision.
 bool SetCollisionSize(float NewRadius, float NewHeight)
 void SetDefaultDisplayProperties()
 void SetDisplayProperties(ERenderStyle NewStyle, Material NewTexture, bool bLighting)
     
// Set the display properties of an actor.  By setting them through this function, it allows
// the actor to modify other components (such as a Pawn's weapon) or to adjust the result
// based on other factors (such as a Pawn's other inventory wanting to affect the result)
 void SetDrawScale(float NewScale)
 void SetDrawScale3D(vector NewScale3D)
 void SetDrawType(EDrawType NewDrawType)
 bool SetLocation(vector NewLocation)
 void SetMusicSliderPos(int MusicVolume)
 void SetOwner(Actor NewOwner)
 void SetPhysics(EPhysics newPhysics)
 bool SetRelativeLocation(vector NewLocation)
 bool SetRelativeRotation(rotator NewRotation)
     
// SetRelativeRotation() sets the rotation relative to the actor's base
 bool SetRotation(rotator NewRotation)
 void SetSoundMode(int SoundMode)
     
//=============================================================================
// Sound functions.
//MC for HarmonX integration
 void SetTimer(float NewTimerRate, bool bLoop)
     
// Causes Timer() events every NewTimerRate seconds.
 void SetTimer2(float NewTimerRate, bool bLoop)
     
// Causes Timer2() events every NewTimerRate seconds.
 void SetVolume(float volume)
 void Sleep(float Seconds)
     
// Latent functions.
 
simulated
StartInterpolation()
     
/* StartInterpolation()
when this function is called, the actor will start moving along an interpolation path
beginning at Dest
*/
 void StopActorSounds()
     
// Stop all actor sounds
 void StopAllSounds()
     
// Stop all sounds
 void StopAnimating()
 void StopMusic()
     
// Stop musics and streamed ambient sounds
 void StopSound(sound Sound)
     
// Stop a sound effect.
 void StopVoice()
     
// Stop voices
 bool TouchingActor(Actor A)
 void TweenAnim(name Sequence, float Time, optional int)
 void UntriggerEvent(Name EventName, Actor Other, Pawn EventInstigator)
     
/*
Untrigger an event
*/



Source Code


00001	//=============================================================================
00002	// Actor: The base class of all actors.
00003	// Actor is the base class of all gameplay objects.
00004	// A large number of properties, behaviors and interfaces are implemented in Actor, including:
00005	//
00006	// -	Display
00007	// -	Animation
00008	// -	Physics and world interaction
00009	// -	Making sounds
00010	// -	Networking properties
00011	// -	Actor creation and destruction
00012	// -	Triggering and timers
00013	// -	Actor iterator functions
00014	// -	Message broadcasting
00015	//
00016	// This is a built-in Unreal class and it shouldn't be modified.
00017	//=============================================================================
00018	class Actor extends Object
00019		abstract
00020		native
00021		nativereplication;
00022	
00023	// Imported data (during full rebuild).
00024	#exec Texture Import File=Textures\S_Actor.pcx Name=S_Actor Mips=Off MASKED=1 COMPRESS=DXT1
00025	
00026	// Be very carefull if you add variable just before or after LastRenderTime.
00027	// The engine assume that bDecor1Light folow LastRenderTime four byte next, and that LastRenderTime is four byte
00028	// alligned.
00029	
00030	var			float			LastRenderTime;	// last time this actor was rendered.
00031	
00032	var(Lighting)		bool	     bDecor1Light;	 // Light decor 1
00033	var(Lighting)		bool	     bDecor2Light;	 // Light decor 2
00034	var(Lighting)		bool	     bDecor3Light;	 // Light decor 3
00035	var(Lighting)		bool	     bActorLight;	 // Light actor
00036	var(Lighting)		bool	     bDecor4Light;	 // Light decor 4
00037	var(Lighting)		bool	     bDecor5Light;	 // Light decor 5
00038	var(Lighting)		bool	     bDecor6Light;	 // Light decor 6
00039	var(Lighting)		bool	     bDecor7Light;	 // Light decor 7
00040	var(Lighting)		bool	     bDecor8Light;	 // Light decor 8
00041	var(Lighting)		bool	     bDecor9Light;	 // Light decor 9
00042	var(Lighting)		bool	     bDecor10Light;	 // Light decor 10
00043	
00044	// Flags.
00045	var			  const bool	bStatic;			// Does not move or change over time. Don't let L.D.s change this - screws up net play
00046	var(Advanced)		bool	bHidden;			// Is hidden during gameplay.
00047	var(Advanced) const bool	bNoDelete;			// Cannot be deleted during play.
00048	var					bool	bAnimFinished;		// Unlooped animation sequence has finished.
00049	var					bool	bAnimByOwner;		// Animation dictated by owner.
00050	var			  const	bool	bDeleteMe;			// About to be deleted.
00051	var			  const bool	bTicked;			// Actor has been updated.
00052	var					bool	bDynamicLight;		// Temporarily treat this as a dynamic light.
00053	var					bool	bTimerLoop;			// Timer loops (else is one-shot).
00054	var					bool	bTimer2Loop;		// Timer2 loops (else is one-shot).
00055	var(Advanced)		bool	bCanTeleport;		// This actor can be teleported.
00056	var 				bool	bOwnerNoSee;		// Everything but the owner can see this actor.
00057	var					bool    bOnlyOwnerSee;		// Only owner can see this actor.
00058	var			  const	bool	bAlwaysTick;		// Update even when players-only.
00059	var(Advanced)		bool    bHighDetail;		// Only show up on high-detail.
00060	var(Advanced)		bool	bStasis;			// In StandAlone games, turn off if not in a recently rendered zone turned off if  bStasis  and physics = PHYS_None or PHYS_Rotating.
00061	var					bool	bTrailerSameRotation; // If PHYS_Trailer and true, have same rotation as owner.
00062	var					bool	bTrailerPrePivot;	// If PHYS_Trailer and true, offset from owner by PrePivot.
00063	var					bool	bClientAnim;		// Don't replicate any animations - animation done client-side
00064	var(Collision)		bool	bWorldGeometry;		// Collision and Physics treats this actor as world geometry
00065	var(Display)		bool    bAcceptsProjectors;	// Projectors can project onto this actor
00066	var					bool	bOrientOnSlope;		// when landing, orient base on slope of floor
00067	var(Display)		Bool	bEaseInteract;		// Used to make object easily interacted with (even if not just in the crosshair, rather interactive if on screen)
00068	var(Display)		Bool	bInteractive;		// Can be interactive (used to speed up/debug the iteraction icons/functions)
00069	//var					bool    bWasSNFiltered;      // Mainly for debugging - the way this actor was inserted into Octree.
00070	
00071	// Networking flags
00072	var			  const	bool	bNetTemporary;				// Tear-off simulation in network play.
00073	var			  const	bool	bNetOptional;				// Actor should only be replicated if bandwidth available.
00074	var			  const	bool	bNetDirty;					// set when any attribute is assigned a value in unrealscript, reset when the actor is replicated
00075	var					bool	bAlwaysRelevant;			// Always relevant for network.
00076	var					bool	bReplicateInstigator;		// Replicate instigator to client (used by bNetTemporary projectiles).
00077	var					bool	bReplicateMovement;			// if true, replicate movement/location related properties
00078	var					bool	bSkipActorPropertyReplication; // if true, don't replicate actor class variables for this actor
00079	var					bool	bUpdateSimulatedPosition;	// if true, update velocity/location after initialization for simulated proxies
00080	var					bool	bTearOff;					// if true, this actor is no longer replicated to new clients, and
00081															// is "torn off" (becomes a ROLE_Authority) on clients to which it was being replicated.
00082	var					bool	bOnlyDirtyReplication;		// if true, only replicate actor if bNetDirty is true - useful if no C++ changed attributes (such as physics)
00083															// bOnlyDirtyReplication only used with bAlwaysRelevant actors
00084	var					bool	bReplicateAnimations;		// Should replicate SimAnim
00085	var(Advanced)		bool    bIgnoreVignetteAlpha;       // Ignore alpha filter for screen shot.
00086	var(Advanced)		bool    bDelayDisplay;				// Draw this object without Z buffer just before the hud.
00087	var(Advanced)		bool	bSpecialDelayFov;   		// If bDelayDisplay is also True, use a fov equal to 50.
00088	
00089	// Display.
00090	var(Display)		bool      bUnlit;					// Lights don't affect actor.
00091	var(Display)		bool      bNoSmooth;				// Don't smooth actor's texture.
00092	var(Display)		bool      bShadowCast;			// Casts static shadows.
00093	var(Display)		bool		bStaticLighting;		// Uses raytraced lighting.
00094	var(Display)		bool		bNoAmbientLight;		// Don't use the ambient light.
00095	var(Display)		bool		bNoImpact;				// Don't project impact on this actor.
00096	var(Display)		bool		bIgnoreFog;				// Ignore fog, for sprite only.
00097	var(Display)		bool		bForceInUniverse;		// Force the actor to be in the universe zone.
00098	var(Display)		bool      bIgnoreDynLight;	    // Ignore dynamic lighting.
00099	
00100	// Advanced.
00101	var					bool		bHurtEntry;				// keep HurtRadius from being reentrant
00102	var(Advanced)		bool		bGameRelevant;			// Always relevant for game
00103	var(Advanced)		bool		bCollideWhenPlacing;	// This actor collides with the world when placing.
00104	var					bool		bTravel;				// Actor is capable of travelling among servers.
00105	var(Advanced)		bool		bMovable;				// Actor can be moved.
00106	// XIIIUNUSED var(Events)			bool		bLocalGameEvent;		// this event should be saved as a local saved game event
00107	// XIIIUNUSED var(Events)			bool		bTravelGameEvent;		// this event should travel across levels as a saved game event
00108	var					bool		bDestroyInPainVolume;	// destroy this actor if it enters a pain volume
00109	var					bool		bPendingDelete;			// set when actor is about to be deleted (since endstate and other functions called
00110	
00111	var(Sound)			bool			bHasRollOff;				// Disable rolloff if false.
00112	var(Sound)			bool			bHasPosition;				// Actor has no position if false.
00113	var(Sound)			bool			bUnderwater;
00114	var					bool bLeftFoot;
00115													// during deletion process before bDeleteMe is set).
00116	// Collision flags.
00117	var(Collision) const bool bCollideActors;		// Collides with other actors.
00118	var(Collision)		bool       bCollideWorld;		// Collides with the world.
00119	var(Collision)		bool       bBlockActors;			// Blocks other nonplayer actors.
00120	var(Collision)		bool       bBlockPlayers;		// Blocks other player actors.
00121	var(Collision)		bool       bProjTarget;			// Projectiles should potentially target this actor.
00122	var(Collision)		bool	   bBlockZeroExtentTraces; // block zero extent actors/traces
00123	var(Collision)		bool	   bBlockNonZeroExtentTraces;	// block non-zero extent actors/traces
00124	var(Collision)		bool	   bUseCylinderCollision;// Force axis aligned cylinder collision (useful for static mesh pickups, etc.)
00125	
00126	var(Collision)		bool	   bCanSeeThrough;                       // if true, it is possible to see through the actor (like a window)
00127	var(Collision)		bool	   bCanShootThroughWithRayCastingWeapon; // if true, it is possible to shoot through the actor with a ray casting weapon
00128	var(Collision)		bool	   bCanShootThroughWithProjectileWeapon; // if true, it is possible to shoot through the actor with a projectile weapon
00129	
00130	// Lighting.
00131	var(Display)		bool	     bActorShadows; // Light casts actor shadows.
00132	var(Lighting)		bool	     bIgnoredByShadows; // Light is ignored by  shadows.
00133	var(Lighting)		bool	     bLensFlare;    // Whether to use zone lens flare.
00134	var(Lighting)		bool	     bLightOwnZone; // The light affect only it's own zone.
00135	var(Display)		bool	     bUseOnlyPivotAmbient;
00136	var(Display)		bool		 bVisibleOnlyOwnZone;	// The actor is visible only from it's own zone.
00137	var					bool		 bLightChanged;	// Recalculate this light's lighting now.
00138	
00139	//-----------------------------------------------------------------------------
00140	// Physics.
00141	
00142	// Options.
00143	var(Movement)		bool        bBounce;           // Bounces when hits ground fast.
00144	var(Movement)		bool		  bFixedRotationDir; // Fixed direction of rotation.
00145	var(Movement)		bool		  bRotateToDesired;  // Rotate to DesiredRotation.
00146	var					bool        bInterpolating;    // Performing interpolating.
00147	var			  const bool  bJustTeleported;   // Used by engine physics - not valid for scripts.
00148	
00149	// Priority Parameters
00150	// Actor's current physics mode.
00151	var(Movement) const enum EPhysics
00152	{
00153		PHYS_None,
00154		PHYS_Walking,
00155		PHYS_Falling,
00156		PHYS_Swimming,
00157		PHYS_Flying,
00158		PHYS_Rotating,
00159		PHYS_Projectile,
00160		PHYS_Interpolating,
00161		PHYS_MovingBrush,
00162		PHYS_Spider,
00163		PHYS_Trailer,
00164		PHYS_Ladder,
00165		PHYS_RootMotion,
00166	} Physics;
00167	
00168	// Collision category
00169	enum EColCategory
00170	{
00171		ColType_User,
00172		ColType_NoCol,
00173		ColType_StaticSolid,
00174		ColType_StaticGlass,
00175		ColType_StaticGrid,
00176		ColType_StaticSolidOnlyWeapon,
00177		ColType_MoverSolid,
00178		ColType_MoverGlass,
00179		ColType_MoverGrid,
00180		ColType_Pawn,
00181		ColType_Pickup,
00182		ColType_PickupArmeImpro
00183	};
00184	
00185	// Net variables.
00186	enum ENetRole
00187	{
00188		ROLE_None,              // No role at all.
00189		ROLE_DumbProxy,			// Dumb proxy of this actor.
00190		ROLE_SimulatedProxy,	// Locally simulated proxy of this actor.
00191		ROLE_AutonomousProxy,	// Locally autonomous proxy of this actor.
00192		ROLE_Authority,			// Authoritative control over the actor.
00193	};
00194	var ENetRole Role;
00195	var ENetRole RemoteRole;
00196	
00197	// Drawing effect.
00198	var(Display) const enum EDrawType
00199	{
00200		DT_None,
00201		DT_Sprite,
00202		DT_Mesh,
00203		DT_Brush,
00204		DT_RopeSprite,
00205		DT_VerticalSprite,
00206		DT_Terraform,
00207		DT_SpriteAnimOnce,
00208		DT_StaticMesh,
00209		DT_DrawType,
00210		DT_Particle,
00211		DT_AntiPortal,
00212		DT_Trail
00213	} DrawType;
00214	
00215	var const transient int		NetTag;
00216	var			float			LastRenderDist;	// last distance this actor was rendered.
00217	var(Events) name			Tag;			// Actor's tag name.
00218	
00219	// Execution and timer variables.
00220	var				float       TimerRate;		// Timer event, 0=no timer.
00221	var		const	float       TimerCounter;	// Counts up until it reaches TimerRate.
00222	var				float       Timer2Rate;     // Same for Timer 2
00223	var		const	float       Timer2Counter;
00224	var(Advanced)	float		LifeSpan;		// How old the object lives before dying, 0=forever.
00225	
00226	// Animation variables. #SKEL: Left in for this build only to wrap up any backward compatibility - but not used. - Erik
00227	var(Display) name         AnimSequence;  // Animation sequence we're playing.
00228	var(Display) float        AnimFrame;     // Current animation frame, 0.0 to 1.0.
00229	var(Display) float        AnimRate;      // Animation rate in frames per second, 0=none, negative=velocity scaled.
00230	var          float        TweenRate;     // Tween-into rate.
00231	
00232	var transient MeshInstance MeshInstance;	// Mesh instance.
00233	
00234	// Owner.
00235	var         const Actor   Owner;			// Owner actor.
00236	var(Object) name InitialState;
00237	var(Object) name Group;
00238	
00239	//-----------------------------------------------------------------------------
00240	// Structures.
00241	
00242	// Identifies a unique convex volume in the world.
00243	struct PointRegion
00244	{
00245		var zoneinfo Zone;       // Zone.
00246		var int      iLeaf;      // Bsp leaf.
00247		var byte     ZoneNumber; // Zone number.
00248	};
00249	
00250	//-----------------------------------------------------------------------------
00251	// Major actor properties.
00252	
00253	// Scriptable.
00254	var       const LevelInfo Level;         // Level this actor is on.
00255	var transient const Level XLevel;        // Level object.
00256	var(Events) name          Event;         // The event this actor causes.
00257	var Pawn                  Instigator;    // Pawn responsible for damage caused by this actor.
00258	var(Sound) sound          AmbientSound;  // Ambient sound effect.
00259	var Inventory             Inventory;     // Inventory chain.
00260	var const Actor           Base;          // Actor we're standing on.
00261	var const PointRegion     Region;        // Region this actor is in.
00262	var transient array<int>  Leaves;		 // BSP leaves this actor is in.
00263	
00264	// Internal.
00265	var const float						LatentFloat;   // Internal latent function use.
00266	var transient const array<Actor>    Touching;		 // List of touching actors.
00267	
00268	//var const transient array<int>		OctreeNodes;// Array of nodes of the octree Actor is currently in. Internal use only.
00269	//var const transient Box				OctreeBox;     // Actor bounding box cached when added to Octree. Internal use only.
00270	//var const transient vector			OctreeBoxCenter;
00271	//var const transient vector			OctreeBoxRadii;
00272	var const actor						Deleted;       // Next actor in just-deleted chain.
00273	
00274	// Internal tags.
00275	//var const native int CollisionTag, ActorTag;
00276	var const transient int CollisionInfo;
00277	
00278	// The actor's position and rotation.
00279	var const	PhysicsVolume	PhysicsVolume;	// physics volume this actor is currently in
00280	var(Movement) const vector	Location;		// Actor's location; use Move to set.
00281	var(Movement) const rotator Rotation;		// Rotation.
00282	var(Movement) vector		Velocity;		// Velocity.
00283	var			  vector        Acceleration;	// Acceleration.
00284	
00285	// Attachment related variables
00286	var(Movement)	name	AttachTag;
00287	var const array<Actor>  Attached;			// array of actors attached to this actor.
00288	var const vector		RelativeLocation;	// location relative to base/bone (valid if base exists)
00289	var const rotator		RelativeRotation;	// rotation relative to base/bone (valid if base exists)
00290	var const name			AttachmentBone;		// name of bone to which actor is attached (if attached to center of base, =='')
00291	
00292	// Projectors
00293	struct InstanceProjectorInfo { var int a,b,c; };	// Hack to to fool C++ header generation...
00294	var const transient array<InstanceProjectorInfo> Projectors;// Projected textures on this actor
00295	
00296	//-----------------------------------------------------------------------------
00297	// Display properties.
00298	
00299	var(Display) Material		Texture;			// Sprite texture.if DrawType=DT_Sprite
00300	var(Display) mesh			Mesh;				// Mesh if DrawType=DT_Mesh.
00301	var(Display) StaticMesh		StaticMesh;			// StaticMesh if DrawType=DT_StaticMesh
00302	var StaticMeshInstance		StaticMeshInstance; // Contains per-instance static mesh data, like static lighting data.
00303	var const export model		Brush;				// Brush if DrawType=DT_Brush.
00304	var(Display) const float	DrawScale;			// Scaling factor, 1.0=normal size.
00305	var(Display) const vector	DrawScale3D;		// Scaling vector, (1.0,1.0,1.0)=normal size.
00306	var			 vector			PrePivot;			// Offset from box center for drawing.
00307	var(Display) array<Material> Skins;				// Multiple skin support - not replicated.
00308	
00309	//-----------------------------------------------------------------------------
00310	// MC for HarmonX integration
00311	// Sound.
00312	// Ambient sound.
00313	var(Sound)	  float	PanCoeff;					// Coefficient to compute pan for this actor : ( 0 for	no pan )
00314	var(RollOff)  float	SaturationDistance;			// Saturation Radius of actor sounds.
00315	var(RollOff)  float	StabilisationDistance;		// Stabilisation Radius of actor sounds.
00316	var(RollOff)  float	StabilisationVolume;		// Volume of actors sounds at stabilisation radius.
00317	var(RollOff)  float	VoicesSaturationDistance;			// Saturation Radius of actor sounds for voices.
00318	var(RollOff)  float	VoicesStabilisationDistance;		// Stabilisation Radius of actor sounds for voices.
00319	var(RollOff)  float	VoicesStabilisationVolume;		// Volume of actors sounds at stabilisation radius for voices.
00320	
00321	const SNDType_Effect     = 0x00000001;
00322	const SNDType_Voice	     = 0x00000002;
00323	const SNDType_StrVoice   = 0x00000004;
00324	const SNDType_StrAmb     = 0x00000008;
00325	const SNDType_Music      = 0x00000010;
00326	const SNDType_Menu       = 0x00000020;
00327	const SNDType_Ryan       = 0x00000040;
00328	const SNDType_MicroCanon = 0x00000080;
00329	const SNDType_UnderWater = 0x00000100;
00330	const SNDType_SFXOnly	 = 0x00000200;
00331	const SNDType_All	     = 0x00000FFF;
00332	
00333	enum ESNDMusicVolume
00334	{
00335		SNDMusic_Off,
00336		SNDMusic_Light,
00337		SNDMusic_Normal
00338	};
00339	//end MC
00340	
00341	//-----------------------------------------------------------------------------
00342	// Collision.
00343	
00344	// Collision size.
00345	var(Collision) const float CollisionRadius;		// Radius of collision cyllinder.
00346	var(Collision) const float CollisionHeight;		// Half-height cyllinder.
00347	
00348	//-----------------------------------------------------------------------------
00349	// Lighting.
00350	
00351	var(Display) byte			AmbientGlow;		// Ambient brightness, or 255=pulsing.
00352	
00353	// Style for rendering sprites, meshes.
00354	var(Display) enum ERenderStyle
00355	{
00356		STY_None,
00357		STY_Normal,
00358		STY_Masked,
00359		STY_Translucent,
00360		STY_Modulated,
00361		STY_Alpha,
00362		STY_Particle
00363	} Style;
00364	
00365	var enum ESNDMaterial
00366	{
00367		SND_FootStep,
00368		SND_XIIIFootStep,
00369		SND_PNJStep,
00370		SND_XIIIStep,
00371		SND_Jump,
00372		SND_XIIIJump,
00373		SND_Hit
00374	} SNDMaterial;
00375	
00376	// Light modulation.
00377	var(Lighting) enum ELightType
00378	{
00379		LT_None,
00380		LT_Steady,
00381		LT_Pulse,
00382		LT_Blink,
00383		LT_Flicker,
00384		LT_Strobe,
00385		LT_BackdropLight,
00386		LT_SubtlePulse,
00387	} LightType;
00388	
00389	// Spatial light effect to use.
00390	var(Lighting) enum ELightEffect
00391	{
00392		LE_None,
00393		LE_TorchWaver,
00394		LE_FireWaver,
00395		LE_WateryShimmer,
00396		LE_Searchlight,
00397		LE_SlowWave,
00398		LE_FastWave,
00399		LE_CloudCast,
00400		LE_StaticSpot,
00401		LE_Shock,
00402		LE_Disco,
00403		LE_Warp,
00404		LE_Spotlight,
00405		LE_NonIncidence,
00406		LE_Shell,
00407		LE_OmniBumpMap,
00408		LE_Interference,
00409		LE_Cylinder,
00410		LE_Rotor,
00411		LE_Unused,
00412		LE_Sunlight
00413	} LightEffect;
00414	
00415	// Lighting info.
00416	var(LightColor) byte
00417		LightBrightness,
00418		LightHue,
00419		LightSaturation;
00420	
00421	// Light properties.
00422	var(Lighting) byte
00423		LightRadius,
00424		LightPeriod,
00425		LightPhase,
00426		LightCone;
00427	
00428	var const byte IterationCategory;        // used by ActorInIterationCategory() iterator, to iterate actors in a given range of IterationCategory
00429	
00430	// Lighting group.
00431	var(Display) enum ELightingGroup
00432	{
00433		LG_Decor1,
00434		LG_Decor2,
00435		LG_Decor3,
00436		LG_Actor,
00437		LG_Decor4,
00438		LG_Decor5,
00439		LG_Decor6,
00440		LG_Decor7,
00441		LG_Decor8,
00442		LG_Decor9,
00443		LG_Decor10
00444	} bSLightGroup;
00445	
00446	// Collision category.
00447	var(Collision) EColCategory ColCategory;
00448	
00449	// Physics properties.
00450	var(Movement) float       Mass;				// Mass of this actor.
00451	var(Movement) float       Buoyancy;			// Water buoyancy.
00452	var(Movement) rotator	  RotationRate;		// Change in rotation per second.
00453	var(Movement) rotator     DesiredRotation;	// Physics will smoothly rotate actor to this rotation if bRotateToDesired.
00454	var			  Actor		  PendingTouch;		// Actor touched during move which wants to add an effect after the movement completes
00455	var       const vector    ColLocation;		// Actor's old location one move ago. Only for debugging
00456	
00457	const MAXSTEPHEIGHT = 35.0; // Maximum step height walkable by pawns
00458	
00459	//-----------------------------------------------------------------------------
00460	// Animation replication (can be used to replicate channel 0 anims for dumb proxies)
00461	struct AnimRep
00462	{
00463		var name AnimSequence;
00464		var bool bAnimLoop;
00465		var byte AnimRate;		// note that with compression, max replicated animrate is 4.0
00466		var byte AnimFrame;
00467		var byte TweenRate;		// note that with compression, max replicated tweentime is 4 seconds
00468	};
00469	
00470	var transient AnimRep		  SimAnim;		   // only replicated if bReplicateAnimations is true
00471	
00472	// AnimStruct used for scripted sequences
00473	struct AnimStruct
00474	{
00475		var() name AnimSequence;
00476		var() name BoneName;
00477		var() float AnimRate;
00478		var() byte alpha;
00479		var() byte LeadIn;
00480		var() byte LeadOut;
00481		var() bool bLoopAnim;
00482	};
00483	
00484	
00485	//-----------------------------------------------------------------------------
00486	// Networking.
00487	
00488	// Network control.
00489	var float NetPriority; // Higher priorities means update it more frequently.
00490	var float NetUpdateFrequency; // How many seconds between net updates.
00491	
00492	// Symmetric network flags, valid during replication only.
00493	var const bool bNetInitial;       // Initial network update.
00494	var const bool bNetOwner;         // Player owns this actor.
00495	var const bool bNetRelevant;      // Actor is currently relevant. Only valid server side, only when replicating variables.
00496	var const bool bDemoRecording;	  // True we are currently demo recording
00497	var const bool bClientDemoRecording;// True we are currently recording a client-side demo
00498	var const bool bClientDemoNetFunc;// True if we're client-side demo recording and this call originated from the remote.
00499	
00500	
00501	//Editing flags
00502	var(Advanced) bool        bHiddenEd;     // Is hidden during editing.
00503	var(Advanced) bool        bHiddenEdGroup;// Is hidden by the group brower.
00504	var(Advanced) bool        bDirectional;  // Actor shows direction arrow during editing.
00505	var const bool            bSelected;     // Selected in UnrealEd.
00506	var bool                  bEdLocked;     // Locked in editor (no movement or rotation).
00507	var(Advanced) bool        bEdShouldSnap; // Snap to grid in editor.
00508	var			  bool        bEdSnap;       // Should snap to grid in UnrealEd.
00509	var           const bool  bTempEditor;   // Internal UnrealEd.
00510	var	bool				  bObsolete;	 // actor is obsolete - warn level designers to remove it
00511	var(Advanced) bool        bPathColliding;// this actor should collide (if bWorldGeometry && bBlockActors is true) during path building (ignored if bStatic is true, as actor will always collide during path building)
00512	var           bool		  bPathTemp;	 // Internal/path building
00513	
00514	var	bool				  bScriptInitialized; // set to prevent re-initializing of actors spawned during level startup
00515	
00516	var class<LocalMessage> MessageClass;
00517	
00518	//-----------------------------------------------------------------------------
00519	// Enums.
00520	
00521	// Travelling from server to server.
00522	enum ETravelType
00523	{
00524		TRAVEL_Absolute,	// Absolute URL.
00525		TRAVEL_Partial,		// Partial (carry name, reset server).
00526		TRAVEL_Relative,	// Relative URL.
00527	};
00528	
00529	
00530	// double click move direction.
00531	enum EDoubleClickDir
00532	{
00533		DCLICK_None,
00534		DCLICK_Left,
00535		DCLICK_Right,
00536		DCLICK_Forward,
00537		DCLICK_Back,
00538		DCLICK_Active,
00539		DCLICK_Done
00540	};
00541	
00542	//-----------------------------------------------------------------------------
00543	// natives.
00544	
00545	// Execute a console command in the context of the current level and game engine.
00546	native static function string ConsoleCommand( string Command );
00547	
00548	//-----------------------------------------------------------------------------
00549	// Network replication.
00550	
00551	replication
00552	{
00553		// Location
00554		unreliable if ( (!bSkipActorPropertyReplication || bNetInitial) && bReplicateMovement
00555						&& (((RemoteRole == ROLE_AutonomousProxy) && bNetInitial)
00556							|| ((RemoteRole == ROLE_SimulatedProxy) && (bNetInitial || bUpdateSimulatedPosition) && ((Base == None) || Base.bWorldGeometry))
00557							|| ((RemoteRole == ROLE_DumbProxy) && ((Base == None) || Base.bWorldGeometry))) )
00558			Location;
00559	
00560		unreliable if ( (!bSkipActorPropertyReplication || bNetInitial) && bReplicateMovement
00561						&& ((DrawType == DT_Mesh) || (DrawType == DT_StaticMesh))
00562						&& (((RemoteRole == ROLE_AutonomousProxy) && bNetInitial)
00563							|| ((RemoteRole == ROLE_SimulatedProxy) && (bNetInitial || bUpdateSimulatedPosition) && ((Base == None) || Base.bWorldGeometry))
00564							|| ((RemoteRole == ROLE_DumbProxy) && ((Base == None) || Base.bWorldGeometry))) )
00565			Rotation;
00566	
00567		unreliable if ( (!bSkipActorPropertyReplication || bNetInitial) && bReplicateMovement
00568						&& RemoteRole<=ROLE_SimulatedProxy )
00569			Base;
00570	
00571		unreliable if( (!bSkipActorPropertyReplication || bNetInitial) && bReplicateMovement
00572						&& RemoteRole<=ROLE_SimulatedProxy && (Base != None) && !Base.bWorldGeometry)
00573			RelativeRotation, RelativeLocation, AttachmentBone;
00574	
00575		// Physics
00576		unreliable if( (!bSkipActorPropertyReplication || bNetInitial) && bReplicateMovement
00577						&& (((RemoteRole == ROLE_SimulatedProxy) && (bNetInitial || bUpdateSimulatedPosition))
00578							|| ((RemoteRole == ROLE_DumbProxy) && (Physics == PHYS_Falling))) )
00579			Velocity;
00580	
00581		unreliable if( (!bSkipActorPropertyReplication || bNetInitial) && bReplicateMovement
00582						&& (((RemoteRole == ROLE_SimulatedProxy) && bNetInitial)
00583							|| (RemoteRole == ROLE_DumbProxy)) )
00584			Physics, bMovable;
00585	
00586		unreliable if( (!bSkipActorPropertyReplication || bNetInitial) && bReplicateMovement
00587						&& (RemoteRole <= ROLE_SimulatedProxy) && (Physics == PHYS_Rotating) )
00588			bFixedRotationDir, bRotateToDesired, RotationRate, DesiredRotation;
00589	
00590	//MC for HarmonX integration
00591		// Sound.
00592		unreliable if( (!bSkipActorPropertyReplication || bNetInitial) && (Role==ROLE_Authority) && (!bNetOwner || !bClientAnim) )
00593			AmbientSound, bHasPosition, bHasRollOff, PanCoeff, SaturationDistance, StabilisationDistance, StabilisationVolume;
00594	//end MC
00595	
00596	    unreliable if ( (!bSkipActorPropertyReplication || bNetInitial) && (Role==ROLE_Authority) && bNetDirty && (DrawType == DT_StaticMesh) )
00597	      StaticMesh;
00598	
00599		// Animation.
00600		unreliable if( (!bSkipActorPropertyReplication || bNetInitial)
00601					&& (Role==ROLE_Authority) && (DrawType==DT_Mesh) && bReplicateAnimations )
00602			SimAnim;
00603	
00604		unreliable if ( (!bSkipActorPropertyReplication || bNetInitial) && (Role==ROLE_Authority) )
00605			bHidden;
00606	
00607		// Properties changed using accessor functions (Owner, rendering, and collision)
00608		unreliable if ( (!bSkipActorPropertyReplication || bNetInitial) && (Role==ROLE_Authority) && bNetDirty )
00609			Owner, DrawScale, DrawScale3D, DrawType, bCollideActors,bCollideWorld,bOnlyOwnerSee,Texture,Style;
00610	
00611		unreliable if ( (!bSkipActorPropertyReplication || bNetInitial) && (Role==ROLE_Authority) && bNetDirty
00612						&& (bCollideActors || bCollideWorld) )
00613			bProjTarget, bBlockActors, bBlockPlayers, CollisionRadius, CollisionHeight;
00614	
00615		// Properties changed only when spawning or in script (relationships, rendering, lighting)
00616		unreliable if ( (!bSkipActorPropertyReplication || bNetInitial) && (Role==ROLE_Authority) )
00617			Role,RemoteRole,bNetOwner,LightType,bTearOff;
00618	
00619		unreliable if ( (!bSkipActorPropertyReplication || bNetInitial) && (Role==ROLE_Authority)
00620						&& bNetDirty && bNetOwner )
00621			Inventory;
00622	
00623		unreliable if ( (!bSkipActorPropertyReplication || bNetInitial) && (Role==ROLE_Authority)
00624						&& bNetDirty && bReplicateInstigator )
00625			Instigator;
00626	
00627		// Infrequently changed mesh properties
00628		unreliable if ( (!bSkipActorPropertyReplication || bNetInitial) && (Role==ROLE_Authority)
00629						&& bNetDirty && (DrawType == DT_Mesh) )
00630			AmbientGlow,bUnlit,PrePivot,Mesh;
00631	
00632		// Infrequently changed lighting properties.
00633		unreliable if ( (!bSkipActorPropertyReplication || bNetInitial) && (Role==ROLE_Authority)
00634						&& bNetDirty && (LightType != LT_None) )
00635			LightEffect, LightBrightness, LightHue, LightSaturation,
00636			LightRadius, LightPeriod, LightPhase,
00637			bDecor1Light, bDecor2Light, bDecor3Light, bActorLight, bDecor4Light, bDecor5Light,
00638			bDecor6Light, bDecor7Light, bDecor8Light, bDecor9Light, bDecor10Light;
00639	
00640	}
00641	
00642	//=============================================================================
00643	// Actor error handling.
00644	
00645	// Handle an error and kill this one actor.
00646	native(233) static final function Error( coerce string S );
00647	
00648	//=============================================================================
00649	// General functions.
00650	
00651	// Latent functions.
00652	native(256) final latent function Sleep( float Seconds );
00653	
00654	// Collision.
00655	native(262) static final function SetCollision( optional bool NewColActors, optional bool NewBlockActors, optional bool NewBlockPlayers );
00656	native(283) static final function bool SetCollisionSize( float NewRadius, float NewHeight );
00657	native(424) static final function SetDrawScale(float NewScale);
00658	native(423) static final function SetDrawScale3D(vector NewScale3D);
00659	native(422) static final function SetDrawType(EDrawType NewDrawType);
00660	
00661	// Movement.
00662	native(266) static final function bool Move( vector Delta );
00663	native(267) static final function bool SetLocation( vector NewLocation );
00664	native(299) static final function bool SetRotation( rotator NewRotation );
00665	
00666	// SetRelativeRotation() sets the rotation relative to the actor's base
00667	native(421) static final function bool SetRelativeRotation( rotator NewRotation );
00668	native(420) static final function bool SetRelativeLocation( vector NewLocation );
00669	
00670	native(3969) static final function bool MoveSmooth( vector Delta );
00671	native(3971) static final function AutonomousPhysics(float DeltaSeconds);
00672	
00673	// Relations.
00674	native(298) static final function SetBase( actor NewBase, optional vector NewFloor );
00675	native(272) static final function SetOwner( actor NewOwner );
00676	
00677	native(419) static final function Box GetBoundingBox();
00678	
00679	native(418) static final function Material GetMaterial( int Index );
00680	
00681	native static final function actor IntersectWaterPlane( vector Start, vector End, out vector Intersection );
00682	
00683	native static final function ResetInputs();
00684	
00685	//=============================================================================
00686	event ParseDynamicLoading(LevelInfo pLevelInfo);
00687	// Animation.
00688	
00689	// Animation functions.
00690	native(259) static final function PlayAnim( name Sequence, optional float Rate, optional float TweenTime, optional int Channel );
00691	native(260) static final function LoopAnim( name Sequence, optional float Rate, optional float TweenTime, optional int Channel );
00692	native(294) static final function TweenAnim( name Sequence, float Time, optional int Channel );
00693	native(282) static final function bool IsAnimating(optional int Channel);
00694	native(261) static final latent function FinishAnim(optional int Channel);
00695	native(263) static final function bool HasAnim( name Sequence );
00696	native(417) static final function StopAnimating();
00697	native(416) static final function bool IsTweening(int Channel);
00698	
00699	// Animation notifications.
00700	event AnimEnd( int Channel );
00701	native(415) static final function EnableChannelNotify ( int Channel, int Switch );
00702	native(414) static final function int GetNotifyChannel();
00703	
00704	//MC
00705	//Sound notifications
00706	event EndOfVoice();
00707	event PauseVoice();
00708	event UnPauseVoice();
00709	event BeginBeginFlash();	//beginning of the transition of begin of a flash
00710	event EndBeginFlash();		//end of the transition of begin of a flash
00711	event BeginEndFlash();		//beginning of the transition of end of a flash
00712	event EndEndFlash();		//end of the transition of end of a flash
00713	event OnoStartNotif();
00714	
00715	//end MC
00716	
00717	// Skeletal animation.
00718	native(413) static final function LinkSkelAnim( MeshAnimation Anim );
00719	
00720	native(412) static final function AnimBlendParams( int Stage, optional float BlendAlpha, optional float InTime, optional float OutTime, optional name BoneName );
00721	native(411) static final function AnimBlendToAlpha( int Stage, float TargetAlpha, float TimeInterval );
00722	
00723	native(410) static final function coords  GetBoneCoords(   name BoneName );
00724	native(409) static final function rotator GetBoneRotation( name BoneName, optional int Space );
00725	
00726	native(408) static final function vector  GetRootLocation();
00727	native(407) static final function rotator GetRootRotation();
00728	native(406) static final function vector  GetRootLocationDelta();
00729	native(405) static final function rotator GetRootRotationDelta();
00730	
00731	native(404) static final function bool  AttachToBone( actor Attachment, name BoneName );
00732	native(403) static final function bool  DetachFromBone( actor Attachment );
00733	
00734	native(402) static final function LockRootMotion( int Lock );
00735	native(401) static final function SetBoneScale( int Slot, optional float BoneScale, optional name BoneName );
00736	native(400) static final function SetBoneScalePerAxis( int Slot, optional float BoneScaleX, optional float BoneScaleY, optional float BoneScaleZ, optional name BoneName );
00737	
00738	native(399) static final function SetBoneDirection( name BoneName, rotator BoneTurn, optional vector BoneTrans, optional float Alpha );
00739	native(398) static final function SetBoneLocation( name BoneName, optional vector BoneTrans, optional float Alpha );
00740	native(397) static final function SetBoneRotation( name BoneName, optional rotator BoneTurn, optional int Space, optional float Alpha );
00741	native(396) static final function GetAnimParams( int Channel, out name OutSeqName, out float OutAnimFrame, out float OutAnimRate );
00742	native(395) static final function bool AnimIsInGroup( int Channel, name GroupName );
00743	
00744	
00745	//=========================================================================
00746	// Rendering.
00747	
00748	native(394) static final function plane GetRenderBoundingSphere();
00749	native(393) static final function vector GetCartoonLightDir();
00750	native(392) static final function bool CheckWasVisible(float time);
00751	native(391) static final function RecomputeBoundingVolume(bool Static);
00752	
00753	native function RefreshDisplaying();
00754	native(389) static final function RefreshLighting();
00755	
00756	native static final function ReplaceATextureByAnOther( Texture SrcTexture, Texture DestTexture );
00757	
00758	//=========================================================================
00759	// Physics.
00760	
00761	// Physics control.
00762	native(301) final latent function FinishInterpolation();
00763	native(3970) final function SetPhysics( EPhysics newPhysics );
00764	
00765	
00766	//=========================================================================
00767	// PSX2 Demo.
00768	
00769	// Gameplay Timeout
00770	native static final function float PSX2BootstrapDemoGetGamePlayTimeout();
00771	
00772	
00773	//=========================================================================
00774	// Engine notification functions.
00775	
00776	//
00777	// Major notifications.
00778	//
00779	event Destroyed();
00780	event GainedChild( Actor Other );
00781	event LostChild( Actor Other );
00782	event Tick( float DeltaTime );
00783	
00784	//
00785	// Triggers.
00786	//
00787	event Trigger( Actor Other, Pawn EventInstigator );
00788	event UnTrigger( Actor Other, Pawn EventInstigator );
00789	event BeginEvent();
00790	event EndEvent();
00791	
00792	//
00793	// Physics & world interaction.
00794	//
00795	event Timer();
00796	event Timer2();
00797	event HitWall( vector HitNormal, actor HitWall );
00798	event Falling();
00799	event Landed( vector HitNormal );
00800	event ZoneChange( ZoneInfo NewZone );
00801	event PhysicsVolumeChange( PhysicsVolume NewVolume );
00802	event Touch( Actor Other );
00803	event PostTouch( Actor Other ); // called for PendingTouch actor after physics completes
00804	event UnTouch( Actor Other );
00805	event Bump( Actor Other );
00806	event BaseChange();
00807	event Attach( Actor Other );
00808	event Detach( Actor Other );
00809	event Actor SpecialHandling(Pawn Other);
00810	event bool EncroachingOn( actor Other );
00811	event EncroachedBy( actor Other );
00812	event FinishedInterpolation(InterpolationPoint Other);
00813	event EndedRotation();			// called when rotation completes
00814	event UsedBy( Pawn user ); // called if this Actor was touching a Pawn who pressed Use
00815	
00816	event FellOutOfWorld()
00817	{
00818		SetPhysics(PHYS_None);
00819		Destroy();
00820	}
00821	
00822	//
00823	// Damage and kills.
00824	//
00825	event KilledBy( pawn EventInstigator );
00826	event TakeDamage( int Damage, Pawn EventInstigator, vector HitLocation, vector Momentum, class<DamageType> DamageType);
00827	
00828	
00829	
00830	
00831	// Masks to discard some collisions
00832	// Used by Trace and FastTrace.
00833	const TRACETYPE_Standard                                        = 0x000000; // by default
00834	const TRACETYPE_DiscardIfCanSeeThrough                          = 0x002000; // with this option, trace and fasttrace will not report collision with objects that have CanSeeThrough flag set. Practical consequence: it is possible to see through transparent windows.
00835	const TRACETYPE_DiscardIfCanShootThroughWithRayCastingWeapon    = 0x004000; // with this option, trace and fasttrace will not report collision with objects that have CanShootThroughWithRayCastingWeapon flag set. Practical consequence: you can know if it is possible to shoot through a door with a magnum.
00836	const TRACETYPE_DiscardIfCanShootThroughWithProjectileWeapon    = 0x008000; // with this option, trace and fasttrace will not report collision with objects that have CanShootThroughWithProjectileWeapon flag set. Practical consequence: you can know if it is possible to shoot through something with a knife.
00837	const TRACETYPE_RequestBones 									= 0x010000; // Request the bone check.
00838	
00839	
00840	//
00841	// Trace a line and see what it collides with first.
00842	// Takes this actor's collision properties into account.
00843	// Returns first hit actor, Level if hit level, or None if hit nothing.
00844	// An AdditionalTraceType parameter can be used to discard some kinds of hit (to be able to see through window for example). It
00845	// can be a combination (bitwise or) of TRACETYPE_xxx constants. In this case, it is possible to know afterwards which kind of hits
00846	// was discarded by examining DiscardedHitMask. For example, if you choose to trace with an additional trace type TRACETYPE_DiscardIfCanSeeThrough,
00847	// if a hit was rejected because of it, DiscardedHitMask will contains TRACETYPE_DiscardIfCanSeeThrough.
00848	//
00849	native(277) static final function Actor Trace
00850	(
00851	    out vector              HitLocation,
00852	    out vector              HitNormal,
00853	    vector                  TraceEnd,
00854	    optional vector         TraceStart,
00855	    optional bool           bTraceActors,
00856	    optional vector         Extent,
00857	    optional out material   Material,
00858	    optional int            AdditionalTraceType,    // TRACETYPE_Standard is the default value
00859	    optional out int        DiscardedHitMask        // none is the default value
00860	);
00861	
00862	// Get the last bone name, intersected during the last Trace call with the flag TRACETYPE_RequestBones.
00863	native(364) static final function name GetLastTraceBone();
00864	
00865	
00866	// returns true if did not hit world geometry
00867	// An AdditionalTraceType parameter can be used to discard some kinds of hit (to be able to see through window for example). It
00868	// can be a combination (bitwise or) of TRACETYPE_xxx constants. In this case, it is possible to know afterwards which kind of hits
00869	// was discarded by examining DiscardedHitMask. For example, if you choose to trace with an additional trace type TRACETYPE_DiscardIfCanSeeThrough,
00870	// if a hit was rejected because of it, DiscardedHitMask will contains TRACETYPE_DiscardIfCanSeeThrough.
00871	native(548) static final function bool FastTrace
00872	(
00873	    vector              TraceEnd,
00874	    optional vector     TraceStart,
00875	    optional int        AdditionalTraceType,        // TRACETYPE_Standard is the default value
00876	    optional out int    DiscardedHitMask            // none is the default value
00877	);
00878	
00879	//
00880	// Spawn an actor. Returns an actor of the specified class, not
00881	// of class Actor (this is hardcoded in the compiler). Returns None
00882	// if the actor could not be spawned (either the actor wouldn't fit in
00883	// the specified location, or the actor list is full).
00884	// Defaults to spawning at the spawner's location.
00885	//
00886	native(278) static final function actor Spawn
00887	(
00888		class<actor>      SpawnClass,
00889		optional actor	  SpawnOwner,
00890		optional name     SpawnTag,
00891		optional vector   SpawnLocation,
00892		optional rotator  SpawnRotation
00893	);
00894	
00895	//
00896	// Destroy this actor. Returns true if destroyed, false if indestructable.
00897	// Destruction is latent. It occurs at the end of the tick.
00898	//
00899	native(279) static final function bool Destroy();
00900	
00901	//=============================================================================
00902	// Timing.
00903	
00904	// Causes Timer() events every NewTimerRate seconds.
00905	native(280) static final function SetTimer( float NewTimerRate, bool bLoop );
00906	
00907	// Causes Timer2() events every NewTimerRate seconds.
00908	native(363) static final function SetTimer2( float NewTimerRate, bool bLoop );
00909	
00910	//=============================================================================
00911	// Sound functions.
00912	//MC for HarmonX integration
00913	
00914	
00915	native static final function SetSoundMode
00916	(
00917		int SoundMode
00918	);
00919	native(362) static final function SetMusicSliderPos
00920	(
00921		int MusicVolume
00922	);
00923	native(361) static final function SetVolume
00924	(
00925		float volume
00926	);
00927	
00928	
00929	// Play a sound effect.
00930	native(264) static final function PlaySound
00931	(
00932		sound				Sound,
00933		optional  int		Param1,
00934		optional  int		Param2,
00935		optional  int		Param3,
00936		optional  int		Param4,
00937		optional  int		Param5
00938	);
00939	// Play a music
00940	native(358) static final function PlayMusic
00941	(
00942		sound				Sound,
00943		optional  int		Param1,
00944		optional  int		Param2,
00945		optional  int		Param3,
00946		optional  int		Param4,
00947		optional  int		Param5
00948	);
00949	native(357) static final function float GetWaveDuration
00950	(//get wave duration (for voices  only)
00951		string				SoundName
00952	);
00953	native(356) static final function bool WaveHasPosition
00954	(//to know if wave is localized or not (for voices  only)
00955		string				SoundName
00956	);
00957	//native(355) static final function bool CanHearFootstepSound
00958	//(//to know if footsteps can be heard...
00959	//);
00960	//Play a streamed voice
00961	native(354) static final function bool PlayStrVoice
00962	(
00963		string				SoundName,
00964		optional actor		RollOffActor
00965	);
00966	// Play a voice (wave or handler)
00967	native(353) static final function PlayVoice
00968	(
00969		sound				Sound,
00970		optional  int		Param1,
00971		optional  int		Param2,
00972		optional  int		Param3,
00973		optional  int		Param4,
00974		optional  int		Param5
00975	);
00976	// Play a streamed ambient sound
00977	native(352) static final function PlayStrAmb
00978	(
00979		sound				Sound
00980	);
00981	// Play a sound
00982	native(351) static final function PlayMenu
00983	(//soundisn't puton "SoundDesign" volume line.
00984		sound				Sound,
00985		optional int		Type,		//default : SndType_Menu (for Menu actor)
00986		optional  int		Param1,
00987		optional  int		Param2,
00988		optional  int		Param3,
00989		optional  int		Param4,
00990		optional  int		Param5
00991	);
00992	// Play a sound
00993	native(350) static final function PlayRolloffSound
00994	(
00995		sound				Sound,
00996		actor				RolloffActor,
00997		optional  int		Param1,
00998		optional  int		Param2,
00999		optional  int		Param3,
01000		optional  int		Param4,
01001		optional  int		Param5
01002	);
01003	// Play footstepsounds
01004	native(349) static final function PlaySndPNJStep
01005	(
01006		sndpnjstep	Sound,
01007		float	Speed,
01008		int		SndStepCategory,
01009		bool	bSilent
01010	);
01011	native(348) static final function PlaySndXIIIStep
01012	(
01013		sndxiiistep	Sound,
01014		float	Speed,
01015		int		EndStep,
01016		bool	bSilent
01017	);
01018	
01019	//Play sndono
01020	native(347) static final function PlaySndPNJOno
01021	(
01022		sndono	Sound,
01023		int		CodeMesh,
01024		int		Timbre
01025	);
01026	
01027	//Play deathono
01028	native(346) static final function PlaySndDeathOno
01029	(
01030		deathono	Sound,
01031		int		CodeMesh,
01032		int		Timbre
01033	);
01034	
01035	// Stop a sound effect.
01036	native(265) static final function StopSound
01037	(
01038		sound				Sound
01039	);
01040	// Stop musics and streamed ambient sounds
01041	native(345) static final function StopMusic();
01042	// Stop voices
01043	native(344) static final function StopVoice();
01044	// Stop all actor sounds
01045	native(343) static final function StopActorSounds();
01046	// Stop all sounds
01047	native(342) static final function StopAllSounds();
01048	
01049	//Pause music and streamed ambient sounds
01050	native(341) static final function PauseMusic();
01051	//Pause all sounds
01052	native(340) static final function PauseAllSounds();
01053	
01054	//Kill all sounds
01055	native static final function KillAllSounds();
01056	
01057	//Resume music and streamed ambient sounds
01058	native(339) static final function ResumeMusic();
01059	//Resume all sounds
01060	native(338) static final function ResumeAllSounds();
01061	
01062	//end MC
01063	//=============================================================================
01064	// AI functions.
01065	
01066	/* Inform other creatures that you've made a noise
01067	 they might hear (they are sent a HearNoise message)
01068	 Senders of MakeNoise should have an instigator if they are not pawns.
01069	*/
01070	native(512) static final function MakeNoise( float Loudness );
01071	
01072	/* PlayerCanSeeMe returns true if any player (server) or the local player (standalone
01073	or client) has a line of sight to actor's location.
01074	*/
01075	native(532) static final function bool PlayerCanSeeMe();
01076	
01077	//=============================================================================
01078	// Regular engine functions.
01079	
01080	// Teleportation.
01081	event bool PreTeleport( Teleporter InTeleporter );
01082	event PostTeleport( Teleporter OutTeleporter );
01083	
01084	// Level state.
01085	event BeginPlay();
01086	
01087	//========================================================================
01088	// Disk access.
01089	
01090	// Find files.
01091	native(539) static final function string GetMapName( string NameEnding, string MapName, int Dir );
01092	native(545) static final function GetNextSkin( string Prefix, string CurrentSkin, int Dir, out string SkinName, out string SkinDesc );
01093	native(547) static final function string GetURLMap();
01094	native(337) static final function string GetNextInt( string ClassName, int Num );
01095	native(336) static final function GetNextIntDesc( string ClassName, int Num, out string Entry, out string Description );
01096	native(335) static final function bool GetCacheEntry( int Num, out string GUID, out string Filename );
01097	native(334) static final function bool MoveCacheEntry( string GUID, optional string NewFilename );
01098	
01099	//=============================================================================
01100	// Iterator functions.
01101	
01102	// Iterator functions for dealing with sets of actors.
01103	
01104	/* AllActors() - avoid using AllActors() too often as it iterates through the whole actor list and is therefore slow
01105	*/
01106	native(304) final iterator function AllActors     ( class<actor> BaseClass, out actor Actor, optional name MatchTag );
01107	
01108	/* DynamicActors() only iterates through the non-static actors on the list (still relatively slow, bu
01109	 much better than AllActors).  This should be used in most cases and replaces AllActors in most of
01110	 Epic's game code.
01111	*/
01112	native(313) final iterator function DynamicActors     ( class<actor> BaseClass, out actor Actor, optional name MatchTag );
01113	
01114	/* ChildActors() returns all actors owned by this actor.  Slow like AllActors()
01115	*/
01116	native(305) final iterator function ChildActors   ( class<actor> BaseClass, out actor Actor );
01117	
01118	/* BasedActors() returns all actors based on the current actor (slow, like AllActors)
01119	*/
01120	native(306) final iterator function BasedActors   ( class<actor> BaseClass, out actor Actor );
01121	
01122	/* TouchingActors() returns all actors touching the current actor (fast)
01123	*/
01124	native(307) final iterator function TouchingActors( class<actor> BaseClass, out actor Actor );
01125	
01126	/* TraceActors() return all actors along a traced line.  Reasonably fast (like any trace)
01127	*/
01128	native(309) final iterator function TraceActors   ( class<actor> BaseClass, out actor Actor, out vector HitLoc, out vector HitNorm, vector End, optional vector Start, optional vector Extent, optional int TraceType );
01129	
01130	/* RadiusActors() returns all actors within a give radius.  Slow like AllActors().  Use CollidingActors() or VisibleCollidingActors() instead if desired actor types are visible
01131	(not bHidden) and in the collision hash (bCollideActors is true)
01132	*/
01133	native(310) final iterator function RadiusActors  ( class<actor> BaseClass, out actor Actor, float Radius, optional vector Loc );
01134	
01135	/* VisibleActors() returns all visible actors within a radius.  Slow like AllActors().  Use VisibleCollidingActors() instead if desired actor types are
01136	in the collision hash (bCollideActors is true)
01137	*/
01138	native(311) final iterator function VisibleActors ( class<actor> BaseClass, out actor Actor, optional float Radius, optional vector Loc );
01139	
01140	/* VisibleCollidingActors() returns visible (not bHidden) colliding (bCollideActors==true) actors within a certain radius.
01141	Much faster than AllActors() since it uses the collision hash
01142	*/
01143	native(312) final iterator function VisibleCollidingActors ( class<actor> BaseClass, out actor Actor, float Radius, optional vector Loc, optional bool bIgnoreHidden );
01144	
01145	/* VisibleDamageableActors() returns visible (not bHidden) colliding (bCollideActors==true) actors within a certain radius.
01146	Much faster than AllActors() since it uses the collision hash.
01147	// Same as VisibleCollidingActors but remove all StaticMeshActors
01148	*/
01149	native final iterator function VisibleDamageableActors ( class<actor> BaseClass, out actor Actor, float Radius, optional vector Loc, optional bool bIgnoreHidden );
01150	
01151	/* CollidingActors() returns colliding (bCollideActors==true) actors within a certain radius.
01152	Much faster than AllActors() for reasonably small radii since it uses the collision hash
01153	*/
01154	native(321) final iterator function CollidingActors ( class<actor> BaseClass, out actor Actor, float Radius, optional vector Loc );
01155	
01156	/* ActorInInterationCategory() returns actors that have an IterationCategory between MinCategory and MaxCategory, included.
01157	*/
01158	native(333) final iterator function ActorInIterationCategory( byte MinCategory, byte MaxCategory, out actor Actor);
01159	
01160	//=============================================================================
01161	// Color functions
01162	native(549) static final operator(20) color -     ( color A, color B );
01163	native(550) static final operator(16) color *     ( float A, color B );
01164	native(551) static final operator(20) color +     ( color A, color B );
01165	native(552) static final operator(16) color *     ( color A, float B );
01166	
01167	
01168	//=============================================================================
01169	native static final function bool SaveAtCheckpoint(string TeleporterName, string ContentDescription);
01170	
01171	
01172	//=============================================================================
01173	// Scripted Actor functions.
01174	
01175	/* RenderOverlays()
01176	called by player's hud to request drawing of actor specific overlays onto canvas
01177	*/
01178	function RenderOverlays(Canvas Canvas);
01179	
01180	//
01181	// Called immediately before gameplay begins.
01182	//
01183	event PreBeginPlay()
01184	{
01185		// Handle autodestruction if desired.
01186		if( !bGameRelevant && (Level.NetMode != NM_Client) && !Level.Game.BaseMutator.CheckRelevance(Self) )
01187			Destroy();
01188	}
01189	
01190	//
01191	// Broadcast a localized message to all players.
01192	// Most message deal with 0 to 2 related PRIs.
01193	// The LocalMessage class defines how the PRI's and optional actor are used.
01194	//
01195	event BroadcastLocalizedMessage( class<LocalMessage> MessageClass, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject )
01196	{
01197		Level.Game.BroadcastLocalized( self, MessageClass, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject );
01198	}
01199	
01200	// Called immediately after gameplay begins.
01201	//
01202	event PostBeginPlay();
01203	
01204	// Called after PostBeginPlay.
01205	//
01206	simulated event SetInitialState()
01207	{
01208		bScriptInitialized = true;
01209		if( InitialState!='' )
01210			GotoState( InitialState );
01211		else
01212			GotoState( 'Auto' );
01213	}
01214	
01215	// called after PostBeginPlay.  On a net client, PostNetBeginPlay() is spawned after replicated variables have been initialized to
01216	// their replicated values
01217	event PostNetBeginPlay();
01218	
01219	/* HurtRadius()
01220	 Hurt locally authoritative actors within the radius.
01221	*/
01222	simulated final function HurtRadius( float DamageAmount, float DamageRadius, class<DamageType> DamageType, float Momentum, vector HitLocation )
01223	{
01224		local actor Victims;
01225		local float damageScale, dist;
01226		local vector dir;
01227	
01228		if( bHurtEntry )
01229			return;
01230	
01231		bHurtEntry = true;
01232		foreach VisibleDamageableActors( class 'Actor', Victims, DamageRadius, HitLocation )
01233		{
01234			if( (Victims != self) && (Victims.Role == ROLE_Authority) )
01235			{
01236				dir = Victims.Location - HitLocation;
01237				dist = FMax(1,VSize(dir));
01238				dir = dir/dist;
01239				damageScale = 1 - FMax(0,(dist - Victims.CollisionRadius)/DamageRadius);
01240				if (level.bLonePlayer && !Instigator.IsPlayerPawn() &&  Victims.IsA('BaseSoldier') ) //test bloneplayer to avoid heavy cast in multi-mode
01241				  DamageScale *= 0.2;
01242				Victims.TakeDamage
01243				(
01244					damageScale * DamageAmount,
01245					Instigator,
01246					Victims.Location - 0.5 * (Victims.CollisionHeight + Victims.CollisionRadius) * dir,
01247					(damageScale * Momentum * dir),
01248					DamageType
01249				);
01250			}
01251		}
01252		bHurtEntry = false;
01253	}
01254	
01255	// Called when carried onto a new level, before AcceptInventory.
01256	//
01257	event TravelPreAccept();
01258	
01259	// Called when carried into a new level, after AcceptInventory.
01260	//
01261	event TravelPostAccept();
01262	
01263	// Called by PlayerController when this actor becomes its ViewTarget.
01264	//
01265	function BecomeViewTarget();
01266	
01267	// Returns the string representation of the name of an object without the package
01268	// prefixes.
01269	//
01270	function String GetItemName( string FullName )
01271	{
01272		local int pos;
01273	
01274		pos = InStr(FullName, ".");
01275		While ( pos != -1 )
01276		{
01277			FullName = Right(FullName, Len(FullName) - pos - 1);
01278			pos = InStr(FullName, ".");
01279		}
01280	
01281		return FullName;
01282	}
01283	
01284	// Returns the human readable string representation of an object.
01285	//
01286	// CHANGED function name from GetHumanName()
01287	function String GetHumanReadableName()
01288	{
01289		return GetItemName(string(class));
01290	}
01291	
01292	final function ReplaceText(out string Text, string Replace, string With)
01293	{
01294		local int i;
01295		local string Input;
01296	
01297		Input = Text;
01298		Text = "";
01299		i = InStr(Input, Replace);
01300		while(i != -1)
01301		{
01302			Text = Text $ Left(Input, i) $ With;
01303			Input = Mid(Input, i + Len(Replace));
01304			i = InStr(Input, Replace);
01305		}
01306		Text = Text $ Input;
01307	}
01308	
01309	// Set the display properties of an actor.  By setting them through this function, it allows
01310	// the actor to modify other components (such as a Pawn's weapon) or to adjust the result
01311	// based on other factors (such as a Pawn's other inventory wanting to affect the result)
01312	function SetDisplayProperties(ERenderStyle NewStyle, Material NewTexture, bool bLighting )
01313	{
01314		Style = NewStyle;
01315		texture = NewTexture;
01316		bUnlit = bLighting;
01317	}
01318	
01319	function SetDefaultDisplayProperties()
01320	{
01321		Style = Default.Style;
01322		texture = Default.Texture;
01323		bUnlit = Default.bUnlit;
01324	}
01325	
01326	// Get localized message string associated with this actor
01327	static function string GetLocalString(
01328		optional int Switch,
01329		optional PlayerReplicationInfo RelatedPRI_1,
01330		optional PlayerReplicationInfo RelatedPRI_2
01331		)
01332	{
01333		return "";
01334	}
01335	
01336	function MatchStarting(); // called when gameplay actually starts
01337	
01338	/* DisplayDebug()
01339	list important actor variable on canvas.  HUD will call DisplayDebug() on the current ViewTarget when
01340	the ShowDebug exec is used
01341	*/
01342	simulated function DisplayDebug(Canvas Canvas, out float YL, out float YPos)
01343	{
01344		local string T;
01345		local float XL;
01346		local int i;
01347		local Actor A;
01348		local name anim;
01349		local float frame,rate;
01350	
01351		Canvas.Style = ERenderStyle.STY_Normal;
01352		Canvas.StrLen("TEST", XL, YL);
01353		YPos = YPos + YL;
01354		Canvas.SetPos(4,YPos);
01355		Canvas.SetDrawColor(255,0,0);
01356		T = GetItemName(string(self));
01357		if ( bDeleteMe )
01358			T = T$" DELETED (bDeleteMe == true)";
01359	
01360		Canvas.DrawText(T, false);
01361		YPos += YL;
01362		Canvas.SetPos(4,YPos);
01363		Canvas.SetDrawColor(255,255,255);
01364	
01365		if ( Level.NetMode != NM_Standalone )
01366		{
01367			// networking attributes
01368			T = "ROLE ";
01369			Switch(Role)
01370			{
01371				case ROLE_None: T=T$"None"; break;
01372				case ROLE_DumbProxy: T=T$"DumbProxy"; break;
01373				case ROLE_SimulatedProxy: T=T$"SimulatedProxy"; break;
01374				case ROLE_AutonomousProxy: T=T$"AutonomousProxy"; break;
01375				case ROLE_Authority: T=T$"Authority"; break;
01376			}
01377			T = T$" REMOTE ROLE ";
01378			Switch(RemoteRole)
01379			{
01380				case ROLE_None: T=T$"None"; break;
01381				case ROLE_DumbProxy: T=T$"DumbProxy"; break;
01382				case ROLE_SimulatedProxy: T=T$"SimulatedProxy"; break;
01383				case ROLE_AutonomousProxy: T=T$"AutonomousProxy"; break;
01384				case ROLE_Authority: T=T$"Authority"; break;
01385			}
01386			if ( bTearOff )
01387				T = T$" Tear Off";
01388			Canvas.DrawText(T, false);
01389			YPos += YL;
01390			Canvas.SetPos(4,YPos);
01391		}
01392		T = "Physics ";
01393		Switch(PHYSICS)
01394		{
01395			case PHYS_None: T=T$"None"; break;
01396			case PHYS_Walking: T=T$"Walking"; break;
01397			case PHYS_Falling: T=T$"Falling"; break;
01398			case PHYS_Swimming: T=T$"Swimming"; break;
01399			case PHYS_Flying: T=T$"Flying"; break;
01400			case PHYS_Rotating: T=T$"Rotating"; break;
01401			case PHYS_Projectile: T=T$"Projectile"; break;
01402			case PHYS_Interpolating: T=T$"Interpolating"; break;
01403			case PHYS_MovingBrush: T=T$"MovingBrush"; break;
01404			case PHYS_Spider: T=T$"Spider"; break;
01405			case PHYS_Trailer: T=T$"Trailer"; break;
01406			case PHYS_Ladder: T=T$"Ladder"; break;
01407		}
01408		T = T$" in physicsvolume "$GetItemName(string(PhysicsVolume))$" on base "$GetItemName(string(Base));
01409		if ( bBounce )
01410			T = T$" - will bounce";
01411		Canvas.DrawText(T, false);
01412		YPos += YL;
01413		Canvas.SetPos(4,YPos);
01414	
01415		Canvas.DrawText("Location: "$Location, false);
01416		YPos += YL;
01417		Canvas.SetPos(4,YPos);
01418		Canvas.DrawText("Rotation: "$Rotation, false);
01419		YPos += YL;
01420		Canvas.SetPos(4,YPos);
01421		Canvas.DrawText("Velocity: "$Velocity$" Speed "$VSize(Velocity), false);
01422		YPos += YL;
01423		Canvas.SetPos(4,YPos);
01424		Canvas.DrawText("Acceleration: "$Acceleration, false);
01425		YPos += YL;
01426		Canvas.SetPos(4,YPos);
01427	
01428		Canvas.DrawColor.B = 0;
01429		Canvas.DrawText("Collision Radius "$CollisionRadius$" Height "$CollisionHeight);
01430		YPos += YL;
01431		Canvas.SetPos(4,YPos);
01432	
01433		Canvas.DrawText("Collides with Actors "$bCollideActors$", world "$bCollideWorld$", and proj. target "$bProjTarget);
01434		YPos += YL;
01435		Canvas.SetPos(4,YPos);
01436		Canvas.DrawText("Blocks Actors "$bBlockActors$", players "$bBlockPlayers);
01437		YPos += YL;
01438		Canvas.SetPos(4,YPos);
01439	
01440		T = "Touching ";
01441		ForEach TouchingActors(class'Actor', A)
01442			T = T$GetItemName(string(A))$" ";
01443		if ( T == "Touching ")
01444			T = "Touching nothing";
01445		Canvas.DrawText(T, false);
01446		YPos += YL;
01447		Canvas.SetPos(4,YPos);
01448	
01449		Canvas.DrawColor.R = 0;
01450		T = "Rendered: ";
01451		Switch(Style)
01452		{
01453			case STY_None: T=T; break;
01454			case STY_Normal: T=T$"Normal"; break;
01455			case STY_Masked: T=T$"Masked"; break;
01456			case STY_Translucent: T=T$"Translucent"; break;
01457			case STY_Modulated: T=T$"Modulated"; break;
01458			case STY_Alpha: T=T$"Alpha"; break;
01459		}
01460	
01461		Switch(DrawType)
01462		{
01463			case DT_None: T=T$" None"; break;
01464			case DT_Sprite: T=T$" Sprite "; break;
01465			case DT_Mesh: T=T$" Mesh "; break;
01466			case DT_Brush: T=T$" Brush "; break;
01467			case DT_RopeSprite: T=T$" RopeSprite "; break;
01468			case DT_VerticalSprite: T=T$" VerticalSprite "; break;
01469			case DT_Terraform: T=T$" Terraform "; break;
01470			case DT_SpriteAnimOnce: T=T$" SpriteAnimOnce "; break;
01471			case DT_StaticMesh: T=T$" StaticMesh "; break;
01472		}
01473	
01474		if ( DrawType == DT_Mesh )
01475		{
01476			T = T$Mesh;
01477			if ( Skins.length > 0 )
01478			{
01479				T = T$" skins: ";
01480				for ( i=0; i<Skins.length; i++ )
01481				{
01482					if ( skins[i] == None )
01483						break;
01484					else
01485						T =T$skins[i]$", ";
01486				}
01487			}
01488	
01489			Canvas.DrawText(T, false);
01490			YPos += YL;
01491			Canvas.SetPos(4,YPos);
01492	
01493			// mesh animation
01494			GetAnimParams(0,Anim,frame,rate);
01495			T = "AnimSequence "$Anim$" Frame "$frame$" Rate "$rate;
01496			if ( bAnimByOwner )
01497				T= T$" Anim by Owner";
01498		}
01499		else if ( (DrawType == DT_Sprite) || (DrawType == DT_SpriteAnimOnce) )
01500			T = T$Texture;
01501		else if ( DrawType == DT_Brush )
01502			T = T$Brush;
01503	
01504		Canvas.DrawText(T, false);
01505		YPos += YL;
01506		Canvas.SetPos(4,YPos);
01507	
01508		Canvas.DrawColor.B = 255;
01509		Canvas.DrawText("Tag: "$Tag$" Event: "$Event$" STATE: "$GetStateName(), false);
01510		YPos += YL;
01511		Canvas.SetPos(4,YPos);
01512	
01513		Canvas.DrawText("Instigator "$GetItemName(string(Instigator))$" Owner "$GetItemName(string(Owner)));
01514		YPos += YL;
01515		Canvas.SetPos(4,YPos);
01516	
01517		Canvas.DrawText("Timer: "$TimerCounter$" Timer2: "$Timer2Counter$" LifeSpan "$LifeSpan);
01518		YPos += YL;
01519		Canvas.SetPos(4,YPos);
01520	
01521		Canvas.DrawText("AmbientSound "$AmbientSound);
01522		YPos += YL;
01523		Canvas.SetPos(4,YPos);
01524	}
01525	
01526	// NearSpot() returns true is spot is within collision cylinder
01527	// FIXME - make intrinsic
01528	
01529	simulated final function bool NearSpot(vector Spot)
01530	{
01531		local vector Dir;
01532	
01533		Dir = Location - Spot;
01534	
01535		if ( abs(Dir.Z) > CollisionHeight )
01536			return false;
01537	
01538		Dir.Z = 0;
01539		return ( VSize(Dir) <= CollisionRadius );
01540	}
01541	
01542	simulated final function bool TouchingActor(Actor A)
01543	{
01544		local vector Dir;
01545	
01546		Dir = Location - A.Location;
01547	
01548		if ( abs(Dir.Z) > CollisionHeight + A.CollisionHeight )
01549			return false;
01550	
01551		Dir.Z = 0;
01552		return ( VSize(Dir) <= CollisionRadius + A.CollisionRadius );
01553	}
01554	
01555	
01556	// returns true if shortest rotation direction is in the positive (clockwise) direction
01557	// from A to B
01558	function bool PlusDir(int A, int B)
01559	{
01560		A = A & 65535;
01561		B = B & 65535;
01562	
01563		if ( Abs(A - B) > 32768 )
01564			return ( A - B < 0 );
01565		return ( A - B > 0 );
01566	}
01567	
01568	/* StartInterpolation()
01569	when this function is called, the actor will start moving along an interpolation path
01570	beginning at Dest
01571	*/
01572	simulated function StartInterpolation()
01573	{
01574		GotoState('');
01575		SetCollision(True,false,false);
01576		bCollideWorld = False;
01577		bInterpolating = true;
01578		SetPhysics(PHYS_None);
01579	}
01580	
01581	/* Reset()
01582	reset actor to initial state - used when restarting level without reloading.
01583	*/
01584	function Reset();
01585	
01586	/*
01587	Trigger an event
01588	*/
01589	event TriggerEvent( Name EventName, Actor Other, Pawn EventInstigator )
01590	{
01591		local Actor A;
01592	
01593		if ( (EventName == '') || (EventName == 'None') )
01594			return;
01595	
01596		ForEach DynamicActors( class 'Actor', A, EventName )
01597			A.Trigger(Other, EventInstigator);
01598	
01599	/*
01600		// if triggered event is actor's event, check if it should be registered as persistent game event
01601		if ( (EventName == Event) && (Level.Game != None) )
01602		{
01603			if ( bTravelGameEvent )
01604				Level.Game.AddTravelGameEvent(EventName);
01605			else if ( bLocalGameEvent )
01606				Level.Game.AddLocalGameEvent(EventName);
01607		}
01608	*/
01609	}
01610	
01611	/*
01612	Untrigger an event
01613	*/
01614	function UntriggerEvent( Name EventName, Actor Other, Pawn EventInstigator )
01615	{
01616		local Actor A;
01617	
01618		if ( (EventName == '') || (EventName == 'None') )
01619			return;
01620	
01621		ForEach DynamicActors( class 'Actor', A, EventName )
01622			A.Untrigger(Other, EventInstigator);
01623	}
01624	
01625	function bool IsInVolume(Volume aVolume)
01626	{
01627		local Volume V;
01628	
01629		ForEach TouchingActors(class'Volume',V)
01630			if ( V == aVolume )
01631				return true;
01632		return false;
01633	}
01634	
01635	function bool IsInPain()
01636	{
01637		local PhysicsVolume V;
01638	
01639		ForEach TouchingActors(class'PhysicsVolume',V)
01640			if ( V.bPainCausing && (V.DamagePerSec > 0) )
01641				return true;
01642		return false;
01643	}
01644	
01645	function bool CanSplash()
01646	{
01647		return false;
01648	}
01649	
01650	debugonly simulated function DumpContent(float TimeStamp, int tabulation)
01651	{
01652	    local int j;
01653	    local string Tab;
01654	
01655	    for (j=0; j<tabulation; j++) Tab = Tab$" ";
01656	    log(Tab$"Actor's dump at "$TimeStamp$":");
01657	    //log(Tab$"  bStatic:"$bStatic$" bHidden:"$bHidden$" bNoDelete:"$bNoDelete$" bAnimFinished:"$bAnimFinished$" bAnimByOwner:"$bAnimByOwner$" bDeleteMe:"$bDeleteMe);
01658	    //log(Tab$"  bTicked:"$bTicked$" bDynamicLight:"$bDynamicLight$" bTimerLoop:"$bTimerLoop$" bTimer2Loop:"$bTimer2Loop$" bCanTeleport:"$bCanTeleport$" bOwnerNoSee:"$bOwnerNoSee);
01659	        log(Tab$"  bTicked:"$bTicked$" bTimerLoop:"$bTimerLoop$" bCanTeleport:"$bCanTeleport);
01660	    //log(Tab$"  bOnlyOwnerSee:"$bOnlyOwnerSee$" bAlwaysTick:"$bAlwaysTick$" bHighDetail:"$bHighDetail$" bStasis:"$bStasis$" bTrailerSameRotation:"$bTrailerSameRotation);
01661	        log(Tab$"  bStasis:"$bStasis);
01662	    //log(Tab$"  bTrailerPrePivot:"$bTrailerPrePivot$" bClientAnim:"$bClientAnim$" bWorldGeometry:"$bWorldGeometry$" bAcceptsProjectors:"$bAcceptsProjectors$" bOrientOnSlope:"$bOrientOnSlope);
01663	    //log(Tab$"  bNetTemporary:"$bNetTemporary$" bNetOptional:"$bNetOptional$" bNetDirty:"$bNetDirty$" bAlwaysRelevant:"$bAlwaysRelevant);
01664	        log(Tab$"  bNetDirty:"$bNetDirty);
01665	    //log(Tab$"  bReplicateInstigator:"$bReplicateInstigator$" bReplicateMovement:"$bReplicateMovement$" bSkipActorPropertyReplication:"$bSkipActorPropertyReplication$" bUpdateSimulatedPosition:"$bUpdateSimulatedPosition);
01666	    //log(Tab$"  bTearOff:"$bTearOff$" bOnlyDirtyReplication:"$bOnlyDirtyReplication$" bReplicateAnimations:"$bReplicateAnimations$" Role:"$Role$" RemoteRole:"$RemoteRole);
01667	
01668	    //log(Tab$"  Physics:"$Physics$" DrawType:"$DrawType$" NetTag:"$NetTag$" LastRenderTime:"$LastRenderTime$" Tag:"$Tag);
01669	        log(Tab$"  Physics:"$Physics$" NetTag:"$NetTag);
01670	    log(Tab$"  TimerRate:"$TimerRate$" TimerCounter:"$TimerCounter$" Timer2Rate:"$Timer2Rate$" Timer2Counter:"$Timer2Counter$" LifeSpan:"$LifeSpan);
01671	    //log(Tab$"  AnimSequence:"$AnimSequence$" AnimFrame:"$AnimFrame$" AnimRate:"$AnimRate$" TweenRate:"$TweenRate);
01672	    //log(Tab$"  MeshInstance:"$MeshInstance$" Owner:"$Owner$" InitialState:"$InitialState$" Group:"$Group);
01673	    //log(Tab$"  Level:"$Level$" XLevel:"$XLevel$" Event:"$Event$" Instigator:"$Instigator$" AmbientSound:"$AmbientSound$" Inventory:"$Inventory$" Base:"$Base$" Region.ZoneNumber:"$Region.ZoneNumber);
01674	    //log(Tab$"  LatentFloat:"$LatentFloat$" CollisionTag:"$CollisionTag$" LightingTag:"$LightingTag$" ActorTag:"$ActorTag$" PhysicsVolume:"$PhysicsVolume);
01675	    log(Tab$"  Location:"$Location$" Rotation:"$Rotation$" Velocity:"$Velocity$" Acceleration:"$Acceleration);
01676	    //log(Tab$"  AttachTag:"$AttachTag$" RelativeLocation:"$RelativeLocation$" RelativeRotation:"$RelativeRotation$" AttachmentBone:"$AttachmentBone);
01677	
01678	    //log(Tab$"  Texture:"$Texture$" Mesh:"$Mesh$" StaticMesh:"$StaticMesh$" StaticMeshInstance:"$StaticMeshInstance$" Brush:"$Brush$" DrawScale:"$DrawScale);
01679	    //log(Tab$"  DrawScale3D:"$DrawScale3D$" PrePivot:"$PrePivot$" AmbientGlow:"$AmbientGlow$" AntiPortal:"$AntiPortal$" Style:"$Style);
01680	    //log(Tab$"  bUnlit:"$bUnlit$" bNoSmooth:"$bNoSmooth$" bShadowCast:"$bShadowCast$" bStaticLighting:"$bStaticLighting$" bNoAmbientLight:"$bNoAmbientLight$" bNoImpact:"$bNoImpact);
01681	    //log(Tab$"  bHurtEntry:"$bHurtEntry$" bGameRelevant:"$bGameRelevant$" bCollideWhenPlacing:"$bCollideWhenPlacing$" bTravel:"$bTravel);
01682	    //log(Tab$"  bMovable:"$bMovable$" bLocalGameEvent:"$bLocalGameEvent$" bTravelGameEvent:"$bTravelGameEvent$" bDestroyInPainVolume:"$bDestroyInPainVolume$" bPendingDelete:"$bPendingDelete);
01683	
01684	    //log(Tab$"  bHasRollOff:"$bHasRollOff$" bHasPosition:"$bHasPosition$" PanCoeff:"$PanCoeff$" SaturationDistance:"$SaturationDistance$" StabilisationDistance:"$StabilisationDistance$" StabilisationVolume:"$StabilisationVolume$" SNDMaterial:"$SNDMaterial);
01685	
01686	    //log(Tab$"  CollisionRadius:"$CollisionRadius$" CollisionHeight:"$CollisionHeight$" bCollideActors:"$bCollideActors$" bCollideWorld:"$bCollideWorld);
01687	    //log(Tab$"  bBlockActors:"$bBlockActors$" bBlockPlayers:"$bBlockPlayers$" bProjTarget:"$bProjTarget$" bBlockZeroExtentTraces:"$bBlockZeroExtentTraces$" bBlockNonZeroExtentTraces:"$bBlockNonZeroExtentTraces$" bUseCylinderCollision:"$bUseCylinderCollision);
01688	    //log(Tab$"  LightType:"$LightType$" LightEffect:"$LightEffect$" LightBrightness:"$LightBrightness$" LightHue:"$LightHue$" LightSaturation:"$LightSaturation);
01689	    //log(Tab$"  LightRadius:"$LightRadius$" LightPeriod:"$LightPeriod$" LightPhase:"$LightPhase$" LightCone:"$LightCone$");
01690	    //log(Tab$"  bSLightGroup:"$bSLightGroup$" bDecor1Light:"$bDecor1Light$" bDecor2Light:"$bDecor2Light$" bDecor3Light:"$bDecor3Light$" bActorLight:"$bActorLight$" bDecor4Light:"$bDecor4Light$" bDecor5Light:"$bDecor5Light$" bDecor6Light:"$bDecor6Light$" bDecor7Light:"$bDecor7Light$" bDecor8Light:"$bDecor8Light$" bDecor9Light:"$bDecor9Light$" bDecor10Light:"$bDecor10Light);
01691	    //log(Tab$"  bActorShadows:"$bActorShadows$" bCorona:"$bCorona$" bLensFlare:"$bLensFlare$" bLightOwnZone:"$bLightOwnZone$" bLightChanged:"$bLightChanged);
01692	
01693	    //log(Tab$"  bBounce:"$bBounce$" bFixedRotationDir:"$bFixedRotationDir$" bRotateToDesired:"$bRotateToDesired$" bInterpolating:"$bInterpolating$" bJustTeleported:"$bJustTeleported);
01694	        log(Tab$"  bJustTeleported:"$bJustTeleported);
01695	    //log(Tab$"  Mass:"$Mass$" Buoyancy:"$Buoyancy$" RotationRate:"$RotationRate$" DesiredRotation:"$DesiredRotation$" PendingTouch:"$PendingTouch$" ColLocation:"$ColLocation);
01696	        log(Tab$"  DesiredRotation:"$DesiredRotation);
01697	    log(Tab$"  SimAnim.AnimSequence:"$SimAnim.AnimSequence$" SimAnim.bAnimLoop:"$SimAnim.bAnimLoop$" SimAnim.AnimRate:"$SimAnim.AnimRate$" SimAnim.AnimFrame:"$SimAnim.AnimFrame$" SimAnim.TweenRate:"$SimAnim.TweenRate);
01698	    //log(Tab$"  ForceType:"$ForceType$" ForceRadius:"$ForceRadius$" ForceScale:"$ForceScale);
01699	    //log(Tab$"  NetPriority:"$NetPriority$" NetUpdateFrequency:"$NetUpdateFrequency$" bNetInitial:"$bNetInitial$" bNetOwner:"$bNetOwner$" bNetRelevant:"$bNetRelevant$" bDemoRecording:"$bDemoRecording$" bClientDemoRecording:"$bClientDemoRecording$" bClientDemoNetFunc:"$bClientDemoNetFunc);
01700	        log(Tab$"  NetPriority:"$NetPriority);
01701	    //log(Tab$"  bHiddenEd:"$bHiddenEd$" bHiddenEdGroup:"$bHiddenEdGroup$" bDirectional:"$bDirectional$" bSelected:"$bSelected$" bEdLocked:"$bEdLocked$" bEdShouldSnap:"$bEdShouldSnap$" bEdSnap:"$bEdSnap);
01702	    //log(Tab$"  bTempEditor:"$bTempEditor$" bObsolete:"$bObsolete$" bPathColliding:"$bPathColliding$" bPathTemp:"$bPathTemp$" bScriptInitialized:"$bScriptInitialized$" MessageClass:"$MessageClass);
01703	
01704	/*
01705	var transient array<int>  Leaves;
01706	var const array<Actor>    Touching;		 // List of touching actors.
01707	var const actor           Deleted;       // Next actor in just-deleted chain.
01708	var const array<Actor>  Attached;			// array of actors attached to this actor.
01709	var const transient array<ProjectorRenderInfoPtr> Projectors;// Projected textures on this actor
01710	var(Display) array<Material> Skins;				// Multiple skin support - not replicated.
01711	*/
01712	    log(Tab$"End Actor's dump at "$TimeStamp$":");
01713	}
01714	
01715	defaultproperties
01716	{
01717	     bDecor1Light=True
01718	     bDecor2Light=True
01719	     bDecor3Light=True
01720	     bDecor4Light=True
01721	     bDecor5Light=True
01722	     bDecor6Light=True
01723	     bDecor7Light=True
01724	     bDecor8Light=True
01725	     bDecor9Light=True
01726	     bDecor10Light=True
01727	     bInteractive=True
01728	     bReplicateMovement=True
01729	     bIgnoreDynLight=True
01730	     bMovable=True
01731	     bHasRollOff=True
01732	     bHasPosition=True
01733	     bBlockZeroExtentTraces=True
01734	     bBlockNonZeroExtentTraces=True
01735	     bJustTeleported=True
01736	     Role=ROLE_Authority
01737	     RemoteRole=ROLE_DumbProxy
01738	     DrawType=DT_Sprite
01739	     Texture=Texture'Engine.S_Actor'
01740	     DrawScale=1.000000
01741	     DrawScale3D=(X=1.000000,Y=1.000000,Z=1.000000)
01742	     PanCoeff=0.600000
01743	     SaturationDistance=400.000000
01744	     StabilisationDistance=1392.000000
01745	     StabilisationVolume=-40.000000
01746	     VoicesSaturationDistance=250.000000
01747	     VoicesStabilisationDistance=1986.000000
01748	     VoicesStabilisationVolume=-40.000000
01749	     CollisionRadius=22.000000
01750	     CollisionHeight=22.000000
01751	     Style=STY_Normal
01752	     bSLightGroup=LG_Actor
01753	     Mass=100.000000
01754	     NetPriority=1.000000
01755	     NetUpdateFrequency=100.000000
01756	     MessageClass=Class'Engine.LocalMessage'
01757	}

End Source Code