public override void Self_OnMeanCollision(object sender, MeanCollisionEventArgs e) { if (!MaintainEffects) { return; } EventQueue.Enqueue(() => { SimObject perpAv, victimAv; if (TryGetSimObject(e.Aggressor, out perpAv) && TryGetSimObject(e.Victim, out victimAv)) { // if (victimAv.Name == client.Self.Name) // WriteLine(perpAv.Name + " bumped into $bot like " + type); // else if (perpAv.Name == client.Self.Name) // WriteLine("$bot bumped into " + victimAv.Name + " like " + type); CogbotEvent newSimObjectEvent = ACogbotEvent.CreateEvent(sender, "MeanCollisionType-" + e.Type, SimEventType.Once | SimEventType.SOCIAL | SimEventType.REGIONAL, ToParameter("primaryObjectMoving", perpAv), ToParameter("objectActedOn", victimAv), ToParameter("initialSpeedOfPrimaryObjectMoving", "MetersPerSecond", e.Magnitude)); perpAv.LogEvent(newSimObjectEvent); } }); }
// Test private void Network_MeanCollisionAlertHandler(object sender, PacketReceivedEventArgs e) { Debug.WriteLine("collision detected "); var packet = e.Packet; MeanCollisionAlertPacket collision = (MeanCollisionAlertPacket)packet; for (int i = 0; i < collision.MeanCollision.Length; i++) { MeanCollisionAlertPacket.MeanCollisionBlock block = collision.MeanCollision[i]; DateTime time = Utils.UnixTimeToDateTime(block.Time); MeanCollisionType type = (MeanCollisionType)block.Type; //Self_OnMeanCollision(e.Simulator, new MeanCollisionEventArgs(type, block.Perp, block.Victim, block.Mag, time)); MeanCollisionEventArgs mc = new MeanCollisionEventArgs(type, block.Perp, block.Victim, block.Mag, time); Debug.WriteLine("Attacker = " + mc.Aggressor); } }