Input_Engine

Warning

Current project version is now on 0.6.x.

Currently only Windows implementation is supported.

Usage

class PDJE_Input

Input device manager.

Searches for connected devices and pairs them with the engine.

bool PDJE_Input::Init()

initialize pdje input.

bool PDJE_Input::Config(std::vector<DeviceData> &devs)

configure device data.

bool PDJE_Input::Run()

run input Loop

bool PDJE_Input::Kill()

kill input Loop

PDJE_INPUT_STATE PDJE_Input::GetState()

get pdje input module’s configuration & running state

PDJE_Input input;
input.Init();

auto     devs = input.GetDevs();
DEV_LIST set_targets;
for (auto i : devs) {
    std::cout << "name: " << i.Name << std::endl;
    switch (i.Type) {
    case PDJE_Dev_Type::MOUSE:
        std::cout << "type: mouse" << std::endl;
        break;
    case PDJE_Dev_Type::KEYBOARD:
        std::cout << "type: keyboard" << std::endl;
        set_targets.push_back(i);//add all keyboards
        break;
    case PDJE_Dev_Type::HID:
        std::cout << "type: hid" << std::endl;
        break;
    case PDJE_Dev_Type::UNKNOWN:
        std::cout << "type: unknown" << std::endl;
        break;
    default:
        break;
    }

    std::cout << "dev path: " << i.device_specific_id << std::endl;
}

input.Config(set_targets);
auto dline = input.PullOutDataLine();
input.Run();
//after use
input.Kill();
//no impl
#no impl

#with InputLine Node
extends Node
var IM:PDJE_Input_Module

func _ready():
    IM = PDJE_Input_Module.new()
    IM.Init()
    var configlist:Array
    for i in dev:
        if i["type"] == "KEYBOARD":
            configlist.push_back(i)

    IM.InitializeInputLine($InputLine)#connect InputLine Node. you can find it in "Add Child Node" tab
    IM.Run()

func _process():
    $InputLine.emit_input_signal()

#connect this function with InputLine Node. you can find it in the signals tab. beside the inspector tab.
func _on_input_line_pdje_input_keyboard_signal(device_id:String, device_name:String, microsecond_string:String, keyboard_key:int, isPressed:bool):
    print(device_id, device_name, microsecond_string)


#IM.Kill()#use kill function to deactivate input module. use after game stage.

To use PDJE without Input Engine module, use Data_Lines.