1
0
mirror of https://github.com/rwengine/openrw.git synced 2024-11-07 03:12:36 +01:00

Merge pull request #523 from ShFil119/default_member_initializer

[Ready]Usage of default member initializer
This commit is contained in:
Daniel Evans 2018-07-05 20:38:55 +01:00 committed by GitHub
commit 9c22dbbc91
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
53 changed files with 338 additions and 582 deletions

View File

@ -23,16 +23,6 @@
constexpr float kCloseDoorIdleTime = 2.f; constexpr float kCloseDoorIdleTime = 2.f;
CharacterController::CharacterController()
: character(nullptr)
, _currentActivity(nullptr)
, _nextActivity(nullptr)
, m_closeDoorTimer(0.f)
, currentGoal(None)
, leader(nullptr)
, targetNode(nullptr) {
}
bool CharacterController::updateActivity() { bool CharacterController::updateActivity() {
if (_currentActivity && character->isAlive()) { if (_currentActivity && character->isAlive()) {
return _currentActivity->update(character, this); return _currentActivity->update(character, this);

View File

@ -58,23 +58,23 @@ protected:
/** /**
* The character being controlled. * The character being controlled.
*/ */
CharacterObject* character; CharacterObject* character = nullptr;
std::unique_ptr<Activity> _currentActivity; std::unique_ptr<Activity> _currentActivity = nullptr;
std::unique_ptr<Activity> _nextActivity; std::unique_ptr<Activity> _nextActivity = nullptr;
bool updateActivity(); bool updateActivity();
void setActivity(std::unique_ptr<Activity> activity); void setActivity(std::unique_ptr<Activity> activity);
float m_closeDoorTimer; float m_closeDoorTimer{0.f};
// Goal related variables // Goal related variables
Goal currentGoal; Goal currentGoal{None};
CharacterObject* leader; CharacterObject* leader = nullptr;
AIGraphNode* targetNode; AIGraphNode* targetNode = nullptr;
public: public:
CharacterController(); CharacterController() = default;
virtual ~CharacterController() = default; virtual ~CharacterController() = default;

View File

@ -13,15 +13,6 @@
class Animator; class Animator;
PlayerController::PlayerController()
: CharacterController()
, lastRotation(glm::vec3(0.f, 0.f, 0.f))
, missionRestartRequired(false)
, _enabled(true)
, restartState(Alive)
, payphoneState(Left) {
}
void PlayerController::setInputEnabled(bool enabled) { void PlayerController::setInputEnabled(bool enabled) {
_enabled = enabled; _enabled = enabled;
} }
@ -365,4 +356,4 @@ void PlayerController::freeFromCutscene() {
// @todo: make player no longer invincible // @todo: make player no longer invincible
// ignored by police // ignored by police
} }

View File

@ -11,28 +11,28 @@ private:
glm::vec3 direction{}; glm::vec3 direction{};
glm::quat lastRotation; glm::quat lastRotation = glm::vec3(0.f, 0.f, 0.f);
bool missionRestartRequired; bool missionRestartRequired = false;
bool adrenalineEffect; bool adrenalineEffect = false;
float adrenalineEffectTime; float adrenalineEffectTime{0};
bool _enabled; bool _enabled = true;
enum RestartState { enum RestartState {
Alive, Alive,
FadingOut, FadingOut,
Restarting, Restarting,
FadingIn, FadingIn
} restartState; } restartState = Alive;
enum PayphoneState { enum PayphoneState {
Left, Left,
Talking, Talking,
PickingUp, PickingUp,
HangingUp, HangingUp,
} payphoneState; } payphoneState = Left;
// handles player respawn logic // handles player respawn logic
void restartLogic(); void restartLogic();
@ -40,7 +40,7 @@ private:
void restart(); void restart();
public: public:
PlayerController(); PlayerController() = default;
/** /**
* @brief Enables and disables player input. * @brief Enables and disables player input.

View File

@ -24,11 +24,7 @@
TrafficDirector::TrafficDirector(AIGraph* g, GameWorld* w) TrafficDirector::TrafficDirector(AIGraph* g, GameWorld* w)
: graph(g) : graph(g)
, world(w) , world(w) {
, pedDensity(1.f)
, carDensity(1.f)
, maximumPedestrians(20)
, maximumCars(10) {
} }
std::vector<AIGraphNode*> TrafficDirector::findAvailableNodes( std::vector<AIGraphNode*> TrafficDirector::findAvailableNodes(

View File

@ -35,12 +35,12 @@ public:
void setPopulationLimits(int maxPeds, int maxCars); void setPopulationLimits(int maxPeds, int maxCars);
private: private:
AIGraph* graph; AIGraph* graph = nullptr;
GameWorld* world; GameWorld* world = nullptr;
float pedDensity; float pedDensity = 1.f;
float carDensity; float carDensity = 1.f;
int maximumPedestrians; int maximumPedestrians = 20;
int maximumCars; int maximumCars = 10;
}; };
#endif #endif

View File

@ -40,8 +40,7 @@ struct ChaseKeyframe {
*/ */
class ChaseCoordinator { class ChaseCoordinator {
public: public:
ChaseCoordinator() : chaseTime(-1.f) { ChaseCoordinator() = default;
}
bool addChaseVehicle(GameObject* vehicle, int index, bool addChaseVehicle(GameObject* vehicle, int index,
const std::string& pathFile); const std::string& pathFile);
@ -54,7 +53,7 @@ public:
void cleanup(); void cleanup();
private: private:
float chaseTime; float chaseTime{-1.f};
struct ChaseObject { struct ChaseObject {
std::vector<ChaseKeyframe> keyframes; std::vector<ChaseKeyframe> keyframes;
GameObject* object; GameObject* object;

View File

@ -17,12 +17,7 @@ struct VehicleHandlingInfo;
*/ */
class CollisionInstance { class CollisionInstance {
public: public:
CollisionInstance() CollisionInstance() = default;
: m_body(nullptr)
, m_vertArray(nullptr)
, m_motionState(nullptr)
, m_collisionHeight(0.f) {
}
~CollisionInstance(); ~CollisionInstance();
@ -41,12 +36,12 @@ public:
void changeMass(float newMass); void changeMass(float newMass);
private: private:
btRigidBody* m_body; btRigidBody* m_body = nullptr;
std::vector<btCollisionShape*> m_shapes; std::vector<btCollisionShape*> m_shapes;
btTriangleIndexVertexArray* m_vertArray; btTriangleIndexVertexArray* m_vertArray = nullptr;
btMotionState* m_motionState; btMotionState* m_motionState = nullptr;
float m_collisionHeight; float m_collisionHeight{0.f};
}; };
#endif #endif

View File

@ -31,15 +31,13 @@
#include "platform/FileIndex.hpp" #include "platform/FileIndex.hpp"
GameData::GameData(Logger* log, const rwfs::path& path) GameData::GameData(Logger* log, const rwfs::path& path)
: datpath(path), logger(log), engine(nullptr) { : datpath(path), logger(log) {
dffLoader.setTextureLookupCallback( dffLoader.setTextureLookupCallback(
[&](const std::string& texture, const std::string&) { [&](const std::string& texture, const std::string&) {
return findSlotTexture(currenttextureslot, texture); return findSlotTexture(currenttextureslot, texture);
}); });
} }
GameData::~GameData() = default;
void GameData::load() { void GameData::load() {
index.indexGameDirectory(datpath); index.indexGameDirectory(datpath);
index.indexTree(datpath); index.indexTree(datpath);

View File

@ -58,9 +58,9 @@ public:
* @param path Path to the root of the game data. * @param path Path to the root of the game data.
*/ */
GameData(Logger* log, const rwfs::path& path); GameData(Logger* log, const rwfs::path& path);
~GameData(); ~GameData() = default;
GameWorld* engine; GameWorld* engine = nullptr;
/** /**
* Returns the current platform * Returns the current platform

View File

@ -1,133 +1,5 @@
#include "engine/GameState.hpp" #include "engine/GameState.hpp"
BasicState::BasicState()
: saveName{0}
, saveTime{0, 0, 0, 0, 0, 0, 0, 0}
, islandNumber{0}
, cameraPosition{}
, gameMinuteMS{0}
, lastTick{0}
, gameHour{0}
, gameMinute{0}
, padMode{0}
, timeMS{0}
, timeScale{1.f}
, timeStep{0}
, timeStep_unclipped{0}
, frameCounter{0}
, timeStep2{0}
, framesPerUpdate{0}
, timeScale2{0}
, lastWeather{0}
, nextWeather{0}
, forcedWeather{0}
, weatherInterpolation{1.0}
, weatherType{0}
, cameraData{0}
, cameraData2{0} {
}
PlayerInfo::PlayerInfo()
: money{0}
, displayedMoney{0}
, hiddenPackagesCollected{0}
, hiddenPackageCount{0}
, neverTired{0}
, fastReload{0}
, thaneOfLibertyCity{0}
, singlePayerHealthcare{0} {
}
GameStats::GameStats()
: playerKills{0}
, otherKills{0}
, carsExploded{0}
, shotsHit{0}
, pedTypesKilled{}
, helicoptersDestroyed{0}
, playerProgress{0}
, explosiveKgsUsed{0}
, bulletsFired{0}
, bulletsHit{0}
, carsCrushed{0}
, headshots{0}
, timesBusted{0}
, timesHospital{0}
, daysPassed{0}
, mmRainfall{0}
, insaneJumpMaxDistance{0}
, insaneJumpMaxHeight{0}
, insaneJumpMaxFlips{0}
, insaneJumpMaxRotation{0}
, bestStunt{0}
, uniqueStuntsFound{0}
, uniqueStuntsTotal{0}
, missionAttempts{0}
, missionsPassed{0}
, passengersDroppedOff{0}
, taxiRevenue{0}
, portlandPassed{0}
, stauntonPassed{0}
, shoresidePassed{0}
, bestTurismoTime{0}
, distanceWalked{0}
, distanceDriven{0}
, patriotPlaygroundTime{0}
, aRideInTheParkTime{0}
, grippedTime{0}
, multistoryMayhemTime{0}
, peopleSaved{0}
, criminalsKilled{0}
, highestParamedicLevel{0}
, firesExtinguished{0}
, longestDodoFlight{0}
, bombDefusalTime{0}
, rampagesPassed{0}
, totalRampages{0}
, totalMissions{0}
, highestScore{}
, peopleKilledSinceCheckpoint{0}
, peopleKilledSinceLastBustedOrWasted{0}
, lastMissionGXT{""} {
}
GameState::GameState()
: basic{}
, gameTime(0.f)
, currentProgress(0)
, maxProgress(1)
, maxWantedLevel(0)
, playerObject(0)
, scriptOnMissionFlag(nullptr)
, overrideNextRestart(false)
, nextRestartLocation{}
, hospitalRestarts{}
, policeRestarts{}
, hospitalIslandOverride(0)
, policeIslandOverride(0)
, fadeIn(true)
, fadeStart(0.f)
, fadeTime(0.f)
, fadeSound(false)
, fadeColour{0.f, 0.f, 0.f}
, skipCutscene(false)
, isIntroPlaying(false)
, currentCutscene(nullptr)
, cutsceneStartTime(-1.f)
, isCinematic(false)
, hudFlash(HudFlash::Disabled)
, cameraNear(0.1f)
, cameraFixed(false)
, cameraPosition{}
, cameraRotation{1.0f, 0.0f, 0.0f, 0.0f}
, cameraTarget(0)
, importExportPortland(0)
, importExportShoreside(0)
, importExportUnused(0)
, world(nullptr)
, script(nullptr) {
}
int GameState::addRadarBlip(BlipData& blip) { int GameState::addRadarBlip(BlipData& blip) {
int l = 0; int l = 0;
for (const auto& radarBlip : radarBlips) { for (const auto& radarBlip : radarBlips) {
@ -221,4 +93,4 @@ void GameState::setFadeColour(glm::i32vec3 colour) {
void GameState::showHelpMessage(const GameStringKey& id) { void GameState::showHelpMessage(const GameStringKey& id) {
text.addText<ScreenTextType::Help>( text.addText<ScreenTextType::Help>(
ScreenTextEntry::makeHelp(id, world->data->texts.text(id))); ScreenTextEntry::makeHelp(id, world->data->texts.text(id)));
} }

View File

@ -38,83 +38,83 @@ struct SystemTime {
/** Block 0 State */ /** Block 0 State */
struct BasicState { struct BasicState {
GameStringChar saveName[24]; GameStringChar saveName[24]{0};
SystemTime saveTime; SystemTime saveTime{0, 0, 0, 0, 0, 0, 0, 0};
uint32_t unknown; uint32_t unknown{0};
uint16_t islandNumber; uint16_t islandNumber{0};
glm::vec3 cameraPosition; glm::vec3 cameraPosition{};
uint32_t gameMinuteMS; uint32_t gameMinuteMS{0};
uint32_t lastTick; uint32_t lastTick{0};
uint8_t gameHour; uint8_t gameHour{0};
uint8_t _align0[3]; uint8_t _align0[3]{0};
uint8_t gameMinute; uint8_t gameMinute{0};
uint8_t _align1[3]; uint8_t _align1[3]{0};
uint16_t padMode; uint16_t padMode{0};
uint8_t _align2[2]; uint8_t _align2[2]{0};
uint32_t timeMS; uint32_t timeMS{0};
float timeScale; float timeScale{1.f};
float timeStep; float timeStep{0.f};
float timeStep_unclipped; // Unknown purpose float timeStep_unclipped{0}; // Unknown purpose
uint32_t frameCounter; uint32_t frameCounter{0};
float timeStep2; float timeStep2{0.f};
float framesPerUpdate; float framesPerUpdate{0.f};
float timeScale2; float timeScale2{0.f};
uint16_t lastWeather; uint16_t lastWeather{0};
uint8_t _align3[2]; uint8_t _align3[2]{0};
uint16_t nextWeather; uint16_t nextWeather{0};
uint8_t _align4[2]; uint8_t _align4[2]{0};
uint16_t forcedWeather; uint16_t forcedWeather{0};
uint8_t _align5[2]; uint8_t _align5[2]{0};
float weatherInterpolation; float weatherInterpolation{1.f};
uint8_t dateTime[24]; // Unused uint8_t dateTime[24]{0}; // Unused
uint32_t weatherType; uint32_t weatherType{0};
float cameraData; float cameraData{0};
float cameraData2; float cameraData2{0};
BasicState(); BasicState() = default;
}; };
/** Block 16 player info */ /** Block 16 player info */
struct PlayerInfo { struct PlayerInfo {
int32_t money; int32_t money{0};
uint8_t unknown1; uint8_t unknown1{0};
uint32_t unknown2; uint32_t unknown2{0};
uint16_t unknown3; uint16_t unknown3{0};
float unknown4; float unknown4{0.f};
int32_t displayedMoney; int32_t displayedMoney{0};
uint32_t hiddenPackagesCollected; uint32_t hiddenPackagesCollected{0};
uint32_t hiddenPackageCount; uint32_t hiddenPackageCount{0};
uint8_t neverTired; uint8_t neverTired{0};
uint8_t fastReload; uint8_t fastReload{0};
uint8_t thaneOfLibertyCity; uint8_t thaneOfLibertyCity{0};
uint8_t singlePayerHealthcare; uint8_t singlePayerHealthcare{0};
uint8_t unknown5[70]; uint8_t unknown5[70]{0};
PlayerInfo(); PlayerInfo() = default;
}; };
/** Block 17 */ /** Block 17 */
struct GameStats { struct GameStats {
uint32_t playerKills; uint32_t playerKills{0};
uint32_t otherKills; uint32_t otherKills{0};
uint32_t carsExploded; uint32_t carsExploded{0};
uint32_t shotsHit; uint32_t shotsHit{0};
uint32_t pedTypesKilled[23]; uint32_t pedTypesKilled[23]{};
uint32_t helicoptersDestroyed; uint32_t helicoptersDestroyed{0};
uint32_t playerProgress; uint32_t playerProgress{0};
uint32_t explosiveKgsUsed; uint32_t explosiveKgsUsed{0};
uint32_t bulletsFired; uint32_t bulletsFired{0};
uint32_t bulletsHit; uint32_t bulletsHit{0};
uint32_t carsCrushed; uint32_t carsCrushed{0};
uint32_t headshots; uint32_t headshots{0};
uint32_t timesBusted; uint32_t timesBusted{0};
uint32_t timesHospital; uint32_t timesHospital{0};
uint32_t daysPassed; uint32_t daysPassed{0};
uint32_t mmRainfall; uint32_t mmRainfall{0};
uint32_t insaneJumpMaxDistance; uint32_t insaneJumpMaxDistance{0};
uint32_t insaneJumpMaxHeight; uint32_t insaneJumpMaxHeight{0};
int32_t insaneJumpMaxFlips; int32_t insaneJumpMaxFlips{0};
int32_t insaneJumpMaxRotation; int32_t insaneJumpMaxRotation{0};
/* /*
* 0 none completed * 0 none completed
* 1 insane stunt * 1 insane stunt
@ -126,39 +126,39 @@ struct GameStats {
* 7 quadruple * 7 quadruple
* 8 perfect quadruple * 8 perfect quadruple
*/ */
int32_t bestStunt; int32_t bestStunt{0};
uint32_t uniqueStuntsFound; uint32_t uniqueStuntsFound{0};
uint32_t uniqueStuntsTotal; uint32_t uniqueStuntsTotal{0};
uint32_t missionAttempts; uint32_t missionAttempts{0};
uint32_t missionsPassed; uint32_t missionsPassed{0};
uint32_t passengersDroppedOff; uint32_t passengersDroppedOff{0};
uint32_t taxiRevenue; uint32_t taxiRevenue{0};
uint32_t portlandPassed; uint32_t portlandPassed{0};
uint32_t stauntonPassed; uint32_t stauntonPassed{0};
uint32_t shoresidePassed; uint32_t shoresidePassed{0};
int32_t bestTurismoTime; int32_t bestTurismoTime{0};
float distanceWalked; float distanceWalked{0};
float distanceDriven; float distanceDriven{0};
int32_t patriotPlaygroundTime; int32_t patriotPlaygroundTime{0};
int32_t aRideInTheParkTime; int32_t aRideInTheParkTime{0};
int32_t grippedTime; int32_t grippedTime{0};
int32_t multistoryMayhemTime; int32_t multistoryMayhemTime{0};
uint32_t peopleSaved; uint32_t peopleSaved{0};
uint32_t criminalsKilled; uint32_t criminalsKilled{0};
int32_t highestParamedicLevel; int32_t highestParamedicLevel{0};
uint32_t firesExtinguished; uint32_t firesExtinguished{0};
int32_t longestDodoFlight; int32_t longestDodoFlight{0};
int32_t bombDefusalTime; int32_t bombDefusalTime{0};
uint32_t rampagesPassed; uint32_t rampagesPassed{0};
uint32_t totalRampages; uint32_t totalRampages{0};
uint32_t totalMissions; uint32_t totalMissions{0};
uint32_t fastestTime[16]; // not used uint32_t fastestTime[16]{0}; // not used
int32_t highestScore[16]; int32_t highestScore[16]{};
uint32_t peopleKilledSinceCheckpoint; // ? uint32_t peopleKilledSinceCheckpoint{0}; // ?
uint32_t peopleKilledSinceLastBustedOrWasted; uint32_t peopleKilledSinceLastBustedOrWasted{0};
char lastMissionGXT[8]; char lastMissionGXT[8]{""};
GameStats(); GameStats() = default;
}; };
struct TextDisplayData { struct TextDisplayData {
@ -255,7 +255,7 @@ public:
/** /**
Basic Game State Basic Game State
*/ */
BasicState basic; BasicState basic{};
/** /**
Player stats Player stats
@ -270,27 +270,28 @@ public:
/** /**
* Second since game was started * Second since game was started
*/ */
float gameTime; float gameTime = 0.f;
unsigned int currentProgress; unsigned int currentProgress = 0;
unsigned int maxProgress; unsigned int maxProgress = 1;
unsigned int maxWantedLevel; unsigned int maxWantedLevel = 0;
GameObjectID playerObject; GameObjectID playerObject = 0;
/** /**
* @brief Stores a pointer to script global that stores the on-mission * @brief Stores a pointer to script global that stores the on-mission
* state. * state.
*/ */
ScriptInt* scriptOnMissionFlag; ScriptInt* scriptOnMissionFlag = nullptr;
/** Objects created by the current mission */ /** Objects created by the current mission */
std::vector<GameObject*> missionObjects; std::vector<GameObject*> missionObjects;
bool overrideNextRestart; bool overrideNextRestart = false;
glm::vec4 nextRestartLocation; glm::vec4 nextRestartLocation{};
std::vector<glm::vec4> hospitalRestarts, policeRestarts; std::vector<glm::vec4> hospitalRestarts, policeRestarts;
int hospitalIslandOverride, policeIslandOverride; int hospitalIslandOverride = 0;
int policeIslandOverride = 0;
void addHospitalRestart(const glm::vec4 location); void addHospitalRestart(const glm::vec4 location);
void addPoliceRestart(const glm::vec4 location); void addPoliceRestart(const glm::vec4 location);
@ -302,11 +303,11 @@ public:
const glm::vec4 getClosestRestart(RestartType type, const glm::vec4 getClosestRestart(RestartType type,
const glm::vec3 playerPosition) const; const glm::vec3 playerPosition) const;
bool fadeIn; bool fadeIn = true;
float fadeStart; float fadeStart = 0.f;
float fadeTime; float fadeTime = 0.f;
bool fadeSound; bool fadeSound = false;
glm::u16vec3 fadeColour; glm::u16vec3 fadeColour{0.f, 0.f, 0.f};
// @todo fadeOut should be replaced with enum? // @todo fadeOut should be replaced with enum?
void fade(float time, bool f); void fade(float time, bool f);
@ -315,13 +316,13 @@ public:
std::string currentSplash; std::string currentSplash;
bool skipCutscene; bool skipCutscene = false;
bool isIntroPlaying; bool isIntroPlaying = false;
CutsceneData* currentCutscene; CutsceneData* currentCutscene = nullptr;
float cutsceneStartTime; float cutsceneStartTime{-1.f};
/** Flag for rendering cutscene letterbox */ /** Flag for rendering cutscene letterbox */
bool isCinematic; bool isCinematic = false;
HudFlash hudFlash; HudFlash hudFlash{HudFlash::Disabled};
std::string lastMissionName; std::string lastMissionName;
@ -347,12 +348,12 @@ public:
int bigNVeinyPickupsCollected = 0; int bigNVeinyPickupsCollected = 0;
/** The camera near value currently set by the script */ /** The camera near value currently set by the script */
float cameraNear; float cameraNear{0.1f};
bool cameraFixed; bool cameraFixed = false;
glm::vec3 cameraPosition; glm::vec3 cameraPosition{};
glm::quat cameraRotation; glm::quat cameraRotation{1.0f, 0.0f, 0.0f, 0.0f};
GameObjectID cameraTarget; GameObjectID cameraTarget = 0;
std::vector<VehicleGenerator> vehicleGenerators; std::vector<VehicleGenerator> vehicleGenerators;
@ -361,28 +362,28 @@ public:
/** /**
* Bitsets for the car import / export list mission * Bitsets for the car import / export list mission
*/ */
std::bitset<32> importExportPortland; std::bitset<32> importExportPortland = 0;
std::bitset<32> importExportShoreside; std::bitset<32> importExportShoreside = 0;
std::bitset<32> importExportUnused; std::bitset<32> importExportUnused = 0;
/** /**
* State of the game input for the last 2 frames * State of the game input for the last 2 frames
*/ */
GameInputState input[2]; GameInputState input[2]{};
/** /**
* World to use for this state, this isn't saved, just used at runtime * World to use for this state, this isn't saved, just used at runtime
*/ */
GameWorld* world; GameWorld* world = nullptr;
/** /**
* Script Machine associated with this state if it exists. * Script Machine associated with this state if it exists.
*/ */
ScriptMachine* script; ScriptMachine* script = nullptr;
std::array<ScriptContactData, 16> scriptContacts = {}; std::array<ScriptContactData, 16> scriptContacts = {};
GameState(); GameState() = default;
/** /**
* Adds a blip to the state, returning it's ID. * Adds a blip to the state, returning it's ID.

View File

@ -52,7 +52,7 @@ public:
}; };
GameWorld::GameWorld(Logger* log, GameData* dat) GameWorld::GameWorld(Logger* log, GameData* dat)
: logger(log), data(dat), randomEngine(rand()), paused(false) { : logger(log), data(dat) {
data->engine = this; data->engine = this;
collisionConfig = std::make_unique<btDefaultCollisionConfiguration>(); collisionConfig = std::make_unique<btDefaultCollisionConfiguration>();

View File

@ -301,7 +301,7 @@ public:
/** /**
* Randomness Engine * Randomness Engine
*/ */
std::default_random_engine randomEngine; std::default_random_engine randomEngine{std::random_device{}()};
/** /**
* Bullet * Bullet
@ -385,7 +385,7 @@ private:
/** /**
* Flag for pausing the simulation * Flag for pausing the simulation
*/ */
bool paused; bool paused = false;
/** /**
* Private data * Private data

View File

@ -30,18 +30,6 @@ CharacterObject::CharacterObject(GameWorld* engine, const glm::vec3& pos,
const glm::quat& rot, BaseModelInfo* modelinfo, const glm::quat& rot, BaseModelInfo* modelinfo,
CharacterController* controller) CharacterController* controller)
: GameObject(engine, pos, rot, modelinfo) : GameObject(engine, pos, rot, modelinfo)
, currentState({})
, currentVehicle(nullptr)
, currentSeat(0)
, m_look(0.f, glm::half_pi<float>())
, running(false)
, jumped(false)
, jumpSpeed(DefaultJumpSpeed)
, motionBlockedByActivity(false)
, cycle_(AnimCycle::Idle)
, physCharacter(nullptr)
, physObject(nullptr)
, physShape(nullptr)
, controller(controller) { , controller(controller) {
auto info = getModelInfo<PedModelInfo>(); auto info = getModelInfo<PedModelInfo>();
setClump(ClumpPtr(info->getModel()->clone())); setClump(ClumpPtr(info->getModel()->clone()));

View File

@ -55,34 +55,34 @@ class GameWorld;
*/ */
class CharacterObject : public GameObject, public ClumpObject { class CharacterObject : public GameObject, public ClumpObject {
private: private:
CharacterState currentState; CharacterState currentState{};
VehicleObject* currentVehicle; VehicleObject* currentVehicle = nullptr;
size_t currentSeat; size_t currentSeat{0};
void createActor(const glm::vec2& size = glm::vec2(0.45f, 1.2f)); void createActor(const glm::vec2& size = glm::vec2(0.45f, 1.2f));
void destroyActor(); void destroyActor();
glm::vec3 movement{}; glm::vec3 movement{};
glm::vec2 m_look{}; glm::vec2 m_look{0.f, glm::half_pi<float>()};
bool running; bool running = false;
bool jumped; bool jumped = false;
float jumpSpeed; float jumpSpeed = DefaultJumpSpeed;
bool motionBlockedByActivity; bool motionBlockedByActivity = false;
glm::vec3 updateMovementAnimation(float dt); glm::vec3 updateMovementAnimation(float dt);
glm::vec3 currenteMovementStep{}; glm::vec3 currenteMovementStep{};
AnimCycle cycle_; AnimCycle cycle_ = AnimCycle::Idle;
public: public:
static const float DefaultJumpSpeed; static const float DefaultJumpSpeed;
btKinematicCharacterController* physCharacter; btKinematicCharacterController* physCharacter = nullptr;
btPairCachingGhostObject* physObject; btPairCachingGhostObject* physObject = nullptr;
btCapsuleShapeZ* physShape; btCapsuleShapeZ* physShape = nullptr;
CharacterController* controller; CharacterController* controller;

View File

@ -8,9 +8,7 @@
CutsceneObject::CutsceneObject(GameWorld *engine, const glm::vec3 &pos, CutsceneObject::CutsceneObject(GameWorld *engine, const glm::vec3 &pos,
const glm::quat &rot, const ClumpPtr& model, const glm::quat &rot, const ClumpPtr& model,
BaseModelInfo *modelinfo) BaseModelInfo *modelinfo)
: GameObject(engine, pos, rot, modelinfo) : GameObject(engine, pos, rot, modelinfo) {
, _parent(nullptr)
, _bone(nullptr) {
if (model) { if (model) {
setModel(model); setModel(model);
} }
@ -21,8 +19,6 @@ CutsceneObject::CutsceneObject(GameWorld *engine, const glm::vec3 &pos,
animator = new Animator(getClump()); animator = new Animator(getClump());
} }
CutsceneObject::~CutsceneObject() = default;
void CutsceneObject::tick(float dt) { void CutsceneObject::tick(float dt) {
animator->tick(dt); animator->tick(dt);
} }

View File

@ -14,14 +14,14 @@ class ModelFrame;
* @brief Object type used for cutscene animations. * @brief Object type used for cutscene animations.
*/ */
class CutsceneObject : public GameObject, public ClumpObject { class CutsceneObject : public GameObject, public ClumpObject {
GameObject* _parent; GameObject* _parent = nullptr;
ModelFrame* _bone; ModelFrame* _bone = nullptr;
public: public:
CutsceneObject(GameWorld* engine, const glm::vec3& pos, CutsceneObject(GameWorld* engine, const glm::vec3& pos,
const glm::quat& rot, const ClumpPtr& model, const glm::quat& rot, const ClumpPtr& model,
BaseModelInfo* modelinfo); BaseModelInfo* modelinfo);
~CutsceneObject() override; ~CutsceneObject() override = default;
Type type() const override { Type type() const override {
return Cutscene; return Cutscene;

View File

@ -25,14 +25,14 @@ class GameWorld;
class GameObject { class GameObject {
glm::vec3 _lastPosition; glm::vec3 _lastPosition;
glm::quat _lastRotation; glm::quat _lastRotation;
GameObjectID objectID; GameObjectID objectID = 0;
BaseModelInfo* modelinfo_; BaseModelInfo* modelinfo_;
/** /**
* Model used for rendering * Model used for rendering
*/ */
ClumpPtr model_; ClumpPtr model_ = nullptr;
protected: protected:
void changeModelInfo(BaseModelInfo* next) { void changeModelInfo(BaseModelInfo* next) {
@ -43,37 +43,30 @@ public:
glm::vec3 position; glm::vec3 position;
glm::quat rotation; glm::quat rotation;
GameWorld* engine; GameWorld* engine = nullptr;
Animator* animator; /// Object's animator. Animator* animator = nullptr; /// Object's animator.
bool inWater; bool inWater = false;
/** /**
* @brief stores the height of water at the last tick * @brief stores the height of water at the last tick
*/ */
float _lastHeight; float _lastHeight = std::numeric_limits<float>::max();
/** /**
* Should object be rendered? * Should object be rendered?
*/ */
bool visible; bool visible = true;
GameObject(GameWorld* engine, const glm::vec3& pos, const glm::quat& rot, GameObject(GameWorld* engine, const glm::vec3& pos, const glm::quat& rot,
BaseModelInfo* modelinfo) BaseModelInfo* modelinfo)
: _lastPosition(pos) : _lastPosition(pos)
, _lastRotation(rot) , _lastRotation(rot)
, objectID(0)
, modelinfo_(modelinfo) , modelinfo_(modelinfo)
, model_(nullptr)
, position(pos) , position(pos)
, rotation(rot) , rotation(rot)
, engine(engine) , engine(engine) {
, animator(nullptr)
, inWater(false)
, _lastHeight(std::numeric_limits<float>::max())
, visible(true)
, lifetime(GameObject::UnknownLifetime) {
if (modelinfo_) { if (modelinfo_) {
modelinfo_->addReference(); modelinfo_->addReference();
} }
@ -241,7 +234,7 @@ public:
} }
private: private:
ObjectLifetime lifetime; ObjectLifetime lifetime = GameObject::UnknownLifetime;
}; };
class ClumpObject { class ClumpObject {

View File

@ -18,13 +18,7 @@ InstanceObject::InstanceObject(GameWorld* engine, const glm::vec3& pos,
BaseModelInfo* modelinfo, BaseModelInfo* modelinfo,
const std::shared_ptr<DynamicObjectData>& dyn) const std::shared_ptr<DynamicObjectData>& dyn)
: GameObject(engine, pos, rot, modelinfo) : GameObject(engine, pos, rot, modelinfo)
, health(100.f)
, visible(true)
, floating(false)
, usePhysics(false)
, changeAtomic(-1)
, scale(scale) , scale(scale)
, body(nullptr)
, dynamics(dyn) { , dynamics(dyn) {
if (modelinfo) { if (modelinfo) {
changeModel(modelinfo); changeModel(modelinfo);

View File

@ -17,12 +17,12 @@ class GameWorld;
* A simple object instance * A simple object instance
*/ */
class InstanceObject : public GameObject { class InstanceObject : public GameObject {
float health; float health = 100.f;
bool visible; bool visible =true;
bool floating; bool floating = false;
bool static_; bool static_ = false;
bool usePhysics; bool usePhysics = false;
int changeAtomic; int changeAtomic = -1;
/** /**
* The Atomic instance for this object * The Atomic instance for this object

View File

@ -92,10 +92,6 @@ PickupObject::BehaviourFlags PickupObject::defaultBehaviourFlags(
PickupObject::PickupObject(GameWorld* world, const glm::vec3& position, PickupObject::PickupObject(GameWorld* world, const glm::vec3& position,
BaseModelInfo* modelinfo, PickupType type) BaseModelInfo* modelinfo, PickupType type)
: GameObject(world, position, glm::quat{1.0f, 0.0f, 0.0f, 0.0f}, modelinfo) : GameObject(world, position, glm::quat{1.0f, 0.0f, 0.0f, 0.0f}, modelinfo)
, m_ghost(nullptr)
, m_shape(nullptr)
, m_enabled(false)
, m_collected(false)
, m_type(type) { , m_type(type) {
btTransform tf; btTransform tf;
tf.setIdentity(); tf.setIdentity();

View File

@ -114,18 +114,18 @@ public:
} }
private: private:
btPairCachingGhostObject* m_ghost; btPairCachingGhostObject* m_ghost = nullptr;
btSphereShape* m_shape; btSphereShape* m_shape = nullptr;
bool m_enabled; bool m_enabled = false;
float m_enableTimer; float m_enableTimer = 0.f;
bool m_collected; bool m_collected = false;
VisualFX* m_corona; VisualFX* m_corona = nullptr;
short m_colourId; short m_colourId = 0;
bool respawn; bool respawn = false;
float respawnTime; float respawnTime{};
BehaviourFlags behaviourFlags; BehaviourFlags behaviourFlags{};
PickupType m_type; PickupType m_type{};
}; };
/** /**

View File

@ -114,10 +114,7 @@ void ProjectileObject::cleanup() {
ProjectileObject::ProjectileObject(GameWorld* world, const glm::vec3& position, ProjectileObject::ProjectileObject(GameWorld* world, const glm::vec3& position,
const ProjectileObject::ProjectileInfo& info) const ProjectileObject::ProjectileInfo& info)
: GameObject(world, position, glm::quat{1.0f,0.0f,0.0f,0.0f}, nullptr) : GameObject(world, position, glm::quat{1.0f,0.0f,0.0f,0.0f}, nullptr)
, _info(info) , _info(info) {
, _body(nullptr)
, _ghostBody(nullptr)
, _exploded(false) {
_shape = new btSphereShape(0.45f); _shape = new btSphereShape(0.45f);
btVector3 inertia(0.f, 0.f, 0.f); btVector3 inertia(0.f, 0.f, 0.f);
_shape->calculateLocalInertia(1.f, inertia); _shape->calculateLocalInertia(1.f, inertia);

View File

@ -38,12 +38,12 @@ private:
btSphereShape* _shape; btSphereShape* _shape;
btRigidBody* _body; btRigidBody* _body = nullptr;
/** Used for RPGs and Molotov collision detection */ /** Used for RPGs and Molotov collision detection */
btPairCachingGhostObject* _ghostBody; btPairCachingGhostObject* _ghostBody = nullptr;
bool _exploded; bool _exploded = false;
void checkPhysicsContact(); void checkPhysicsContact();
void explode(); void explode();

View File

@ -92,18 +92,10 @@ VehicleObject::VehicleObject(GameWorld* engine, const glm::vec3& pos,
VehicleInfoHandle info, const glm::u8vec3& prim, VehicleInfoHandle info, const glm::u8vec3& prim,
const glm::u8vec3& sec) const glm::u8vec3& sec)
: GameObject(engine, pos, rot, modelinfo) : GameObject(engine, pos, rot, modelinfo)
, steerAngle(0.f)
, throttle(0.f)
, brake(0.f)
, handbrake(true)
, health(1000.f)
, info(info) , info(info)
, colourPrimary(prim) , colourPrimary(prim)
, colourSecondary(sec) , colourSecondary(sec)
, mHasSpecial(true) , collision(new CollisionInstance) {
, collision(new CollisionInstance)
, physRaycaster(nullptr)
, physVehicle(nullptr) {
collision->createPhysicsBody(this, modelinfo->getCollision(), nullptr, collision->createPhysicsBody(this, modelinfo->getCollision(), nullptr,
&info->handling); &info->handling);
collision->getBulletBody()->forceActivationState(DISABLE_DEACTIVATION); collision->getBulletBody()->forceActivationState(DISABLE_DEACTIVATION);

View File

@ -32,29 +32,29 @@ class btHingeConstraint;
*/ */
class VehicleObject : public GameObject, public ClumpObject { class VehicleObject : public GameObject, public ClumpObject {
private: private:
float steerAngle; float steerAngle{0.f};
float throttle; float throttle{0.f};
float brake; float brake{0.f};
bool handbrake; bool handbrake = true;
Atomic* chassishigh_ = nullptr; Atomic* chassishigh_ = nullptr;
Atomic* chassislow_ = nullptr; Atomic* chassislow_ = nullptr;
std::array<Atomic*, 6> extras_; std::array<Atomic*, 6> extras_{};
public: public:
float health; float health{1000.f};
VehicleInfoHandle info; VehicleInfoHandle info{};
glm::u8vec3 colourPrimary; glm::u8vec3 colourPrimary{};
glm::u8vec3 colourSecondary; glm::u8vec3 colourSecondary{};
bool mHasSpecial; bool mHasSpecial = true;
std::map<size_t, GameObject*> seatOccupants; std::map<size_t, GameObject*> seatOccupants;
std::unique_ptr<CollisionInstance> collision; std::unique_ptr<CollisionInstance> collision;
btVehicleRaycaster* physRaycaster; btVehicleRaycaster* physRaycaster = nullptr;
btRaycastVehicle* physVehicle; btRaycastVehicle* physVehicle = nullptr;
struct Part { struct Part {
ModelFrame* dummy; ModelFrame* dummy;

View File

@ -13,7 +13,7 @@
#include "render/GameRenderer.hpp" #include "render/GameRenderer.hpp"
DebugDraw::DebugDraw() : shaderProgram(nullptr) { DebugDraw::DebugDraw() {
lineBuff = new GeometryBuffer; lineBuff = new GeometryBuffer;
dbuff = new DrawBuffer; dbuff = new DrawBuffer;
dbuff->setFaceType(GL_LINES); dbuff->setFaceType(GL_LINES);

View File

@ -47,7 +47,7 @@ protected:
DrawBuffer *dbuff; DrawBuffer *dbuff;
//Ownership is handled by worldProg in renderer //Ownership is handled by worldProg in renderer
Renderer::ShaderProgram *shaderProgram; Renderer::ShaderProgram *shaderProgram = nullptr;
GLuint texture; GLuint texture;
}; };

View File

@ -56,10 +56,6 @@ struct ParticleVert {
GameRenderer::GameRenderer(Logger* log, GameData* _data) GameRenderer::GameRenderer(Logger* log, GameData* _data)
: data(_data) : data(_data)
, logger(log) , logger(log)
, renderer(std::make_shared<OpenGLRenderer>())
, _renderAlpha(0.f)
, _renderWorld(nullptr)
, cullOverride(false)
, map(renderer, _data) , map(renderer, _data)
, water(this) , water(this)
, text(this) { , text(this) {

View File

@ -37,11 +37,11 @@ class GameRenderer {
Logger* logger; Logger* logger;
/** The low-level drawing interface to use */ /** The low-level drawing interface to use */
std::shared_ptr<Renderer> renderer; std::shared_ptr<Renderer> renderer = std::make_shared<OpenGLRenderer>();
// Temporary variables used during rendering // Temporary variables used during rendering
float _renderAlpha; float _renderAlpha{0.f};
GameWorld* _renderWorld; GameWorld* _renderWorld = nullptr;
/** Internal non-descript VAOs */ /** Internal non-descript VAOs */
GLuint vao, debugVAO; GLuint vao, debugVAO;
@ -49,7 +49,7 @@ class GameRenderer {
/** Camera values passed to renderWorld() */ /** Camera values passed to renderWorld() */
ViewCamera _camera; ViewCamera _camera;
ViewCamera cullingCamera; ViewCamera cullingCamera;
bool cullOverride; bool cullOverride = false;
/** Number of culling events */ /** Number of culling events */
size_t culled; size_t culled;

View File

@ -36,8 +36,7 @@ class ObjectRenderer {
public: public:
ObjectRenderer(GameWorld* world, const ViewCamera& camera, ObjectRenderer(GameWorld* world, const ViewCamera& camera,
float renderAlpha, GLuint errorTexture) float renderAlpha, GLuint errorTexture)
: culled(0) : m_world(world)
, m_world(world)
, m_camera(camera) , m_camera(camera)
, m_renderAlpha(renderAlpha) , m_renderAlpha(renderAlpha)
, m_errorTexture(errorTexture) { , m_errorTexture(errorTexture) {
@ -48,7 +47,7 @@ public:
* *
* Exports rendering instructions for an object * Exports rendering instructions for an object
*/ */
size_t culled; size_t culled = 0;
void buildRenderList(GameObject* object, RenderList& outList); void buildRenderList(GameObject* object, RenderList& outList);
void renderGeometry(Geometry* geom, const glm::mat4& modelMatrix, void renderGeometry(Geometry* geom, const glm::mat4& modelMatrix,

View File

@ -77,32 +77,26 @@ public:
*/ */
struct DrawParameters { struct DrawParameters {
/// Number of indicies /// Number of indicies
size_t count; size_t count{};
/// Start index. /// Start index.
unsigned int start; unsigned int start{};
/// Textures to use /// Textures to use
Textures textures; Textures textures{};
/// Blending mode /// Blending mode
BlendMode blendMode; BlendMode blendMode = BlendMode::BLEND_NONE;
// Depth writing state // Depth writing state
bool depthWrite; bool depthWrite = true;
/// Material /// Material
glm::u8vec4 colour{}; glm::u8vec4 colour{};
/// Material /// Material
float ambient; float ambient{1.f};
/// Material /// Material
float diffuse; float diffuse{1.f};
/// Material /// Material
float visibility; float visibility{1.f};
// Default state -- should be moved to materials // Default state -- should be moved to materials
DrawParameters() DrawParameters() = default;
: blendMode(BlendMode::BLEND_NONE)
, depthWrite(true)
, ambient(1.f)
, diffuse(1.f)
, visibility(1.f) {
}
}; };
/** /**
@ -129,9 +123,9 @@ public:
struct ObjectUniformData { struct ObjectUniformData {
glm::mat4 model{1.0f}; glm::mat4 model{1.0f};
glm::vec4 colour{1.0f}; glm::vec4 colour{1.0f};
float diffuse; float diffuse{};
float ambient; float ambient{};
float visibility; float visibility{};
}; };
struct SceneUniformData { struct SceneUniformData {
@ -141,8 +135,8 @@ public:
glm::vec4 dynamic{}; glm::vec4 dynamic{};
glm::vec4 fogColour{}; glm::vec4 fogColour{};
glm::vec4 campos{}; glm::vec4 campos{};
float fogStart; float fogStart{};
float fogEnd; float fogEnd{};
}; };
class ShaderProgram { class ShaderProgram {
@ -220,13 +214,13 @@ public:
* USING(RENDER_PROFILER) * USING(RENDER_PROFILER)
*/ */
struct ProfileInfo { struct ProfileInfo {
GLuint64 timerStart; GLuint64 timerStart{};
GLuint64 duration; GLuint64 duration{};
unsigned int primitives; unsigned int primitives{};
unsigned int draws; unsigned int draws{};
unsigned int textures; unsigned int textures{};
unsigned int buffers; unsigned int buffers{};
unsigned int uploads; unsigned int uploads{};
}; };
/** /**
@ -245,10 +239,10 @@ private:
glm::mat4 projection2D{1.0f}; glm::mat4 projection2D{1.0f};
protected: protected:
int drawCounter; int drawCounter{};
int textureCounter; int textureCounter{};
int bufferCounter; int bufferCounter{};
SceneUniformData lastSceneData; SceneUniformData lastSceneData{};
}; };
class OpenGLRenderer : public Renderer { class OpenGLRenderer : public Renderer {
@ -329,12 +323,12 @@ public:
private: private:
struct Buffer { struct Buffer {
GLuint name; GLuint name{};
GLuint currentEntry; GLuint currentEntry{};
GLuint entryCount; GLuint entryCount{};
GLuint entrySize; GLuint entrySize{};
GLsizei bufferSize; GLsizei bufferSize{};
}; };
void useDrawBuffer(DrawBuffer* dbuff); void useDrawBuffer(DrawBuffer* dbuff);

View File

@ -82,10 +82,6 @@ struct TextVertex {
} }
}; };
TextRenderer::TextInfo::TextInfo()
: font(0), size(1.f), baseColour({1.f, 1.f, 1.f}), align(Left), wrapX(0) {
}
TextRenderer::TextRenderer(GameRenderer* renderer) : renderer(renderer) { TextRenderer::TextRenderer(GameRenderer* renderer) : renderer(renderer) {
textShader = renderer->getRenderer()->createShader(TextVertexShader, textShader = renderer->getRenderer()->createShader(TextVertexShader,
TextFragmentShader); TextFragmentShader);
@ -131,8 +127,6 @@ TextRenderer::TextRenderer(GameRenderer* renderer) : renderer(renderer) {
} }
} }
TextRenderer::~TextRenderer() = default;
void TextRenderer::setFontTexture(int index, const std::string& texture) { void TextRenderer::setFontTexture(int index, const std::string& texture) {
if (index < GAME_FONTS) { if (index < GAME_FONTS) {
fonts[index] = texture; fonts[index] = texture;

View File

@ -33,23 +33,23 @@ public:
enum TextAlignemnt { Left = 0, Right = 1, Center = 2 }; enum TextAlignemnt { Left = 0, Right = 1, Center = 2 };
/// Font index @see TextRenderer::setFontTexture /// Font index @see TextRenderer::setFontTexture
int font; int font{0};
/// Message to be displayed (including markup) /// Message to be displayed (including markup)
GameString text; GameString text;
/// On screen position /// On screen position
glm::vec2 screenPosition{}; glm::vec2 screenPosition{};
/// font size /// font size
float size; float size{1.f};
/// Base colour /// Base colour
glm::u8vec3 baseColour{}; glm::u8vec3 baseColour{1.f, 1.f, 1.f};
/// Background colour /// Background colour
glm::u8vec4 backgroundColour{}; glm::u8vec4 backgroundColour{};
/// Horizontal Alignment /// Horizontal Alignment
TextAlignemnt align; TextAlignemnt align = Left;
/// Wrap width /// Wrap width
int wrapX; int wrapX{0};
TextInfo(); TextInfo() = default;
}; };
/** /**
@ -60,7 +60,7 @@ public:
}; };
TextRenderer(GameRenderer* renderer); TextRenderer(GameRenderer* renderer);
~TextRenderer(); ~TextRenderer() = default;
void setFontTexture(int index, const std::string& font); void setFontTexture(int index, const std::string& font);

View File

@ -16,12 +16,12 @@ public:
float distance{}; float distance{};
}; };
float near; float near{};
float far; float far{};
float fov; float fov{};
float aspectRatio; float aspectRatio{};
ViewPlane planes[6]; ViewPlane planes[6]{};
ViewFrustum(float near, float far, float fov, float aspect) ViewFrustum(float near, float far, float fov, float aspect)
: near(near), far(far), fov(fov), aspectRatio(aspect) { : near(near), far(far), fov(fov), aspectRatio(aspect) {

View File

@ -13,7 +13,7 @@
#include "render/GameShaders.hpp" #include "render/GameShaders.hpp"
#include "render/OpenGLRenderer.hpp" #include "render/OpenGLRenderer.hpp"
WaterRenderer::WaterRenderer(GameRenderer* renderer) : waterProg(nullptr) { WaterRenderer::WaterRenderer(GameRenderer* renderer) {
maskDraw.setFaceType(GL_TRIANGLES); maskDraw.setFaceType(GL_TRIANGLES);
gridDraw.setFaceType(GL_TRIANGLES); gridDraw.setFaceType(GL_TRIANGLES);
@ -55,8 +55,6 @@ WaterRenderer::WaterRenderer(GameRenderer* renderer) : waterProg(nullptr) {
gridDraw.addGeometry(&gridGeom); gridDraw.addGeometry(&gridGeom);
} }
WaterRenderer::~WaterRenderer() = default;
void WaterRenderer::setWaterTable(const float* waterHeights, const unsigned int nHeights, void WaterRenderer::setWaterTable(const float* waterHeights, const unsigned int nHeights,
const uint8_t* tiles, const unsigned int nTiles) { const uint8_t* tiles, const unsigned int nTiles) {
// Determine the dimensions of the input tiles // Determine the dimensions of the input tiles

View File

@ -20,7 +20,7 @@ class GameWorld;
class WaterRenderer { class WaterRenderer {
public: public:
WaterRenderer(GameRenderer* renderer); WaterRenderer(GameRenderer* renderer);
~WaterRenderer(); ~WaterRenderer() = default;
/** /**
* Creates the required data for rendering the water. Accepts * Creates the required data for rendering the water. Accepts
@ -41,19 +41,19 @@ public:
void render(GameRenderer* renderer, GameWorld* world); void render(GameRenderer* renderer, GameWorld* world);
private: private:
std::unique_ptr<Renderer::ShaderProgram> waterProg; std::unique_ptr<Renderer::ShaderProgram> waterProg = nullptr;
std::unique_ptr<Renderer::ShaderProgram> maskProg; std::unique_ptr<Renderer::ShaderProgram> maskProg = nullptr;
DrawBuffer maskDraw; DrawBuffer maskDraw{};
GeometryBuffer maskGeom; GeometryBuffer maskGeom{};
std::vector<int> maskSizes; std::vector<int> maskSizes;
DrawBuffer gridDraw; DrawBuffer gridDraw{};
GeometryBuffer gridGeom; GeometryBuffer gridGeom{};
GLuint fbOutput; GLuint fbOutput{};
GLuint dataTexture; GLuint dataTexture{};
}; };
#endif #endif

View File

@ -15,12 +15,7 @@ class SCMFile {
public: public:
enum SCMTarget { NoTarget = 0, GTAIII = 0xC6, GTAVC = 0x6D, GTASA = 0x73 }; enum SCMTarget { NoTarget = 0, GTAIII = 0xC6, GTAVC = 0x6D, GTASA = 0x73 };
SCMFile() SCMFile() = default;
: _data(nullptr)
, _target(NoTarget)
, mainSize(0)
, missionLargestSize(0) {
}
~SCMFile() { ~SCMFile() {
delete[] _data; delete[] _data;
@ -70,21 +65,21 @@ public:
} }
private: private:
SCMByte* _data; SCMByte* _data = nullptr;
SCMTarget _target; SCMTarget _target{NoTarget};
std::vector<std::string> models; std::vector<std::string> models;
std::vector<unsigned int> missionOffsets; std::vector<unsigned int> missionOffsets;
uint32_t mainSize; uint32_t mainSize{0};
uint32_t missionLargestSize; uint32_t missionLargestSize{0};
uint32_t globalSectionOffset; uint32_t globalSectionOffset{0};
uint32_t modelSectionOffset; uint32_t modelSectionOffset{0};
uint32_t missionSectionOffset; uint32_t missionSectionOffset{0};
uint32_t codeSectionOffset; uint32_t codeSectionOffset{0};
}; };
#endif #endif

View File

@ -34,8 +34,8 @@ struct SCMException {
}; };
struct IllegalInstruction : SCMException { struct IllegalInstruction : SCMException {
SCMOpcode opcode; SCMOpcode opcode{};
unsigned int offset; unsigned int offset{0};
std::string thread; std::string thread;
template <class String> template <class String>
@ -57,8 +57,8 @@ struct IllegalInstruction : SCMException {
}; };
struct UnknownType : SCMException { struct UnknownType : SCMException {
SCMByte type; SCMByte type{};
unsigned int offset; unsigned int offset{0};
std::string thread; std::string thread;
template <class String> template <class String>
@ -184,9 +184,9 @@ public:
void execute(float dt); void execute(float dt);
private: private:
SCMFile* file; SCMFile* file = nullptr;
ScriptModule* module; ScriptModule* module = nullptr;
GameState* state; GameState* state = nullptr;
bool debugFlag; bool debugFlag;
std::list<SCMThread> _activeThreads; std::list<SCMThread> _activeThreads;

View File

@ -57,11 +57,11 @@ struct ScriptObjectType {
/** /**
* @brief m_id VM Memory containing the object handler * @brief m_id VM Memory containing the object handler
*/ */
ScriptInt* m_id; ScriptInt* m_id = nullptr;
/** /**
* @brief m_object Real object instance * @brief m_object Real object instance
*/ */
T* m_object; T* m_object = nullptr;
ScriptObjectType(ScriptInt* var, GameObject* object) ScriptObjectType(ScriptInt* var, GameObject* object)
: m_id(var), m_object(static_cast<T*>(object)) { : m_id(var), m_object(static_cast<T*>(object)) {
@ -236,8 +236,8 @@ typedef std::vector<SCMOpcodeParameter> SCMParams;
class ScriptArguments { class ScriptArguments {
const SCMParams* parameters; const SCMParams* parameters;
SCMThread* thread; SCMThread* thread = nullptr;
ScriptMachine* machine; ScriptMachine* machine = nullptr;
public: public:
ScriptArguments(const SCMParams* p, SCMThread* t, ScriptMachine* m) ScriptArguments(const SCMParams* p, SCMThread* t, ScriptMachine* m)

View File

@ -20,10 +20,7 @@ constexpr int kWindowWidth = 800;
constexpr int kWindowHeight = 600; constexpr int kWindowHeight = 600;
GameBase::GameBase(Logger &inlog, int argc, char *argv[]) : GameBase::GameBase(Logger &inlog, int argc, char *argv[]) :
log(inlog), log(inlog) {
config(),
window(),
options() {
log.info("Game", "Build: " + kBuildStr); log.info("Game", "Build: " + kBuildStr);
size_t w = kWindowWidth, h = kWindowHeight; size_t w = kWindowWidth, h = kWindowHeight;

View File

@ -26,9 +26,9 @@ public:
protected: protected:
Logger& log; Logger& log;
GameConfig config; GameConfig config{};
GameWindow window; GameWindow window{};
boost::program_options::variables_map options; boost::program_options::variables_map options{};
}; };
#endif #endif

View File

@ -10,12 +10,6 @@ namespace pt = boost::property_tree;
const std::string kConfigDirectoryName("OpenRW"); const std::string kConfigDirectoryName("OpenRW");
GameConfig::GameConfig()
: m_configPath()
, m_parseResult()
, m_inputInvertY(false) {
}
void GameConfig::loadFile(const rwfs::path &path) { void GameConfig::loadFile(const rwfs::path &path) {
m_configPath = path; m_configPath = path;
std::string dummy; std::string dummy;

View File

@ -176,7 +176,7 @@ public:
/** /**
* @brief GameConfig Create a game configuration (initially invalid) * @brief GameConfig Create a game configuration (initially invalid)
*/ */
GameConfig(); GameConfig() = default;
/** /**
* @brief Initialize this object using the config file at path * @brief Initialize this object using the config file at path
@ -252,8 +252,8 @@ private:
ParseType destType, std::string &destination); ParseType destType, std::string &destination);
/* Config State */ /* Config State */
rwfs::path m_configPath; rwfs::path m_configPath{};
ParseResult m_parseResult; ParseResult m_parseResult{};
/* Actual Configuration */ /* Actual Configuration */
@ -264,14 +264,14 @@ private:
std::string m_gameLanguage = "american"; std::string m_gameLanguage = "american";
/// Invert the y axis for camera control. /// Invert the y axis for camera control.
bool m_inputInvertY; bool m_inputInvertY = false;
/// Size of the window /// Size of the window
int m_windowWidth; int m_windowWidth{800};
int m_windowHeight; int m_windowHeight{600};
/// Set the window to fullscreen /// Set the window to fullscreen
bool m_windowFullscreen; bool m_windowFullscreen = false;
}; };
#endif #endif

View File

@ -1,9 +1,6 @@
#include "GameWindow.hpp" #include "GameWindow.hpp"
#include <core/Logger.hpp> #include <core/Logger.hpp>
GameWindow::GameWindow() : window(nullptr), glcontext(nullptr) {
}
void GameWindow::create(const std::string& title, size_t w, size_t h, void GameWindow::create(const std::string& title, size_t w, size_t h,
bool fullscreen) { bool fullscreen) {
Uint32 style = SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_HIDDEN; Uint32 style = SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_HIDDEN;

View File

@ -8,12 +8,11 @@
#include <render/GameRenderer.hpp> #include <render/GameRenderer.hpp>
class GameWindow { class GameWindow {
SDL_Window* window; SDL_Window* window = nullptr;
SDL_Surface* icon; SDL_Surface* icon = nullptr;
SDL_GLContext glcontext; SDL_GLContext glcontext{nullptr};
public: public:
GameWindow(); GameWindow() = default;
void create(const std::string& title, size_t w, size_t h, bool fullscreen); void create(const std::string& title, size_t w, size_t h, bool fullscreen);
void close(); void close();

View File

@ -44,8 +44,7 @@ constexpr float kMaxPhysicsSubSteps = 2;
RWGame::RWGame(Logger& log, int argc, char* argv[]) RWGame::RWGame(Logger& log, int argc, char* argv[])
: GameBase(log, argc, argv) : GameBase(log, argc, argv)
, data(&log, config.getGameDataPath()) , data(&log, config.getGameDataPath())
, renderer(&log, &data) , renderer(&log, &data) {
, lastDraws(0) {
bool newgame = options.count("newgame"); bool newgame = options.count("newgame");
bool test = options.count("test"); bool test = options.count("test");
std::string startSave( std::string startSave(

View File

@ -43,7 +43,7 @@ class RWGame : public GameBase {
}; };
DebugViewMode debugview_ = DebugViewMode::Disabled; DebugViewMode debugview_ = DebugViewMode::Disabled;
int lastDraws{}; /// Number of draws issued for the last frame. int lastDraws{0}; /// Number of draws issued for the last frame.
std::string cheatInputWindow = std::string(32, ' '); std::string cheatInputWindow = std::string(32, ' ');

View File

@ -6,7 +6,7 @@
#include <iostream> #include <iostream>
BenchmarkState::BenchmarkState(RWGame* game, const std::string& benchfile) BenchmarkState::BenchmarkState(RWGame* game, const std::string& benchfile)
: State(game), benchfile(benchfile), benchmarkTime(0.f), duration(0.f), frameCounter(0) { : State(game), benchfile(benchfile) {
} }
void BenchmarkState::enter() { void BenchmarkState::enter() {

View File

@ -15,9 +15,9 @@ class BenchmarkState : public State {
std::string benchfile; std::string benchfile;
float benchmarkTime; float benchmarkTime{0.f};
float duration; float duration{0.f};
uint32_t frameCounter; uint32_t frameCounter{0};
public: public:
BenchmarkState(RWGame* game, const std::string& benchfile); BenchmarkState(RWGame* game, const std::string& benchfile);

View File

@ -33,13 +33,9 @@ constexpr float kVehicleCameraPitch =
IngameState::IngameState(RWGame* game, bool newgame, const std::string& save) IngameState::IngameState(RWGame* game, bool newgame, const std::string& save)
: State(game) : State(game)
, started(false)
, save(save) , save(save)
, newgame(newgame) , newgame(newgame)
, autolookTimer(0.f) , m_invertedY(game->getConfig().getInputInvertY()) {
, camMode(IngameState::CAMERA_NORMAL)
, m_invertedY(game->getConfig().getInputInvertY())
, m_vehicleFreeLook(true) {
} }
void IngameState::startTest() { void IngameState::startTest() {

View File

@ -16,21 +16,21 @@ class IngameState : public State {
CAMERA_MAX CAMERA_MAX
}; };
bool started; bool started = false;
std::string save; std::string save;
bool newgame; bool newgame;
ViewCamera _look; ViewCamera _look{};
glm::vec3 cameraPosition{}; glm::vec3 cameraPosition{};
/** Timer to hold user camera position */ /** Timer to hold user camera position */
float autolookTimer; float autolookTimer{0.f};
CameraMode camMode; CameraMode camMode{IngameState::CAMERA_NORMAL};
/// Player camera input since the last update /// Player camera input since the last update
glm::vec2 cameradelta_{}; glm::vec2 cameradelta_{};
/// Invert Y axis movement /// Invert Y axis movement
bool m_invertedY; bool m_invertedY;
/// Free look in vehicles. /// Free look in vehicles.
bool m_vehicleFreeLook; bool m_vehicleFreeLook = true;
float moneyTimer = 0.f; // Timer used to updated displayed money value float moneyTimer = 0.f; // Timer used to updated displayed money value