Example #1
0
        public static UInt32 QuickCompute(byte[] data, SlicingType sType)
        {
            slicer.InitCrc();

            using (var mStream = new MemoryStream(data))
            {
                switch (sType)
                {
                case SlicingType.SliceBy8:
                    return(slicer.UnsafeDoSb8(mStream));

                case SlicingType.SliceBy32:
                    return(slicer.DoSb32(mStream));

                default:
                case SlicingType.NormalSpeed:
                    return(slicer.DoSarwate(mStream));
                }
            }
        }
Example #2
0
        /// -----------------------------------------------------------------------------------------------------------
        /// <summary>
        /// 绘制窗口布局
        /// </summary>
        /// -----------------------------------------------------------------------------------------------------------
        void OnGUI()
        {
            if (!Application.isPlaying)
            {
                GUILayout.Label("配置选项", EditorStyles.boldLabel);

                EditorGUILayout.Space();
                baseTerrain = (Terrain)EditorGUILayout.ObjectField(lable1, baseTerrain, typeof(Terrain), false);

                EditorGUILayout.Space();
                excusuibType = (SlicingType)EditorGUILayout.EnumPopup(lable3, excusuibType);

                EditorGUILayout.Space();
                TerrainPatchPath = EditorGUILayout.TagField(lable4, TerrainPatchPath);

                EditorGUILayout.Space();
                if (GUILayout.Button(lable5))
                {
                    string sceneName = UtilityTools.GetFileName(EditorApplication.currentScene);
                    TerrainPatchPath = "Assets/TerrainPatch/" + sceneName + "/TearrinData";
                }

                EditorGUILayout.Space();
                IsOverWrite = EditorGUILayout.Toggle(lable6, IsOverWrite);

                EditorGUILayout.Space();
                IsSmoothEdge = EditorGUILayout.Toggle(lable7, IsSmoothEdge);

                EditorGUILayout.Space();
                IsCopyNegtion = EditorGUILayout.Toggle(lable8, IsCopyNegtion);

                EditorGUILayout.Space();
                IsCopyDetail = EditorGUILayout.Toggle(lable9, IsCopyDetail);

                /// 开始分割地形
                if (GUILayout.Button("开始分割地形"))
                {
                    if (baseTerrain == null)
                    {
                        this.ShowNotification(new GUIContent("base terrain is null "));
                        return;
                    }

                    ClearHistoryCache();

                    /// 计算一些参数
                    baseData = baseTerrain.terrainData;
                    int nSize = (int)excusuibType;
                    _newTerrainWide         = nSize;
                    _newTerrainHeight       = nSize;
                    _newHeightMapResolution = (baseData.heightmapResolution - 1) / nSize + 1;
                    _newAlphaMapResolution  = baseData.alphamapResolution / nSize;
                    _newBaseMapResolution   = baseData.baseMapResolution / nSize;
                    _newDetailResolution    = baseData.detailResolution / nSize;


                    if (CheckConfigError())
                    {
                        SlicingTerrainData();
                    }

                    if (IsSmoothEdge)
                    {
                        SmoothPatchEdges();
                    }

                    SetNeighbors();
                    this.Close();
                }
            }
        }