.float touch_timer;
void sandbox_ObjectFunction_Touch()
-{
+{SELFPARAM();
// apply material impact effects
if(!self.material)
intensity -= autocvar_g_sandbox_object_material_velocity_min; // start from minimum velocity, not actual velocity
intensity = bound(0, intensity * autocvar_g_sandbox_object_material_velocity_factor, 1);
- sound(self, CH_TRIGGER, strcat("object/impact_", self.material, "_", ftos(ceil(random() * 5)) , ".wav"), VOL_BASE * intensity, ATTEN_NORM);
- Send_Effect(strcat("impact_", self.material), self.origin, '0 0 0', ceil(intensity * 10)); // allow a count from 1 to 10
+ _sound(self, CH_TRIGGER, strcat("object/impact_", self.material, "_", ftos(ceil(random() * 5)) , ".wav"), VOL_BASE * intensity, ATTEN_NORM);
+ Send_Effect_(strcat("impact_", self.material), self.origin, '0 0 0', ceil(intensity * 10)); // allow a count from 1 to 10
}
void sandbox_ObjectFunction_Think()
-{
+{SELFPARAM();
entity e;
// decide if and how this object can be grabbed
self.nextthink = time;
- CSQCMODEL_AUTOUPDATE();
+ CSQCMODEL_AUTOUPDATE(self);
}
.float old_solid, old_movetype;
entity sandbox_ObjectEdit_Get(float permissions)
-{
+{SELFPARAM();
// Returns the traced entity if the player can edit it, and world if not.
// If permissions if false, the object is returned regardless of editing rights.
// Attached objects are SOLID_NOT and do not get traced.
if(e.scale)
{
e.scale = bound(autocvar_g_sandbox_object_scale_min, e.scale, autocvar_g_sandbox_object_scale_max);
- setmodel(e, e.model); // reset mins and maxs based on mesh
+ _setmodel(e, e.model); // reset mins and maxs based on mesh
setsize(e, e.mins * e.scale, e.maxs * e.scale); // adapt bounding box size to model size
}
}
}
entity sandbox_ObjectSpawn(float database)
-{
+{SELFPARAM();
// spawn a new object with default properties
- entity e, oldself;
- e = spawn();
+ entity e = spawn();
e.classname = "object";
e.takedamage = DAMAGE_AIM;
e.damageforcescale = 1;
e.angles_y = self.v_angle.y;
}
- oldself = self;
- self = e;
- CSQCMODEL_AUTOINIT();
- self = oldself;
+ WITH(entity, self, e, CSQCMODEL_AUTOINIT(e));
object_count += 1;
return e;
parent = e; // mark parent objects as such
}
// properties stored for all objects
- setmodel(e, argv(argv_num)); ++argv_num;
+ _setmodel(e, argv(argv_num)); ++argv_num;
e.skin = stof(argv(argv_num)); ++argv_num;
e.alpha = stof(argv(argv_num)); ++argv_num;
e.colormod = stov(argv(argv_num)); ++argv_num;
}
MUTATOR_HOOKFUNCTION(sandbox_PlayerCommand)
-{
+{SELFPARAM();
if(MUTATOR_RETURNVALUE) // command was already handled?
return false;
if(cmd_name == "g_sandbox")
}
e = sandbox_ObjectSpawn(false);
- setmodel(e, argv(2));
+ _setmodel(e, argv(2));
if(autocvar_g_sandbox_info > 0)
LOG_INFO(strcat("^3SANDBOX - SERVER: ^7", self.netname, " spawned an object at origin ^3", vtos(e.origin), "\n"));