UE2:PawnFactory
From Unreal Wiki, The Unreal Engine Documentation Site
(Redirected from Open Source/Pawn Factory)
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:
// ============================================================================
// 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; // 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.