View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0005608 | DarkRadiant | GUI | public | 07.05.2021 07:08 | 27.11.2021 09:21 |
Reporter | Bikerdude | Assigned To | greebo | ||
Priority | normal | Severity | normal | Reproducibility | random |
Status | closed | Resolution | fixed | ||
Platform | PC | OS | Windows | OS Version | 10 |
Product Version | 2.12.0 | ||||
Target Version | 2.13.0 | Fixed in Version | 2.13.0 | ||
Summary | 0005608: Path entites rotate 15 degrees, each time when dragged. | ||||
Description | Have a random issue where when 'any' path entity is dragged around in orthoview it will rotate roughly 15 degrees each time its selected and dragged. But on a fresh load and run of DR it isn't reproducible. | ||||
Steps To Reproduce | - New Map - Create Player start somewhere in the ortho view - Dragging the player start won't change the direction of the arrow - Hit "Z-Axis Rotate" to rotate the player start 90 degrees - Dragging the player start will now add another rotation by 90 degrees (every time) | ||||
Tags | No tags attached. | ||||
This seems to happen after a rotation has been applied to the entity in question. I'll add some repro steps. | |
The problem arises due to the rather nontrivial way the Transformable scene nodes are applying their assigned scale/rotate/translate values in a pattern of setTransform/transformChanged/evaluateTransform/revertTransform/freezeTransform/whateverTransform. The pattern is repeated across many classes, but there are slight differences every time it's applied. With regards to this problem It appears that GenericEntityNode::freezeTransform() is overriding the base method without ever calling it. When freezeTransform() is invoked by the transformation visitors, the Transformable::_rotation member is not reset and it's applied in every new transformation round. All the other node types don't override the method, so the rotation is properly cleared to its identity value. |
|
I barely understood most of that, so does the above explain why it only happens after it been open for a while and not after a fresh run of DR. | |
nice one Greebo. | |
DarkRadiant: master 13d07da7 22.05.2021 11:31 Details Diff |
0005608: Add MoveSelected console command, accepting any 3-component vector as translation argument |
Affected Issues 0005608 |
|
mod - radiantcore/selection/algorithm/General.cpp | Diff File | ||
mod - radiantcore/selection/algorithm/Transformation.cpp | Diff File | ||
mod - radiantcore/selection/algorithm/Transformation.h | Diff File | ||
DarkRadiant: master 24539c95 22.05.2021 11:32 Details Diff |
0005608: Add unit test covering the newly introduce MoveSelected command, as well as the faulty behaviour in the issue at hand |
Affected Issues 0005608 |
|
mod - radiantcore/entity/generic/GenericEntityNode.h | Diff File | ||
mod - test/CMakeLists.txt | Diff File | ||
add - test/Transformation.cpp | Diff File | ||
mod - test/resources/tdm/def/base.def | Diff File | ||
mod - tools/msvc/Tests/Tests.vcxproj | Diff File | ||
mod - tools/msvc/Tests/Tests.vcxproj.filters | Diff File | ||
DarkRadiant: master ab1a0a8a 22.05.2021 11:43 Details Diff |
0005608: The GenericEntityNode::revertTransform/freezeTransform methods that were merged GenericEntityNode are not really overrides of the Transformable method inherited with the same name. Remove the override again, and use a private name, like the EClassModelNode is doing. This whole transformation related code is very obscure and full of callbacks and indirections, and (probably) full of duplicated code paths - too much to tackle with this issue. |
Affected Issues 0005608 |
|
mod - radiantcore/entity/generic/GenericEntityNode.cpp | Diff File | ||
mod - radiantcore/entity/generic/GenericEntityNode.h | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
07.05.2021 07:08 | Bikerdude | New Issue | |
11.05.2021 10:37 | greebo | Status | new => acknowledged |
19.05.2021 18:38 | greebo | Status | acknowledged => confirmed |
19.05.2021 18:38 | greebo | Note Added: 0014030 | |
19.05.2021 18:40 | greebo | Target Version | => 2.13.0 |
19.05.2021 18:40 | greebo | Steps to Reproduce Updated | |
19.05.2021 18:57 | greebo | Note Added: 0014031 | |
19.05.2021 18:57 | greebo | Note Edited: 0014031 | |
19.05.2021 19:33 | Bikerdude | Note Added: 0014032 | |
22.05.2021 07:01 | greebo | Assigned To | => greebo |
22.05.2021 07:01 | greebo | Status | confirmed => assigned |
22.05.2021 11:45 | greebo | Changeset attached | => DarkRadiant master 13d07da7 |
22.05.2021 11:45 | greebo | Changeset attached | => DarkRadiant master 24539c95 |
22.05.2021 11:45 | greebo | Changeset attached | => DarkRadiant master ab1a0a8a |
22.05.2021 11:45 | greebo | Status | assigned => resolved |
22.05.2021 11:45 | greebo | Resolution | open => fixed |
22.05.2021 11:45 | greebo | Fixed in Version | => 2.13.0 |
22.05.2021 12:02 | Bikerdude | Note Added: 0014040 | |
27.11.2021 09:21 | greebo | Status | resolved => closed |