1
1
#include " levelEditorHistory.h"
2
2
#include " sharedState.h"
3
+ #include " error.h"
3
4
#include < TFE_System/system.h>
4
5
#include < TFE_Editor/LevelEditor/levelEditor.h>
5
6
#include < TFE_Editor/LevelEditor/levelEditorData.h>
@@ -31,6 +32,9 @@ namespace LevelEditor
31
32
32
33
// Used to merge certain commands.
33
34
static TFE_Editor::SnapshotBuffer s_workBuffer[2 ];
35
+
36
+ // Helper Functions.
37
+ u32 compressBuffer ();
34
38
35
39
// Command Functions
36
40
void cmd_applySectorSnapshot ();
@@ -107,7 +111,7 @@ namespace LevelEditor
107
111
history_step (1 );
108
112
edit_clearSelections (false );
109
113
}
110
-
114
+
111
115
// //////////////////////////////
112
116
// Editor API
113
117
// //////////////////////////////
@@ -121,16 +125,8 @@ namespace LevelEditor
121
125
if (s_workBuffer[0 ].empty ()) { return ; }
122
126
123
127
const u32 uncompressedSize = (u32 )s_workBuffer[0 ].size ();
124
- u32 compressedSize = 0 ;
125
- if (zstd_compress (s_workBuffer[1 ], s_workBuffer[0 ].data (), uncompressedSize, 4 ))
126
- {
127
- compressedSize = (u32 )s_workBuffer[1 ].size ();
128
- }
129
- // ERROR
130
- if (!compressedSize)
131
- {
132
- return ;
133
- }
128
+ const u32 compressedSize = compressBuffer ();
129
+ if (!compressedSize) { return ; }
134
130
135
131
CMD_BEGIN (LCmd_Sector_Snapshot, name);
136
132
{
@@ -149,16 +145,8 @@ namespace LevelEditor
149
145
if (s_workBuffer[0 ].empty ()) { return ; }
150
146
151
147
const u32 uncompressedSize = (u32 )s_workBuffer[0 ].size ();
152
- u32 compressedSize = 0 ;
153
- if (zstd_compress (s_workBuffer[1 ], s_workBuffer[0 ].data (), uncompressedSize, 4 ))
154
- {
155
- compressedSize = (u32 )s_workBuffer[1 ].size ();
156
- }
157
- // ERROR
158
- if (!compressedSize)
159
- {
160
- return ;
161
- }
148
+ const u32 compressedSize = compressBuffer ();
149
+ if (!compressedSize) { return ; }
162
150
163
151
CMD_BEGIN (LCmd_ObjList_Snapshot, name);
164
152
{
@@ -188,16 +176,8 @@ namespace LevelEditor
188
176
if (s_workBuffer[0 ].empty ()) { return ; }
189
177
190
178
const u32 uncompressedSize = (u32 )s_workBuffer[0 ].size ();
191
- u32 compressedSize = 0 ;
192
- if (zstd_compress (s_workBuffer[1 ], s_workBuffer[0 ].data (), uncompressedSize, 4 ))
193
- {
194
- compressedSize = (u32 )s_workBuffer[1 ].size ();
195
- }
196
- // ERROR
197
- if (!compressedSize)
198
- {
199
- return ;
200
- }
179
+ const u32 compressedSize = compressBuffer ();
180
+ if (!compressedSize) { return ; }
201
181
202
182
CMD_BEGIN (LCmd_Sector_Wall_Snapshot, name);
203
183
{
@@ -215,6 +195,7 @@ namespace LevelEditor
215
195
216
196
u16 prevCmd, prevName;
217
197
history_getPrevCmdAndName (prevCmd, prevName);
198
+ // Cannot combine commands if new textures are added to the level.
218
199
if (prevCmd == LCmd_Sector_Attrib_Snapshot && texList.list .empty () && prevName == name && !idsChanged)
219
200
{
220
201
history_removeLast ();
@@ -226,16 +207,8 @@ namespace LevelEditor
226
207
if (s_workBuffer[0 ].empty ()) { return ; }
227
208
228
209
const u32 uncompressedSize = (u32 )s_workBuffer[0 ].size ();
229
- u32 compressedSize = 0 ;
230
- if (zstd_compress (s_workBuffer[1 ], s_workBuffer[0 ].data (), uncompressedSize, 4 ))
231
- {
232
- compressedSize = (u32 )s_workBuffer[1 ].size ();
233
- }
234
- // ERROR
235
- if (!compressedSize)
236
- {
237
- return ;
238
- }
210
+ const u32 compressedSize = compressBuffer ();
211
+ if (!compressedSize) { return ; }
239
212
240
213
CMD_BEGIN (LCmd_Sector_Attrib_Snapshot, name);
241
214
{
@@ -256,16 +229,8 @@ namespace LevelEditor
256
229
if (s_workBuffer[0 ].empty ()) { return ; }
257
230
258
231
const u32 uncompressedSize = (u32 )s_workBuffer[0 ].size ();
259
- u32 compressedSize = 0 ;
260
- if (zstd_compress (s_workBuffer[1 ], s_workBuffer[0 ].data (), uncompressedSize, 4 ))
261
- {
262
- compressedSize = (u32 )s_workBuffer[1 ].size ();
263
- }
264
- // ERROR
265
- if (!compressedSize)
266
- {
267
- return ;
268
- }
232
+ const u32 compressedSize = compressBuffer ();
233
+ if (!compressedSize) { return ; }
269
234
270
235
CMD_BEGIN (LCmd_Set_Textures, name);
271
236
{
@@ -343,4 +308,22 @@ namespace LevelEditor
343
308
level_unpackFeatureTextureSnapshot (uncompressedSize, s_workBuffer[0 ].data ());
344
309
}
345
310
}
311
+
312
+ // ////////////////////////////////////////////////
313
+ // Internal
314
+ // ////////////////////////////////////////////////
315
+ u32 compressBuffer ()
316
+ {
317
+ u32 compressedSize = 0 ;
318
+ if (zstd_compress (s_workBuffer[1 ], s_workBuffer[0 ].data (), (u32 )s_workBuffer[0 ].size (), 4 ))
319
+ {
320
+ compressedSize = (u32 )s_workBuffer[1 ].size ();
321
+ }
322
+ if (!compressedSize)
323
+ {
324
+ LE_ERROR (" Snapshot compression failed." );
325
+ return 0 ;
326
+ }
327
+ return compressedSize;
328
+ }
346
329
}
0 commit comments