ScummVM API documentation
Stark::Resources::FloorFace Class Reference

#include <floorface.h>

Inheritance diagram for Stark::Resources::FloorFace:
Stark::Resources::Object

Public Member Functions

 FloorFace (Object *parent, byte subType, uint16 index, const Common::String &name)
 
void onAllLoaded () override
 
bool isPointInside (const Math::Vector3d &point) const
 
void computePointHeight (Math::Vector3d &point) const
 
bool intersectRay (const Math::Ray &ray, Math::Vector3d &intersection) const
 
float distanceToRay (const Math::Ray &ray) const
 
float getDistanceFromCamera () const
 
int16 getVertexIndex (int32 index) const
 
void addEdge (FloorEdge *edge)
 
Common::Array< FloorEdge * > getEdges () const
 
FloorEdgefindNearestEdge (const Math::Vector3d &point) const
 
Math::Vector3d getCenter () const
 
bool hasVertices () const
 
void enable (bool enable)
 
bool isEnabled () const
 
- Public Member Functions inherited from Stark::Resources::Object
Type getType () const
 
byte getSubType () const
 
uint16 getIndex () const
 
Common::String getIndexAsString () const
 
Common::String getName () const
 
virtual void saveLoad (ResourceSerializer *serializer)
 
virtual void saveLoadCurrent (ResourceSerializer *serializer)
 
virtual void onPostRead ()
 
virtual void onEnterLocation ()
 
virtual void onGameLoop ()
 
virtual void onEnginePause (bool pause)
 
virtual void onExitLocation ()
 
virtual void onPreDestroy ()
 
template<class T >
T * findParent ()
 
ObjectfindChildWithIndex (Type type, uint16 index, int subType=-1) const
 
ObjectfindChildWithOrder (Type type, uint16 order, int subType=-1) const
 
ObjectfindChildWithName (Type type, const Common::String &name, int subType=-1) const
 
template<class T >
T * findChild (bool mustBeUnique=true) const
 
template<class T >
T * findChildWithSubtype (int subType, bool mustBeUnique=true) const
 
template<class T >
T * findChildWithIndex (uint16 index, int subType=-1) const
 
template<class T >
T * findChildWithOrder (uint16 order, int subType=-1) const
 
template<class T >
T * findChildWithName (const Common::String &name, int subType=-1) const
 
template<class T >
Common::Array< T * > listChildren (int subType=-1) const
 
template<class T >
Common::Array< T * > listChildrenRecursive (int subType=-1)
 
void addChild (Object *child)
 
virtual void print (uint depth=0)
 
template<>
Objectcast (Object *resource)
 
template<>
ObjectfindParent ()
 
template<>
Common::Array< Object * > listChildren (int subType) const
 

Static Public Attributes

static const Type::ResourceType TYPE = Type::kFloorFace
 

Protected Member Functions

void readData (Formats::XRCReadStream *stream) override
 
void printData () override
 
- Protected Member Functions inherited from Stark::Resources::Object
 Object (Object *parent, byte subType, uint16 index, const Common::String &name)
 
void printWithDepth (uint depth, const Common::String &string) const
 
void printDescription (uint depth) const
 

Protected Attributes

int16 _indices [3]
 
Math::Vector3d _vertices [3]
 
Common::Array< FloorEdge * > _edges
 
float _distanceFromCamera
 
float _unk2
 
- Protected Attributes inherited from Stark::Resources::Object
Type _type
 
byte _subType
 
uint16 _index
 
Common::String _name
 
Object_parent
 
Common::Array< Object * > _children
 

Additional Inherited Members

- Static Public Member Functions inherited from Stark::Resources::Object
template<class T >
static T * cast (Object *resource)
 

Detailed Description

A floor face is a 3D triangle used to build the floor

Member Function Documentation

◆ onAllLoaded()

void Stark::Resources::FloorFace::onAllLoaded ( )
overridevirtual

Called when the resource sub-tree is entirely loaded.

Allows to load data from other nodes.

Reimplemented from Stark::Resources::Object.

◆ isPointInside()

bool Stark::Resources::FloorFace::isPointInside ( const Math::Vector3d &  point) const

Return true if the point is inside the face when both are projected on a Z=0 plane

◆ computePointHeight()

void Stark::Resources::FloorFace::computePointHeight ( Math::Vector3d &  point) const

Fill the z coordinate of the point so that it is on the plane

◆ intersectRay()

bool Stark::Resources::FloorFace::intersectRay ( const Math::Ray &  ray,
Math::Vector3d &  intersection 
) const

Check if a ray is intersecting this face

Parameters
originThe ray's origin
directionThe ray's direction
intersectionThe intersection between the ray and the face. Only valid when the return value is true.
Returns
true if the ray intersects the face, false otherwise.

◆ distanceToRay()

float Stark::Resources::FloorFace::distanceToRay ( const Math::Ray &  ray) const

Compute the distance between the face center and the ray

◆ getDistanceFromCamera()

float Stark::Resources::FloorFace::getDistanceFromCamera ( ) const

Obtain the distance to the camera

◆ getVertexIndex()

int16 Stark::Resources::FloorFace::getVertexIndex ( int32  index) const

Get one of the three vertex indices from the face

◆ addEdge()

void Stark::Resources::FloorFace::addEdge ( FloorEdge edge)

Add an edge to the triangle edge list

◆ getEdges()

Common::Array<FloorEdge *> Stark::Resources::FloorFace::getEdges ( ) const

Get the triangle's edge list

◆ findNearestEdge()

FloorEdge* Stark::Resources::FloorFace::findNearestEdge ( const Math::Vector3d &  point) const

Find the edge closest to a point

Distance are compared using the middle point of each edge of the face

◆ getCenter()

Math::Vector3d Stark::Resources::FloorFace::getCenter ( ) const

Get the point at the center of the face's triangle

◆ hasVertices()

bool Stark::Resources::FloorFace::hasVertices ( ) const

Checks if the face is non degenerate

◆ enable()

void Stark::Resources::FloorFace::enable ( bool  enable)

Allow or disallow characters to walk on this face

◆ readData()

void Stark::Resources::FloorFace::readData ( Formats::XRCReadStream stream)
overrideprotectedvirtual

Deserialize the resource static data and initial state.

Reimplemented from Stark::Resources::Object.


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