private void OnReceiveResource(TransportConnection connection, ref DataBufferReader reader) { var count = reader.ReadValue <int>(); for (var i = 0; i != count; i++) { var id = reader.ReadValue <int>(); var type = (EAudioRegisterResourceType)reader.ReadValue <int>(); switch (type) { case EAudioRegisterResourceType.Bytes: { var data = new byte[reader.ReadValue <int>()]; reader.ReadDataSafe(data.AsSpan()); resourceManager.Register(connection, id, data); break; } default: throw new ArgumentOutOfRangeException(); } } }
public void Deserialize(EntityManager em, NativeHashMap <GhGameEntitySafe, Entity> ghEntityToUEntity, ref T component, ref DataBufferReader reader) { reader.ReadValue <GhComponentType>(); // skip StatusEffectSettingsBase.Type component.Resistance = reader.ReadValue <float>(); component.RegenPerSecond = reader.ReadValue <float>(); component.Power = reader.ReadValue <float>(); component.Immunity = reader.ReadValue <float>(); }
private void OnReceivePlayer(TransportConnection connection, ref DataBufferReader reader) { var count = reader.ReadValue <int>(); for (var i = 0; i != count; i++) { var id = reader.ReadValue <int>(); var type = reader.ReadString(); playerManager.Register(connection, id, type); } }
public void OnMessage(ref DataBufferReader reader) { var resourceId = reader.ReadValue <int>(); var wavLength = reader.ReadValue <double>(); foreach (var entity in resourceSet.GetEntities()) { if (!entity.TryGet(out AudioResource audioResource)) { continue; } audioResource.Length = TimeSpan.FromSeconds(wavLength); } }
public void OnRead(TransportConnection connection, ref DataBufferReader reader) { var ev = reader.ReadValue <SControllerEvent>(); var entity = playerManager.Get(connection, ev.Player); switch (ev.State) { case SControllerEvent.EState.Paused: break; case SControllerEvent.EState.Stop: entity.Set(new StopAudioRequest()); break; case SControllerEvent.EState.Play: var resource = resourceManager.GetWav(connection, ev.ResourceId); entity.Set(resource); entity.Set(new PlayAudioRequest()); break; default: throw new ArgumentOutOfRangeException(); } entity.Set <StandardAudioPlayerComponent>(); if (ev.Delay > TimeSpan.Zero) { entity.Set(new AudioDelayComponent(worldTime.Total + ev.Delay - worldTime.Delta)); } }
protected override void OnUpdate() { // Update first... foreach (var(featureEntity, feature) in Features) { feature.Driver.Update(); while (feature.Driver.Accept().IsCreated) { } // todo: check events for errors and all TransportEvent ev; while ((ev = feature.Driver.PopEvent()).Type != TransportEvent.EType.None) { switch (ev.Type) { case TransportEvent.EType.None: break; case TransportEvent.EType.RequestConnection: break; case TransportEvent.EType.Connect: break; case TransportEvent.EType.Disconnect: break; case TransportEvent.EType.Data: var reader = new DataBufferReader(ev.Data); var type = (EAudioSendType)reader.ReadValue <int>(); switch (type) { case EAudioSendType.Unknown: throw new InvalidOperationException(); case EAudioSendType.RegisterResource: throw new InvalidOperationException("shouldn't be called"); case EAudioSendType.SendReplyResourceData: { clientReceiveAudioResourceDataSystem.OnMessage(ref reader); break; } case EAudioSendType.SendAudioPlayerData: throw new InvalidOperationException("shouldn't be called"); default: throw new ArgumentOutOfRangeException(); } break; default: throw new ArgumentOutOfRangeException(); } } } }
public void Deserialize(EntityManager em, NativeHashMap <GhGameEntitySafe, Entity> ghEntityToUEntity, ref UnitEnemySeekingState component, ref DataBufferReader reader) { var replica = reader.ReadValue <Replica>(); RelativeDistance = replica.RelativeDistance; SelfDistance = replica.SelfDistance; ghEntityToUEntity.TryGetValue(replica.Enemy, out Enemy); component = this; }
public void Deserialize(EntityManager em, NativeHashMap <GhGameEntitySafe, Entity> ghEntityToUEntity, ref OwnerActiveAbility component, ref DataBufferReader reader) { var replica = reader.ReadValue <Replica>(); LastActivationTime = replica.LastActivationTime; LastCommandActiveTime = replica.LastCommandActiveTime; ghEntityToUEntity.TryGetValue(replica.Previous, out PreviousActive); ghEntityToUEntity.TryGetValue(replica.Active, out Active); ghEntityToUEntity.TryGetValue(replica.Incoming, out Incoming); CurrentCombo = replica.CurrentCombo; component = this; }
public void Deserialize(EntityManager em, NativeHashMap <GhGameEntitySafe, Entity> ghEntityToUEntity, ref PlayerCurrentCityLocation component, ref DataBufferReader reader) { ghEntityToUEntity.TryGetValue(reader.ReadValue <GhGameEntitySafe>(), out component.Entity); }
protected override void OnUpdate() { base.OnUpdate(); foreach (var(_, feature) in Features) { feature.Driver.Update(); while (feature.Driver.Accept().IsCreated) { } TransportEvent ev; while ((ev = feature.Driver.PopEvent()).Type != TransportEvent.EType.None) { switch (ev.Type) { case TransportEvent.EType.None: break; case TransportEvent.EType.RequestConnection: break; case TransportEvent.EType.Connect: break; case TransportEvent.EType.Disconnect: break; case TransportEvent.EType.Data: var reader = new DataBufferReader(ev.Data); var type = (EAudioSendType)reader.ReadValue <int>(); switch (type) { case EAudioSendType.Unknown: break; case EAudioSendType.RegisterResource: OnReceiveResource(ev.Connection, ref reader); break; case EAudioSendType.RegisterPlayer: OnReceivePlayer(ev.Connection, ref reader); break; case EAudioSendType.SendAudioPlayerData: var player = reader.ReadBuffer <CharBuffer128>(); var @delegate = playerManager.GetDelegate(player); @delegate?.Invoke(ev.Connection, ref reader); break; default: throw new ArgumentOutOfRangeException($"EAudioSendType: " + type); } break; default: throw new ArgumentOutOfRangeException($"MessageType" + ev.Type); } } } }
public void Deserialize(EntityManager em, NativeHashMap <GhGameEntitySafe, Entity> ghEntityToUEntity, ref HideoutLeaderSquad component, ref DataBufferReader reader) { ghEntityToUEntity.TryGetValue(reader.ReadValue <GhGameEntitySafe>(), out component.Leader); }