From dc948732971496cb2daa53e1189fbdc88039714b Mon Sep 17 00:00:00 2001 From: Vulpovile Date: Wed, 5 Oct 2022 16:46:04 -0700 Subject: [PATCH 1/5] Remove assemblyIdentity from manifest as it's not useful --- Blocks3D.exe.manifest | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Blocks3D.exe.manifest b/Blocks3D.exe.manifest index f8f4c28..dad2be9 100644 --- a/Blocks3D.exe.manifest +++ b/Blocks3D.exe.manifest @@ -1,11 +1,5 @@ - From 3b2d01b8dcb4e14fa4cae7118a8caacda7311833 Mon Sep 17 00:00:00 2001 From: Vulpovile Date: Wed, 5 Oct 2022 17:34:45 -0700 Subject: [PATCH 2/5] Seperated versioning into seperate file, added snapshot --- Blocks3D.vcproj | 4 ++++ Dialogs.rc | 12 +----------- src/include/versioning.h | 23 +++++++++++++++++++++++ 3 files changed, 28 insertions(+), 11 deletions(-) create mode 100644 src/include/versioning.h diff --git a/Blocks3D.vcproj b/Blocks3D.vcproj index a114f7b..d556d08 100644 --- a/Blocks3D.vcproj +++ b/Blocks3D.vcproj @@ -739,6 +739,10 @@ RelativePath=".\src\include\ToolEnum.h" > + + diff --git a/Dialogs.rc b/Dialogs.rc index 11bf464..bd9e8d6 100644 --- a/Dialogs.rc +++ b/Dialogs.rc @@ -6,17 +6,7 @@ #include #include #include "src/include/resource.h" - -#define APP_GENER 0 -#define APP_MAJOR 0 -#define APP_MINOR 106 -#define APP_PATCH 4 -#define APP_VER_STRING APP_GENER.APP_MAJOR.APP_MINOR.APP_PATCH - -#define VER_PREFIX( N ) v##N -#define HSTR( N ) #N -#define STR( N ) HSTR( N ) -#define VER_STR( N ) STR( VER_PREFIX( N ) ) +#include "src/include/versioning.h" diff --git a/src/include/versioning.h b/src/include/versioning.h new file mode 100644 index 0000000..19e8d1c --- /dev/null +++ b/src/include/versioning.h @@ -0,0 +1,23 @@ +#ifndef APP_GENER + +#define SNAPSHOT_VERSION + +#define APP_GENER 0 +#define APP_MAJOR 0 +#define APP_MINOR 107 +#define APP_PATCH 0 +#define APP_VER_STRING APP_GENER.APP_MAJOR.APP_MINOR.APP_PATCH + + +#ifdef SNAPSHOT_VERSION +#define VER_PREFIX( N ) v##N-SNAPSHOT +#else +#define VER_PREFIX( N ) v##N +#endif + + +#define HSTR( N ) #N +#define STR( N ) HSTR( N ) +#define VER_STR( N ) STR( VER_PREFIX( N ) ) + +#endif From 728e67e1a5e1f7bfbadc00d8ab3a083515a43462 Mon Sep 17 00:00:00 2001 From: Lannuked Date: Wed, 5 Oct 2022 22:53:54 -0400 Subject: [PATCH 3/5] Fix part collisions --- src/source/DataModelV2/PartInstance.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/source/DataModelV2/PartInstance.cpp b/src/source/DataModelV2/PartInstance.cpp index f9a8210..f136c07 100644 --- a/src/source/DataModelV2/PartInstance.cpp +++ b/src/source/DataModelV2/PartInstance.cpp @@ -202,8 +202,8 @@ void PartInstance::setSize(Vector3 newSize) size = Vector3(sizex, sizey, sizez); - - + g_dataModel->getEngine()->deleteBody(this); + g_dataModel->getEngine()->createBody(this); } Vector3 PartInstance::getSize() { @@ -224,6 +224,8 @@ void PartInstance::setShape(Enum::Shape::Value shape) this->shape = shape; this->setSize(this->getSize()); } + g_dataModel->getEngine()->deleteBody(this); + g_dataModel->getEngine()->createBody(this); changed = true; } @@ -237,6 +239,7 @@ void PartInstance::setAnchored(bool anchored) { this->anchored = anchored; g_dataModel->getEngine()->deleteBody(this); + g_dataModel->getEngine()->createBody(this); } bool PartInstance::isAnchored() From a1b25d115aaf57db940b37ddd7e8e6eba5f51aff Mon Sep 17 00:00:00 2001 From: himdeez <96998938+himdeez@users.noreply.github.com> Date: Thu, 6 Oct 2022 16:28:38 +0300 Subject: [PATCH 4/5] Temporary physics bug fix (anchored parts not updating when moved) --- src/source/DataModelV2/PartInstance.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/source/DataModelV2/PartInstance.cpp b/src/source/DataModelV2/PartInstance.cpp index 7afab53..be6a146 100644 --- a/src/source/DataModelV2/PartInstance.cpp +++ b/src/source/DataModelV2/PartInstance.cpp @@ -233,6 +233,12 @@ void PartInstance::setPosition(Vector3 pos) { position = pos; setCFrame(CoordinateFrame(cFrame.rotation, pos)); + + if (anchored) + { + g_dataModel->getEngine()->deleteBody(this); + g_dataModel->getEngine()->createBody(this); + } } void PartInstance::setAnchored(bool anchored) From 36aba44b5126389708e192a5f7043ae37c620191 Mon Sep 17 00:00:00 2001 From: himdeez <96998938+himdeez@users.noreply.github.com> Date: Thu, 6 Oct 2022 18:52:26 +0300 Subject: [PATCH 5/5] improve dragging --- src/include/Tool/ArrowTool.h | 2 ++ src/source/Tool/ArrowTool.cpp | 57 ++++++++++++++++++++++++++++++++++- 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/src/include/Tool/ArrowTool.h b/src/include/Tool/ArrowTool.h index c46c635..bfe511f 100644 --- a/src/include/Tool/ArrowTool.h +++ b/src/include/Tool/ArrowTool.h @@ -13,6 +13,7 @@ public: void onSelect(Mouse mouse); void onKeyDown(int key); void onKeyUp(int key); + void roundDeg(float °ree); private: bool lctrlDown; bool rctrlDown; @@ -20,4 +21,5 @@ private: int mouseDownStarty; bool dragging; bool mouseDown; + Vector3 draggingPartOffset; }; diff --git a/src/source/Tool/ArrowTool.cpp b/src/source/Tool/ArrowTool.cpp index a446bf8..e83d5e3 100644 --- a/src/source/Tool/ArrowTool.cpp +++ b/src/source/Tool/ArrowTool.cpp @@ -25,7 +25,13 @@ void ArrowTool::onButton1MouseDown(Mouse mouse) g_dataModel->getSelectionService()->clearSelection(); PartInstance * target = mouse.getTarget(); if(target != NULL) + { + Vector3 mousePos = mouse.getPosition(g_dataModel->getSelectionService()->getSelection()); + Vector3 targetPos = target->getPosition(); + g_dataModel->getSelectionService()->addSelected(target); + draggingPartOffset = targetPos-mousePos; + } if(g_dataModel->getSelectionService()->getSelection().size() == 0) g_dataModel->getSelectionService()->addSelected(g_dataModel); } @@ -51,7 +57,40 @@ void ArrowTool::onMouseMoved(Mouse mouse) { if(PartInstance * part = dynamic_cast(g_dataModel->getSelectionService()->getSelection()[i])) { - part->setPosition(mouse.getPosition(g_dataModel->getSelectionService()->getSelection())); + Vector3 mousePos = mouse.getPosition(g_dataModel->getSelectionService()->getSelection()); + Vector3 vec = mousePos + draggingPartOffset; + + vec.x = (ceil(vec.x / 1) * 1); + vec.y = (ceil(vec.y / 1) * 1); + vec.z = (ceil(vec.z / 1) * 1); + + if ( ((int)part->getSize().x)%2 == 1 ) + vec.x += 0.5; + + vec.y = mousePos.y + part->getSize().y/2 - 0.5; + + if ( ((int)part->getSize().z)%2 == 1 ) + vec.z += 0.5; + + Matrix3 rot = part->getCFrame().rotation; + Vector3 rotEulerAngles; + + rot.toEulerAnglesXYZ(rotEulerAngles.x, rotEulerAngles.y, rotEulerAngles.z); + + rotEulerAngles = Vector3( + rotEulerAngles.x * 180 / M_PI, + rotEulerAngles.y * 180 / M_PI, + rotEulerAngles.z * 180 / M_PI + ); + + roundDeg(rotEulerAngles.x); + roundDeg(rotEulerAngles.y); + roundDeg(rotEulerAngles.z); + + rot = rot.fromEulerAnglesXYZ( rotEulerAngles.x * (M_PI / 180), rotEulerAngles.y * (M_PI / 180), rotEulerAngles.z * (M_PI / 180) ); + + part->setPosition(vec); + part->setCFrame(CoordinateFrame(rot, vec)); } } return; @@ -75,4 +114,20 @@ void ArrowTool::onKeyUp(int key) { if(key == VK_CONTROL) lctrlDown = false; +} + +void ArrowTool::roundDeg(float °ree) +{ + if ( ( degree < 0 && degree > -45 ) || ( degree > 0 && degree < 45 ) ) + { + degree = 0; + } + else if ( ( degree < 0 && degree > -90 ) || ( degree > 45 && degree < 90 ) ) + { + degree = 90; + } + else if ( ( degree < 0 && degree > -180 ) || ( degree > 90 && degree < 180 ) ) + { + degree = 180; + } } \ No newline at end of file