} // empty ctor is required for deserialization public DataShieldHit(ulong sender, long entityId, ProtoShieldHit shieldHit) { Type = PacketType.Shieldhit; Sender = sender; EntityId = entityId; ShieldHit = shieldHit; }
public DataShieldHit(ulong sender, long entityId, PacketType action) { Type = action; Sender = sender; EntityId = entityId; ShieldHit = null; }
private ProtoShieldHit CloneHit() { var hitClone = new ProtoShieldHit { Amount = ShieldHit.Amount, AttackerId = ShieldHit.AttackerId, HitPos = ShieldHit.HitPos, DamageType = ShieldHit.DamageType }; return(hitClone); }
internal void PacketizeShieldHit(MyCubeBlock block, ProtoShieldHit shieldHit) { var data = new DataShieldHit(MyAPIGateway.Multiplayer.MyId, block.EntityId, shieldHit); var bytes = MyAPIGateway.Utilities.SerializeToBinary(data); var syncPosition = block.CubeGrid.WorldMatrix.Translation; var localSteamId = MyAPIGateway.Multiplayer.MyId; foreach (var p in Players.Values) { var id = p.SteamUserId; if (id != localSteamId && id != data.Sender && Vector3D.DistanceSquared(p.GetPosition(), syncPosition) <= SyncBufferedDistSqr) { MyAPIGateway.Multiplayer.SendMessageTo(PacketIdShieldHit, bytes, p.SteamUserId); } } }