SuperTuxKart
|
Implements a simple checkline. More...
#include <check_line.hpp>
Public Member Functions | |
CheckLine (const XMLNode &node, unsigned int index) | |
Constructor for a checkline. | |
virtual bool | isTriggered (const Vec3 &old_pos, const Vec3 &new_pos, int indx) OVERRIDE |
True if going from old_pos to new_pos crosses this checkline. | |
virtual void | reset (const Track &track) OVERRIDE |
Initialises the 'previous positions' of all karts with the start position defined for this track. | |
virtual void | resetAfterKartMove (unsigned int kart_index) OVERRIDE |
virtual void | resetAfterRewind (unsigned int kart_index) OVERRIDE |
virtual void | changeDebugColor (bool is_active) OVERRIDE |
virtual bool | triggeringCheckline () const OVERRIDE |
void | setIgnoreHeight (bool b) |
Sets if this check line should not do a height test for testing if a line is crossed. | |
virtual void | saveCompleteState (BareNetworkString *bns) OVERRIDE |
virtual void | restoreCompleteState (const BareNetworkString &b) OVERRIDE |
const Vec3 & | getLeftPoint () const |
const Vec3 & | getRightPoint () const |
virtual CheckStructure * | clone () OVERRIDE |
Clone to child process for server usage (atm no sound or scripting). | |
Public Member Functions inherited from CheckStructure | |
CheckStructure (const XMLNode &node, unsigned int index) | |
virtual void | update (float dt) |
Updates all check structures. | |
virtual void | resetAfterKartMove (unsigned int kart_index) |
virtual void | resetAfterRewind (unsigned int kart_index) |
virtual void | changeDebugColor (bool is_active) |
virtual bool | isTriggered (const Vec3 &old_pos, const Vec3 &new_pos, int indx)=0 |
True if going from old_pos to new_pos crosses this checkline. | |
virtual void | trigger (unsigned int kart_index) |
Is called when this check structure is triggered. | |
virtual void | reset (const Track &track) |
Initialises the 'previous positions' of all karts with the start position defined for this track. | |
CheckType | getType () const |
Returns the type of this check structure. | |
void | addSuccessor (unsigned int i) |
Adds the index of a successor check structure which will get triggered by this check structure. | |
virtual bool | triggeringCheckline () const |
virtual void | saveCompleteState (BareNetworkString *bns) |
virtual void | restoreCompleteState (const BareNetworkString &b) |
void | saveIsActive (int kart_id, BareNetworkString *bns) |
void | restoreIsActive (int kart_id, const BareNetworkString &b) |
int | getIndex () const |
virtual CheckStructure * | clone ()=0 |
Clone to child process for server usage (atm no sound or scripting). | |
Private Attributes | |
bool | m_ignore_height |
True if this line should ignore the height test. | |
Vec3 | m_left_point |
The actual (or estimated) left and right end points in 3d. | |
Vec3 | m_right_point |
std::vector< bool > | m_previous_sign |
Stores the sign (i.e. | |
std::shared_ptr< SP::SPDynamicDrawCall > | m_debug_dy_dc |
Used to display debug information about checklines. | |
irr::core::triangle3df | m_check_plane [4] |
The planes that are tested for being crossed. | |
Additional Inherited Members | |
Public Types inherited from CheckStructure | |
enum | CheckType { CT_NEW_LAP , CT_ACTIVATE , CT_TOGGLE , CT_CANNON , CT_GOAL , CT_AMBIENT_SPHERE , CT_TRIGGER } |
Different types of check structures: ACTIVATE: Activates another check structure (independent of the state that check structure is in) TOGGLE: Switches (inverts) the state of another check structure. More... | |
Protected Member Functions inherited from CheckStructure | |
CheckStructure () | |
For CheckTrigger or CheckCylinder. | |
Protected Attributes inherited from CheckStructure | |
AlignedArray< Vec3 > | m_previous_position |
Stores the previous position of all karts. | |
std::vector< bool > | m_is_active |
Stores if this check structure is active (for a given kart). | |
bool | m_active_at_reset |
True if this check structure should be activated at a reset. | |
unsigned int | m_index |
Stores the index of this check structure. | |
Implements a simple checkline.
It's a finite line with 2 endpoints in 2d and a minimum height (i.e. the minimum Y coordinate of the two points). If a kart crosses the line (in the projection on the 2d plane) and has an appropriate height, the checkline will be triggered. This allows for very easy checking of checklines, and should be sufficient for most check structure.
CheckLine::CheckLine | ( | const XMLNode & | node, |
unsigned int | index | ||
) |
Constructor for a checkline.
node | XML node containing the parameters for this checkline. |
index | Index of this check structure in the check manager. |
|
virtual |
Reimplemented from CheckStructure.
Reimplemented in CheckCannon.
|
inlinevirtual |
Clone to child process for server usage (atm no sound or scripting).
Implements CheckStructure.
Reimplemented in CheckCannon.
True if going from old_pos to new_pos crosses this checkline.
This function is called from update (of the checkline structure).
old_pos | Position in previous frame. |
new_pos | Position in current frame. |
kart_indx | Index of the kart, can be used to store kart specific additional data. If set to a negative number it will be ignored (used for e.g. soccer ball, and basket ball). |
Implements CheckStructure.
|
virtual |
Initialises the 'previous positions' of all karts with the start position defined for this track.
track | The track object defining the start positions. |
Reimplemented from CheckStructure.
|
virtual |
Reimplemented from CheckStructure.
|
inlinevirtual |
Reimplemented from CheckStructure.
|
virtual |
Reimplemented from CheckStructure.
|
virtual |
Reimplemented from CheckStructure.
|
inline |
Sets if this check line should not do a height test for testing if a line is crossed.
Used for basket calls in cannon (the ball can be too heigh to otherwise trigger he cannon).
|
inlinevirtual |
Reimplemented from CheckStructure.
|
private |
True if this line should ignore the height test.
This is required e.g. for basketball cannons, since the ball can be too high to otherwise trigger the cannon.
|
private |
The actual (or estimated) left and right end points in 3d.
This is used by the cannon. If the xml file stores only the min_height, those points are set from the 2d points and the min height.
|
private |
Stores the sign (i.e.
side) of the previous line to save some computations. True if the value is >=0, i.e. the point is on or to the right of the line.