Revision: 2542
http://rigsofrods.svn.sourceforge.net/rigsofrods/?rev=2542&view=rev
Author: ulteq
Date: 2012-05-12 15:33:41 +0000 (Sat, 12 May 2012)
Log Message:
-----------
Bugfix: merged theshark's patch for arcade controls. fixes #917, #918, #919
Modified Paths:
--------------
trunk/source/main/gameplay/RoRFrameListener.cpp
Modified: trunk/source/main/gameplay/RoRFrameListener.cpp
===================================================================
--- trunk/source/main/gameplay/RoRFrameListener.cpp 2012-05-12 02:20:39 UTC
(rev 2541)
+++ trunk/source/main/gameplay/RoRFrameListener.cpp 2012-05-12 15:33:41 UTC
(rev 2542)
@@ -2185,9 +2185,14 @@
{
curr_truck->replaypos += INPUTENGINE.getMouseState().X.rel * 0.05f;
}
- if
(curr_truck->replaypos > 0) curr_truck->replaypos = 0;
- if
(curr_truck->replaypos < -curr_truck->replaylen) curr_truck->replaypos =
-curr_truck->replaylen;
-
+ if
(curr_truck->replaypos > 0)
+ {
+
curr_truck->replaypos = 0;
+ }
+ if
(curr_truck->replaypos < -curr_truck->replaylen)
+ {
+
curr_truck->replaypos = -curr_truck->replaylen;
+ }
}
}
}
@@ -2198,9 +2203,7 @@
if
(INPUTENGINE.getEventBoolValueBounce(EV_TERRAINEDITOR_SELECTROAD, 0.5f) &&
curr_truck->editorId>=0 && !curr_truck->replaymode)
{
if (road)
- {
road->reset(curr_truck->nodes[curr_truck->editorId].AbsPosition);
- }
else
road=new
Road(mSceneMgr, curr_truck->nodes[curr_truck->editorId].AbsPosition);
}
@@ -2209,120 +2212,115 @@
if
(INPUTENGINE.getEventBoolValueBounce(EV_TERRAINEDITOR_TOGGLEOBJECT) &&
curr_truck->editorId>=0 && !curr_truck->replaymode)
{
if (editor)
- {
editor->toggleType();
- }
else
editor=new
Editor(mSceneMgr, this);
}
//this should not be there
- if (editor && curr_truck->editorId>=0)
editor->setPos(curr_truck->nodes[curr_truck->editorId].AbsPosition);
+ if (editor && curr_truck->editorId>=0)
+ {
+
editor->setPos(curr_truck->nodes[curr_truck->editorId].AbsPosition);
+ }
if (!curr_truck->replaymode)
+ {
+ if
(INPUTENGINE.getEventBoolValueBounce(EV_TRUCK_LEFT_MIRROR_LEFT))
+
curr_truck->leftMirrorAngle-=0.001;
+
+ if
(INPUTENGINE.getEventBoolValueBounce(EV_TRUCK_LEFT_MIRROR_RIGHT))
+
curr_truck->leftMirrorAngle+=0.001;
+
+ if
(INPUTENGINE.getEventBoolValueBounce(EV_TRUCK_RIGHT_MIRROR_LEFT))
+
curr_truck->rightMirrorAngle-=0.001;
+
+ if
(INPUTENGINE.getEventBoolValueBounce(EV_TRUCK_RIGHT_MIRROR_RIGHT))
+
curr_truck->rightMirrorAngle+=0.001;
+
+ if
(INPUTENGINE.getEventBoolValueBounce(EV_TERRAINEDITOR_ROTATELEFT, 0.1f))
{
- if
(INPUTENGINE.getEventBoolValueBounce(EV_TRUCK_LEFT_MIRROR_LEFT))
-
curr_truck->leftMirrorAngle-=0.001;
+ float value = 0.5;
+ if
(INPUTENGINE.isKeyDown(OIS::KC_LSHIFT) ||
INPUTENGINE.isKeyDown(OIS::KC_RSHIFT)) value = 4;
+ if (road)
{road->dturn(+value);}
+ else if (editor)
{editor->dturn(+1);}
+ }
- if
(INPUTENGINE.getEventBoolValueBounce(EV_TRUCK_LEFT_MIRROR_RIGHT))
-
curr_truck->leftMirrorAngle+=0.001;
+ if
(INPUTENGINE.getEventBoolValueBounce(EV_TERRAINEDITOR_ROTATERIGHT, 0.1f))
+ {
+ float value = 0.5;
+ if
(INPUTENGINE.isKeyDown(OIS::KC_LSHIFT) ||
INPUTENGINE.isKeyDown(OIS::KC_RSHIFT)) value = 4;
+ if (road)
{road->dturn(-value);}
+ else if (editor)
{editor->dturn(-1);}
+ }
- if
(INPUTENGINE.getEventBoolValueBounce(EV_TRUCK_RIGHT_MIRROR_LEFT))
-
curr_truck->rightMirrorAngle-=0.001;
+ if
(INPUTENGINE.getEventBoolValueBounce(EV_TERRAINEDITOR_PITCHBACKWARD, 0.1f))
+ {
+ float value = 0.5;
+ if
(INPUTENGINE.isKeyDown(OIS::KC_LSHIFT) || INPUTENGINE.isKeyDown(OIS::KC_RSHIFT))
+ value = 4;
+ if (road)
{road->dpitch(-value);}
+ else if (editor)
{editor->dpitch(-1);}
+ }
- if
(INPUTENGINE.getEventBoolValueBounce(EV_TRUCK_RIGHT_MIRROR_RIGHT))
-
curr_truck->rightMirrorAngle+=0.001;
+ if
(INPUTENGINE.getEventBoolValueBounce(EV_TERRAINEDITOR_PITCHFOREWARD, 0.1f))
+ {
+ float value = 0.5;
+ if
(INPUTENGINE.isKeyDown(OIS::KC_LSHIFT) || INPUTENGINE.isKeyDown(OIS::KC_RSHIFT))
+ value = 4;
+ if (road) {road->
dpitch(value);}
+ else if (editor)
{editor->dpitch(1);}
+ }
- if
(INPUTENGINE.getEventBoolValueBounce(EV_TERRAINEDITOR_ROTATELEFT, 0.1f))
- {
- float
value = 0.5;
- if
(INPUTENGINE.isKeyDown(OIS::KC_LSHIFT) ||
INPUTENGINE.isKeyDown(OIS::KC_RSHIFT)) value = 4;
- if
(road) {road->dturn(+value);}
- else if
(editor) {editor->dturn(+1);}
- }
+ if
(INPUTENGINE.getEventBoolValueBounce(EV_TERRAINEDITOR_TOGGLEROADTYPE, 0.5f))
+ {
+ if (road)
+
road->toggleType();
+ }
- if
(INPUTENGINE.getEventBoolValueBounce(EV_TERRAINEDITOR_ROTATERIGHT, 0.1f))
+ if
(INPUTENGINE.getEventBoolValueBounce(EV_TERRAINEDITOR_BUILT, 0.5f))
+ {
+ if (road)
+ {
+ if (!editorfd)
{
- float
value = 0.5;
- if
(INPUTENGINE.isKeyDown(OIS::KC_LSHIFT) ||
INPUTENGINE.isKeyDown(OIS::KC_RSHIFT)) value = 4;
- if
(road) {road->dturn(-value);}
- else if
(editor) {editor->dturn(-1);}
+ String
editorfn = SSETTING("Log Path", "") + "editor_out.txt";
+
editorfd = fopen(editorfn.c_str(), "a");
+
fprintf(editorfd, " ==== new session\n");
}
+ road->append();
+
fprintf(editorfd, "%f, %f, %f, %f, %f, %f, %s\n", road->rpos.x, road->rpos.y,
road->rpos.z, road->rrot.x, road->rrot.y, road->rrot.z, road->curtype);
+
LOG(TOSTRING(road->rpos.x)+", "+
+
TOSTRING(road->rpos.y)+", "+
+
TOSTRING(road->rpos.z)+", "+
+
TOSTRING(road->rrot.x)+", "+
+
TOSTRING(road->rrot.y)+", "+
+
TOSTRING(road->rrot.z)+", "+road->curtype);
- if
(INPUTENGINE.getEventBoolValueBounce(EV_TERRAINEDITOR_PITCHBACKWARD, 0.1f))
- {
- float
value = 0.5;
- if
(INPUTENGINE.isKeyDown(OIS::KC_LSHIFT) || INPUTENGINE.isKeyDown(OIS::KC_RSHIFT))
- value =
4;
- if
(road) {road->dpitch(-value);}
- else if
(editor) {editor->dpitch(-1);}
- }
+
loadObject(road->curtype, road->rpos.x, road->rpos.y, road->rpos.z,
road->rrot.x, road->rrot.y, road->rrot.z, 0, "generic");
+ }
- if
(INPUTENGINE.getEventBoolValueBounce(EV_TERRAINEDITOR_PITCHFOREWARD, 0.1f))
+ if (editor)
+ {
+ if (!editorfd)
{
- float
value = 0.5;
- if
(INPUTENGINE.isKeyDown(OIS::KC_LSHIFT) || INPUTENGINE.isKeyDown(OIS::KC_RSHIFT))
- value =
4;
- if
(road) {road-> dpitch(value);}
- else if
(editor) {editor->dpitch(1);}
+ String
editorfn = SSETTING("Log Path", "") + "editor_out.txt";
+
editorfd = fopen(editorfn.c_str(), "a");
+
fprintf(editorfd, " ==== new session\n");
}
-
- if
(INPUTENGINE.getEventBoolValueBounce(EV_TERRAINEDITOR_TOGGLEROADTYPE, 0.5f))
- {
- if
(road)
-
road->toggleType();
- }
-
- if
(INPUTENGINE.getEventBoolValueBounce(EV_TERRAINEDITOR_BUILT, 0.5f))
- {
- if (road)
- {
-
if (!editorfd)
-
{
-
String editorfn = SSETTING("Log Path", "") + "editor_out.txt";
-
editorfd = fopen(editorfn.c_str(), "a");
-
fprintf(editorfd, " ==== new session\n");
-
}
-
road->append();
-
fprintf(editorfd, "%f, %f, %f, %f, %f, %f, %s\n", road->rpos.x, road->rpos.y,
road->rpos.z, road->rrot.x, road->rrot.y, road->rrot.z, road->curtype);
-
LOG(TOSTRING(road->rpos.x)+", "+
-
TOSTRING(road->rpos.y)+", "+
-
TOSTRING(road->rpos.z)+", "+
-
TOSTRING(road->rrot.x)+", "+
-
TOSTRING(road->rrot.y)+", "+
-
TOSTRING(road->rrot.z)+", "+road->curtype);
-
-
loadObject(road->curtype, road->rpos.x, road->rpos.y, road->rpos.z,
road->rrot.x, road->rrot.y, road->rrot.z, 0, "generic");
- }
-
- if (editor)
- {
-
if (!editorfd)
-
{
-
String editorfn = SSETTING("Log Path", "") + "editor_out.txt";
-
editorfd = fopen(editorfn.c_str(), "a");
-
fprintf(editorfd, " ==== new session\n");
-
}
-
-
fprintf(editorfd, "%f, %f, %f, %f, %f, %f, %s\n", editor->ppos.x,
editor->ppos.y, editor->ppos.z, 0.0, editor->pturn, editor->ppitch,
editor->curtype);
-
LOG(TOSTRING(editor->ppos.x)+", "+
-
TOSTRING(editor->ppos.y)+", "+
-
TOSTRING(editor->ppos.z)+", "+
-
TOSTRING(0)+", "+
-
TOSTRING(editor->pturn)+", "+
-
TOSTRING(editor->ppitch)+", "+editor->curtype);
-
loadObject(editor->curtype, editor->ppos.x, editor->ppos.y, editor->ppos.z, 0,
editor->pturn, editor->ppitch, 0, "generic", false);
- }
+
fprintf(editorfd, "%f, %f, %f, %f, %f, %f, %s\n", editor->ppos.x,
editor->ppos.y, editor->ppos.z, 0.0, editor->pturn, editor->ppitch,
editor->curtype);
+
LOG(TOSTRING(editor->ppos.x)+", "+
+
TOSTRING(editor->ppos.y)+", "+
+
TOSTRING(editor->ppos.z)+", "+
+
TOSTRING(0)+", "+
+
TOSTRING(editor->pturn)+", "+
+
TOSTRING(editor->ppitch)+", "+editor->curtype);
+
loadObject(editor->curtype, editor->ppos.x, editor->ppos.y, editor->ppos.z, 0,
editor->pturn, editor->ppitch, 0, "generic", false);
}
- } // end of
(!curr_truck->replaymode) block
+ }
+ } // end of (!curr_truck->replaymode)
block
-
- // replay mode
- if (curr_truck->replaymode)
+ if (!curr_truck->replaymode)
{
- }
- else // this else part is called
when we are NOT in replaymode
- {
// steering
float tmp_left_digital =
INPUTENGINE.getEventValue(EV_TRUCK_STEER_LEFT, false, InputEngine::ET_DIGITAL);
float tmp_right_digital =
INPUTENGINE.getEventValue(EV_TRUCK_STEER_RIGHT, false, InputEngine::ET_DIGITAL);
@@ -2347,54 +2345,73 @@
float accval =
INPUTENGINE.getEventValue(EV_TRUCK_ACCELERATE);
float brake =
INPUTENGINE.getEventValue(EV_TRUCK_BRAKE);
- if (!arcadeControls)
+ // arcade controls are only
working with auto-clutch!
+ if (!arcadeControls ||
curr_truck->engine->getAutoMode() > BeamEngine::SEMIAUTO)
{
// classic mode,
realistic
- if (curr_truck->engine)
curr_truck->engine->autoSetAcc(accval);
+ if (curr_truck->engine)
+ {
+
curr_truck->engine->autoSetAcc(accval);
+ }
curr_truck->brake =
brake*curr_truck->brakeforce;
} else
{
// start engine
- if (accval > 0 &&
curr_truck->engine && !curr_truck->engine->running)
+ if (accval > 0 &&
curr_truck->engine && curr_truck->engine->contact &&
!curr_truck->engine->running)
curr_truck->engine->start();
- // omg, arcade
controls: hey - people wanted it x|
- if
(curr_truck->WheelSpeed >= 0 && curr_truck->engine->getGear() > 0)
+ // arcade controls: hey
- people wanted it x|
+ if
(curr_truck->engine->getGear() >= 0)
{
- // we drive
forward, everything is as its used to be: brake is brake and acc. is acc.
- if
(curr_truck->engine) curr_truck->engine->autoSetAcc(accval);
+ // neutral or
drive forward, everything is as its used to be: brake is brake and accel. is
accel.
+ if
(curr_truck->engine)
+ {
+
curr_truck->engine->autoSetAcc(accval);
+ }
curr_truck->brake = brake*curr_truck->brakeforce;
- } else if
(curr_truck->WheelSpeed < 0 && curr_truck->engine->getGear() < 0)
+ } else
{
- // we drive
backwards, reverse controls: brake is acc. and acc. is brake.
- if
(curr_truck->engine) curr_truck->engine->autoSetAcc(brake);
+ // reverse
gear, reverse controls: brake is accel. and accel. is brake.
+ if
(curr_truck->engine)
+ {
+
curr_truck->engine->autoSetAcc(brake);
+ }
curr_truck->brake = accval*curr_truck->brakeforce;
}
- // when in automatic
mode: shift as well
// only when the truck
really is not moving anymore
- if
(fabs(curr_truck->WheelSpeed) <= 0.1f && curr_truck->nodes[0].Velocity.length()
< 0.2f && curr_truck->engine && curr_truck->engine->getAutoMode() ==
BeamEngine::AUTOMATIC)
+ if
(fabs(curr_truck->WheelSpeed) <= 0.1f && curr_truck->nodes[0].Velocity.length()
< 0.2f)
{
// switching
point, does the user want to drive forward from backward or the other way
round? change gears?
- if (brake >
0.5f && accval < 0.5f && curr_truck->engine->getGear() > 0)
+ if (brake >
0.5f && accval < 0.5f && curr_truck->engine->getGear() >= 0)
{
// we
are on the brake, jump to reverse gear
-
curr_truck->engine->autoShiftSet(BeamEngine::REAR);
+
if(curr_truck->engine->getAutoMode() == BeamEngine::AUTOMATIC)
+ {
+
curr_truck->engine->autoShiftSet(BeamEngine::REAR);
+ } else
+ {
+
curr_truck->engine->setGear(-1);
+ }
} else if
(brake < 0.5f && accval > 0.5f && curr_truck->engine->getGear() < 0)
{
// we
are on the gas pedal, jump to first gear when we were in rear gear
-
curr_truck->engine->autoShiftSet(BeamEngine::DRIVE);
+
if(curr_truck->engine->getAutoMode() == BeamEngine::AUTOMATIC)
+ {
+
curr_truck->engine->autoShiftSet(BeamEngine::DRIVE);
+ } else
+ {
+
curr_truck->engine->setGear(1);
+ }
}
}
}
-
#ifdef USE_OPENAL
if (curr_truck->brake >
curr_truck->brakeforce/6.0)
SoundScriptManager::getSingleton().trigStart(curr_truck, SS_TRIG_BRAKE);
else
SoundScriptManager::getSingleton().trigStop(curr_truck, SS_TRIG_BRAKE);
#endif //OPENAL
-
//IMI
// gear management -- it might
should be transferred to a standalone function of Beam or RoRFrameListener
if (curr_truck->engine)
@@ -5415,7 +5432,7 @@
// one of the input modes is immediate, so setup what is needed for
immediate mouse/key movement
if (mTimeUntilNextToggle >= 0)
- mTimeUntilNextToggle -= evt.timeSinceLastFrame;
+ mTimeUntilNextToggle -= dt;
// one of the input modes is immediate, so update the movement vector
if (loading_state==ALL_LOADED)
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Rigsofrods-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rigsofrods-devel
