Finished fixing input back to prev-sokol feature parity
This commit is contained in:
		| @@ -88,6 +88,9 @@ pull_staged_input_events :: proc(  input : ^InputState, input_events : ^InputEve | ||||
| 					key       = event.key, | ||||
| 					modifiers = event.modifiers | ||||
| 				}) | ||||
| 				// logf("Key pressed(event pushed): %v", event.key) | ||||
| 				// logf("last key event frame: %v", peek_back(& key_events).frame_id) | ||||
| 				// logf("last     event frame: %v", peek_back(& events).frame_id) | ||||
|  | ||||
| 			case .Key_Released: | ||||
| 				push( & key_events, InputKeyEvent { | ||||
| @@ -96,6 +99,9 @@ pull_staged_input_events :: proc(  input : ^InputState, input_events : ^InputEve | ||||
| 					key       = event.key, | ||||
| 					modifiers = event.modifiers | ||||
| 				}) | ||||
| 				// logf("Key released(event rpushed): %v", event.key) | ||||
| 				// logf("last key event frame: %v", peek_back(& key_events).frame_id) | ||||
| 				// logf("last     event frame: %v", peek_back(& events).frame_id) | ||||
|  | ||||
| 			case .Unicode: | ||||
| 				append( & codes_pressed, event.codepoint ) | ||||
| @@ -175,22 +181,39 @@ poll_input_events :: proc( input, prev_input : ^InputState, input_events : Input | ||||
| 	input.keyboard = {} | ||||
| 	input.mouse    = {} | ||||
|  | ||||
| 	// logf("m's value is: %v (prev)", prev_input.keyboard.keys[KeyCode.M] ) | ||||
|  | ||||
| 	for prev_key, id in prev_input.keyboard.keys { | ||||
| 		input.keyboard.keys[id].ended_down = prev_key.ended_down | ||||
| 	} | ||||
|  | ||||
| 	for prev_btn, id in prev_input.mouse.btns { | ||||
| 		input.mouse.btns[id].ended_down = prev_btn.ended_down | ||||
| 	} | ||||
|  | ||||
| 	input_events := input_events | ||||
| 	using input_events | ||||
|  | ||||
| 	@static prev_frame : u64 = u64_max | ||||
| 	@static prev_frame : u64 = 0 | ||||
|  | ||||
| 	last_frame := peek_front( & events).frame_id | ||||
| 	last_frame : u64 = 0 | ||||
| 	if events.len > 0 { | ||||
| 		last_frame = peek_back( & events).frame_id | ||||
| 	} | ||||
|  | ||||
| 	// No new events, don't update | ||||
| 	if prev_frame != 0 && last_frame == prev_frame do return | ||||
| 	if last_frame == prev_frame do return | ||||
|  | ||||
| 	Iterate_Key_Events: | ||||
| 	{ | ||||
| 		iter_obj  := iterator( key_events ); iter := & iter_obj | ||||
| 		for event := next( iter ); event != nil; event = next( iter ) | ||||
| 		{ | ||||
| 			if last_frame == event.frame_id do return | ||||
| 			if last_frame > event.frame_id { | ||||
| 				break | ||||
| 			} | ||||
| 			// logf("last_frame (iter): %v", last_frame) | ||||
| 			// logf("frame      (iter): %v", event.frame_id ) | ||||
|  | ||||
| 			key      := & input.keyboard.keys[event.key] | ||||
| 			prev_key :=   prev_input.keyboard.keys[event.key] | ||||
| @@ -206,9 +229,6 @@ poll_input_events :: proc( input, prev_input : ^InputState, input_events : Input | ||||
| 					key.half_transitions += 1 | ||||
| 					key.ended_down        = false | ||||
| 			} | ||||
|  | ||||
| 			frame_transition     := first_transition && prev_key.ended_down != key.ended_down ? i32(1) : i32(0) | ||||
| 			key.half_transitions += frame_transition | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| @@ -217,7 +237,9 @@ poll_input_events :: proc( input, prev_input : ^InputState, input_events : Input | ||||
| 		iter_obj  := iterator( mouse_events ); iter := & iter_obj | ||||
| 		for event := next( iter ); event != nil; event = next( iter ) | ||||
| 		{ | ||||
| 			if last_frame == event.frame_id do return | ||||
| 			if last_frame > event.frame_id { | ||||
| 				break | ||||
| 			} | ||||
|  | ||||
| 			process_digital_btn :: proc( btn : ^DigitalBtn, prev_btn : DigitalBtn, ended_down : b32 ) | ||||
| 			{ | ||||
| @@ -225,9 +247,6 @@ poll_input_events :: proc( input, prev_input : ^InputState, input_events : Input | ||||
|  | ||||
| 				btn.half_transitions += 1 | ||||
| 				btn.ended_down        = ended_down | ||||
|  | ||||
| 				frame_transition     := first_transition && prev_btn.ended_down != btn.ended_down ? i32(1) : i32(0) | ||||
| 				btn.half_transitions += frame_transition | ||||
| 			} | ||||
|  | ||||
| 			#partial switch event.type { | ||||
|   | ||||
| @@ -39,26 +39,30 @@ MouseBtn :: enum u32 { | ||||
| KeyboardState :: struct #raw_union { | ||||
| 	keys : [KeyCode.count] DigitalBtn, | ||||
| 	using individual : struct { | ||||
|  | ||||
| 		ignored : DigitalBtn, | ||||
| 		null    : DigitalBtn, // 0x00 | ||||
| 		ignored : DigitalBtn, // 0x01 | ||||
|  | ||||
| 		// GFLW / Sokol | ||||
| 		menu, | ||||
| 		world_1, world_2 : DigitalBtn, | ||||
| 		// 0x02 - 0x04 | ||||
|  | ||||
| 		__0x05_0x07_Unassigned__ : [ 3 * size_of( DigitalBtn)] u8, | ||||
|  | ||||
| 		tab, backspace : DigitalBtn, | ||||
| 		// 0x08 - 0x09 | ||||
|  | ||||
| 		right, left, up, down : DigitalBtn, | ||||
| 		// 0x0A - 0x0D | ||||
|  | ||||
| 		enter : DigitalBtn, | ||||
| 		enter : DigitalBtn, // 0x0E | ||||
|  | ||||
| 		__0x0F_Unassigned__ : [ 1 * size_of( DigitalBtn)] u8, | ||||
|  | ||||
| 		caps_lock, | ||||
| 		scroll_lock, | ||||
| 		num_lock : DigitalBtn, | ||||
| 		// 0x10 - 0x12 | ||||
|  | ||||
| 		left_alt, | ||||
| 		left_shift, | ||||
| @@ -66,6 +70,7 @@ KeyboardState :: struct #raw_union { | ||||
| 		right_alt, | ||||
| 		right_shift, | ||||
| 		right_control : DigitalBtn, | ||||
| 		// 0x13 - 0x18 | ||||
|  | ||||
| 		print_screen, | ||||
| 		pause, | ||||
| @@ -75,6 +80,7 @@ KeyboardState :: struct #raw_union { | ||||
| 		page_up, | ||||
| 		page_down, | ||||
| 		space : DigitalBtn, | ||||
| 		// 0x19 - 0x20 | ||||
|  | ||||
| 		exlamation, | ||||
| 		quote_dbl, | ||||
| @@ -91,17 +97,18 @@ KeyboardState :: struct #raw_union { | ||||
| 		minus, | ||||
| 		period, | ||||
| 		slash	: DigitalBtn, | ||||
| 		// 0x21 - 0x2F | ||||
|  | ||||
| 		nrow_0, | ||||
| 		nrow_1, | ||||
| 		nrow_2, | ||||
| 		nrow_3, | ||||
| 		nrow_4, | ||||
| 		nrow_5, | ||||
| 		nrow_6, | ||||
| 		nrow_7, | ||||
| 		nrow_8, | ||||
| 		nrow_9, | ||||
| 		nrow_0, // 0x30 | ||||
| 		nrow_1, // 0x31 | ||||
| 		nrow_2, // 0x32 | ||||
| 		nrow_3, // 0x33 | ||||
| 		nrow_4, // 0x34 | ||||
| 		nrow_5, // 0x35 | ||||
| 		nrow_6, // 0x36 | ||||
| 		nrow_7, // 0x37 | ||||
| 		nrow_8, // 0x38 | ||||
| 		nrow_9, // 0x39 | ||||
|  | ||||
| 		__0x3A_Unassigned__ : [ 1 * size_of(DigitalBtn)] u8, | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user