DIFF

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
}