242 lines
6.6 KiB
INI
242 lines
6.6 KiB
INI
///////////////////////////////////////////////////////////////////////////////
|
|
// Entity primary actions //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
=enttype = [|| (=s * $arg1) [=s (enttype) $arg1]]
|
|
|
|
=entattr = [|| (=s * $arg2) [= (entattr $arg1) $arg2]]
|
|
|
|
// clear ents of given type
|
|
clearents = [
|
|
if $editing [
|
|
entcancel
|
|
entselect [=enttype $arg1]
|
|
echo Deleted (enthavesel) $arg1 entities
|
|
delent
|
|
]
|
|
]
|
|
|
|
// replace all ents that match current selection
|
|
// with the values given
|
|
replaceents = [
|
|
if $editing [
|
|
do [
|
|
entfind @(entget)
|
|
entset @(loopconcat+ i 1 $numargs [result $[arg@i]])
|
|
]
|
|
echo Replaced (enthavesel) entities
|
|
]
|
|
]
|
|
|
|
selentedit = [saycommand (concatword "/entset " (entget))]
|
|
selreplaceents = [saycommand (concatword "/replaceents " (entget))]
|
|
selentfindall = [do [entfind @(entget)]]
|
|
|
|
// modify given attribute of ent by a given amount
|
|
// arg1 attribute
|
|
// arg2 value
|
|
entproperty = [entattr $arg1 (+ (entattr $arg1) $arg2)]
|
|
|
|
enttypelist = [
|
|
light mapmodel playerstart envmap particles sound spotlight decal
|
|
teleport teledest jumppad
|
|
flag
|
|
]
|
|
|
|
enttypeselect = [
|
|
enttypelength = (listlen $enttypelist)
|
|
next = (mod (+ (indexof $enttypelist (enttype)) $arg1) $enttypelength)
|
|
if (< $next 0) [ next = (+ $next $enttypelength) ]
|
|
do [entset @(listsplice (entget) (at $enttypelist $next) 0 1)]
|
|
]
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// Copy & Paste //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
// 3 types of copying and pasting
|
|
// 1. select only cubes -> paste only cubes
|
|
// 2. select cubes and ents -> paste cubes and ents. same relative positions
|
|
// 3. select only ents -> paste last selected ent. if ents are selected, replace attrs as paste
|
|
|
|
opaquepaste = 1
|
|
entcopymode = 0
|
|
|
|
editcopy = [
|
|
if (|| (havesel) [! (enthavesel)]) [
|
|
entcopymode = 0
|
|
entcopy
|
|
copy
|
|
] [
|
|
entcopymode = 1
|
|
entcopy
|
|
]
|
|
]
|
|
|
|
editpaste = [
|
|
cancelpaste = (! (|| (enthavesel) [havesel]));
|
|
if $entcopymode [
|
|
entreplace
|
|
if $cancelpaste [cancelsel]
|
|
] [
|
|
pastehilite
|
|
reorient // temp; real fix will be in octaedit
|
|
onrelease [
|
|
if $opaquepaste delcube
|
|
paste; entpaste
|
|
if $cancelpaste [cancelsel]
|
|
]
|
|
]
|
|
]
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// Selection //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
// select ents with given properties
|
|
// '*' is wildcard
|
|
entfind = [
|
|
if $numargs [
|
|
entselect (concat [&& [=enttype @@arg1]] (loopconcat i (- $numargs 1) [
|
|
result [[=entattr @@i @@[arg@(+ $i 2)]]]
|
|
]))
|
|
] [entselect 1]
|
|
]
|
|
|
|
entfindinsel = [
|
|
if $numargs [
|
|
entselect (concat [&& insel [=enttype @@arg1]] (loopconcat i (- $numargs 1) [
|
|
result [[=entattr @@i @@[arg@(+ $i 2)]]]
|
|
]))
|
|
] [entselect insel]
|
|
]
|
|
|
|
drag = [dragging 1; onrelease [dragging 0]]
|
|
corners = [selectcorners 1; dragging 1; onrelease [selectcorners 0; dragging 0]]
|
|
editmove = [moving 1; onrelease [moving 0]; result $moving]
|
|
entdrag = [entmoving 1; onrelease [entmoving 0]; result $entmoving]
|
|
editdrag = [cancelsel; || (entdrag) [drag]]
|
|
selcorners = [if $hmapedit [hmapselect] [cancelsel; || (entdrag) [corners]]]
|
|
editextend = [|| (entdrag) [if (havesel) [selextend; reorient; editmovecut] [drag]]]
|
|
|
|
editmovewith = [
|
|
if (havesel) [
|
|
|| (editmove) [arg1]
|
|
onrelease [moving 0; dragging 0]
|
|
] [
|
|
arg1
|
|
]
|
|
]
|
|
|
|
editmovecorner = [editmovewith selcorners]
|
|
editmovedrag = [editmovewith editdrag]
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// Miscellaneous Editing Commands //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
editfacewsel = [
|
|
if (|| havesel [! (enthavesel)]) [
|
|
if $moving [pushsel $arg1] [
|
|
entcancel
|
|
editface $arg1 $arg2
|
|
]
|
|
]
|
|
]
|
|
|
|
entswithdirection = [playerstart teledest mapmodel decal]
|
|
entdirectionprop = [0 0 1 1 ]
|
|
|
|
entdirection = [
|
|
if (&& (enthavesel) [= (havesel) 0]) [
|
|
entdiridx = (indexof $entswithdirection (enttype))
|
|
if (>= $entdiridx 0) [
|
|
entdirprop = (at $entdirectionprop $entdiridx)
|
|
if (> $arg1 0) [
|
|
entproperty $entdirprop $arg2
|
|
if (> (entattr $entdirprop) 360) [entproperty $entdirprop -360]
|
|
] [
|
|
entproperty $entdirprop (- 0 $arg2)
|
|
if (< (entattr $entdirprop) 0) [entproperty $entdirprop 360]
|
|
]
|
|
]
|
|
result 1
|
|
] [
|
|
result 0
|
|
]
|
|
]
|
|
|
|
selmovecut = 1
|
|
toggleeditmovecut = [
|
|
selmovecut = (! $selmovecut)
|
|
echo (? $selmovecut "Move Selection" "Cut Selection")
|
|
]
|
|
editmovecut = [
|
|
if $selmovecut [editmove] [editcut]
|
|
]
|
|
|
|
editdel = [if (! (enthavesel)) [delcube]; delent]
|
|
editflip = [flip; entflip]
|
|
editrotate = [|| (entdirection $arg1 15) [rotate $arg1; entrotate $arg1]]
|
|
editcut = [
|
|
if (moving 1) [
|
|
if (= $moving 1) [selsave]
|
|
onrelease [
|
|
moving 0
|
|
if (selmoved) [
|
|
selswap
|
|
copy; entcopy
|
|
delcube; delent
|
|
selrestore
|
|
paste; entpaste
|
|
]
|
|
]
|
|
]
|
|
]
|
|
|
|
setting_entediting = 1
|
|
|
|
passthrough = [
|
|
passthroughsel $arg1;
|
|
if $arg1 [
|
|
passthroughcube_bak = $passthroughcube
|
|
passthroughcube 1
|
|
] [
|
|
passthroughcube $passthroughcube_bak
|
|
]
|
|
entcancel
|
|
if $setting_entediting [entediting (! $arg1)]
|
|
]
|
|
|
|
entcomplete = [listcomplete $arg1 $enttypelist]
|
|
entcomplete newent
|
|
entcomplete entfind
|
|
entcomplete clearents
|
|
|
|
listcomplete editmat "air water clip glass noclip lava gameclip death nogi alpha"
|
|
air = [ editmat air $arg1 ]
|
|
looplist i ["" 2 3 4] [
|
|
[water@i] = [editmat water@i $arg1]
|
|
[lava@i] = [editmat lava@i $arg1]
|
|
[glass@i] = [editmat glass@i $arg1]
|
|
]
|
|
clip = [editmat clip $arg1]
|
|
noclip = [editmat noclip $arg1]
|
|
gameclip = [editmat gameclip $arg1]
|
|
death = [editmat death $arg1]
|
|
nogi = [editmat nogi $arg1]
|
|
alpha = [editmat alpha $arg1]
|
|
|
|
blendpaintmodes = ["off" "replace" "dig" "fill" "inverted dig" "inverted fill"]
|
|
|
|
minimaphere = [minimapheight (at (getcampos) 2)]
|
|
|
|
getsundir = [sunlightyaw (getcamyaw); sunlightpitch (getcampitch)]
|
|
|
|
defvarp editfloatspeed 1 1000 10000
|
|
|
|
makeitsnow = [newent particles 13 364 70 0xAAA 550] // derp
|