From 083b285f4319c470f307f0b52f03a2fb68facd38 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 26 May 2020 00:17:52 +0200 Subject: =?UTF-8?q?Rename=20=E2=80=9CMinimal=20development=20test=E2=80=9D?= =?UTF-8?q?=20to=20=E2=80=9CDevelopment=20Test=E2=80=9D=20(#9928)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- games/minimal/mods/testpathfinder/init.lua | 132 ----------------------------- 1 file changed, 132 deletions(-) delete mode 100644 games/minimal/mods/testpathfinder/init.lua (limited to 'games/minimal/mods/testpathfinder/init.lua') diff --git a/games/minimal/mods/testpathfinder/init.lua b/games/minimal/mods/testpathfinder/init.lua deleted file mode 100644 index f94848236..000000000 --- a/games/minimal/mods/testpathfinder/init.lua +++ /dev/null @@ -1,132 +0,0 @@ -local S = minetest.get_translator("testpathfinder") - --- Config parameters - --- Maximum direct distance between start and end -local MAX_DIRECT_DISTANCE = 64 --- Maximum search distance -local MAX_SEARCH_DISTANCE = 32 --- Maximum permitted jump height -local MAX_JUMP = 1 --- Maximum permitted drop height -local MAX_DROP = 5 --- If true, mod won't refuse to run pathfinder even at long distances -local IGNORE_MAX_DISTANCE_SAFEGUARD = false - --- End of config parameters - -local timer = 0 -local algorithms = { - "A*_noprefetch", - "A*", - "Dijkstra", -} - -local function find_path_for_player(player, itemstack) - local meta = itemstack:get_meta() - if not meta then - return - end - local x = meta:get_int("pos_x") - local y = meta:get_int("pos_y") - local z = meta:get_int("pos_z") - local algo = meta:get_int("algorithm") - if x and y and z then - local pos2 = {x=x, y=y, z=z} - algo = algorithms[algo+1] - local pos1 = vector.round(player:get_pos()) - -- Don't bother calling pathfinder for high distance to avoid freezing - if (not IGNORE_MAX_DISTANCE_SAFEGUARD) and (vector.distance(pos1, pos2) > MAX_DIRECT_DISTANCE) then - minetest.chat_send_player(player:get_player_name(), S("Destination too far away! Set a destination (via placing) within a distance of @1 and try again!", MAX_DIRECT_DISTANCE)) - return - end - local str = S("Path from @1 to @2:", - minetest.pos_to_string(pos1), - minetest.pos_to_string(pos2)) - - minetest.chat_send_player(player:get_player_name(), str) - local time_start = minetest.get_us_time() - local path = minetest.find_path(pos1, pos2, MAX_SEARCH_DISTANCE, MAX_JUMP, MAX_DROP, algo) - local time_end = minetest.get_us_time() - local time_diff = time_end - time_start - str = "" - if not path then - minetest.chat_send_player(player:get_player_name(), S("No path!")) - minetest.chat_send_player(player:get_player_name(), S("Time: @1 ms", time_diff/1000)) - return - end - for s=1, #path do - str = str .. minetest.pos_to_string(path[s]) .. "\n" - local t - if s == #path then - t = "testpathfinder_waypoint_end.png" - elseif s == 1 then - t = "testpathfinder_waypoint_start.png" - else - local c = math.floor(((#path-s)/#path)*255) - t = string.format("testpathfinder_waypoint.png^[multiply:#%02x%02x00", 0xFF-c, c) - end - minetest.add_particle({ - pos = path[s], - expirationtime = 5 + 0.2 * s, - playername = player:get_player_name(), - glow = minetest.LIGHT_MAX, - texture = t, - size = 3, - }) - end - minetest.chat_send_player(player:get_player_name(), str) - minetest.chat_send_player(player:get_player_name(), S("Path length: @1", #path)) - minetest.chat_send_player(player:get_player_name(), S("Time: @1 ms", time_diff/1000)) - end -end - -local function set_destination(itemstack, user, pointed_thing) - if not (user and user:is_player()) then - return - end - local name = user:get_player_name() - local obj - local meta = itemstack:get_meta() - if pointed_thing.type == "node" then - local pos = pointed_thing.above - meta:set_int("pos_x", pos.x) - meta:set_int("pos_y", pos.y) - meta:set_int("pos_z", pos.z) - minetest.chat_send_player(user:get_player_name(), S("Destination set to @1", minetest.pos_to_string(pos))) - return itemstack - end -end - -local function find_path_or_set_algorithm(itemstack, user, pointed_thing) - if not (user and user:is_player()) then - return - end - local ctrl = user:get_player_control() - -- No sneak: Find path - if not ctrl.sneak then - find_path_for_player(user, itemstack) - else - -- Sneak: Set algorithm - local meta = itemstack:get_meta() - local algo = meta:get_int("algorithm") - algo = (algo + 1) % #algorithms - meta:set_int("algorithm", algo) - minetest.chat_send_player(user:get_player_name(), S("Algorithm: @1", algorithms[algo+1])) - return itemstack - end -end - --- Punch: Find path --- Sneak+punch: Select pathfinding algorithm --- Place: Select destination node -minetest.register_tool("testpathfinder:testpathfinder", { - description = S("Pathfinder Tester"), - inventory_image = "testpathfinder_testpathfinder.png", - groups = { testtool = 1, disable_repair = 1 }, - on_use = find_path_or_set_algorithm, - on_secondary_use = set_destination, - on_place = set_destination, -}) - - -- cgit v1.2.3