//============================================================================= // Engine: The base class of the global application object classes. // Copyright 1998-2013 Epic Games, Inc. All Rights Reserved. //============================================================================= class Engine extends Subsystem native(GameEngine) abstract config(Engine) transient; // Fonts. var private Font TinyFont; var globalconfig string TinyFontName; var private Font SmallFont; var globalconfig string SmallFontName; var private Font MediumFont; var globalconfig string MediumFontName; var private Font LargeFont; var globalconfig string LargeFontName; var private Font SubtitleFont; var globalconfig string SubtitleFontName; /** Any additional fonts that script may use without hard-referencing the font. */ var private array AdditionalFonts; var globalconfig array AdditionalFontNames; /** The class to use for the game console. */ var class ConsoleClass; var globalconfig string ConsoleClassName; /** The class to use for the game viewport client. */ var class GameViewportClientClass; var globalconfig string GameViewportClientClassName; /** The class to use for managing the global data stores */ var class DataStoreClientClass; var globalconfig string DataStoreClientClassName; /** The class to use for local players. */ var class LocalPlayerClass; var config string LocalPlayerClassName; /** The material used when no material is explicitly applied. */ var Material DefaultMaterial; var globalconfig string DefaultMaterialName; /** The decal material used for fallback case of decals */ var Material DefaultDecalMaterial; var globalconfig string DefaultDecalMaterialName; /** A global default texture. */ var Texture DefaultTexture; var globalconfig string DefaultTextureName; /** The material used to render wireframe meshes. */ var Material WireframeMaterial; var globalconfig string WireframeMaterialName; /** A textured material with an instance parameter for the texture. */ var Material EmissiveTexturedMaterial; var globalconfig string EmissiveTexturedMaterialName; /** A translucent material used to render things in geometry mode. */ var Material GeomMaterial; var globalconfig string GeomMaterialName; /** The default fog volume material */ var Material DefaultFogVolumeMaterial; var globalconfig string DefaultFogVolumeMaterialName; /** Material used for drawing a tick mark. */ var Material TickMaterial; var globalconfig string TickMaterialName; /** Material used for drawing a cross mark. */ var Material CrossMaterial; var globalconfig string CrossMaterialName; /** Material used for visualizing level membership in lit viewport modes. */ var Material LevelColorationLitMaterial; var globalconfig string LevelColorationLitMaterialName; /** Material used for visualizing level membership in unlit viewport modes. */ var Material LevelColorationUnlitMaterial; var globalconfig string LevelColorationUnlitMaterialName; /** Material used for visualizing lighting only w/ lightmap texel density. */ var Material LightingTexelDensityMaterial; var globalconfig string LightingTexelDensityName; /** Material used for visualizing level membership in lit viewport modes. Uses shading to show axis directions. */ var Material ShadedLevelColorationLitMaterial; var globalconfig string ShadedLevelColorationLitMaterialName; /** Material used for visualizing level membership in unlit viewport modes. Uses shading to show axis directions. */ var Material ShadedLevelColorationUnlitMaterial; var globalconfig string ShadedLevelColorationUnlitMaterialName; /** Material used to indicate that the associated BSP surface should be removed. */ var Material RemoveSurfaceMaterial; var globalconfig string RemoveSurfaceMaterialName; /** Material that renders vertex colour as emissive. */ var Material VertexColorMaterial; var globalconfig string VertexColorMaterialName; /** Material for visualizing vertex colors on meshes in the scene (color only, no alpha) */ var Material VertexColorViewModeMaterial_ColorOnly; var globalconfig string VertexColorViewModeMaterialName_ColorOnly; /** Material for visualizing vertex colors on meshes in the scene (alpha channel as color) */ var Material VertexColorViewModeMaterial_AlphaAsColor; var globalconfig string VertexColorViewModeMaterialName_AlphaAsColor; /** Material for visualizing vertex colors on meshes in the scene (red only) */ var Material VertexColorViewModeMaterial_RedOnly; var globalconfig string VertexColorViewModeMaterialName_RedOnly; /** Material for visualizing vertex colors on meshes in the scene (green only) */ var Material VertexColorViewModeMaterial_GreenOnly; var globalconfig string VertexColorViewModeMaterialName_GreenOnly; /** Material for visualizing vertex colors on meshes in the scene (blue only) */ var Material VertexColorViewModeMaterial_BlueOnly; var globalconfig string VertexColorViewModeMaterialName_BlueOnly; /** Material used to render game stat heatmaps. */ var Material HeatmapMaterial; var globalconfig string HeatmapMaterialName; /** Material used to render bone weights on skel meshes */ var Material BoneWeightMaterial; var globalconfig string BoneWeightMaterialName; /** Material used to render tangents on skel meshes */ var Material TangentColorMaterial; var globalconfig string TangentColorMaterialName; /** The mobile emulation material for Additive. */ var Material MobileEmulationMasterMaterial; var globalconfig string MobileEmulationMasterMaterialName; /** Material used to render the low detail version of procedural buildings */ var Material ProcBuildingSimpleMaterial; var globalconfig string ProcBuildingSimpleMaterialName; /** Mesh used when we need a quad */ var StaticMesh BuildingQuadStaticMesh; var globalconfig string BuildingQuadStaticMeshName; /** Roughly how many texels per world unit when generating a building LOD color texture */ var globalconfig float ProcBuildingLODColorTexelsPerWorldUnit; /** Roughly how many texels per world unit when generating a building LOD lighting texture */ var globalconfig float ProcBuildingLODLightingTexelsPerWorldUnit; /** Maximum size of a building LOD color texture */ var globalconfig int MaxProcBuildingLODColorTextureSize; /** Maximum size of a building LOD lighting texture */ var globalconfig int MaxProcBuildingLODLightingTextureSize; /** Whether to crop building LOD textures to rectangular textures to reduce wasted memory */ var globalconfig bool UseProcBuildingLODTextureCropping; /** Whether to force use of power-of-two LOD textures (uses more memory, but may have better performance) */ var globalconfig bool ForcePowerOfTwoProcBuildingLODTextures; /** True if we should combine light/shadow maps together if they're very similar to one another */ var globalconfig bool bCombineSimilarMappings; /** Maximum root mean square deviation of the image difference allowed for mappings to be combined. Requires bCombineSimilarLightAndShadowMappings to be enabled. */ var globalconfig float MaxRMSDForCombiningMappings; /** Size of the texture generated by ImageReflectionSceneCapture actors. */ var globalconfig int ImageReflectionTextureSize; var globalconfig LinearColor LightingOnlyBrightness; /** The colors used to render light complexity. */ var globalconfig array LightComplexityColors; /** The colors used to render shader complexity. */ var globalconfig array ShaderComplexityColors; /** * Complexity limits for the various complexity viewmode combinations. * These limits are used to map instruction counts to ShaderComplexityColors. */ var globalconfig float MaxPixelShaderAdditiveComplexityCount; /** Range for the texture density viewmode. */ var globalconfig float MinTextureDensity; var globalconfig float IdealTextureDensity; var globalconfig float MaxTextureDensity; /** Range for the lightmap density viewmode. */ /** Minimum lightmap density value for coloring. */ var globalconfig float MinLightMapDensity; /** Ideal lightmap density value for coloring. */ var globalconfig float IdealLightMapDensity; /** Maximum lightmap density value for coloring. */ var globalconfig float MaxLightMapDensity; /** If TRUE, then render grayscale density. */ var globalconfig bool bRenderLightMapDensityGrayscale; /** The scale factor when rendering grayscale density. */ var globalconfig float RenderLightMapDensityGrayscaleScale; /** The scale factor when rendering color density. */ var globalconfig float RenderLightMapDensityColorScale; /** The color to render vertex mapped objects in for LightMap Density view mode. */ var globalconfig linearcolor LightMapDensityVertexMappedColor; /** The color to render selected objects in for LightMap Density view mode. */ var globalconfig linearcolor LightMapDensitySelectedColor; struct native StatColorMapEntry { var globalconfig float In; var globalconfig color Out; }; struct native StatColorMapping { var globalconfig string StatName; var globalconfig array ColorMap; var globalconfig bool DisableBlend; }; var globalconfig array StatColorMappings; /** A material used to render the sides of the builder brush/volumes/etc. */ var Material EditorBrushMaterial; var globalconfig string EditorBrushMaterialName; /** PhysicalMaterial to use if none is defined for a particular object. */ var PhysicalMaterial DefaultPhysMaterial; var globalconfig string DefaultPhysMaterialName; /** PhysicalMaterial used for landscape and terrain holes */ var PhysicalMaterial LandscapeHolePhysMaterial; var globalconfig string LandscapeHolePhysMaterialName; /** Optional damage mapping for Apex destructbile actors */ var ApexDestructibleDamageParameters ApexDamageParams; var globalconfig string ApexDamageParamsName; /** The material used when terrain compilation is too complex. */ var Material TerrainErrorMaterial; var globalconfig string TerrainErrorMaterialName; var globalconfig int TerrainMaterialMaxTextureCount; /** This is the number of frames that are used between terrain tessellation re-calculations */ var globalconfig int TerrainTessellationCheckCount; /** * The radius from the view origin that terrain tessellation checks should be performed. * If 0.0, every component will be checked for tessellation changes each frame. */ var globalconfig float TerrainTessellationCheckDistance; /** * Bool switch for SetRequestScreenshot function */ var bool bScreenshotRequested; /** OnlineSubsystem class to use for netplay */ var class OnlineSubsystemClass; var globalconfig string DefaultOnlineSubsystemName; /** Default engine post process chain used for the game and main editor view if none is specified in the WorldInfo */ var private{private} PostProcessChain DefaultPostProcess; var private{private} config string DefaultPostProcessName; /** post process chain used for skeletal mesh thumbnails */ var PostProcessChain ThumbnailSkeletalMeshPostProcess; var config string ThumbnailSkeletalMeshPostProcessName; /** post process chain used for particle system thumbnails */ var PostProcessChain ThumbnailParticleSystemPostProcess; var config string ThumbnailParticleSystemPostProcessName; /** post process chain used for material thumbnails */ var PostProcessChain ThumbnailMaterialPostProcess; var config string ThumbnailMaterialPostProcessName; /** post process chain used for rendering the UI */ var PostProcessChain DefaultUIScenePostProcess; var config string DefaultUIScenePostProcessName; /** Material used for drawing meshes when their collision is missing. */ var Material DefaultUICaretMaterial; var globalconfig string DefaultUICaretMaterialName; /** Material used for visualizing the reflection scene captures on a surface */ var Material SceneCaptureReflectActorMaterial; var globalconfig string SceneCaptureReflectActorMaterialName; /** Material used for visualizing the cube map scene captures on a mesh */ var Material SceneCaptureCubeActorMaterial; var globalconfig string SceneCaptureCubeActorMaterialName; /** Texture used to get random opacity values per-pixel for screen-door fading */ var Texture2D ScreenDoorNoiseTexture; var globalconfig string ScreenDoorNoiseTextureName; /** Texture used to get random image grain values for post processing */ var Texture2D ImageGrainNoiseTexture; var globalconfig string ImageGrainNoiseTextureName; /** Texture used to get random angles per-pixel by the Branching PCF implementation */ var Texture2D RandomAngleTexture; var globalconfig string RandomAngleTextureName; /** Texture used to get random normals per-pixel */ var Texture2D RandomNormalTexture; var globalconfig string RandomNormalTextureName; /** Texture used to get random rotation per-pixel */ var Texture2D RandomMirrorDiscTexture; var globalconfig string RandomMirrorDiscTextureName; /** Texture used as a placeholder for terrain weight-maps to give the material the correct texture format. */ var Texture WeightMapPlaceholderTexture; var globalconfig string WeightMapPlaceholderTextureName; /** Texture used to display LightMapDensity */ var Texture2D LightMapDensityTexture; var globalconfig string LightMapDensityTextureName; /** Texture used to display LightMapDensity */ var Texture2D LightMapDensityNormal; var globalconfig string LightMapDensityNormalName; `if(`__TW_CUSTOM_VIEWMODES_) /** Texture used to display SplatterMapDensity */ var Texture2D SplatterMapDensityTexture; var globalconfig string SplatterMapDensityTextureName; `endif `if(`__TW_PERSISTENT_SPLATTER_SYSTEM_) /** * Texture used by the persistent blood splatter system * R Channel = Tiling Mask * G Channel = Reflection (Faked Cubemap) */ var Texture2D PersistentBloodMasterTexture; var globalconfig string PersistentBloodMasterTextureName; `endif `if(`__TW_SCREEN_SPACE_REFLECTIONS_) var Texture2D DitherTexture; var globalconfig string DitherTextureName; `endif /** White noise sound */ var SoundNodeWave DefaultSound; var globalconfig string DefaultSoundName; /** Time in seconds (game time) we should wait between purging object references to objects that are pending kill */ var(Settings) config float TimeBetweenPurgingPendingKillObjects; // Variables. /** Abstract interface to platform-specific subsystems */ var const client Client; /** Viewports for all players in all game instances (all PIE windows, for example) */ var init array GamePlayers; /** the viewport representing the current game instance */ var const GameViewportClient GameViewport; /** Array of deferred command strings/ execs that get executed at the end of the frame */ var init array DeferredCommands; var int TickCycles, GameCycles, ClientCycles; var transient bool bUseSound; /** Whether to allow background level streaming. */ var(Settings) config bool bUseBackgroundLevelStreaming; /** Flag for completely disabling subtitles for localized sounds. */ var(Settings) config bool bSubtitlesEnabled; /** Flag for forcibly disabling subtitles even if you try to turn them back on they will be off */ var(Settings) config bool bSubtitlesForcedOff; /** Whether to enable framerate smoothing. */ var config bool bSmoothFrameRate; /** Maximum framerate to smooth. Code will try to not go over via waiting. */ var config float MaxSmoothedFrameRate; /** Minimum framerate smoothing will kick in. */ var config float MinSmoothedFrameRate; /** * Whether we should check for more than N pawns spawning in a single frame. * Basically, spawning pawns and all of their attachments can be slow. And on consoles it * can be really slow. If this bool is true we will display a **/ var config bool bCheckForMultiplePawnsSpawnedInAFrame; /** If bCheckForMultiplePawnsSpawnedInAFrame==TRUE, then we will check to see that no more than this number of pawns are spawned in a frame. **/ var config int NumPawnsAllowedToBeSpawnedInAFrame; /** * Whether or not the simple lightmaps should be generated during lighting rebuilds. */ var globalconfig bool bShouldGenerateSimpleLightmaps; /** * Flag for forcing terrain to be 'static' (MinTessellationLevel = MaxTesselationLevel) * Game time only... */ var(Settings) config bool bForceStaticTerrain; /** Entry point for RemoteControl, the in-game UI for the exec system. */ var native pointer RemoteControlExec{class FRemoteControlExec}; /** Pointer to a support class to handle mobile material emulation (created on demand) */ var native pointer MobileMaterialEmulator{class FMobileMaterialEmulator}; // Color preferences. var(Colors) color C_WorldBox, C_BrushWire, C_AddWire, C_SubtractWire, C_SemiSolidWire, C_NonSolidWire, C_WireBackground, C_ScaleBoxHi, C_VolumeCollision, C_BSPCollision, C_OrthoBackground, C_Volume, C_BrushShape; /** Fudge factor for tweaking the distance based miplevel determination */ var(Settings) float StreamingDistanceFactor; /** Class name of the scout to use for path building */ var const config string ScoutClassName; /** * A transition type. */ enum ETransitionType { TT_None, TT_Paused, TT_Loading, TT_Saving, TT_Connecting, TT_Precaching }; /** The current transition type. */ var ETransitionType TransitionType; /** The current transition description text. */ var string TransitionDescription; /** The gametype for the destination map */ var string TransitionGameType; /** Level of detail range control for meshes */ var config float MeshLODRange; /** Force to CPU skinning only for skeletal mesh rendering */ var config bool bForceCPUSkinning; /** Whether to use post processing effects or not */ var config bool bUsePostProcessEffects; /** whether to send Kismet warning messages to the screen (via PlayerController::ClientMessage()) */ var config bool bOnScreenKismetWarnings; /** whether kismet logging is enabled. */ var config bool bEnableKismetLogging; /** whether mature language is allowed **/ var config bool bAllowMatureLanguage; /** camera rotation (deg) beyond which occlusion queries are ignored from previous frame (because they are likely not valid) */ var config float CameraRotationThreshold; /** camera movement beyond which occlusion queries are ignored from previous frame (because they are likely not valid) */ var config float CameraTranslationThreshold; /** The amount of time a primitive is considered to be probably visible after it was last actually visible. */ var config float PrimitiveProbablyVisibleTime; `if(`__TW_LIGHT_CULLING_) /** The amount of time a light is considered to be probably visible after it was last actually visible. */ var config float LightProbablyVisibleTime; `endif /** The percent of previously unoccluded primitives which are requeried every frame. */ var config float PercentUnoccludedRequeries; /** Max screen pixel fraction where retesting when unoccluded is worth the GPU time. */ var config float MaxOcclusionPixelsFraction; // NVCHANGE_BEGIN_TURB: Multiple PhysX levels /** Level of PhysX content. 0 means no hardware acceleration. */ var globalconfig int PhysXLevel; // NVCHANGE_END_TURB: Multiple PhysX levels /** Do not use Ageia PhysX hardware */ var globalconfig bool bDisablePhysXHardwareSupport; /** Whether to pause the game if focus is lost. */ var config bool bPauseOnLossOfFocus; /** The most vertices a fluid surface can have. The number of verts is clamped to avoid running out of memory and exposing driver bugs. */ var config int MaxFluidNumVerts; /** * Time limit (in milliseconds) for a fluid simulation update, to avoid spiraling into a bad * feedback-loop with slower and slower framerate. This value is doubled in debug builds. */ var config float FluidSimulationTimeLimit; /** * The maximum allowed size to a ParticleEmitterInstance::Resize call. * If larger, the function will return without resizing. */ var config int MaxParticleResize; /** * If the resize request is larger than this, spew out a warning to the log */ var config int MaxParticleResizeWarn; /** * If TRUE, then perform particle size checks in non FINAL_RELEASE builds. */ var globalconfig bool bCheckParticleRenderSize; /** The maximum amount of memory any single emitter is allowed to take for its vertices */ var config int MaxParticleVertexMemory; var transient int MaxParticleSpriteCount; var transient int MaxParticleSubUVCount; /** The number of times to attempt the Begin*UP call before assuming the GPU is hosed */ var config int BeginUPTryCount; /** Info about one note dropped in the map during PIE. */ struct native DropNoteInfo { /** Location to create Note actor in edited level. */ var vector Location; /** Rotation to create Note actor in edited level. */ var rotator Rotation; /** Text to assign to Note actor in edited level. */ var string Comment; }; /** */ var transient array PendingDroppedNotes; /** Overridable class for cover mesh rendering in-game, used to get around the editoronly restrictions needed by the base CoverMeshComponent */ var globalconfig string DynamicCoverMeshComponentName; /** * By default, each frame's initial scene color clear is disabled. * This flag can be toggled at runtime to enable clearing for development. */ var globalconfig const bool bEnableColorClear; /** Number of times to tick each client per second */ var globalconfig float NetClientTicksPerSecond; /** * The largest step-size allowed for lens flare occlusion results * before using the incremental step method. */ var globalconfig float MaxTrackedOcclusionIncrement; /** * The incremental step size for the above. */ var globalconfig float TrackedOcclusionStepSize; /** Keeps track whether actors moved via PostEditMove and therefore constraint syncup should be performed. */ var transient bool bAreConstraintsDirty; /** TRUE if the engine needs to perform a delayed global component reattach (really just for editor) */ var transient bool bHasPendingGlobalReattach; /** Default color of selected objects in the level viewport (additive) */ var globalconfig LinearColor DefaultSelectedMaterialColor; /** Default color of hovered objects in the level viewport (additive) */ var globalconfig LinearColor DefaultHoveredMaterialColor; /** Color of selected objects in the level viewport (additive) */ var transient LinearColor SelectedMaterialColor; /** Color of unselected objects in the level viewport (additive) */ var transient LinearColor UnselectedMaterialColor; /** If TRUE, then disable OnScreenDebug messages. Can be toggled in real-time. */ var globalconfig bool bEnableOnScreenDebugMessages; /** If TRUE, then disable the display of OnScreenDebug messages (used when running) */ var transient bool bEnableOnScreenDebugMessagesDisplay; /** If TRUE, then skip drawing map warnings on screen even in non FINAL_RELEASE builds */ var globalconfig bool bSuppressMapWarnings; /** If DevAbsorbFuncs logging is unsuppressed and _DEBUG is defined in native, functions listed in this array will not throw a warning when they are absorbed for not being simulated on clients. Useful for functions like Tick, where this behaviour is intentional */ var globalconfig array IgnoreSimulatedFuncWarnings; /** if set, cook game classes into standalone packages (as defined in [Cooker.MPGameContentCookStandalone]) and load the appropriate * one at game time depending on the gametype specified on the URL * (the game class should then not be referenced in the maps themselves) */ var globalconfig bool bCookSeparateSharedMPGameContent; /** * If TRUE and build w/ WITH_RECAST enabled, use Recast for navmesh */ var globalconfig bool bUseRecastNavMesh; /** determines whether AI logging should be processed or not */ var bool bDisableAILogging; `if(`__TW_BASEAI_LEAN_) /** * AI interface instance */ var globalconfig string AISubsystemClassName; var AISubsystem AISys; `endif /** Semaphore to control screen saver inhibitor thread access. */ var private{private} transient int ScreenSaverInhibitorSemaphore; /** Thread preventing screen saver from kicking. Suspend most of the time. */ var private{private} transient pointer ScreenSaverInhibitor{FRunnableThread}; /** A global translation context handles simple translation scenarios. e.g. */ var TranslationContext GlobalTranslationContext; /** Enables normal map sampling when Lightmass is generating 'simple' light maps. This increases lighting build time, but may improve quality when normal maps are used to represent curvature over a large surface area. When this setting is disabled, 'simple' light maps will not take normal maps into account. */ var globalconfig bool bUseNormalMapsForSimpleLightMaps; /** Timestamp for when a loading movie was started, based on appSeconds(). Cleared to 0.0 when no movies are playing anymore. */ var const transient double LoadingMovieStartTime; /** determines if we should start the matinee capture as soon as the game loads */ var transient bool bStartWithMatineeCapture; /** should we compress the capture */ var transient bool bCompressMatineeCapture; /** the name of the matine that we want to record */ var transient string MatineeCaptureName; /** The package name where the matinee belongs to */ var transient string MatineePackageCaptureName; /** The visible levels that should be loaded when the matinee starts */ var transient string VisibleLevelsForMatineeCapture; /** the fps of the matine that we want to record */ var transient int MatineeCaptureFPS; /** The capture type 0 - AVI, 1 - Screen Shots */ var transient int MatineeCaptureType; /** TRUE if the the user cannot modify levels that are read only. */ var transient bool bLockReadOnlyLevels; //@HSL_BEGIN - BWJ - 8-19-16 - Server query support /** Net driver for server query support */ var NetDriver QueryNetDriver; //@HSL_END //@HSL_BEGIN - BWJ - 2-27-17 - Support for safe frame scale /** The safe frame scale. Currently only used for XB1 */ var float SafeFrameScale; //@HSL_END cpptext { // Constructors. UEngine(); void StaticConstructor(); // UObject interface. virtual void FinishDestroy(); // UEngine interface. virtual void Init(); /** * Called at shutdown, just before the exit purge. */ #if __TW_BASEAI_LEAN_ virtual void PreExit(); #else virtual void PreExit() {} #endif virtual UBOOL Exec( const TCHAR* Cmd, FOutputDevice& Out=*GLog ); virtual void Tick( FLOAT DeltaSeconds ) PURE_VIRTUAL(UEngine::Tick,); virtual void SetClientTravel( const TCHAR* NextURL, ETravelType TravelType ) PURE_VIRTUAL(UEngine::SetClientTravel,); virtual FLOAT GetMaxTickRate( FLOAT /*DeltaTime*/, UBOOL bAllowFrameRateSmoothing = TRUE ); virtual void SetProgress( EProgressMessageType MessageType, const FString& Title, const FString& Message ); /** * Called by Exec. Memory related execs. */ UBOOL ExecMemFunctions( const TCHAR* Cmd, FOutputDevice& Out=*GLog ); /** * Called by Exec. Threading related execs. */ UBOOL ExecThreadFunctions( const TCHAR* Cmd, FOutputDevice& Out=*GLog ); /** * Pauses / unpauses the game-play when focus of the game's window gets lost / gained. * @param EnablePause TRUE to pause; FALSE to unpause the game */ virtual void OnLostFocusPause( UBOOL EnablePause ); #if DO_CHARTING /** * Ticks the FPS chart. * * @param DeltaSeconds Time in seconds passed since last tick. */ virtual void TickFPSChart( FLOAT DeltaSeconds ); /** * Ticks the Memory chart. * * @param DeltaSeconds Time in seconds passed since last tick. */ virtual void TickMemoryChart( FLOAT DeltaSeconds ); /** * Resets the FPS chart data. */ virtual void ResetFPSChart(); /** * Dumps the FPS chart information to the passed in archive. * * @param bForceDump Whether to dump even if FPS chart info is not enabled. */ virtual void DumpFPSChart( UBOOL bForceDump = FALSE ); /** Dumps info on DistanceFactor used for rendering SkeletalMeshComponents during the game. */ virtual void DumpDistanceFactorChart(); /** * Resets the Memory chart data. */ virtual void ResetMemoryChart(); /** * Dumps the Memory chart information to various places. * * @param bForceDump Whether to dump even if no info has been captured yet (will force an update in that case). */ virtual void DumpMemoryChart( UBOOL bForceDump = FALSE ); private: /** * Dumps the FPS chart information to HTML. */ virtual void DumpFPSChartToHTML( FLOAT TotalTime, FLOAT DeltaTime, INT NumFrames, UBOOL bOutputToGlobalLog ); /** * Dumps the FPS chart information to the log. */ virtual void DumpFPSChartToLog( FLOAT TotalTime, FLOAT DeltaTime, INT NumFrames ); /** * Dumps the FPS chart information to the special stats log file. */ virtual void DumpFPSChartToStatsLog( FLOAT TotalTime, FLOAT DeltaTime, INT NumFrames ); /** * Dumps the frame times information to the special stats log file. */ virtual void DumpFrameTimesToStatsLog( FLOAT TotalTime, FLOAT DeltaTime, INT NumFrames ); /** * Dumps the Memory chart information to HTML. */ virtual void DumpMemoryChartToHTML( FLOAT TotalTime, FLOAT DeltaTime, INT NumFrames, UBOOL bOutputToGlobalLog ); /** * Dumps the Memory chart information to the log. */ virtual void DumpMemoryChartToLog( FLOAT TotalTime, FLOAT DeltaTime, INT NumFrames ); /** * Dumps the Memory chart information to the special stats log file. */ virtual void DumpMemoryChartToStatsLog( FLOAT TotalTime, FLOAT DeltaTime, INT NumFrames ); #endif // DO_CHARTING public: /** * Spawns any registered server actors */ virtual void SpawnServerActors(void) { } /** * Loads all Engine object references from their corresponding config entries. */ void InitializeObjectReferences(); /** * Construct a UNetDriver object based on an .ini setting * * @return The created NetDriver object, or NULL if it fails */ virtual class UNetDriver* ConstructNetDriver() { return NULL; } /** * Clean up the GameViewport */ void CleanupGameViewport(); /** Get some viewport. Will be GameViewport in game, and one of the editor viewport windows in editor. */ virtual FViewport* GetAViewport(); /** * Allows the editor to accept or reject the drawing of wireframe brush shapes based on mode and tool. */ virtual UBOOL ShouldDrawBrushWireframe( class AActor* InActor ) { return TRUE; } /** * Issued by code requesting that decals be reattached. */ virtual void IssueDecalUpdateRequest() {} /** * Returns whether or not the map build in progressed was cancelled by the user. */ virtual UBOOL GetMapBuildCancelled() const { return FALSE; } /** * Sets the flag that states whether or not the map build was cancelled. * * @param InCancelled New state for the cancelled flag. */ virtual void SetMapBuildCancelled( UBOOL InCancelled ) { // Intentionally empty. } /** * Computes a color to use for property coloration for the given object. * * @param Object The object for which to compute a property color. * @param OutColor [out] The returned color. * @return TRUE if a color was successfully set on OutColor, FALSE otherwise. */ virtual UBOOL GetPropertyColorationColor(class UObject* Object, FColor& OutColor); /** Uses StatColorMappings to find a color for this stat's value. */ UBOOL GetStatValueColoration(const FString& StatName, FLOAT Value, FColor& OutColor); /** * @return TRUE if selection of translucent objects in perspective viewports is allowed */ virtual UBOOL AllowSelectTranslucent() const { // The editor may override this to disallow translucent selection based on user preferences return TRUE; } /** * @return TRUE if only editor-visible levels should be loaded in Play-In-Editor sessions */ virtual UBOOL OnlyLoadEditorVisibleLevelsInPIE() const { // The editor may override this to apply the user's preference state return TRUE; } /** * Enables or disables the ScreenSaver (PC only) * * @param bEnable If TRUE the enable the screen saver, if FALSE disable it. */ void EnableScreenSaver( UBOOL bEnable ); /** * Get the index of the provided sprite category * * @param InSpriteCategory Sprite category to get the index of * * @return Index of the provided sprite category, if possible; INDEX_NONE otherwise */ virtual INT GetSpriteCategoryIndex( const FName& InSpriteCategory ) { // The editor may override this to handle sprite categories as necessary return INDEX_NONE; } /** * Trips a bool in engine side code to signal a screenshot request on next frame */ void SetRequestScreenshot(); /** * Starts playing a loading movie from memory. * Keeps track of the total time fullscreen movies are playing to cover loading. * * @param MovieName Name of the movie to play in its entirety */ void PlayLoadingMovie( const TCHAR* MovieName ); protected: /** * Handles freezing/unfreezing of rendering */ virtual void ProcessToggleFreezeCommand() { // Intentionally empty. } /** * Handles frezing/unfreezing of streaming */ virtual void ProcessToggleFreezeStreamingCommand() { // Intentionally empty. } /** * Updates all physics constraint actor joint locations. */ virtual void UpdateConstraintActors(); #if __TW_BASEAI_LEAN_ virtual void InitializeSubsystems(); #endif } /** @return the GIsEditor flag setting */ native static final function bool IsEditor(); /** @return the GIsGame flag is setting */ native static final function bool IsGame(); /** * Returns a pointer to the current world. */ native static final function WorldInfo GetCurrentWorldInfo(); /** * Returns version info from the engine */ native static final function string GetBuildDate(); /** * Returns the UUID of the device (or empty if cannot be determined) */ native static final function string GetDeviceUUID(); /** * Return OS version number */ native static final function float GetOSVersion(); /** * Return TitleSafe Area Scale. */ native static final function float GetTitleSafeArea(); /** * Returns the push notification token for the device + application */ native static final function string GetDevicePushNotificationToken(); /* * Returns the proper formatting for a bug data export string */ native static final function string BuildBugSubmissionString(string BugField, string BugFieldData); /** * Return true if there is a network connection */ native static final function bool HasNetworkConnection(); /** * Returns the engine's default tiny font */ native static final function Font GetTinyFont(); /** * Returns the engine's default small font */ native static final function Font GetSmallFont(); /** * Returns the engine's default medium font */ native static final function Font GetMediumFont(); /** * Returns the engine's default large font */ native static final function Font GetLargeFont(); /** * Returns the engine's default subtitle font */ native static final function Font GetSubtitleFont(); /** * Returns the specified additional font. * * @param AdditionalFontIndex Index into the AddtionalFonts array. */ native static final function Font GetAdditionalFont(int AdditionalFontIndex); /** @return whether we're currently running in splitscreen (more than one local player) */ native static final function bool IsSplitScreen(); /** @return whether we're currently running with stereoscopic 3D enabled */ native static final function bool IsStereoscopic3D(); /** @return whether we're currently running with the OpenGL ES2 renderer */ native static final function bool IsUsingES2Renderer(); /** @return the audio device (will be None if sound is disabled) */ native static final function AudioDevice GetAudioDevice(); `if(`__TW_BASEAI_LEAN_) /** @return the AISubsystem instantiated in packages loaded later (None if not instantiated) */ native static final function AISubsystem GetAISubsystem(); `endif /** @return Returns the name of the last movie that was played. */ native static final function string GetLastMovieName(); /** * Play one of the LoadMap loading movies as configured by ini file * * @return TRUE if a movie was played */ native static final function bool PlayLoadMapMovie(); /** * Stops the current movie * * @param bDelayStopUntilGameHasRendered If TRUE, the engine will delay stopping the movie until after the game has rendered at least one frame */ native static final function StopMovie(bool bDelayStopUntilGameHasRendered); /** * Removes all overlays from displaying */ native static final function RemoveAllOverlays(); /** * Adds a text overlay to the movie * * @param Font Font to use to display (must be in the root set so this will work during loads) * @param Text Text to display * @param X X location in resolution-independent coordinates (ignored if centered) * @param Y Y location in resolution-independent coordinates * @param ScaleX Text horizontal scale * @param ScaleY Text vertical scale * @param bIsCentered TRUE if the text should be centered */ native static final function AddOverlay( Font Font, string Text, float X, float Y, float ScaleX, float ScaleY, bool bIsCentered ); /** * Adds a wrapped text overlay to the movie * * @param Font Font to use to display (must be in the root set so this will work during loads) * @param Text Text to display * @param X X location in resolution-independent coordinates (ignored if centered) * @param Y Y location in resolution-independent coordinates * @param ScaleX Text horizontal scale * @param ScaleY Text vertical scale * @param WrapWidth Number of pixels before text should wrap */ native static final function AddOverlayWrapped( Font Font, string Text, float X, float Y, float ScaleX, float ScaleY, float WrapWidth ); // WITH_REALD BEGIN /** * Returns whether RealD stereo rendering is enabled or not */ native static final function bool IsRealDStereoEnabled(); // WITH_REALD END /** * returns GEngine */ native static final function Engine GetEngine(); /** * Returns the defualt post process chain (loading it if it has not yet been loaded) */ native static final function PostProcessChain GetDefaultPostProcessChain(); /** * Returns the post process chain to be used with the world. */ native static final function PostProcessChain GetWorldPostProcessChain(); /** * Adds a world location as a secondary view location for purposes of texture streaming. * Lasts one frame, or a specified number of seconds (for overriding locations only). * * @param InLoc Location to add to texture streaming for this frame * @param BoostFactor A factor that affects all streaming distances for this location. 1.0f is default. Higher means higher-resolution textures and vice versa. * @param bOverrideLocation Whether this is an override location, which forces the streaming system to ignore all other locations * @param OverrideDuration How long the streaming system should keep checking this location if bOverrideLocation is TRUE, in seconds. 0 means just for the next Tick. */ native final function AddTextureStreamingSlaveLoc(vector InLoc, float BoostFactor, bool bOverrideLocation, float OverrideDuration); /** * Serializes an object to a file (object pointers to non-always loaded objects are not supported) * * @param Obj The object to serialize * @param Pathname The path to the file to save * @param bIsSaveGame If TRUE, FILEWRITE_SaveGame will be used to create the file writer * @param Version A version number to save with the archive, so that we can safely fail when loading old versioned files * @param bEncrypt - should file be encrypted? Loading it back will be automatic if encrypted. * * @return TRUE if successful */ native static final function bool BasicSaveObject(Object Obj, string Pathname, bool bIsSaveGame, int Version, optional bool bEncrypt=false); /** * Loads an object from a file (saved with the BasicSaveObject function). It should already be * allocated just like the original object was allocated * * @param Obj The object to serialize * @param Pathname The path to the file to read and create the object from * @param bIsSaveGame If TRUE, FILEREAD_SaveGame will be used to create the file reader * @param Version A version number to match with the version saved in the archive, so that we can safely fail when loading old versioned files * * @return TRUE if successful */ native static final function bool BasicLoadObject(Object Obj, string Pathname, bool bIsSaveGame, int Version); /** Launches the specified platform via appLaunchURL (platform dependent support) */ native static final function LaunchURL(string URL); // NVCHANGE_BEGIN_TURB: Multiple PhysX levels /** Return level of PhysX content (0, 1, or 2). 0 means no hardware acceleration. */ native static final function int GetPhysXLevel(); // NVCHANGE_END_TURB: Multiple PhysX levels /** * Gets the value of the specified boolean System Setting * * @param SettingName - Name of the boolean System Setting to retrieve * * @return The value of the boolean System Setting */ native final function bool GetSystemSettingBool(string SettingName); /** * Gets the value of the specified integer System Setting * * @param SettingName - Name of the integer System Setting to retrieve * * @return The value of the integer System Setting */ native final function int GetSystemSettingInt(string SettingName); /** * Gets the value of the specified float System Setting * * @param SettingName - Name of the float System Setting to retrieve * * @return The value of the float System Setting */ native final function float GetSystemSettingFloat(string SettingName); defaultproperties { C_WorldBox=(R=0,G=0,B=40,A=255) C_BrushWire=(R=192,G=0,B=0,A=255) C_AddWire=(R=127,G=127,B=255,A=255) C_SubtractWire=(R=255,G=192,B=63,A=255) C_SemiSolidWire=(R=127,G=255,B=0,A=255) C_NonSolidWire=(R=63,G=192,B=32,A=255) C_WireBackground=(R=0,G=0,B=0,A=255) C_ScaleBoxHi=(R=223,G=149,B=157,A=255) C_VolumeCollision=(R=149,G=223,B=157,A=255) C_BSPCollision=(R=149,G=157,B=223,A=255) C_OrthoBackground=(R=163,G=163,B=163,A=255) C_Volume=(R=255,G=196,B=255,A=255) C_BrushShape=(R=128,G=255,B=128,A=255) bUseSound=true }