Richard Boegli's CnC_Generals_Zero_Hour Fork WIP
This is documentation of Richard Boegil's Zero Hour Fork
 
Loading...
Searching...
No Matches
MirrorRenderObjClass Class Reference

Custom render object that draws mirrors, water, and skies. More...

#include <W3DMirror.h>

Inherits RenderObjClass.

Classes

struct  skySetting
 

Public Member Functions

 MirrorRenderObjClass (void)
 
 ~MirrorRenderObjClass (void)
 
virtual RenderObjClassClone (void) const
 
virtual int Class_ID (void) const
 
virtual void Render (RenderInfoClass &rinfo)
 
virtual void Get_Obj_Space_Bounding_Sphere (SphereClass &sphere) const
 
virtual void Get_Obj_Space_Bounding_Box (AABoxClass &aabox) const
 
Int init (Real waterLevel, Real dx, Real dy, SceneClass *parentScene)
 allocate W3D resources needed to render mirror
 
void toggleCloudLayer (Bool state)
 enables/disables the cloud layer
 
- Public Member Functions inherited from RenderObjClass
 RenderObjClass (void)
 
 RenderObjClass (const RenderObjClass &src)
 
RenderObjClassoperator= (const RenderObjClass &)
 
virtual ~RenderObjClass (void)
 
virtual const char * Get_Name (void) const
 
virtual void Set_Name (const char *name)
 
virtual const char * Get_Base_Model_Name (void) const
 
virtual void Set_Base_Model_Name (const char *name)
 
virtual int Get_Num_Polys (void) const
 
virtual void Special_Render (SpecialRenderInfoClass &rinfo)
 
virtual void On_Frame_Update ()
 
virtual void Restart (void)
 
virtual void Add (SceneClass *scene)
 
virtual void Remove (void)
 
virtual SceneClassGet_Scene (void)
 
virtual SceneClassPeek_Scene (void)
 
virtual void Set_Container (RenderObjClass *con)
 
virtual void Validate_Transform (void) const
 
RenderObjClassGet_Container (void) const
 
virtual void Set_Transform (const Matrix3D &m)
 
virtual void Set_Position (const Vector3 &v)
 
const Matrix3DGet_Transform (void) const
 
const Matrix3DGet_Transform (bool &is_transform_identity) const
 
const Matrix3DGet_Transform_No_Validity_Check (void) const
 
const Matrix3DGet_Transform_No_Validity_Check (bool &is_transform_identity) const
 
bool Is_Transform_Identity () const
 
bool Is_Transform_Identity_No_Validity_Check () const
 
Vector3 Get_Position (void) const
 
virtual void Notify_Added (SceneClass *scene)
 
virtual void Notify_Removed (SceneClass *scene)
 
virtual int Get_Num_Sub_Objects (void) const
 
virtual RenderObjClassGet_Sub_Object (int index) const
 
virtual int Add_Sub_Object (RenderObjClass *subobj)
 
virtual int Remove_Sub_Object (RenderObjClass *robj)
 
virtual RenderObjClassGet_Sub_Object_By_Name (const char *name, int *index=NULL) const
 
virtual int Get_Num_Sub_Objects_On_Bone (int boneindex) const
 
virtual RenderObjClassGet_Sub_Object_On_Bone (int index, int boneindex) const
 
virtual int Get_Sub_Object_Bone_Index (RenderObjClass *subobj) const
 
virtual int Get_Sub_Object_Bone_Index (int LodIndex, int ModelIndex) const
 
virtual int Add_Sub_Object_To_Bone (RenderObjClass *subobj, int bone_index)
 
virtual int Add_Sub_Object_To_Bone (RenderObjClass *subobj, const char *bname)
 
virtual int Remove_Sub_Objects_From_Bone (int boneindex)
 
virtual int Remove_Sub_Objects_From_Bone (const char *bname)
 
virtual void Update_Sub_Object_Transforms (void)
 
virtual void Set_Animation (void)
 
virtual void Set_Animation (HAnimClass *motion, float frame, int anim_mode=ANIM_MODE_MANUAL)
 
virtual void Set_Animation (HAnimClass *motion0, float frame0, HAnimClass *motion1, float frame1, float percentage)
 
virtual void Set_Animation (HAnimComboClass *anim_combo)
 
virtual HAnimClassPeek_Animation (void)
 
virtual int Get_Num_Bones (void)
 
virtual const char * Get_Bone_Name (int bone_index)
 
virtual int Get_Bone_Index (const char *bonename)
 
virtual const Matrix3DGet_Bone_Transform (const char *bonename)
 
virtual const Matrix3DGet_Bone_Transform (int boneindex)
 
virtual void Capture_Bone (int bindex)
 
virtual void Release_Bone (int bindex)
 
virtual bool Is_Bone_Captured (int bindex) const
 
virtual void Control_Bone (int bindex, const Matrix3D &objtm, bool world_space_translation=false)
 
virtual const HTreeClassGet_HTree (void) const
 
virtual bool Cast_Ray (RayCollisionTestClass &raytest)
 
virtual bool Cast_AABox (AABoxCollisionTestClass &boxtest)
 
virtual bool Cast_OBBox (OBBoxCollisionTestClass &boxtest)
 
virtual bool Intersect_AABox (AABoxIntersectionTestClass &boxtest)
 
virtual bool Intersect_OBBox (OBBoxIntersectionTestClass &boxtest)
 
virtual bool Intersect (IntersectionClass *Intersection, IntersectionResultClass *Final_Result)
 
virtual bool Intersect_Sphere (IntersectionClass *Intersection, IntersectionResultClass *Final_Result)
 
virtual bool Intersect_Sphere_Quick (IntersectionClass *Intersection, IntersectionResultClass *Final_Result)
 
virtual const SphereClassGet_Bounding_Sphere (void) const
 
virtual const AABoxClassGet_Bounding_Box (void) const
 
virtual void Update_Obj_Space_Bounding_Volumes (void)
 
virtual void Prepare_LOD (CameraClass &camera)
 
virtual void Recalculate_Static_LOD_Factors (void)
 
virtual void Increment_LOD (void)
 
virtual void Decrement_LOD (void)
 
virtual float Get_Cost (void) const
 
virtual float Get_Value (void) const
 
virtual float Get_Post_Increment_Value (void) const
 
virtual void Set_LOD_Level (int lod)
 
virtual int Get_LOD_Level (void) const
 
virtual int Get_LOD_Count (void) const
 
virtual void Set_LOD_Bias (float bias)
 
virtual int Calculate_Cost_Value_Arrays (float screen_area, float *values, float *costs) const
 
virtual RenderObjClassGet_Current_LOD (void)
 
virtual bool Build_Dependency_List (DynamicVectorClass< StringClass > &file_list, bool recursive=true)
 
virtual bool Build_Texture_List (DynamicVectorClass< StringClass > &texture_file_list, bool recursive=true)
 
virtual void Create_Decal (DecalGeneratorClass *generator)
 
virtual void Delete_Decal (uint32 decal_id)
 
virtual MaterialInfoClassGet_Material_Info (void)
 
virtual void Set_User_Data (void *value, bool recursive=false)
 
virtual void * Get_User_Data ()
 
virtual int Get_Num_Snap_Points (void)
 
virtual void Get_Snap_Point (int index, Vector3 *set)
 
virtual float Get_Screen_Size (CameraClass &camera)
 
virtual void Scale (float scale)
 
virtual void Scale (float scalex, float scaley, float scalez)
 
virtual void Set_ObjectScale (float scale)
 
const float Get_ObjectScale (void) const
 
void Set_ObjectColor (unsigned int color)
 
const unsigned int Get_ObjectColor (void) const
 
virtual int Get_Sort_Level (void) const
 
virtual void Set_Sort_Level (int level)
 
virtual int Is_Really_Visible (void)
 
virtual int Is_Not_Hidden_At_All (void)
 
virtual int Is_Visible (void) const
 
virtual void Set_Visible (int onoff)
 
virtual int Is_Hidden (void) const
 
virtual void Set_Hidden (int onoff)
 
virtual int Is_Animation_Hidden (void) const
 
virtual void Set_Animation_Hidden (int onoff)
 
virtual int Is_Force_Visible (void) const
 
virtual void Set_Force_Visible (int onoff)
 
virtual int Is_Translucent (void) const
 
virtual void Set_Translucent (int onoff)
 
virtual int Is_Alpha (void) const
 
virtual void Set_Alpha (int onoff)
 
virtual int Is_Additive (void) const
 
virtual void Set_Additive (int onoff)
 
virtual int Get_Collision_Type (void) const
 
virtual void Set_Collision_Type (int type)
 
virtual bool Is_Complete (void)
 
virtual bool Is_In_Scene (void)
 
virtual float Get_Native_Screen_Size (void) const
 
virtual void Set_Native_Screen_Size (float screensize)
 
void Set_Sub_Objects_Match_LOD (int onoff)
 
int Is_Sub_Objects_Match_LOD_Enabled (void)
 
void Set_Sub_Object_Transforms_Dirty (bool onoff)
 
bool Are_Sub_Object_Transforms_Dirty (void)
 
void Set_Ignore_LOD_Cost (bool onoff)
 
bool Is_Ignoring_LOD_Cost (void)
 
void Set_Is_Self_Shadowed ()
 
void Unset_Is_Self_Shadowed ()
 
int Is_Self_Shadowed () const
 
virtual const PersistFactoryClassGet_Factory (void) const
 
virtual bool Save (ChunkSaveClass &csave)
 
virtual bool Load (ChunkLoadClass &cload)
 
RenderHookClassGet_Render_Hook (void)
 
void Set_Render_Hook (RenderHookClass *hook)
 
- Public Member Functions inherited from RefCountClass
 RefCountClass (void)
 
 RefCountClass (const RefCountClass &)
 
void Add_Ref (void) const
 
WWINLINE void Release_Ref (void) const
 
int Num_Refs (void) const
 
virtual void Delete_This (void)
 
- Public Member Functions inherited from PostLoadableClass
 PostLoadableClass (void)
 
virtual ~PostLoadableClass (void)
 
virtual void On_Post_Load (void)
 
bool Is_Post_Load_Registered (void)
 
void Set_Post_Load_Registered (bool onoff)
 
- Public Member Functions inherited from MultiListObjectClass
 MultiListObjectClass (void)
 
virtual ~MultiListObjectClass (void)
 
MultiListNodeClassGet_List_Node () const
 
void Set_List_Node (MultiListNodeClass *node)
 

Static Public Member Functions

static void setTimeOfDay (TimeOfDay tod)
 change sky/water for time of day
 
- Static Public Member Functions inherited from RefCountClass
static int Total_Refs (void)
 
static RefCountClassAdd_Active_Ref (RefCountClass *obj)
 
static RefCountClassSet_Ref_Owner (RefCountClass *obj, char *file, int line)
 
static void Remove_Active_Ref (RefCountClass *obj)
 
static bool Validate_Active_Ref (RefCountClass *obj)
 

Protected Member Functions

void renderSky (void)
 draw the sky layer (clouds, stars, etc.)
 
void renderSkyBody (Matrix3D *mat)
 draw the sky body (sun, moon, etc.)
 
void renderWater (void)
 
void renderWaterMesh (void)
 
- Protected Member Functions inherited from RenderObjClass
virtual void Add_Dependencies_To_List (DynamicVectorClass< StringClass > &file_list, bool textures_only=false)
 
virtual void Update_Cached_Bounding_Volumes (void) const
 
virtual void Update_Sub_Object_Bits (void)
 
bool Bounding_Volumes_Valid (void) const
 
void Invalidate_Cached_Bounding_Volumes (void) const
 
void Validate_Cached_Bounding_Volumes (void) const
 
- Protected Member Functions inherited from RefCountClass
virtual ~RefCountClass (void)
 

Protected Attributes

DX8IndexBufferClassm_indexBuffer
 indices defining quad
 
SceneClassm_parentScene
 scene to be reflected
 
ShaderClass m_shaderClass
 shader or rendering state for heightmap
 
VertexMaterialClassm_vertexMaterialClass
 vertex lighting material
 
TextureClassm_alphaClippingTexture
 used for faked clipping using alpha
 
Real m_dx
 x extent of mirror surface (offset from local center)
 
Real m_dy
 y extent of mirror surface (offset from local center)
 
Vector3 m_planeNormal
 mirror plane normal
 
Real m_planeDistance
 mirror plane distance
 
Real m_level
 level of mirror (hack for water)
 
Real m_uOffset
 current texture offset on u axis
 
Real m_vOffset
 current texture offset on v axis
 
Real m_uScrollPerMs
 texels per/ms scroll rate in u direction
 
Real m_vScrollPerMs
 texels per/ms scroll rate in v direction
 
Int m_LastUpdateTime
 time of last cloud update
 
Bool m_useCloudLayer
 flag if clouds are on/off
 
skySetting m_skySettings [TIME_OF_DAY_COUNT]
 settings for each time of day
 
- Protected Attributes inherited from RenderObjClass
unsigned long Bits
 
Matrix3D Transform
 
float ObjectScale
 
unsigned int ObjectColor
 
SphereClass CachedBoundingSphere
 
AABoxClass CachedBoundingBox
 
float NativeScreenSize
 
bool IsTransformIdentity
 
SceneClassScene
 
RenderObjClassContainer
 
void * User_Data
 
RenderHookClassRenderHook
 

Static Protected Attributes

static TimeOfDay m_tod
 time of day setting for reflected cloud layer
 

Additional Inherited Members

- Public Types inherited from RenderObjClass
enum  { USER_DATA_MATERIAL_OVERRIDE = 0x01234567 }
 
enum  {
  CLASSID_UNKNOWN = 0xFFFFFFFF , CLASSID_MESH = 0 , CLASSID_HMODEL , CLASSID_DISTLOD ,
  CLASSID_PREDLODGROUP , CLASSID_TILEMAP , CLASSID_IMAGE3D , CLASSID_LINE3D ,
  CLASSID_BITMAP2D , CLASSID_CAMERA , CLASSID_DYNAMESH , CLASSID_DYNASCREENMESH ,
  CLASSID_TEXTDRAW , CLASSID_FOG , CLASSID_LAYERFOG , CLASSID_LIGHT ,
  CLASSID_PARTICLEEMITTER , CLASSID_PARTICLEBUFFER , CLASSID_SCREENPOINTGROUP , CLASSID_VIEWPOINTGROUP ,
  CLASSID_WORLDPOINTGROUP , CLASSID_TEXT2D , CLASSID_TEXT3D , CLASSID_NULL ,
  CLASSID_COLLECTION , CLASSID_FLARE , CLASSID_HLOD , CLASSID_AABOX ,
  CLASSID_OBBOX , CLASSID_SEGLINE , CLASSID_SPHERE , CLASSID_RING ,
  CLASSID_BOUNDFOG , CLASSID_DAZZLE , CLASSID_SOUND , CLASSID_SEGLINETRAIL ,
  CLASSID_LAND , CLASSID_SHDMESH , CLASSID_LAST = 0x0000FFFF
}
 
enum  AnimMode {
  ANIM_MODE_MANUAL = 0 , ANIM_MODE_LOOP , ANIM_MODE_ONCE , ANIM_MODE_LOOP_PINGPONG ,
  ANIM_MODE_LOOP_BACKWARDS , ANIM_MODE_ONCE_BACKWARDS
}
 
- Public Attributes inherited from RefCountClass
RefCountNodeClass ActiveRefNode
 
ActiveRefStruct ActiveRefInfo
 
- Static Public Attributes inherited from RenderObjClass
static const float AT_MIN_LOD = FLT_MAX
 
static const float AT_MAX_LOD = -1.0f
 
- Static Public Attributes inherited from RefCountClass
static RefCountListClass ActiveRefList
 
- Protected Types inherited from RenderObjClass
enum  {
  COLL_TYPE_MASK = 0x000000FF , IS_VISIBLE = 0x00000100 , IS_NOT_HIDDEN = 0x00000200 , IS_NOT_ANIMATION_HIDDEN = 0x00000400 ,
  IS_FORCE_VISIBLE = 0x00000800 , BOUNDING_VOLUMES_VALID = 0x00002000 , IS_TRANSLUCENT = 0x00004000 , IGNORE_LOD_COST = 0x00008000 ,
  SUBOBJS_MATCH_LOD = 0x00010000 , SUBOBJ_TRANSFORMS_DIRTY = 0x00020000 , IS_ALPHA = 0x00040000 , IS_ADDITIVE = 0x00100000 ,
  IS_SELF_SHADOWED = 0x00080000 , IS_CHEATER = 0x00100000 , IS_REALLY_VISIBLE = IS_VISIBLE | IS_NOT_HIDDEN | IS_NOT_ANIMATION_HIDDEN , IS_NOT_HIDDEN_AT_ALL = IS_NOT_HIDDEN | IS_NOT_ANIMATION_HIDDEN ,
  DEFAULT_BITS = COLL_TYPE_ALL | IS_NOT_HIDDEN | IS_NOT_ANIMATION_HIDDEN
}
 

Detailed Description

Custom render object that draws mirrors, water, and skies.

This render object handles drawing reflected W3D scenes. It will only work with rectangular planar surfaces and was tuned with an emphasis on water. Since skies are only visible in reflections, this code will also render clouds and sky bodies.

Definition at line 48 of file W3DMirror.h.

Constructor & Destructor Documentation

◆ MirrorRenderObjClass()

MirrorRenderObjClass::MirrorRenderObjClass ( void )

◆ ~MirrorRenderObjClass()

MirrorRenderObjClass::~MirrorRenderObjClass ( void )

Member Function Documentation

◆ Class_ID()

virtual int MirrorRenderObjClass::Class_ID ( void ) const
virtual

Reimplemented from RenderObjClass.

◆ Clone()

virtual RenderObjClass * MirrorRenderObjClass::Clone ( void ) const
virtual

Implements RenderObjClass.

◆ Get_Obj_Space_Bounding_Box()

virtual void MirrorRenderObjClass::Get_Obj_Space_Bounding_Box ( AABoxClass & aabox) const
virtual

Reimplemented from RenderObjClass.

◆ Get_Obj_Space_Bounding_Sphere()

virtual void MirrorRenderObjClass::Get_Obj_Space_Bounding_Sphere ( SphereClass & sphere) const
virtual
Todo
: Add methods for collision detection with mirror surface

Reimplemented from RenderObjClass.

◆ init()

Int MirrorRenderObjClass::init ( Real waterLevel,
Real dx,
Real dy,
SceneClass * parentScene )

allocate W3D resources needed to render mirror

◆ Render()

virtual void MirrorRenderObjClass::Render ( RenderInfoClass & rinfo)
virtual

Implements RenderObjClass.

◆ renderSky()

void MirrorRenderObjClass::renderSky ( void )
protected

draw the sky layer (clouds, stars, etc.)

◆ renderSkyBody()

void MirrorRenderObjClass::renderSkyBody ( Matrix3D * mat)
protected

draw the sky body (sun, moon, etc.)

◆ renderWater()

void MirrorRenderObjClass::renderWater ( void )
protected

◆ renderWaterMesh()

void MirrorRenderObjClass::renderWaterMesh ( void )
protected

◆ setTimeOfDay()

static void MirrorRenderObjClass::setTimeOfDay ( TimeOfDay tod)
inlinestatic

change sky/water for time of day

Definition at line 74 of file W3DMirror.h.

◆ toggleCloudLayer()

void MirrorRenderObjClass::toggleCloudLayer ( Bool state)
inline

enables/disables the cloud layer

Definition at line 75 of file W3DMirror.h.

Member Data Documentation

◆ m_alphaClippingTexture

TextureClass* MirrorRenderObjClass::m_alphaClippingTexture
protected

used for faked clipping using alpha

Definition at line 82 of file W3DMirror.h.

◆ m_dx

Real MirrorRenderObjClass::m_dx
protected

x extent of mirror surface (offset from local center)

Definition at line 83 of file W3DMirror.h.

◆ m_dy

Real MirrorRenderObjClass::m_dy
protected

y extent of mirror surface (offset from local center)

Definition at line 84 of file W3DMirror.h.

◆ m_indexBuffer

DX8IndexBufferClass* MirrorRenderObjClass::m_indexBuffer
protected

indices defining quad

Definition at line 78 of file W3DMirror.h.

◆ m_LastUpdateTime

Int MirrorRenderObjClass::m_LastUpdateTime
protected

time of last cloud update

Definition at line 92 of file W3DMirror.h.

◆ m_level

Real MirrorRenderObjClass::m_level
protected

level of mirror (hack for water)

Definition at line 87 of file W3DMirror.h.

◆ m_parentScene

SceneClass* MirrorRenderObjClass::m_parentScene
protected

scene to be reflected

Definition at line 79 of file W3DMirror.h.

◆ m_planeDistance

Real MirrorRenderObjClass::m_planeDistance
protected

mirror plane distance

Definition at line 86 of file W3DMirror.h.

◆ m_planeNormal

Vector3 MirrorRenderObjClass::m_planeNormal
protected

mirror plane normal

Definition at line 85 of file W3DMirror.h.

◆ m_shaderClass

ShaderClass MirrorRenderObjClass::m_shaderClass
protected

shader or rendering state for heightmap

Definition at line 80 of file W3DMirror.h.

◆ m_skySettings

skySetting MirrorRenderObjClass::m_skySettings[TIME_OF_DAY_COUNT]
protected

settings for each time of day

Definition at line 112 of file W3DMirror.h.

◆ m_tod

TimeOfDay MirrorRenderObjClass::m_tod
staticprotected

time of day setting for reflected cloud layer

Definition at line 95 of file W3DMirror.h.

◆ m_uOffset

Real MirrorRenderObjClass::m_uOffset
protected

current texture offset on u axis

Definition at line 88 of file W3DMirror.h.

◆ m_uScrollPerMs

Real MirrorRenderObjClass::m_uScrollPerMs
protected

texels per/ms scroll rate in u direction

Definition at line 90 of file W3DMirror.h.

◆ m_useCloudLayer

Bool MirrorRenderObjClass::m_useCloudLayer
protected

flag if clouds are on/off

Definition at line 93 of file W3DMirror.h.

◆ m_vertexMaterialClass

VertexMaterialClass* MirrorRenderObjClass::m_vertexMaterialClass
protected

vertex lighting material

Definition at line 81 of file W3DMirror.h.

◆ m_vOffset

Real MirrorRenderObjClass::m_vOffset
protected

current texture offset on v axis

Definition at line 89 of file W3DMirror.h.

◆ m_vScrollPerMs

Real MirrorRenderObjClass::m_vScrollPerMs
protected

texels per/ms scroll rate in v direction

Definition at line 91 of file W3DMirror.h.


The documentation for this class was generated from the following file: