Initial commit
This commit is contained in:
309
application/demos/example.opengl/engine/eventManager.c
Normal file
309
application/demos/example.opengl/engine/eventManager.c
Normal file
@@ -0,0 +1,309 @@
|
||||
/*
|
||||
* This file is automaticaly generated, Please dont edit this file!
|
||||
*/
|
||||
#include <engine/eventManager.h>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void eventManger_constructor( eventManger * this ) {
|
||||
|
||||
this->lastEvent = event_newPointer();
|
||||
|
||||
this->lastEvent->mouse->button = -1;
|
||||
|
||||
|
||||
}
|
||||
|
||||
event * eventManger_fetchEvent( eventManger * this ) {
|
||||
|
||||
event * currentEvent = event_newPointer();
|
||||
|
||||
|
||||
currentEvent->mouse->button = -1;
|
||||
|
||||
Window qRoot;
|
||||
|
||||
Window qChild;
|
||||
|
||||
unsigned int qMask;
|
||||
|
||||
int childX;
|
||||
|
||||
int childY;
|
||||
|
||||
int mouseX;
|
||||
|
||||
int mouseY;
|
||||
|
||||
int child;
|
||||
|
||||
|
||||
XWindowAttributes window;
|
||||
|
||||
if( XGetWindowAttributes( this->mainDisplay, this->mainWindow, &window ) ) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
if( XQueryPointer( this->mainDisplay, this->RootWindow, &qRoot, &qChild, &mouseX, &mouseY, &childX, &childY, &qMask ) )
|
||||
{
|
||||
|
||||
mouseX -= window.x;
|
||||
|
||||
mouseY -= window.y;
|
||||
|
||||
for(int i = 0; i < sizeof(int) * 8; i++)
|
||||
{
|
||||
int mask = 1 << sizeof(int) * 8 - i - 1;
|
||||
|
||||
if(mask & qMask)
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
if( qMask == Button1MotionMask ) {
|
||||
|
||||
|
||||
|
||||
currentEvent->mouse->button = 0;
|
||||
|
||||
}
|
||||
|
||||
|
||||
if( qMask == Button2MotionMask ) {
|
||||
|
||||
printf("Button2MotionMask\n");
|
||||
|
||||
}
|
||||
|
||||
|
||||
if( qMask == Button3MotionMask ) {
|
||||
|
||||
printf("RightMouse\n");
|
||||
|
||||
}
|
||||
|
||||
if( qMask == Button4MotionMask ) {
|
||||
|
||||
printf("Button2MotionMask\n");
|
||||
|
||||
}
|
||||
|
||||
|
||||
if( qMask == Button5MotionMask ) {
|
||||
|
||||
printf("Button2MotionMask\n");
|
||||
|
||||
}
|
||||
|
||||
if( qMask == ShiftMask ) {
|
||||
|
||||
printf("Pressed shift\n");
|
||||
|
||||
}
|
||||
|
||||
if( qMask == ControlMask ) {
|
||||
|
||||
printf("Pressed control\n");
|
||||
|
||||
}
|
||||
|
||||
|
||||
if( qMask == EnterWindowMask ) {
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
XEvent event;
|
||||
|
||||
int keyboardEventCount = XPending( this->mainDisplay );
|
||||
|
||||
|
||||
|
||||
while( XPending( this->mainDisplay ) ) {
|
||||
|
||||
|
||||
XNextEvent( this->mainDisplay, &event );
|
||||
|
||||
switch ( event.type ) {
|
||||
|
||||
case KeyPress:
|
||||
|
||||
printf("key has been pressed. %i\n\n", event.xkey.keycode);
|
||||
|
||||
break;
|
||||
|
||||
|
||||
case KeyRelease:
|
||||
|
||||
printf("key has been released. %i\n\n", event.xkey.keycode);
|
||||
|
||||
break;
|
||||
|
||||
|
||||
|
||||
|
||||
case Expose:
|
||||
|
||||
break;
|
||||
|
||||
|
||||
|
||||
default:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
bool hasBorder = true;
|
||||
|
||||
int borderCorrection = 0;
|
||||
|
||||
|
||||
|
||||
if( hasBorder ) {
|
||||
|
||||
borderCorrection = 12;
|
||||
|
||||
}
|
||||
|
||||
|
||||
currentEvent->mouse->position = vector2_new( mouseX, mouseY + borderCorrection );
|
||||
|
||||
currentEvent->screen->size = vector2_new( window.width, window.height + borderCorrection );
|
||||
|
||||
|
||||
|
||||
vector_char_pointer * mouseEvents = currentEvent->mouse->eventTypes;
|
||||
|
||||
mouseEvents = vector_char_pointer_newPointer();
|
||||
|
||||
if( this->lastEvent->mouse->position.x != currentEvent->mouse->position.x ||
|
||||
this->lastEvent->mouse->position.y != currentEvent->mouse->position.y ) {
|
||||
|
||||
vector_char_pointer_add( mouseEvents, "mousemove" );
|
||||
|
||||
}
|
||||
|
||||
if( this->lastEvent->mouse->button != 0 && currentEvent->mouse->button == 0 ) {
|
||||
|
||||
this->lastMouseDownTime = clock();
|
||||
|
||||
printf("Mouse down\n\n");
|
||||
|
||||
vector_char_pointer_add( mouseEvents, "mousedown" );
|
||||
|
||||
}
|
||||
|
||||
if( this->lastEvent->mouse->button == 0 && currentEvent->mouse->button != 0 ) {
|
||||
|
||||
clock_t difference = clock() - this->lastMouseDownTime;
|
||||
|
||||
int milliseconds = difference * 1000 / CLOCKS_PER_SEC;
|
||||
|
||||
if( milliseconds < 150 ) {
|
||||
|
||||
printf("click event\n\n");
|
||||
|
||||
|
||||
vector_char_pointer_add( mouseEvents, "click" );
|
||||
|
||||
}
|
||||
|
||||
printf("mouseup event\n\n");
|
||||
|
||||
vector_char_pointer_add( mouseEvents, "mouseup" );
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
currentEvent->mouse->eventTypes = mouseEvents;
|
||||
|
||||
|
||||
this->lastEvent = currentEvent;
|
||||
|
||||
return currentEvent;
|
||||
|
||||
}
|
||||
|
||||
eventManger eventManger_new() {
|
||||
|
||||
eventManger instance;
|
||||
|
||||
eventManger_constructor( &instance);
|
||||
|
||||
return instance;
|
||||
|
||||
}
|
||||
|
||||
eventManger * eventManger_newPointer() {
|
||||
|
||||
struct eventManger * pointer = malloc( sizeof ( struct eventManger ) );
|
||||
|
||||
eventManger_constructor( pointer );
|
||||
|
||||
return pointer;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user