//* =================================================================================== //* ::Scr GamePadLightbarSubsystem.uc //* =================================================================================== /** * @author Brandon Johnson * @brief Gamepad light bar used for setting light on gamepad. Currently only supported for orbis */ //* =================================================================================== //* Created: Jun 07, 2013 01:00PM //* Modified: Jun 07, 2013 01:00PM //* Copyright (c) 2013 Zombie, Inc. All Rights Reserved. //* =================================================================================== class GamePadLightbarSubsystem extends Object native config(LightBar); //* =================================================================================== // VARIABLES //* =================================================================================== enum LightBarState { ELBS_Standby, ELBS_Lerping, ELBS_Pulsing }; /** The current light bar state */ var LightBarState CurrentLightBarState; /** The current color */ var LinearColor CurrentColor; /** The original color used before lerping */ var LinearColor OriginalColor; /** The target color to set */ var LinearColor TargetColor; /** The lerp time remaining */ var float LerpTimeRemaining; /** The total time required for lerp/pulse */ var float TotalLerpTime; /** The default color to display (blue) */ var() const config Color DefaultColor; struct native ColorDefinition { /** The string ID for the color */ var init string Id; /** The R color to use */ var byte R; /** The G color to use */ var byte G; /** The B color to use */ var byte B; }; /** The list of color definitions to use */ var() const config editinline array ColorDefinitions; struct native LerpToInstruction { /** The ID of this lerp instruction */ var init string Id; /** The time for this instruction to complete */ var float Time; /** The color to lerp to. If empty will be the default color */ var init string LerpToId; }; /** The list of instructions to lerp to */ var() const config editinline array LerpToInstructions; struct native SetAndLerpInstruction extends LerpToInstruction { /** The color to set to */ var init string LerpFromId; }; /** The list of instructions to set to a color and lerp after */ var() const config editinline array SetAndLerpInstructions; struct native PulseInstruction extends SetAndLerpInstruction { }; /** The list of pulse instructions */ var const config editinline array PulseInstructions; //* =================================================================================== // FUNCTIONS //* =================================================================================== cpptext { //* =================================================================================== //* @function Initialize //* @date Jun 07, 2013 01:24PM //* @author Brandon Johnson //* @brief Instantiates and initializes this subsystem //* =================================================================================== virtual void Initialize(); //* =================================================================================== //* @function Tick //* @date Jun 07, 2013 01:04PM //* @author Brandon Johnson //* @brief Update function for the light bar //* @param DeltaTime is the elapsed time //* =================================================================================== virtual void Tick( FLOAT DeltaTime ); //* =================================================================================== //* @function UpdateLerp //* @date Jun 07, 2013 01:57PM //* @author Brandon Johnson //* @brief Updates the lerp //* @param DeltaTime is the elapsed time //* =================================================================================== virtual void UpdateLerp( FLOAT DeltaTime ); //* =================================================================================== //* @function UpdatePulse //* @date Jun 07, 2013 01:57PM //* @author Brandon Johnson //* @brief Updates the pulse //* @param DeltaTime is the elapsed time //* =================================================================================== virtual void UpdatePulse( FLOAT DeltaTime ); //* =================================================================================== //* @function SetColor //* @date Jun 07, 2013 03:31PM //* @author Brandon Johnson //* @brief Sets a new linear color //* @param NewColor is the new linear color to set //* =================================================================================== void SetColor( FLinearColor& NewColor ); //* =================================================================================== //* @function SetColor //* @date Jun 07, 2013 01:18PM //* @author Brandon Johnson //* @brief Sets a new color to the pad //* @param NewColor is the new color to set //* =================================================================================== void SetColor( FColor& NewColor ); //* =================================================================================== //* @function GetColorFromId //* @date Jun 10, 2013 11:08AM //* @author Brandon Johnson //* @brief Retrieves a color from a color ID found in config //* @param TheColorId is the string Id of the color //* @out Color is the result color. Set to default if not found. //* @return TRUE on success //* =================================================================================== UBOOL GetColorFromId( const FString& TheColorId, FColor& Color ); //* =================================================================================== //* @function GetLerpInstructionFromId //* @date Jun 10, 2013 11:11AM //* @author Brandon Johnson //* @brief Retrieves a lerp instruction from an ID //* @param InstructionId is the string Id of the instruction //* @out Instruction is the result instruction //* @return TRUE on success //* =================================================================================== UBOOL GetLerpInstructionFromId( const FString& InstructionId, FLerpToInstruction& Instruction ); //* =================================================================================== //* @function GetSetAndLerpInstructionFromId //* @date Jun 10, 2013 11:14AM //* @author Brandon Johnson //* @brief Retrieves a set and lerp instruction from an ID //* @param InstructionId is the string Id of the instruction //* @out Instruction is the result instruction //* @return TRUE on success //* =================================================================================== UBOOL GetSetAndLerpInstructionFromId( const FString& InstructionId, FSetAndLerpInstruction& Instruction ); //* =================================================================================== //* @function GetPulseInstructionFromId //* @date Jun 10, 2013 11:14AM //* @author Brandon Johnson //* @brief Retrieves a set and pulse instruction from an ID //* @param InstructionId is the string Id of the instruction //* @out Instruction is the result instruction //* @return TRUE on success //* =================================================================================== UBOOL GetPulseInstructionFromId( const FString& InstructionId, FPulseInstruction& Instruction ); } //* =================================================================================== //* @function SetPadColor //* @date Jun 07, 2013 01:21PM //* @author Brandon Johnson //* @brief Sets the pad to a new color //* @param NewPadColor is the new pad color //* =================================================================================== static native function SetPadColor( Color NewPadColor ); //* =================================================================================== //* @function SetPadColorFromDef //* @date Jun 10, 2013 11:01AM //* @author Brandon Johnson //* @brief Sets the pad color from a color definition in config //* @param TheColorId is the color ID to use //* =================================================================================== static native function SetPadColorFromDef( string TheColorId ); //* =================================================================================== //* @function BeginLerp //* @date Jun 07, 2013 01:22PM //* @author Brandon Johnson //* @brief Begins a lerp //* @param NewLerpColor is the new color to lerp to //* @param LerpTime is the time for the lerp //* =================================================================================== static native function BeginLerp( Color NewLerpColor, float LerpTime ); //* =================================================================================== //* @function BeginLerpFromDef //* @date Jun 10, 2013 11:02AM //* @author Brandon Johnson //* @brief Begins a lerp from an instruction in config //* @param InstructionId is the string Id of the instruction //* =================================================================================== static native function BeginLerpFromDef( string InstructionId ); //* =================================================================================== //* @function SetPadColorAndLerp //* @date Jun 07, 2013 01:26PM //* @author Brandon Johnson //* @brief Sets a pad color and begins lerping //* @param LerpTime is the total time used to lerp //* @param NewPadColor is the new pad color to set //* @param NewTargetColor is the new target color to set //* =================================================================================== static native function SetPadColorAndLerp( float LerpTime, Color NewPadColor, Color NewTargetColor = default.DefaultColor ); //* =================================================================================== //* @function SetPadColorAndLerpFromDef //* @date Jun 10, 2013 11:03AM //* @author Brandon Johnson //* @brief Sets the pad color and lerp from instruction Id in config //* @param InstructionId is the string Id of the instruction //* =================================================================================== static native function SetPadColorAndLerpFromDef( string InstructionId ); //* =================================================================================== //* @function SetPulsing //* @date Jun 07, 2013 03:49PM //* @author Brandon Johnson //* @brief Sets the lighting to pulse. Is reset by calling ResetState //* @param LerpTime is the total time used to lerp //* @param Target1 is the first color to lerp to //* @param Target2 is the second target to lerp to //* =================================================================================== static native function SetPulsing( float LerpTime, Color Target1, Color Target2 = default.DefaultColor ); //* =================================================================================== //* @function SetPulsingFromDef //* @date Jun 10, 2013 11:06AM //* @author Brandon Johnson //* @brief Sets pulsing between 2 colors from an instruction found in config //* @param InstructionId is the Id of the instruction //* =================================================================================== static native function SetPulsingFromDef( string InstructionId ); //* =================================================================================== //* @function InterruptState //* @date Jun 07, 2013 01:28PM //* @author Brandon Johnson //* @brief Interrupts the current state, whether it be lerping or pulsing and sets to default color //* =================================================================================== static native function ResetState(); //* =================================================================================== // DEFAULT PROPERTIES //* =================================================================================== defaultproperties { } //EOF