Dublin Open: Player A vs. Player B
The Dublin Open features an exciting clash between Player A and Player B. With both competitors showcasing impressive form recently, this match promises to be a thrilling encounter. Here are some key points from our analysis:
- Predicted Winner: Player A
- Main Factors: Player A has demonstrated superior performance on hard courts this season compared to Player B's relatively weaker record on this surface type.
- Betting Tip: Consider placing an outright bet on Player A due to favorable odds driven by his consistent performance against top-tier opponents throughout recent tournaments.
- Odds Overview: Current odds favor Player A at +150 while Player B stands at +200 according to leading bookmakers.*#include "Manager.h"
#include "System/Window.h"
#include "System/Input.h"
#include "System/Renderer.h"
#include "System/Renderer/Shader.h"
#include "System/Renderer/Mesh.h"
#include "System/Renderer/Texture.h"
#include "Scene/SceneManager.h"
#include "Scene/Camera/CameraManager.h"
#include "Components/SpriteRendererComponent.h"
#include "Components/SphereColliderComponent.h"
#include "Components/RigidBodyComponent.h"
Manager::Manager()
{
}
Manager::~Manager()
{
}
void Manager::Initialize()
{
// Scene
_sceneManager = new SceneManager();
// Window
_window = new Window();
_window->Initialize("test", {800.f,800.f});
// Input
_input = new Input();
_input->Initialize(_window->GetWindowHandle());
// Renderer
_renderer = new Renderer();
_renderer->Initialize();
// Shader
auto shader = _renderer->CreateShader("res/shader/default.vert", "res/shader/default.frag");
shader->AddUniform("uMVP");
shader->AddUniform("uTexture");
shader->SetUniform("uTexture", _renderer->CreateTexture("res/image/test.png"));
auto cameraShader = _renderer->CreateShader("res/shader/camera.vert", "res/shader/camera.frag");
cameraShader->AddUniform("uMVP");
auto cameraMesh = _renderer->CreateMesh();
cameraMesh->LoadOBJ("res/model/cube.obj");
auto spriteRenderer = _renderer->CreateSpriteRenderer();
spriteRenderer->SetShader(shader);
spriteRenderer->SetMesh(cameraMesh);
auto camera = _sceneManager->GetScene()->CreateGameObject();
camera->AddComponent(new CameraComponent());
camera->GetComponent
()->SetCameraType(CameraComponent::CameraType::PERSPECTIVE); camera->GetComponent ()->SetPerspective(60.f * PI /180.f); camera->GetComponent ()->SetNear(0.1f); camera->GetComponent ()->SetFar(1000.f); camera->GetComponent ()->SetSize(800.f / (float)600.f); camera->AddComponent(new RigidBodyComponent()); camera->AddComponent(new SphereColliderComponent()); camera->GetComponent ()->SetRadius(1.f); auto cameraGO = _sceneManager->GetScene()->CreateGameObject(); cameraGO->AddComponent(new CameraComponent()); cameraGO->GetComponent ()->SetCameraType(CameraComponent::CameraType::ORTHOGONAL); cameraGO->GetComponent ()->SetOrthogonal(20.f); cameraGO->GetComponent ()->SetNear(0.1f); cameraGO->GetComponent ()->SetFar(1000.f); cameraGO->GetComponent ()->SetSize(800.f / (float)600.f); } void Manager::Run() { while (!_window->ShouldClose()) { _input->_mouseX = _input->_mouseY = -1; Update(); Draw(); _window->_pollEvents(); } } void Manager::Update() { if (_input->_keys[GLFW_KEY_W]) { if (_input->_keys[GLFW_KEY_LEFT_SHIFT]) gEngine._sceneManager->_currentScene->_camera._position += gEngine._sceneManager->_currentScene->_camera._front * gEngine._sceneManager->_currentScene->_camera._moveSpeed * gEngine._deltaTime; else gEngine._sceneManager->_currentScene->_camera._position += gEngine._sceneManager->_currentScene->_camera._front * gEngine._sceneManager->_currentScene->_camera._moveSpeed * gEngine._deltaTime * .5f; } if (_input->_keys[GLFW_KEY_S]) { if (_input->_keys[GLFW_KEY_LEFT_SHIFT]) gEngine._sceneManager->_currentScene->_camera._position -= gEngine._sceneManager->_currentScene->_camera._front * gEngine._sceneManager->_currentScene->_camera._moveSpeed * gEngine._deltaTime; else gEngine._sceneManager->_currentScene->_camera._position -= gEngine._sceneManager->_currentScene->_camera._front * gEngine._sceneManager->_currentScene->_camera._moveSpeed * gEngine._deltaTime * .5f; } if (_input->_keys[GLFW_KEY_A]) { if (_input->_keys[GLFW_KEY_LEFT_SHIFT]) gEngine._sceneManager->_currentScene->_camera._position -= gEngine._sceneManager->_currentScene->_camera.GetRight() * gEngine._sceneManager->_currentScene->_camera.GetMoveSpeed() * gEngine._deltaTime; else gEngine._sceneManager->_currentScene->_camera._position -= gEngine._sceneManager->_currentScene->_camera.GetRight() * gEngine._sceneManager->_currentScene->_camera.GetMoveSpeed() * gEngine._deltaTime * .5f; } if (_input->_keys[GLFW_KEY_D]) { if (_input->_keys[GLFW_KEY_LEFT_SHIFT]) gEngine._sceneManager->_currentScene->_camera._position += gEngine._sceneManager->_currentScene->_camera.GetRight() * gEngine._sceneManager->_currentScene->_camera.GetMoveSpeed() * gEngine._deltaTime; else gEngine._sceneManager->_currentScene->_camera.GetRight() * gEngine._sceneManager->_currentScene->_camera.GetMoveSpeed() * gEngine._deltaTime * .5f; } if (_input_->keys[GLFW_KEY_Q]) { } if (_input_->keys[GLFW_KEY_E]) float yawSpeed = .25f; float pitchSpeed = .25f; if (_input_->keys[GLFW_KEY_UP]) g_engine_.getSceneManager()->getCurrentScene()->getCamera().yaw(g_engine_.getDeltaTime()*yawSpeed); if (_input_->keys[GLFW_KEY_DOWN]) g_engine_.getSceneManager()->getCurrentScene()->getCamera().yaw(-g_engine_.getDeltaTime()*yawSpeed); if (_input_->keys[GLFW_KEY_RIGHT]) g_engine_.getSceneManager()->getCurrentScene()->getCamera().pitch(g_engine_.getDeltaTime()*pitchSpeed); if (_input_->keys[GLFW_KEY_LEFT]) g_engine_.getSceneManager()->getCurrentScene()->getCamera().pitch(-g_engine_.getDeltaTime()*pitchSpeed); auto delta = _window_->getWindowFrameTime(); for (auto &entity : _entities_) entity.second.update(delta); for (auto &component : _components_) component.second.update(delta); for (auto &entity : _entities_) entity.second.prepareRender(); for (auto &component : _components_) component.second.prepareRender(); for (auto &entity : _entities_) entity.second.render(); for (auto &component : _components_) component.second.render(); } void Manager::Draw() { glClearColor(.8f,.8f,.8f,.8f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); auto projectionMatrix = glm::mat4(1.f); switch (g_engine.getSceneManager()->getCurrentScene()->getCamera().getType()) case Camera::PERSPECTIVE: default: break; case Camera::ORTHOGRAPHIC: break; case Camera::FISH_EYE: break; case Camera::ISOMETRIC: break; case Camera::PANO_180: break; case Camera::PANO_360: break; case Camera::PANO_360_VERTICAL: break; case Camera::FOV_360: break; case Camera::STEREO: break; case Camera::STEREO_FISHEYE: break; case Camera::VR_PANORAMIC: break; case Camera::VR_PANORAMIC_STEREO: break; case Camera::VR_STEREO_OVER_UNDER: break; case Camera::VR_STEREO_IN_OUT: break; switch (g_engine.getSceneManager()->getCurrentScene()->getCamera().getType()) case CameraType::PERSPECTIVE: default: break; case CameraType::ORTHOGRAPHIC: break; case CameraType::FISH_EYE: break; case CameraType::ISOMETRIC: break; case CameraType::PANO_180: break; case CameraType::PANO_360: break; case CameraType::PANO_360_VERTICAL: break; case CameraType::FOV_360: break; case CameraType::STEREO: break; case CameraType::STEREO_FISHEYE: break; case CameraType::VR_PANORAMIC: break; case CameraType::VR_PANORAMIC_STEREO: break; case CameraType::VR_STEREO_OVER_UNDER: break; case CameraType::VR_STEREO_IN_OUT: break; switch (g_engine.getSceneManager()->getCurrentScene()->getCamera().getType()) switch (g_engine.getSceneManager()->getCurrentScene()->getActiveCamera().getType()) default: auto width = static_cast (_window.getWidth()); auto height = static_cast (_window.getHeight()); switch (g_engine.getSceneManager()->getCurrentScene()->getActiveCamera().getType()) default: float aspectRatio = width / height; float nearPlaneDistance = camera.getNearPlaneDistance(); float farPlaneDistance = camera.getFarPlaneDistance(); float fovAngleYRadians = glm.degreesToRadians(camera.getPerspective()); const float tanFovOverTwo = glm.tan(fovAngleYRadians / static_cast (2)); glm.mat4 projectionMatrix( glm.one(), glm.zero(), glm.zero(), glm.zero(), glm.zero(), tanFovOverTwo / aspectRatio, glm.zero(), glm.zero(), glm.zero(), tanFovOverTwo, nearPlaneDistance / (nearPlaneDistance - farPlaneDistance), glm.one(), glm.zero(), glm.zero(), nearPlaneDistance*farPlaneDistance / (nearPlaneDistance - farPlaneDistance), glm.zero()); switch (g_engine.getSceneManager()->getCurrentScene()->getActiveCamera().getType()) default: float aspectRatio = width / height; float nearPlaneDistance = camera.getNearPlaneDistance(); float farPlaneDistance = camera.getFarPlaneDistance(); const float orthoHeightHalfSizeInWorldSpaceUnits = nearPlaneDistance*tan(glm.radians(camera.getOrthoVerticalFOV()/static_cast (2))); const float orthoWidthHalfSizeInWorldSpaceUnits = orthoHeightHalfSizeInWorldSpaceUnits*aspectRatio; float orthoHeightHalfSizeInScreenSpaceUnits=orthoHeightHalfSizeInWorldSpaceUnits*glm.tan(glm.radians(camera.getOrthoVerticalFOV()/static_cast (2))); float orthoWidthHalfSizeInScreenSpaceUnits=orthoWidthHalfSizeInWorldSpaceUnits*glm.tan(glm.radians(camera.getOrthoVerticalFOV()/static_cast (2))); glm.mat4 orthographicProjectionMatrix( static_cast (1) / orthoWidthHalfSizeInWorldSpaceUnits, glm.zero(), glm.zero(), static_cast (-orthoWidthHalfSizeInWorldSpaceUnits*(static_cast (1) + static_cast (-1))), glm.zero(), static_cast (1) / orthoHeightHalfSizeInWorldSpaceUnits, glm.zero(), static_cast (-orthoHeightHalfSizeInWorldSpaceUnits*(static_cast (1) + static_cast (-1))), glm.zero(), glm.zero(), static_cast (-static_cast (1)) / (far