#include "rotating.qh"
#ifdef SVQC
+const int FUNC_ROTATING_STARTOFF = BIT(4);
+
void func_rotating_setactive(entity this, int astate)
{
if (astate == ACTIVE_TOGGLE)
this.avelocity = this.pos1;
}
+void func_rotating_reset(entity this)
+{
+ // TODO: reset angles as well?
+
+ if(this.spawnflags & FUNC_ROTATING_STARTOFF)
+ {
+ this.avelocity = '0 0 0';
+ this.active = ACTIVE_NOT;
+ }
+ else
+ {
+ this.avelocity = this.pos1;
+ this.active = ACTIVE_ACTIVE;
+ }
+}
+
/*QUAKED spawnfunc_func_rotating (0 .5 .8) ? - - X_AXIS Y_AXIS
Brush model that spins in place on one axis (default Z).
speed : speed to rotate (in degrees per second)
ambientsound(this.origin, this.noise, VOL_BASE, ATTEN_IDLE);
}
- this.active = ACTIVE_ACTIVE;
this.setactive = func_rotating_setactive;
if (!this.speed)
this.speed = 100;
// FIXME: test if this turns the right way, then remove this comment (negate as needed)
- if (this.spawnflags & 4) // X (untested)
+ if (this.spawnflags & BIT(2)) // X (untested)
this.avelocity = '0 0 1' * this.speed;
// FIXME: test if this turns the right way, then remove this comment (negate as needed)
- else if (this.spawnflags & 8) // Y (untested)
+ else if (this.spawnflags & BIT(3)) // Y (untested)
this.avelocity = '1 0 0' * this.speed;
// FIXME: test if this turns the right way, then remove this comment (negate as needed)
else // Z
this.pos1 = this.avelocity;
+ // do this after setting pos1, so we can safely reactivate the func_rotating
+ if(this.spawnflags & FUNC_ROTATING_STARTOFF)
+ {
+ this.avelocity = '0 0 0';
+ this.active = ACTIVE_NOT;
+ }
+ else
+ this.active = ACTIVE_ACTIVE;
+
if(this.dmg && (this.message == ""))
this.message = " was squished";
if(this.dmg && (this.message2 == ""))
this.nextthink = this.ltime + 999999999;
setthink(this, SUB_NullThink); // for PushMove
- // TODO make a reset function for this one
+ this.reset = func_rotating_reset;
}
#endif