tge/engine/game/fx/fxSunLight.h
2017-04-17 06:17:10 -06:00

253 lines
10 KiB
C++
Executable File

//-----------------------------------------------------------------------------
// Torque Game Engine - fxLight
//
// Written by Melvyn May, 27th August 2002.
//-----------------------------------------------------------------------------
#ifndef _FXSUNLIGHT_H_
#define _FXSUNLIGHT_H_
#ifndef _SCENEOBJECT_H_
#include "sim/sceneObject.h"
#endif
//------------------------------------------------------------------------------
// Class: fxSunLight
//------------------------------------------------------------------------------
class fxSunLight : public SceneObject
{
private:
typedef SceneObject Parent;
U32 CheckKeySyntax(StringTableEntry Key);
void CheckAnimationKeys(void);
F32 GetLerpKey(StringTableEntry Key, U32 PosFrom, U32 PosTo, F32 ValueFrom, F32 ValueTo, F32 Lerp);
void AnimateSun(F32 ElapsedTime);
void InitialiseAnimation(void);
void ResetAnimation(void);
bool TestLOS(const Point3F& Pos);
protected:
enum { fxSunLightConfigChangeMask = BIT(0) };
bool mAddedToScene;
MRandomLCG RandomGen;
// Textures.
TextureHandle mLocalFlareTextureHandle;
TextureHandle mRemoteFlareTextureHandle;
F32 mElapsedTime;
S32 mLastRenderTime;
F32 mLocalFlareScale;
Point3F mSunlightPosition; // Sunlight Frame Position.
public:
fxSunLight();
~fxSunLight();
// *********************************
// Configuration Interface.
// *********************************
// Debugging.
void setEnable(bool Status);
// Media.
void setFlareBitmaps(const char* LocalName, const char* RemoteName);
// Sun Orbit.
void setSunAzimuth(F32 Azimuth);
void setSunElevation(F32 Elevation);
// Flare.
void setFlareTP(bool Status);
void setFlareColour(ColorF Colour);
void setFlareBrightness(F32 Brightness);
void setFlareSize(F32 Size);
void setFadeTime(F32 Time);
void setBlendMode(U32 Mode);
// Animation Options.
void setUseColour(bool Status);
void setUseBrightness(bool Status);
void setUseRotation(bool Status);
void setUseSize(bool Status);
void setUseAzimuth(bool Status);
void setUseElevation(bool Status);
void setLerpColour(bool Status);
void setLerpBrightness(bool Status);
void setLerpRotation(bool Status);
void setLerpSize(bool Status);
void setLerpAzimuth(bool Status);
void setLerpElevation(bool Status);
void setLinkFlareSize(bool Status);
void setSingleColourKeys(bool Status);
// Animation Extents.
void setMinColour(ColorF Colour);
void setMaxColour(ColorF Colour);
void setMinBrightness(F32 Brightness);
void setMaxBrightness(F32 Brightness);
void setMinRotation(F32 Rotation);
void setMaxRotation(F32 Rotation);
void setMinSize(F32 Size);
void setMaxSize(F32 Size);
void setMinAzimuth(F32 Azimuth);
void setMaxAzimuth(F32 Azimuth);
void setMinElevation(F32 Elevation);
void setMaxElevation(F32 Elevation);
// Animation Keys.
void setRedKeys(const char* Keys);
void setGreenKeys(const char* Keys);
void setBlueKeys(const char* Keys);
void setBrightnessKeys(const char* Keys);
void setRotationKeys(const char* Keys);
void setSizeKeys(const char* Keys);
void setAzimuthKeys(const char* Keys);
void setElevationKeys(const char* Keys);
// Animation Times.
void setColourTime(F32 Time);
void setBrightnessTime(F32 Time);
void setRotationTime(F32 Time);
void setSizeTime(F32 Time);
void setAzimuthTime(F32 Time);
void setElevationTime(F32 Time);
// Misc,
void reset(void);
// SceneObject
bool prepRenderImage(SceneState* state, const U32 stateKey, const U32 startZone, const bool modifyBaseZoneState);
void renderObject(SceneState *state, SceneRenderImage *image);
// SimObject
bool onAdd();
void onRemove();
void inspectPostApply();
// NetObject
U32 packUpdate(NetConnection *conn, U32 mask, BitStream *stream);
void unpackUpdate(NetConnection *conn, BitStream *stream);
// ConObject.
static void initPersistFields();
bool mDoneSunLock;
// Field Data.
// Debugging.
bool mEnable; // Light Enable.
// Media.
StringTableEntry mLocalFlareTextureName; // Local Flare Texture Name.
StringTableEntry mRemoteFlareTextureName; // Remote Flare Texture Name.
// Sun Orbit.
F32 mSunAzimuth;
F32 mSunElevation;
bool mLockToRealSun; // Lock to Real Sun Flag.
// Flare.
bool mFlareTP; // Flare Third Person Flag.
ColorF mFlareColour; // Flare Colour.
F32 mFlareBrightness; // Brightness.
F32 mFlareSize; // Flare Size.
F32 mFadeTime; // Fade Time.
U32 mBlendMode; // Blend Mode.
// Animation Options.
bool mUseColour; // Use Colour Flag.
bool mUseBrightness; // Use Brightness Flag.
bool mUseRotation; // Use Rotation Flag.
bool mUseSize; // Use Size Flag.
bool mUseAzimuth; // Use Azimuth Flag.
bool mUseElevation; // Use Elevation Flag.
bool mLerpColour; // Lerp Colour Flag.
bool mLerpBrightness; // Lerp Brightness Flag.
bool mLerpRotation; // Lerp Rotation Flag.
bool mLerpSize; // Lerp Size Flag.
bool mLerpAzimuth; // Lerp Azimuth Flag.
bool mLerpElevation; // Lerp Elevation Flag.
bool mLinkFlareSize; // Link Flare Size Animation.
bool mSingleColourKeys; // Single-Channel Colour Keys.
// Animation Extents.
ColorF mMinColour; // Minimum Colour.
ColorF mMaxColour; // Maximum Colour.
F32 mMinBrightness; // Minimum Brightness.
F32 mMaxBrightness; // Maximum Brightness.
F32 mMinRotation; // Minimum Rotation.
F32 mMaxRotation; // Maximum Rotation.
F32 mMinSize; // Minimum Size.
F32 mMaxSize; // Maximum Size.
F32 mMinAzimuth; // Minimum Azimuth.
F32 mMaxAzimuth; // Maximum Azimuth.
F32 mMinElevation; // Minimum Elevation.
F32 mMaxElevation; // Maximum Elevation.
// Animation Keys.
StringTableEntry mRedKeys; // Red Animation Keys.
StringTableEntry mGreenKeys; // Green Animation Keys.
StringTableEntry mBlueKeys; // Blue Animation Keys.
StringTableEntry mBrightnessKeys; // Brightness Animation Keys.
StringTableEntry mRotationKeys; // Rotation Animation Keys.
StringTableEntry mSizeKeys; // Size Animation Keys.
StringTableEntry mAzimuthKeys; // Size Azimuth Keys.
StringTableEntry mElevationKeys; // Size Elevation Keys.
// Animation Times.
F32 mColourTime; // Colour Time (Seconds).
F32 mBrightnessTime; // Brightness Time.
F32 mRotationTime; // Rotation Time.
F32 mSizeTime; // Size Time.
F32 mAzimuthTime; // Azimuth Time.
F32 mElevationTime; // Elevation Time.
// Current Animation.
ColorF mAnimationColour; // Current Colour.
F32 mAnimationBrightness; // Current Brightness.
F32 mAnimationRotation; // Current Rotation.
F32 mAnimationSize; // Current Size.
F32 mAnimationAzimuth; // Current Azimuth.
F32 mAnimationElevation; // Current Elevation.
// Elapsed Times.
F32 mColourElapsedTime; // Colour Elapsed Time.
F32 mBrightnessElapsedTime; // Brightness Elapsed Time.
F32 mRotationElapsedTime; // Rotation Elapsed Time.
F32 mSizeElapsedTime; // Size Elapsed Time.
F32 mAzimuthElapsedTime; // Azimuth Elapsed Time.
F32 mElevationElapsedTime; // Elevation Elapsed Time.
// Time Scales.
F32 mColourTimeScale; // Colour Time Scale.
F32 mBrightnessTimeScale; // Brightness Time Scale.
F32 mRotationTimeScale; // Rotation Time Scale.
F32 mSizeTimeScale; // Size Time Scale.
F32 mAzimuthTimeScale; // Azimuth Time Scale.
F32 mElevationTimeScale; // Elevation Time Scale.
// Key Lengths (Validity).
U32 mRedKeysLength; // Red Keys Length.
U32 mGreenKeysLength; // Green Keys Length.
U32 mBlueKeysLength; // Blue Keys Length.
U32 mBrightnessKeysLength; // Brightness Keys Length.
U32 mRotationKeysLength; // Rotation Keys Length.
U32 mSizeKeysLength; // Size Keys Length.
U32 mAzimuthKeysLength; // Azimuth Keys Length.
U32 mElevationKeysLength; // Elevation Keys Length.
// Declare Console Object.
DECLARE_CONOBJECT(fxSunLight);
};
#endif // _FXSUNLIGHT_H_