From 3023af8223bd7c40941f5881b25f82b9d167160b Mon Sep 17 00:00:00 2001
From: Major Cooke <paul.growney22@gmail.com>
Date: Sat, 17 Dec 2016 12:46:40 -0600
Subject: [PATCH] - Added A_SetSize(double newradius, double newheight = -1). -
 Changes the calling actor's radius and height.

---
 src/p_actionfunctions.cpp       | 16 ++++++++++++++++
 wadsrc/static/zscript/actor.txt |  1 +
 2 files changed, 17 insertions(+)

diff --git a/src/p_actionfunctions.cpp b/src/p_actionfunctions.cpp
index 6ddfd5281..8c222a4f6 100644
--- a/src/p_actionfunctions.cpp
+++ b/src/p_actionfunctions.cpp
@@ -6846,3 +6846,19 @@ DEFINE_ACTION_FUNCTION(AActor, A_CheckTerrain)
 	}
 	return 0;
 }
+
+DEFINE_ACTION_FUNCTION(AActor, A_SetSize)
+{
+	PARAM_SELF_PROLOGUE(AActor);
+	PARAM_FLOAT(newradius);
+	PARAM_FLOAT_DEF(newheight);
+
+	if (newradius < 0.)		newradius = self->radius;
+	if (newheight < 0.)		newheight = self->Height;
+
+	self->UnlinkFromWorld();
+	self->radius = newradius;
+	self->Height = newheight;
+	self->LinkToWorld();
+	return 0;
+}
diff --git a/wadsrc/static/zscript/actor.txt b/wadsrc/static/zscript/actor.txt
index d804a434c..2a5d8c53d 100644
--- a/wadsrc/static/zscript/actor.txt
+++ b/wadsrc/static/zscript/actor.txt
@@ -793,6 +793,7 @@ class Actor : Thinker native
 	native bool A_CopySpriteFrame(int from, int to, int flags = 0);
 	native bool A_SetVisibleRotation(double anglestart = 0, double angleend = 0, double pitchstart = 0, double pitchend = 0, int flags = 0, int ptr = AAPTR_DEFAULT);
 	native void A_SetTranslation(name transname);
+	native void A_SetSize(double newradius, double newheight = -1);
 
 	native void A_RearrangePointers(int newtarget, int newmaster = AAPTR_DEFAULT, int newtracer = AAPTR_DEFAULT, int flags=0);
 	native void A_TransferPointer(int ptr_source, int ptr_recepient, int sourcefield, int recepientfield=AAPTR_DEFAULT, int flags=0);