Fixed collision tag panel fallacies and saving of tag masks
This commit is contained in:
parent
1b5024793c
commit
0460d776b0
|
@ -1,16 +1,16 @@
|
|||
0 1
|
||||
1 2
|
||||
2 3
|
||||
3 4
|
||||
4 5
|
||||
5 6
|
||||
6 7
|
||||
7 8
|
||||
8 9
|
||||
9 10
|
||||
10 11
|
||||
11 12
|
||||
12 13
|
||||
13 14
|
||||
14 15
|
||||
15 16
|
||||
0 1 3
|
||||
1 2 3
|
||||
2 3 65535
|
||||
3 4 65535
|
||||
4 5 65535
|
||||
5 6 65535
|
||||
6 7 65535
|
||||
7 8 65535
|
||||
8 9 65535
|
||||
9 10 65535
|
||||
10 11 65535
|
||||
11 12 65535
|
||||
12 13 65535
|
||||
13 14 65535
|
||||
14 15 65535
|
||||
15 16 65535
|
||||
|
|
|
@ -77,7 +77,7 @@
|
|||
Interpolate: true
|
||||
Sleeping Enabled: true
|
||||
Freeze Position X: false
|
||||
Freeze Position Y: true
|
||||
Freeze Position Y: false
|
||||
Freeze Position Z: false
|
||||
Freeze Rotation X: false
|
||||
Freeze Rotation Y: false
|
||||
|
|
|
@ -15,7 +15,7 @@ namespace SHADE
|
|||
ImGui::TableNextRow();
|
||||
ImGui::PushID("CollisionTagNames");
|
||||
|
||||
for (int i = SHCollisionTag::NUM_LAYERS; i >= 0; --i)
|
||||
for (int i = SHCollisionTag::NUM_LAYERS; i >= 1; --i)
|
||||
{
|
||||
ImGui::TableNextColumn();
|
||||
if(i == SHCollisionTag::NUM_LAYERS) continue;
|
||||
|
@ -29,7 +29,7 @@ namespace SHADE
|
|||
ImGui::PopID();
|
||||
}
|
||||
ImGui::PopID();
|
||||
for (int i = 0; i < SHCollisionTag::NUM_LAYERS; ++i)
|
||||
for (int i = 0; i < SHCollisionTag::NUM_LAYERS - 1; ++i)
|
||||
{
|
||||
std::string tagName = SHCollisionTagMatrix::GetTagName(i);
|
||||
auto tag = SHCollisionTagMatrix::GetTag(i);
|
||||
|
@ -53,8 +53,8 @@ namespace SHADE
|
|||
tagName2 = std::to_string(idx);
|
||||
|
||||
ImGui::TableNextColumn();
|
||||
//if(i == idx)
|
||||
// continue;
|
||||
if(i == idx)
|
||||
continue;
|
||||
std::string label = std::format("##{} vs {}", tagName, tagName2);
|
||||
SHEditorWidgets::CheckBox(label, [tag, &idx]{return tag->GetLayerState(idx);}, [tag, i, idx](bool const& value){tag->SetLayerState(idx, value); SHCollisionTagMatrix::GetTag(idx)->SetLayerState(i, value);}, label.substr(2));
|
||||
}
|
||||
|
|
|
@ -14,6 +14,9 @@
|
|||
// Primary Header
|
||||
#include "SHCollisionTagMatrix.h"
|
||||
|
||||
// Project Headers
|
||||
#include "Tools/Utilities/SHUtilities.h"
|
||||
|
||||
namespace SHADE
|
||||
{
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
|
@ -145,8 +148,9 @@ namespace SHADE
|
|||
/**
|
||||
* I HATE FILE IO
|
||||
*
|
||||
* Each line in the file should be "index<space>tag name".
|
||||
* If the line fails to follow this format, use the default tag name (index + 1)
|
||||
* Each line in the file should be "index<space>tag name<space>mask".
|
||||
* If the line fails to follow this format, use the default tag name (index + 1) and default mask.
|
||||
* If no mask was read, use a default mask.
|
||||
*/
|
||||
|
||||
// Populate tag names with default
|
||||
|
@ -187,18 +191,40 @@ namespace SHADE
|
|||
{
|
||||
SHLOG_ERROR
|
||||
(
|
||||
"Collision tag file line {} does not match the required format of 'index<space>tag name'. Default tag used for index {}"
|
||||
"Collision tag file line {} does not match the required format of 'index<space>tag name<space>mask'. Default tag used for index {}"
|
||||
, linesRead + 1
|
||||
, tagIndex
|
||||
)
|
||||
|
||||
// Use default
|
||||
collisionTags[tagIndex].SetName(std::to_string(tagIndex + 1));
|
||||
collisionTags[tagIndex].SetMask(SHUtilities::ConvertEnum(SHCollisionTag::Layer::ALL));
|
||||
continue;
|
||||
}
|
||||
|
||||
collisionTags[tagIndex].SetName(tagName);
|
||||
|
||||
// Next element is the mask value
|
||||
std::string maskString;
|
||||
ss >> maskString;
|
||||
|
||||
uint16_t mask = std::numeric_limits<uint16_t>::max();
|
||||
if (maskString.empty())
|
||||
{
|
||||
SHLOG_ERROR
|
||||
(
|
||||
"Collision tag file line {} does not match the required format of 'index<space>tag name<space>mask'. Default mask used for index {}"
|
||||
, linesRead + 1
|
||||
, tagIndex
|
||||
)
|
||||
}
|
||||
else
|
||||
{
|
||||
mask = static_cast<uint16_t>(std::stoi(maskString));
|
||||
}
|
||||
|
||||
collisionTags[tagIndex].SetMask(mask);
|
||||
|
||||
ss.clear();
|
||||
}
|
||||
|
||||
|
@ -215,8 +241,9 @@ namespace SHADE
|
|||
return;
|
||||
}
|
||||
|
||||
// Index Name Mask
|
||||
for (int i = 0; i < SHCollisionTag::NUM_LAYERS; ++i)
|
||||
collisionTagNamesFile << i << " " << collisionTags[i].GetName() << std::endl;
|
||||
collisionTagNamesFile << i << " " << collisionTags[i].GetName() << " " << collisionTags[i].GetMask() << std::endl;
|
||||
|
||||
collisionTagNamesFile.close();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue