public void Update(double time, float3 playerPosition, float3 targetPosition, bool testing = false) { var unit = testing ? fetch_random(time) : fetch_input(time, playerPosition, targetPosition); if (_buffer.Length < _buffer.Capacity) { _buffer.Add(unit); } if (Input.GetButtonDown("Submit")) { var filename = "controller.bin"; Debug.Log("dump file to:" + filename); ControllerBuffer.Save(_buffer, filename); Debug.Log("done."); } if (!unit.Toward && _buffer.Length >= 2) { for (var i = _buffer.Length - 2; i >= 0; --i) { var oldUnit = _buffer[i]; if (oldUnit.Toward) { oldUnit.Condition = unit.Condition; _buffer[i] = oldUnit; } else { break; } } } _currentUnit = unit; }
ControllerUnit fetch_random(double time) { var unit = new ControllerUnit { Horizontal = _random.NextFloat(), Vertical = _random.NextFloat(), FireBullet = _random.NextBool(), FireMissile = _random.NextBool(), Toward = _random.NextBool(), Away = _random.NextBool(), Condition = _random.NextFloat(), Time = (float)(time - _startTime), }; return(unit); }
ControllerUnit fetch_input(double time, float3 playerPosition, float3 targetPosition) { var unit = new ControllerUnit { Horizontal = Input.GetAxisRaw("Horizontal"), Vertical = Input.GetAxisRaw("Vertical"), FireBullet = Input.GetButton("Fire1"), FireMissile = Input.GetButtonDown("Fire2"), Toward = Input.GetButton("Toward"), Away = Input.GetButton("Away"), Condition = math.length(targetPosition - playerPosition), Time = (float)(time - _startTime), }; return(unit); }