CylinderTrigger.c
//! Trigger with cylinder shape
class CylinderTrigger : Trigger
{
override void EOnInit(IEntity other, int extra)
{
SetCollisionCylinderTwoWay(1, -0.25, 0.25);
}
#ifdef DIAG_DEVELOPER
override void DebugSendDmgTrigger()
{
vector minmax[2];
GetCollisionBox(minmax);
DebugTriggerInfo data = new DebugTriggerInfo(vector.Zero, vector.Zero, vector.Zero, vector.Zero, 0, "", null);
data.param1 = GetPosition();
data.param2 = GetOrientation();
data.param3 = minmax[0];
data.param4 = minmax[1];
data.param5 = GetCollisionRadius();
data.param6 = m_DebugAreaType;
data.param7 = m_insiders;
if (g_Game.IsMultiplayer() && g_Game.IsServer())
PluginDiagMenuServer.SendDataToSubscribersServer(this, ESubscriberSystems.TRIGGERS, ERPCs.DIAG_TRIGGER_DEBUG, data, false);
else if (!g_Game.IsMultiplayer() || m_Local)
DebugDmgTrigger(data.param1, data.param2, data.param3, data.param4, data.param5, data.param6, data.param7);
}
override protected Shape DrawDebugShape(vector pos, vector min, vector max, float radius, int color)
{
//! min/max taken from bbox (which goes from center to top of the cylinder only; min is always negative)
float triggerHeight = (max[1] - min[1]);
Shape dbgShape = Debug.DrawCylinder(pos, radius, triggerHeight, color, ShapeFlags.TRANSP|ShapeFlags.NOZWRITE|ShapeFlags.DOUBLESIDE);
dbgShape.SetPosition(pos);
dbgTargets.Insert(dbgShape);
return dbgShape;
}
#endif
}