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

138 lines
3.5 KiB
Ucode

/**
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
*/
/**
* Base class of all geometry mode modifiers.
*/
class GeomModifier
extends Object
abstract
hidecategories(Object,GeomModifier)
native;
/** A human readable name for this modifier (appears on buttons, menus, etc) */
var(GeomModifier) string Description;
/** If true, this modifier should be displayed as a push button instead of a radio button */
var(GeomModifier) bool bPushButton;
/**
* TRUE if the modifier has been initialized.
* This is useful for interpreting user input and mouse drags correctly.
*/
var(GeomModifier) bool bInitialized;
/** Stored state of polys in case the brush state needs to be restroed */
var private Polys CachedPolys;
cpptext
{
/**
* @return The modifier's description string.
*/
const FString& GetModifierDescription() const;
/**
* @return TRUE if the key was handled by this editor mode tool.
*/
virtual UBOOL InputKey(struct FEditorLevelViewportClient* ViewportClient,FViewport* Viewport,FName Key,EInputEvent Event);
/**
* @return TRUE if the delta was handled by this editor mode tool.
*/
virtual UBOOL InputDelta(struct FEditorLevelViewportClient* InViewportClient,FViewport* InViewport,FVector& InDrag,FRotator& InRot,FVector& InScale);
/*
* Drawing functions to allow modifiers to have better control over the screen.
*/
virtual void Render(const FSceneView* View,FViewport* Viewport,FPrimitiveDrawInterface* PDI);
virtual void DrawHUD(FEditorLevelViewportClient* ViewportClient,FViewport* Viewport,const FSceneView* View,FCanvas* Canvas);
/**
* Applies the modifier. Does nothing if the editor is not in geometry mode.
*
* @return TRUE if something happened.
*/
UBOOL Apply();
/**
* @return TRUE if this modifier will work on the currently selected sub objects.
*/
virtual UBOOL Supports();
/**
* Gives the individual modifiers a chance to do something the first time they are activated.
*/
virtual void Initialize();
/**
* Starts the modification of geometry data.
*/
UBOOL StartModify();
/**
* Ends the modification of geometry data.
*/
UBOOL EndModify();
/**
* Handles the starting of transactions against the selected ABrushes.
*/
void StartTrans();
/**
* Handles the stopping of transactions against the selected ABrushes.
*/
void EndTrans();
virtual void Tick(FEditorLevelViewportClient* ViewportClient,FLOAT DeltaTime) {}
/**
* Gives the modifier a chance to initialize it's internal state when activated.
*/
virtual void WasActivated() {}
/**
* Gives the modifier a chance to clean up when the user is switching away from it.
*/
virtual void WasDeactivated() {}
/**
* Stores the current state of the brush so that upon faulty operations, the
* brush may be restored to its previous state
*/
void CacheBrushState();
/**
* Restores the brush to its cached state
*/
void RestoreBrushState();
/**
* @return TRUE if two edges in the shape overlap not at a vertex
*/
UBOOL DoEdgesOverlap();
protected:
/**
* Interface for displaying error messages.
*
* @param InErrorMsg The error message to display.
*/
void GeomError(const FString& InErrorMsg);
/**
* Implements the modifier application.
*/
virtual UBOOL OnApply();
}
defaultproperties
{
Description="None"
bPushButton=False
bInitialized=False
CachedPolys=None
}