Merge remote-tracking branch 'origin/main' into SP3-2-Physics
This commit is contained in:
commit
4007120dbd
|
@ -68,9 +68,16 @@ project "SHADE_Application"
|
|||
|
||||
disablewarnings
|
||||
{
|
||||
"4251"
|
||||
"4251",
|
||||
"26812",
|
||||
"26439",
|
||||
"26451",
|
||||
"26437",
|
||||
"4275"
|
||||
}
|
||||
|
||||
linkoptions { "-IGNORE:4006" }
|
||||
|
||||
warnings 'Extra'
|
||||
|
||||
filter "configurations:Debug"
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
#include <chrono>
|
||||
#include <ratio>
|
||||
#include <ctime>
|
||||
#define SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN 1
|
||||
#include <SDL.h>
|
||||
|
||||
|
||||
|
@ -25,11 +24,10 @@
|
|||
#include "Scene/SHSceneManager.h"
|
||||
|
||||
// Systems
|
||||
#include "Input/SHInputManagerSystem.h"
|
||||
#include "Scripting/SHScriptEngine.h"
|
||||
#include "Physics/SHPhysicsSystem.h"
|
||||
#include "Math/Transform/SHTransformSystem.h"
|
||||
#include "Input/SHInputManagerSystem.h"
|
||||
#include "Input/SHInputManager.h"
|
||||
#include "FRC/SHFramerateController.h"
|
||||
#include "AudioSystem/SHAudioSystem.h"
|
||||
|
||||
|
@ -68,12 +66,9 @@ namespace Sandbox
|
|||
SHADE::SHSystemManager::CreateSystem<SHADE::SHPhysicsSystem>();
|
||||
SHADE::SHSystemManager::CreateSystem<SHADE::SHTransformSystem>();
|
||||
SHADE::SHGraphicsSystem* graphicsSystem = static_cast<SHADE::SHGraphicsSystem*>(SHADE::SHSystemManager::GetSystem<SHADE::SHGraphicsSystem>());
|
||||
SHADE::SHSystemManager::CreateSystem<SHADE::SHInputManagerSystem>();
|
||||
SHADE::SHSystemManager::CreateSystem<SHADE::SHAudioSystem>();
|
||||
|
||||
// Create Routines
|
||||
SHADE::SHSystemManager::RegisterRoutine<SHADE::SHInputManagerSystem, SHADE::SHInputManagerSystem::InputManagerRoutine>();
|
||||
|
||||
SHADE::SHSystemManager::RegisterRoutine<SHADE::SHScriptEngine, SHADE::SHScriptEngine::FrameSetUpRoutine>();
|
||||
SHADE::SHSystemManager::RegisterRoutine<SHADE::SHScriptEngine, SHADE::SHScriptEngine::UpdateRoutine>();
|
||||
SHADE::SHSystemManager::RegisterRoutine<SHADE::SHScriptEngine, SHADE::SHScriptEngine::LateUpdateRoutine>();
|
||||
|
@ -134,6 +129,7 @@ namespace Sandbox
|
|||
while (!window.WindowShouldClose())
|
||||
{
|
||||
SHFrameRateController::UpdateFRC();
|
||||
SHInputManager::UpdateInput(SHFrameRateController::GetRawDeltaTime());
|
||||
SHSceneManager::UpdateSceneManager();
|
||||
SHSceneManager::SceneUpdate(1/60.0f);
|
||||
//#ifdef SHEDITOR
|
||||
|
|
|
@ -76,9 +76,16 @@ project "SHADE_Engine"
|
|||
|
||||
disablewarnings
|
||||
{
|
||||
"4251"
|
||||
"4251",
|
||||
"26812",
|
||||
"26439",
|
||||
"26451",
|
||||
"26437",
|
||||
"4275"
|
||||
}
|
||||
|
||||
linkoptions { "-IGNORE:4006" }
|
||||
|
||||
defines
|
||||
{
|
||||
"_LIB",
|
||||
|
|
|
@ -90,7 +90,7 @@ namespace SHADE
|
|||
//PlayEventOnce("event:/SFX/Dawn/Dawn_Attack");
|
||||
}
|
||||
|
||||
void SHADE::SHAudioSystem::Run(float dt)
|
||||
void SHADE::SHAudioSystem::Run(double dt)
|
||||
{
|
||||
static_cast<void>(dt);
|
||||
//if (GetKeyState(VK_SPACE) & 0x8000)
|
||||
|
@ -417,7 +417,7 @@ namespace SHADE
|
|||
int instanceCount = 0;
|
||||
event.second->getInstanceCount(&instanceCount);
|
||||
std::vector<FMOD::Studio::EventInstance*> instances(instanceCount);
|
||||
event.second->getInstanceList(instances.data(), instances.size(), &instanceCount);
|
||||
event.second->getInstanceList(instances.data(), static_cast<int>(instances.size()), &instanceCount);
|
||||
for (auto const& instance : instances)
|
||||
{
|
||||
instance->setPaused(pause);
|
||||
|
|
|
@ -50,7 +50,7 @@ namespace SHADE
|
|||
~SHAudioSystem();
|
||||
|
||||
void Init();
|
||||
void Run(float dt);
|
||||
void Run(double dt);
|
||||
class SH_API AudioRoutine final : public SHSystemRoutine
|
||||
{
|
||||
public:
|
||||
|
|
|
@ -114,7 +114,7 @@ namespace SHADE
|
|||
|
||||
auto* entity = SHEntityManager::GetEntityByID(currentNode->GetEntityID());
|
||||
//Draw Node
|
||||
bool isNodeOpen = ImGui::TreeNodeEx((void*)eid, nodeFlags, "%u: %s", EntityHandleGenerator::GetIndex(eid), entity->name.c_str());
|
||||
bool isNodeOpen = ImGui::TreeNodeEx(reinterpret_cast<void*>(entity), nodeFlags, "%u: %s", EntityHandleGenerator::GetIndex(eid), entity->name.c_str());
|
||||
const ImRect nodeRect = ImRect(ImGui::GetItemRectMin(), ImGui::GetItemRectMax());
|
||||
|
||||
//Check For Begin Drag
|
||||
|
|
|
@ -843,7 +843,7 @@
|
|||
#define ICON_MD_FLIP_TO_FRONT "\xee\xa2\x83" // U+e883
|
||||
#define ICON_MD_FLOOD "\xee\xaf\xa6" // U+ebe6
|
||||
#define ICON_MD_FLOURESCENT "\xee\xb0\xb1" // U+ec31
|
||||
#define ICON_MD_FLOURESCENT "\xef\x80\x8d" // U+f00d
|
||||
#define ICON_MD_FLOURESCENT2 "\xef\x80\x8d" // U+f00d
|
||||
#define ICON_MD_FLUORESCENT "\xee\xb0\xb1" // U+ec31
|
||||
#define ICON_MD_FLUTTER_DASH "\xee\x80\x8b" // U+e00b
|
||||
#define ICON_MD_FMD_BAD "\xef\x80\x8e" // U+f00e
|
||||
|
|
|
@ -327,7 +327,7 @@ namespace SHADE
|
|||
ImGui::PushID(fieldLabel.c_str());
|
||||
ImGui::Text(fieldLabel.c_str()); ImGui::SameLine();
|
||||
|
||||
if (edited = ImGui::Combo("##Combo", &selected, list.data(), list.size()))
|
||||
if (edited = ImGui::Combo("##Combo", &selected, list.data(), static_cast<int>(list.size())))
|
||||
{
|
||||
SHCommandManager::PerformCommand(std::reinterpret_pointer_cast<SHBaseCommand>(std::make_shared<SHCommand<int>>(get(), selected, set)), false);
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#include "SHWindowMap.h"
|
||||
#include "SHWindow.h"
|
||||
#include "ECS_Base/Managers/SHSystemManager.h"
|
||||
#include "Input/SHInputManagerSystem.h"
|
||||
#include "Input/SHInputManager.h"
|
||||
|
||||
|
||||
namespace SHADE
|
||||
|
@ -343,10 +343,7 @@ namespace SHADE
|
|||
}
|
||||
case WM_MOUSEWHEEL:
|
||||
{
|
||||
if (auto im = SHSystemManager::GetSystem<SHInputManagerSystem>())
|
||||
{
|
||||
im->PollWheelVerticalDelta(wparam);
|
||||
}
|
||||
SHInputManager::PollWheelVerticalDelta(wparam);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*********************************************************************
|
||||
* \file SHInputManagerSystem.cpp
|
||||
* \file SHInputManager.cpp
|
||||
* \author Ryan Wang Nian Jing
|
||||
* \brief Definition of input manager.
|
||||
* Handles input from keyboard and mouse. Soon to include controller.
|
||||
|
@ -11,7 +11,8 @@
|
|||
|
||||
#pragma once
|
||||
#include <SHpch.h>
|
||||
#include "SHInputManagerSystem.h"
|
||||
#include "SHInputManager.h"
|
||||
#include "../Tools/SHException.h"
|
||||
|
||||
namespace SHADE
|
||||
{
|
||||
|
@ -19,61 +20,34 @@ namespace SHADE
|
|||
/* Static defines */
|
||||
/*------------------------------------------------------------------------*/
|
||||
|
||||
unsigned SHInputManagerSystem::keyCount = 0;
|
||||
bool SHInputManagerSystem::keys[MAX_KEYS];
|
||||
bool SHInputManagerSystem::keysLast[MAX_KEYS];
|
||||
double SHInputManagerSystem::keysHeldTime[MAX_KEYS];
|
||||
double SHInputManagerSystem::keysReleasedTime[MAX_KEYS];
|
||||
unsigned SHInputManager::keyCount = 0;
|
||||
bool SHInputManager::keys[MAX_KEYS];
|
||||
bool SHInputManager::keysLast[MAX_KEYS];
|
||||
double SHInputManager::keysHeldTime[MAX_KEYS];
|
||||
double SHInputManager::keysReleasedTime[MAX_KEYS];
|
||||
|
||||
unsigned SHInputManagerSystem::keyToggleCount = 0;
|
||||
bool SHInputManagerSystem::keysToggle[MAX_KEYS];
|
||||
bool SHInputManagerSystem::keysToggleLast[MAX_KEYS];
|
||||
double SHInputManagerSystem::keysToggleOnTime[MAX_KEYS];
|
||||
double SHInputManagerSystem::keysToggleOffTime[MAX_KEYS];
|
||||
unsigned SHInputManager::keyToggleCount = 0;
|
||||
bool SHInputManager::keysToggle[MAX_KEYS];
|
||||
bool SHInputManager::keysToggleLast[MAX_KEYS];
|
||||
double SHInputManager::keysToggleOnTime[MAX_KEYS];
|
||||
double SHInputManager::keysToggleOffTime[MAX_KEYS];
|
||||
|
||||
int SHInputManagerSystem::mouseScreenX = 0;
|
||||
int SHInputManagerSystem::mouseScreenY = 0;
|
||||
int SHInputManagerSystem::mouseScreenXLast = 0;
|
||||
int SHInputManagerSystem::mouseScreenYLast = 0;
|
||||
double SHInputManagerSystem::mouseVelocityX = 0;
|
||||
double SHInputManagerSystem::mouseVelocityY = 0;
|
||||
int SHInputManagerSystem::mouseWheelVerticalDelta = 0;
|
||||
int SHInputManagerSystem::mouseWheelVerticalDeltaPoll = 0;
|
||||
int SHInputManager::mouseScreenX = 0;
|
||||
int SHInputManager::mouseScreenY = 0;
|
||||
int SHInputManager::mouseScreenXLast = 0;
|
||||
int SHInputManager::mouseScreenYLast = 0;
|
||||
double SHInputManager::mouseVelocityX = 0;
|
||||
double SHInputManager::mouseVelocityY = 0;
|
||||
int SHInputManager::mouseWheelVerticalDelta = 0;
|
||||
int SHInputManager::mouseWheelVerticalDeltaPoll = 0;
|
||||
|
||||
void SHInputManagerSystem::Init()
|
||||
{
|
||||
keyCount = 0;
|
||||
SecureZeroMemory(keys, sizeof(keys));
|
||||
SecureZeroMemory(keysLast, sizeof(keysLast));
|
||||
SecureZeroMemory(keysHeldTime, sizeof(keysHeldTime));
|
||||
SecureZeroMemory(keysReleasedTime, sizeof(keysReleasedTime));
|
||||
|
||||
keyToggleCount = 0;
|
||||
SecureZeroMemory(keysToggle, sizeof(keysToggle));
|
||||
SecureZeroMemory(keysToggleLast, sizeof(keysToggleLast));
|
||||
SecureZeroMemory(keysToggleOnTime, sizeof(keysToggleOnTime));
|
||||
SecureZeroMemory(keysToggleOffTime, sizeof(keysToggleOffTime));
|
||||
|
||||
mouseScreenX = 0;
|
||||
mouseScreenY = 0;
|
||||
mouseScreenXLast = 0;
|
||||
mouseScreenYLast = 0;
|
||||
mouseWheelVerticalDelta = 0;
|
||||
mouseWheelVerticalDeltaPoll = 0;
|
||||
}
|
||||
|
||||
void SHInputManagerSystem::Exit()
|
||||
{
|
||||
//No dynamically allocated memory. Nothing to do here.
|
||||
}
|
||||
|
||||
void SHInputManagerSystem::InputManagerRoutine::
|
||||
FixedExecute(double dt) noexcept
|
||||
void SHInputManager::UpdateInput(double dt) noexcept
|
||||
{
|
||||
//Keyboard and Mouse Buttons////////////////////////////////////////////////
|
||||
//Poll
|
||||
unsigned char keyboardState[MAX_KEYS];
|
||||
GetKeyboardState(keyboardState);
|
||||
//if (GetKeyboardState(keyboardState) == false) return;
|
||||
SHASSERT(GetKeyboardState(keyboardState), "SHInputManager:GetKeyboardState() failed ({})", GetLastError());
|
||||
keyCount = 0;
|
||||
keyToggleCount = 0;
|
||||
for (size_t i = 0; i < MAX_KEYS; ++i)
|
||||
|
@ -138,13 +112,17 @@ namespace SHADE
|
|||
mouseScreenX = p.x;
|
||||
mouseScreenY = p.y;
|
||||
|
||||
//Velocity
|
||||
mouseVelocityX = static_cast<double>(mouseScreenX - mouseScreenXLast) / dt;
|
||||
mouseVelocityY = static_cast<double>(mouseScreenY - mouseScreenYLast) / dt;
|
||||
|
||||
//Mouse wheel vertical delta updating
|
||||
mouseWheelVerticalDelta = 0;
|
||||
mouseWheelVerticalDelta = mouseWheelVerticalDeltaPoll;
|
||||
mouseWheelVerticalDeltaPoll = 0;
|
||||
}
|
||||
|
||||
bool SHInputManagerSystem::AnyKeyDown(SH_KEYCODE* firstDetected) noexcept
|
||||
bool SHInputManager::AnyKeyDown(SH_KEYCODE* firstDetected) noexcept
|
||||
{
|
||||
for (size_t i = 0; i < MAX_KEYS; ++i)
|
||||
{
|
||||
|
@ -157,7 +135,7 @@ namespace SHADE
|
|||
return false;
|
||||
}
|
||||
|
||||
bool SHInputManagerSystem::AnyKey(SH_KEYCODE* firstDetected) noexcept
|
||||
bool SHInputManager::AnyKey(SH_KEYCODE* firstDetected) noexcept
|
||||
{
|
||||
for (size_t i = 0; i < MAX_KEYS; ++i)
|
||||
{
|
||||
|
@ -170,7 +148,7 @@ namespace SHADE
|
|||
return false;
|
||||
}
|
||||
|
||||
bool SHInputManagerSystem::AnyKeyUp(SH_KEYCODE* firstDetected) noexcept
|
||||
bool SHInputManager::AnyKeyUp(SH_KEYCODE* firstDetected) noexcept
|
||||
{
|
||||
for (size_t i = 0; i < MAX_KEYS; ++i)
|
||||
{
|
|
@ -1,5 +1,5 @@
|
|||
/*********************************************************************
|
||||
* \file SHInputManagerSystem.h
|
||||
* \file SHInputManager.h
|
||||
* \author Ryan Wang Nian Jing
|
||||
* \brief Declaration of input manager.
|
||||
* Handles input from keyboard and mouse. Soon to include controller.
|
||||
|
@ -13,19 +13,12 @@
|
|||
//#include <Xinput.h>
|
||||
//#include "../../SHADE_Managed/src/SHpch.h"
|
||||
#include "SH_API.h"
|
||||
#include "ECS_Base/System/SHSystem.h"
|
||||
#include "ECS_Base/System/SHFixedSystemRoutine.h"
|
||||
|
||||
namespace SHADE
|
||||
{
|
||||
class SH_API SHInputManagerSystem : public SHSystem
|
||||
class SH_API SHInputManager
|
||||
{
|
||||
public:
|
||||
class SH_API InputManagerRoutine : public SHFixedSystemRoutine
|
||||
{
|
||||
public:
|
||||
virtual void FixedExecute(double dt) noexcept override final;
|
||||
};
|
||||
|
||||
public:
|
||||
/*------------------------------------------------------------------------*/
|
||||
|
@ -276,23 +269,21 @@ namespace SHADE
|
|||
};
|
||||
|
||||
public:
|
||||
//Updates current state of the input, with dt to be fetched from FRC
|
||||
//TODO should dt be fixed or variable?
|
||||
static void UpdateInput(double dt) noexcept;
|
||||
|
||||
/*------------------------------------------------------------------------*/
|
||||
/* Constructors & Destructor */
|
||||
/*------------------------------------------------------------------------*/
|
||||
SHInputManagerSystem() noexcept = default;
|
||||
~SHInputManagerSystem() noexcept = default;
|
||||
SHInputManager() noexcept = default;
|
||||
~SHInputManager() noexcept = default;
|
||||
|
||||
SHInputManagerSystem(const SHInputManagerSystem&) = delete;
|
||||
SHInputManagerSystem(SHInputManagerSystem&&) = delete;
|
||||
SHInputManager(const SHInputManager&) = delete;
|
||||
SHInputManager(SHInputManager&&) = delete;
|
||||
|
||||
SHInputManagerSystem& operator= (const SHInputManagerSystem&) = delete;
|
||||
SHInputManagerSystem& operator= (SHInputManagerSystem&&) = delete;
|
||||
|
||||
/*------------------------------------------------------------------------*/
|
||||
/* SHSystem Overrides */
|
||||
/*------------------------------------------------------------------------*/
|
||||
virtual void Init() override final;
|
||||
virtual void Exit() override final;
|
||||
SHInputManager& operator= (const SHInputManager&) = delete;
|
||||
SHInputManager& operator= (SHInputManager&&) = delete;
|
||||
|
||||
/*------------------------------------------------------------------------*/
|
||||
/* Member Functions */
|
||||
|
@ -417,8 +408,8 @@ namespace SHADE
|
|||
{
|
||||
POINT p{ mouseScreenX, mouseScreenY };
|
||||
ScreenToClient(GetActiveWindow(), &p);
|
||||
if (x) *x = mouseScreenX;
|
||||
if (y) *y = mouseScreenY;
|
||||
if (x) *x = p.x;
|
||||
if (y) *y = p.y;
|
||||
}
|
||||
|
||||
//Get the mouse velocity
|
|
@ -61,6 +61,12 @@ project "SHADE_Managed"
|
|||
"MultiProcessorCompile"
|
||||
}
|
||||
|
||||
disablewarnings
|
||||
{
|
||||
"4275"
|
||||
}
|
||||
|
||||
|
||||
dependson
|
||||
{
|
||||
"yaml-cpp",
|
||||
|
|
Loading…
Reference in New Issue