Skip to content

Commit aea5c65

Browse files
committed
fix: point field of scaled objects
1 parent 3002788 commit aea5c65

File tree

2 files changed

+27
-6
lines changed

2 files changed

+27
-6
lines changed

Assets/LDtkUnity/Editor/Builders/LDtkBuilderEntity.cs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ internal sealed class LDtkBuilderEntity : LDtkBuilderLayer
1313
private LDtkComponentEntity _entityComponent;
1414
private LDtkFields _fieldsComponent;
1515
private LDtkIid _iidComponent;
16+
private LDtkFieldsFactory _fieldsFactory;
1617

1718
public LDtkBuilderEntity(LDtkProjectImporter project, Level level, LDtkComponentLayer layerComponent, LDtkSortingOrder sortingOrder, LDtkLinearLevelVector linearVector, WorldLayout layout, LDtkAssetProcessorActionCache assetProcess, LDtkJsonImporter importer)
1819
: base(project, level, layerComponent, sortingOrder, importer)
@@ -89,9 +90,9 @@ private void AddEntityComponent()
8990
private void AddFieldData()
9091
{
9192
LDtkProfiler.BeginSample("SetEntityFieldsComponent");
92-
LDtkFieldsFactory fieldsFactory = new LDtkFieldsFactory(_entityObj, _entity.FieldInstances, Project, Importer);
93-
fieldsFactory.SetEntityFieldsComponent();
94-
_fieldsComponent = fieldsFactory.FieldsComponent;
93+
_fieldsFactory = new LDtkFieldsFactory(_entityObj, _entity.FieldInstances, Project, Importer);
94+
_fieldsFactory.SetEntityFieldsComponent();
95+
_fieldsComponent = _fieldsFactory.FieldsComponent;
9596
LDtkProfiler.EndSample();
9697

9798
LDtkProfiler.BeginSample("InterfaceEvents");
@@ -128,6 +129,11 @@ private void ScaleEntity()
128129
newScale.x *= _entityComponent.ScaleFactor.x;
129130
newScale.y *= _entityComponent.ScaleFactor.y;
130131
_entityObj.transform.localScale = newScale;
132+
133+
if (_fieldsFactory != null)
134+
{
135+
_fieldsFactory.ApplyPointScale(_entityComponent.ScaleFactor);
136+
}
131137
}
132138

133139
private void PositionEntity()
@@ -168,4 +174,4 @@ public PointParseData GetParsedPointData()
168174
};
169175
}
170176
}
171-
}
177+
}

Assets/LDtkUnity/Editor/ParsedField/LDtkFieldsFactory.cs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using UnityEngine;
1+
using System.Collections.Generic;
2+
using UnityEngine;
23

34
namespace LDtkUnity.Editor
45
{
@@ -11,6 +12,7 @@ internal sealed class LDtkFieldsFactory
1112
private readonly FieldInstance[] _fieldInstances;
1213
private readonly LDtkProjectImporter _project;
1314
private readonly LDtkJsonImporter _importer;
15+
private readonly List<Transform> _pointTransforms = new List<Transform>();
1416

1517
public LDtkFields FieldsComponent { get; private set; }
1618

@@ -61,6 +63,8 @@ private LDtkField[] GetFields()
6163
{
6264
LDtkFieldElement element = field._data[ii];
6365
Transform newPoint = new GameObject($"{_fieldInstances[i].Identifier}_{ii}").transform;
66+
_pointTransforms.Add(newPoint);
67+
6468
element.SetPointLocalTransform(newPoint);
6569
newPoint.SetParent(_instance.transform, true);
6670
}
@@ -69,5 +73,16 @@ private LDtkField[] GetFields()
6973
}
7074
return fields;
7175
}
76+
77+
public void ApplyPointScale(Vector2 scale)
78+
{
79+
foreach (Transform point in _pointTransforms)
80+
{
81+
Vector3 local = point.localPosition;
82+
local.x /= scale.x;
83+
local.y /= scale.y;
84+
point.localPosition = local;
85+
}
86+
}
7287
}
73-
}
88+
}

0 commit comments

Comments
 (0)