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

Custom render object that draws tracks on the terrain. More...

#include <W3DTerrainTracks.h>

Inherits W3DMPO, and RenderObjClass.

Classes

struct  edgeInfo
 

Public Member Functions

 TerrainTracksRenderObjClass (void)
 
 ~TerrainTracksRenderObjClass (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 freeTerrainTracksResources (void)
 free W3D assets used for this track
 
void init (Real width, Real length, const Char *texturename)
 allocate W3D resources and set size
 
void addEdgeToTrack (Real x, Real y)
 add a new segment to the track
 
void addCapEdgeToTrack (Real x, Real y)
 cap the existing segment so we can resume at an unconnected position.
 
void setAirborne (void)
 Starts a new section of track, generally after going airborne.
 
void setOwnerDrawable (const Drawable *owner)
 
- Public Member Functions inherited from W3DMPO
virtual ~W3DMPO ()
 
- 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)
 

Protected Attributes

TextureClassm_stageZeroTexture
 primary texture
 
SphereClass m_boundingSphere
 bounding sphere of TerrainTracks
 
AABoxClass m_boundingBox
 bounding box of TerrainTracks
 
Int m_activeEdgeCount
 number of active edges in segment list
 
Int m_totalEdgesAdded
 number of edges ever added to this track
 
const Drawablem_ownerDrawable
 logical object that's laying down tread marks.
 
edgeInfo m_edges [MAX_TRACK_EDGE_COUNT]
 edges at each segment break
 
Vector3 m_lastAnchor
 location of last edge center
 
Int m_bottomIndex
 points at oldest edge on track
 
Int m_topIndex
 points to newest edge on track
 
Bool m_haveAnchor
 set to false until first edge is added
 
Bool m_bound
 object is bound to owner and accepts new edges
 
Real m_width
 track width
 
Real m_length
 length of each track segment
 
Bool m_airborne
 Did the vehicle bounce up into the air?
 
Bool m_haveCap
 is the segment capped so we can stop and resume at new location.
 
TerrainTracksRenderObjClassm_nextSystem
 next track system
 
TerrainTracksRenderObjClassm_prevSystem
 previous track system
 
- 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
 

Friends

class TerrainTracksRenderObjClassSystem
 

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
}
 
- 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)
 
- 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
}
 
- Protected Member Functions inherited from W3DMPO
virtual int glueEnforcer () const =0
 
- 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)
 

Detailed Description

Custom render object that draws tracks on the terrain.

This render object handles drawing tracks left by objects moving on the terrain.

Definition at line 50 of file W3DTerrainTracks.h.

Constructor & Destructor Documentation

◆ TerrainTracksRenderObjClass()

TerrainTracksRenderObjClass::TerrainTracksRenderObjClass ( void )

Constructor. Just nulls out some variables.

Definition at line 85 of file W3DTerrainTracks.cpp.

◆ ~TerrainTracksRenderObjClass()

TerrainTracksRenderObjClass::~TerrainTracksRenderObjClass ( void )

Destructor. Releases w3d assets.

Definition at line 75 of file W3DTerrainTracks.cpp.

Member Function Documentation

◆ addCapEdgeToTrack()

void TerrainTracksRenderObjClass::addCapEdgeToTrack ( Real x,
Real y )

cap the existing segment so we can resume at an unconnected position.

Cap the current track (adding an feathered edge) so we're ready to resume the track at a new location. Used by objects entering FOW where we need to stop adding edges to the track when they enter the fog boundary but resume elsewhere if they become visible again.

Todo
: Have object pass its height and orientation so we can remove extra calls.
Todo
: try getting height at endpoint
Todo
: try getting height at endpoint

Definition at line 188 of file W3DTerrainTracks.cpp.

◆ addEdgeToTrack()

void TerrainTracksRenderObjClass::addEdgeToTrack ( Real x,
Real y )

add a new segment to the track

Try to add an additional segment to track mark. Will do nothing if distance from last edge is too small. Will overwrite the oldest edge if maximum track length is reached. Oldest edges should by faded out by that time.

Todo
: Have object pass its height and orientation so we can remove extra calls.
Todo
: try getting height at endpoint
Todo
: try getting height at endpoint

Definition at line 310 of file W3DTerrainTracks.cpp.

◆ Class_ID()

Int TerrainTracksRenderObjClass::Class_ID ( void ) const
virtual

returns the class id, so the scene can tell what kind of render object it has.

Reimplemented from RenderObjClass.

Definition at line 124 of file W3DTerrainTracks.cpp.

◆ Clone()

RenderObjClass * TerrainTracksRenderObjClass::Clone ( void ) const
virtual

Not used, but required virtual method.

Implements RenderObjClass.

Definition at line 134 of file W3DTerrainTracks.cpp.

◆ freeTerrainTracksResources()

Int TerrainTracksRenderObjClass::freeTerrainTracksResources ( void )

free W3D assets used for this track

Free any W3D resources associated with this object

Definition at line 145 of file W3DTerrainTracks.cpp.

◆ Get_Obj_Space_Bounding_Box()

void TerrainTracksRenderObjClass::Get_Obj_Space_Bounding_Box ( AABoxClass & box) const
virtual

WW3D method that returns object bounding box used in collision detection

Reimplemented from RenderObjClass.

Definition at line 114 of file W3DTerrainTracks.cpp.

◆ Get_Obj_Space_Bounding_Sphere()

void TerrainTracksRenderObjClass::Get_Obj_Space_Bounding_Sphere ( SphereClass & sphere) const
virtual

WW3D method that returns object bounding sphere used in frustum culling

Todo
: Add code to cull track marks to screen by constantly updating bounding volumes

Reimplemented from RenderObjClass.

Definition at line 104 of file W3DTerrainTracks.cpp.

◆ init()

void TerrainTracksRenderObjClass::init ( Real width,
Real length,
const Char * texturename )

allocate W3D resources and set size

Setup size settings and allocate W3D texture

Definition at line 164 of file W3DTerrainTracks.cpp.

◆ Render()

void TerrainTracksRenderObjClass::Render ( RenderInfoClass & rinfo)
virtual

Does nothing. Just increments a counter of how many track edges were requested for rendering this frame. Actual rendering is done in flush().

Todo
: After adding track mark visibility tests, add visible marks to another list.

Implements RenderObjClass.

Definition at line 429 of file W3DTerrainTracks.cpp.

◆ setAirborne()

void TerrainTracksRenderObjClass::setAirborne ( void )
inline

Starts a new section of track, generally after going airborne.

Definition at line 74 of file W3DTerrainTracks.h.

◆ setOwnerDrawable()

void TerrainTracksRenderObjClass::setOwnerDrawable ( const Drawable * owner)
inline

Definition at line 75 of file W3DTerrainTracks.h.

Friends And Related Symbol Documentation

◆ TerrainTracksRenderObjClassSystem

friend class TerrainTracksRenderObjClassSystem
friend

Definition at line 54 of file W3DTerrainTracks.h.

Member Data Documentation

◆ m_activeEdgeCount

Int TerrainTracksRenderObjClass::m_activeEdgeCount
protected

number of active edges in segment list

Definition at line 81 of file W3DTerrainTracks.h.

◆ m_airborne

Bool TerrainTracksRenderObjClass::m_airborne
protected

Did the vehicle bounce up into the air?

Definition at line 100 of file W3DTerrainTracks.h.

◆ m_bottomIndex

Int TerrainTracksRenderObjClass::m_bottomIndex
protected

points at oldest edge on track

Definition at line 94 of file W3DTerrainTracks.h.

◆ m_bound

Bool TerrainTracksRenderObjClass::m_bound
protected

object is bound to owner and accepts new edges

Definition at line 97 of file W3DTerrainTracks.h.

◆ m_boundingBox

AABoxClass TerrainTracksRenderObjClass::m_boundingBox
protected

bounding box of TerrainTracks

Definition at line 80 of file W3DTerrainTracks.h.

◆ m_boundingSphere

SphereClass TerrainTracksRenderObjClass::m_boundingSphere
protected

bounding sphere of TerrainTracks

Definition at line 79 of file W3DTerrainTracks.h.

◆ m_edges

edgeInfo TerrainTracksRenderObjClass::m_edges[MAX_TRACK_EDGE_COUNT]
protected

edges at each segment break

Definition at line 92 of file W3DTerrainTracks.h.

◆ m_haveAnchor

Bool TerrainTracksRenderObjClass::m_haveAnchor
protected

set to false until first edge is added

Definition at line 96 of file W3DTerrainTracks.h.

◆ m_haveCap

Bool TerrainTracksRenderObjClass::m_haveCap
protected

is the segment capped so we can stop and resume at new location.

Definition at line 101 of file W3DTerrainTracks.h.

◆ m_lastAnchor

Vector3 TerrainTracksRenderObjClass::m_lastAnchor
protected

location of last edge center

Definition at line 93 of file W3DTerrainTracks.h.

◆ m_length

Real TerrainTracksRenderObjClass::m_length
protected

length of each track segment

Definition at line 99 of file W3DTerrainTracks.h.

◆ m_nextSystem

TerrainTracksRenderObjClass* TerrainTracksRenderObjClass::m_nextSystem
protected

next track system

Definition at line 102 of file W3DTerrainTracks.h.

◆ m_ownerDrawable

const Drawable* TerrainTracksRenderObjClass::m_ownerDrawable
protected

logical object that's laying down tread marks.

Definition at line 83 of file W3DTerrainTracks.h.

◆ m_prevSystem

TerrainTracksRenderObjClass* TerrainTracksRenderObjClass::m_prevSystem
protected

previous track system

Definition at line 103 of file W3DTerrainTracks.h.

◆ m_stageZeroTexture

TextureClass* TerrainTracksRenderObjClass::m_stageZeroTexture
protected

primary texture

Definition at line 78 of file W3DTerrainTracks.h.

◆ m_topIndex

Int TerrainTracksRenderObjClass::m_topIndex
protected

points to newest edge on track

Definition at line 95 of file W3DTerrainTracks.h.

◆ m_totalEdgesAdded

Int TerrainTracksRenderObjClass::m_totalEdgesAdded
protected

number of edges ever added to this track

Definition at line 82 of file W3DTerrainTracks.h.

◆ m_width

Real TerrainTracksRenderObjClass::m_width
protected

track width

Definition at line 98 of file W3DTerrainTracks.h.


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