public void SetUpdateValue(UpdateFields idx, ulong data, UpdateMask mask) { if (idx >= UpdateFields.PLAYER_END - 1) { return; } CheckUpdateSize(); updateValues[(ushort)idx] = (uint)data; updateValues[(ushort)idx + 1] = (uint)(data >> 32); mask.Set((ushort)idx, true); mask.Set((ushort)(idx + 1), true); }
public byte[] BuildUpdate(UpdateMask mask, UpdateType type, bool bControl) { ByteArrayBuilder pack = new ByteArrayBuilder(false); pack.Add((byte)type); pack.Add(GUID); if (type != UpdateType.Value) // buildMoveType { pack.Add((byte)ObjectType); BuildMovementUpdate(pack); } if (type == UpdateType.All) { if (bControl) { pack.Add((uint)1); } else { pack.Add((uint)0); } pack.Add((uint)1); pack.Add((uint)0); // timeid pack.Add((uint)0); // victim pack.Add((uint)0); } if (type != UpdateType.Move) // have update value { mask.BuildUpdate(pack); for (ushort idx = 0; idx < mask.Length; idx++) { if (mask.Set(idx, false)) { if (idx >= updateValues.Count) { pack.Add((uint)0); } else if (updateValues[idx] is uint) { pack.Add((uint)updateValues[idx]); } else { pack.Add((float)updateValues[idx]); } } } } return(pack); }
public void SetUpdateValueFloat(UpdateFields idx, float data, UpdateMask mask) { if (idx >= UpdateFields.PLAYER_END) { return; } CheckUpdateSize(); ushort i = (ushort)idx; if (updateValues.Count > i) { updateValues[(ushort)idx] = data; mask.Set((ushort)idx, true); } }
public void SetUpdateValue(UpdateFields idx, uint data, UpdateMask mask) { if (idx == UpdateFields.OBJECT_FIELD_GUID || idx >= UpdateFields.PLAYER_END) { return; } CheckUpdateSize(); ushort i = (ushort)idx; if (updateValues.Count > i) { updateValues[(ushort)idx] = data; mask.Set((ushort)idx, true); } }