parent
							
								
									dc59ab7abf
								
							
						
					
					
						commit
						58b7efa839
					
				
				 4 changed files with 56 additions and 0 deletions
			
			
		@ -0,0 +1,55 @@ | 
				
			|||||||
 | 
					local ipairs | 
				
			||||||
 | 
					    = ipairs | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local minetest, vector | 
				
			||||||
 | 
					    = minetest, vector | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local player_huds = {} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local function do_player_rotating_checks(player) | 
				
			||||||
 | 
					    local name = player:get_player_name() | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local hud_index = player_huds[name] | 
				
			||||||
 | 
					    if hud_index then | 
				
			||||||
 | 
					        player:hud_remove(hud_index) | 
				
			||||||
 | 
					        player_huds[name] = nil | 
				
			||||||
 | 
					    end | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local look_dir   = player:get_look_dir() | 
				
			||||||
 | 
					    local player_pos = vector.copy(player:get_pos()) | 
				
			||||||
 | 
					    local eye_offset = vector.divide(player:get_eye_offset(), 10) | 
				
			||||||
 | 
					    local eye_height = player:get_properties().eye_height; | 
				
			||||||
 | 
					    local eye_pos    = player_pos + eye_offset + vector.new(0, eye_height, 0) | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local default_reach = minetest.registered_items[""].range or 4 | 
				
			||||||
 | 
					    local wielded_reach = player:get_wielded_item():get_definition().reach | 
				
			||||||
 | 
					    local reach = wielded_reach or default_reach | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local node = nil | 
				
			||||||
 | 
					    local ray = minetest.raycast(eye_pos, eye_pos + look_dir * reach, false, false) | 
				
			||||||
 | 
					    for pointed_thing in ray do node = pointed_thing end | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if node then | 
				
			||||||
 | 
					        hud_index = player:hud_add({ | 
				
			||||||
 | 
					            hud_elem_type = "image", | 
				
			||||||
 | 
					            name = "rotation hint", | 
				
			||||||
 | 
					            text = "nc_extended_rotating_hud_rotate_clockwise.png", | 
				
			||||||
 | 
					            position  = { x = 0.5, y = 0.5 }, | 
				
			||||||
 | 
					            offset    = { x = 0, y = 0 }, | 
				
			||||||
 | 
					            alignment = { x = 0, y = 0 }, | 
				
			||||||
 | 
					            scale     = { x = 1, y = 1 }, | 
				
			||||||
 | 
					        }) | 
				
			||||||
 | 
					        player_huds[name] = hud_index | 
				
			||||||
 | 
					    end | 
				
			||||||
 | 
					end | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					minetest.register_globalstep(function(delta_time) | 
				
			||||||
 | 
					    for _, player in ipairs(minetest.get_connected_players()) do | 
				
			||||||
 | 
					        do_player_rotating_checks(player) | 
				
			||||||
 | 
					    end | 
				
			||||||
 | 
					end) | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					minetest.register_on_leaveplayer(function(player) | 
				
			||||||
 | 
					    local name = player:get_player_name() | 
				
			||||||
 | 
					    player_huds[name] = nil | 
				
			||||||
 | 
					end) | 
				
			||||||
| 
		 After Width: | Height: | Size: 4.6 KiB  | 
| 
		 After Width: | Height: | Size: 4.6 KiB  | 
					Loading…
					
					
				
		Reference in new issue