VGUI-Menu: friendList, chat backend, textview class proto SurfaceProps: Flesh impacts recognition PropData: BreakModels now use a bodyque to limit possible physics overhead PMove: falldamage, liquids can now be configured via external decl NSWeapon: added alternative punchangle based on springs, 'punchSpring X Y Z' in decl API: Team class management APIS NSPhysicsEntity: Optimised, optimised, optimised. New cvar: phys_lowspec. Scraping, impact effects etc have been added. More polish everywhere else
182 lines
3.8 KiB
Bash
Executable file
182 lines
3.8 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
# takes one argument: path to .def file
|
|
ed_for_def()
|
|
{
|
|
printf -- "" > "/tmp/def_name"
|
|
printf -- "" > "/tmp/def_color"
|
|
printf -- "" > "/tmp/def_mins"
|
|
printf -- "" > "/tmp/def_mins"
|
|
printf -- "" > "/tmp/def_maxs"
|
|
printf -- "" > "/tmp/def_usage"
|
|
printf -- "" > "/tmp/def_model"
|
|
|
|
{ cat "$1"; echo; } | while read LINE
|
|
do
|
|
SEG1=$(echo "$LINE" | awk '{ print $1 }')
|
|
SEG2=$(echo "$LINE" | awk '{ print $2 }')
|
|
KEY="$(echo "$LINE" | awk -F"\"" '{ print $2 }')"
|
|
VAL="$(echo "$LINE" | awk -F"\"" '{ print $4 }')"
|
|
|
|
if [ "$KEY" = "entityDef" ]
|
|
then
|
|
printf -- "$VAL" > "/tmp/def_name"
|
|
fi
|
|
|
|
if [ "$SEG1" = "entityDef" ]
|
|
then
|
|
printf -- "$SEG2" > "/tmp/def_name"
|
|
fi
|
|
|
|
if [ "$KEY" = "editor_color" ]
|
|
then
|
|
printf -- "$VAL" > "/tmp/def_color"
|
|
fi
|
|
|
|
if [ "$KEY" = "editor_mins" ]
|
|
then
|
|
printf -- "$VAL" > "/tmp/def_mins"
|
|
fi
|
|
|
|
if [ "$KEY" = "editor_maxs" ]
|
|
then
|
|
printf -- "$VAL" > "/tmp/def_maxs"
|
|
fi
|
|
|
|
if [ "$KEY" = "mins" ]
|
|
then
|
|
if [ -z "$(cat /tmp/def_mins)" ]
|
|
then
|
|
printf -- "$VAL" > "/tmp/def_mins"
|
|
fi
|
|
fi
|
|
|
|
if [ "$KEY" = "maxs" ]
|
|
then
|
|
if [ -z "$(cat /tmp/def_maxs)" ]
|
|
then
|
|
printf -- "$VAL" > "/tmp/def_maxs"
|
|
fi
|
|
fi
|
|
|
|
if [ "$KEY" = "editor_usage" ]
|
|
then
|
|
printf -- "$VAL" > "/tmp/def_usage"
|
|
fi
|
|
|
|
if [ "$KEY" = "netname" ]
|
|
then
|
|
if [ -z "$(cat /tmp/def_usage)" ]
|
|
then
|
|
printf -- "$VAL" > "/tmp/def_usage"
|
|
fi
|
|
fi
|
|
|
|
if [ "$KEY" = "editor_model" ]
|
|
then
|
|
printf -- "$VAL" > "/tmp/def_model"
|
|
fi
|
|
|
|
if [ "$KEY" = "model" ]
|
|
then
|
|
if [ -z "$(cat /tmp/def_model)" ]
|
|
then
|
|
printf -- "$VAL" > "/tmp/def_model"
|
|
fi
|
|
fi
|
|
|
|
if [ "$SEG1" = "}" ]
|
|
then
|
|
KEY_NAME="$(cat /tmp/def_name)"
|
|
KEY_COLOR="$(cat /tmp/def_color)"
|
|
KEY_MINS="$(cat /tmp/def_mins)"
|
|
KEY_MAXS="$(cat /tmp/def_maxs)"
|
|
KEY_USAGE="$(cat /tmp/def_usage)"
|
|
KEY_MODEL="$(cat /tmp/def_model)"
|
|
|
|
# reset defaults
|
|
printf -- "" > "/tmp/def_name"
|
|
printf -- "" > "/tmp/def_color"
|
|
printf -- "" > "/tmp/def_mins"
|
|
printf -- "" > "/tmp/def_mins"
|
|
printf -- "" > "/tmp/def_maxs"
|
|
printf -- "" > "/tmp/def_usage"
|
|
printf -- "" > "/tmp/def_model"
|
|
|
|
if [ -z "$KEY_NAME" ]
|
|
then
|
|
exit 0
|
|
fi
|
|
|
|
if [ -z "$KEY_COLOR" ]
|
|
then
|
|
exit 0
|
|
fi
|
|
|
|
# no mins/maxs
|
|
if [ -z "$KEY_MINS" ]
|
|
then
|
|
printf "/*QUAKED $KEY_NAME ($KEY_COLOR) ?\n"
|
|
else
|
|
printf "/*QUAKED $KEY_NAME ($KEY_COLOR) ($KEY_MINS) ($KEY_MAXS)\n"
|
|
fi
|
|
|
|
printf "$KEY_USAGE\n"
|
|
|
|
# no model
|
|
if [ ! -z "$KEY_MODEL" ]
|
|
then
|
|
printf -- "-------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY --------\n"
|
|
printf "model=\"$KEY_MODEL\"\n"
|
|
fi
|
|
|
|
printf "*/\n"
|
|
fi
|
|
done
|
|
}
|
|
|
|
ent_for_mod()
|
|
{
|
|
# don't bother if we don't have sources
|
|
if ! [ -f "./$1/src/Makefile" ]; then
|
|
exit
|
|
fi
|
|
|
|
mkdir -p "./$1/scripts"
|
|
ENT_OUTFILE="./$1/scripts/entities.def"
|
|
echo '' > "$ENT_OUTFILE"
|
|
|
|
echo "Scanning for definitions inside the game directory."
|
|
find ./$1/src/ -type f \( -iname \*.qc \) | while read EDEF_N; do
|
|
echo "... $EDEF_N"
|
|
sed -n '/\/*!QUAKED/,/*\//p' $EDEF_N >> "$ENT_OUTFILE"
|
|
# fix doxygen markup
|
|
done;
|
|
|
|
sed -i 's/*!QUAKED/*QUAKED/g' "$ENT_OUTFILE"
|
|
|
|
find ./$1/ -type f \( -iname \*.def \) | grep "decls/def" | while read EDEF_N; do
|
|
echo "parsing decl $EDEF_N..."
|
|
ed_for_def "$EDEF_N" >> "$ENT_OUTFILE"
|
|
done;
|
|
|
|
cat ./Tools/base_entities.def >> $ENT_OUTFILE
|
|
}
|
|
|
|
# first dump all the general purpose entities
|
|
BASE_ENT="./Tools/base_entities.def"
|
|
echo '' > "$BASE_ENT"
|
|
|
|
echo "Scanning for definitions inside the general entity codebase."
|
|
find ./src/gs-entbase/ -type f \( -iname \*.qc \) | while read EDEF_N; do
|
|
echo "... $EDEF_N"
|
|
sed -n '/\/*!QUAKED/,/*\//p' $EDEF_N >> "$BASE_ENT"
|
|
# fix doxygen markup
|
|
done;
|
|
|
|
sed -i 's/*!QUAKED/*QUAKED/g' "$BASE_ENT"
|
|
|
|
# each game gets its own ents + general purpose ents appended at the end
|
|
if [ $# -gt 0 ]; then
|
|
ent_for_mod $1
|
|
fi
|