forked from 0ad/0ad
Adds rotation to starting camera (currently unused)
This was SVN commit r9623.
This commit is contained in:
parent
2fa7c8aeca
commit
3be43ede41
@ -226,14 +226,19 @@ Player.prototype.SetPhase = function(p)
|
||||
this.phase = p;
|
||||
};
|
||||
|
||||
Player.prototype.GetStartingCamera = function()
|
||||
Player.prototype.GetStartingCameraPos = function()
|
||||
{
|
||||
return this.startCam;
|
||||
return this.startCam.position;
|
||||
}
|
||||
|
||||
Player.prototype.SetStartingCamera = function(pos)
|
||||
Player.prototype.GetStartingCameraRot = function()
|
||||
{
|
||||
this.startCam = pos;
|
||||
return this.startCam.rotation;
|
||||
}
|
||||
|
||||
Player.prototype.SetStartingCamera = function(pos, rot)
|
||||
{
|
||||
this.startCam = {"position": pos, "rotation": rot};
|
||||
}
|
||||
|
||||
Player.prototype.HasStartingCamera = function()
|
||||
|
@ -129,9 +129,10 @@ function LoadPlayerSettings(settings)
|
||||
player.SetDiplomacy(diplomacy);
|
||||
}
|
||||
|
||||
if (getSetting(pData, pDefs, "StartingCamera") !== undefined)
|
||||
var startCam = getSetting(pData, pDefs, "StartingCamera");
|
||||
if (startCam !== undefined)
|
||||
{
|
||||
player.SetStartingCamera(getSetting(pData, pDefs, "StartingCamera"));
|
||||
player.SetStartingCamera(startCam.Position, startCam.Rotation);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -288,12 +288,13 @@ int CMapReader::ApplyData()
|
||||
{
|
||||
// Default to global camera (with constraints)
|
||||
pGameView->ResetCameraTarget(pGameView->GetCamera()->GetFocus());
|
||||
|
||||
|
||||
// TODO: Starting rotation?
|
||||
CmpPtr<ICmpPlayer> cmpPlayer(*pSimulation2, cmpPlayerManager->GetPlayerByID(m_PlayerID));
|
||||
if (!cmpPlayer.null() && cmpPlayer->HasStartingCamera())
|
||||
{
|
||||
// Use player starting camera
|
||||
CFixedVector3D pos = cmpPlayer->GetStartingCamera();
|
||||
CFixedVector3D pos = cmpPlayer->GetStartingCameraPos();
|
||||
pGameView->ResetCameraTarget(CVector3D(pos.X.ToFloat(), pos.Y.ToFloat(), pos.Z.ToFloat()));
|
||||
}
|
||||
else if (m_StartingCameraTarget != INVALID_ENTITY)
|
||||
|
@ -53,9 +53,14 @@ public:
|
||||
return m_Script.Call<CColor>("GetColour");
|
||||
}
|
||||
|
||||
virtual CFixedVector3D GetStartingCamera()
|
||||
virtual CFixedVector3D GetStartingCameraPos()
|
||||
{
|
||||
return m_Script.Call<CFixedVector3D>("GetStartingCamera");
|
||||
return m_Script.Call<CFixedVector3D>("GetStartingCameraPos");
|
||||
}
|
||||
|
||||
virtual CFixedVector3D GetStartingCameraRot()
|
||||
{
|
||||
return m_Script.Call<CFixedVector3D>("GetStartingCameraRot");
|
||||
}
|
||||
|
||||
virtual bool HasStartingCamera()
|
||||
|
@ -36,7 +36,8 @@ public:
|
||||
virtual void SetColour(u8 r, u8 g, u8 b) = 0;
|
||||
|
||||
virtual CColor GetColour() = 0;
|
||||
virtual CFixedVector3D GetStartingCamera() = 0;
|
||||
virtual CFixedVector3D GetStartingCameraPos() = 0;
|
||||
virtual CFixedVector3D GetStartingCameraRot() = 0;
|
||||
|
||||
virtual bool HasStartingCamera() = 0;
|
||||
|
||||
|
@ -623,11 +623,15 @@ void PlayerSettingsControl::ReadFromEngine()
|
||||
// camera
|
||||
if (player["StartingCamera"].defined())
|
||||
{
|
||||
AtObj cam = *player["StartingCamera"];
|
||||
sCameraInfo info;
|
||||
info.pX = wxAtof(*cam["x"]);
|
||||
info.pY = wxAtof(*cam["y"]);
|
||||
info.pZ = wxAtof(*cam["z"]);
|
||||
AtObj camPos = *player["StartingCamera"]["Position"];
|
||||
info.pX = wxAtof(*camPos["x"]);
|
||||
info.pY = wxAtof(*camPos["y"]);
|
||||
info.pZ = wxAtof(*camPos["z"]);
|
||||
AtObj camRot = *player["StartingCamera"]["Rotation"];
|
||||
info.rX = wxAtof(*camRot["x"]);
|
||||
info.rY = wxAtof(*camRot["y"]);
|
||||
info.rZ = wxAtof(*camRot["z"]);
|
||||
|
||||
controls.page->SetCamera(info, true);
|
||||
}
|
||||
@ -718,9 +722,17 @@ AtObj PlayerSettingsControl::UpdateSettingsObject()
|
||||
if (controls.page->IsCameraDefined())
|
||||
{
|
||||
sCameraInfo cam = controls.page->GetCamera();
|
||||
camObj.setDouble("x", cam.pX);
|
||||
camObj.setDouble("y", cam.pY);
|
||||
camObj.setDouble("z", cam.pZ);
|
||||
AtObj camPos;
|
||||
camPos.setDouble("x", cam.pX);
|
||||
camPos.setDouble("y", cam.pY);
|
||||
camPos.setDouble("z", cam.pZ);
|
||||
camObj.set("Position", camPos);
|
||||
|
||||
AtObj camRot;
|
||||
camRot.setDouble("x", cam.rX);
|
||||
camRot.setDouble("y", cam.rY);
|
||||
camRot.setDouble("z", cam.rZ);
|
||||
camObj.set("Rotation", camRot);
|
||||
}
|
||||
player.set("StartingCamera", camObj);
|
||||
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "../GameLoop.h"
|
||||
#include "../View.h"
|
||||
|
||||
#include "maths/MathUtil.h"
|
||||
#include "maths/Vector3D.h"
|
||||
#include "maths/Quaternion.h"
|
||||
#include "ps/Game.h"
|
||||
@ -222,14 +223,19 @@ MESSAGEHANDLER(LookAt)
|
||||
QUERYHANDLER(GetView)
|
||||
{
|
||||
CVector3D focus = g_Game->GetView()->GetCamera()->GetFocus();
|
||||
|
||||
sCameraInfo info;
|
||||
|
||||
info.pX = focus.X;
|
||||
info.pY = focus.Y;
|
||||
info.pZ = focus.Z;
|
||||
|
||||
// TODO: Rotation
|
||||
CQuaternion quatRot = g_Game->GetView()->GetCamera()->m_Orientation.GetRotation();
|
||||
quatRot.Normalize();
|
||||
CVector3D rotation = quatRot.ToEulerAngles();
|
||||
|
||||
info.rX = RADTODEG(rotation.X);
|
||||
info.rY = RADTODEG(rotation.Y);
|
||||
info.rZ = RADTODEG(rotation.Z);
|
||||
|
||||
msg->info = info;
|
||||
}
|
||||
@ -245,6 +251,8 @@ MESSAGEHANDLER(SetView)
|
||||
sCameraInfo cam = msg->info;
|
||||
|
||||
view->ResetCameraTarget(CVector3D(cam.pX, cam.pY, cam.pZ));
|
||||
|
||||
// TODO: Rotation
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user