Merge remote-tracking branch 'origin/master' into Animations
# Conflicts: # include/Engine/Rendering/ModelJob.h # resources/Schema/Components.xsd # resources/Schema/Types/Entity.xsd # src/Engine/Rendering/DrawFinalPass.cpp # src/Engine/Rendering/PickingPass.cpp # src/Engine/Rendering/Renderer.cpp # src/Engine/Rendering/Skeleton.cpp
This commit is contained in:
@@ -8,7 +8,7 @@ namespace Events
|
||||
|
||||
struct DoubleJump : public Event
|
||||
{
|
||||
|
||||
EntityID entityID;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
+3
-2
@@ -8,7 +8,6 @@
|
||||
#include "Core/EventBroker.h"
|
||||
#include "Rendering/Renderer.h"
|
||||
#include "Core/InputManager.h"
|
||||
#include "GUI/Frame.h"
|
||||
#include "Core/World.h"
|
||||
#include "Input/InputProxy.h"
|
||||
#include "Input/KeyboardInputHandler.h"
|
||||
@@ -35,6 +34,9 @@
|
||||
#include "Sound/SoundManager.h"
|
||||
#include "Systems/SoundSystem.h"
|
||||
|
||||
//Performance
|
||||
#include "Core/PerformanceTimer.h"
|
||||
|
||||
class Game
|
||||
{
|
||||
public:
|
||||
@@ -53,7 +55,6 @@ private:
|
||||
IRenderer* m_Renderer;
|
||||
InputManager* m_InputManager;
|
||||
InputProxy* m_InputProxy;
|
||||
GUI::Frame* m_FrameStack;
|
||||
World* m_World;
|
||||
Octree<EntityAABB>* m_OctreeCollision;
|
||||
Octree<EntityAABB>* m_OctreeTrigger;
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
#ifndef MiniDump_h__
|
||||
#define MiniDump_h__
|
||||
|
||||
#include <Windows.h>
|
||||
|
||||
void WINAPI Create_Dump(PEXCEPTION_POINTERS pException, BOOL File_Flag, BOOL Show_Flag);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,33 @@
|
||||
#ifndef AmmoPickupSystem_h__
|
||||
#define AmmoPickupSystem_h__
|
||||
|
||||
#include "Core/System.h"
|
||||
#include "Core/Transform.h"
|
||||
#include "Core/ResourceManager.h"
|
||||
#include "Core/EntityFileParser.h"
|
||||
#include "Core/EPickupSpawned.h"
|
||||
#include "Core/EAmmoPickup.h"
|
||||
#include "Engine/Collision/ETrigger.h"
|
||||
#include "Common.h"
|
||||
|
||||
class AmmoPickupSystem : public ImpureSystem
|
||||
{
|
||||
public:
|
||||
AmmoPickupSystem(SystemParams params);
|
||||
|
||||
virtual void Update(double dt) override;
|
||||
|
||||
private:
|
||||
EventRelay<AmmoPickupSystem, Events::TriggerTouch> m_ETriggerTouch;
|
||||
bool OnTriggerTouch(Events::TriggerTouch& e);
|
||||
|
||||
struct NewAmmoPickup {
|
||||
glm::vec3 Pos;
|
||||
double AmmoGain;
|
||||
double RespawnTimer;
|
||||
double DecreaseThisRespawnTimer;
|
||||
EntityID parentID;
|
||||
};
|
||||
std::vector<NewAmmoPickup> m_ETriggerTouchVector;
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,17 @@
|
||||
#ifndef AmmunitionHUDSystem_h__
|
||||
#define AmmunitionHUDSystem_h__
|
||||
|
||||
#include "../../Engine/Core/System.h"
|
||||
#include "../../Engine/GLM.h"
|
||||
|
||||
class AmmunitionHUDSystem : public ImpureSystem
|
||||
{
|
||||
public:
|
||||
AmmunitionHUDSystem(SystemParams params)
|
||||
: System(params)
|
||||
{ }
|
||||
|
||||
virtual void Update(double dt) override;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -14,11 +14,13 @@
|
||||
#include <glm/gtx/vector_angle.hpp>
|
||||
|
||||
#include "Rendering/Util/CommonFunctions.h"
|
||||
//#define INDICATOR_TEST
|
||||
|
||||
class DamageIndicatorSystem : public System
|
||||
class DamageIndicatorSystem : public ImpureSystem
|
||||
{
|
||||
public:
|
||||
DamageIndicatorSystem(SystemParams params);
|
||||
virtual void Update(double dt) override;
|
||||
|
||||
private:
|
||||
EventRelay<DamageIndicatorSystem, Events::PlayerDamage> m_EPlayerDamage;
|
||||
@@ -28,6 +30,20 @@ private:
|
||||
bool OnSetCamera(const Events::SetCamera& e);
|
||||
|
||||
EntityID m_CurrentCamera = -1;
|
||||
struct DamageIndicatorStruct {
|
||||
EntityWrapper spriteEntity;
|
||||
glm::vec3 enemyPosition;
|
||||
DamageIndicatorStruct(EntityWrapper sprite, glm::vec3 pos)
|
||||
: spriteEntity(sprite)
|
||||
, enemyPosition(pos) {}
|
||||
};
|
||||
std::vector<DamageIndicatorStruct> updateDamageIndicatorVector;
|
||||
float CalculateAngle(EntityWrapper player, glm::vec3 enemyPos);
|
||||
|
||||
//for tests
|
||||
#ifdef INDICATOR_TEST
|
||||
glm::vec3 DamageIndicatorTest(EntityWrapper player);
|
||||
int m_TestVar = 0;
|
||||
#endif
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -3,13 +3,11 @@
|
||||
|
||||
#include "../../Engine/Core/System.h"
|
||||
#include "../../Engine/GLM.h"
|
||||
#include "../../Engine/Rendering/ESetCamera.h"
|
||||
#include <imgui/imgui.h>
|
||||
|
||||
class PlayerHUDSystem : public ImpureSystem
|
||||
class HealthHUDSystem : public ImpureSystem
|
||||
{
|
||||
public:
|
||||
PlayerHUDSystem(SystemParams params)
|
||||
HealthHUDSystem(SystemParams params)
|
||||
: System(params)
|
||||
{ }
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
#include "Core/EPlayerDamage.h"
|
||||
#include "Core/EPlayerHealthPickup.h"
|
||||
#include "Core/EPlayerDeath.h"
|
||||
#include "Core/ConfigFile.h"
|
||||
#include "Input/EInputCommand.h"
|
||||
|
||||
#include <tuple>
|
||||
#include <vector>
|
||||
@@ -23,15 +25,18 @@ public:
|
||||
virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& component, double dt) override;
|
||||
|
||||
private:
|
||||
//methods which will take care of specific events
|
||||
bool m_NetworkEnabled;
|
||||
|
||||
// methods which will take care of specific events
|
||||
EventRelay<HealthSystem, Events::PlayerDamage> m_EPlayerDamage;
|
||||
bool HealthSystem::OnPlayerDamaged(Events::PlayerDamage& e);
|
||||
EventRelay<HealthSystem, Events::PlayerHealthPickup> m_EPlayerHealthPickup;
|
||||
bool HealthSystem::OnPlayerHealthPickup(Events::PlayerHealthPickup& e);
|
||||
EventRelay<HealthSystem, Events::InputCommand> m_InputCommand;
|
||||
bool HealthSystem::OnInputCommand(Events::InputCommand& e);
|
||||
|
||||
//vector which will keep track of health changes
|
||||
std::vector<std::tuple<EntityID, double>> m_DeltaHealthVector;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,39 @@
|
||||
#ifndef KillFeedSystem_h__
|
||||
#define KillFeedSystem_h__
|
||||
|
||||
#include "../../Engine/Core/System.h"
|
||||
#include "../../Engine/GLM.h"
|
||||
#include "Core/EPlayerDeath.h"
|
||||
|
||||
class KillFeedSystem : public ImpureSystem
|
||||
{
|
||||
public:
|
||||
KillFeedSystem(SystemParams params)
|
||||
: System(params)
|
||||
{
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EPlayerDeath, &KillFeedSystem::OnPlayerDeath);
|
||||
|
||||
}
|
||||
|
||||
virtual void Update(double dt) override;
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
|
||||
EventRelay<KillFeedSystem, Events::PlayerDeath> m_EPlayerDeath;
|
||||
bool KillFeedSystem::OnPlayerDeath(Events::PlayerDeath& e);
|
||||
|
||||
struct KillFeedInfo
|
||||
{
|
||||
std::string Content;
|
||||
glm::vec4 Color;
|
||||
float TimeToLive = 5.f;
|
||||
};
|
||||
|
||||
std::list<KillFeedInfo> m_DeathQueue;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -27,6 +27,7 @@ private:
|
||||
double HealthGain;
|
||||
double RespawnTimer;
|
||||
double DecreaseThisRespawnTimer;
|
||||
EntityID parentID;
|
||||
};
|
||||
std::vector<NewHealthPickup> m_ETriggerTouchVector;
|
||||
};
|
||||
|
||||
@@ -34,10 +34,14 @@ private:
|
||||
glm::vec3 m_LastPosition = glm::vec3();
|
||||
// The logic for making the sound play when player is moving
|
||||
void playerStep(double dt);
|
||||
// Spawn a hexagon at origin of an Entity
|
||||
void spawnHexagon(EntityWrapper target);
|
||||
|
||||
EventRelay<PlayerMovementSystem, Events::PlayerSpawned> m_EPlayerSpawned;
|
||||
bool OnPlayerSpawned(Events::PlayerSpawned& e);
|
||||
EventRelay<PlayerMovementSystem, Events::DoubleJump> m_EDoubleJump;
|
||||
bool PlayerMovementSystem::OnDoubleJump(Events::DoubleJump & e);
|
||||
|
||||
void updateMovementControllers(double dt);
|
||||
void updateVelocity(double dt);
|
||||
void updateVelocity(EntityWrapper player, double dt);
|
||||
};
|
||||
@@ -13,6 +13,8 @@ public:
|
||||
PlayerSpawnSystem(SystemParams params);
|
||||
|
||||
virtual void Update(double dt) override;
|
||||
|
||||
static void SetRespawnTime(float respawnTime) { m_RespawnTime = respawnTime; };
|
||||
|
||||
private:
|
||||
struct SpawnRequest
|
||||
@@ -23,10 +25,19 @@ private:
|
||||
|
||||
bool m_NetworkEnabled = false;
|
||||
std::vector<SpawnRequest> m_SpawnRequests;
|
||||
|
||||
//Player ID -> EntityWrapper.
|
||||
std::map<int, EntityWrapper> m_PlayerEntities;
|
||||
//EntityWrapper ID -> Player ID.
|
||||
std::map<EntityID, int> m_PlayerIDs;
|
||||
|
||||
static float m_RespawnTime;
|
||||
float m_Timer;
|
||||
|
||||
EventRelay<PlayerSpawnSystem, Events::InputCommand> m_OnInputCommand;
|
||||
bool OnInputCommand(const Events::InputCommand& e);
|
||||
bool OnInputCommand(Events::InputCommand& e);
|
||||
EventRelay<PlayerSpawnSystem, Events::PlayerSpawned> m_OnPlayerSpawnerd;
|
||||
bool OnPlayerSpawned(Events::PlayerSpawned& e);
|
||||
EventRelay<PlayerSpawnSystem, Events::PlayerDeath> m_OnPlayerDeath;
|
||||
bool OnPlayerDeath(Events::PlayerDeath& e);
|
||||
};
|
||||
@@ -15,11 +15,16 @@ class SpawnerSystem : public System
|
||||
public:
|
||||
SpawnerSystem(SystemParams params);
|
||||
|
||||
static EntityWrapper Spawn(EntityWrapper spawner, EntityWrapper parent = EntityWrapper::Invalid);
|
||||
// If dontCollideComponent is set, to e.g. "Player", then all the spawner
|
||||
// will try to pick a spawn location so that the spawned entity doesn't
|
||||
// collide with anything that has that component and is collidable.
|
||||
static EntityWrapper Spawn(EntityWrapper spawner, EntityWrapper parent = EntityWrapper::Invalid, const std::string& dontCollideComponent = "");
|
||||
|
||||
private:
|
||||
EventRelay<SpawnerSystem, Events::SpawnerSpawn> m_OnSpawnerSpawn;
|
||||
bool OnSpawnerSpawn(Events::SpawnerSpawn& e);
|
||||
static void transformEntityToSpawnPoint(EntityWrapper spawnedEntity, EntityWrapper spawnPoint);
|
||||
static bool spawnedEntityIsColliding(EntityWrapper spawnedEntity, EntityWrapper spawnPoint, const std::string& dontCollideComponent);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,11 +1,13 @@
|
||||
#include "Sound/EPlaySoundOnEntity.h"
|
||||
#include "Collision/Collision.h"
|
||||
#include "Rendering/AnimationSystem.h"
|
||||
#include "Core/ConfigFile.h"
|
||||
#include "WeaponBehaviour.h"
|
||||
#include "../SpawnerSystem.h"
|
||||
#include "Core/EPlayerDamage.h"
|
||||
#include "Core/EShoot.h"
|
||||
|
||||
|
||||
class AssaultWeaponBehaviour : public WeaponBehaviour
|
||||
{
|
||||
public:
|
||||
@@ -19,11 +21,13 @@ public:
|
||||
|
||||
private:
|
||||
EntityWrapper m_FirstPersonModel;
|
||||
EntityWrapper m_ThirdPersonModel;
|
||||
// State
|
||||
bool m_Firing = false;
|
||||
bool m_Reloading = false;
|
||||
double m_ReloadTimer = 0.0;
|
||||
EntityWrapper m_ReloadImpersonator;
|
||||
EntityWrapper m_FirstPersonReloadImpersonator;
|
||||
EntityWrapper m_ThirdPersonReloadImpersonator;
|
||||
double m_TimeSinceLastFire = 0.0;
|
||||
|
||||
EventRelay<WeaponBehaviour, Events::AnimationComplete> m_EAnimationComplete;
|
||||
@@ -33,7 +37,8 @@ private:
|
||||
void fireRound();
|
||||
void spawnTracer();
|
||||
float traceRayDistance(glm::vec3 origin, glm::vec3 direction);
|
||||
void playSound();
|
||||
void playFireSound();
|
||||
void playEmptySound();
|
||||
void viewPunch();
|
||||
void finishReload();
|
||||
void playShootAnimation();
|
||||
|
||||
Reference in New Issue
Block a user