Happy new year, guys. May you achieve what you've set out to do, and have lots of fun and positive experiences in your life!
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Show posts MenuQuote from: Suicizer on December 12, 2013, 12:57:11 PM
Not a big deal. It's not like we act as a typical mapping clan. Most members do anything except mapping or even reply on the forums at the moment. Yea, we died...
Quote from: unixfreak on October 06, 2013, 10:57:45 PMfap
PSU: 500 Watt
Quote from: unixfreak on October 06, 2013, 10:57:45 PMfap
Motherboard: ASUS M5A78L-M/USB3
Quote from: unixfreak on October 06, 2013, 10:57:45 PMfap fap
Disk: 1TB Hitachi, 7200rpm
Quote from: unixfreak on October 06, 2013, 10:57:45 PMfap fap fap
GPU: Palit NVIDIA GT 610 2gb
Quote from: unixfreak on October 06, 2013, 10:57:45 PMfap fap fap fap fap
RAM: Corsair Vengeance 8gb DDR3 1600mhz (x1)
Quote from: unixfreak on October 06, 2013, 10:57:45 PMfap fap fap FAPFAPFAPFAPFAPFAP SPLURGE!!!!!! AWWGYESHHHGWOHHHDD!
Processor: AMD FX(tm)-8320 Eight-Core Processor
Quote from: Leo on September 24, 2013, 04:49:00 AM
work on the gui. Half of my f1 to f12 menus are blank.
Ps the models for rifle and rocket are missing
Index: octa.cpp
===================================================================
--- octa.cpp (revision 4895)
+++ octa.cpp (working copy)
@@ -59,7 +59,10 @@
c->visible = 0;
c->merged = 0;
setfaces(*c, face);
- loopl(6) c->texture[l] = DEFAULT_GEOM;
+ loopl(6)
+ {
+ c->texture[l] = 2+l;
+ }
c->material = mat;
c++;
}
@@ -311,7 +314,8 @@
texs[numtexs++] = tex;
}
loopirev(numtexs) if(!i || texs[i] > DEFAULT_SKY) return texs[i];
- return DEFAULT_GEOM;
+ //----return DEFAULT_GEOM;
+ return p.texture[orient];
}
void forcemip(cube &c, bool fixtex)
@@ -660,7 +664,6 @@
{
switch(i)
{
- default:
#define GENCUBEVERT(n, x, y, z) \
case n: \
v = T(edgeget(cubeedge(c, 0, y, z), x), \
@@ -674,9 +677,9 @@
void genfaceverts(const cube &c, int orient, ivec v[4])
{
+
switch(orient)
{
- default:
#define GENFACEORIENT(o, v0, v1, v2, v3) \
case o: v0 v1 v2 v3 break;
#define GENFACEVERT(o, n, x,y,z, xv,yv,zv) \
Index: octaedit.cpp
===================================================================
--- octaedit.cpp (revision 4895)
+++ octaedit.cpp (working copy)
@@ -59,7 +59,7 @@
xtraverts += 2*int(xs+ys);
}
-selinfo sel, lastsel, savedsel;
+selinfo sel, lastsel;
int orient = 0;
int gridsize = 8;
@@ -82,16 +82,12 @@
sel.orient = orient;
);
-int moving = 0;
-ICOMMAND(moving, "b", (int *n),
-{
- if(*n >= 0)
- {
- if(!*n || (moving<=1 && !pointinsel(sel, cur.tovec().add(1)))) moving = 0;
- else if(!moving) moving = 1;
- }
- intret(moving);
-});
+VARF(moving, 0, 0, 1,
+ if(!moving) return;
+ vec v(cur.v); v.add(1);
+ moving = pointinsel(sel, v);
+ if(moving) havesel = false; // tell cursorupdate to create handle
+);
VARF(gridpower, 0, 3, 12,
{
@@ -108,14 +104,11 @@
void forcenextundo() { lastsel.orient = -1; }
-extern void hmapcancel();
-
void cubecancel()
{
havesel = false;
moving = dragging = hmapedit = passthroughsel = 0;
forcenextundo();
- hmapcancel();
}
void cancelsel()
@@ -200,11 +193,6 @@
COMMAND(reorient, "");
COMMAND(selextend, "");
-ICOMMAND(selmoved, "", (), { if(noedit(true)) return; intret(sel.o != savedsel.o ? 1 : 0); });
-ICOMMAND(selsave, "", (), { if(noedit(true)) return; savedsel = sel; });
-ICOMMAND(selrestore, "", (), { if(noedit(true)) return; sel = savedsel; });
-ICOMMAND(selswap, "", (), { if(noedit(true)) return; swap(sel, savedsel); });
-
///////// selection support /////////////
cube &blockcube(int x, int y, int z, const block3 &b, int rgrid) // looks up a world cube, based on coordinates mapped by the block
@@ -229,8 +217,9 @@
void countselchild(cube *c, const ivec &cor, int size)
{
- ivec ss = ivec(sel.s).mul(sel.grid);
- loopoctaboxsize(cor, size, sel.o, ss)
+ ivec ss(sel.s);
+ ss.mul(sel.grid);
+ loopoctabox(cor, size, sel.o, ss)
{
ivec o(i, cor.x, cor.y, cor.z, size);
if(c[i].children) countselchild(c[i].children, o, size/2);
@@ -273,17 +262,23 @@
sel.s.z = abs(lastcur.z-cur.z)/sel.grid+1;
}
-bool editmoveplane(const vec &o, const vec &ray, int d, float off, vec &handle, vec &dest, bool first)
+void editmoveplane(const vec &o, const vec &ray, int d, float off, vec &handle, vec &dest, bool first)
{
plane pl(d, off);
float dist = 0.0f;
- if(!pl.rayintersect(player->o, ray, dist))
- return false;
- dest = vec(ray).mul(dist).add(player->o);
- if(first) handle = vec(dest).sub(o);
- dest.sub(handle);
- return true;
+ if(pl.rayintersect(player->o, ray, dist))
+ {
+ dest = ray;
+ dest.mul(dist);
+ dest.add(player->o);
+ if(first)
+ {
+ handle = dest;
+ handle.sub(o);
+ }
+ dest.sub(handle);
+ }
}
inline bool isheightmap(int orient, int d, bool empty, cube *c);
@@ -306,20 +301,19 @@
if(moving)
{
- static vec dest, handle;
- if(editmoveplane(sel.o.tovec(), camdir, od, sel.o[D[od]]+odc*sel.grid*sel.s[D[od]], handle, dest, moving==1))
+ ivec e;
+ static vec v, handle;
+ editmoveplane(sel.o.tovec(), camdir, od, sel.o[D[od]]+odc*sel.grid*sel.s[D[od]], handle, v, !havesel);
+ if(!havesel)
{
- if(moving==1)
- {
- dest.add(handle);
- handle = ivec(handle).mask(~(sel.grid-1)).tovec();
- dest.sub(handle);
- moving = 2;
- }
- ivec o = ivec(dest).mask(~(sel.grid-1));
- sel.o[R[od]] = o[R[od]];
- sel.o[C[od]] = o[C[od]];
+ v.add(handle);
+ (e = handle).mask(~(sel.grid-1));
+ v.sub(handle = e.tovec());
+ havesel = true;
}
+ (e = v).mask(~(sel.grid-1));
+ sel.o[R[od]] = e[R[od]];
+ sel.o[C[od]] = e[C[od]];
}
else
if(entmoving)
@@ -339,7 +333,7 @@
| (passthroughcube==1 ? RAY_PASS : 0), gridsize, entorient, ent);
if((havesel || dragging) && !passthroughsel && !hmapedit) // now try selecting the selection
- if(rayboxintersect(sel.o.tovec(), vec(sel.s.tovec()).mul(sel.grid), player->o, camdir, sdist, orient))
+ if(rayrectintersect(sel.o.tovec(), vec(sel.s.tovec()).mul(sel.grid), player->o, camdir, sdist, orient))
{ // and choose the nearest of the two
if(sdist < wdist)
{
@@ -374,7 +368,7 @@
if(gridlookup && !dragging && !moving && !havesel && hmapedit!=1) gridsize = lusize;
int mag = lusize / gridsize;
normalizelookupcube(int(w.x), int(w.y), int(w.z));
- if(sdist == 0 || sdist > wdist) rayboxintersect(lu.tovec(), vec(gridsize), player->o, camdir, t=0, orient); // just getting orient
+ if(sdist == 0 || sdist > wdist) rayrectintersect(lu.tovec(), vec(gridsize), player->o, camdir, t=0, orient); // just getting orient
cur = lu;
cor = vec(w).mul(2).div(gridsize);
od = dimension(orient);
@@ -458,7 +452,7 @@
}
// selections
- if(havesel || moving)
+ if(havesel)
{
d = dimension(sel.orient);
glColor3ub(50,50,50); // grid
@@ -498,9 +492,9 @@
static bool haschanged = false;
-void readychanges(const ivec &bbmin, const ivec &bbmax, cube *c, const ivec &cor, int size)
+void readychanges(block3 &b, cube *c, const ivec &cor, int size)
{
- loopoctabox(cor, size, bbmin, bbmax)
+ loopoctabox(cor, size, b.o, b.s)
{
ivec o(i, cor.x, cor.y, cor.z, size);
if(c[i].ext)
@@ -523,7 +517,7 @@
discardchildren(c[i], true);
brightencube(c[i]);
}
- else readychanges(bbmin, bbmax, c[i].children, o, size/2);
+ else readychanges(b, c[i].children, o, size/2);
}
else brightencube(c[i]);
}
@@ -550,7 +544,17 @@
void changed(const block3 &sel, bool commit = true)
{
if(sel.s.iszero()) return;
- readychanges(ivec(sel.o).sub(1), ivec(sel.s).mul(sel.grid).add(sel.o).add(1), worldroot, ivec(0, 0, 0), worldsize/2);
+ block3 b = sel;
+ loopi(3) b.s[i] *= b.grid;
+ b.grid = 1;
+ loopi(3) // the changed blocks are the selected cubes
+ {
+ b.o[i] -= 1;
+ b.s[i] += 2;
+ readychanges(b, worldroot, ivec(0, 0, 0), worldsize/2);
+ b.o[i] += 1;
+ b.s[i] -= 2;
+ }
haschanged = true;
if(commit) commitchanges();
@@ -920,58 +924,58 @@
e = NULL;
}
-struct prefabheader
+struct octabrushheader
{
char magic[4];
int version;
};
-struct prefab : editinfo
+struct octabrush : editinfo
{
char *name;
- prefab() : name(NULL) {}
- ~prefab() { DELETEA(name); if(copy) freeblock(copy); }
+ octabrush() : name(NULL) {}
+ ~octabrush() { DELETEA(name); if(copy) freeblock(copy); }
};
-static inline bool htcmp(const char *key, const prefab &b) { return !strcmp(key, b.name); }
+static inline bool htcmp(const char *key, const octabrush &b) { return !strcmp(key, b.name); }
-static hashset<prefab> prefabs;
+static hashset<octabrush> octabrushes;
-void delprefab(char *name)
+void delbrush(char *name)
{
- if(prefabs.remove(name))
- conoutf("deleted prefab %s", name);
+ if(octabrushes.remove(name))
+ conoutf("deleted brush %s", name);
}
-COMMAND(delprefab, "s");
+COMMAND(delbrush, "s");
-void saveprefab(char *name)
+void savebrush(char *name)
{
if(!name[0] || noedit(true) || (nompedit && multiplayer())) return;
- prefab *b = prefabs.access(name);
+ octabrush *b = octabrushes.access(name);
if(!b)
{
- b = &prefabs[name];
+ b = &octabrushes[name];
b->name = newstring(name);
}
if(b->copy) freeblock(b->copy);
protectsel(b->copy = blockcopy(block3(sel), sel.grid));
changed(sel);
- defformatstring(filename)(strpbrk(name, "/\\") ? "packages/%s.obr" : "packages/prefab/%s.obr", name);
+ defformatstring(filename)(strpbrk(name, "/\\") ? "packages/%s.obr" : "packages/brush/%s.obr", name);
path(filename);
stream *f = opengzfile(filename, "wb");
- if(!f) { conoutf(CON_ERROR, "could not write prefab to %s", filename); return; }
- prefabheader hdr;
+ if(!f) { conoutf(CON_ERROR, "could not write brush to %s", filename); return; }
+ octabrushheader hdr;
memcpy(hdr.magic, "OEBR", 4);
hdr.version = 0;
lilswap(&hdr.version, 1);
f->write(&hdr, sizeof(hdr));
streambuf<uchar> s(f);
- if(!packblock(*b->copy, s)) { delete f; conoutf(CON_ERROR, "could not pack prefab %s", filename); return; }
+ if(!packblock(*b->copy, s)) { delete f; conoutf(CON_ERROR, "could not pack brush %s", filename); return; }
delete f;
- conoutf("wrote prefab file %s", filename);
+ conoutf("wrote brush file %s", filename);
}
-COMMAND(saveprefab, "s");
+COMMAND(savebrush, "s");
void pasteblock(block3 &b, selinfo &sel, bool local)
{
@@ -983,31 +987,31 @@
sel.orient = o;
}
-void pasteprefab(char *name)
+void pastebrush(char *name)
{
if(!name[0] || noedit() || (nompedit && multiplayer())) return;
- prefab *b = prefabs.access(name);
+ octabrush *b = octabrushes.access(name);
if(!b)
{
- defformatstring(filename)(strpbrk(name, "/\\") ? "packages/%s.obr" : "packages/prefab/%s.obr", name);
+ defformatstring(filename)(strpbrk(name, "/\\") ? "packages/%s.obr" : "packages/brush/%s.obr", name);
path(filename);
stream *f = opengzfile(filename, "rb");
- if(!f) { conoutf(CON_ERROR, "could not read prefab %s", filename); return; }
- prefabheader hdr;
- if(f->read(&hdr, sizeof(hdr)) != sizeof(prefabheader) || memcmp(hdr.magic, "OEBR", 4)) { delete f; conoutf(CON_ERROR, "prefab %s has malformatted header", filename); return; }
+ if(!f) { conoutf(CON_ERROR, "could not read brush %s", filename); return; }
+ octabrushheader hdr;
+ if(f->read(&hdr, sizeof(hdr)) != sizeof(octabrushheader) || memcmp(hdr.magic, "OEBR", 4)) { delete f; conoutf(CON_ERROR, "brush %s has malformatted header", filename); return; }
lilswap(&hdr.version, 1);
- if(hdr.version != 0) { delete f; conoutf(CON_ERROR, "prefab %s uses unsupported version", filename); return; }
+ if(hdr.version != 0) { delete f; conoutf(CON_ERROR, "brush %s uses unsupported version", filename); return; }
streambuf<uchar> s(f);
block3 *copy = NULL;
- if(!unpackblock(copy, s)) { delete f; conoutf(CON_ERROR, "could not unpack prefab %s", filename); return; }
+ if(!unpackblock(copy, s)) { delete f; conoutf(CON_ERROR, "could not unpack brush %s", filename); return; }
delete f;
- b = &prefabs[name];
+ b = &octabrushes[name];
b->name = newstring(name);
b->copy = copy;
}
pasteblock(*b->copy, sel, true);
}
-COMMAND(pasteprefab, "s");
+COMMAND(pastebrush, "s");
void mpcopy(editinfo *&e, selinfo &sel, bool local)
{
@@ -1107,8 +1111,7 @@
COMMAND(clearbrush, "");
COMMAND(brushvert, "iii");
-void hmapcancel() { htextures.setsize(0); }
-COMMAND(hmapcancel, "");
+ICOMMAND(hmapcancel, "", (), htextures.setsize(0); );
ICOMMAND(hmapselect, "", (),
int t = lookupcube(cur.x, cur.y, cur.z).texture[orient];
int i = htextures.find(t);
@@ -1118,12 +1121,21 @@
htextures.remove(i);
);
+inline bool ishtexture(int t)
+{
+ loopv(htextures)
+ if(t == htextures[i])
+ return false;
+ return true;
+}
+
+VARP(bypassheightmapcheck, 0, 0, 1); // temp
+
inline bool isheightmap(int o, int d, bool empty, cube *c)
{
return havesel ||
(empty && isempty(*c)) ||
- htextures.empty() ||
- htextures.find(c->texture[o]) >= 0;
+ ishtexture(c->texture[o]);
}
namespace hmap
@@ -1493,7 +1505,7 @@
solidfaces(c);
cube &o = blockcube(x, y, 1, sel, -sel.grid);
loopi(6)
- c.texture[i] = o.children ? DEFAULT_GEOM : o.texture[i];
+ c.texture[i] = o.children ? 2+i : o.texture[i];
}
else
emptyfaces(c);
Quote from: Leo on August 29, 2013, 03:12:11 AMI'm not so sure about these ideas yet. First off, there is no 'stable' version of tesseract. Second of all, even if we make a resource pack, what exactly are we releasing? "Tesseract - experimental 3D engine with a resource pack"? I don't think we have something to advertise yet.
So if we can get together and make a good resource pack and release a stable version of tesseract, it'll still need some type of advertisement otherwise only people who already know about cube will play it and those who search for free fps shooters online.
Page created in 0.052 seconds with 16 queries.