mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-02-14 19:29:36 +01:00
Made the camera control more like... a camera (Hold RMB to move it, double click RMB to realign behind your mob).
This commit is contained in:
@@ -232,9 +232,12 @@ namespace SS3D.Modules.Mobs
|
||||
{
|
||||
myMobID = mobID;
|
||||
|
||||
mob.Node.AttachObject(mEngine.Camera);
|
||||
mEngine.Camera.Position = new Vector3(-160, 160, 0);
|
||||
mEngine.Camera.SetAutoTracking(true, mob.Node);
|
||||
mEngine.Camera.DetachFromParent();
|
||||
mEngine.Camera.Position = new Vector3(-160, 240, 0);
|
||||
|
||||
SceneNode camNode = mob.Node.CreateChildSceneNode();
|
||||
camNode.AttachObject(mEngine.Camera);
|
||||
mEngine.Camera.SetAutoTracking(true, camNode);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -35,6 +35,13 @@ namespace SS3D.States
|
||||
private ItemManager itemManager;
|
||||
private MobManager mobManager;
|
||||
private GUI guiGameScreen;
|
||||
|
||||
#region Mouse/Camera stuff
|
||||
private DateTime lastRMBClick = DateTime.Now;
|
||||
private int lastMouseX = 0;
|
||||
private int lastMouseY = 0;
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
public GameScreen()
|
||||
@@ -51,9 +58,6 @@ namespace SS3D.States
|
||||
map = new Map(mEngine);
|
||||
itemManager = new ItemManager(mEngine, map, mEngine.mNetworkMgr);
|
||||
mobManager = new MobManager(mEngine, map, mEngine.mNetworkMgr);
|
||||
|
||||
mEngine.Camera.Position = new Mogre.Vector3(0, 300, 0);
|
||||
mEngine.Camera.LookAt(new Mogre.Vector3(160,64,160));
|
||||
|
||||
SetUp();
|
||||
|
||||
@@ -198,10 +202,33 @@ namespace SS3D.States
|
||||
|
||||
public override void MouseDown(MOIS.MouseEvent mouseState, MOIS.MouseButtonID button)
|
||||
{
|
||||
if (button == MOIS.MouseButtonID.MB_Right)
|
||||
{
|
||||
TimeSpan clickDiff = DateTime.Now - lastRMBClick;
|
||||
lastRMBClick = DateTime.Now;
|
||||
if (clickDiff.TotalMilliseconds < 250)
|
||||
{
|
||||
mEngine.Camera.ParentNode.ResetOrientation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void MouseMove(MOIS.MouseEvent mouseState)
|
||||
{
|
||||
if (mouseState.state.ButtonDown(MOIS.MouseButtonID.MB_Right))
|
||||
{
|
||||
int degree;
|
||||
if (mouseState.state.X.rel > lastMouseX)
|
||||
{
|
||||
degree = -mouseState.state.X.rel;
|
||||
}
|
||||
else
|
||||
{
|
||||
degree = mouseState.state.X.rel;
|
||||
}
|
||||
mEngine.Camera.ParentNode.Yaw(Mogre.Math.DegreesToRadians(degree), Node.TransformSpace.TS_WORLD);
|
||||
lastMouseX = mouseState.state.X.abs;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
Reference in New Issue
Block a user