diff --git a/CMakeLists.txt b/CMakeLists.txt index 88419e5..6ccd5db 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,6 +11,8 @@ endif() include(FetchContent) +SET(CMAKE_EXPORT_COMPILE_COMMANDS 1) + SET(TRACY_ENABLE 1) SET(TRACY_ON_DEMAND 1) SET(TRACY_ONLY_LOCALHOST 1) diff --git a/Resources/maps/newmap.tmx b/Resources/maps/newmap.tmx index ccb3c95..b3611a1 100644 --- a/Resources/maps/newmap.tmx +++ b/Resources/maps/newmap.tmx @@ -1,7 +1,7 @@ - + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,34,31,31,30,70,72,30,34,29,34,73,33,29,71,72,30,33,31,71,29,70,34,0,0,0,0,0,0,0, @@ -25,7 +25,7 @@ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -49,7 +49,7 @@ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, diff --git a/Resources/maps/yupple.tiled-session b/Resources/maps/yupple.tiled-session index 08a564c..d8b87cc 100644 --- a/Resources/maps/yupple.tiled-session +++ b/Resources/maps/yupple.tiled-session @@ -3,11 +3,11 @@ "height": 4300, "width": 2 }, - "activeFile": "debugmap.tmx", + "activeFile": "newmap.tmx", "expandedProjectPaths": [ "tilesets", - "C:/Users/Ethan/source/repos/YuppleMayham/Resources", - "." + ".", + "C:/Users/Ethan/source/repos/YuppleMayham/Resources" ], "fileStates": { "": { @@ -82,10 +82,10 @@ "project": "yupple.tiled-project", "property.type": "bool", "recentFiles": [ + "debugmap.tmx", + "tilesets/shooterWorldOne.tsx", "tilesets/wOne.tsx", "newmap.tmx", - "tilesets/shooterWorldOne.tsx", - "debugmap.tmx", "tilesets/wsa.tsx", "tilesets/was.tsx", "tilesets/shooterWorldOneAtlas.tsx", diff --git a/Resources/shaders/GL_postprocess.frag b/Resources/shaders/GL_postprocess.frag new file mode 100644 index 0000000..c66e222 --- /dev/null +++ b/Resources/shaders/GL_postprocess.frag @@ -0,0 +1,67 @@ +#version 330 core +layout (std140) uniform uPostProcess { + int curTime; + + int dt; + vec3 colorMod; + float blurIntensity; + float shakeIntensity; + float shakeTime; + int effects; + + vec3 colorMod_hud; + float blurIntensity_hud; + float shakeIntensity_hud; + float shakeTime_hud; + int effects_hud; +}; +out vec4 FragColor; + +in vec2 texCoord; + +uniform int edge_kernel[9]; +uniform float blur_kernel[9]; + +const float offset = 1.0 / 300.0; + +uniform sampler2D screenTexture; +uniform bool worldOrHud; + +void main() +{ + if (worldOrHud == false) + { + /* + vec2 offsets[9] = vec2[]( + vec2(-offset, offset), // top-left + vec2( 0.0f, offset), // top-center + vec2( offset, offset), // top-right + vec2(-offset, 0.0f), // center-left + vec2( 0.0f, 0.0f), // center-center + vec2( offset, 0.0f), // center-right + vec2(-offset, -offset), // bottom-left + vec2( 0.0f, -offset), // bottom-center + vec2( offset, -offset) // bottom-right + ); + vec2 tex_offset = 1.0 / vec2(800.0, 600.0); // gets size of single texel + vec4 result = vec4(0.0); + vec4 sampleTex[9]; + for (int i = 0; i < 9; i++) + { + sampleTex[i] = vec4(texture(screenTexture, texCoord.st + offsets[i])); + } + for (int i = 0; i < 9; i++) + result += sampleTex[i] * edge_kernel[i]; + */ + //FragColor = mix(vec4(result), vec4(0.4, 0.0, 0.7, 1.0), 0.2); + if ((effects & (1 << 1)) != 0) + { + //FragColor = mix(texture(screenTexture, texCoord), vec4(1.0, 0.8, 0.0, 1.0), 0.3 - (1.0 / shakeTime) * shakeIntensity); + FragColor = texture(screenTexture, texCoord); + } + else + { + FragColor = texture(screenTexture, texCoord); + } + } +} \ No newline at end of file diff --git a/Resources/shaders/GL_postprocess.vert b/Resources/shaders/GL_postprocess.vert new file mode 100644 index 0000000..6e1b480 --- /dev/null +++ b/Resources/shaders/GL_postprocess.vert @@ -0,0 +1,55 @@ +#version 330 core +layout (location = 0) in vec3 aPos; +layout (location = 1) in vec2 aTexCoord; +layout (std140) uniform uPostProcess { + int curTime; + + int dt; + vec3 colorMod; + float blurIntensity; + float shakeIntensity; + float shakeTime; + int effects; + + vec3 colorMod_hud; + float blurIntensity_hud; + float shakeIntensity_hud; + float shakeTime_hud; + int effects_hud; +}; + +/* +BLUR: 0001 +SHAKE: 0010 +NEGATIVE: 0100 +COLORMOD: 1000 +GREYSCALE:1 0000 +*/ + +uniform bool worldOrHud; + +out vec2 texCoord; + +void main() +{ + texCoord = aTexCoord; + gl_Position = vec4(aPos.x, aPos.y, 0.0, 1.0); + if (worldOrHud == false) + { + // SHAKE + if ((effects & (1 << 1)) != 0) + { + gl_Position.x += cos(dt * 10) * shakeIntensity; + gl_Position.y += cos(dt * 15) * shakeIntensity; + } + } + else + { + //SHAKE + if ((effects_hud & (1 << 1)) != 0) + { + gl_Position.x += cos(shakeTime_hud - 90) * 0.01; + gl_Position.y += cos(shakeTime_hud - 80) * 0.01; + } + } +} \ No newline at end of file diff --git a/Resources/shaders/GL_pp_hud.frag b/Resources/shaders/GL_pp_hud.frag deleted file mode 100644 index 9df999e..0000000 --- a/Resources/shaders/GL_pp_hud.frag +++ /dev/null @@ -1,16 +0,0 @@ -#version 330 core -out vec4 FragColor; - -in vec2 texCoord; - -uniform sampler2D screenTexture; - -void main() -{ - //FragColor = texture(screenTexture, texCoord); - vec4 color = texture(screenTexture, texCoord); - if (color.rgb == vec3(0.0, 0.0, 0.0)) - FragColor = vec4(0.0, 0.0, 1.0, 1.0); - else - FragColor = color; -} \ No newline at end of file diff --git a/Resources/shaders/GL_pp_hud.vert b/Resources/shaders/GL_pp_hud.vert deleted file mode 100644 index b00c680..0000000 --- a/Resources/shaders/GL_pp_hud.vert +++ /dev/null @@ -1,11 +0,0 @@ -#version 330 core -layout (location = 0) in vec3 aPos; -layout (location = 1) in vec2 aTexCoord; - -out vec2 texCoord; - -void main() -{ - texCoord = aTexCoord; - gl_Position = vec4(aPos.x, aPos.y, 0.0, 1.0); -} \ No newline at end of file diff --git a/Resources/shaders/GL_pp_world.frag b/Resources/shaders/GL_pp_world.frag deleted file mode 100644 index 0023cfe..0000000 --- a/Resources/shaders/GL_pp_world.frag +++ /dev/null @@ -1,12 +0,0 @@ -#version 330 core -out vec4 FragColor; - -in vec2 texCoord; - -uniform sampler2D world_color; - -void main() -{ - //FragColor = vec4(0.0, 1.0, 1.0, 1.0); - FragColor = mix(texture(world_color, texCoord), vec4(0.4, 0.2, 0.2, 1.0), 0.2); -} \ No newline at end of file diff --git a/Resources/shaders/GL_pp_world.vert b/Resources/shaders/GL_pp_world.vert deleted file mode 100644 index b00c680..0000000 --- a/Resources/shaders/GL_pp_world.vert +++ /dev/null @@ -1,11 +0,0 @@ -#version 330 core -layout (location = 0) in vec3 aPos; -layout (location = 1) in vec2 aTexCoord; - -out vec2 texCoord; - -void main() -{ - texCoord = aTexCoord; - gl_Position = vec4(aPos.x, aPos.y, 0.0, 1.0); -} \ No newline at end of file diff --git a/Resources/shaders/GL_tile.vert b/Resources/shaders/GL_tile.vert index d2da722..ed03fb8 100644 --- a/Resources/shaders/GL_tile.vert +++ b/Resources/shaders/GL_tile.vert @@ -18,14 +18,18 @@ flat out int textureIndex; void main() { int tilesPerRow = aTilesPerRow; - gl_Position = projection * view * aModel * vec4(aPos, 1.0); + float tileSize = 1.0 / aTilesPerRow; + // Slightly stretch the vertices to cover slight gaps + vec2 expansion = normalize(aPos.xy) * 0.001 * (1.0 / aTilesPerRow); + vec2 adjusted = aPos.xy + expansion; + + gl_Position = projection * view * aModel * vec4(adjusted, aPos.z, 1.0); textureIndex = aTextureIndex; if (aTileIndex != 0) { vec2 scale = vec2(aOriginalSize.x / uCanvasSize.x, aOriginalSize.y / uCanvasSize.y); int index = aTileIndex - aStartIndex; - float tileSize = 1.0 / float(tilesPerRow); int row = index / tilesPerRow; int col = index % tilesPerRow; diff --git a/YuppleMayham/CMakeLists.txt b/YuppleMayham/CMakeLists.txt index db401ad..c8a16c5 100644 --- a/YuppleMayham/CMakeLists.txt +++ b/YuppleMayham/CMakeLists.txt @@ -77,7 +77,9 @@ add_executable (YuppleMayham "include/utility/logger.h" "src/utility/logger.cpp" "include/graphics/renderer.h" - "src/graphics/renderer.cpp") + "src/graphics/renderer.cpp" + "src/graphics/postprocess.cpp" + ) add_custom_command(TARGET YuppleMayham PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/Resources/ $) diff --git a/YuppleMayham/include/gameplay/game.h b/YuppleMayham/include/gameplay/game.h index eef5f6d..58c194b 100644 --- a/YuppleMayham/include/gameplay/game.h +++ b/YuppleMayham/include/gameplay/game.h @@ -3,6 +3,7 @@ #include #include +#include class InputHandler; class Scene; @@ -48,6 +49,7 @@ private: std::shared_ptr resourceManager; std::shared_ptr renderer; std::shared_ptr textHandler; + std::shared_ptr globalEventManager; }; #endif \ No newline at end of file diff --git a/YuppleMayham/include/gameplay/gameactor.h b/YuppleMayham/include/gameplay/gameactor.h index 002c141..de16286 100644 --- a/YuppleMayham/include/gameplay/gameactor.h +++ b/YuppleMayham/include/gameplay/gameactor.h @@ -1,6 +1,7 @@ #ifndef _H_GAMEACTOR_H #define _H_GAMEACTOR_H +#include #include #include #include @@ -8,10 +9,11 @@ #include "gameplay/entity.h" #include "utility/mousestate.h" -class Component; +#include + class AI; class Weapon; -class EventManager; +class ISceneContext; // TODO: Finish weapon cycling code and add default weapon to every actor // TODO: Add ammo system, then work on some basic UI design @@ -19,12 +21,11 @@ class EventManager; class GameActor : public Entity { public: - GameActor(const unsigned shaderID) : Entity(shaderID) {} + GameActor(ISceneContext* scene, const unsigned shaderID) : Entity(shaderID), sceneContext(scene) {} ~GameActor(); - void addComponent(std::shared_ptr component); + void addComponent(std::unique_ptr component); void pickupWeapon(std::shared_ptr weapon); - void hookEventManager(std::shared_ptr eventManager); void update(double deltaTime) override; void draw() override; @@ -48,13 +49,14 @@ public: void cycleWeapons(const MouseState&); void followMouse(const MouseState&); private: - using component_vector_t = std::vector>; + using component_vector_t = std::vector>; using weapon_vector_t = std::vector>; component_vector_t components; weapon_vector_t weapons; size_t currentWeaponIndex = 0; - std::shared_ptr eventManager; + + ISceneContext* sceneContext; }; #endif //_H_GAMEACTOR_H \ No newline at end of file diff --git a/YuppleMayham/include/gameplay/scene.h b/YuppleMayham/include/gameplay/scene.h index e824e85..646ab63 100644 --- a/YuppleMayham/include/gameplay/scene.h +++ b/YuppleMayham/include/gameplay/scene.h @@ -1,17 +1,18 @@ #ifndef _H_SCENE_H #define _H_SCENE_H -#include +#include #include #include +#include + class Entity; class Camera; class Map; class ResourceManager; class Renderer; class EventManager; -class GameActor; class Line; class PhysicsEngine; class Sprite; @@ -24,15 +25,30 @@ enum SceneType { SCENE_SHOOTER }; -class Scene +class ISceneContext { +public: + virtual std::weak_ptr getEventManager() = 0; + virtual std::weak_ptr getGlobalEventManager() = 0; + virtual std::span> getAllEntities() const = 0; + virtual unsigned int getPlayerID() const = 0; +}; + +class Scene : public ISceneContext, public std::enable_shared_from_this { public: - Scene(SceneType type, std::shared_ptr resources); + Scene(SceneType type, std::shared_ptr resources, std::weak_ptr globalEvents); + + void init(); void update(double deltaTime); void render(std::shared_ptr renderer); std::shared_ptr getPlayer() const; + unsigned int getPlayerID() const override { return player->getEntityID(); } + + std::weak_ptr getEventManager() override { return eventManager; } + std::weak_ptr getGlobalEventManager() override { return globalEventManager; } + std::span> getAllEntities() const override; void unloadScene(); @@ -43,18 +59,20 @@ protected: private: void hookSceneEvents(); - std::shared_ptr getGameActorByID(const unsigned int ID); + GameActor* getGameActorByID(const unsigned int ID); SceneType type; std::shared_ptr map; //std::shared_ptr tileSet; std::shared_ptr player; std::unordered_map> entities; + mutable std::vector> entityCache; std::shared_ptr camera; std::shared_ptr physicsEngine; std::shared_ptr debugLine; std::shared_ptr resourceManager; + std::weak_ptr globalEventManager; std::shared_ptr eventManager; std::shared_ptr sceneData; }; diff --git a/YuppleMayham/include/gameplay/weapons/bullet.h b/YuppleMayham/include/gameplay/weapons/bullet.h index 7e73b62..ac62a4c 100644 --- a/YuppleMayham/include/gameplay/weapons/bullet.h +++ b/YuppleMayham/include/gameplay/weapons/bullet.h @@ -2,9 +2,10 @@ #define _H_BULLET_H #include "gameplay/entity.h" +#include +#include #include #include -class Component; class AnimationSet; class Camera; @@ -33,7 +34,7 @@ public: ownerid = owner; }; - void addComponent(std::shared_ptr component); + void addComponent(Component* component); void update(double deltaTime) override; void draw() override; @@ -50,7 +51,7 @@ private: float bulletSpeed; float bulletDrop; glm::vec2 bulletSize; - std::vector> components; + std::vector components; }; #endif // _H_BULLET_H \ No newline at end of file diff --git a/YuppleMayham/include/gameplay/weapons/bulletmanager.h b/YuppleMayham/include/gameplay/weapons/bulletmanager.h index 8e33ab5..285c2fc 100644 --- a/YuppleMayham/include/gameplay/weapons/bulletmanager.h +++ b/YuppleMayham/include/gameplay/weapons/bulletmanager.h @@ -5,16 +5,18 @@ #include #include +#include + class Bullet; class Sprite; class Shader; -class Component; class Camera; class EventManager; -class BulletManager +class BulletManager : public std::enable_shared_from_this { public: + BulletManager() {} void addBullet(const std::shared_ptr& bullet); void addBullet(const unsigned int owner, const glm::vec3& fireFrom, @@ -23,18 +25,18 @@ public: float bulletDrop, glm::vec2 bulletSize, const unsigned& shaderID, - const std::shared_ptr& sprite); + std::unique_ptr sprite); void update(double deltaTime); void draw(); - void hookEventManager(const std::shared_ptr& eventManager); + void hookEventManager(std::weak_ptr eventManager); - const std::vector> getBullets() { return bullets; } + const std::vector> getBullets() const { return bullets; } private: std::vector> bullets; - std::shared_ptr eventManager; + std::weak_ptr eventManager; }; #endif \ No newline at end of file diff --git a/YuppleMayham/include/gameplay/weapons/weapon.h b/YuppleMayham/include/gameplay/weapons/weapon.h index 4e87c98..efa4c9c 100644 --- a/YuppleMayham/include/gameplay/weapons/weapon.h +++ b/YuppleMayham/include/gameplay/weapons/weapon.h @@ -8,15 +8,15 @@ #include "util.h" #include "gameplay/entity.h" -#include "gameplay/weapons/bullet.h" #include "utility/direction.h" +#include +#include + // TODO: Put all weapons inside of this base, we don't need a class for every weapon, we only need one class! class Shader; -class Component; class Camera; -class BulletManager; class EventManager; class ResourceManager; class GameActor; @@ -29,15 +29,15 @@ class Weapon : public Entity, public std::enable_shared_from_this public: Weapon(std::shared_ptr data, const unsigned weaponShaderID, const unsigned bulletShaderID, ResourceManager* resourceManager); - void setWielder(const std::shared_ptr& wielder) { this->wielder = wielder; } + void setWielder(GameActor* wielder) { this->wielder = wielder; } void toggleInfiniteAmmo() { infiniteAmmo = !infiniteAmmo; } void wield() { wielded = true; } void putaway() { wielded = false; } - void addComponent(const std::shared_ptr& component); + void addComponent(std::unique_ptr component); void attachScript(const std::shared_ptr& script); - void hookEventManager(const std::shared_ptr& eventManager); - void shoot(); + void hookEventManager(std::weak_ptr eventManager); + bool shoot(); void reload(); void update(double deltaTime); void draw(); @@ -50,7 +50,7 @@ public: float speedMod = 1.f; float dropMod = 1.f; }; - void onHitCallback(std::shared_ptr target, std::shared_ptr bullet, const glm::vec2& normal); + void onHitCallback(GameActor* target, PhysicsComponent* bullet, const glm::vec2& normal); glm::vec2 getWeaponSize() const { return weaponSize; } // This is the offset from the center right point of the weapon to the barrel of the gun defined in @@ -58,14 +58,14 @@ public: glm::vec2 getWeaponOffset() const { return weaponOffset; } float getBulletSpeed() const { return bulletSpeed; } glm::vec2 getBulletSize() const { return bulletSize; } - std::shared_ptr getWielder() const { return wielder; } + GameActor* getWielder() const { return wielder; } const Uint32 getMagazine() const { return weaponMag; } const Uint32 getAmmo() const { return weaponAmmo; } Weapon::BulletData genBulletData (); void createBullet (const BulletData& data); - const std::shared_ptr& getBulletManager() { return bulletManager; } + const BulletManager* getBulletManager() { return bulletManager.get(); } private: void adjustWeapon(); @@ -85,21 +85,21 @@ private: float fireSpeed; glm::vec2 bulletSize; unsigned bulletShaderID; - std::shared_ptr bulletSprite; + std::unique_ptr bulletSprite; std::shared_ptr bulletManager; - std::shared_ptr eventManager; + std::weak_ptr eventManager; - std::shared_ptr bulletSpread; - std::shared_ptr bulletModifer; + std::unique_ptr bulletSpread; + std::unique_ptr bulletModifer; - std::shared_ptr wielder; + GameActor* wielder; // is the weapon currently active bool wielded = false; int lastFireTime = 0; Direction lastDir; - std::vector > components; + std::vector > components; std::shared_ptr weaponScript; }; diff --git a/YuppleMayham/include/graphics/animation.h b/YuppleMayham/include/graphics/animation.h index 295c4f9..7e1fe7d 100644 --- a/YuppleMayham/include/graphics/animation.h +++ b/YuppleMayham/include/graphics/animation.h @@ -65,17 +65,17 @@ private: // We will load our animation component with every loaded animation, // this will be the handler for every animation an entity uses -class AnimationSet +class AnimationSet : public std::enable_shared_from_this { public: AnimationSet(const int& entityid); AnimationSet(const int& entityid, ResourceManager* resourceManager, std::vector> animSet); - AnimationSet(const int& entityid, const std::unordered_map>& animations); + AnimationSet(const int& entityid, std::unordered_map> animations); - std::shared_ptr& operator [](std::string animType) { return anims[animType]; } + Animation* operator [](std::string animType) { return anims[animType].get(); } - void addAnimation(const std::shared_ptr anim) { anims.try_emplace(anim->getType(), anim); } - void setAnimation(const std::string& animType) { curAnim = anims[animType]; } + void addAnimation(std::unique_ptr anim) { std::string type = anim->getType(); anims.try_emplace(type, std::move(anim)); } + void setAnimation(const std::string& animType) { curAnim = anims[animType].get(); } const int getEntityID() const { return entityid; } const bool getDirectional() const { return isDirectional; } @@ -88,7 +88,7 @@ public: void setFacingDir(Direction& dir) { facing = dir; } - void attachEventManager(const std::shared_ptr& e); + void attachEventManager(std::weak_ptr e); private: int entityid; @@ -96,10 +96,10 @@ private: Direction facing = Direction::Down; - std::unordered_map> anims; - std::shared_ptr curAnim; + std::unordered_map> anims; + Animation* curAnim; - std::shared_ptr eventManager; + std::weak_ptr eventManager; }; #endif // _H_ANIMATION_H \ No newline at end of file diff --git a/YuppleMayham/include/graphics/postprocess.h b/YuppleMayham/include/graphics/postprocess.h new file mode 100644 index 0000000..bb099fc --- /dev/null +++ b/YuppleMayham/include/graphics/postprocess.h @@ -0,0 +1,67 @@ +#ifndef _H_POSTPROCESS_H +#define _H_POSTPROCESS_H + +#include +#include +#include +#include +#include +#include +#include + +class Postprocessor +{ +public: + Postprocessor(const std::shared_ptr&); + + enum EFFECT { + BLUR = 1 << 0, + SHAKE = 1 << 1, + NEGATIVE = 1 << 2, + COLORMOD = 1 << 3, + GREYSCALE = 1 << 4 + }; + + void ApplyEffect(EFFECT effect, float intensity=0.f, float effectDuration=0.f, glm::vec3 colorModifer=glm::vec3(0.0f)); + void RemoveEffects(EFFECT effect); + void RemoveAllEffects(); + + void applyPostProcess(bool worldOrHud=0); + +private: + + int edge_kernel[9] = { + -1, -1, -1, + -1, 8, -1, + -1, -1, -1 + }; + float blur_kernel[9] = { + 1.0f / 16.0f, 2.0f / 16.0f, 1.0f / 16.0f, + 2.0f / 16.0f, 4.0f / 16.0f, 2.0f / 16.0f, + 1.0f / 16.0f, 2.0f / 16.0f, 1.0f / 16.0f + }; + + unsigned int UBO; + struct PostProcessData_t { + alignas(4) int curTime; + + // world + alignas(4) int dt; + alignas(16) glm::vec3 colorMod; + alignas(4) float blurIntensity; + alignas(4) float shakeIntensity; + alignas(4) float shakeTime; + alignas(4) int curEffects; + // hud + alignas(16) glm::vec3 colorMod_hud; + alignas(4) float blurIntensity_hud; + alignas(4) float shakeIntensity_hud; + alignas(4) float shakeTime_hud; + alignas(4) int curEffects_hud; + }postProcessData; + + unsigned int lastTime; + Shader* postProcessShader; +}; + +#endif // _H_POSTPROCESS_H \ No newline at end of file diff --git a/YuppleMayham/include/graphics/renderer.h b/YuppleMayham/include/graphics/renderer.h index 5c2064e..a9927b9 100644 --- a/YuppleMayham/include/graphics/renderer.h +++ b/YuppleMayham/include/graphics/renderer.h @@ -9,6 +9,7 @@ #include #include "graphics/quad.h" +#include "graphics/postprocess.h" class ResourceManager; class Shader; @@ -70,6 +71,8 @@ public: void clear(); + void hookEventManager(const std::weak_ptr eventManager); + void setProjAndViewMatrix(const glm::mat4& proj, const glm::mat4& view); void addDrawable(RenderLayer renderLayer, std::shared_ptr drawable); void removeDrawable(RenderLayer renderLayer, std::shared_ptr drawable); @@ -103,10 +106,8 @@ private: std::shared_ptr resourceManager; void initFrameBuffers(); - void loadPostProcessShaders(); - Shader* postProcess_World; - Shader* postProcess_HUD; + std::unique_ptr postProcessor; void sortLayerPool(auto& layerPool); void renderPool(auto& layerPool); diff --git a/YuppleMayham/include/graphics/shader.h b/YuppleMayham/include/graphics/shader.h index 35aa003..f6494d5 100644 --- a/YuppleMayham/include/graphics/shader.h +++ b/YuppleMayham/include/graphics/shader.h @@ -2,10 +2,8 @@ #define _H_SHADER_H #include - #include -#include -#include +#include class Shader { @@ -16,6 +14,8 @@ public: void use() { glUseProgram(ID); } void setFloat(const std::string& name, float value); + void setFloatArray(const std::string & name, size_t count, const float* value); + void setIntArray(const std::string & name, size_t count, const int* value); void setInt(const std::string& name, int value); void setBool(const std::string& name, bool value); void setVec2(const std::string& name, const float* value); diff --git a/YuppleMayham/include/utility/component.h b/YuppleMayham/include/utility/component.h index cb04cd9..156dbe1 100644 --- a/YuppleMayham/include/utility/component.h +++ b/YuppleMayham/include/utility/component.h @@ -13,6 +13,7 @@ class Component { public: + enum class TYPE { MESH, SPRITE, ANIMATION, SHADER, AI }; Component(const std::shared_ptr& eventManager) : eventManager(eventManager) {} virtual ~Component() {}; virtual void bind() = 0; @@ -20,6 +21,7 @@ public: virtual void render() = 0; virtual void play() = 0; virtual void idle() = 0; + virtual TYPE getType() const = 0; int ownerid = 0; private: @@ -39,6 +41,7 @@ public: void play() override { /*unused*/ } void idle() override { /*unused*/ } + TYPE getType() const override { return TYPE::MESH; } ~MeshComponent() { mesh->~Mesh(); } @@ -50,7 +53,7 @@ private: class SpriteComponent : public Component { public: - SpriteComponent(Sprite* sprite) : sprite(sprite), Component(nullptr) {} + SpriteComponent(Sprite* sprite) : Component(nullptr), sprite(sprite) {} void bind() override { if (sprite) sprite->bind(); @@ -61,6 +64,7 @@ public: } void play() override { /*unused*/ } void idle() override { /*unused*/ } + TYPE getType() const override { return TYPE::SPRITE; } Sprite* getSprite() { return sprite; } @@ -73,9 +77,9 @@ private: class AnimationComponent : public Component { public: - AnimationComponent(std::shared_ptr animSet) : animSet(animSet), Component(nullptr) {}; + AnimationComponent(std::shared_ptr animSet) : Component(nullptr), animSet(animSet) {}; AnimationComponent(std::shared_ptr animSet, const std::shared_ptr& eventManager) : - animSet(animSet), Component(nullptr) + Component(nullptr), animSet(animSet) { this->animSet->attachEventManager(eventManager); } @@ -97,6 +101,7 @@ public: if (animSet) animSet->stop(); } + TYPE getType() const override { return TYPE::ANIMATION; } std::shared_ptr& getAnimationSet() { return animSet; } @@ -110,7 +115,7 @@ class ShaderComponent : public Component { public: ShaderComponent(const char* vertexPath, const char* shaderPath) : - shader(vertexPath, shaderPath), Component(nullptr) {}; + Component(nullptr), shader(vertexPath, shaderPath) {}; void bind() override { shader.use(); @@ -119,6 +124,7 @@ public: void render() override {} void play() override { /*unused*/ } void idle() override { /*unused*/ } + TYPE getType() const override { return TYPE::SHADER; } Shader& getShader() { return shader; } @@ -130,13 +136,14 @@ private: class AIComponent : public Component { public: - AIComponent(std::shared_ptr ai) : ai(ai), Component(nullptr) {} + AIComponent(std::shared_ptr ai) : Component(nullptr), ai(ai) {} void bind() override { /*unused*/ } void update() override { if (ai) ai->update(); } void render() override { /*unused*/ } void play() override { /*unused*/ } void idle() override { /*unused*/ } + TYPE getType() const override { return TYPE::AI; } private: std::shared_ptr ai; diff --git a/YuppleMayham/include/utility/events.h b/YuppleMayham/include/utility/events.h index 334fda4..f161c81 100644 --- a/YuppleMayham/include/utility/events.h +++ b/YuppleMayham/include/utility/events.h @@ -7,6 +7,7 @@ #include #include "utility/direction.h" +#include class Bullet; struct PhysicsComponent; @@ -44,7 +45,7 @@ public: class DirectionChangeEvent : public Event { public: - DirectionChangeEvent(const int entityid, Direction direction) : entityid(entityid), direction(direction) {} + DirectionChangeEvent(const int entityid, Direction direction) : direction(direction), entityid(entityid) {} std::string getType() const override { return "OnDirectionChange"; } Direction direction; int entityid; @@ -88,12 +89,20 @@ public: class AnimationFinishedEvent : public Event { public: - AnimationFinishedEvent(const int entityid, const std::string animType) : entityid(entityid), animType(animType) {} + AnimationFinishedEvent(const int entityid, const std::string animType) : animType(animType), entityid(entityid) {} std::string getType() const override { return "OnAnimationFinished"; } std::string animType; int entityid; }; +class ScreenShakeEvent : public Event { +public: + ScreenShakeEvent(float intensity, float duration) : intensity(intensity), duration(duration) {} + std::string getType() const override { return "OnScreenShake"; } + float intensity; + float duration; +}; + class EventManager { public: using EventCallback = std::function)>; diff --git a/YuppleMayham/src/gameplay/game.cpp b/YuppleMayham/src/gameplay/game.cpp index 2ae9055..78ec09c 100644 --- a/YuppleMayham/src/gameplay/game.cpp +++ b/YuppleMayham/src/gameplay/game.cpp @@ -15,6 +15,8 @@ #include #include +#include +#include bool Game::init() { @@ -49,8 +51,10 @@ bool Game::init() inputHandler->bindMouseScroll(new CycleCommand()); game_state |= GAME_RUNNING; + globalEventManager = std::make_shared(); resourceManager = std::make_shared(); renderer = std::make_shared(resourceManager); + renderer->hookEventManager(globalEventManager); textHandler = std::make_shared(); if (!textHandler->loadFonts("fonts")) return false; @@ -63,7 +67,8 @@ const unsigned Game::getWindowHeight() const { return window->height(); } bool Game::loadDebugScene() { - currentScene = std::make_shared(SCENE_SHOOTER, resourceManager); + currentScene = std::make_shared(SCENE_SHOOTER, resourceManager, globalEventManager); + currentScene->init(); if (currentScene->getPlayer() == nullptr) return false; inputHandler->setActor(currentScene->getPlayer().get()); diff --git a/YuppleMayham/src/gameplay/gameactor.cpp b/YuppleMayham/src/gameplay/gameactor.cpp index 9d60f87..c0453f7 100644 --- a/YuppleMayham/src/gameplay/gameactor.cpp +++ b/YuppleMayham/src/gameplay/gameactor.cpp @@ -1,17 +1,19 @@ #include "gameplay/gameactor.h" #include "gameplay/entity.h" #include "gameplay/physics.h" +#include "gameplay/scene.h" #include "gameplay/weapons/weapon.h" #include "utility/events.h" #include "utility/direction.h" #include "utility/component.h" +#include GameActor::~GameActor() { } -void GameActor::addComponent(std::shared_ptr component) +void GameActor::addComponent(std::unique_ptr component) { component->ownerid = entityid; - components.push_back(component); + components.push_back(std::move(component)); } const std::shared_ptr GameActor::getHeldWeapon() const @@ -21,7 +23,10 @@ const std::shared_ptr GameActor::getHeldWeapon() const void GameActor::pickupWeapon(std::shared_ptr weapon) { - weapon->setWielder(std::shared_ptr(this)); + weapon->setWielder(this); + if (auto eventManager = sceneContext->getEventManager().lock()) { + weapon->hookEventManager(eventManager); + } weapons.push_back(weapon); // wield the newly picked up weapon. getHeldWeapon()->putaway(); @@ -29,19 +34,14 @@ void GameActor::pickupWeapon(std::shared_ptr weapon) getHeldWeapon()->wield(); } -void GameActor::hookEventManager(std::shared_ptr eventManager) -{ - this->eventManager = eventManager; - for (auto& weapon : weapons) - weapon->hookEventManager(eventManager); -} - void GameActor::setRotation(const float& rotation) { - if (!isRotatable && eventManager) { - Direction newDir = getDirectionFromRotation(rotation); - if (getDirectionFromRotation(this->rotation) != newDir) - eventManager->notify(std::make_shared(entityid, newDir)); + if (!isRotatable) { + if (auto eventManager = sceneContext->getEventManager().lock()) { + Direction newDir = getDirectionFromRotation(rotation); + if (getDirectionFromRotation(this->rotation) != newDir) + eventManager->notify(std::make_shared(entityid, newDir)); + } } this->rotation = rotation; updateModelMatrix(); @@ -56,18 +56,19 @@ void GameActor::update(double deltaTime) for (const auto& weapon : weapons) weapon->update(deltaTime); - if (eventManager) + if (isMoving && !wasMoving) { - if (isMoving && !wasMoving) - { - eventManager->notify(std::make_shared(entityid)); - wasMoving = true; + if (auto event = sceneContext->getEventManager().lock()) { + event->notify(std::make_shared(entityid)); } - else if (!isMoving && wasMoving) - { - eventManager->notify(std::make_shared(entityid)); - wasMoving = false; + wasMoving = true; + } + else if (!isMoving && wasMoving) + { + if (auto event = sceneContext->getEventManager().lock()) { + event->notify(std::make_shared(entityid)); } + wasMoving = false; } isMoving = false; } @@ -93,7 +94,18 @@ void GameActor::moveLeft() { if (physics) physics->rigidBody.applyForce(glm::vec void GameActor::moveRight(){ if (physics) physics->rigidBody.applyForce(glm::vec3( 1.f, 0.f, 0.f), 1500.25f); isMoving = true; } // top-down shooter mode controls -void GameActor::fireWeapon()const { if (auto& weapon = getHeldWeapon()) weapon->shoot(); } +void GameActor::fireWeapon()const { + if (auto& weapon = getHeldWeapon()) { + if (weapon->shoot()) { + if (sceneContext->getPlayerID() == entityid) { + if (auto gEvent = sceneContext->getGlobalEventManager().lock()) { + gEvent->notify(std::make_shared(0.01f, 0.8f)); + } + } + } + } +} + void GameActor::cycleUpWeapons() { if (!weapons.empty()) { weapons[currentWeaponIndex]->putaway(); @@ -119,9 +131,11 @@ void GameActor::followMouse(const MouseState& mouse_state) { glm::vec2 direction = glm::vec2(mouse_state.x, mouse_state.y) - glm::vec2(localPosition.x + 0.5f * scale.x, localPosition.y + 0.5f * scale.y); float newRotation = glm::degrees(glm::atan(direction.y, direction.x)); - if (getDirectionFromRotation(rotation) != getDirectionFromRotation(newRotation)) - if (eventManager) - eventManager->notify(std::make_shared(entityid, getDirectionFromRotation(newRotation))); + if (getDirectionFromRotation(rotation) != getDirectionFromRotation(newRotation)) { + if (auto event = sceneContext->getEventManager().lock()) { + event->notify(std::make_shared(entityid, getDirectionFromRotation(newRotation))); + } + } //setRotation(glm::degrees(glm::atan(direction.y, direction.x))); this->rotation = newRotation; } diff --git a/YuppleMayham/src/gameplay/scene.cpp b/YuppleMayham/src/gameplay/scene.cpp index 2a11c7a..1e48625 100644 --- a/YuppleMayham/src/gameplay/scene.cpp +++ b/YuppleMayham/src/gameplay/scene.cpp @@ -17,6 +17,7 @@ #include "utility/raycaster.h" #include "utility/debugdraw.h" +#include #include #include @@ -30,20 +31,25 @@ like this: */ -Scene::Scene(SceneType sceneType, std::shared_ptr resources) : type(sceneType), resourceManager(resources) +Scene::Scene(SceneType sceneType, std::shared_ptr resources, std::weak_ptr globalEvents) + : type(sceneType), resourceManager(resources), globalEventManager(globalEvents) { camera = std::make_shared(800.f, 600.f); physicsEngine = std::make_shared(); eventManager = std::make_shared(); +} + +void Scene::init() +{ physicsEngine->hookEventManager(eventManager); - hookSceneEvents(); - if (sceneType == SCENE_SHOOTER) - loadDebugShooterScene(); + //if (sceneType == SCENE_SHOOTER) + loadDebugShooterScene(); } // This function is full of hardcoded values and test sprites, NOT for use with final product void Scene::loadDebugShooterScene() { + hookSceneEvents(); sceneData = resourceManager->loadScene("000"); if (!sceneData) return; @@ -59,7 +65,7 @@ void Scene::loadDebugShooterScene() for (EntityData entityData : sceneData->entities) { - auto entity = std::make_shared(playerShader); + auto entity = std::make_shared(this, playerShader); // Directional is the kind of sprite sheet we are using, in this case for directional, I have the sprite sheet handle the rotations // instead of just rotating the object, this makes it look quite a bit better from the end user perspective. if (entityData.animated) @@ -69,19 +75,18 @@ void Scene::loadDebugShooterScene() // we set the this value to false so we no longer rotate the object. if (entityAnimation->getDirectional()) entity->setRotatable(false); - entity->addComponent(std::make_shared(entityAnimation, eventManager)); + entity->addComponent(std::make_unique(entityAnimation, eventManager)); } else { auto entitySprite = resourceManager->loadSpriteStatic(entityData.graphic); - entity->addComponent(std::make_shared(entitySprite)); + entity->addComponent(std::make_unique(entitySprite)); } auto defaultWeapon = resourceManager->loadWeapon("pistolGun", weaponShader, bubbleShader); auto entityWeapon = resourceManager->loadWeapon(entityData.weapon, weaponShader, bubbleShader); entity->pickupWeapon(defaultWeapon); entity->pickupWeapon(entityWeapon); - entity->hookEventManager(eventManager); entity->setPosition(glm::vec3(entityData.x * mapData->tileSize, entityData.y * mapData->tileSize, 0.f)); entity->setScale(glm::vec3(mapData->tileSize, mapData->tileSize, 1.f)); @@ -109,7 +114,7 @@ void Scene::loadDebugShooterScene() auto ai = std::make_shared(entity, rayCaster); ai->setTarget(player); ai->attachBehaviourScript(behaviourScript); - entity->addComponent(std::make_shared(ai)); + entity->addComponent(std::make_unique(ai)); } } entities.emplace(entity->getEntityID(), entity); @@ -169,20 +174,32 @@ void Scene::unloadScene() void Scene::hookSceneEvents() { - eventManager->subscribe("OnBulletCollide", [this](std::shared_ptr e) { - auto collideEvent = std::static_pointer_cast(e); - std::shared_ptr shooter = getGameActorByID(collideEvent->ownerID); - std::shared_ptr target = getGameActorByID(collideEvent->victimID); - if (shooter && target) - if (auto& weapon = shooter->getHeldWeapon()) - weapon->onHitCallback(target, collideEvent->bullet, collideEvent->normal); + std::weak_ptr weakSelf = shared_from_this(); + eventManager->subscribe("OnBulletCollide", [weakSelf](std::shared_ptr e) { + if (auto self = weakSelf.lock()) { + auto collideEvent = std::static_pointer_cast(e); + GameActor* shooter = self->getGameActorByID(collideEvent->ownerID); + GameActor* target = self->getGameActorByID(collideEvent->victimID); + if (shooter && target) + if (auto& weapon = shooter->getHeldWeapon()) + weapon->onHitCallback(target, collideEvent->bullet.get(), collideEvent->normal); + } }); } -std::shared_ptr Scene::getGameActorByID(const unsigned int ID) +GameActor* Scene::getGameActorByID(const unsigned int ID) { auto iterator = entities.find(ID); if (iterator == entities.end()) return nullptr; - return iterator->second; + return iterator->second.get(); } + +std::span> Scene::getAllEntities() const +{ + entityCache.clear(); + for (const auto& [_, entity] : entities) { + entityCache.push_back(entity); + } + return entityCache; +} \ No newline at end of file diff --git a/YuppleMayham/src/gameplay/weapons/bullet.cpp b/YuppleMayham/src/gameplay/weapons/bullet.cpp index f077f93..9ff2d36 100644 --- a/YuppleMayham/src/gameplay/weapons/bullet.cpp +++ b/YuppleMayham/src/gameplay/weapons/bullet.cpp @@ -1,10 +1,7 @@ #include "gameplay/weapons/bullet.h" -#include "gameplay/physics.h" #include "utility/component.h" -#include "gameplay/camera.h" - -void Bullet::addComponent(std::shared_ptr component) +void Bullet::addComponent(Component* component) { components.push_back(component); } diff --git a/YuppleMayham/src/gameplay/weapons/bulletmanager.cpp b/YuppleMayham/src/gameplay/weapons/bulletmanager.cpp index 3b75ad7..77c4f80 100644 --- a/YuppleMayham/src/gameplay/weapons/bulletmanager.cpp +++ b/YuppleMayham/src/gameplay/weapons/bulletmanager.cpp @@ -6,20 +6,27 @@ #include "utility/component.h" #include +#include -void BulletManager::hookEventManager(const std::shared_ptr& eventManager) +void BulletManager::hookEventManager(std::weak_ptr eventManager) { this->eventManager = eventManager; - this->eventManager->subscribe("OnBulletDied", [this](std::shared_ptr e) { - auto bulletEvent = std::static_pointer_cast(e); - auto iterator = std::find_if(bullets.begin(), bullets.end(), [&](std::shared_ptr bullet) { - return bullet->getPhysicsComponent() == bulletEvent->physObj; + if (auto event = this->eventManager.lock()) { + std::weak_ptr weakSelf = shared_from_this(); + event->subscribe("OnBulletDied", [weakSelf](std::shared_ptr e) { + if (auto self = weakSelf.lock()) { + auto bulletEvent = std::static_pointer_cast(e); + auto iterator = std::find_if(self->bullets.begin(), self->bullets.end(), [&](std::shared_ptr bullet) { + return bullet->getPhysicsComponent() == bulletEvent->physObj; + }); + if (iterator != self->bullets.end()) + self->bullets.erase(iterator); + } }); - if (iterator != bullets.end()) - bullets.erase(iterator); - }); + } } + void BulletManager::addBullet(const std::shared_ptr& bullet) { bullets.emplace_back(bullet); @@ -31,10 +38,10 @@ void BulletManager::addBullet(const unsigned int owner, const glm::vec3& fireFro float bulletDrop, glm::vec2 bulletSize, const unsigned& shaderID, - const std::shared_ptr& sprite) + std::unique_ptr sprite) { auto bullet = std::make_shared(owner, shaderID, fireFrom, direction, bulletSpeed, bulletDrop, bulletSize); - bullet->addComponent(sprite); + bullet->addComponent(sprite.get()); //bullet->addPhysicsComponent(phy) bullets.emplace_back(bullet); } @@ -48,8 +55,8 @@ void BulletManager::update(double deltaTime) float distance = glm::distance(bullet->getPhysicsComponent()->rigidBody.position, bullet->getBulletOrigin()); if (distance > bullet->getBulletDrop() || glm::length(bullet->getPhysicsComponent()->rigidBody.velocity) < 100.0f) { - if (eventManager) - eventManager->notify(std::make_shared(bullet->getPhysicsComponent())); + if (auto event = eventManager.lock()) + event->notify(std::make_shared(bullet->getPhysicsComponent())); //bullets.erase(std::remove(bullets.begin(), bullets.end(), bullet)); } } diff --git a/YuppleMayham/src/gameplay/weapons/weapon.cpp b/YuppleMayham/src/gameplay/weapons/weapon.cpp index b022d9b..76878c3 100644 --- a/YuppleMayham/src/gameplay/weapons/weapon.cpp +++ b/YuppleMayham/src/gameplay/weapons/weapon.cpp @@ -17,44 +17,44 @@ Weapon::Weapon(std::shared_ptr data, const unsigned weaponShaderID, const unsigned bulletShaderID, ResourceManager* resourceManager) : Entity (weaponShaderID), - bulletShaderID (bulletShaderID), weaponSize (glm::vec2(data->sizeX, data->sizeY)), weaponOffset (glm::vec2(data->offsetX, data->offsetY)), - weaponMagSize (data->clipSize), weaponMag (data->clipSize), + weaponMagSize (data->clipSize), weaponAmmo (data->maxAmmo), - bulletDrop (data->bulletDrop), bulletSpeed (data->bulletSpeed), - bulletSize (glm::vec2(data->bulletSizeX, data->bulletSizeY)), - bulletSpread (std::make_shared(-data->bulletSpread, data->bulletSpread)), - bulletModifer (std::make_shared(data->modMin, data->modMax)), + bulletDrop (data->bulletDrop), fireSpeed (data->fireSpeed), - bulletManager (std::make_shared()) + bulletSize (glm::vec2(data->bulletSizeX, data->bulletSizeY)), + bulletShaderID (bulletShaderID), + bulletManager (std::make_shared()), + bulletSpread (std::make_unique(-data->bulletSpread, data->bulletSpread)), + bulletModifer (std::make_unique(data->modMin, data->modMax)) { if (data->bulletAnimated) - bulletSprite = std::make_shared(resourceManager->loadAnimationSet(data->bulletGraphic, entityid)); + bulletSprite = std::make_unique(resourceManager->loadAnimationSet(data->bulletGraphic, entityid)); else - bulletSprite = std::make_shared(resourceManager->loadSpriteStatic(data->bulletGraphic)); + bulletSprite = std::make_unique(resourceManager->loadSpriteStatic(data->bulletGraphic)); if (data->animated) { - addComponent(std::make_shared(resourceManager->loadAnimationSet(data->graphic, entityid))); + addComponent(std::make_unique(resourceManager->loadAnimationSet(data->graphic, entityid))); } else - addComponent(std::make_shared(resourceManager->loadSpriteStatic(data->graphic))); + addComponent(std::make_unique(resourceManager->loadSpriteStatic(data->graphic))); this->setScale(glm::vec3(weaponSize.x, weaponSize.y, 1.0f)); }; -void Weapon::addComponent(const std::shared_ptr& comp) { - components.push_back(comp); +void Weapon::addComponent(std::unique_ptr comp) { + components.push_back(std::move(comp)); } void Weapon::reload() { // TODO: Create reload event that will be captured by the gun animation set, to start the reloading animation - if (eventManager) + if (auto event = eventManager.lock()) { - eventManager->notify(std::make_shared(entityid)); + event->notify(std::make_shared(entityid)); reloading = true; if (weaponAmmo < weaponMagSize) { weaponMag = weaponAmmo; @@ -67,8 +67,9 @@ void Weapon::reload() } } -void Weapon::shoot() +bool Weapon::shoot() { + bool shotsFired = false; if (wielder) { Uint32 currentTime = SDL_GetTicks(); @@ -76,8 +77,9 @@ void Weapon::shoot() { if (weaponMag > 0) { - if (eventManager) - eventManager->notify(std::make_shared(entityid, fireSpeed)); + shotsFired = true; + if (auto event = eventManager.lock()) + event->notify(std::make_shared(entityid, fireSpeed)); if (!weaponScript || !weaponScript->lua["onShoot"].valid()) { // create bullet using this generated data @@ -99,32 +101,38 @@ void Weapon::shoot() lastFireTime = currentTime; } } + return shotsFired; } -void Weapon::hookEventManager(const std::shared_ptr& eventManager) +void Weapon::hookEventManager(std::weak_ptr eventManager) { this->eventManager = eventManager; for (auto& component : components) { - auto animComponent = std::dynamic_pointer_cast(component); - if (animComponent != nullptr) + if (component->getType() == Component::TYPE::ANIMATION) { + auto animComponent = static_cast(component.get()); animComponent->getAnimationSet()->attachEventManager(eventManager); } } - this->eventManager->subscribe("OnAnimationFinished", [&, this](std::shared_ptr e) { - auto animFinished = std::static_pointer_cast(e); - if (animFinished->entityid == entityid && animFinished->animType == "reload") - { - if (reloading) - { - reloading = false; - wasReloading = true; + if (auto event = this->eventManager.lock()) { + std::weak_ptr selfWeak = shared_from_this(); + event->subscribe("OnAnimationFinished", [selfWeak](std::shared_ptr e) { + if (auto self = selfWeak.lock()) { + auto animFinished = std::static_pointer_cast(e); + if (animFinished->entityid == self->entityid && animFinished->animType == "reload") + { + if (self->reloading) + { + self->reloading = false; + self->wasReloading = true; + } + } } - } - }); + }); + } bulletManager->hookEventManager(eventManager); } @@ -136,7 +144,7 @@ void Weapon::attachScript(const std::shared_ptr& script) LOG(DEBUG, "Weapon state bound"); } -void Weapon::onHitCallback(std::shared_ptr target, std::shared_ptr bullet, const glm::vec2& normal) +void Weapon::onHitCallback(GameActor* target, PhysicsComponent* bullet, const glm::vec2& normal) { if (weaponScript && weaponScript->lua["onHit"].valid()) { @@ -160,10 +168,12 @@ void Weapon::update(double deltaTime) for (auto& component : components) component->update(); - if (eventManager && wasReloading) + if (wasReloading) { wasReloading = false; - eventManager->notify(std::make_shared(entityid)); + if (auto event = eventManager.lock()) { + event->notify(std::make_shared(entityid)); + } } } bulletManager->update(deltaTime); @@ -242,12 +252,12 @@ Weapon::BulletData Weapon::genBulletData() void Weapon::createBullet(const Weapon::BulletData& data) { auto bullet = std::make_shared(wielder->getEntityID(), bulletShaderID, data.origin, data.direction, bulletSpeed, bulletDrop, bulletSize); - bullet->addComponent(bulletSprite); + bullet->addComponent(bulletSprite.get()); bullet->addPhysicsComponent(std::make_shared(PhysicsComponentFactory::makeBullet(wielder->getEntityID(), data.origin, data.mass, bulletSize.x / 2))); bullet->getPhysicsComponent()->rigidBody.velocity += bulletSpeed * glm::vec3(data.direction.x, data.direction.y, 0.f) / data.mass; - if (eventManager) - eventManager->notify(std::make_shared(bullet)); + if (auto event = eventManager.lock()) + event->notify(std::make_shared(bullet)); bulletManager->addBullet(bullet); } diff --git a/YuppleMayham/src/graphics/animation.cpp b/YuppleMayham/src/graphics/animation.cpp index 2153512..09fbe19 100644 --- a/YuppleMayham/src/graphics/animation.cpp +++ b/YuppleMayham/src/graphics/animation.cpp @@ -7,12 +7,12 @@ Animation::Animation(const std::shared_ptr& animData, ResourceManager* resourceManager) : animName(animData->name), animType(animData->type), + spriteAtlas(resourceManager->loadSpriteAtlas(animData->spriteAtlas, animData->frameSize, animData->directional)), FPS(animData->FPS), currentFrame(0), cycles(0), isDirectional(animData->directional), - isPlaying(isDirectional), - spriteAtlas(resourceManager->loadSpriteAtlas(animData->spriteAtlas, animData->frameSize, animData->directional)) + isPlaying(isDirectional) {} void Animation::bind() @@ -76,22 +76,24 @@ void Animation::frameTick() AnimationSet::AnimationSet(const int& entityid) : entityid(entityid), isDirectional(false) {}; AnimationSet::AnimationSet(const int& entityid, ResourceManager* resourceManager, std::vector> animSet) : entityid(entityid) { + curAnim = nullptr; for (const auto& anim : animSet) { - anims.try_emplace(anim->type, std::make_shared(anim, resourceManager)); + anims.try_emplace(anim->type, std::make_unique(anim, resourceManager)); if (anim->type == "idle") - curAnim = anims[anim->type]; + curAnim = anims[anim->type].get(); } // if we don't have an idle animation, we are just gonna set the current animation to the top of the set if (curAnim == nullptr) - curAnim = anims[animSet[0]->type]; + curAnim = anims[animSet[0]->type].get(); isDirectional = curAnim->getDirectional(); } -AnimationSet::AnimationSet(const int& entityid, const std::unordered_map>& animations) : entityid(entityid), anims(animations) +AnimationSet::AnimationSet(const int& entityid, std::unordered_map> animations) +: entityid(entityid), anims(std::move(animations)) { - for (const auto& [type, anim] : animations) + for (auto& [type, anim] : animations) { - curAnim = anim; + curAnim = anim.get(); if (type == "idle") { break; @@ -100,87 +102,105 @@ AnimationSet::AnimationSet(const int& entityid, const std::unordered_mapgetDirectional(); } -void AnimationSet::attachEventManager(const std::shared_ptr& e) +void AnimationSet::attachEventManager(std::weak_ptr e) { eventManager = e; - eventManager->subscribe("OnDirectionChange", [this](std::shared_ptr e) { - auto directionEvent = std::static_pointer_cast(e); - if (directionEvent->entityid == entityid) - setFacingDir(directionEvent->direction); - }); + if (auto event = eventManager.lock()) { + std::weak_ptr weakSelf = shared_from_this(); - eventManager->subscribe("OnEntityMove", [this](std::shared_ptr e) { - auto moveEvent = std::static_pointer_cast(e); - if (moveEvent->entityid == entityid) - { - if (isDirectional) - { - if (anims["move"] != NULL) - curAnim = anims["move"]; + event->subscribe("OnDirectionChange", [weakSelf](std::shared_ptr e) { + if (auto self = weakSelf.lock()) { + auto directionEvent = std::static_pointer_cast(e); + if (directionEvent->entityid == self->entityid) + self->setFacingDir(directionEvent->direction); } - else - play(); - } - }); + }); - eventManager->subscribe("OnEntityStop", [this](std::shared_ptr e) { - auto stopEvent = std::static_pointer_cast(e); - if (stopEvent->entityid == entityid) - { - if (isDirectional) - { - if (anims["idle"] != NULL) - curAnim = anims["idle"]; + event->subscribe("OnEntityMove", [weakSelf](std::shared_ptr e) { + if (auto self = weakSelf.lock()) { + auto moveEvent = std::static_pointer_cast(e); + if (moveEvent->entityid == self->entityid) + { + if (self->isDirectional) + { + if (self->anims["move"] != NULL) + self->curAnim = self->anims["move"].get(); + } + else + self->play(); + } } - else - stop(); - } - }); + }); - eventManager->subscribe("OnEntityReload", [this](std::shared_ptr e) { - auto reloadEvent = std::static_pointer_cast(e); - if (reloadEvent->entityid == entityid) - { - if (anims["reload"] != NULL) - { - curAnim = anims["reload"]; - curAnim->reset(); + event->subscribe("OnEntityStop", [weakSelf](std::shared_ptr e) { + if (auto self = weakSelf.lock()) { + auto stopEvent = std::static_pointer_cast(e); + if (stopEvent->entityid == self->entityid) + { + if (self->isDirectional) + { + if (self->anims["idle"] != NULL) + self->curAnim = self->anims["idle"].get(); + } + else + self->stop(); + } } - } - }); + }); - eventManager->subscribe("OnEntityFinishReload", [this](std::shared_ptr e) { - auto reloadEvent = std::static_pointer_cast(e); - if (reloadEvent->entityid == entityid) - { - if (anims["idle"] != NULL) - curAnim = anims["idle"]; - } - }); - - eventManager->subscribe("OnEntityFire", [this](std::shared_ptr e) { - auto fireEvent = std::static_pointer_cast(e); - if (fireEvent->entityid == entityid) - { - if (anims["fire"] != NULL) - { - curAnim = anims["fire"]; - curAnim->reset(); - float newFPS = (1000.f / fireEvent->fireDelay) * 15.f; - curAnim->setFPS(newFPS); + event->subscribe("OnEntityReload", [weakSelf](std::shared_ptr e) { + if (auto self = weakSelf.lock()) { + auto reloadEvent = std::static_pointer_cast(e); + if (reloadEvent->entityid == self->entityid) + { + if (self->anims["reload"] != NULL) + { + self->curAnim = self->anims["reload"].get(); + self->curAnim->reset(); + } + } } - } - }); + }); - eventManager->subscribe("OnAnimationFinished", [this](std::shared_ptr e) { - auto animEvent = std::static_pointer_cast(e); - if (animEvent->entityid == entityid && animEvent->animType == "fire") - { - if (anims["idle"] != NULL) - curAnim = anims["idle"]; - } - }); + event->subscribe("OnEntityFinishReload", [weakSelf](std::shared_ptr e) { + if (auto self = weakSelf.lock()) { + auto reloadEvent = std::static_pointer_cast(e); + if (reloadEvent->entityid == self->entityid) + { + if (self->anims["idle"] != NULL) + self->curAnim = self->anims["idle"].get(); + } + } + }); + + event->subscribe("OnEntityFire", [weakSelf](std::shared_ptr e) { + if (auto self = weakSelf.lock()) { + auto fireEvent = std::static_pointer_cast(e); + if (fireEvent->entityid == self->entityid) + { + if (self->anims["fire"] != NULL) + { + self->curAnim = self->anims["fire"].get(); + self->curAnim->reset(); + float newFPS = (1000.f / fireEvent->fireDelay) * 15.f; + self->curAnim->setFPS(newFPS); + } + } + } + }); + + event->subscribe("OnAnimationFinished", [weakSelf](std::shared_ptr e) { + if (auto self = weakSelf.lock()) { + auto animEvent = std::static_pointer_cast(e); + if (animEvent->entityid == self->entityid && animEvent->animType == "fire") + { + if (self->anims["idle"] != NULL) + self->curAnim = self->anims["idle"].get(); + } + } + }); + } } void AnimationSet::bind() @@ -197,11 +217,11 @@ void AnimationSet::draw() curAnim->draw(); // Sending animation events - if (eventManager) - { - // If the animation has cycled, we send this event after every cycle - if ((curAnim->getCycles() - lastCycle) > 0) - eventManager->notify(std::make_shared(entityid, curAnim->getType())); + // If the animation has cycled, we send this event after every cycle + if ((curAnim->getCycles() - lastCycle) > 0) { + if (auto event = eventManager.lock()) { + event->notify(std::make_shared(entityid, curAnim->getType())); + } } } diff --git a/YuppleMayham/src/graphics/postprocess.cpp b/YuppleMayham/src/graphics/postprocess.cpp new file mode 100644 index 0000000..050f69a --- /dev/null +++ b/YuppleMayham/src/graphics/postprocess.cpp @@ -0,0 +1,102 @@ +#include "graphics/postprocess.h" +#include + +Postprocessor::Postprocessor(const std::shared_ptr& resourceManager) +{ + postProcessShader = resourceManager->getShaderByID( + resourceManager->loadShader( + "GL_postprocess", + "shaders/GL_postprocess.vert", + "shaders/GL_postprocess.frag") + ); + // TODO: ADD FALLBACK SHADER! + if (postProcessShader == nullptr) { + LOG(ERROR, "Failed to load post processing shader! 'shaders/GL_postprocess.*"); + assert(postProcessShader != nullptr); // force crash + } + postProcessShader->use(); + postProcessShader->setIntArray("edge_kernel", 9, edge_kernel); + postProcessShader->setFloatArray("blur_kernel", 9, blur_kernel); + + unsigned int uboIndex = glGetUniformBlockIndex(postProcessShader->ID, "uPostProcess"); + if (uboIndex == GL_INVALID_INDEX) { + LOG(ERROR, "Could not find 'uPostProcess'!"); + } + unsigned int bindPoint = 0; + glUniformBlockBinding(postProcessShader->ID, uboIndex, bindPoint); + + glGenBuffers(1, &UBO); + glBindBuffer(GL_UNIFORM_BUFFER, UBO); + glBufferData(GL_UNIFORM_BUFFER, sizeof(PostProcessData_t), NULL, GL_DYNAMIC_DRAW); + glBindBuffer(GL_UNIFORM_BUFFER, 0); + + glBindBufferBase(GL_UNIFORM_BUFFER, bindPoint, UBO); + + lastTime = SDL_GetTicks(); +} + +void Postprocessor::ApplyEffect(EFFECT effect, float intensity, float effectDuration, glm::vec3 colorModifer) +{ + postProcessData.curEffects |= effect; + if ((effect & EFFECT::BLUR) != 0) { + postProcessData.blurIntensity = intensity; + } else if ((effect & EFFECT::SHAKE) != 0) { + postProcessData.shakeIntensity = intensity; + postProcessData.shakeTime = effectDuration; + } + if ((effect & EFFECT::COLORMOD) != 0) { + postProcessData.colorMod = colorModifer; + } +} + +void Postprocessor::RemoveAllEffects() +{ + postProcessData.curEffects = 0; + postProcessData.curEffects_hud = 0; +} + +void Postprocessor::RemoveEffects(EFFECT effect) +{ + postProcessData.curEffects &= (postProcessData.curEffects ^ effect); + postProcessData.curEffects_hud &= (postProcessData.curEffects_hud ^ effect); +} + +void Postprocessor::applyPostProcess(bool worldOrHud) +{ + unsigned int curTime = SDL_GetTicks(); + postProcessData.curTime = curTime; + postProcessData.dt = curTime - lastTime; + + auto subtractTime = [](float remaining, unsigned int dt){ + if ((remaining - 1.0f / static_cast(dt)) <= 0.0f) + return 0.0f; + return remaining - (1.0f / static_cast(dt)); + }; + if (!worldOrHud) + postProcessData.shakeTime = subtractTime(postProcessData.shakeTime, postProcessData.dt); + else + postProcessData.shakeTime_hud = subtractTime(postProcessData.shakeTime_hud, postProcessData.dt); + if (postProcessData.shakeTime <= 0.0f) { + RemoveEffects(SHAKE); + } + + postProcessShader->use(); + postProcessShader->setBool("worldOrHud", worldOrHud); + glBindBuffer(GL_UNIFORM_BUFFER, UBO); + + glBufferSubData(GL_UNIFORM_BUFFER, 0, sizeof(PostProcessData_t), &postProcessData); + + /* + PostProcessData_t* pp_data = (PostProcessData_t*)glMapBuffer( + GL_UNIFORM_BUFFER, + GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_RANGE_BIT | GL_MAP_UNSYNCHRONIZED_BIT); + if (pp_data) { + std::memcpy(pp_data, &postProcessData, sizeof(PostProcessData_t)); + glUnmapBuffer(GL_UNIFORM_BUFFER); + } + */ + + glBindBuffer(GL_UNIFORM_BUFFER, 0); + + lastTime = curTime; +} \ No newline at end of file diff --git a/YuppleMayham/src/graphics/renderer.cpp b/YuppleMayham/src/graphics/renderer.cpp index 0131162..c47ecc9 100644 --- a/YuppleMayham/src/graphics/renderer.cpp +++ b/YuppleMayham/src/graphics/renderer.cpp @@ -2,8 +2,11 @@ #include "graphics/shader.h" #include "utility/resourcemanager.h" #include "utility/logger.h" +#include "utility/events.h" #include +#include +#include Renderer::Renderer(const std::shared_ptr& r) : resourceManager(r) @@ -12,8 +15,21 @@ Renderer::Renderer(const std::shared_ptr& r) viewMat = glm::mat4(0.f); initFrameBuffers(); - loadPostProcessShaders(); screenQuad = std::make_unique(); + postProcessor = std::make_unique(r); +} + +void Renderer::hookEventManager(std::weak_ptr eventManager) +{ + if (auto e = eventManager.lock()) { + e->subscribe("OnScreenShake", [this](std::shared_ptr event) { + auto shakeEvent = std::dynamic_pointer_cast(event); + postProcessor->ApplyEffect(Postprocessor::SHAKE, + shakeEvent->intensity, + shakeEvent->duration + ); + }); + } } // Initialize the framebuffers used by the renderer to allow for post-processing effects @@ -66,20 +82,6 @@ void Renderer::initFrameBuffers() glBindFramebuffer(GL_FRAMEBUFFER, 0); } -void Renderer::loadPostProcessShaders() -{ - postProcess_World = resourceManager->getShaderByID(resourceManager->loadShader("GL_pp_world-DEFAULT", "shaders/GL_pp_world.vert", "shaders/GL_pp_world.frag")); - if (postProcess_World == nullptr) { - LOG(ERROR, "Failed to load world shader: GL_pp_world!"); - assert(1 == 0); // force crash - } - postProcess_HUD = resourceManager->getShaderByID(resourceManager->loadShader("GL_pp_hud-DEFAULT", "shaders/GL_pp_hud.vert", "shaders/GL_pp_hud.frag")); - if (postProcess_HUD == nullptr) { - LOG(ERROR, "Failed to load hud shader: GL_pp_hud!"); - assert(1 == 0); // force crash - } -} - void Renderer::setProjAndViewMatrix(const glm::mat4& proj, const glm::mat4& view) { projMat = proj; @@ -123,11 +125,11 @@ void Renderer::render() glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, worldBuffer.texture); - postProcess_World->use(); + postProcessor->applyPostProcess(0); screenQuad->draw(); glBindTexture(GL_TEXTURE_2D, hudBuffer.texture); - postProcess_HUD->use(); + postProcessor->applyPostProcess(1); screenQuad->draw(); } diff --git a/YuppleMayham/src/graphics/shader.cpp b/YuppleMayham/src/graphics/shader.cpp index b999c07..d4b8432 100644 --- a/YuppleMayham/src/graphics/shader.cpp +++ b/YuppleMayham/src/graphics/shader.cpp @@ -86,6 +86,16 @@ void Shader::setFloat(const std::string& name, float value) glUniform1f(glGetUniformLocation(ID, name.c_str()), value); } +void Shader::setFloatArray(const std::string& name, size_t count, const float* value) +{ + glUniform1fv(glGetUniformLocation(ID, name.c_str()), count, value); +} + +void Shader::setIntArray(const std::string& name, size_t count, const int* value) +{ + glUniform1iv(glGetUniformLocation(ID, name.c_str()), count, value); +} + void Shader::setInt(const std::string& name, int value) { glUniform1i(glGetUniformLocation(ID, name.c_str()), value); diff --git a/compile_commands.json b/compile_commands.json new file mode 100644 index 0000000..611dbce --- /dev/null +++ b/compile_commands.json @@ -0,0 +1,188 @@ +[ +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG /Fo_deps\\tracy-build\\CMakeFiles\\TracyClient.dir\\public\\TracyClient.cpp.obj /Fd_deps\\tracy-build\\CMakeFiles\\TracyClient.dir\\TracyClient.pdb /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public\\TracyClient.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public\\TracyClient.cpp", + "output": "_deps\\tracy-build\\CMakeFiles\\TracyClient.dir\\public\\TracyClient.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\main.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\main.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\main.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\main.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /MD /O2 /Ob2 /DNDEBUG /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\C_\\sdks\\glad\\src\\glad.c.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\sdks\\glad\\src\\glad.c", + "file": "C:\\sdks\\glad\\src\\glad.c", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\C_\\sdks\\glad\\src\\glad.c.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\graphics\\sprite.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\graphics\\sprite.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\graphics\\sprite.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\graphics\\sprite.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\graphics\\mesh.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\graphics\\mesh.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\graphics\\mesh.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\graphics\\mesh.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\entity.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\entity.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\entity.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\entity.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\gameactor.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\gameactor.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\gameactor.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\gameactor.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\graphics\\shader.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\graphics\\shader.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\graphics\\shader.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\graphics\\shader.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\util.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\util.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\util.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\util.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\camera.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\camera.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\camera.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\camera.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\utility\\command.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\utility\\command.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\utility\\command.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\utility\\command.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\input.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\input.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\input.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\input.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\weapons\\bullet.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\weapons\\bullet.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\weapons\\bullet.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\weapons\\bullet.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\weapons\\bulletmanager.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\weapons\\bulletmanager.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\weapons\\bulletmanager.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\weapons\\bulletmanager.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\scene.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\scene.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\scene.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\scene.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\graphics\\texture.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\graphics\\texture.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\graphics\\texture.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\graphics\\texture.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\utility\\resourcemanager.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\utility\\resourcemanager.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\utility\\resourcemanager.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\utility\\resourcemanager.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\utility\\xmlloader.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\utility\\xmlloader.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\utility\\xmlloader.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\utility\\xmlloader.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\game.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\game.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\game.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\game.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\graphics\\instancedraw.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\graphics\\instancedraw.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\graphics\\instancedraw.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\graphics\\instancedraw.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\map.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\map.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\map.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\map.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\weapons\\weapon.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\weapons\\weapon.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\weapons\\weapon.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\weapons\\weapon.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\physics.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\physics.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\physics.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\physics.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\utility\\debugdraw.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\utility\\debugdraw.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\utility\\debugdraw.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\utility\\debugdraw.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\utility\\script.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\utility\\script.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\utility\\script.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\utility\\script.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\ai.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\ai.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\gameplay\\ai.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\gameplay\\ai.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\utility\\ftfont.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\utility\\ftfont.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\utility\\ftfont.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\utility\\ftfont.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\graphics\\quad.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\graphics\\quad.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\graphics\\quad.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\graphics\\quad.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\graphics\\animation.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\graphics\\animation.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\graphics\\animation.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\graphics\\animation.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\utility\\logger.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\utility\\logger.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\utility\\logger.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\utility\\logger.cpp.obj" +}, +{ + "directory": "C:/Users/Ethan/source/repos/YuppleMayham/out/build/x64-release", + "command": "C:\\PROGRA~1\\MIB055~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1439~1.335\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -DTRACY_ENABLE -DTRACY_ONLY_LOCALHOST -DTRACY_ON_DEMAND -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\include -external:Ic:\\sdks\\glad\\include -external:Ic:\\sdks\\tinyxml2-10.0.0\\debug\\include -external:Ic:\\sdks\\glm -external:IC:\\sdks\\sol2-3.3.0\\single\\single\\include -external:Ic:\\sdks\\lua-5.4.6\\include -external:IC:\\sdks\\freetype-2.13.2\\include -external:IC:\\sdks\\sdl2\\cmake\\..\\include -external:IC:\\sdks\\SDL2_image-2.8.2\\cmake\\..\\include -external:IC:\\Users\\Ethan\\source\\repos\\YuppleMayham\\out\\build\\x64-release\\_deps\\tracy-src\\public -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /O2 /Ob2 /DNDEBUG -std:c++20 /FoYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\graphics\\renderer.cpp.obj /FdYuppleMayham\\CMakeFiles\\YuppleMayham.dir\\ /FS -c C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\graphics\\renderer.cpp", + "file": "C:\\Users\\Ethan\\source\\repos\\YuppleMayham\\YuppleMayham\\src\\graphics\\renderer.cpp", + "output": "YuppleMayham\\CMakeFiles\\YuppleMayham.dir\\src\\graphics\\renderer.cpp.obj" +} +] \ No newline at end of file