fix top-down orbit; WASD on keyboard; softer cursor
This commit is contained in:
1 parent
59c9fe33cc
commit
cac917989f
1 file changed
+88
-11
@@ -163,6 +163,10 @@ function RPGClient_EnsureCursor()
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (Canvas.isCursorOn())
|
||||
{
|
||||
return;
|
||||
}
|
||||
lockMouse(0);
|
||||
cursorOn();
|
||||
}
|
||||
@@ -211,6 +215,42 @@ function RPGClient_StartCameraTick()
|
||||
$RPGClient::CamTickSched = schedule(32, 0, RPGClient_CameraTick);
|
||||
}
|
||||
|
||||
function RPGClient_KeyMvForward(%val)
|
||||
{
|
||||
if (!$RPGClient::Active)
|
||||
{
|
||||
return;
|
||||
}
|
||||
$RPGClient::MvF = %val * $RunMultiplier;
|
||||
}
|
||||
|
||||
function RPGClient_KeyMvBackward(%val)
|
||||
{
|
||||
if (!$RPGClient::Active)
|
||||
{
|
||||
return;
|
||||
}
|
||||
$RPGClient::MvB = %val * $RunMultiplier;
|
||||
}
|
||||
|
||||
function RPGClient_KeyMvLeft(%val)
|
||||
{
|
||||
if (!$RPGClient::Active)
|
||||
{
|
||||
return;
|
||||
}
|
||||
$RPGClient::MvL = %val * $RunMultiplier;
|
||||
}
|
||||
|
||||
function RPGClient_KeyMvRight(%val)
|
||||
{
|
||||
if (!$RPGClient::Active)
|
||||
{
|
||||
return;
|
||||
}
|
||||
$RPGClient::MvR = %val * $RunMultiplier;
|
||||
}
|
||||
|
||||
function RPGClient_SendClickFromCursor(%button)
|
||||
{
|
||||
if (!$RPGClient::Active || !isObject(Canvas))
|
||||
@@ -244,10 +284,23 @@ function RPGClient_EnableOverlay()
|
||||
RPGClient_KeyMap.delete();
|
||||
}
|
||||
new ActionMap(RPGClient_KeyMap);
|
||||
RPGClient_KeyMap.bind(keyboard, w, RPGClient_KeyMvForward);
|
||||
RPGClient_KeyMap.bind(keyboard, s, RPGClient_KeyMvBackward);
|
||||
RPGClient_KeyMap.bind(keyboard, a, RPGClient_KeyMvLeft);
|
||||
RPGClient_KeyMap.bind(keyboard, d, RPGClient_KeyMvRight);
|
||||
RPGClient_KeyMap.bind(keyboard0, w, RPGClient_KeyMvForward);
|
||||
RPGClient_KeyMap.bind(keyboard0, s, RPGClient_KeyMvBackward);
|
||||
RPGClient_KeyMap.bind(keyboard0, a, RPGClient_KeyMvLeft);
|
||||
RPGClient_KeyMap.bind(keyboard0, d, RPGClient_KeyMvRight);
|
||||
RPGClient_KeyMap.bind(keyboard, left, RPGClient_YawLeft);
|
||||
RPGClient_KeyMap.bind(keyboard, right, RPGClient_YawRight);
|
||||
RPGClient_KeyMap.bind(keyboard0, left, RPGClient_YawLeft);
|
||||
RPGClient_KeyMap.bind(keyboard0, right, RPGClient_YawRight);
|
||||
RPGClient_KeyMap.bind(keyboard, equals, RPGClient_ZoomIn);
|
||||
RPGClient_KeyMap.bind(keyboard, minus, RPGClient_ZoomOut);
|
||||
RPGClient_KeyMap.bind(keyboard0, equals, RPGClient_ZoomIn);
|
||||
RPGClient_KeyMap.bind(keyboard0, minus, RPGClient_ZoomOut);
|
||||
RPGClient_KeyMap.bind(keyboard, m, RPGClient_ToggleCursor);
|
||||
RPGClient_KeyMap.bind(keyboard0, m, RPGClient_ToggleCursor);
|
||||
RPGClient_KeyMap.push();
|
||||
$mvFreeLook = 0;
|
||||
@@ -330,9 +383,11 @@ function RPGClient_ApplyCamera(%forceSync)
|
||||
$mvRightAction = 0;
|
||||
%cam.unmountImage(0);
|
||||
%xfm = RPGClient_ViewTransform(%body, $RPGClient::Yaw, $RPGClient::Dist, $RPGClient::PanX, $RPGClient::PanY);
|
||||
%cam.setFlyMode();
|
||||
%cam.setTransform(%xfm);
|
||||
%cam.mode = "Fly";
|
||||
%cam.setMode("Corpse", %body);
|
||||
%cam.setOrbitMode(%body, %xfm, 0, 32, $RPGClient::Dist);
|
||||
%cam.mode = "Corpse";
|
||||
%cam.thirdPersonOnly = 1;
|
||||
%now = getSimTime();
|
||||
if (%forceSync || %now - $RPGClient::LastCamSync > 120)
|
||||
{
|
||||
@@ -718,15 +773,6 @@ activatePackage(RPGClient_MoveMap);
|
||||
|
||||
package RPGClient_Cursor
|
||||
{
|
||||
function GuiCanvas::checkCursor(%this)
|
||||
{
|
||||
Parent::checkCursor(%this);
|
||||
if ($RPGClient::Active)
|
||||
{
|
||||
RPGClient_EnsureCursor();
|
||||
}
|
||||
}
|
||||
|
||||
function escapeMenu::toggle(%this)
|
||||
{
|
||||
if (%this.isAwake())
|
||||
@@ -748,6 +794,37 @@ package RPGClient_Cursor
|
||||
};
|
||||
activatePackage(RPGClient_Cursor);
|
||||
|
||||
package RPGClient_ViewLock
|
||||
{
|
||||
function toggleFirstPerson(%val)
|
||||
{
|
||||
if ($RPGClient::Active)
|
||||
{
|
||||
return;
|
||||
}
|
||||
Parent::toggleFirstPerson(%val);
|
||||
}
|
||||
|
||||
function toggleFreeLook(%val)
|
||||
{
|
||||
if ($RPGClient::Active)
|
||||
{
|
||||
return;
|
||||
}
|
||||
Parent::toggleFreeLook(%val);
|
||||
}
|
||||
|
||||
function dropCameraAtPlayer(%val)
|
||||
{
|
||||
if ($RPGClient::Active)
|
||||
{
|
||||
return;
|
||||
}
|
||||
Parent::dropCameraAtPlayer(%val);
|
||||
}
|
||||
};
|
||||
activatePackage(RPGClient_ViewLock);
|
||||
|
||||
package RPGClient_Cleanup
|
||||
{
|
||||
function disconnectedCleanup(%doReconnect)
|
||||
|
||||
Reference in new issue
Block a user