Made the lights editor more useful/usable.
tints for terrain, nicer save+load commands. git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4159 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
472710d177
commit
52bacf161b
6 changed files with 411 additions and 312 deletions
|
@ -32,6 +32,7 @@ static camdata_t *camdata;
|
|||
static var float splinefile = -1;
|
||||
static var int edit_type = 0;
|
||||
static vector submenu_position;
|
||||
static var float autocvar_cl_demospeed = 1;
|
||||
|
||||
void(int *dest, int bytes) memclr =
|
||||
{
|
||||
|
@ -45,10 +46,17 @@ void(int *dest, int bytes) memclr =
|
|||
|
||||
void() spline_init =
|
||||
{
|
||||
string camfilename;
|
||||
if (isdemo())
|
||||
camfilename = serverkey("ip"); //this always contains the name of the demo rather than the original ip, which is not known.
|
||||
else
|
||||
camfilename = mapname; //otherwise just use the current map (though really we should just disable this)
|
||||
camfilename = strcat(camfilename, ".cam");
|
||||
|
||||
/*precache the shader*/
|
||||
shaderforname("camsplineshader", "{\n{\nmap construction.tga\nblendfunc blend\nrgbgen vertex\nalphagen vertex\n}\n}\n");
|
||||
|
||||
splinefile = fopen("spline.dat", FILE_MMAP_RW, sizeof(camdata_t));
|
||||
splinefile = fopen(camfilename, FILE_MMAP_RW, sizeof(camdata_t));
|
||||
if (splinefile < 0)
|
||||
{
|
||||
/*too lazy to create a file, just use it as a malloc*/
|
||||
|
@ -62,7 +70,7 @@ void() spline_init =
|
|||
|
||||
if (camdata->ver != VER)
|
||||
{
|
||||
print("spline.dat version is outdated, wiping.\n");
|
||||
print(sprintf("%s version is outdated, wiping.\n", camfilename));
|
||||
memclr ((int*)camdata, sizeof(camdata_t));
|
||||
camdata->ver = VER;
|
||||
}
|
||||
|
@ -88,7 +96,7 @@ static vector(spline_t *s, float frac) spline_pos =
|
|||
vector v1, v2;
|
||||
if (s->numpoints < 2)
|
||||
{
|
||||
return;
|
||||
return '0 0 0';
|
||||
}
|
||||
frac *= s->numpoints;
|
||||
if (frac < 0)
|
||||
|
@ -499,7 +507,7 @@ float slidertestfloat1, slidertestfloat2, slidertestfloat3;
|
|||
static float *curslider;
|
||||
static menu_t menu;
|
||||
|
||||
int (vector *curmousepos, vector mousediff, float key) submenu =
|
||||
void (vector *curmousepos, vector mousediff, float key) submenu =
|
||||
{
|
||||
local vector pos, cpos;
|
||||
local spline_t *s;
|
||||
|
@ -623,7 +631,7 @@ int (vector *curmousepos, vector mousediff, float key) submenu =
|
|||
menu->flags = MF_DS_VALUE;
|
||||
point1 = '0 0 0'; // << problem with using a global value identifier i cant reuse point
|
||||
str = "move spline: ";
|
||||
drawstring(pos, str, '8 8 0', '1 1 1', 1);
|
||||
drawrawstring(pos, str, '8 8 0', '1 1 1', 1);
|
||||
pos_y += 8;
|
||||
sliderf_fixed_widgit(&menu, " x:", pos, &point1_x); pos_y += 8;
|
||||
sliderf_fixed_widgit(&menu, " y:", pos, &point1_y); pos_y += 8;
|
||||
|
@ -632,7 +640,7 @@ int (vector *curmousepos, vector mousediff, float key) submenu =
|
|||
menu->flags = 0;
|
||||
}
|
||||
|
||||
drawrawstring(pos, sprintf("isdemo: %f", isdemo()), '8 8 0', '1 1 1', 1);
|
||||
// drawrawstring(pos, sprintf("isdemo: %f", isdemo()), '8 8 0', '1 1 1', 1);
|
||||
}
|
||||
|
||||
int (vector *curmousepos, vector mousediff, float key) testmenu =
|
||||
|
@ -660,6 +668,7 @@ int (vector *curmousepos, vector mousediff) editor_spline_overlay =
|
|||
local spline_t *s;
|
||||
local int ri;
|
||||
local string str;
|
||||
float min, sec;
|
||||
|
||||
if (splinefile < 0)
|
||||
spline_init();
|
||||
|
@ -688,6 +697,17 @@ int (vector *curmousepos, vector mousediff) editor_spline_overlay =
|
|||
menu->flags = MF_DS_VALUE;
|
||||
checkboxi_widgit(&menu, "", v, &edit_type);
|
||||
|
||||
v_x = 0;
|
||||
v_y += 8;
|
||||
sliderf_widgit(&menu, "demo speed", v, &autocvar_cl_demospeed, 0, 1);
|
||||
cvar_set("cl_demospeed", ftos(autocvar_cl_demospeed));
|
||||
|
||||
v_y += 8;
|
||||
sec = time;
|
||||
min = floor(sec/60);
|
||||
sec -= min*60;
|
||||
drawrawstring(v, sprintf("time: %g:%02.0f", min, sec), '8 8 0', '1 1 1', 1);
|
||||
|
||||
submenu_position = pos + '0 8';
|
||||
|
||||
submenu(curmousepos, mousediff, -1);
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
float autocvar_ca_show;
|
||||
float autocvar_ca_editormode;
|
||||
string autocvar_ca_colourtint;
|
||||
|
||||
enum
|
||||
{
|
||||
MODE_INITIAL=0,
|
||||
|
@ -12,6 +8,10 @@ enum
|
|||
MODE_PARTICLEEDIT=4,
|
||||
};
|
||||
|
||||
float autocvar_ca_show;
|
||||
var float autocvar_ca_editormode = MODE_LIGHTEDIT;
|
||||
string autocvar_ca_colourtint;
|
||||
|
||||
var vector vidsize = '640 480 0';
|
||||
vector curmousepos;
|
||||
vector mousediff;
|
||||
|
@ -405,3 +405,9 @@ void(float prevprogs) init =
|
|||
externset(0, wrap_InputEvent, "CSQC_InputEvent");
|
||||
}
|
||||
};
|
||||
|
||||
void() CSQC_Shutdown =
|
||||
{
|
||||
spline_shutdown();
|
||||
};
|
||||
|
||||
|
|
|
@ -275,14 +275,29 @@ float gamespeed;
|
|||
#define LFLAG_NOSHADOWS 256
|
||||
#define LFLAG_SHADOWMAP 512
|
||||
#define LFLAG_CREPUSCULAR 1024
|
||||
void(vector) makevectors = #1;
|
||||
#define TEREDIT_RELOAD 0
|
||||
#define TEREDIT_SAVE 1
|
||||
#define TEREDIT_SETHOLE 2
|
||||
#define TEREDIT_HEIGHT_SET 3
|
||||
#define TEREDIT_HEIGHT_SMOOTH 4
|
||||
#define TEREDIT_HEIGHT_SPREAD 5
|
||||
#define TEREDIT_HEIGHT_RAISE 6
|
||||
#define TEREDIT_HEIGHT_FLATTEN 18
|
||||
#define TEREDIT_HEIGHT_LOWER 7
|
||||
#define TEREDIT_TEX_KILL 8
|
||||
#define TEREDIT_TEX_GET 9
|
||||
#define TEREDIT_MIX_PAINT 10
|
||||
#define TEREDIT_MIX_UNIFY 11
|
||||
#define TEREDIT_MIX_NOISE 12
|
||||
#define TEREDIT_MIX_BLUR 13
|
||||
#define TEREDIT_WATER_SET 14
|
||||
#define TEREDIT_MESH_ADD 15
|
||||
#define TEREDIT_MESH_KILL 16
|
||||
#define TEREDIT_TINT 17
|
||||
void(vector vang) makevectors = #1;
|
||||
void(entity e, vector o) setorigin = #2;
|
||||
void(entity e, string m) setmodel = #3;
|
||||
void(entity e, vector min, vector max) setsize = #4;
|
||||
#ifdef SSQC
|
||||
void(float style, float val) lightstylestatic = #5;
|
||||
void() break = #6;
|
||||
#endif
|
||||
float() random = #7;
|
||||
void(entity e, float chan, string samp, float vol, float atten, optional float speedpct, optional float flags) sound = #8;
|
||||
vector(vector v) normalize = #9;
|
||||
|
@ -293,20 +308,10 @@ float(vector v) vectoyaw = #13;
|
|||
entity() spawn = #14;
|
||||
void(entity e) remove = #15;
|
||||
void(vector v1, vector v2, float nomonsters, entity ent) traceline = #16;
|
||||
#ifdef SSQC
|
||||
entity() checkclient = #17;
|
||||
#endif
|
||||
entity(entity start, .string fld, string match) find = #18;
|
||||
void(string s) precache_sound = #19;
|
||||
void(string s) precache_model = #20;
|
||||
#ifdef SSQC
|
||||
void(entity client, string s) stuffcmd = #21;
|
||||
#endif
|
||||
entity(vector org, float rad) findradius = #22;
|
||||
#ifdef SSQC
|
||||
void(string s) bprint = #23;
|
||||
void(entity client, string s) sprint = #24;
|
||||
#endif
|
||||
void(string s, ...) dprint = #25;
|
||||
string(float val) ftos = #26;
|
||||
string(vector val) vtos = #27;
|
||||
|
@ -324,9 +329,6 @@ float(float) ceil = #38;
|
|||
float(entity ent) checkbottom = #40;
|
||||
float(vector pos) pointcontents = #41;
|
||||
float(float) fabs = #43;
|
||||
#ifdef SSQC
|
||||
vector(entity player, float missilespeed) aim = #44;
|
||||
#endif
|
||||
float(string) cvar = #45;
|
||||
void(string, ...) localcmd = #46;
|
||||
entity(entity) nextent = #47;
|
||||
|
@ -334,136 +336,77 @@ void(vector pos, vector dir, float colour, float count) particle = #48;
|
|||
#define ChangeYaw changeyaw
|
||||
void() changeyaw = #49;
|
||||
vector(vector fwd, optional vector up) vectoangles = #51;
|
||||
#ifdef SSQC
|
||||
void(float to, float val) WriteByte = #52;
|
||||
void(float to, float val) WriteChar = #53;
|
||||
void(float to, float val) WriteShort = #54;
|
||||
void(float to, float val) WriteLong = #55;
|
||||
void(float to, float val) WriteCoord = #56;
|
||||
void(float to, float val) WriteAngle = #57;
|
||||
void(float to, string val) WriteString = #58;
|
||||
void(float to, entity val) WriteEntity = #59;
|
||||
#endif
|
||||
float(float angle) sin = #60;
|
||||
float(float angle) cos = #61;
|
||||
float(float value) sqrt = #62;
|
||||
void(entity ent) changepitch = #63;
|
||||
float(float angle) sin = #60; /* Part of DP_QC_SINCOSSQRTPOW*/
|
||||
float(float angle) cos = #61; /* Part of DP_QC_SINCOSSQRTPOW*/
|
||||
float(float value) sqrt = #62; /* Part of DP_QC_SINCOSSQRTPOW*/
|
||||
void(entity ent) changepitch = #63; /* Part of DP_QC_CHANGEPITCH*/
|
||||
void(entity ent, entity ignore) tracetoss = #64;
|
||||
string(entity ent) etos = #65;
|
||||
string(entity ent) etos = #65; /* Part of DP_QC_ETOS*/
|
||||
void(float step) movetogoal = #67;
|
||||
#ifdef SSQC
|
||||
void(string s) precache_file = #68;
|
||||
#endif
|
||||
void(entity e) makestatic = #69;
|
||||
#ifdef SSQC
|
||||
void(string mapname, optional string newmapstartspot) changelevel = #70;
|
||||
#endif
|
||||
void(string cvarname, string valuetoset) cvar_set = #72;
|
||||
#ifdef SSQC
|
||||
void(entity ent, string text, ...) centerprint = #73;
|
||||
#endif
|
||||
void (vector pos, string samp, float vol, float atten) ambientsound = #74;
|
||||
void(string str) precache_model2 = #75;
|
||||
void(string str) precache_sound2 = #76;
|
||||
#ifdef SSQC
|
||||
void(string str) precache_file2 = #77;
|
||||
void() setspawnparms = #78;
|
||||
void(entity killer, entity killee) logfrag = #79;
|
||||
string(entity e, string key) infokey = #80;
|
||||
#endif
|
||||
float(string) stof = #81;
|
||||
#ifdef SSQC
|
||||
void(vector where, float set) multicast = #82;
|
||||
#endif
|
||||
void(vector start, vector mins, vector maxs, vector end, float nomonsters, entity ent) tracebox = #90;
|
||||
vector() randomvec = #91;
|
||||
float(string) stof = #81; /* Part of FRIK_FILE, FTE_STRINGS, QW_ENGINE, ZQ_QC_STRINGS*/
|
||||
void(vector start, vector mins, vector maxs, vector end, float nomonsters, entity ent) tracebox = #90; /* Part of DP_QC_TRACEBOX*/
|
||||
vector() randomvec = #91; /* Part of DP_QC_RANDOMVEC*/
|
||||
vector(vector org) getlight = #92;
|
||||
void(string cvarname, string defaultvalue) registercvar = #93;
|
||||
float(float a, float b, ...) min = #94;
|
||||
float(float a, float b, ...) max = #95;
|
||||
float(float minimum, float val, float maximum) bound = #96;
|
||||
float(float value, float exp) pow = #97;
|
||||
entity(entity start, .float fld, float match) findfloat = #98;
|
||||
void(string cvarname, string defaultvalue) registercvar = #93; /* Part of DP_REGISTERCVAR*/
|
||||
float(float a, float b, ...) min = #94; /* Part of DP_QC_MINMAXBOUND*/
|
||||
float(float a, float b, ...) max = #95; /* Part of DP_QC_MINMAXBOUND*/
|
||||
float(float minimum, float val, float maximum) bound = #96; /* Part of DP_QC_MINMAXBOUND*/
|
||||
float(float value, float exp) pow = #97; /* Part of DP_QC_SINCOSSQRTPOW*/
|
||||
entity(entity start, .float fld, float match) findfloat = #98; /* Part of DP_QC_FINDFLOAT*/
|
||||
float(string extname) checkextension = #99;
|
||||
#ifdef SSQC
|
||||
float(string builtinname) builtin_find = #100;
|
||||
float(float value) anglemod = #102;
|
||||
void(string slot, string picname, float x, float y, float zone, optional entity player) showpic = #104;
|
||||
void(string slot, optional entity player) hidepic = #105;
|
||||
void(string slot, float x, float y, float zone, optional entity player) movepic = #106;
|
||||
void(string slot, string picname, optional entity player) changepic = #107;
|
||||
#endif
|
||||
float(string filename, float mode, optional float mmapminsize) fopen = #110;
|
||||
void(float fhandle) fclose = #111;
|
||||
string(float fhandle) fgets = #112;
|
||||
void(float fhandle, string s) fputs = #113;
|
||||
float(string s) strlen = #114;
|
||||
string(string s1, optional string s2, ...) strcat = #115;
|
||||
string(string s, float start, float length) substring = #116;
|
||||
vector(string s) stov = #117;
|
||||
string(string s) strzone = #118;
|
||||
void(string s) strunzone = #119;
|
||||
#ifdef SSQC
|
||||
void(string cvar, float val) cvar_setf = #176;
|
||||
#endif
|
||||
float(string filename, float mode, optional float mmapminsize) fopen = #110; /* Part of FRIK_FILE*/
|
||||
void(float fhandle) fclose = #111; /* Part of FRIK_FILE*/
|
||||
string(float fhandle) fgets = #112; /* Part of FRIK_FILE*/
|
||||
void(float fhandle, string s, optional string s2, optional string s3, optional string s4, optional string s5, optional string s6, optional string s7) fputs = #113; /* Part of FRIK_FILE*/
|
||||
float(string s) strlen = #114; /* Part of FRIK_FILE, FTE_STRINGS, ZQ_QC_STRINGS*/
|
||||
string(string s1, optional string s2, ...) strcat = #115; /* Part of FRIK_FILE, FTE_STRINGS, ZQ_QC_STRINGS*/
|
||||
string(string s, float start, float length) substring = #116; /* Part of FRIK_FILE, FTE_STRINGS, ZQ_QC_STRINGS*/
|
||||
vector(string s) stov = #117; /* Part of FRIK_FILE, FTE_STRINGS, ZQ_QC_STRINGS*/
|
||||
string(string s) strzone = #118; /* Part of FRIK_FILE, FTE_STRINGS, ZQ_QC_STRINGS*/
|
||||
void(string s) strunzone = #119; /* Part of FRIK_FILE, FTE_STRINGS, ZQ_QC_STRINGS*/
|
||||
float(string modelname, optional float queryonly) getmodelindex = #200;
|
||||
__variant(float prnum, string funcname, ...) externcall = #201;
|
||||
float(string progsname) addprogs = #202;
|
||||
__variant(float prnum, string varname) externvalue = #203;
|
||||
void(float prnum, __variant newval, string varname) externset = #204;
|
||||
float(string input, string token) instr = #206;
|
||||
__variant(float prnum, string funcname, ...) externcall = #201; /* Part of FTE_MULTIPROGS*/
|
||||
float(string progsname) addprogs = #202; /* Part of FTE_MULTIPROGS*/
|
||||
__variant(float prnum, string varname) externvalue = #203; /* Part of FTE_MULTIPROGS*/
|
||||
void(float prnum, __variant newval, string varname) externset = #204; /* Part of FTE_MULTIPROGS*/
|
||||
float(string input, string token) instr = #206; /* Part of FTE_MULTIPROGS*/
|
||||
void(float portal, float state) openportal = #207;
|
||||
#ifdef SSQC
|
||||
float(float attributes, string effectname, ...) RegisterTempEnt = #208;
|
||||
void(float type, vector pos, ...) CustomTempEnt = #209;
|
||||
float(optional float sleeptime) fork = #210;
|
||||
#endif
|
||||
void(optional __variant ret) abort = #211;
|
||||
#ifdef SSQC
|
||||
void(float sleeptime) sleep = #212;
|
||||
void(entity player, string key, string value) forceinfokey = #213;
|
||||
void(string filename, float starttag, entity edict) chat = #214;
|
||||
#endif
|
||||
void(vector org, vector dmin, vector dmax, float colour, float effect, float count) particle2 = #215;
|
||||
void(vector org, vector box, float colour, float effect, float count) particle3 = #216;
|
||||
void(vector org, float radius, float colour, float effect, float count) particle4 = #217;
|
||||
float(float number, float quantity) bitshift = #218;
|
||||
void(vector pos) te_lightningblood = #219;
|
||||
float(string s1, string sub, optional float startidx) strstrofs = #221;
|
||||
float(string str, float index) str2chr = #222;
|
||||
string(float chr, ...) chr2str = #223;
|
||||
string(float ccase, float redalpha, float redchars, string str, ...) strconv = #224;
|
||||
string(float pad, string str1, ...) strpad = #225;
|
||||
string(string old, string key, string value) infoadd = #226;
|
||||
string(string info, string key) infoget = #227;
|
||||
float(string s1, string s2, float len) strncmp = #228;
|
||||
float(string s1, string s2) strcasecmp = #229;
|
||||
float(string s1, string s2, float len) strncasecmp = #230;
|
||||
void() calltimeofday = #231;
|
||||
#ifdef SSQC
|
||||
void(float num, float type, .void fld) clientstat = #232;
|
||||
void(float num, float type, string name) globalstat = #233;
|
||||
void(entity player) isbackbuffered = #234;
|
||||
#endif
|
||||
void(optional __variant ret) abort = #211; /* Part of FTE_MULTITHREADED*/
|
||||
void(vector org, vector dmin, vector dmax, float colour, float effect, float count) particle2 = #215; /* Part of FTE_HEXEN2*/
|
||||
void(vector org, vector box, float colour, float effect, float count) particle3 = #216; /* Part of FTE_HEXEN2*/
|
||||
void(vector org, float radius, float colour, float effect, float count) particle4 = #217; /* Part of FTE_HEXEN2*/
|
||||
float(float number, float quantity) bitshift = #218; /* Part of EXT_BITSHIFT*/
|
||||
void(vector pos) te_lightningblood = #219; /* Part of FTE_TE_STANDARDEFFECTBUILTINS*/
|
||||
float(string s1, string sub, optional float startidx) strstrofs = #221; /* Part of FTE_STRINGS*/
|
||||
float(string str, float index) str2chr = #222; /* Part of FTE_STRINGS*/
|
||||
string(float chr, ...) chr2str = #223; /* Part of FTE_STRINGS*/
|
||||
string(float ccase, float redalpha, float redchars, string str, ...) strconv = #224; /* Part of FTE_STRINGS*/
|
||||
string(float pad, string str1, ...) strpad = #225; /* Part of FTE_STRINGS*/
|
||||
string(string old, string key, string value) infoadd = #226; /* Part of FTE_STRINGS*/
|
||||
string(string info, string key) infoget = #227; /* Part of FTE_STRINGS*/
|
||||
float(string s1, string s2, float len) strncmp = #228; /* Part of FTE_STRINGS*/
|
||||
float(string s1, string s2) strcasecmp = #229; /* Part of FTE_STRINGS*/
|
||||
float(string s1, string s2, float len) strncasecmp = #230; /* Part of FTE_STRINGS*/
|
||||
void() calltimeofday = #231; /* Part of FTE_CALLTIMEOFDAY*/
|
||||
void(vector angle) rotatevectorsbyangle = #235;
|
||||
void(vector fwd, vector right, vector up) rotatevectorsbyvectors = #236;
|
||||
float(float mdlindex, string skinname) skinforname = #237;
|
||||
#ifdef CSQC
|
||||
float(string shadername, optional string defaultshader, ...) shaderforname = #238;
|
||||
#endif
|
||||
void(vector org, optional float count) te_bloodqw = #239;
|
||||
#ifdef SSQC
|
||||
float(vector viewpos, entity entity) checkpvs = #240;
|
||||
entity(string match, optional float matchnum) matchclientname = #241;
|
||||
void(string dest, string content) sendpacket = #242;
|
||||
#endif
|
||||
void(vector org, optional float count) te_bloodqw = #239; /* Part of FTE_TE_STANDARDEFFECTBUILTINS*/
|
||||
#ifdef CSQC
|
||||
vector(entity ent, float tagnum) rotatevectorsbytag = #244;
|
||||
#endif
|
||||
int(string) stoi = #259;
|
||||
string(int) itos = #260;
|
||||
int(string) stoh = #261;
|
||||
string(int) htos = #262;
|
||||
int(string) stoi = #259; /* Part of FTE_QC_INTCONV*/
|
||||
string(int) itos = #260; /* Part of FTE_QC_INTCONV*/
|
||||
int(string) stoh = #261; /* Part of FTE_QC_INTCONV*/
|
||||
string(int) htos = #262; /* Part of FTE_QC_INTCONV*/
|
||||
float(float modlindex, optional float useabstransforms) skel_create = #263;
|
||||
float(float skel, entity ent, float modelindex, float retainfrac, float firstbone, float lastbone, optional float addfrac) skel_build = #264;
|
||||
float(float skel) skel_get_numbones = #265;
|
||||
|
@ -477,13 +420,11 @@ void(float skel, float bonenum, vector org, optional vector fwd, optional vector
|
|||
void(float skel, float startbone, float endbone, vector org, optional vector fwd, optional vector right, optional vector up) skel_mul_bones = #273;
|
||||
void(float skeldst, float skelsrc, float startbone, float entbone) skel_copybones = #274;
|
||||
void(float skel) skel_delete = #275;
|
||||
void(float modidx, string framename) frameforname = #276;
|
||||
float(float modidx, string framename) frameforname = #276;
|
||||
float(float modidx, float framenum) frameduration = #277;
|
||||
void(float action, vector pos, float radius, float quant) terrain_edit = #278;
|
||||
void() touchtriggers = #279;
|
||||
#ifdef SSQC
|
||||
void(float buf, float fl) writefloat = #280;
|
||||
#endif
|
||||
float(entity skelent, string dollname, float parentskel) skel_ragupdate = #281;
|
||||
float*(float skel) skel_mmap = #282;
|
||||
void(entity ent, float bonenum, vector org, optional vector angorfwd, optional vector right, optional vector up) skel_set_bone_world = #283;
|
||||
string(float modidx, float framenum) frametoname = #284;
|
||||
|
@ -566,129 +507,114 @@ __variant(float lno, float fld) dynamiclight_get = #372;
|
|||
void(float lno, float fld, __variant value) dynamiclight_set = #373;
|
||||
string(float efnum, float body) particleeffectquery = #374;
|
||||
#endif
|
||||
void*(int size) memalloc = #384;
|
||||
void(void *ptr) memfree = #385;
|
||||
void(void *dst, void *src, int size) memcpy = #386;
|
||||
void(void *dst, int val, int size) memset = #387;
|
||||
void(entity from, entity to) copyentity = #400;
|
||||
#ifdef SSQC
|
||||
void(entity from, entity to) setcolors = #401;
|
||||
#endif
|
||||
entity(string field, string match) findchain = #402;
|
||||
entity(float fld, float match) findchainfloat = #403;
|
||||
void(vector org, string modelname, float startframe, float endframe, float framerate) effect = #404;
|
||||
void(vector org, vector dir, float count) te_blood = #405;
|
||||
void(vector mincorner, vector maxcorner, float explosionspeed, float howmany) te_bloodshower = #406;
|
||||
void(vector org, vector color) te_explosionrgb = #407;
|
||||
void(vector mincorner, vector maxcorner, vector vel, float howmany, float color, float gravityflag, float randomveljitter) te_particlecube = #408;
|
||||
void(vector mincorner, vector maxcorner, vector vel, float howmany, float color) te_particlerain = #409;
|
||||
void(vector mincorner, vector maxcorner, vector vel, float howmany, float color) te_particlesnow = #410;
|
||||
void(vector org, vector vel, float howmany) te_spark = #411;
|
||||
void(vector org) te_gunshotquad = #412;
|
||||
void(vector org) te_spikequad = #413;
|
||||
void(vector org) te_superspikequad = #414;
|
||||
void(vector org) te_explosionquad = #415;
|
||||
void(vector org) te_smallflash = #416;
|
||||
void(vector org, float radius, float lifetime, vector color) te_customflash = #417;
|
||||
void(vector org) te_gunshot = #418;
|
||||
void(vector org) te_spike = #419;
|
||||
void(vector org) te_superspike = #420;
|
||||
void(vector org) te_explosion = #421;
|
||||
void(vector org) te_tarexplosion = #422;
|
||||
void(vector org) te_wizspike = #423;
|
||||
void(vector org) te_knightspike = #424;
|
||||
void(vector org) te_lavasplash = #425;
|
||||
void(vector org) te_teleport = #426;
|
||||
void(vector org, float color, float colorlength) te_explosion2 = #427;
|
||||
void(entity own, vector start, vector end) te_lightning1 = #428;
|
||||
void(entity own, vector start, vector end) te_lightning2 = #429;
|
||||
void(entity own, vector start, vector end) te_lightning3 = #430;
|
||||
void(entity own, vector start, vector end) te_beam = #431;
|
||||
void(vector dir) vectorvectors = #432;
|
||||
void(vector org) te_plasmaburn = #433;
|
||||
float(entity e, float s) getsurfacenumpoints = #434;
|
||||
vector(entity e, float s, float n) getsurfacepoint = #435;
|
||||
vector(entity e, float s) getsurfacenormal = #436;
|
||||
string(entity e, float s) getsurfacetexture = #437;
|
||||
float(entity e, vector p) getsurfacenearpoint = #438;
|
||||
#ifdef SSQC
|
||||
void(entity e, string s) clientcommand = #440;
|
||||
#endif
|
||||
float(string s) tokenize = #441;
|
||||
string(float n) argv = #442;
|
||||
#ifdef SSQC
|
||||
void(entity e, entity tagentity, string tagname) setattachment = #443;
|
||||
#endif
|
||||
float(string pattern, float caseinsensitive, float quiet) search_begin = #444;
|
||||
void(float handle) search_end = #445;
|
||||
float(float handle) search_getsize = #446;
|
||||
string(float handle, float num) search_getfilename = #447;
|
||||
string(string cvarname) cvar_string = #448;
|
||||
entity(entity start, .entity fld, float match) findflags = #449;
|
||||
entity(.float fld, float match) findchainflags = #450;
|
||||
float(entity ent, string tagname) gettagindex = #451;
|
||||
vector(entity ent, float tagindex) gettaginfo = #452;
|
||||
#ifdef SSQC
|
||||
void(entity player) dropclient = #453;
|
||||
entity() spawnclient = #454;
|
||||
float(entity client) clienttype = #455;
|
||||
void(float target, string str) WriteUnterminatedString = #456;
|
||||
#endif
|
||||
entity(float entnum) edict_num = #459;
|
||||
float() buf_create = #460;
|
||||
void(float bufhandle) buf_del = #461;
|
||||
float(float bufhandle) buf_getsize = #462;
|
||||
void(float bufhandle_from, float bufhandle_to) buf_copy = #463;
|
||||
void(float bufhandle, float sortpower, float backward) buf_sort = #464;
|
||||
string(float bufhandle, string glue) buf_implode = #465;
|
||||
string(float bufhandle, float string_index) bufstr_get = #466;
|
||||
void(float bufhandle, float string_index, string str) bufstr_set = #467;
|
||||
float(float bufhandle, string str, float order) bufstr_add = #468;
|
||||
void(float bufhandle, float string_index) bufstr_free = #469;
|
||||
float(float s) asin = #471;
|
||||
float(float c) acos = #472;
|
||||
float(float t) atan = #473;
|
||||
float(float c, float s) atan2 = #474;
|
||||
float(float a) tan = #475;
|
||||
float(string s) strlennocol = #476;
|
||||
string(string s) strdecolorize = #477;
|
||||
string(float uselocaltime, string format, ...) strftime = #478;
|
||||
float(string s, string separator1, ...) tokenizebyseparator = #479;
|
||||
string(string s) strtolower = #480;
|
||||
string(string s) strtoupper = #481;
|
||||
string(string s) cvar_defstring = #482;
|
||||
void*(int size) memalloc = #384; /* Part of FTE_MEMALLOC*/
|
||||
void(void *ptr) memfree = #385; /* Part of FTE_MEMALLOC*/
|
||||
void(void *dst, void *src, int size) memcpy = #386; /* Part of FTE_MEMALLOC*/
|
||||
void(void *dst, int val, int size) memset = #387; /* Part of FTE_MEMALLOC*/
|
||||
void(entity from, entity to) copyentity = #400; /* Part of DP_QC_COPYENTITY*/
|
||||
entity(.string field, string match) findchain = #402; /* Part of DP_QC_FINDCHAIN*/
|
||||
entity(.float fld, float match) findchainfloat = #403; /* Part of DP_QC_FINDCHAINFLOAT*/
|
||||
void(vector org, string modelname, float startframe, float endframe, float framerate) effect = #404; /* Part of DP_SV_EFFECT*/
|
||||
void(vector org, vector dir, float count) te_blood = #405; /* Part of DP_TE_BLOOD*/
|
||||
void(vector mincorner, vector maxcorner, float explosionspeed, float howmany) te_bloodshower = #406; /* Part of DP_TE_BLOODSHOWER*/
|
||||
void(vector org, vector color) te_explosionrgb = #407; /* Part of DP_TE_EXPLOSIONRGB*/
|
||||
void(vector mincorner, vector maxcorner, vector vel, float howmany, float color, float gravityflag, float randomveljitter) te_particlecube = #408; /* Part of DP_TE_PARTICLECUBE*/
|
||||
void(vector mincorner, vector maxcorner, vector vel, float howmany, float color) te_particlerain = #409; /* Part of _DP_TE_PARTICLERAIN*/
|
||||
void(vector mincorner, vector maxcorner, vector vel, float howmany, float color) te_particlesnow = #410; /* Part of _DP_TE_PARTICLESNOW*/
|
||||
void(vector org, vector vel, float howmany) te_spark = #411; /* Part of DP_TE_SPARK*/
|
||||
void(vector org) te_gunshotquad = #412; /* Part of _DP_TE_QUADEFFECTS1*/
|
||||
void(vector org) te_spikequad = #413; /* Part of _DP_TE_QUADEFFECTS1*/
|
||||
void(vector org) te_superspikequad = #414; /* Part of _DP_TE_QUADEFFECTS1*/
|
||||
void(vector org) te_explosionquad = #415; /* Part of _DP_TE_QUADEFFECTS1*/
|
||||
void(vector org) te_smallflash = #416; /* Part of DP_TE_SMALLFLASH*/
|
||||
void(vector org, float radius, float lifetime, vector color) te_customflash = #417; /* Part of _DP_TE_CUSTOMFLASH*/
|
||||
void(vector org, optional float count) te_gunshot = #418; /* Part of DP_TE_STANDARDEFFECTBUILTINS, FTE_TE_STANDARDEFFECTBUILTINS*/
|
||||
void(vector org) te_spike = #419; /* Part of DP_TE_STANDARDEFFECTBUILTINS, FTE_TE_STANDARDEFFECTBUILTINS*/
|
||||
void(vector org) te_superspike = #420; /* Part of DP_TE_STANDARDEFFECTBUILTINS, FTE_TE_STANDARDEFFECTBUILTINS*/
|
||||
void(vector org) te_explosion = #421; /* Part of DP_TE_STANDARDEFFECTBUILTINS, FTE_TE_STANDARDEFFECTBUILTINS*/
|
||||
void(vector org) te_tarexplosion = #422; /* Part of DP_TE_STANDARDEFFECTBUILTINS, FTE_TE_STANDARDEFFECTBUILTINS*/
|
||||
void(vector org) te_wizspike = #423; /* Part of DP_TE_STANDARDEFFECTBUILTINS, FTE_TE_STANDARDEFFECTBUILTINS*/
|
||||
void(vector org) te_knightspike = #424; /* Part of DP_TE_STANDARDEFFECTBUILTINS, FTE_TE_STANDARDEFFECTBUILTINS*/
|
||||
void(vector org) te_lavasplash = #425; /* Part of DP_TE_STANDARDEFFECTBUILTINS, FTE_TE_STANDARDEFFECTBUILTINS*/
|
||||
void(vector org) te_teleport = #426; /* Part of DP_TE_STANDARDEFFECTBUILTINS, FTE_TE_STANDARDEFFECTBUILTINS*/
|
||||
void(vector org, float color, float colorlength) te_explosion2 = #427; /* Part of DP_TE_STANDARDEFFECTBUILTINS*/
|
||||
void(entity own, vector start, vector end) te_lightning1 = #428; /* Part of DP_TE_STANDARDEFFECTBUILTINS, FTE_TE_STANDARDEFFECTBUILTINS*/
|
||||
void(entity own, vector start, vector end) te_lightning2 = #429; /* Part of DP_TE_STANDARDEFFECTBUILTINS, FTE_TE_STANDARDEFFECTBUILTINS*/
|
||||
void(entity own, vector start, vector end) te_lightning3 = #430; /* Part of DP_TE_STANDARDEFFECTBUILTINS, FTE_TE_STANDARDEFFECTBUILTINS*/
|
||||
void(entity own, vector start, vector end) te_beam = #431; /* Part of DP_TE_STANDARDEFFECTBUILTINS*/
|
||||
void(vector dir) vectorvectors = #432; /* Part of DP_QC_VECTORVECTORS*/
|
||||
void(vector org) te_plasmaburn = #433; /* Part of _DP_TE_PLASMABURN*/
|
||||
float(entity e, float s) getsurfacenumpoints = #434; /* Part of DP_QC_GETSURFACE*/
|
||||
vector(entity e, float s, float n) getsurfacepoint = #435; /* Part of DP_QC_GETSURFACE*/
|
||||
vector(entity e, float s) getsurfacenormal = #436; /* Part of DP_QC_GETSURFACE*/
|
||||
string(entity e, float s) getsurfacetexture = #437; /* Part of DP_QC_GETSURFACE*/
|
||||
float(entity e, vector p) getsurfacenearpoint = #438; /* Part of DP_QC_GETSURFACE*/
|
||||
float(string s) tokenize = #441; /* Part of KRIMZON_SV_PARSECLIENTCOMMAND*/
|
||||
string(float n) argv = #442; /* Part of KRIMZON_SV_PARSECLIENTCOMMAND*/
|
||||
float(string pattern, float caseinsensitive, float quiet) search_begin = #444; /* Part of DP_QC_FS_SEARCH*/
|
||||
void(float handle) search_end = #445; /* Part of DP_QC_FS_SEARCH*/
|
||||
float(float handle) search_getsize = #446; /* Part of DP_QC_FS_SEARCH*/
|
||||
string(float handle, float num) search_getfilename = #447; /* Part of DP_QC_FS_SEARCH*/
|
||||
string(string cvarname) cvar_string = #448; /* Part of DP_QC_CVAR_STRING*/
|
||||
entity(entity start, .float fld, float match) findflags = #449; /* Part of DP_QC_FINDFLAGS*/
|
||||
entity(.float fld, float match) findchainflags = #450; /* Part of DP_QC_FINDCHAINFLAGS*/
|
||||
float(entity ent, string tagname) gettagindex = #451; /* Part of DP_MD3_TAGSINFO*/
|
||||
vector(entity ent, float tagindex) gettaginfo = #452; /* Part of DP_MD3_TAGSINFO*/
|
||||
entity(float entnum) edict_num = #459; /* Part of DP_QC_EDICT_NUM*/
|
||||
float() buf_create = #460; /* Part of DP_QC_STRINGBUFFERS*/
|
||||
void(float bufhandle) buf_del = #461; /* Part of DP_QC_STRINGBUFFERS*/
|
||||
float(float bufhandle) buf_getsize = #462; /* Part of DP_QC_STRINGBUFFERS*/
|
||||
void(float bufhandle_from, float bufhandle_to) buf_copy = #463; /* Part of DP_QC_STRINGBUFFERS*/
|
||||
void(float bufhandle, float sortpower, float backward) buf_sort = #464; /* Part of DP_QC_STRINGBUFFERS*/
|
||||
string(float bufhandle, string glue) buf_implode = #465; /* Part of DP_QC_STRINGBUFFERS*/
|
||||
string(float bufhandle, float string_index) bufstr_get = #466; /* Part of DP_QC_STRINGBUFFERS*/
|
||||
void(float bufhandle, float string_index, string str) bufstr_set = #467; /* Part of DP_QC_STRINGBUFFERS*/
|
||||
float(float bufhandle, string str, float order) bufstr_add = #468; /* Part of DP_QC_STRINGBUFFERS*/
|
||||
void(float bufhandle, float string_index) bufstr_free = #469; /* Part of DP_QC_STRINGBUFFERS*/
|
||||
float(float s) asin = #471; /* Part of DP_QC_ASINACOSATANATAN2TAN*/
|
||||
float(float c) acos = #472; /* Part of DP_QC_ASINACOSATANATAN2TAN*/
|
||||
float(float t) atan = #473; /* Part of DP_QC_ASINACOSATANATAN2TAN*/
|
||||
float(float c, float s) atan2 = #474; /* Part of DP_QC_ASINACOSATANATAN2TAN*/
|
||||
float(float a) tan = #475; /* Part of DP_QC_ASINACOSATANATAN2TAN*/
|
||||
float(string s) strlennocol = #476; /* Part of DP_QC_STRINGCOLORFUNCTIONS*/
|
||||
string(string s) strdecolorize = #477; /* Part of DP_QC_STRINGCOLORFUNCTIONS*/
|
||||
string(float uselocaltime, string format, ...) strftime = #478; /* Part of DP_QC_STRFTIME*/
|
||||
float(string s, string separator1, ...) tokenizebyseparator = #479; /* Part of DP_QC_TOKENIZEBYSEPARATOR*/
|
||||
string(string s) strtolower = #480; /* Part of DP_QC_STRING_CASE_FUNCTIONS*/
|
||||
string(string s) strtoupper = #481; /* Part of DP_QC_STRING_CASE_FUNCTIONS*/
|
||||
string(string s) cvar_defstring = #482; /* Part of DP_QC_CVAR_DEFSTRING*/
|
||||
#ifdef CSQC
|
||||
void(vector origin, string sample, float volume, float attenuation) pointsound = #483;
|
||||
void(vector origin, string sample, float volume, float attenuation) pointsound = #483; /* Part of DP_SV_POINTSOUND*/
|
||||
#endif
|
||||
string(string search, string replace, string subject) strreplace = #484;
|
||||
string(string search, string replace, string subject) strireplace = #485;
|
||||
vector(entity e, float s, float n, float a) getsurfacepointattribute = #486;
|
||||
string(string search, string replace, string subject) strreplace = #484; /* Part of DP_QC_STRREPLACE*/
|
||||
string(string search, string replace, string subject) strireplace = #485; /* Part of DP_QC_STRREPLACE*/
|
||||
vector(entity e, float s, float n, float a) getsurfacepointattribute = #486; /* Part of DP_QC_GETSURFACEPOINTATTRIBUTE*/
|
||||
#ifdef CSQC
|
||||
float(string name) gecko_create = #487;
|
||||
void(string name) gecko_destroy = #488;
|
||||
void(string name, string URI) gecko_navigate = #489;
|
||||
float(string name, float key, float eventtype) gecko_keyevent = #490;
|
||||
void(string name, float x, float y) gecko_mousemove = #491;
|
||||
void(string name, float w, float h) gecko_resize = #492;
|
||||
vector(string name) gecko_get_texture_extent = #493;
|
||||
float(string name) gecko_create = #487; /* Part of DP_GECKO_SUPPORT*/
|
||||
void(string name) gecko_destroy = #488; /* Part of DP_GECKO_SUPPORT*/
|
||||
void(string name, string URI) gecko_navigate = #489; /* Part of DP_GECKO_SUPPORT*/
|
||||
float(string name, float key, float eventtype) gecko_keyevent = #490; /* Part of DP_GECKO_SUPPORT*/
|
||||
void(string name, float x, float y) gecko_mousemove = #491; /* Part of DP_GECKO_SUPPORT*/
|
||||
void(string name, float w, float h) gecko_resize = #492; /* Part of DP_GECKO_SUPPORT*/
|
||||
vector(string name) gecko_get_texture_extent = #493; /* Part of DP_GECKO_SUPPORT*/
|
||||
#endif
|
||||
float(float caseinsensitive, string s, ...) crc16 = #494;
|
||||
float(string name) cvar_type = #495;
|
||||
//float() numentityfields = #496;
|
||||
//string(float fieldnum) entityfieldname = #497;
|
||||
//float(float fieldnum) entityfieldtype = #498;
|
||||
//string(float fieldnum, entity ent) getentityfieldstring = #499;
|
||||
//float(float fieldnum, entity ent, string s) putentityfieldstring = #500;
|
||||
//void(float to, string s, float sz) WritePicture = #501;
|
||||
float(float caseinsensitive, string s, ...) crc16 = #494; /* Part of DP_QC_CRC16*/
|
||||
float(string name) cvar_type = #495; /* Part of DP_QC_CVAR_TYPE*/
|
||||
float() numentityfields = #496; /* Part of DP_QC_ENTITYDATA*/
|
||||
string(float fieldnum) entityfieldname = #497; /* Part of DP_QC_ENTITYDATA*/
|
||||
float(float fieldnum) entityfieldtype = #498; /* Part of DP_QC_ENTITYDATA*/
|
||||
string(float fieldnum, entity ent) getentityfieldstring = #499; /* Part of DP_QC_ENTITYDATA*/
|
||||
float(float fieldnum, entity ent, string s) putentityfieldstring = #500; /* Part of DP_QC_ENTITYDATA*/
|
||||
//void(float to, string s, float sz) WritePicture = #501; /* Part of DP_SV_WRITEPICTURE*/
|
||||
//string() ReadPicture = #501;
|
||||
string(string filename) whichpack = #503;
|
||||
string(string filename) whichpack = #503; /* Part of DP_QC_WHICHPACK*/
|
||||
#ifdef CSQC
|
||||
__variant(float entnum, float fieldnum) getentity = #504;
|
||||
#endif
|
||||
string(string in) uri_escape = #510;
|
||||
string(string in) uri_unescape = #511;
|
||||
string(string in) uri_escape = #510; /* Part of DP_QC_URI_ESCAPE*/
|
||||
string(string in) uri_unescape = #511; /* Part of DP_QC_URI_ESCAPE*/
|
||||
float(entity ent) num_for_edict = #512;
|
||||
void(string str) tokenize_console = #514;
|
||||
float(string str) tokenize_console = #514;
|
||||
float(float idx) argv_start_index = #515;
|
||||
float(float idx) argv_end_index = #516;
|
||||
string(string cvarname) cvar_description = #518;
|
||||
|
@ -697,14 +623,11 @@ float(optional float timetype) gettime = #519;
|
|||
#endif
|
||||
void(string s) loadfromdata = #529;
|
||||
void(string s) loadfromfile = #530;
|
||||
#ifdef SSQC
|
||||
float(string mname) precache_vwep_model = #532;
|
||||
#endif
|
||||
void(.../*, string funcname*/) callfunction = #605;
|
||||
void(float fh, entity e) writetofile = #606;
|
||||
float(string s) isfunction = #607;
|
||||
void(entity e, string s) parseentitydata = #608;
|
||||
string(...) sprintf = #627;
|
||||
string(string fmt, ...) sprintf = #627;
|
||||
float(entity e, float s) getsurfacenumtriangles = #628;
|
||||
vector(entity e, float s, float n) getsurfacetriangle = #629;
|
||||
#pragma noref 0
|
||||
|
|
|
@ -3,10 +3,15 @@
|
|||
/*you probably want to change this if you're running hexen2*/
|
||||
var string autocvar_cg_editor_lightmodel = "progs/s_light.spr";
|
||||
|
||||
var float autocvar_r_editlights_import_ambient = 0;
|
||||
var float autocvar_r_editlights_import_diffuse = 1;
|
||||
var float autocvar_r_editlights_import_specular = 1;
|
||||
|
||||
static float selectedlight;
|
||||
static float editfield;
|
||||
static string editvalue;
|
||||
static entity tempent;
|
||||
static float helphidden;
|
||||
void() editor_lights_add =
|
||||
{
|
||||
float l;
|
||||
|
@ -35,7 +40,8 @@ void() editor_lights_add =
|
|||
};
|
||||
|
||||
#define NUMLFIELDS 14
|
||||
static string fldname[NUMLFIELDS+1] = { "bad",
|
||||
#define NUMCMDS 7
|
||||
static string fldname[NUMLFIELDS+1+NUMCMDS] = { "bad",
|
||||
" num",
|
||||
" org",
|
||||
" rgb",
|
||||
|
@ -49,7 +55,15 @@ static string fldname[NUMLFIELDS+1] = { "bad",
|
|||
" csc",
|
||||
" amb",
|
||||
" dif",
|
||||
" spc"
|
||||
" spc",
|
||||
|
||||
"Save",
|
||||
"World Lights",
|
||||
"Dynamic Lights",
|
||||
"Toggle Help",
|
||||
"Wipe All",
|
||||
"Import",
|
||||
"Reload"
|
||||
};
|
||||
static string(int fld, float foredit) readfield =
|
||||
{
|
||||
|
@ -183,28 +197,46 @@ void(vector m) editor_lights_overlay =
|
|||
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, s, '8 8 0', col, 1);
|
||||
}
|
||||
i+=1;
|
||||
|
||||
for (i = NUMLFIELDS+1f; i <= NUMLFIELDS+NUMCMDS; i++)
|
||||
{
|
||||
s = strcat(ftos(i), " ", fldname[i]);
|
||||
|
||||
if (editfield == i)
|
||||
col = '1 0 0';
|
||||
else if (m_y == i && m_x < 64)
|
||||
col = '0 0 1';
|
||||
else
|
||||
col = '1 1 1';
|
||||
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, s, '8 8 0', col, 1);
|
||||
}
|
||||
i+=1i;
|
||||
|
||||
if (helphidden)
|
||||
return;
|
||||
|
||||
if (editfield == 5)
|
||||
{
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "d: dynamic mode\n", '8 8 0', '1 1 1', 1); i+=1;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "w: realtime world lights mode\n", '8 8 0', '1 1 1', 1); i+=1;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "l: lightmap hack (not valid above index 32)\n", '8 8 0', '1 1 1', 1); i+=1;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "f: flashblend coronas\n", '8 8 0', '1 1 1', 1); i+=1;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "c: does not cast shadows\n", '8 8 0', '1 1 1', 1); i+=1;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "s: shadowmapped light\n", '8 8 0', '1 1 1', 1); i+=1;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "r: crepuscular rays\n", '8 8 0', '1 1 1', 1); i+=1;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "d: dynamic mode\n", '8 8 0', '1 1 1', 1); i+=1i;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "w: realtime world lights mode\n", '8 8 0', '1 1 1', 1); i+=1i;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "l: lightmap hack (not valid above index 32)\n", '8 8 0', '1 1 1', 1); i+=1i;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "f: flashblend coronas\n", '8 8 0', '1 1 1', 1); i+=1i;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "c: does not cast shadows\n", '8 8 0', '1 1 1', 1); i+=1i;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "s: shadowmapped light\n", '8 8 0', '1 1 1', 1); i+=1i;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "r: crepuscular rays\n", '8 8 0', '1 1 1', 1); i+=1i;
|
||||
}
|
||||
else
|
||||
{
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "+/- change selected light\n", '8 8 0', '1 1 1', 1); i+=1;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "mouse also selects lights\n", '8 8 0', '1 1 1', 1); i+=1;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "m moves the light to the crosshair\n", '8 8 0', '1 1 1', 1); i+=1;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "i inserts new light\n", '8 8 0', '1 1 1', 1); i+=1;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "p points the light to aim at the crosshair\n", '8 8 0', '1 1 1', 1); i+=1;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "[ and ] move the light towards/away from indicated plane\n", '8 8 0', '1 1 1', 1); i+=1;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "don't forget to save\n", '8 8 0', '1 1 1', 1); i+=1;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "+/- change selected light\n", '8 8 0', '1 1 1', 1); i+=1i;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "mouse also selects lights\n", '8 8 0', '1 1 1', 1); i+=1i;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "m moves the light to the crosshair\n", '8 8 0', '1 1 1', 1); i+=1i;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "i inserts new light\n", '8 8 0', '1 1 1', 1); i+=1i;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "@ changes the light's radius\n", '8 8 0', '1 1 1', 1); i+=1i;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "# changes the light's shadow flag\n", '8 8 0', '1 1 1', 1); i+=1i;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "p points the light to aim at the crosshair\n", '8 8 0', '1 1 1', 1); i+=1i;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "[ and ] move the light towards/away from indicated plane\n", '8 8 0', '1 1 1', 1); i+=1i;
|
||||
drawrawstring('0 32 0' + '0 8 0' * (float)i, "don't forget to save\n", '8 8 0', '1 1 1', 1); i+=1i;
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -233,7 +265,7 @@ float(float keyc, float unic, vector m) editor_lights_key =
|
|||
vector t = unproject(m + '0 0 8192');
|
||||
vector o = unproject(m);
|
||||
string ns;
|
||||
if (keyc == 512)
|
||||
if (keyc == 512 || (!editfield && unic == 13 && m_x < 64))
|
||||
{
|
||||
if (editfield)
|
||||
{
|
||||
|
@ -242,12 +274,40 @@ float(float keyc, float unic, vector m) editor_lights_key =
|
|||
editfield = 0;
|
||||
}
|
||||
editfield = floor((m_y - 32f) / 8f);
|
||||
if (editfield <= 0 || editfield > NUMLFIELDS || m_x >= 64)
|
||||
if (editfield <= 0 || editfield > NUMLFIELDS+NUMCMDS || m_x >= 64)
|
||||
{
|
||||
editfield = 0;
|
||||
|
||||
selectbestlight(t - o, o);
|
||||
}
|
||||
else if (editfield > NUMLFIELDS)
|
||||
{
|
||||
switch(editfield - (NUMLFIELDS+1))
|
||||
{
|
||||
case 0:
|
||||
localcmd("r_editlights_save\n");
|
||||
break;
|
||||
case 1:
|
||||
localcmd("toggle r_shadow_realtime_world\n");
|
||||
break;
|
||||
case 2:
|
||||
localcmd("toggle r_shadow_realtime_dynamic\n");
|
||||
break;
|
||||
case 3:
|
||||
helphidden = !helphidden;
|
||||
break;
|
||||
case 4:
|
||||
localcmd("r_editlights_reload none\n");
|
||||
break;
|
||||
case 5:
|
||||
localcmd("r_editlights_reload bsp\n");
|
||||
break;
|
||||
case 6:
|
||||
localcmd("r_editlights_reload\n");
|
||||
break;
|
||||
}
|
||||
editfield = 0;
|
||||
}
|
||||
else
|
||||
editvalue = strzone(readfield(editfield, 1));
|
||||
}
|
||||
|
@ -277,27 +337,27 @@ float(float keyc, float unic, vector m) editor_lights_key =
|
|||
|
||||
writefield(editfield, ns);
|
||||
}
|
||||
else if (keyc >= '0' && keyc <= '9')
|
||||
else if (unic >= '0' && unic <= '9')
|
||||
{
|
||||
editfield = keyc - '0';
|
||||
editfield = unic - '0';
|
||||
editvalue = strzone(readfield(editfield, 1));
|
||||
}
|
||||
else if (keyc == '=')
|
||||
else if (unic == '=')
|
||||
selectedlight++;
|
||||
else if (keyc == '-')
|
||||
else if (unic == '-')
|
||||
selectedlight--;
|
||||
else if (keyc == 'n')
|
||||
else if (unic == 'n' || unic == 'N')
|
||||
localcmd("noclip\n");
|
||||
// else if (keyc == 's')
|
||||
// else if (unic == 's' || unic == 'S')
|
||||
// {
|
||||
// selectbestlight(t - o, o);
|
||||
// }
|
||||
else if (keyc == 'm')
|
||||
else if (unic == 'm' || unic == 'M')
|
||||
{
|
||||
traceline(o, t, TRUE, world);
|
||||
dynamiclight_set(selectedlight, LFIELD_ORIGIN, trace_endpos + trace_plane_normal*4);
|
||||
}
|
||||
else if (keyc == 'p')
|
||||
else if (unic == 'p' || unic == 'P')
|
||||
{
|
||||
traceline(o, t, TRUE, world);
|
||||
vector ang = vectoangles((trace_endpos + trace_plane_normal*4f) - (vector)dynamiclight_get(selectedlight, LFIELD_ORIGIN));
|
||||
|
@ -305,10 +365,10 @@ float(float keyc, float unic, vector m) editor_lights_key =
|
|||
dynamiclight_set(selectedlight, LFIELD_ANGLES, ang);
|
||||
|
||||
/*if we're pointing the light at something, it should probably have a fov*/
|
||||
if (!(float)dynamiclight_get(selectedlight, LFIELD_ORIGIN))
|
||||
if (!(float)dynamiclight_get(selectedlight, LFIELD_FOV))
|
||||
dynamiclight_set(selectedlight, LFIELD_FOV, 90);
|
||||
}
|
||||
else if (keyc == 'i')
|
||||
else if (unic == 'i' || unic == 'I')
|
||||
{
|
||||
for (selectedlight = 32; ; selectedlight++)
|
||||
{
|
||||
|
@ -321,6 +381,9 @@ float(float keyc, float unic, vector m) editor_lights_key =
|
|||
dynamiclight_set(selectedlight, LFIELD_STYLE, 0);
|
||||
dynamiclight_set(selectedlight, LFIELD_ANGLES, '0 0 0');
|
||||
dynamiclight_set(selectedlight, LFIELD_FLAGS, LFLAG_REALTIMEMODE);
|
||||
dynamiclight_set(selectedlight, LFIELD_AMBIENTSCALE, autocvar_r_editlights_import_ambient);
|
||||
dynamiclight_set(selectedlight, LFIELD_DIFFUSESCALE, autocvar_r_editlights_import_diffuse);
|
||||
dynamiclight_set(selectedlight, LFIELD_SPECULARSCALE, autocvar_r_editlights_import_specular);
|
||||
|
||||
/*place it at the pointed location*/
|
||||
traceline(o, t, TRUE, world);
|
||||
|
@ -329,19 +392,39 @@ float(float keyc, float unic, vector m) editor_lights_key =
|
|||
}
|
||||
}
|
||||
}
|
||||
else if (keyc == '[')
|
||||
else if (unic == '[')
|
||||
{
|
||||
o = getproperty(11);
|
||||
traceline(o, t, TRUE, world);
|
||||
dynamiclight_set(selectedlight, LFIELD_ORIGIN, dynamiclight_get(selectedlight, LFIELD_ORIGIN) - trace_plane_normal);
|
||||
}
|
||||
else if (keyc == ']')
|
||||
else if (unic == ']')
|
||||
{
|
||||
o = getproperty(11);
|
||||
traceline(o, t, TRUE, world);
|
||||
dynamiclight_set(selectedlight, LFIELD_ORIGIN, dynamiclight_get(selectedlight, LFIELD_ORIGIN) + trace_plane_normal);
|
||||
}
|
||||
else if (keyc == 127)
|
||||
else if (unic == '\'' || unic == '@')
|
||||
{
|
||||
o = getproperty(11);
|
||||
traceline(o, t, TRUE, world);
|
||||
dynamiclight_set(selectedlight, LFIELD_RADIUS, 1.5*vlen(trace_endpos - dynamiclight_get(selectedlight, LFIELD_ORIGIN)));
|
||||
}
|
||||
else if (unic == '#')
|
||||
{
|
||||
float fl;
|
||||
fl = dynamiclight_get(selectedlight, LFIELD_FLAGS);
|
||||
if (fl & LFLAG_NOSHADOWS)
|
||||
fl -= LFLAG_NOSHADOWS;
|
||||
else
|
||||
fl += LFLAG_NOSHADOWS;
|
||||
dynamiclight_set(selectedlight, LFIELD_FLAGS, (float)fl);
|
||||
}
|
||||
else if (unic == '{')
|
||||
dynamiclight_set(selectedlight, LFIELD_RADIUS, dynamiclight_get(selectedlight, LFIELD_RADIUS) - 15);
|
||||
else if (unic == '}')
|
||||
dynamiclight_set(selectedlight, LFIELD_RADIUS, dynamiclight_get(selectedlight, LFIELD_RADIUS) + 15);
|
||||
else if (unic == 127)
|
||||
dynamiclight_set(selectedlight, LFIELD_RADIUS, 0);
|
||||
else
|
||||
return FALSE;
|
||||
|
|
|
@ -17,27 +17,31 @@ enum
|
|||
ter_water_set = 14, //lower the terrain in a bell (negative value to raise)
|
||||
ter_mesh_add = 15, //add a mesh
|
||||
ter_mesh_kill = 16, //remove meshes within the radius
|
||||
|
||||
|
||||
ter_tint = 17, //pants new colour modifiers/tints
|
||||
ter_height_flatten, //smooth the heights slightly (non-destructive), such that the middle becomes flatter faster than the edges
|
||||
|
||||
ter_blank,
|
||||
ter_radius,
|
||||
ter_quant,
|
||||
ter_strength,
|
||||
ter_mesh,
|
||||
ter_tintval,
|
||||
ter_tex,
|
||||
ter_count
|
||||
};
|
||||
static var float eradius = 256;
|
||||
static var float equant = 8;
|
||||
static var float epercent = 80;
|
||||
static var float epercent = 40;
|
||||
static string tex[8];
|
||||
static var string tint[8] = {"1 1 1", "1.2 0.9 0.9", "0 1 0"};
|
||||
static string meshname;
|
||||
static float curtool;
|
||||
static int painttex;
|
||||
static float mautorepeattime;
|
||||
static entity tempent;
|
||||
|
||||
float autocvar_mod_terrain_networked;
|
||||
|
||||
vector vidsize;
|
||||
float mousedown;
|
||||
|
||||
|
@ -60,6 +64,7 @@ static string toolname[ter_count] =
|
|||
"water set",
|
||||
"mesh add",
|
||||
"mesh kill",
|
||||
"mesh tint",
|
||||
"",
|
||||
"rad",
|
||||
"quant",
|
||||
|
@ -80,24 +85,45 @@ void(vector m) editor_do =
|
|||
t = o + normalize(t)*8192;
|
||||
traceline(o, t, TRUE, world);
|
||||
|
||||
self = world;
|
||||
|
||||
switch(curtool)
|
||||
{
|
||||
case ter_reload:
|
||||
case ter_save:
|
||||
mautorepeattime = 0; //don't autorepeat that...
|
||||
if (autocvar_mod_terrain_networked)
|
||||
sendevent("teredit", "f", curtool);
|
||||
else
|
||||
{
|
||||
if (curtool == ter_save)
|
||||
print("Saving...\n");
|
||||
else if (curtool == ter_reload)
|
||||
print("Reloading...\n");
|
||||
terrain_edit(curtool);
|
||||
}
|
||||
break;
|
||||
case ter_sethole: //use view center instead of targetted - you cannot target that which is not there
|
||||
if (autocvar_mod_terrain_networked)
|
||||
sendevent("teredit", "fvff", curtool, trace_endpos, eradius, equant);
|
||||
else
|
||||
terrain_edit(curtool, trace_endpos, eradius, equant);
|
||||
break;
|
||||
|
||||
case ter_height_smooth:
|
||||
case ter_height_spread:
|
||||
if (autocvar_mod_terrain_networked)
|
||||
sendevent("teredit", "fvff", curtool, trace_endpos, eradius, epercent/100.0);
|
||||
else
|
||||
terrain_edit(curtool, trace_endpos, eradius, epercent/100.0);
|
||||
break;
|
||||
case ter_height_set:
|
||||
case ter_height_smooth:
|
||||
case ter_height_raise:
|
||||
case ter_height_lower:
|
||||
if (autocvar_mod_terrain_networked)
|
||||
sendevent("teredit", "fvff", curtool, trace_endpos, eradius, equant);
|
||||
else
|
||||
terrain_edit(curtool, trace_endpos, eradius, equant);
|
||||
break;
|
||||
case ter_tex_get:
|
||||
|
@ -114,21 +140,40 @@ void(vector m) editor_do =
|
|||
// terrain_edit(curtool, trace_endpos, eradius, equant, emix);
|
||||
// break;
|
||||
case ter_mixpaint:
|
||||
if (autocvar_mod_terrain_networked)
|
||||
sendevent("teredit", "fvffs", curtool, trace_endpos, eradius, epercent/100.0, tex[painttex]);
|
||||
else
|
||||
terrain_edit(curtool, trace_endpos, eradius, epercent/100.0, tex[painttex]);
|
||||
break;
|
||||
case ter_tex_kill:
|
||||
if (autocvar_mod_terrain_networked)
|
||||
sendevent("teredit", "fvffs", curtool, trace_endpos, eradius, equant, tex[painttex]);
|
||||
else
|
||||
terrain_edit(curtool, trace_endpos, eradius, equant, tex[painttex]);
|
||||
break;
|
||||
case ter_mixconcentrate:
|
||||
case ter_mixnoise:
|
||||
case ter_mixblur:
|
||||
if (autocvar_mod_terrain_networked)
|
||||
sendevent("teredit", "fvff", curtool, trace_endpos, eradius, equant);
|
||||
else
|
||||
terrain_edit(curtool, trace_endpos, eradius, equant);
|
||||
break;
|
||||
|
||||
case ter_tint:
|
||||
if (autocvar_mod_terrain_networked)
|
||||
sendevent("teredit", "fvffvf", curtool, trace_endpos, eradius, epercent/100.0, stov(tint[painttex]), 1);
|
||||
else
|
||||
terrain_edit(curtool, trace_endpos, eradius, epercent/100.0, stov(tint[painttex]), 1);
|
||||
break;
|
||||
|
||||
case ter_mesh_add:
|
||||
terrain_edit(curtool, tempent);
|
||||
break;
|
||||
case ter_mesh_kill:
|
||||
if (autocvar_mod_terrain_networked)
|
||||
sendevent("teredit", "fvf", curtool, trace_endpos, eradius);
|
||||
else
|
||||
terrain_edit(curtool, trace_endpos, eradius);
|
||||
break;
|
||||
}
|
||||
|
@ -148,11 +193,20 @@ float(float keyc, float unic, vector m) editor_terrain_key =
|
|||
txt = itos((int)epercent);
|
||||
if (curtool == ter_mesh)
|
||||
txt = meshname;
|
||||
if (curtool == ter_tintval)
|
||||
txt = tint[painttex];
|
||||
if (curtool == ter_tex)
|
||||
txt = tex[painttex];
|
||||
|
||||
if (keyc == 10 || keyc == 13)
|
||||
{
|
||||
if (curtool == ter_mesh)
|
||||
nt = ter_mesh_add;
|
||||
else if (curtool == ter_tintval)
|
||||
nt = ter_tint;
|
||||
else
|
||||
nt = ter_mixpaint;
|
||||
}
|
||||
else if (keyc == 127)
|
||||
txt = substring(txt, 0, -2);
|
||||
else if (keyc == 8)
|
||||
|
@ -178,6 +232,12 @@ float(float keyc, float unic, vector m) editor_terrain_key =
|
|||
strunzone(tex[painttex]);
|
||||
tex[painttex] = txt;
|
||||
}
|
||||
if (curtool == ter_tintval)
|
||||
{
|
||||
txt = strzone(txt);
|
||||
strunzone(tint[painttex]);
|
||||
tint[painttex] = txt;
|
||||
}
|
||||
|
||||
curtool = nt;
|
||||
}
|
||||
|
@ -222,7 +282,6 @@ float(float keyc, float unic, vector m) editor_terrain_key =
|
|||
}
|
||||
else
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
else if (unic == '[')
|
||||
equant -= 1;
|
||||
|
@ -250,6 +309,12 @@ float(float keyc, float unic, vector m) editor_terrain_key =
|
|||
painttex = 7;
|
||||
else
|
||||
return FALSE;
|
||||
|
||||
if (curtool == ter_save || curtool == ter_reload)
|
||||
{
|
||||
editor_do('0 0 0');
|
||||
curtool = -1;
|
||||
}
|
||||
return TRUE;
|
||||
};
|
||||
|
||||
|
@ -378,6 +443,8 @@ void(vector mousepos) editor_terrain_overlay =
|
|||
drawpic(pos + '0 8 0', tex[painttex], '128 128 0', '1 1 1', 1);
|
||||
|
||||
}
|
||||
else if (i == ter_tintval)
|
||||
drawstring(pos, sprintf("Tint%1i: %s", painttex, tint[painttex]), '8 8 0', colour, 1, 0);
|
||||
else
|
||||
drawstring(pos, toolname[i], '8 8 0', colour, 1, 0);
|
||||
pos_y += 8;
|
||||
|
|
|
@ -57,7 +57,7 @@ void(menu_t *menu, string fieldname, vector pos, float *value, float minv, float
|
|||
{
|
||||
if (mousepos_y >= pos_y && mousepos_y < pos_y + 8 && render_only == 0)
|
||||
{
|
||||
col_x = (sin(time*3.14)+1) / 2;
|
||||
col_x = (sin(cltime*3.14)+1) / 2;
|
||||
col_y = col_x;
|
||||
col_z = 1;
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ void(menu_t *menu, string fieldname, vector pos, float *value, float minv, float
|
|||
drawstring(spos, "^Ue080^Ue081^Ue081^Ue081^Ue081^Ue081^Ue081^Ue081^Ue081^Ue081^Ue082", '8 8 0', '1 1 1', 1, 0);
|
||||
if (!(menu->flags & MF_DS_VALUE))
|
||||
drawstring(spos + '88 0', ftos(f), '8 8 0', col, 1, 0);
|
||||
spos_x += 9*8*(f - minv) / (maxv - minv);
|
||||
spos_x += 4 + 9*8*(f - minv) / (maxv - minv);
|
||||
drawstring(spos, "^Ue083", '8 8 0', '1 1 1', 1, 0);
|
||||
}
|
||||
else if (mousepos_y >= pos_y && mousepos_y < pos_y + 8)
|
||||
|
@ -133,7 +133,7 @@ void(menu_t *menu, string fieldname, vector pos, float *value) sliderf_fixed_wid
|
|||
{
|
||||
if (cursor_in_widget(pos, epos, mousepos) && render_only == 0)
|
||||
{
|
||||
col_x = (sin(time*3.14)+1) / 2;
|
||||
col_x = (sin(cltime*3.14)+1) / 2;
|
||||
col_y = col_x;
|
||||
col_z = 1;
|
||||
}
|
||||
|
@ -209,7 +209,7 @@ void(menu_t *menu, string fieldname, vector pos, int *value, int minv, int maxv)
|
|||
{
|
||||
if (mousepos_y >= pos_y && mousepos_y < pos_y + 8 && render_only == 0)
|
||||
{
|
||||
col_x = (sin(time*3.14)+1) / 2;
|
||||
col_x = (sin(cltime*3.14)+1) / 2;
|
||||
col_y = col_x;
|
||||
col_z = 1;
|
||||
}
|
||||
|
@ -261,7 +261,7 @@ void(string fieldname, vector pos, vector *mousepos_in, float *value, float key)
|
|||
{
|
||||
if (mousepos_y >= pos_y && mousepos_y < pos_y + 8 && render_only == 0)
|
||||
{
|
||||
col_x = (sin(time*3.14)+1) / 2;
|
||||
col_x = (sin(cltime*3.14)+1) / 2;
|
||||
col_y = col_x;
|
||||
col_z = 1;
|
||||
}
|
||||
|
@ -309,7 +309,7 @@ void(menu_t *menu, string fieldname, vector pos, int *value) checkboxi_widgit =
|
|||
{
|
||||
if (cursor_in_widget(pos, epos, mousepos) && render_only == 0)
|
||||
{
|
||||
col_x = (sin(time*3.14)+1) / 2;
|
||||
col_x = (sin(cltime*3.14)+1) / 2;
|
||||
col_y = col_x;
|
||||
col_z = 1;
|
||||
}
|
||||
|
@ -354,7 +354,7 @@ int (menu_t *menu, string fieldname, vector pos) button_widget =
|
|||
{
|
||||
if (cursor_in_widget(pos, epos, mousepos) && render_only == 0)
|
||||
{
|
||||
col_x = (sin(time*3.14)+1) / 2;
|
||||
col_x = (sin(cltime*3.14)+1) / 2;
|
||||
col_y = col_x;
|
||||
col_z = 1;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue