Misc - Changed to MouseInput struct in EventHandler update.
This commit is contained in:
parent
7a218c61d8
commit
74d28d1f62
|
@ -142,8 +142,19 @@ namespace DanBias
|
|||
|
||||
HRESULT DanBiasGame::Update(float deltaTime)
|
||||
{
|
||||
//Get mouse pos and window size (Temporary)
|
||||
POINT p;
|
||||
RECT r;
|
||||
GetCursorPos(&p);
|
||||
ScreenToClient(WindowShell::GetHWND(), &p);
|
||||
GetClientRect(WindowShell::GetHWND(), &r);
|
||||
|
||||
//Update menu buttons
|
||||
EventHandler::Instance().Update(m_data->inputObj);
|
||||
MouseInput mouseInput;
|
||||
mouseInput.x = (float)p.x / (float)r.right;
|
||||
mouseInput.y = (float)p.y / (float)r.bottom;
|
||||
mouseInput.mouseButtonPressed = m_data->inputObj->IsMousePressed();
|
||||
EventHandler::Instance().Update(mouseInput);
|
||||
|
||||
m_data->inputObj->Update();
|
||||
|
||||
|
|
|
@ -37,15 +37,10 @@ namespace DanBias
|
|||
{}
|
||||
|
||||
//Circle vs point collision
|
||||
bool Collision(InputClass* inputObject)
|
||||
bool Collision(Oyster::Event::MouseInput& input)
|
||||
{
|
||||
POINT p;
|
||||
RECT r;
|
||||
GetCursorPos(&p);
|
||||
ScreenToClient(WindowShell::GetHWND(), &p);
|
||||
GetClientRect(WindowShell::GetHWND(), &r);
|
||||
//Should come from the InputClass
|
||||
float xMouse = (float)p.x / (float)r.right, yMouse = (float)p.y / (float)r.bottom;
|
||||
float xMouse = input.x, yMouse = input.y;
|
||||
|
||||
double normx = (xMouse - xPos) / width;
|
||||
double normy = (yMouse - yPos) / height;
|
||||
|
|
|
@ -37,16 +37,10 @@ namespace DanBias
|
|||
{}
|
||||
|
||||
//Circle vs point collision
|
||||
bool Collision(InputClass* inputObject)
|
||||
bool Collision(Oyster::Event::MouseInput& input)
|
||||
{
|
||||
POINT p;
|
||||
RECT r;
|
||||
GetCursorPos(&p);
|
||||
ScreenToClient(WindowShell::GetHWND(), &p);
|
||||
GetClientRect(WindowShell::GetHWND(), &r);
|
||||
|
||||
//Should come from the InputClass
|
||||
float xMouse = (float)p.x / (float)r.right, yMouse = (float)p.y / (float)r.bottom;
|
||||
float xMouse = input.x, yMouse = input.y;
|
||||
|
||||
float widthTemp = xPos - width * 0.5f;
|
||||
float widthTemp2 = xPos + width * 0.5f;
|
||||
|
|
|
@ -46,7 +46,7 @@ namespace Oyster
|
|||
|
||||
private:
|
||||
//Implement this in the inherited classes for collision against that shape.
|
||||
virtual bool Collision(InputClass *input) = 0;
|
||||
virtual bool Collision(MouseInput& input) = 0;
|
||||
|
||||
public:
|
||||
EventButton();
|
||||
|
@ -56,7 +56,7 @@ namespace Oyster
|
|||
EventButton(EventFunc func, Owner owner, void* userData);
|
||||
virtual ~EventButton();
|
||||
|
||||
void Update(InputClass *input);
|
||||
void Update(MouseInput& input);
|
||||
|
||||
//Send event to callback function
|
||||
void SendEvent(ButtonState state);
|
||||
|
@ -135,16 +135,18 @@ namespace Oyster
|
|||
|
||||
//Checks for collision and
|
||||
template <typename Owner>
|
||||
void EventButton<Owner>::Update(InputClass *input)
|
||||
void EventButton<Owner>::Update(MouseInput& input)
|
||||
{
|
||||
if(this->privData.enabled)
|
||||
{
|
||||
ButtonState currentState = ButtonState_None;
|
||||
static bool outside = false;
|
||||
static bool clicked = false;
|
||||
|
||||
//Check for collision against the button.
|
||||
if(Collision(input))
|
||||
{
|
||||
if(input->IsMousePressed())
|
||||
if(input.mouseButtonPressed)
|
||||
{
|
||||
//Change state when the mouse button is pressed
|
||||
switch(this->privData.previousState)
|
||||
|
|
|
@ -32,13 +32,13 @@ EventButtonCollection::~EventButtonCollection()
|
|||
}
|
||||
}
|
||||
|
||||
void EventButtonCollection::Update(InputClass* inputObject)
|
||||
void EventButtonCollection::Update(MouseInput& input)
|
||||
{
|
||||
if(this->collectionState == EventCollectionState_Enabled)
|
||||
{
|
||||
for(int i = 0; i < (int)buttons.size(); i++)
|
||||
{
|
||||
buttons[i]->Update(inputObject);
|
||||
buttons[i]->Update(input);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ namespace Oyster
|
|||
EventButtonCollection(EventCollectionState state = EventCollectionState_Enabled);
|
||||
~EventButtonCollection();
|
||||
|
||||
void Update(InputClass* inputObject);
|
||||
void Update(MouseInput& input);
|
||||
void Render();
|
||||
|
||||
/*Add a button to the collection when a button is added to the collection you are not allowed to delete it.
|
||||
|
|
|
@ -27,11 +27,11 @@ void EventHandler::Clean()
|
|||
collections.clear();
|
||||
}
|
||||
|
||||
void EventHandler::Update(InputClass* inputObject)
|
||||
void EventHandler::Update(MouseInput& input)
|
||||
{
|
||||
for(int i = 0; i < (int)collections.size(); i++)
|
||||
{
|
||||
collections.at(i)->Update(inputObject);
|
||||
collections.at(i)->Update(input);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ namespace Oyster
|
|||
|
||||
void Clean();
|
||||
|
||||
void Update(InputClass* inputObject);
|
||||
void Update(MouseInput& input);
|
||||
void Render();
|
||||
|
||||
/*Add a collection to the EventHandler will only add collections not already present in the list.
|
||||
|
|
|
@ -19,6 +19,14 @@ namespace Oyster
|
|||
ButtonState_Down,
|
||||
ButtonState_Released,
|
||||
};
|
||||
|
||||
//Takes normalized device coordinates
|
||||
struct MouseInput
|
||||
{
|
||||
//Normalized device coordinates
|
||||
float x, y;
|
||||
bool mouseButtonPressed;
|
||||
};
|
||||
|
||||
class IEventButton
|
||||
{
|
||||
|
@ -26,7 +34,8 @@ namespace Oyster
|
|||
virtual ~IEventButton(){}
|
||||
|
||||
virtual void Render() = 0;
|
||||
virtual void Update(InputClass *input) = 0;
|
||||
|
||||
virtual void Update(MouseInput& input) = 0;
|
||||
|
||||
virtual void SendEvent(ButtonState state) = 0;
|
||||
|
||||
|
|
Loading…
Reference in New Issue