Exemple #1
0
 private static void InitStaticTools(LDtkDataProject project)
 {
     LDtkProviderTile.Init();
     LDtkProviderTilesetSprite.Init();
     LDtkProviderEnum.Init();
     LDtkProviderUid.CacheUidData(project);
     LDtkProviderErrorIdentifiers.Init();
 }
Exemple #2
0
        public void JsonDeserializeProject()
        {
            TextAsset jsonProject = TestJsonLoader.LoadJson(BASIC_PROJECT);

            Assert.NotNull(jsonProject, "Unsuccessful acquirement of json text asset");

            //attempt deserializing entire project
            LDtkDataProject project = LDtkToolProjectLoader.LoadProject(jsonProject.text);
        }
Exemple #3
0
        public void GetLevelBounds()
        {
            const string lvlName = "Level";

            TextAsset       jsonProject = TestJsonLoader.LoadGenericProject();
            LDtkDataProject project     = LDtkToolProjectLoader.LoadProject(jsonProject.text);
            LDtkDataLevel   level       = project.levels.FirstOrDefault(p => p.identifier == lvlName);
            LDtkDataLayer   layer       = level.layerInstances.FirstOrDefault(p => p.IsIntGridLayer);
            Bounds          bounds      = layer.LayerUnitBounds;

            Debug.Log(bounds);
        }
Exemple #4
0
        public static void CacheUidData(LDtkDataProject project)
        {
            Database = new Dictionary <int, ILDtkUid>();

            CacheLayerDefs(project.defs.layers);
            CacheEntityDefs(project.defs.entities);

            CacheUidData(project.defs.tilesets);
            CacheUidData(project.defs.enums);
            CacheUidData(project.defs.externalEnums);

            CacheUidData(project.levels);
        }
 public static LDtkDataProject LoadProject(string json)
 {
     try
     {
         JsonSerializerSettings s = new JsonSerializerSettings()
         {
             NullValueHandling = NullValueHandling.Ignore,
         };
         LDtkDataProject project = JsonConvert.DeserializeObject <LDtkDataProject>(json, s);
         return(project);
     }
     catch (Exception e)
     {
         Debug.LogError(e);
         throw;
     }
 }
Exemple #6
0
        public static void BuildLevel(LDtkDataProject project, LDtkLevelIdentifier levelToBuild, LDtkProjectAssets assets)
        {
            if (assets == null)
            {
                Debug.LogError("LDtk: ProjectAssets object is null; not building level.");
                return;
            }
            if (levelToBuild == null)
            {
                Debug.LogError("LDtk: LDtkLevelIdentifier object is null; not building level.");
                return;
            }

            if (!LDtkUnityTilesetBuilder.ValidateTilemapPrefabRequirements(assets.TilemapPrefab))
            {
                return;
            }


            bool success = GetProjectLevelByID(project.levels, levelToBuild, out LDtkDataLevel level);

            if (!success)
            {
                return;
            }

            string debugLvlName = $"\"{level.identifier}\"";
            //Debug.Log($"LDtk: Building level: {debugLvlName}");
            Stopwatch levelBuildTimer = Stopwatch.StartNew();

            BuildProcess(project, level, assets);

            levelBuildTimer.Stop();
            double ms = levelBuildTimer.ElapsedMilliseconds;

            Debug.Log($"LDtk: Built level {debugLvlName} in {ms}ms ({ms/1000}s)");

            OnLevelBuilt?.Invoke(level);
        }
Exemple #7
0
 private static void BuildProcess(LDtkDataProject project, LDtkDataLevel level, LDtkProjectAssets assets)
 {
     InitStaticTools(project);
     BuildLayerInstances(level, assets);
     DisposeStaticTools();
 }
Exemple #8
0
        private void Start()
        {
            LDtkDataProject project = LDtkToolProjectLoader.LoadProject(_assetLDtkProject.text);

            LDtkLevelBuilder.BuildLevel(project, _levelToBuild, _projectAssets);
        }