From 2a4df119ac2479b8236ed35c12cf6d1933e2a2f4 Mon Sep 17 00:00:00 2001 From: Robert <robert.trololo@gmail.com> Date: Fri, 25 Sep 2020 11:48:44 +0200 Subject: [PATCH] Made planets selectable --- CMakeLists.txt.user | 386 ++++++++++++++++++++++++++++++++++++++++++++ src/Planet.cpp | 30 +++- src/Planet.hpp | 9 ++ src/Screen.cpp | 55 ++++++- src/Screen.hpp | 10 ++ 5 files changed, 482 insertions(+), 8 deletions(-) create mode 100644 CMakeLists.txt.user diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user new file mode 100644 index 0000000..cbd8378 --- /dev/null +++ b/CMakeLists.txt.user @@ -0,0 +1,386 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE QtCreatorProject> +<!-- Written by QtCreator 4.13.1, 2020-09-24T23:06:08. --> +<qtcreator> + <data> + <variable>EnvironmentId</variable> + <value type="QByteArray">{f96bfb42-258c-4376-a358-d39255821a90}</value> + </data> + <data> + <variable>ProjectExplorer.Project.ActiveTarget</variable> + <value type="int">0</value> + </data> + <data> + <variable>ProjectExplorer.Project.EditorSettings</variable> + <valuemap type="QVariantMap"> + <value type="bool" key="EditorConfiguration.AutoIndent">true</value> + <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value> + <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value> + <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0"> + <value type="QString" key="language">Cpp</value> + <valuemap type="QVariantMap" key="value"> + <value type="QByteArray" key="CurrentPreferences">CppGlobal</value> + </valuemap> + </valuemap> + <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1"> + <value type="QString" key="language">QmlJS</value> + <valuemap type="QVariantMap" key="value"> + <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value> + </valuemap> + </valuemap> + <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value> + <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value> + <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value> + <value type="int" key="EditorConfiguration.IndentSize">4</value> + <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value> + <value type="int" key="EditorConfiguration.MarginColumn">80</value> + <value type="bool" key="EditorConfiguration.MouseHiding">true</value> + <value type="bool" key="EditorConfiguration.MouseNavigation">true</value> + <value type="int" key="EditorConfiguration.PaddingMode">1</value> + <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value> + <value type="bool" key="EditorConfiguration.ShowMargin">false</value> + <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value> + <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value> + <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value> + <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value> + <value type="int" key="EditorConfiguration.TabSize">8</value> + <value type="bool" key="EditorConfiguration.UseGlobal">true</value> + <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value> + <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value> + <value type="bool" key="EditorConfiguration.cleanIndentation">true</value> + <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value> + <value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value> + <value type="bool" key="EditorConfiguration.inEntireDocument">false</value> + <value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value> + </valuemap> + </data> + <data> + <variable>ProjectExplorer.Project.PluginSettings</variable> + <valuemap type="QVariantMap"> + <valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks"> + <value type="bool" key="AutoTest.Framework.Boost">true</value> + <value type="bool" key="AutoTest.Framework.Catch">true</value> + <value type="bool" key="AutoTest.Framework.GTest">true</value> + <value type="bool" key="AutoTest.Framework.QtQuickTest">true</value> + <value type="bool" key="AutoTest.Framework.QtTest">true</value> + </valuemap> + <valuemap type="QVariantMap" key="AutoTest.CheckStates"/> + <value type="int" key="AutoTest.RunAfterBuild">0</value> + <value type="bool" key="AutoTest.UseGlobal">true</value> + <valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey"> + <value type="QString">-fno-delayed-template-parsing</value> + </valuelist> + <value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value> + <value type="QString" key="ClangCodeModel.WarningConfigId">Builtin.Questionable</value> + <valuemap type="QVariantMap" key="ClangTools"> + <value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value> + <value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value> + <value type="int" key="ClangTools.ParallelJobs">6</value> + <valuelist type="QVariantList" key="ClangTools.SelectedDirs"/> + <valuelist type="QVariantList" key="ClangTools.SelectedFiles"/> + <valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/> + <value type="bool" key="ClangTools.UseGlobalSettings">true</value> + </valuemap> + </valuemap> + </data> + <data> + <variable>ProjectExplorer.Project.Target.0</variable> + <valuemap type="QVariantMap"> + <value type="QString" key="DeviceType">Desktop</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop (x86-windows-msvc2019-pe-64bit)</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop (x86-windows-msvc2019-pe-64bit)</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{e7564e53-19bf-462d-a58b-2034502371d2}</value> + <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value> + <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value> + <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value> + <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0"> + <value type="QString" key="CMake.Initial.Parameters">-GNinja +-DCMAKE_BUILD_TYPE:String=Debug +-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable} +-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C} +-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value> + <value type="int" key="EnableQmlDebugging">2</value> + <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\Robert\source\repos\GraviSim\..\build-GraviSim-Desktop_x86_windows_msvc2019_pe_64bit-Debug</value> + <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> + <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> + <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value> + <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"> + <value type="QString">all</value> + </valuelist> + <value type="QString" key="CMakeProjectManager.MakeStep.CMakeArguments"></value> + <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value> + </valuemap> + <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Erstellen</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Erstellen</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value> + </valuemap> + <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1"> + <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> + <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value> + <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"> + <value type="QString">clean</value> + </valuelist> + <value type="QString" key="CMakeProjectManager.MakeStep.CMakeArguments"></value> + <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value> + </valuemap> + <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Bereinigen</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value> + </valuemap> + <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value> + <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value> + <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/> + <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value> + </valuemap> + <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1"> + <value type="QString" key="CMake.Initial.Parameters">-GNinja +-DCMAKE_BUILD_TYPE:String=Release +-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable} +-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C} +-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value> + <value type="int" key="EnableQmlDebugging">2</value> + <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\Robert\source\repos\GraviSim\..\build-GraviSim-Desktop_x86_windows_msvc2019_pe_64bit-Release</value> + <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> + <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> + <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value> + <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"> + <value type="QString">all</value> + </valuelist> + <value type="QString" key="CMakeProjectManager.MakeStep.CMakeArguments"></value> + <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value> + </valuemap> + <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Erstellen</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Erstellen</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value> + </valuemap> + <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1"> + <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> + <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value> + <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"> + <value type="QString">clean</value> + </valuelist> + <value type="QString" key="CMakeProjectManager.MakeStep.CMakeArguments"></value> + <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value> + </valuemap> + <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Bereinigen</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value> + </valuemap> + <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value> + <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value> + <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/> + <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value> + </valuemap> + <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2"> + <value type="QString" key="CMake.Initial.Parameters">-GNinja +-DCMAKE_BUILD_TYPE:String=RelWithDebInfo +-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable} +-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C} +-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value> + <value type="int" key="EnableQmlDebugging">2</value> + <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\Robert\source\repos\GraviSim\..\build-GraviSim-Desktop_x86_windows_msvc2019_pe_64bit-RelWithDebInfo</value> + <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> + <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> + <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value> + <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"> + <value type="QString">all</value> + </valuelist> + <value type="QString" key="CMakeProjectManager.MakeStep.CMakeArguments"></value> + <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value> + </valuemap> + <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Erstellen</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Erstellen</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value> + </valuemap> + <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1"> + <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> + <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value> + <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"> + <value type="QString">clean</value> + </valuelist> + <value type="QString" key="CMakeProjectManager.MakeStep.CMakeArguments"></value> + <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value> + </valuemap> + <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Bereinigen</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value> + </valuemap> + <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value> + <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value> + <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/> + <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release mit Debuginformationen</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value> + </valuemap> + <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3"> + <value type="QString" key="CMake.Initial.Parameters">-GNinja +-DCMAKE_BUILD_TYPE:String=MinSizeRel +-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable} +-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C} +-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value> + <value type="int" key="EnableQmlDebugging">2</value> + <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\Robert\source\repos\GraviSim\..\build-GraviSim-Desktop_x86_windows_msvc2019_pe_64bit-MinSizeRel</value> + <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> + <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> + <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value> + <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"> + <value type="QString">all</value> + </valuelist> + <value type="QString" key="CMakeProjectManager.MakeStep.CMakeArguments"></value> + <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value> + </valuemap> + <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Erstellen</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Erstellen</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value> + </valuemap> + <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1"> + <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> + <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value> + <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"> + <value type="QString">clean</value> + </valuelist> + <value type="QString" key="CMakeProjectManager.MakeStep.CMakeArguments"></value> + <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value> + </valuemap> + <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Bereinigen</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value> + </valuemap> + <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value> + <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value> + <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/> + <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release (kleinstmöglich)</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value> + </valuemap> + <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">4</value> + <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0"> + <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> + <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deployment</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deployment</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value> + </valuemap> + <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value> + <valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/> + <value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value> + </valuemap> + <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value> + <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/> + <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0"> + <value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value> + <valuelist type="QVariantList" key="Analyzer.Perf.Events"> + <value type="QString">cpu-cycles</value> + </valuelist> + <valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/> + <value type="int" key="Analyzer.Perf.Frequency">250</value> + <valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments"> + <value type="QString">-e</value> + <value type="QString">cpu-cycles</value> + <value type="QString">--call-graph</value> + <value type="QString">dwarf,4096</value> + <value type="QString">-F</value> + <value type="QString">250</value> + </valuelist> + <value type="QString" key="Analyzer.Perf.SampleMode">-F</value> + <value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value> + <value type="int" key="Analyzer.Perf.StackSize">4096</value> + <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value> + <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value> + <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value> + <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value> + <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value> + <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/> + <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value> + <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value> + <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value> + <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value> + <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value> + <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value> + <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value> + <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value> + <value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value> + <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value> + <value type="int" key="Analyzer.Valgrind.NumCallers">25</value> + <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/> + <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value> + <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value> + <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value> + <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value> + <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value> + <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds"> + <value type="int">0</value> + <value type="int">1</value> + <value type="int">2</value> + <value type="int">3</value> + <value type="int">4</value> + <value type="int">5</value> + <value type="int">6</value> + <value type="int">7</value> + <value type="int">8</value> + <value type="int">9</value> + <value type="int">10</value> + <value type="int">11</value> + <value type="int">12</value> + <value type="int">13</value> + <value type="int">14</value> + </valuelist> + <valuelist type="QVariantList" key="CustomOutputParsers"/> + <value type="int" key="PE.EnvironmentAspect.Base">2</value> + <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">GraviSim</value> + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.GraviSim</value> + <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">GraviSim</value> + <value type="QString" key="RunConfiguration.Arguments"></value> + <value type="bool" key="RunConfiguration.Arguments.multi">false</value> + <value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value> + <value type="bool" key="RunConfiguration.UseCppDebugger">false</value> + <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value> + <value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value> + <value type="bool" key="RunConfiguration.UseMultiProcess">false</value> + <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value> + <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value> + <value type="QString" key="RunConfiguration.WorkingDirectory"></value> + <value type="QString" key="RunConfiguration.WorkingDirectory.default">C:/Users/Robert/AppData/Local/Temp/QtCreator-omMIkE/qtc-cmake-FTzHLhyM/src</value> + </valuemap> + <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value> + </valuemap> + </data> + <data> + <variable>ProjectExplorer.Project.TargetCount</variable> + <value type="int">1</value> + </data> + <data> + <variable>ProjectExplorer.Project.Updater.FileVersion</variable> + <value type="int">22</value> + </data> + <data> + <variable>Version</variable> + <value type="int">22</value> + </data> +</qtcreator> diff --git a/src/Planet.cpp b/src/Planet.cpp index 80b3dbc..f2ae0d3 100644 --- a/src/Planet.cpp +++ b/src/Planet.cpp @@ -3,17 +3,43 @@ Planet::Planet(float xPos, float yPos, float radius, QColor color) : position{ xPos, yPos }, radius(radius) { - circle = QBrush(color); + Initialize(color); } Planet::Planet(QPointF pos, float radius, QColor color) : position(pos), radius(radius) { - circle = QBrush(color); + Initialize(color); +} + +void Planet::Select(bool select) +{ + if (select) + outline.setColor(selectionColor); + else + outline.setColor(Qt::transparent); } void Planet::Draw(QPainter* painter) { painter->setBrush(circle); + painter->setPen(outline); painter->drawEllipse(position, radius, radius); } + +bool Planet::IsInside(QPointF point) const +{ + QPointF distance = point - position; + return (distance.x() * distance.x() + distance.y() * distance.y() < radius * radius); +} + +void Planet::Initialize(QColor color) +{ + circle = QBrush(color); + outline = QPen(Qt::transparent); + outline.setWidthF(4.f); + + int h, s, v, a; + color.getHsv(&h, &s, &v, &a); + selectionColor = QColor::fromHsv((h + 180) % 360, s, v, a); +} diff --git a/src/Planet.hpp b/src/Planet.hpp index 5b832af..4dbfa98 100644 --- a/src/Planet.hpp +++ b/src/Planet.hpp @@ -11,12 +11,21 @@ public: Planet(QPointF pos, float radius, QColor color); void Resize(float newRadius) { radius = newRadius; } + void Select(bool select); void Draw(QPainter* painter); + bool IsInside(QPointF point) const; + +private: + void Initialize(QColor color); + private: QPointF position; float radius; + QColor selectionColor; + QBrush circle; + QPen outline; }; \ No newline at end of file diff --git a/src/Screen.cpp b/src/Screen.cpp index 8ee2e80..3720e99 100644 --- a/src/Screen.cpp +++ b/src/Screen.cpp @@ -8,9 +8,14 @@ #include <QTimer> #include <QtMath> +#define BIND_LMB(f) (lmbAction = std::bind(&Screen::f, this, std::placeholders::_1)) + Screen::Screen(QWidget* parent) : QOpenGLWidget(parent) { + setMouseTracking(true); + BIND_LMB(lmb_MakePlanet); + srand(time(NULL)); background = QBrush(Qt::black); @@ -25,23 +30,39 @@ Screen::Screen(QWidget* parent) : void Screen::mouseMoveEvent(QMouseEvent* event) { - if (mouseDown) + if (mouseDown && hovered == nullptr) { Planet* planet = planets.back(); QPointF distance = event->localPos() - mouseClickPos; planet->Resize(qSqrt(distance.x()*distance.x() + distance.y() *distance.y())); } + else + { + hovered = nullptr; + for (unsigned i = planets.size(); i-- > 0; ) + { + if (planets[i]->IsInside(event->localPos())) + { + setCursor(Qt::OpenHandCursor); + BIND_LMB(lmb_SelectPlanet); + hovered = planets[i]; + break; + } + } + + if (hovered == nullptr) + { + setCursor(Qt::ArrowCursor); + BIND_LMB(lmb_MakePlanet); + } + } } void Screen::mousePressEvent(QMouseEvent* event) { if (event->button() == Qt::MouseButton::LeftButton) { - planets.push_back(new Planet(event->localPos(), 0, - QColor(rand() % 256, rand() % 256, rand() % 256) - )); - mouseClickPos = event->localPos(); - mouseDown = true; + lmbAction(event); } if (event->button() == Qt::MouseButton::RightButton) @@ -65,6 +86,28 @@ void Screen::Render() update(); } +void Screen::lmb_MakePlanet(QMouseEvent* event) +{ + planets.push_back(new Planet(event->localPos(), 0, + QColor(rand() % 256, rand() % 256, rand() % 256) + )); + mouseClickPos = event->localPos(); + mouseDown = true; +} + +void Screen::lmb_SelectPlanet(QMouseEvent* event) +{ + if (hovered != nullptr) + { + if (selected != nullptr) + selected->Select(false); + + hovered->Select(true); + } + + selected = hovered; +} + void Screen::paintEvent(QPaintEvent* event) { QPainter painter; diff --git a/src/Screen.hpp b/src/Screen.hpp index 2e7fc4f..65890b5 100644 --- a/src/Screen.hpp +++ b/src/Screen.hpp @@ -1,6 +1,7 @@ #pragma once #include <vector> +#include <functional> #include <QOpenGLWidget> @@ -18,15 +19,24 @@ public: private slots: void Render(); +private: + void lmb_MakePlanet(QMouseEvent* event); + void lmb_SelectPlanet(QMouseEvent* event); + protected: void paintEvent(QPaintEvent* event) override; private: bool mouseDown = false; + + std::function<void(QMouseEvent*)> lmbAction; + QPointF mouseClickPos; QBrush background; QTimer* renderTimer; std::vector<Planet*> planets; + Planet* selected = nullptr; + Planet* hovered = nullptr; }; \ No newline at end of file