Cache plant piece asset paths

This commit is contained in:
Kae 2023-07-03 18:22:31 +10:00
parent 7f65913762
commit 1742b04eec
2 changed files with 6 additions and 1 deletions

View File

@ -24,6 +24,7 @@ EnumMap<Plant::RotationType> const Plant::RotationTypeNames{
Plant::PlantPiece::PlantPiece() {
image = "";
imagePath = AssetPath();
offset = {};
segmentIdx = 0;
structuralSegment = 0;
@ -746,7 +747,7 @@ void Plant::render(RenderCallback* renderCallback) {
if ((m_ceiling && offset[1] <= m_tileDamageY) || (!m_ceiling && offset[1] + size[1] >= m_tileDamageY))
offset[0] += damageXOffset;
auto drawable = Drawable::makeImage(plantPiece.image, 1.0f / TilePixels, false, offset);
auto drawable = Drawable::makeImage(plantPiece.imagePath, 1.0f / TilePixels, false, offset);
if (plantPiece.flip)
drawable.scale(Vec2F(-1, 1));
@ -864,6 +865,8 @@ Json Plant::writePiecesToJson() const {
}
void Plant::validatePieces() {
for (auto& piece : m_pieces)
piece.imagePath = piece.image;
if (!m_piecesScanned) {
scanSpacesAndRoots();
calcBoundBox();

View File

@ -6,6 +6,7 @@
#include "StarTileEntity.hpp"
#include "StarPlantDatabase.hpp"
#include "StarInspectableEntity.hpp"
#include "StarAssetPath.hpp"
namespace Star {
@ -38,6 +39,7 @@ public:
struct PlantPiece {
PlantPiece();
AssetPath imagePath;
String image;
Vec2U imageSize;
Vec2F offset;