rott/kf_sources/Engine/Classes/Interaction.uc
2026-07-14 20:27:09 +07:00

131 lines
5.0 KiB
Ucode

// ====================================================================
// Class: Engine.Interaction
//
// Each individual Interaction is a jumping point in UScript. The should
// be the foundatation for any subsystem that requires interaction with
// the player (such as a menu).
//
// Interactions take on two forms, the Global Interaction and the Local
// Interaction. The GI get's to process data before the LI and get's
// render time after the LI, so in essence the GI wraps the LI.
//
// A dynamic array of GI's are stored in the InteractionMaster while
// each Viewport contains an array of LIs.
//
//
// (c) 2001, Epic Games, Inc. All Rights Reserved
// ====================================================================
class Interaction extends Interactions
native;
var bool bActive; // Is this interaction Getting Input
var bool bVisible; // Is this interaction being Displayed
var bool bRequiresTick; // Does this interaction require game TICK
var bool bNativeEvents; // This interaction requests native events
// These entries get filled out upon creation.
var Player ViewportOwner; // Pointer to the ViewPort that "Owns" this interaction or none if it's Global
var InteractionMaster Master; // Pointer to the Interaction Master
//-----------------------------------------------------------------------------
// natives.
native function Initialize(); // setup the state system and stack frame
native function bool ConsoleCommand( coerce string S ); // Executes a console command
// WorldToScreen converts a vector in the world
// ====================================================================
// WorldToScreen - Returns the X/Y screen coordinates in to a viewport of a given vector
// in the world.
// ====================================================================
native function vector WorldToScreen(vector Location, optional vector CameraLocation, optional rotator CameraRotation);
// ====================================================================
// ScreenToWorld - Converts an X/Y screen coordinate in to a world vector
// ====================================================================
native function vector ScreenToWorld(vector Location, optional vector CameraLocation, optional rotator CameraRotation);
// ====================================================================
// Initialized - Called directly after an Interaction Object has been created
// and Initialized. Should be subclassed
// ====================================================================
event Initialized();
event NotifyLevelChange();
// ====================================================================
// Message - This event allows interactions to receive messages
// ====================================================================
function Message( coerce string Msg, float MsgLife)
{
} // Message
// ====================================================================
// ====================================================================
// Input Routines - These two routines are the entry points for input. They both
// return true if the data has been processed and should now discarded.
// Both functions should be handled in a subclass of Interaction
// ====================================================================
// ====================================================================
function bool KeyType( out EInputKey Key, optional string Unicode )
{
return false;
}
function bool KeyEvent( out EInputKey Key, out EInputAction Action, FLOAT Delta )
{
return false;
}
// ====================================================================
// ====================================================================
// Render Routines - All Interactions recieve both PreRender and PostRender
// calls.
// Both functions should be handled in a subclass of Interaction
// ====================================================================
// ====================================================================
function PreRender( canvas Canvas );
function PostRender( canvas Canvas );
// ====================================================================
// SetFocus - This function cases the Interaction to gain "focus" in the interaction
// system. Global interactions's focus superceed locals.
// ====================================================================
function SetFocus()
{
Master.SetFocusTo(self,ViewportOwner);
} // SetFocus
// ====================================================================
// Tick - By default, Interactions do not get ticked, but you can
// simply turn on bRequiresTick.
// ====================================================================
function Tick(float DeltaTime);
// ====================================================================
function StreamFinished( int Handle, EStreamFinishReason Reason );
event NotifyMusicChange();
defaultproperties
{
bActive=True
bRequiresTick=False
bVisible=False
bNativeEvents=False
}