forked from nalc/nalc_game
		
	Binoculars: Only set property if necessary to reduce mesh reloading
This commit is contained in:
		| @@ -3,7 +3,12 @@ | ||||
| binoculars = {} | ||||
|  | ||||
|  | ||||
| -- Cache creative mode setting | ||||
| -- Detect creative mod | ||||
|  | ||||
| local creative_mod = minetest.get_modpath("creative") | ||||
|  | ||||
|  | ||||
| -- Cache creative mode setting as fallback if creative mod not present | ||||
|  | ||||
| local creative_mode_cache = minetest.settings:get_bool("creative_mode") | ||||
|  | ||||
| @@ -13,14 +18,13 @@ local creative_mode_cache = minetest.settings:get_bool("creative_mode") | ||||
|  | ||||
| function binoculars.update_player_property(player) | ||||
| 	local creative_enabled = | ||||
| 		(creative and creative.is_enabled_for(player:get_player_name())) or | ||||
| 		(creative_mod and creative.is_enabled_for(player:get_player_name())) or | ||||
| 		creative_mode_cache | ||||
|  | ||||
| 	if creative_enabled or | ||||
| 			player:get_inventory():contains_item("main", "binoculars:binoculars") then | ||||
| 		player:set_properties({can_zoom = true}) | ||||
| 	else | ||||
| 		player:set_properties({can_zoom = false}) | ||||
| 	-- Only set property if necessary to avoid player mesh reload | ||||
| 	local new_can_zoom = creative_enabled or player:get_inventory():contains_item( | ||||
| 			"main", "binoculars:binoculars") | ||||
| 	if player:get_properties().can_zoom ~= new_can_zoom then | ||||
| 		player:set_properties({can_zoom = new_can_zoom}) | ||||
| 	end | ||||
| end | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user