//============================================================================= // KFKActor //============================================================================= // Base class for all placeable KActors in KF //============================================================================= // Killing Floor 2 // Copyright (C) 2015 Tripwire Interactive LLC // - Andrew "Strago" Ladenberger //============================================================================= class KFKActor extends KActor placeable; enum EKActorNetworkType { /** figure it out based on size */ NT_Auto, /** client side only (not gameplay relevant) */ NT_ClientSide, /** server side and replicated (gameplay relevant) */ NT_Replicated, }; /** type of networking to use */ var() EKActorNetworkType NetworkType; /* * Set network role based on type setting * NOTE: If you modify this function, also modify KFKAsset */ simulated event PreBeginPlay() { local bool bClientSide; switch (NetworkType) { case NT_Auto: // Assumes clientside for now. Could be dynamically determined based on MeshExtent. bClientSide = true; break; case NT_Replicated: bClientSide = false; break; default: bClientSide = true; // default to clientside break; } if (WorldInfo.NetMode == NM_Client) { // on the client, set role to Authority if we're a clientside only KActor Role = bClientSide ? ROLE_Authority : ROLE_SimulatedProxy; } else { // on the server, set role to SimulatedProxy (i.e. replicate it) only if not clientside RemoteRole = bClientSide ? ROLE_None : ROLE_SimulatedProxy; } if (bClientSide) { SetCollision(, false); } Super.PreBeginPlay(); } defaultproperties { RemoteRole=ROLE_None }