1
0
KF2-Dev-Scripts/Engine/Classes/PBRuleNodeBase.uc
2020-12-13 18:01:13 +03:00

78 lines
2.8 KiB
Ucode

/**
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
*/
class PBRuleNodeBase extends Object
native(ProcBuilding)
hidecategories(Object)
editinlinenew
abstract;
struct native PBRuleLink
{
var() instanced PBRuleNodeBase NextRule;
var() name LinkName;
var editoronly int DrawY;
};
var editfixedsize array<PBRuleLink> NextRules;
// Editor stuff
/** User defined comment, shown above node */
var() editoronly string Comment;
/** Visual X position of this rule in editor */
var editoronly int RulePosX;
/** Visual Y position of this rule in editor */
var editoronly int RulePosY;
var editoronly int InDrawY;
var editoronly int DrawWidth;
var editoronly int DrawHeight;
cpptext
{
/**
* Perform this nodes rule on the supplied Scope, and then call next rule nodes
* @param InScope 2D region that this rule should process
* @param TopLevelScopeIndex Index into the TopLevelScopes array in the ProcBuilding actor that this scope comes from
* @param BaseBuilding Building that results of this proc building will become part of, root of attachment tree
* @param ScopeBuilding Building that the top-level scope originally comes from.
*/
virtual void ProcessScope(FPBScope2D& InScope, INT TopLevelScopeIndex, AProcBuilding* BaseBuilding, AProcBuilding* ScopeBuilding, UStaticMeshComponent* LODParent) {}
/** Get list of all rule nodes that follow this one (including this one) */
virtual void GetRuleNodes(TArray<UPBRuleNodeBase*>& OutRuleNodes);
/** Function to return the top or bottom most corner rule below this rule in the graph */
virtual class UPBRuleNodeCorner* GetCornerNode(UBOOL bTop, AProcBuilding* BaseBuilding, INT TopLevelScopeIndex);
// Editor
/** Util to try and fix up current connections based on an old set of connections, using connection name */
void FixUpConnections(TArray<FPBRuleLink>& OldConnections);
virtual FString GetRuleNodeTitle();
virtual FColor GetRuleNodeTitleColor();
virtual FString GetRuleNodeOutputName(INT ConnIndex);
/** Called when an instance of this rule node is placed in Facade */
virtual void RuleNodeCreated(UProcBuildingRuleset* Ruleset) {}
virtual void DrawRuleNode(FLinkedObjectDrawHelper* InHelper, FViewport* Viewport, FCanvas* Canvas, UBOOL bSelected);
/** Allows custom visualization drawing*/
virtual FIntPoint GetVisualizationSize(void) { return FIntPoint::ZeroValue();}
/**
* Custom visualization that can be specified per node
*/
virtual void DrawVisualization(FLinkedObjectDrawHelper* InHelper, FViewport* Viewport, FCanvas* Canvas, const FIntPoint& InDrawPosition) {}
virtual FIntPoint GetConnectionLocation(INT ConnType, INT ConnIndex);
}
defaultproperties
{
NextRules[0]=(LinkName="Next")
}