/*
 * Copyright 2017 The Cobalt Authors. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef STARBOARD_SHARED_UWP_ANALOG_THUMBSTICK_INPUT_H_
#define STARBOARD_SHARED_UWP_ANALOG_THUMBSTICK_INPUT_H_

#include <vector>

#include "starboard/types.h"

namespace starboard {
namespace shared {
namespace uwp {

struct ThumbSticks {
  float left_x = 0.0f;
  float left_y = 0.0f;
  float right_x = 0.0f;
  float right_y = 0.0f;
};

// Reads all connected game pads and stores the joystick states in the
// destination vector. Note that the destination vector is unconditionally
// cleared before being populated.
void GetGamepadThumbSticks(std::vector<ThumbSticks>* destination);

}  // namespace uwp
}  // namespace shared
}  // namespace starboard

#endif  // STARBOARD_SHARED_UWP_ANALOG_THUMBSTICK_INPUT_H_
