[DEV] Remove automatic key respown on X11
This commit is contained in:
parent
57c22f93ef
commit
95c94a9c9e
@ -21,7 +21,7 @@ void game::Camera::Update(void)
|
|||||||
m_matrix.Rotate(vec3(0,0,1), m_angles.z );
|
m_matrix.Rotate(vec3(0,0,1), m_angles.z );
|
||||||
vec3 tmpp = m_position * -1;
|
vec3 tmpp = m_position * -1;
|
||||||
m_matrix.Translate(tmpp);
|
m_matrix.Translate(tmpp);
|
||||||
EWOL_DEBUG("camera: pos=" << m_position << " angle=" << m_angles);
|
//EWOL_DEBUG("camera: pos=" << m_position << " angle=" << m_angles);
|
||||||
}
|
}
|
||||||
|
|
||||||
game::Camera::Camera(vec3 pos, vec3 angles) :
|
game::Camera::Camera(vec3 pos, vec3 angles) :
|
||||||
|
@ -157,6 +157,7 @@ void ewolProcessEvents(void)
|
|||||||
tmpWidget->OnEventKb(ewol::keyEvent::statusUp, data.keyboardChar);
|
tmpWidget->OnEventKb(ewol::keyEvent::statusUp, data.keyboardChar);
|
||||||
}
|
}
|
||||||
} else { // THREAD_KEYBORAD_MOVE
|
} else { // THREAD_KEYBORAD_MOVE
|
||||||
|
EWOL_DEBUG("THREAD_KEYBORAD_MOVE" << data.keyboardMove << " " << data.stateIsDown);
|
||||||
if(true == data.stateIsDown) {
|
if(true == data.stateIsDown) {
|
||||||
tmpWidget->OnEventKbMove(ewol::keyEvent::statusDown, data.keyboardMove);
|
tmpWidget->OnEventKbMove(ewol::keyEvent::statusDown, data.keyboardMove);
|
||||||
} else {
|
} else {
|
||||||
|
@ -760,6 +760,20 @@ void X11_Run(void)
|
|||||||
break;
|
break;
|
||||||
case KeyPress:
|
case KeyPress:
|
||||||
case KeyRelease:
|
case KeyRelease:
|
||||||
|
// filter repeate key :
|
||||||
|
if( event.type == KeyRelease
|
||||||
|
&& XEventsQueued(m_display, QueuedAfterReading)) {
|
||||||
|
XEvent nev;
|
||||||
|
XPeekEvent(m_display, &nev);
|
||||||
|
if( nev.type == KeyPress
|
||||||
|
&& nev.xkey.time == event.xkey.time
|
||||||
|
&& nev.xkey.keycode == event.xkey.keycode) {
|
||||||
|
// Key was not actually released
|
||||||
|
// remove next event too ...
|
||||||
|
XNextEvent(m_display, &nev);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
#ifdef DEBUG_X11_EVENT
|
#ifdef DEBUG_X11_EVENT
|
||||||
EWOL_INFO("X11 event : " << event.type << " = \"KeyPress/KeyRelease\" ");
|
EWOL_INFO("X11 event : " << event.type << " = \"KeyPress/KeyRelease\" ");
|
||||||
#endif
|
#endif
|
||||||
|
@ -86,38 +86,6 @@ void widget::Scene::OnDraw(ewol::DrawProperty& displayProp)
|
|||||||
|
|
||||||
void widget::Scene::PeriodicCall(int64_t localTime)
|
void widget::Scene::PeriodicCall(int64_t localTime)
|
||||||
{
|
{
|
||||||
if (m_walk!=0) {
|
|
||||||
if ( (m_walk&(WALK_FLAG_FORWARD|WALK_FLAG_BACK))!=0) {
|
|
||||||
// request back and forward in the same time ... this is really bad ....
|
|
||||||
} else if ( (m_walk&WALK_FLAG_FORWARD)!=0) {
|
|
||||||
vec3 angles = m_camera.GetAngle();
|
|
||||||
angles.x = cosf(angles.z);
|
|
||||||
angles.y = sinf(angles.z);
|
|
||||||
angles.z = 0;
|
|
||||||
vec3 pos = m_camera.GetPosition();
|
|
||||||
pos += angles;
|
|
||||||
EWOL_DEBUG("walk = " << angles);
|
|
||||||
m_camera.SetPosition(pos);
|
|
||||||
} else if ( (m_walk&WALK_FLAG_BACK)!=0) {
|
|
||||||
vec3 angles = m_camera.GetAngle();
|
|
||||||
angles.x = cosf(angles.z);
|
|
||||||
angles.y = sinf(angles.z);
|
|
||||||
angles.z = 0;
|
|
||||||
vec3 pos = m_camera.GetPosition();
|
|
||||||
pos -= angles;
|
|
||||||
EWOL_DEBUG("walk = " << angles*-1);
|
|
||||||
m_camera.SetPosition(pos);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( (m_walk&(WALK_FLAG_LEFT|WALK_FLAG_RIGHT))!=0) {
|
|
||||||
// request left and right in the same time ... this is really bad ....
|
|
||||||
} else if ( (m_walk&WALK_FLAG_LEFT)!=0) {
|
|
||||||
|
|
||||||
} else if ( (m_walk&WALK_FLAG_RIGHT)!=0) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
double curentTime=(double)localTime/1000000.0;
|
double curentTime=(double)localTime/1000000.0;
|
||||||
// small hack to change speed ...
|
// small hack to change speed ...
|
||||||
if (m_ratioTime != 1) {
|
if (m_ratioTime != 1) {
|
||||||
@ -145,6 +113,54 @@ void widget::Scene::PeriodicCall(int64_t localTime)
|
|||||||
}
|
}
|
||||||
m_lastCallTime = curentTime;
|
m_lastCallTime = curentTime;
|
||||||
MarkToRedraw();
|
MarkToRedraw();
|
||||||
|
|
||||||
|
if (m_walk!=0) {
|
||||||
|
if( (m_walk&WALK_FLAG_FORWARD)!=0
|
||||||
|
&& (m_walk&WALK_FLAG_BACK)!=0) {
|
||||||
|
// request back and forward in the same time ... this is really bad ....
|
||||||
|
} else if ( (m_walk&WALK_FLAG_FORWARD)!=0) {
|
||||||
|
vec3 angles = m_camera.GetAngle();
|
||||||
|
angles.x = cosf(angles.z);
|
||||||
|
angles.y = sinf(angles.z);
|
||||||
|
angles.z = 0;
|
||||||
|
vec3 pos = m_camera.GetPosition();
|
||||||
|
// walk is 6 km/h
|
||||||
|
pos += angles*0.001666f/deltaTime;
|
||||||
|
m_camera.SetPosition(pos);
|
||||||
|
} else if ( (m_walk&WALK_FLAG_BACK)!=0) {
|
||||||
|
vec3 angles = m_camera.GetAngle();
|
||||||
|
angles.x = cosf(angles.z);
|
||||||
|
angles.y = sinf(angles.z);
|
||||||
|
angles.z = 0;
|
||||||
|
vec3 pos = m_camera.GetPosition();
|
||||||
|
// walk is 6 km/h
|
||||||
|
pos -= angles*0.001666f/deltaTime;
|
||||||
|
m_camera.SetPosition(pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
if( (m_walk&WALK_FLAG_LEFT)!=0
|
||||||
|
&& (m_walk&WALK_FLAG_RIGHT)!=0) {
|
||||||
|
// request left and right in the same time ... this is really bad ....
|
||||||
|
} else if ( (m_walk&WALK_FLAG_LEFT)!=0) {
|
||||||
|
vec3 angles = m_camera.GetAngle();
|
||||||
|
angles.x = cosf(angles.z+M_PI/2.0);
|
||||||
|
angles.y = sinf(angles.z+M_PI/2.0);
|
||||||
|
angles.z = 0;
|
||||||
|
vec3 pos = m_camera.GetPosition();
|
||||||
|
// lateral walk is 4 km/h
|
||||||
|
pos += angles*0.0011f/deltaTime;
|
||||||
|
m_camera.SetPosition(pos);
|
||||||
|
} else if ( (m_walk&WALK_FLAG_RIGHT)!=0) {
|
||||||
|
vec3 angles = m_camera.GetAngle();
|
||||||
|
angles.x = cosf(angles.z+M_PI/2.0);
|
||||||
|
angles.y = sinf(angles.z+M_PI/2.0);
|
||||||
|
angles.z = 0;
|
||||||
|
vec3 pos = m_camera.GetPosition();
|
||||||
|
// lateral walk is 4 km/h
|
||||||
|
pos -= angles*0.0011f/deltaTime;
|
||||||
|
m_camera.SetPosition(pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user