static void DoDamage(ref DoDamageMsg msg, MyNetworkClient sender) { MyEntity ent; if(!MyEntities.TryGetEntityById(msg.DestroyableEntityId, out ent)) return; if (!(ent is IMyDestroyableObject)) { Debug.Fail("Damage can be done to destroyable only"); return; } (ent as IMyDestroyableObject).DoDamage(msg.Damage, msg.Type, false); }
public static void DoDamageSynced(MyEntity destroyable, float damage, MyDamageType type) { Debug.Assert(Sync.IsServer || destroyable.SyncObject is MySyncEntity || (destroyable.SyncObject as MySyncEntity).ResponsibleForUpdate(Sync.Clients.LocalClient)); if (!(destroyable is IMyDestroyableObject)) return; var msg = new DoDamageMsg(); msg.DestroyableEntityId = destroyable.EntityId; msg.Damage = damage; msg.Type = type; (destroyable as IMyDestroyableObject).DoDamage(damage, type, false); Sync.Layer.SendMessageToAll<DoDamageMsg>(ref msg); }
static void DoDamage(ref DoDamageMsg msg, MyNetworkClient sender) { MyEntity ent; if (!MyEntities.TryGetEntityById(msg.DestroyableEntityId, out ent)) { return; } if (!(ent is IMyDestroyableObject)) { Debug.Fail("Damage can be done to destroyable only"); return; } (ent as IMyDestroyableObject).DoDamage(msg.Damage, msg.Type, false, null, msg.AttackerEntityId); }
public static void DoDamageSynced(MyEntity destroyable, float damage, MyDamageType type) { Debug.Assert(Sync.IsServer || destroyable.SyncObject is MySyncEntity || (destroyable.SyncObject as MySyncEntity).ResponsibleForUpdate(Sync.Clients.LocalClient)); if (!(destroyable is IMyDestroyableObject)) { return; } var msg = new DoDamageMsg(); msg.DestroyableEntityId = destroyable.EntityId; msg.Damage = damage; msg.Type = type; (destroyable as IMyDestroyableObject).DoDamage(damage, type, false); Sync.Layer.SendMessageToAll <DoDamageMsg>(ref msg); }