166 lines
5.3 KiB
Ucode
166 lines
5.3 KiB
Ucode
/**
|
|
* class SequenceEvent
|
|
*
|
|
* Sequence event is a representation of any event that
|
|
* is used to instigate a sequence.
|
|
*
|
|
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
|
|
*/
|
|
class SequenceEvent extends SequenceOp
|
|
native(Sequence)
|
|
abstract;
|
|
|
|
cpptext
|
|
{
|
|
|
|
|
|
virtual UBOOL CheckActivate(AActor *InOriginator, AActor *InInstigator, UBOOL bTest=FALSE, TArray<INT>* ActivateIndices = NULL, UBOOL bPushTop = FALSE);
|
|
|
|
/**
|
|
* Adds an error message to the map check dialog if this SequenceEvent's EventActivator is bStatic
|
|
*/
|
|
#if WITH_EDITOR
|
|
virtual void CheckForErrors();
|
|
|
|
// USequenceObject interface
|
|
virtual void DrawSeqObj(FCanvas* Canvas, UBOOL bSelected, UBOOL bMouseOver, INT MouseOverConnType, INT MouseOverConnIndex, FLOAT MouseOverTime);
|
|
virtual FIntRect GetSeqObjBoundingBox();
|
|
FIntPoint GetCenterPoint(FCanvas* Canvas);
|
|
|
|
virtual FString GetDisplayTitle() const;
|
|
#endif
|
|
|
|
/**
|
|
* This is a debug version of ActivateEvent which can be used by automated testing tools to Activate
|
|
* an event for testing purposes.
|
|
**/
|
|
virtual void DebugActivateEvent(AActor *InOriginator, AActor *InInstigator, TArray<INT> *ActivateIndices = NULL);
|
|
|
|
virtual UBOOL RegisterEvent();
|
|
|
|
/**
|
|
* Fills in the value of the "Instigator" VariableLink
|
|
*/
|
|
virtual void InitializeLinkedVariableValues();
|
|
|
|
virtual void OnExport()
|
|
{
|
|
Super::OnExport();
|
|
Originator = NULL;
|
|
Instigator = NULL;
|
|
}
|
|
|
|
/**
|
|
* Returns whether this SequenceObject can exist in a sequence without being linked to anything else (i.e. does not require
|
|
* another sequence object to activate it)
|
|
*/
|
|
virtual UBOOL IsStandalone() const { return TRUE; }
|
|
|
|
virtual void ActivateEvent(AActor *InOriginator, AActor *InInstigator, TArray<INT> *ActivateIndices = NULL, UBOOL bPushTop = FALSE, UBOOL bFromQueued = FALSE);
|
|
}
|
|
|
|
//==========================
|
|
// Base variables
|
|
|
|
/** List of events that are in-place duplicates of this event, used to relay messages. */
|
|
var array<SequenceEvent> DuplicateEvts;
|
|
|
|
/** Originator of this event, set at editor time. Usually the actor that this event is attached to. */
|
|
var Actor Originator;
|
|
|
|
/**
|
|
* Instigator of the event activation, or the actor that caused the event to be activated. Can vary depending
|
|
* on the type of event.
|
|
*/
|
|
var Actor Instigator;
|
|
|
|
/** Last time this event was activated at */
|
|
var float ActivationTime;
|
|
|
|
/** Number of times this event has been activated */
|
|
var int TriggerCount;
|
|
|
|
/** How many times can this event be activated, 0 for infinite */
|
|
var() int MaxTriggerCount;
|
|
|
|
/** Delay between allowed activations */
|
|
var() float ReTriggerDelay;
|
|
|
|
/** Is this event currently enabled? */
|
|
var() bool bEnabled;
|
|
|
|
/** Used by event managers (such as DialogueManager) to help filter out events that occur at same time */
|
|
var() Byte Priority;
|
|
|
|
/** Require this event to be activated by a player? */
|
|
var() bool bPlayerOnly;
|
|
|
|
/** Editor only, max width of the title bar? */
|
|
var int MaxWidth;
|
|
|
|
/** Has this event been successfully register? */
|
|
var transient bool bRegistered;
|
|
|
|
/** if true, this event (and therefore all linked actions) is triggered on the client instead of the server
|
|
* use for events that don't affect gameplay
|
|
* @note: direct references to level placed actors used by client side events/actions require that the actors have
|
|
* bStatic or bNoDelete set; otherwise the reference will be NULL on the client
|
|
*/
|
|
var() const bool bClientSideOnly;
|
|
|
|
/**
|
|
* Called when the sequence that contains this event is initialized (@see USequence::InitializeSequence). For events
|
|
* attached to actors, this will occur at level startup (@see USequence::BeginPlay())
|
|
*/
|
|
event RegisterEvent();
|
|
|
|
/**
|
|
* Checks if this event could be activated, and if bTest == false
|
|
* then the event will be activated with the specified actor as the
|
|
* instigator.
|
|
*
|
|
* @param inOriginator - actor to use as the originator
|
|
*
|
|
* @param inInstigator - actor to use as the instigator
|
|
*
|
|
* @param bTest - if true, then the event will not actually be
|
|
* activated, only tested for success
|
|
*
|
|
* @param ActivateIndices - array of indices of output links to activate
|
|
* if the event is activated. If unspecified, the default
|
|
* is to activate all of them.
|
|
* @param bPushTop - if true and the event is activated,
|
|
* adds it to the top of the stack (meaning it will be executed first), rather than the bottom
|
|
*
|
|
* @return true if this event can be activated, or was activate if !bTest
|
|
*/
|
|
native noexport final function bool CheckActivate(Actor inOriginator, Actor inInstigator, optional bool bTest, optional const out array<int> ActivateIndices, optional bool bPushTop);
|
|
|
|
/* Reset() - reset to initial state - used when restarting level without reloading */
|
|
function Reset()
|
|
{
|
|
// reset triggering related properties so that we may be triggered the maximum number of times again
|
|
ActivationTime = 0.f;
|
|
TriggerCount = 0;
|
|
Instigator = None;
|
|
}
|
|
|
|
/**
|
|
* Called once this event is toggled via SeqAct_Toggle.
|
|
*/
|
|
event Toggled()
|
|
{
|
|
}
|
|
|
|
defaultproperties
|
|
{
|
|
ObjColor=(R=255,G=0,B=0,A=255)
|
|
MaxTriggerCount=1
|
|
bEnabled=true
|
|
bPlayerOnly=true
|
|
bAutoActivateOutputLinks=false
|
|
|
|
InputLinks.Empty
|
|
VariableLinks(0)=(ExpectedType=class'SeqVar_Object',LinkDesc="Instigator",bWriteable=true)
|
|
}
|