From b2c89d7060e99a36c8c7ac897b7386686c74deac Mon Sep 17 00:00:00 2001 From: xolatile Date: Thu, 7 Aug 2025 08:30:30 +0200 Subject: Removed undo and prefab... --- src/engine/world.cpp | 63 ++++------------------------------------------------ 1 file changed, 4 insertions(+), 59 deletions(-) (limited to 'src/engine/world.cpp') diff --git a/src/engine/world.cpp b/src/engine/world.cpp index f58886f..cbe3fad 100644 --- a/src/engine/world.cpp +++ b/src/engine/world.cpp @@ -226,7 +226,6 @@ extern selinfo sel; extern bool havesel; int entlooplevel = 0; int efocus = -1, enthover = -1, entorient = -1, oldhover = -1; -bool undonext = true; VARF(entediting, 0, 0, 1, { if(!entediting) { entcancel(); efocus = enthover = -1; } }); @@ -255,36 +254,13 @@ void entcancel() { } void entadd(int id) { - undonext = true; entgroup.add(id); } -undoblock *newundoent() { - int numents = entgroup.length(); - if(numents <= 0) return NULL; - undoblock *u = (undoblock *)new uchar[sizeof(undoblock) + numents*sizeof(undoent)]; - u->numents = numents; - undoent *e = (undoent *)(u + 1); - loopv(entgroup) { - e->i = entgroup[i]; - e->e = *entities::getents()[entgroup[i]]; - e++; - } - return u; -} - -void makeundoent() { - if(!undonext) return; - undonext = false; - oldhover = enthover; - undoblock *u = newundoent(); - if(u) addundo(u); -} - // convenience macros implicitly define: // e entity, currently edited ent // n int, index to currently edited ent -#define addimplicit(f) { if(entgroup.empty() && enthover>=0) { entadd(enthover); undonext = (enthover != oldhover); f; entgroup.drop(); } else f; } +#define addimplicit(f) { if(entgroup.empty() && enthover>=0) { entadd(enthover); f; entgroup.drop(); } else f; } #define entfocusv(i, f, v){ int n = efocus = (i); if(n>=0) { extentity &e = *v[n]; f; (void) e; } } #define entfocus(i, f) entfocusv(i, f, entities::getents()) #define enteditv(i, f, v) { entfocusv(i, { int a = 0; (void) a; }, v); } @@ -293,8 +269,7 @@ void makeundoent() { #define setgroup(exp) { entcancel(); addgroup(exp); } #define groupeditloop(f){ vector &ents = entities::getents(); entlooplevel++; int _ = efocus; loopv(entgroup) enteditv(entgroup[i], f, ents); efocus = _; entlooplevel--; } #define groupeditpure(f){ if(entlooplevel>0) { entedit(efocus, f); } else groupeditloop(f); } -#define groupeditundo(f){ makeundoent(); groupeditpure(f); } -#define groupedit(f) { addimplicit(groupeditundo(f)); } +#define groupedit(f) { addimplicit(groupeditpure(f)); } vec getselpos() { vector &ents = entities::getents(); @@ -303,36 +278,11 @@ vec getselpos() { return vec(sel.o); } -undoblock *copyundoents(undoblock *u) { - entcancel(); - undoent *e = u->ents(); - loopi(u->numents) - entadd(e[i].i); - undoblock *c = newundoent(); - loopi(u->numents) if(e[i].e.type==ET_EMPTY) - entgroup.removeobj(e[i].i); - return c; -} - -void pasteundoent(int idx, const entity &ue) { - if(idx < 0 || idx >= MAXENTS) return; - vector &ents = entities::getents(); - while(ents.length() < idx) ents.add(entities::newentity())->type = ET_EMPTY; - int efocus = -1; - entedit(idx, (entity &)e = ue); -} - -void pasteundoents(undoblock *u) { - undoent *ue = u->ents(); - loopi(u->numents) - entedit(ue[i].i, (entity &)e = ue[i].e); -} - void entflip() { if(noentedit()) return; int d = dimension(sel.orient); float mid = sel.s[d]*sel.grid/2+sel.o[d]; - groupeditundo(e.o[d] -= (e.o[d]-mid)*2); + groupeditpure(e.o[d] -= (e.o[d]-mid)*2); } void entrotate(int *cw) { @@ -341,7 +291,7 @@ void entrotate(int *cw) { int dd = (*cw<0) == dimcoord(sel.orient) ? R[d] : C[d]; float mid = sel.s[dd]*sel.grid/2+sel.o[dd]; vec s(sel.o.v); - groupeditundo( + groupeditpure( e.o[dd] -= (e.o[dd]-mid)*2; e.o.sub(s); swap(e.o[R[d]], e.o[C[d]]); @@ -401,7 +351,6 @@ void entdrag(const vec &ray) { r = (entselsnap ? g[R[d]] : v[R[d]]) - e.o[R[d]]; c = (entselsnap ? g[C[d]] : v[C[d]]) - e.o[C[d]]; ); - if(entmoving==1) makeundoent(); groupeditpure(e.o[R[d]] += r; e.o[C[d]] += c); entmoving = 2; } @@ -550,7 +499,6 @@ void renderentselection(const vec &o, bool entmoving) { } bool enttoggle(int id) { - undonext = true; int i = entgroup.find(id); if(i < 0) entadd(id); @@ -738,7 +686,6 @@ void newentity(int type, int a1, int a2, int a3, int a4, int a5) { dropentity(*t); t->type = ET_EMPTY; enttoggle(idx); - makeundoent(); entedit(idx, e.type = type); } @@ -777,7 +724,6 @@ void entpaste() { } keepents = 0; int j = 0; - groupeditundo(e.type = entcopybuf[j++].type;); } COMMAND(newent, "siiiii"); @@ -941,7 +887,6 @@ void resetmap() { cleardecals(); clearsleep(); cancelsel(); - pruneundos(); clearmapcrc(); entities::clearents(); outsideents.setsize(0); -- cgit v1.2.3