Exemple #1
0
 private void CheckPlayerAction(InputSignal signal, Action <GameSignals.ChangeResourceSignal> triggerAction)
 {
     if (PlayerData.PlayerId == signal.PlayerId)
     {
         triggerAction(signal as GameSignals.ChangeResourceSignal);
     }
 }
Exemple #2
0
 protected override void FillBuffer(float[] buffer, int offset, int count)
 {
     if (DoRead)
     {
         InputSignal.Read(buffer, offset, count);
         if (WritePosition >= FBufferSize)
         {
             WritePosition %= FBufferSize;
         }
         var copyCount = Math.Min(FBufferSize - WritePosition, count);
         Array.Copy(buffer, 0, FBuffer, WritePosition, copyCount);
         if (copyCount < count)                //copy rest to front
         {
             Array.Copy(buffer, 0, FBuffer, 0, count - copyCount);
         }
         WritePosition += count;
     }
     //do preview
     if (PreviewSize > 0)
     {
         if (Preview.Length != PreviewSize)
         {
             Preview = new float[PreviewSize];
         }
         var stepsize = (FBufferSize / PreviewSize) + 1;
         var index    = 0;
         for (int i = stepsize / 2; i < FBufferSize; i += stepsize)
         {
             Preview[index] = FBuffer[i];
             index++;
         }
     }
 }
Exemple #3
0
 private void CheckPlayerAction(InputSignal signal, Action triggerAction)
 {
     if (PlayerData.PlayerId == signal.PlayerId)
     {
         triggerAction();
     }
 }
Exemple #4
0
    public override void OnRegister()
    {
        base.OnRegister();

        GameModel.MaxLive = 6;
        GameModel.Reset();

        InputSignal.AddListener(OnInput);
        DBAquiredSignal.AddListener(OnDragonBallAquired);
    }
        protected override void FillBuffer(float[] buffer, int offset, int count)
        {
            if (InputSignal.Value != null)
            {
                InputSignal.Read(buffer, offset, count);

                //just output the latest value
                Value = buffer[count - 1];
            }
        }
        public virtual UniTask Initialize()
        {
            _gameSignals = DIResolver.GetObject <GameSignals>();
            _inputSignal = DIResolver.GetObject <InputSignal>();

            _gameSignals.PlayerSpawnedSignal.Listen(HandlePlayerSpawned).AddTo(disposables);
            _gameSignals.PlayerDespawnedSignal.Listen(HandlePlayerDespawned, PlayerDespawnedPrioritySignal.Priority.UNLISTEN_PLAYER_INPUT).AddTo(disposables);
            _gameSignals.PlayerDoHyperSpaceSignal.Listen(HandlePlayerDoHyperSpace).AddTo(disposables);
            _gameSignals.PlayerHyperSpaceFinishedSignal.Listen(HandlePlayerHyperSpaceFinished).AddTo(disposables);

            return(UniTask.CompletedTask);
        }
 protected override void FillBuffer(float[] buffer, int offset, int count)
 {
     if (InputSignal.Value != null)
     {
         InputSignal.Read(buffer, offset, count);
         FDecoder.Write(buffer, count, 0);
         if (FDecoder.GetQueueLength() > 0)
         {
             Timecode = FDecoder.Read().getTimecode();
         }
     }
 }
 protected override void FillBuffer(float[] buffer, int offset, int count)
 {
     if (InputSignal.Value != null)
     {
         InputSignal.Read(buffer, offset, count);
         var max = 0.0;
         for (int i = offset; i < count; i++)
         {
             max = Math.Max(max, Math.Abs(buffer[i]));
         }
         Max = max;
     }
 }
 private void Enqueue(InputSignal inputSignal)
 {
     if (isRunning)
     {
         lock (queue)
         {
             queue.Enqueue(inputSignal);
         }
         if (waitHandle != null)
         {
             waitHandle.Set();
         }
     }
 }
Exemple #10
0
        protected override void FillBuffer(float[] buffer, int offset, int count)
        {
            if (FBTrack != null && isValid)
            {
                InputSignal.Read(buffer, offset, count);
                //base.FillBuffer(buffer, offset, count);
                FBTrack.ProcessFrame(buffer, count);

                if (FBTrack.Beat)
                {
                    beatReadFlag = false;
                }
                Beat.Value = beatReadFlag ? false : true;   // return true as long as beat was not yet registered by node
                Bpm.Value  = FBTrack.Bpm;
            }
        }
Exemple #11
0
        protected override void FillBuffer(float[] buffer, int offset, int count)
        {
            if (FGist != null)
            {
                InputSignal.Read(buffer, offset, count);
                //base.FillBuffer(buffer, offset, count);
                FGist.ProcessFrame(buffer, count);
                FFT.Value = FGist.SpectrumData;

                //get flags
                AudioFeaturesFlags flags = (AudioFeaturesFlags)2047;

                var features = FGist.GetFeatures(flags);
                var vals     = new float[11];
                features.Values.CopyTo(vals, 0);
                Features.Value = vals;
            }
        }
Exemple #12
0
        protected override void FillBuffer(float[] buffer, int offset, int count)
        {
            if (BufferOut.Length != Buffer.Size)
            {
                BufferOut = new float[Buffer.Size];
            }

            if (InputSignal.Value != null)
            {
                InputSignal.Read(buffer, offset, count);
                Buffer.Write(buffer, offset, count);
            }
            else
            {
                buffer.ReadSilence(offset, count);
                Buffer.Write(buffer, offset, count);
            }
        }
Exemple #13
0
    private void OnMessage(byte[] msg)
    {
        var message = ToString(msg);

        Debug.Log("WS received message: " + message);

        _mainThreadQueue.enqueueAction(() =>
        {
            try
            {
                var inputSignal = InputSignal.FromJson(message);
                _signalBus.Fire(inputSignal);
                _signalBus.Fire(new GameSignals.PlayerActionTriggered(inputSignal.PlayerId));
            }
            catch (Exception e)
            {
                Debug.Log("Failed to process " + message + " " + e.Message);
            }
        });
    }
Exemple #14
0
        protected override void FillBuffer(float[] buffer, int offset, int count)
        {
            if (InputSignal.Value != null)
            {
                InputSignal.Read(buffer, offset, count);

                //write to buffer
                FRingBuffer.Write(buffer, offset, count);

                //calc fft
                var fftSize = FRingBuffer.Size;

                if (FFFTBuffer.Length != fftSize)
                {
                    FFFTBuffer = new double[fftSize];
                    FFTOut     = new double[fftSize];
                    FWindow    = AudioUtils.CreateWindowDouble(fftSize, WindowFunc);
                }

                FRingBuffer.ReadDoubleWindowed(FFFTBuffer, FWindow, 0, fftSize);
                FFFT.RealFFT(FFFTBuffer, true);
                Array.Copy(FFFTBuffer, FFTOut, fftSize);
            }
        }
 private void ExecutingThreadImpl()
 {
     isRunning = true;
     StateMachine.Start();
     if (startWaitHandle != null)
     {
         startWaitHandle.Set();
     }
     while (true)
     {
         InputSignal inputSignal = null;
         lock (queue)
         {
             if (queue.Count > 0)
             {
                 inputSignal = queue.Dequeue();
                 if (ReferenceEquals(inputSignal, null))
                 {
                     break;
                 }
             }
         }
         if (inputSignal != null)
         {
             StateMachine.Handle(inputSignal.Signal, inputSignal.Args);
         }
         else
         {
             if (waitHandle != null)
             {
                 waitHandle.WaitOne();
             }
         }
     }
     isRunning = false;
 }
Exemple #16
0
 public void SetInputSignal(InputSignal input)
 {
     this.inputSignal = input;
 }
Exemple #17
0
        public UniTask Initialize()
        {
            _inputSignal = DIResolver.GetObject <InputSignal>();

            return(UniTask.CompletedTask);
        }
Exemple #18
0
        public override void SetData(byte[] data)
        {
            try
            {
                if (data == null)
                {
                    return;
                }
                if (data[0] != Definitions.Device.Bqms.Head)
                {
                    return;
                }
                if (data[1] != Definitions.Device.Bqms.Id[0] || data[2] != Definitions.Device.Bqms.Id[1])
                {
                    return;
                }

                var canId = (Definitions.Device.Bqms.CanId)BitConverter.ToInt32(data, 3);
                switch (canId)
                {
                case Definitions.Device.Bqms.CanId.StringVCT:
                    Voltage = BitConverter.ToInt16(data, 7) * 0.1;
                    Current = (double)ExBitConverter.ToInt24(data, 9) * 0.1;
                    if (data[12] == 0)
                    {
                        var temperature = BitConverter.ToInt16(data, 13);
                        if (temperature == 0x7fff)
                        {
                            AmbientTemperature = null;
                        }
                        else
                        {
                            AmbientTemperature = temperature * 0.1;
                        }
                    }
                    else
                    {
                        RippleCurrent = BitConverter.ToInt16(data, 13) * 0.1;
                    }
                    return;

                case Definitions.Device.Bqms.CanId.StringGain:
                    VoltageGain   = data[8];
                    CurrentGain   = data[9];
                    CurrentOffset = (sbyte)data[10] * 0.1;
                    break;

                case Definitions.Device.Bqms.CanId.StartMeasureResistance:
                    IsMeasuring = true;
                    return;

                case Definitions.Device.Bqms.CanId.EndMeasureResistance:
                    IsMeasuring = false;
                    return;

                case Definitions.Device.Bqms.CanId.Version:
                    Version = $"{(int)data[7]}.{(int)data[8]}";
                    return;

                case Definitions.Device.Bqms.CanId.CellVoltagePeriod:
                    CellVoltagePeriod = BitConverter.ToInt16(data, 8);
                    return;

                case Definitions.Device.Bqms.CanId.CellResistancePeriod:
                    CellResistancePeriod = BitConverter.ToInt16(data, 8);
                    return;

                case Definitions.Device.Bqms.CanId.Discharge:
                    DisChargeCurrentDetect  = (double)ExBitConverter.ToInt24(data, 8) * 0.1;
                    DisChargeCurrentRelease = (double)ExBitConverter.ToInt24(data, 11) * 0.1;
                    return;

                case Definitions.Device.Bqms.CanId.UnitMax:
                    UnitMax = (int)data[8];
                    return;

                case Definitions.Device.Bqms.CanId.Deadband:
                    VoltageDeadband        = (double)data[8] * 0.1;
                    CurrentDeadband        = (double)data[9] * 0.1;
                    TemperatureDeadband    = (double)data[10] * 0.1;
                    RippleCurrentDeadband  = (double)data[11] * 0.1;
                    CellVoltageDeadband    = (double)data[12] * 0.01;
                    CellResistanceDeadband = (double)data[13] * 0.01;
                    break;

                case Definitions.Device.Bqms.CanId.OutContract:
                    var dryContactBitArray = new BitArray(new byte[2] {
                        data[7], data[8]
                    });
                    for (int i = 0; i < DryContact.Count(); i++)
                    {
                        if (dryContactBitArray.Count <= i)
                        {
                            DryContact[i] = false;
                        }
                        else
                        {
                            DryContact[i] = dryContactBitArray[i];
                        }
                    }

                    var inputSignalBitArray = new BitArray(new byte[1] {
                        data[9]
                    });
                    for (int i = 0; i < InputSignal.Count(); i++)
                    {
                        if (inputSignalBitArray.Count <= i)
                        {
                            InputSignal[i] = false;
                        }
                        else
                        {
                            InputSignal[i] = inputSignalBitArray[i];
                        }
                    }
                    var ledBitArray = new BitArray(new byte[1] {
                        data[10]
                    });
                    for (int i = 0; i < Led.Count(); i++)
                    {
                        if (ledBitArray.Count <= i)
                        {
                            Led[i] = false;
                        }
                        else
                        {
                            Led[i] = ledBitArray[i];
                        }
                    }
                    break;

                default:
                    break;
                }

                canId = (Definitions.Device.Bqms.CanId)(BitConverter.ToInt32(data, 3) & 0xFFFFFF00);

                int moduleNumber = data[3];
                if (moduleNumber < 1)
                {
                    return;
                }
                CellModel cell = null;

                switch (canId)
                {
                case Definitions.Device.Bqms.CanId.ChannelCount:
                    var channelModule = Modules.SingleOrDefault(r => r.Id == moduleNumber);
                    if (channelModule != null)
                    {
                        channelModule.ChannelCount = data[7];
                    }
                    break;

                case Definitions.Device.Bqms.CanId.VoltagePhaseCompensation:
                    var module            = Modules.SingleOrDefault(r => r.Id == moduleNumber);
                    var voltageOffset     = BitConverter.ToInt16(data, 8) * 0.001;
                    var phaseCompensation = ExBitConverter.ToInt24(data, 10) * 0.001;
                    if (module == null)
                    {
                        module = new ModuleModel
                        {
                            Id                = moduleNumber,
                            BankId            = Id,
                            VoltageOffset     = voltageOffset,
                            PhaseCompensation = phaseCompensation,
                            UpdateTime        = DateTime.Now
                        };
                        AddModule(module);
                    }
                    else
                    {
                        module.VoltageOffset     = voltageOffset;
                        module.PhaseCompensation = phaseCompensation;
                        module.UpdateTime        = DateTime.Now;
                    }
                    return;

                case Definitions.Device.Bqms.CanId.CellVoltage:
                    for (int i = 0; i < 4; i++)
                    {
                        var voltage = BitConverter.ToInt16(data, i * 2 + 7) * 0.001;
                        cell = Cells.SingleOrDefault(r => r.ModuleNumber == moduleNumber && r.Channel == i + 1);
                        if (cell == null)
                        {
                            cell = new CellModel
                            {
                                ModuleNumber = moduleNumber,
                                Channel      = i + 1,
                                Voltage      = voltage,
                                UpdateTime   = DateTime.Now
                            };
                            AddCell(cell);
                        }
                        else
                        {
                            cell.Voltage    = voltage;
                            cell.UpdateTime = DateTime.Now;
                        }

                        var tempModule = Modules.SingleOrDefault(r => r.Id == moduleNumber);
                        if (tempModule != null)
                        {
                            tempModule.Voltages[i] = voltage;
                        }
                    }
                    return;

                case Definitions.Device.Bqms.CanId.CellTemperature:
                    for (int i = 0; i < 4; i++)
                    {
                        double?temperature = BitConverter.ToInt16(data, i * 2 + 7);
                        if (temperature == 0x7FFF)
                        {
                            temperature = null;
                        }
                        else
                        {
                            temperature *= 0.1;
                        }
                        cell = Cells.SingleOrDefault(r => r.ModuleNumber == moduleNumber && r.Channel == i + 1);
                        if (cell == null)
                        {
                            AddCell(new CellModel
                            {
                                ModuleNumber = moduleNumber,
                                Channel      = i + 1,
                                Temperature  = temperature,
                                UpdateTime   = DateTime.Now
                            });
                        }
                        else
                        {
                            cell.Temperature = temperature;
                            cell.UpdateTime  = DateTime.Now;
                        }
                    }
                    return;

                case Definitions.Device.Bqms.CanId.CellResistance:
                    var    channel    = data[7];
                    double?resistance = ExBitConverter.ToInt24(data, 8);

                    if (resistance == 0x7FFFFF)
                    {
                        resistance = null;
                    }
                    else
                    {
                        resistance *= 0.001;
                    }
                    double resistanceOffset = BitConverter.ToInt16(data, 11) * 0.01;
                    cell = Cells.SingleOrDefault(r => r.ModuleNumber == moduleNumber && r.Channel == channel);
                    if (cell == null)
                    {
                        AddCell(new CellModel
                        {
                            ModuleNumber                = moduleNumber,
                            Channel                     = channel,
                            Resistance                  = resistance,
                            ResistanceOffset            = resistanceOffset,
                            MeasureResistanceUpdateTime = DateTime.Now,
                            UpdateTime                  = DateTime.Now
                        });
                    }
                    else
                    {
                        cell.Resistance                  = resistance;
                        cell.ResistanceOffset            = resistanceOffset;
                        cell.MeasureResistanceUpdateTime = DateTime.Now;
                        cell.UpdateTime                  = DateTime.Now;
                    }
                    return;

                case Definitions.Device.Bqms.CanId.ResistanceOffset:
                    for (int i = 0; i < 4; i++)
                    {
                        var offset = BitConverter.ToInt16(data, i * 2 + 7) * 0.01;
                        cell = Cells.SingleOrDefault(r => r.ModuleNumber == moduleNumber && r.Channel == i + 1);
                        if (cell == null)
                        {
                            cell = new CellModel
                            {
                                ModuleNumber     = moduleNumber,
                                Channel          = i + 1,
                                ResistanceOffset = offset,
                                UpdateTime       = DateTime.Now
                            };
                            AddCell(cell);
                        }
                        else
                        {
                            cell.ResistanceOffset = offset;
                            cell.UpdateTime       = DateTime.Now;
                        }
                    }
                    return;

                case Definitions.Device.Bqms.CanId.TestMeasure:
                    var receiveChannel = (byte)((data[8] >> 4) & 0x0F);
                    cell = Cells.SingleOrDefault(r => r.ModuleNumber == moduleNumber && r.Channel == receiveChannel);
                    var receiveGain = (byte)(data[8] & 0x0F);
                    if (cell == null)
                    {
                        cell = new CellModel
                        {
                            ModuleNumber = moduleNumber,
                            Channel      = receiveChannel,
                            Gain         = receiveGain,
                            UpdateTime   = DateTime.Now,
                            TestMeasureResistanceUpdateTime = DateTime.Now
                        };

                        if (data[7] == 0x01)
                        {
                            cell.ImpedanceVoltage = (double)ExBitConverter.ToInt24(data, 9) * 0.001;
                            cell.impedanceCurrent = (double)ExBitConverter.ToInt24(data, 12) * 0.001;
                        }
                        else
                        {
                            cell.Phase      = (double)ExBitConverter.ToInt24(data, 9) * 0.001;
                            cell.Resistance = (double)ExBitConverter.ToInt24(data, 12) * 0.001;
                        }
                        AddCell(cell);
                    }
                    else
                    {
                        cell.Gain = receiveGain;
                        if (data[7] == 0x01)
                        {
                            cell.ImpedanceVoltage = (double)ExBitConverter.ToInt24(data, 9) * 0.001;
                            cell.impedanceCurrent = (double)ExBitConverter.ToInt24(data, 12) * 0.001;
                        }
                        else
                        {
                            cell.Phase      = (double)ExBitConverter.ToInt24(data, 9) * 0.001;
                            cell.Resistance = (double)ExBitConverter.ToInt24(data, 12) * 0.001;
                        }
                        cell.UpdateTime = DateTime.Now;
                        cell.TestMeasureResistanceUpdateTime = DateTime.Now;
                    }
                    return;

                default:
                    break;
                }

                return;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return;
            }
        }
 public void LoadSignal(InputSignal signal)
 {
     signal.transform.parent = signalHolder;
     signal.signalName       = signal.outputPins[0].pinName;
     signals.Add(signal);
 }
Exemple #20
0
    private void OnInput(InputSignal.Key key, InputSignal.State state)
    {
        if (state == InputSignal.State.Down)
        {
            if (key == InputSignal.Key.Up && !GameModel.IsDead())
            {
                View.MoveUp();
            } else if (key == InputSignal.Key.Down && !GameModel.IsDead())
            {
                View.MoveDown();
            }

            if (key == InputSignal.Key.Action && !GameModel.IsDead())
            {
                View.Attack();
            }
        }
        else if (state == InputSignal.State.Up)
        {
            if ((key == InputSignal.Key.Up || key == InputSignal.Key.Down))
            {
                View.ResetMove();
            }
        }
    }