private void OnClickRunBtn()
        {
            var setting = new ITU_RenderSetting
            {
                pixelsPreUnit                     = pixelPerUnit,
                renderChunkSize                   = chunkSize,
                defaultMaterial                   = tileMaterial == null ? new Material(Shader.Find("Unlit/Transparent")) : tileMaterial,
                isMakeAllGameObjectStatic         = isStatic,
                isCreateInstanceOnSceneWhenFinish = createInstance,
                defaultSortLayerName              = sortLayerName
            };

            var savePath = saveProjectToPath.Substring(6); //Remove first "Assets"

            setting.SetSaveToFolder(savePath, Path.GetFileNameWithoutExtension(tmxFilePath));

            if (ignoreLayers != null && ignoreLayers.Length > 0)
            {
                foreach (var ignoreLayer in ignoreLayers)
                {
                    setting.ignoreRenderLayerNameList.Add(ignoreLayer);
                }
            }

            var itu = new ITU_Facade();

            itu.LoadTxmFile(tmxFilePath);
            itu.SetRenderSetting(setting);
            itu.RenderMapToCurrentScene();
        }
        public override void OnClickRunBtn()
        {
            var itu = new ITU_Facade();

            //Attach extension first
            var extNav = new ITU_GenNavMeshBlockExtension {
                navTempBlockMat = navTempBlockMaterial
            };

            itu.AddExtensions(extNav);

            var extPrefab = new ITU_ReplaceWithPrefabExtension();

            extPrefab.PrefabBoxDeco     = PrefabBoxDeco;
            extPrefab.PrefabSupportDeco = PrefabSupportDeco;
            itu.AddExtensions(extPrefab);

            //Load Txm map
            itu.LoadTxmFile(Application.dataPath + txmFilePath);

            //Render
            var rednerSetting = new ITU_RenderSetting();

            rednerSetting.SetSaveToFolder(saveProjectToPath, Path.GetFileNameWithoutExtension(txmFilePath));
            rednerSetting.ignoreRenderLayerNameList.Add("Deco");

            itu.SetRenderSetting(rednerSetting);
            itu.RenderMapToCurrentScene();

            //Handle Property
            itu.HandleMapPropertyAndObject();
        }
        public void InitRenderProperty(ITU_TmxLayerMeta _layerMeta, ITU_TmxRootMeta _mapMeta, GameObject _mapRootGo, ITU_RenderSetting _renderSetting, float _offsetZ,
                                       List <ITU_ExtensionBase> _allExtensionList)
        {
            mLayerMeta        = _layerMeta;
            mMapMeta          = _mapMeta;
            mRenderSetting    = _renderSetting;
            mAllExtensionList = _allExtensionList;

            mLayerRootGo = new GameObject(mLayerMeta.layerName);
            mLayerRootGo.transform.parent        = _mapRootGo.transform;
            mLayerRootGo.transform.localPosition = new Vector3(mLayerMeta.offsetX / mRenderSetting.pixelsPreUnit, -mLayerMeta.offsetY / mRenderSetting.pixelsPreUnit, _offsetZ);

            DoInitRenderProperty();
        }
        public override void OnClickRunBtn()
        {
            var setting = new ITU_RenderSetting();

            setting.SetSaveToFolder(saveProjectToPath, Path.GetFileNameWithoutExtension(txmFilePath));

            var itu = new ITU_Facade();

            //Attach extension first
            itu.AddExtensions(new ITU_ReadTxmMapInfoExtension());

            //Load Txm map
            itu.LoadTxmFile(Application.dataPath + txmFilePath);

            //Render
            itu.SetRenderSetting(setting);
            itu.RenderMapToCurrentScene();
        }
예제 #5
0
        public void RenderMapToCurrentScene()
        {
            if (mMapMeta == null)
            {
                Debug.LogError("ITU_Facade not load any map, please call LoadTxmFile function first");
                return;
            }


            try
            {
                if (mRenderSetting == null)
                {
                    Debug.LogWarning("not set rendering setting , use default rending setting inside");
                    mRenderSetting = new ITU_RenderSetting();
                    mRenderSetting.SetSaveToFolder("/ITU_DefaultProject", mMapMeta.fileName);
                }

                if (mRenderSetting.renderChunkSize <= 0)
                {
                    mRenderSetting.renderChunkSize = 10;
                    Debug.LogWarning("render setting -> renderChunkSize size <=0  set as default value 10");
                }

                if (mRenderSetting.pixelsPreUnit <= 0)
                {
                    mRenderSetting.pixelsPreUnit = 100;
                    Debug.LogWarning("render setting -> pixelsPreUnit unit <=0 set as default value 100");
                }


                if (mMapMeta.orientation != ITU_TmxRootMeta.ORIENTAION_STAGGERED && mMapMeta.orientation != ITU_TmxRootMeta.ORIENTATION_ISOMETRIC)
                {
                    Debug.LogError(string.Format("Can't render map {0}, beacuse is not Isometric or Staggered. ITU only support those two type right now :( ", mMapMeta.fileName));
                    return;
                }

                if (SortingLayer.NameToID(mRenderSetting.defaultSortLayerName) == 0)
                {
                    foreach (var layerMeta in mMapMeta.layerList)
                    {
                        var    layerName = layerMeta.layerName;
                        string sortLayerName;
                        var    isFound = false;
                        if (mRenderSetting.customSortLayerDic.TryGetValue(layerName, out sortLayerName))
                        {
                            if (SortingLayer.NameToID(sortLayerName) != 0)
                            {
                                isFound = true;
                            }
                        }

                        if (!isFound)
                        {
                            Debug.LogError(string.Format(
                                               "Can't find default sort layer <color=red> {1} </color> and no sortLayer define for Tiled layer <color=red> {0} </color>," +
                                               "please first define it in <color=red>Edit -> Project Settings -> Tags and Layers</color> " +
                                               "check the document under $ITU_Plugin_Folder/Document if you need more help",
                                               layerName, mRenderSetting.defaultSortLayerName));
                            return;
                        }
                    }
                }


                mAllExtensionList.ForEach(x =>
                {
                    x.SetRenderSetting(mRenderSetting);
                    x.SetTmxMapMeta(mMapMeta);
                });


                var render = new ITU_TmxRender();
                render.InitTxmRender(mMapMeta, mRenderSetting, mAllExtensionList);

                mMapMeta.tilsetList.ForEach(tileset =>
                {
                    if (!tileset.isUesdInRender || tileset.isImageCollectionAndNotRender)
                    {
                        return;
                    }

                    Material matTemplate;
                    if (!mRenderSetting.tilesetMaterials.TryGetValue(tileset.name, out matTemplate))
                    {
                        matTemplate = mRenderSetting.defaultMaterial;
                    }

                    var mat = ITU_FIleUtils.SaveTilsetImageAndMaterial(tileset, matTemplate,
                                                                       mRenderSetting.imgSaveToPath,
                                                                       mRenderSetting.materailSaveToPath);

                    mRenderSetting.tilesetMaterials.Add(tileset.name, mat);
                });

                mAllExtensionList.ForEach(x => x.OnRenderMapProcessBegin());
                var go = render.RenderTxmToScene();
                mAllExtensionList.ForEach(x => x.OnRenderMapProcessFinish(go));


                //Save Mesh
                render.SaveMesh(mRenderSetting.meshSaveToPath, mRenderSetting.isDeleteAllMeshUnderFolderFirst);

                if (mRenderSetting.isMakeAllGameObjectStatic)
                {
                    render.MakeAllStatic();
                }

                //Save Prefab
                var prefab = render.SavePrefab(mRenderSetting.prefabSaveToPath);

                //Delte templet go
                GameObject.DestroyImmediate(go);

                if (mRenderSetting.isCreateInstanceOnSceneWhenFinish)
                {
                    PrefabUtility.InstantiatePrefab(prefab);
                }

                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
            }
            catch (Exception _e)
            {
                var msg = "Oops ,seemed there have been some error when you run ITU, if you need some help you can contact me via [email protected]";
                Debug.LogError(msg);
                Debug.LogError(_e);
                return;
            }

            Debug.Log(string.Format("<color=green>ITU import {0} succeed! </color>", mMapMeta.fileName));
        }
예제 #6
0
 public void SetRenderSetting(ITU_RenderSetting _setting)
 {
     mRenderSetting = _setting;
 }