private static void InstantiateEntity(LDtkDataEntity entityData, GameObject assetPrefab, Vector2 spawnPos, GameObject layerObj, int layerSortingOrder) { GameObject instance = Object.Instantiate(assetPrefab, spawnPos, Quaternion.identity, layerObj.transform); LDtkFieldInjector.InjectInstanceFields(entityData, instance); SetEntitySortingOrder(instance, layerSortingOrder); }
public void EnumInjectionParseTest() { string type = "LocalEnum.ForceMode"; string value = "ForceMode.Acceleration"; Type typeLDtk = LDtkFieldParser.ParseFieldType(type); Debug.Log(typeLDtk); object o = LDtkFieldInjector.GetValue(typeLDtk, value); Debug.Log(o); }
private static void BuildEntityInstance(LDtkDataLayer layerData, LDtkDataEntity entityData, LDtkEntityAssetCollection entityAssets, GameObject layerObj, int layerSortingOrder) { LDtkEntityAsset entityAsset = entityAssets.GetAssetByIdentifier(entityData.__identifier); if (entityAsset == null) { return; } int pixelsPerUnit = layerData.__gridSize; Vector2Int pixelPos = entityData.px.ToVector2Int(); Vector2 spawnPos = (LDtkToolOriginCoordConverter.ConvertPosition(pixelPos, layerData.__cHei * pixelsPerUnit, pixelsPerUnit) / pixelsPerUnit) + Vector2.up; GameObject entityObj = InstantiateEntity(entityAsset.ReferencedAsset, spawnPos, layerObj); LDtkFieldInjector.InjectInstanceFields(entityData, entityObj); MonoBehaviour[] behaviors = entityObj.GetComponents <MonoBehaviour>(); PostEntityInterfaceEvent <ILDtkFieldInjectedEvent>(behaviors, e => e.OnLDtkFieldsInjected()); PostEntityInterfaceEvent <ILDtkSettableSortingOrder>(behaviors, e => e.OnLDtkSetSortingOrder(layerSortingOrder)); PostEntityInterfaceEvent <ILDtkSettableOpacity>(behaviors, e => e.OnLDtkSetOpacity(layerData.__opacity)); }