57 lines
		
	
	
	
		
			684 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			684 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| #include <vector>
 | |
| 
 | |
| namespace lt::input {
 | |
| 
 | |
| struct Trigger
 | |
| {
 | |
| 	uint32_t mapped_keycode;
 | |
| };
 | |
| 
 | |
| struct InputAction
 | |
| {
 | |
| 	using Key = size_t;
 | |
| 
 | |
| 	enum class State : uint8_t
 | |
| 	{
 | |
| 		inactive,
 | |
| 		active,
 | |
| 		triggered,
 | |
| 		cancelled,
 | |
| 	};
 | |
| 
 | |
| 	std::string name;
 | |
| 
 | |
| 	State state;
 | |
| 
 | |
| 	Trigger trigger;
 | |
| };
 | |
| 
 | |
| class InputComponent
 | |
| {
 | |
| public:
 | |
| 	InputComponent() = default;
 | |
| 
 | |
| 	auto add_action(InputAction action) -> size_t
 | |
| 	{
 | |
| 		m_actions.emplace_back(std::move(action));
 | |
| 		return m_actions.size() - 1;
 | |
| 	}
 | |
| 
 | |
| 	auto get_action(auto idx) -> const InputAction &
 | |
| 	{
 | |
| 		return m_actions[idx];
 | |
| 	}
 | |
| 
 | |
| private:
 | |
| 	friend class System;
 | |
| 
 | |
| 	void push_event()
 | |
| 	{
 | |
| 	}
 | |
| 
 | |
| 	std::vector<InputAction> m_actions;
 | |
| };
 | |
| 
 | |
| } // namespace lt::input
 |