SuperTuxKart
Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Attributes | Private Types | Private Attributes | Static Private Attributes | List of all members
ProfileWorld Class Reference

An implementation of World, used for profiling only. More...

#include <profile_world.hpp>

Inheritance diagram for ProfileWorld:
Inheritance graph
[legend]

Public Member Functions

 ProfileWorld ()
 The constructor sets the number of (local) players to 0, since only AI karts are used.
 
virtual ~ProfileWorld ()
 Sets profile mode off again. More...
 
virtual std::string getInternalCode () const
 Returns identifier for this world. More...
 
virtual void update (int ticks)
 Counts the number of frames. More...
 
virtual bool isRaceOver ()
 The race is over if either the requested number of laps have been done or the requested time is over.
 
virtual void enterRaceOverState ()
 This function is called when the race is finished, but end-of-race animations have still to be played. More...
 
- Public Member Functions inherited from StandardRace
virtual void getDefaultCollectibles (int *collectible_type, int *amount) OVERRIDE
 Called to determine the default collectibles to give each player at the start for this kind of race. More...
 
virtual bool haveBonusBoxes () OVERRIDE
 Returns if this mode supports bonus boxes or not.
 
virtual const std::string & getIdent () const OVERRIDE
 Returns an identifier for this race.
 
virtual void endRaceEarly () OVERRIDE
 Ends the race early and places still active player karts at the back. More...
 
- Public Member Functions inherited from LinearWorld
 LinearWorld ()
 Constructs the linear world. More...
 
virtual void init () OVERRIDE
 call just after instanciating. More...
 
virtual ~LinearWorld ()
 The destructor frees al data structures.
 
virtual void updateGraphics (float dt) OVERRIDE
 This updates all only graphical elements.It is only called once per rendered frame, not once per time step. More...
 
float getDistanceDownTrackForKart (const int kart_id, bool account_for_checklines) const
 Returns the distance the kart has travelled along the track since crossing the start line. More...
 
void updateTrackSectors ()
 
void updateRacePosition ()
 Find the position (rank) of every kart. More...
 
float getDistanceToCenterForKart (const int kart_id) const
 Gets the distance of the kart from the center of the driveline. More...
 
float getEstimatedFinishTime (const int kart_id) const
 Returns the estimated finishing time. More...
 
int getLapForKart (const int kart_id) const
 
int getTicksAtLapForKart (const int kart_id) const
 
float getLiveTimeDifference () const
 
bool hasValidTimeDifference () const
 
virtual void getKartsDisplayInfo (std::vector< RaceGUIBase::KartIconDisplayInfo > *info) OVERRIDE
 Called by the code that draws the list of karts on the race GUI to know what needs to be drawn in the current mode. More...
 
virtual unsigned int getNumberOfRescuePositions () const OVERRIDE
 Returns the number of rescue positions on a given track, which in linear races is just the number of driveline quads.
 
virtual unsigned int getRescuePositionIndex (AbstractKart *kart) OVERRIDE
 Determines the rescue position for a kart. More...
 
virtual btTransform getRescueTransform (unsigned int index) const OVERRIDE
 Returns the bullet transformation for the specified rescue index. More...
 
virtual void reset (bool restart=false) OVERRIDE
 Called before a race is started (or restarted). More...
 
virtual void newLap (unsigned int kart_index) OVERRIDE
 Is called by check structures if a kart starts a new lap. More...
 
virtual bool raceHasLaps () OVERRIDE
 Returns if this race mode has laps. More...
 
virtual bool useChecklineRequirements () const OVERRIDE
 Override settings from base class.
 
int getFinishedLapsOfKart (unsigned int kart_index) const OVERRIDE
 Returns the number of laps a kart has completed. More...
 
void setLastTriggeredCheckline (unsigned int kart_index, int index)
 
float getOverallDistance (unsigned int kart_index) const
 Returns how far the kart has driven so far (i.e. More...
 
float getFastestLap () const
 Returns time for the fastest laps.
 
stringw getFastestLapKartName () const
 Returns the kart name that made the fastest lap time.
 
int getFastestLapTicks () const
 Network use: get fastest lap in ticks.
 
void setFastestLapTicks (int ticks)
 Network use: set fastest lap in ticks.
 
void setFastestKartName (const stringw &name)
 Network use: set fastest kart name.
 
virtual std::pair< uint32_t, uint32_t > getGameStartedProgress () const OVERRIDE
 Used by server to get the current started game progress in either or both remaining time or progress in percent. More...
 
virtual void saveCompleteState (BareNetworkString *bns, STKPeer *peer) OVERRIDE
 
virtual void restoreCompleteState (const BareNetworkString &b) OVERRIDE
 
void updateCheckLinesServer (int check_id, int kart_id)
 Called in server whenever a kart cross a check line, it send server current kart lap count, last triggered checkline and check structure status to all players in game (including spectators so that the lap count is correct) More...
 
void updateCheckLinesClient (const BareNetworkString &b)
 
void handleServerCheckStructureCount (unsigned count)
 
- Public Member Functions inherited from WorldWithRank
bool displayRank () const
 
void beginSetKartPositions ()
 This function must be called before starting to set all kart positions again. More...
 
bool setKartPosition (unsigned int kart_id, unsigned int position)
 Sets the position of a kart. More...
 
void endSetKartPositions ()
 Called once the last position was set. More...
 
AbstractKartgetKartAtPosition (unsigned int p) const
 Returns the kart with a given position. More...
 
virtual int getScoreForPosition (int p)
 Returns the number of points for a kart at a specified position. More...
 
TrackSectorgetTrackSector (unsigned int kart_index) const
 Returns the track_sector object for the specified kart. More...
 
bool isOnRoad (unsigned int kart_index) const
 Returns true if the kart is on a valid graph quad. More...
 
int getSectorForKart (const AbstractKart *kart) const
 Gets the sector a kart is on. More...
 
- Public Member Functions inherited from World
 World ()
 The main world class is used to handle the track and the karts. More...
 
virtual void moveKartAfterRescue (AbstractKart *kart)
 Places a kart that is rescued. More...
 
virtual void terminateRace () OVERRIDE
 Called at the end of a race. More...
 
virtual void pause (Phase phase) OVERRIDE
 Pauses the music (and then pauses WorldStatus).
 
virtual void unpause () OVERRIDE
 Switches back from a pause state to the previous state.
 
virtual void collectedItem (const AbstractKart *kart, const ItemState *item)
 Receives notification if an item is collected. More...
 
virtual bool hasRaceEndedEarly () const
 
virtual bool useFastMusicNearEnd () const
 Returns if this mode should use fast music (if available). More...
 
virtual void kartAdded (AbstractKart *kart, scene::ISceneNode *node)
 If you want to do something to karts or their graphics at the start of the race, override this. More...
 
virtual bool kartHit (int kart_id, int hitter=-1)
 Called when a kart was hit by a projectile. More...
 
virtual void onMouseClick (int x, int y)
 
HighscoresgetHighscores () const
 
void schedulePause (Phase phase)
 
void scheduleUnpause ()
 
void scheduleExitRace ()
 
void scheduleTutorial ()
 
void updateWorld (int ticks)
 This is the main interface to update the world. More...
 
void handleExplosion (const Vec3 &xyz, AbstractKart *kart_hit, PhysicalObject *object)
 
AbstractKartgetPlayerKart (unsigned int player) const
 Returns the n-th player kart. More...
 
AbstractKartgetLocalPlayerKart (unsigned int n) const
 Returns the nth local player kart, i.e. More...
 
virtual const btTransform & getStartTransform (int index)
 Returns the start coordinates for a kart with a given index. More...
 
void moveKartTo (AbstractKart *kart, const btTransform &t)
 Places the kart at a given position and rotation. More...
 
RaceGUIBasegetRaceGUI () const
 Returns a pointer to the race gui. More...
 
unsigned int getNumKarts () const
 Returns the number of karts in the race. More...
 
AbstractKartgetKart (int kartId) const
 Returns the kart with a given world id. More...
 
const KartList & getKarts () const
 Returns all karts. More...
 
unsigned int getCurrentNumKarts () const
 Returns the number of currently active (i.e.non-elikminated) karts. More...
 
unsigned int getCurrentNumPlayers () const
 Returns the number of currently active (i.e. More...
 
void resetElimination ()
 
virtual void addReservedKart (int kart_id)
 
virtual bool shouldDrawTimer () const
 The code that draws the timer should call this first to know whether the game mode wants a timer drawn. More...
 
bool useHighScores () const
 
virtual void onFirePressed (Controller *who)
 Override if you want to know when a kart presses fire.
 
virtual void escapePressed ()
 
virtual void loadCustomModels ()
 
void eliminateKart (int kart_number, bool notify_of_elimination=true)
 Remove (eliminate) a kart from the race.
 
void setUnfairTeam (bool val)
 
virtual bool hasTeam () const
 
KartTeam getKartTeam (unsigned int kart_id) const
 Get the team of kart in world (including AIs)
 
int getTeamNum (KartTeam team) const
 
void setNetworkWorld (bool is_networked)
 Set the network mode (true if networked)
 
bool isNetworkWorld () const
 
void initTeamArrows (AbstractKart *k)
 Set the team arrow on karts if necessary.
 
virtual bool isGoalPhase () const
 
- Public Member Functions inherited from WorldStatus
virtual ~WorldStatus ()
 Destructor of WorldStatus.
 
virtual void updateTime (int ticks)
 Updates the world time and clock (which might be running backwards), and all status information, called once per frame at the end of the main loop. More...
 
void startReadySetGo ()
 
virtual void pause (Phase phase)
 Pauses the game and switches to the specified phase. More...
 
void setTime (const float time)
 Sets the time for the clock. More...
 
void setTicks (int ticks)
 Sets a new time for the world time, measured in ticks. More...
 
void setTicksForRewind (int ticks)
 Sets a new time for the world time (used by rewind), measured in ticks. More...
 
bool isStartPhase () const
 
bool isRacePhase () const
 
bool isActiveRacePhase () const
 
bool isFinishPhase () const
 While the race menu is being displayed, m_phase is limbo, and m_previous_phase is finish. More...
 
const Phase getPhase () const
 Returns the current race phase. More...
 
void setPhase (Phase phase)
 Sets the current race phase. More...
 
void setClockMode (const ClockType mode, const float initial_time=0.0f)
 Call to specify what kind of clock you want. More...
 
int getClockMode () const
 Returns the current clock mode. More...
 
float getTime () const
 Returns the current race time. More...
 
int getTimeTicks () const
 Returns the current race time in time ticks (i.e. More...
 
virtual void countdownReachedZero ()
 Will be called to notify your derived class that the clock, which is in COUNTDOWN mode, has reached zero. More...
 
int getTicksSinceStart () const
 Get the ticks since start regardless of which way the clock counts.
 
int getAuxiliaryTicks () const
 
bool isLiveJoinWorld () const
 
void setLiveJoinWorld (bool val)
 
int getMusicDescriptionTicks () const
 
void endLiveJoinWorld (int ticks_now)
 Base on the network timer set current world count up ticks to tick_now.
 

Static Public Member Functions

static void setProfileModeTime (float time)
 Enables profiling for a certain amount of time. More...
 
static void setProfileModeLaps (int laps)
 Enables profiling for a certain number of laps. More...
 
static bool isProfileMode ()
 Returns true if profile mode was selected. More...
 
static void disableGraphics ()
 Switches off graphics. More...
 
static bool isNoGraphics ()
 Returns true if no graphics should be displayed. More...
 
- Static Public Member Functions inherited from World
static WorldgetWorld ()
 Returns a pointer to the (singleton) world object. More...
 
static void deleteWorld ()
 Delete the )singleton) world object, if it exists, and sets the singleton pointer to NULL. More...
 
static void setWorld (World *world)
 Sets the pointer to the world object. More...
 

Protected Member Functions

virtual std::shared_ptr< AbstractKartcreateKart (const std::string &kart_ident, int index, int local_player_id, int global_player_id, RaceManager::KartType type, HandicapLevel handicap)
 Creates a kart, having a certain position, starting location, and local and global player id (if applicable). More...
 
- Protected Member Functions inherited from LinearWorld
virtual void checkForWrongDirection (unsigned int i, float dt)
 Checks if a kart is going in the wrong direction. More...
 
virtual float estimateFinishTimeForKart (AbstractKart *kart) OVERRIDE
 Estimate the arrival time of any karts that haven't arrived yet by using their average speed up to now and the distance still to race. More...
 
- Protected Member Functions inherited from WorldWithRank
unsigned int getClosestStartPoint (AbstractKart *kart)
 
void updateSectorForKarts ()
 Localize each kart on the graph using its center xyz.
 
- Protected Member Functions inherited from World
void updateHighscores (int *best_highscore_rank)
 Called at the end of a race. More...
 
void resetAllKarts ()
 Waits till each kart is resting on the ground. More...
 
ControllerloadAIController (AbstractKart *kart)
 Creates an AI controller for the kart. More...
 
virtual void onGo () OVERRIDE
 Called when 'go' is being displayed for the first time. More...
 
virtual void createRaceGUI ()
 
void updateTrack (int ticks)
 Only updates the track. More...
 
void updateAchievementDataEndRace ()
 
void updateAchievementModeCounters (bool start)
 

Static Protected Attributes

static int m_num_laps = 0
 In laps based profiling: number of laps to run. More...
 

Private Types

enum  ProfileType { PROFILE_NONE, PROFILE_TIME, PROFILE_LAPS }
 Profiling modes. More...
 

Private Attributes

unsigned int m_start_time
 Return value of real time at start of race. More...
 
int m_frame_count
 Number of frames. More...
 
long long m_num_triangles
 Number of primitives drawn (in 1000). More...
 
long long m_num_culls
 Number of culled triangles. More...
 
long long m_num_solid
 Numer of solid triangles drawn. More...
 
long long m_num_transparent
 Number of transparent triangles drawn. More...
 
long long m_num_trans_effect
 Number of transparent effect triangles drawn. More...
 
long long m_num_calls
 Number of calls to draw. More...
 

Static Private Attributes

static ProfileType m_profile_mode =PROFILE_NONE
 If profiling is done, and if so, which mode. More...
 
static bool m_no_graphics = false
 If no graphics should be displayed. More...
 
static float m_time = 0.0f
 In time based profiling only: time to run. More...
 

Additional Inherited Members

- Public Types inherited from World
typedef std::vector< std::shared_ptr< AbstractKart > > KartList
 
- Public Types inherited from WorldStatus
enum  ClockType { CLOCK_NONE, CLOCK_CHRONO, CLOCK_COUNTDOWN }
 Different clock types for a race. More...
 
enum  Phase {
  TRACK_INTRO_PHASE, SETUP_PHASE, WAIT_FOR_SERVER_PHASE, SERVER_READY_PHASE,
  READY_PHASE, SET_PHASE, GO_PHASE, MUSIC_PHASE,
  RACE_PHASE, DELAY_FINISH_PHASE, RESULT_DISPLAY_PHASE, FINISH_PHASE,
  IN_GAME_MENU_PHASE, UNDEFINED_PHASE
}
 
- Protected Attributes inherited from LinearWorld
std::vector< KartInfom_kart_info
 This vector contains an 'KartInfo' struct for every kart in the race. More...
 
- Protected Attributes inherited from WorldWithRank
std::vector< int > m_position_index
 This contains a mapping from race position to kart index. More...
 
bool m_display_rank
 Whether to display the rank in the race GUI.
 
std::vector< int > m_score_for_position
 The points given to a kart on a given position (index is 0 based, so using race-position - 1. More...
 
std::vector< TrackSector * > m_kart_track_sector
 Stores the current graph node and track coordinates for each kart. More...
 
- Protected Attributes inherited from World
int m_red_ai
 
int m_blue_ai
 
std::map< int, KartTeam > m_kart_team_map
 
std::map< int, unsigned int > m_kart_position_map
 
KartList m_karts
 The list of all karts. More...
 
RandomGenerator m_random
 
AbstractKartm_fastest_kart
 
int m_eliminated_karts
 Number of eliminated karts. More...
 
int m_eliminated_players
 Number of eliminated players. More...
 
int m_num_players
 OVerall number of players. More...
 
bool m_faster_music_active
 
bool m_stop_music_when_dialog_open
 
bool m_unfair_team
 
bool m_use_highscores
 Whether highscores should be used for this kind of race. More...
 
RaceGUIBasem_race_gui
 Pointer to the race GUI. More...
 
RaceGUIBasem_saved_race_gui
 The actual race gui needs to be saved when the race result gui is displayed since it is still needed in case of a restart, and it can't simply be created again (since it assumes that it can render to texture without having any scene nodes, but in case of a restart there are scene nodes). More...
 
bool m_schedule_pause
 Pausing/unpausing are not done immediately, but at next udpdate. More...
 
bool m_schedule_unpause
 Pausing/unpausing are not done immediately, but at next udpdate. More...
 
bool m_schedule_exit_race
 
bool m_schedule_tutorial
 
Phase m_scheduled_pause_phase
 
bool m_self_destruct
 Set when the world needs to be deleted but you can't do it immediately because you are e.g. More...
 
bool m_is_network_world
 Set when the world is online and counts network players. More...
 
bool m_ended_early
 
- Protected Attributes inherited from WorldStatus
double m_time
 Elasped/remaining time in seconds. More...
 
int m_time_ticks
 Time in number of ticks (in terms of physics time steps). More...
 
bool m_play_racestart_sounds
 If the start race should be played, disabled in cutscenes. More...
 
bool m_play_track_intro_sound
 
bool m_play_ready_set_go_sounds
 
std::atomic< Phase > m_phase
 

Detailed Description

An implementation of World, used for profiling only.

Member Enumeration Documentation

◆ ProfileType

Profiling modes.

Constructor & Destructor Documentation

◆ ~ProfileWorld()

ProfileWorld::~ProfileWorld ( )
virtual

Sets profile mode off again.

Needed because demo mode's closing allows the player to continue playing STK. If we didn't set it off, profile mode would stay activated.

Member Function Documentation

◆ createKart()

std::shared_ptr< AbstractKart > ProfileWorld::createKart ( const std::string &  kart_ident,
int  index,
int  local_player_id,
int  global_player_id,
RaceManager::KartType  kart_type,
HandicapLevel  handicap 
)
protectedvirtual

Creates a kart, having a certain position, starting location, and local and global player id (if applicable).

Parameters
kart_identIdentifier of the kart to create.
indexIndex of the kart.
local_player_idIf the kart is a player kart this is the index of this player on the local machine.
global_player_idIf the akrt is a player kart this is the index of this player globally (i.e. including network players).
init_posThe start XYZ coordinates.

Reimplemented from World.

◆ disableGraphics()

static void ProfileWorld::disableGraphics ( )
inlinestatic

Switches off graphics.

◆ enterRaceOverState()

void ProfileWorld::enterRaceOverState ( )
virtual

This function is called when the race is finished, but end-of-race animations have still to be played.

In the case of profiling, we can just abort here without waiting for the animations.

Reimplemented from WorldStatus.

Reimplemented in DemoWorld.

◆ getInternalCode()

virtual std::string ProfileWorld::getInternalCode ( ) const
inlinevirtual

Returns identifier for this world.

Reimplemented in DemoWorld.

◆ isNoGraphics()

static bool ProfileWorld::isNoGraphics ( )
inlinestatic

Returns true if no graphics should be displayed.

◆ isProfileMode()

static bool ProfileWorld::isProfileMode ( )
inlinestatic

Returns true if profile mode was selected.

◆ setProfileModeLaps()

void ProfileWorld::setProfileModeLaps ( int  laps)
static

Enables profiling for a certain number of laps.

The race will end when all karts have done (at least) this number of laps.

Parameters
lapsThe number of laps.

◆ setProfileModeTime()

void ProfileWorld::setProfileModeTime ( float  time)
static

Enables profiling for a certain amount of time.

It also sets the number of laps to a high number (so that the lap count will not finish a race before the time is over).

Parameters
timeTime to profile a race for.

◆ update()

void ProfileWorld::update ( int  ticks)
virtual

Counts the number of frames.

Parameters
ticksnumber of physics time steps - should be 1.

Reimplemented from LinearWorld.

Reimplemented in DemoWorld.

Member Data Documentation

◆ m_frame_count

int ProfileWorld::m_frame_count
private

Number of frames.

For statistics only.

◆ m_no_graphics

bool ProfileWorld::m_no_graphics = false
staticprivate

If no graphics should be displayed.

Useful for batch testing of AI changes etc.

◆ m_num_calls

long long ProfileWorld::m_num_calls
private

Number of calls to draw.

◆ m_num_culls

long long ProfileWorld::m_num_culls
private

Number of culled triangles.

◆ m_num_laps

int ProfileWorld::m_num_laps = 0
staticprotected

In laps based profiling: number of laps to run.

Also used by DemoWorld.

◆ m_num_solid

long long ProfileWorld::m_num_solid
private

Numer of solid triangles drawn.

◆ m_num_trans_effect

long long ProfileWorld::m_num_trans_effect
private

Number of transparent effect triangles drawn.

◆ m_num_transparent

long long ProfileWorld::m_num_transparent
private

Number of transparent triangles drawn.

◆ m_num_triangles

long long ProfileWorld::m_num_triangles
private

Number of primitives drawn (in 1000).

◆ m_profile_mode

ProfileWorld::ProfileType ProfileWorld::m_profile_mode =PROFILE_NONE
staticprivate

If profiling is done, and if so, which mode.

◆ m_start_time

unsigned int ProfileWorld::m_start_time
private

Return value of real time at start of race.

◆ m_time

float ProfileWorld::m_time = 0.0f
staticprivate

In time based profiling only: time to run.


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