12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- //! 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 (GetGame().IsMultiplayer() && GetGame().IsServer())
- PluginDiagMenuServer.SendDataToSubscribersServer(this, ESubscriberSystems.TRIGGERS, ERPCs.DIAG_TRIGGER_DEBUG, data, false);
- else if (!GetGame().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
- }
|