Once I get that upgrade to 36-hour days, I will tackle that. – Mychaeel
UE2:PawnFactory
From Unreal Wiki, The Unreal Engine Documentation Site
Revision as of 17:36, 8 April 2008 by DalinSeivewright (Talk | contribs)
A generic factory for spawning pawns. The pawns used needs to be a sub-class of AnotherPawn.
NOTE: If your looking for a factory for vehicles check out Engine.SVehicleFactory
Properties
Visible
- bool bEnabled
- Factory is enabled by default.
- class<AnotherPawn> PawnClass
- The pawn to spawn.
- int MaxPawnCount
- The max number of pawns this factory can create.
Hidden
- int PawnCount
- The current number of pawns this factory has created.
Events
- PawnCreated( AnotherPawn Pawn )
- Called by the factory when a pawn is created.
- PawnDestroyed( AnotherPawn Pawn )
- Called by the pawn when it's destroyed.
- Trigger( Actor Other, Pawn EventInstigator )
- Spawns a new pawn if
PawnClass
is set and we haven't reached theMaxPawnCount
.
Code
Actor >> PawnFactory (custom) |
- This class in other games:
- U2XMP
// ============================================================================ // PawnFactory // Copyright (c) 2006 by Andrew Fyfe <andrew@neptune-one.net> // This program is free software; you can redistribute and/or modify // it under the terms of the Lesser Open Unreal Mod License version 1.1. // // A generic factory for spawning pawns. The pawns need to be a sub-class of // NeptuneOne.AnotherPawn. // // NOTE: If your looking for a factory for vehicles check out // Engine.SVehicleFactory // ============================================================================ class PawnFactory extends Actor placeable; // ============================================================================ // Properties // ============================================================================ var() bool bEnabled; // Factory is enabled by default. var() class<AnotherPawn> PawnClass< SEMI > // The pawn to spawn. var() int MaxPawnCount; // The max number of pawns this factory can create. var int PawnCount; // The current number of pawns this factory has created. // ============================================================================ // PawnCreated // // Called by the factory when a pawn is created. // ============================================================================ event PawnCreated( AnotherPawn Pawn ) { PawnCount++; Pawn.ParentFactory = self; if ( PawnCount >= MaxPawnCount ) { Log( "PawnFactory.Trigger(): MaxPawnCount reached, I'm not going to spawn another pawn.", 'NeptuneOne' ); bEnabled = false; } } // ============================================================================ // PawnDestroyed // // Called by the pawn when it's destroyed. // ============================================================================ event PawnDestroyed( AnotherPawn Pawn ) { PawnCount--; if ( PawnCount < MaxPawnCount ) { Log( "PawnFactory.PawnDestroyed(): The factory is enabled again.", 'NeptuneOne' ); bEnabled = true; } } // ============================================================================ // Trigger // // Spawns a new pawn if PawnClass is set and we haven't reached the // MaxPawnCount. // ============================================================================ event Trigger( Actor Other, Pawn EventInstigator ) { local AnotherPawn CreatedPawn; if ( !bEnabled ) return; if ( PawnClass == None ) { // Oops somebody forgot to set a PawnClass. Warn( "PawnFactory.Trigger(): "@self@" has no PawnClass! Disabling factory!" ); bEnabled = false; return; } CreatedPawn = Spawn( PawnClass, , , Location, Rotation ); if ( CreatedPawn != None ) PawnCreated( CreatedPawn ); } // ============================================================================ // Defaults // ============================================================================ defaultproperties { bEnabled=true MaxPawnCount=1 bHidden=true Texture=S_Keypoint RemoteRole=ROLE_None bNoDelete=true bDirectional=true }
Notes
fyfe: Added PawnCreated()
, and added some code to set bEnabled
to false while PawnCount == MaxPawnCount
or if PawnClass
isn't set.