diff --git a/Graphics2/ControlledMeshNode.cpp b/Graphics2/ControlledMeshNode.cpp index 19cd742..8704df0 100644 --- a/Graphics2/ControlledMeshNode.cpp +++ b/Graphics2/ControlledMeshNode.cpp @@ -5,9 +5,9 @@ ControlledMeshNode::ControlledMeshNode(wstring name, wstring modelName) : MeshNo } void ControlledMeshNode::Update(FXMMATRIX& currentWorldTransformation) -{ - ObjectNode::Update(_worldTransformation); +{ MeshNode::Update(currentWorldTransformation); + ObjectNode::Update(_worldTransformation); } bool ControlledMeshNode::Initialise(void) diff --git a/Graphics2/Graphics2.cpp b/Graphics2/Graphics2.cpp index 8004df3..cd00f2f 100644 --- a/Graphics2/Graphics2.cpp +++ b/Graphics2/Graphics2.cpp @@ -24,7 +24,7 @@ void Graphics2::CreateSceneGraph() DirectXFramework::GetDXFramework()->GetGlobalLighting()->SetAmbientLight(XMFLOAT4(0.7f, 0.7f, 0.7f, 1.0f)); DirectXFramework::GetDXFramework()->GetGlobalLighting()->SetDirectionalLight(XMVectorSet(0.5f, -1.0f, -1.0f, 0.0f), XMFLOAT4(0.5f, 0.5f, 0.5f, 1.0f)); - shared_ptr skyDome = make_shared(L"SkyDome", L"Textures\\SkyWater.dds", 30.0f); + shared_ptr skyDome = make_shared(L"SkyDome", L"Textures\\SkyWater.dds", 180.0f); sceneGraph->Add(skyDome); //shared_ptr terrainNode = make_shared(L"MainTerrain", L"Textures\\Example_HeightMap.raw", L"RandomWords"); @@ -42,10 +42,10 @@ void Graphics2::CreateSceneGraph() sceneGraph->Add(plane1Node); shared_ptr boatGraph = make_shared(L"boatGraph"); - boatGraph->SetWorldTransform(XMMatrixScaling(0.1f, 0.1f, 0.1f) * XMMatrixTranslation(-1840.0f, 290.0f, 699.0f)); + boatGraph->SetWorldTransform(XMMatrixScaling(0.1f, 0.1f, 0.1f) * XMMatrixTranslation(-1880.0f, 290.0f, 610.0f)); shared_ptr boat1Node = make_shared(L"Boat1", L"Models\\Boat\\Boat.FBX"); - boat1Node->SetStartOrientation(XMMatrixRotationAxis(XMVectorSet(0.0f, 0.0f, 1.0f, 0.0f), XM_PI) * XMMatrixRotationAxis(XMVectorSet(1.0f, 0.0f, 0.0f, 0.0f), 0.5f * XM_PI)); + boat1Node->SetStartOrientation(XMMatrixRotationAxis(XMVectorSet(0.0f, 0.0f, 1.0f, 0.0f), (90.0f * XM_PI) / 180.0f) * XMMatrixRotationAxis(XMVectorSet(1.0f, 0.0f, 0.0f, 0.0f), (90.0f * XM_PI) / 180.0f)); boat1Node->SetNodePosition(0.0f, 0.0f, 0.0f); boatGraph->Add(boat1Node); @@ -194,6 +194,7 @@ void Graphics2::UpdateSceneGraph() if (_currentPlayerObject != nullptr) { _currentPlayerObject->SetForwardBack(_flySpeed * _boostMultiplier); + startCameraPos = _currentPlayerObject->GetNodePosition(); } for (ControlInputs currentControl : _currentInputs) @@ -215,7 +216,8 @@ void Graphics2::UpdateSceneGraph() case ControlInputs::StrafeLeft: if (_currentPlayerObject != nullptr) { - _currentPlayerObject->SetLeftRight(-_flySpeed * _boostMultiplier); + //_currentPlayerObject->SetLeftRight(-_flySpeed * _boostMultiplier); + _currentPlayerObject->SetRoll(_turnSpeed * 0.5f); } else { @@ -225,7 +227,8 @@ void Graphics2::UpdateSceneGraph() case ControlInputs::StrafeRight: if (_currentPlayerObject != nullptr) { - _currentPlayerObject->SetLeftRight(_flySpeed * _boostMultiplier); + //_currentPlayerObject->SetLeftRight(_flySpeed * _boostMultiplier); + _currentPlayerObject->SetRoll(-_turnSpeed * 0.5f); } else { @@ -235,8 +238,7 @@ void Graphics2::UpdateSceneGraph() case ControlInputs::TurnLeft: if (_currentPlayerObject != nullptr) { - _currentPlayerObject->SetYaw(-_turnSpeed); - //_currentPlayerObject->SetTotalRoll(_turnSpeed * 0.5f); + _currentPlayerObject->SetYaw(-_turnSpeed); } else { @@ -246,8 +248,7 @@ void Graphics2::UpdateSceneGraph() case ControlInputs::TurnRight: if (_currentPlayerObject != nullptr) { - _currentPlayerObject->SetYaw(_turnSpeed); - //_currentPlayerObject->SetTotalRoll(-_turnSpeed * 0.5f); + _currentPlayerObject->SetYaw(_turnSpeed); } else { @@ -292,8 +293,8 @@ void Graphics2::UpdateSceneGraph() if (boat1 != nullptr) { - boat1->SetForwardBack(10.0f); - boat1->SetYaw(-1.0f); + boat1->SetForwardBack(-3.0f); + boat1->SetYaw(-0.2f); } if (_currentRotation == 360) @@ -305,19 +306,17 @@ void Graphics2::UpdateSceneGraph() else { _currentRotation += 1; - _currentSideRotation += 1; - if (_currentPlayerObject == nullptr || !_boosting) - { - _currentPropRotation += 50; - } - else - { - _currentPropRotation += 100; - } + _currentSideRotation += 1; + _currentPropRotation += 10 * _boostMultiplier; + } // Check the camera and our terrain boundaries XMVECTOR currentCameraPos = GetCamera()->GetCameraPosition(); + if (_currentPlayerObject != nullptr) + { + currentCameraPos = _currentPlayerObject->GetNodePosition(); + } GetCamera()->Update(); if (mainTerrain != nullptr) { @@ -386,7 +385,7 @@ void Graphics2::GetCurrentControlInputs() if (GetAsyncKeyState(VK_SHIFT) || boostHit) { _currentInputs.insert(ControlInputs::Fire1); - _boostMultiplier = SharedMethods::Clamp(_boostMultiplier + _boostStep, 1, _boostMax); + _boostMultiplier = SharedMethods::Clamp(_boostMultiplier + _boostStep, 1, _boostMax); } else { diff --git a/Graphics2/Models/Boat/ship.fbx b/Graphics2/Models/Boat/ship.fbx new file mode 100644 index 0000000..7e6c7ca Binary files /dev/null and b/Graphics2/Models/Boat/ship.fbx differ diff --git a/Graphics2/SkyNode.cpp b/Graphics2/SkyNode.cpp index 9a14b67..2bd60f3 100644 --- a/Graphics2/SkyNode.cpp +++ b/Graphics2/SkyNode.cpp @@ -21,7 +21,7 @@ bool SkyNode::Initialise() return false; } - CreateSphere(_skyRadius, 180); + CreateSphere(_skyRadius, 360); GenerateBuffers(); BuildShaders(); BuildVertexLayout(); diff --git a/Graphics2/TerrainNode.cpp b/Graphics2/TerrainNode.cpp index 119887c..02f411e 100644 --- a/Graphics2/TerrainNode.cpp +++ b/Graphics2/TerrainNode.cpp @@ -529,6 +529,7 @@ void TerrainNode::PopulateTerrain(SceneGraphPointer currentSceneGraph, vector newNode = make_shared(nodesForPop[nodeIndex].nodeBaseName + nodeName, nodesForPop[nodeIndex].modelName); - newNode->SetWorldTransform(XMMatrixScaling(scale, scale, scale) * XMMatrixTranslation(xPos, yPos, zPos)); + newNode->SetWorldTransform(XMMatrixRotationAxis(XMVectorSet(0.0f, 1.0f, 0.0f, 0.0f), yRotation * XM_PI / 180.0f) * XMMatrixScaling(scale, scale, scale) * XMMatrixTranslation(xPos, yPos, zPos)); currentSceneGraph->Add(newNode); } }