aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
* L-system: Fix leaves cutting through stemsHybrid Dog2017-08-14
|
* Player::getSpeed/setSpeed use const refsLoic Blot2017-08-14
|
* Player class: disable copyLoic Blot2017-08-14
|
* Various server.cpp cleanupsLoic Blot2017-08-14
| | | | | | | * Modernize many for loops * Use constness on many loops * use empty function on many strings tests * various code style fixes
* Server::AsyncRunStep + Server::sendAddNode: modernize codeLoic Blot2017-08-14
| | | | | | | | * Use various modern for loops * Make some loop iterator constants, whereas there weren't * Use empty on some size() > 0 tests * Various little codestyle fixes * Fix an hidden scope variable in Server::SendBlockNoLock
* LocalPlayer::accelerateHorizontal: cleanupsLoic Blot2017-08-13
| | | | | * Properly use v3f default constructor * v3f d_wanted = target_speed - m_speed; and d_wanted = target_speed * 0.1f - m_speed * 0.1f; can be factorized to d_wanted = (target_speed - m_speed) * 0.1f; => d_wanted *= 0.1f;
* Cleanup LocalPlayer::applyControlLoic Blot2017-08-13
| | | | | | * Use Environment interface instead of ClientEnvironemnt * Don't create slippery variable and then re-affect it * itemgroup_get return a int, properly test != 0 to be clearer
* Add slippery group for nodes (players/items slide)Wuzzy2017-08-13
|
* Trigger on_rightclick regardless on the formspec meta fieldSmallJoker2017-08-13
| | | | Document behaviour for older clients.
* Change “Use” key name to “Special”TeTpaAka2017-08-13
|
* Full viewing range key message clarifiedFixer2017-08-12
| | | | To make it sound less confusing to players
* Remove cloud_height settingBen Deutsch2017-08-12
| | | | | | With the cloud API, the cloud_height setting has become obsolete and replaceable by a mod. It, and supporting code, can be removed.
* Mgv5: Make spawn position search more reliableparamat2017-08-12
|
* ServerEnvironment::step: modernize loopsLoic Blot2017-08-11
| | | | | | Use various ranged-based for loops in ServerEnvironment::step Also set ServerObject::getBasePosition const to be compliant ServerEnvironment::deleteParticleSpawner: use a const iterator
* Mgv7: Raise spawn point by 1 node for no mountain caseparamat2017-08-09
|
* Step height: Add as a player object propertyparamat2017-08-09
| | | | | Add settable player step height using the existing object property. Breaks compatibility with old clients, add to protocol version 35.
* Key change menu: Expose more keysWuzzy2017-08-09
|
* Fix error not printed to console when no name is providedJuozas2017-08-09
| | | | | | | | When minetest is launched, if there was no nameprovided in configuration or parameters, the game would not show any error in console. if the --go parameter was also prowided, the game would exit without an error. This is undesired behavior, so this merged commit add the missing function that displays the missing error message in console.
* Singleplayer: Pause game in the key change dialogSmallJoker2017-08-07
| | | | Fixes #6201. @t0ny2 pointed to the right place. Thanks!
* Start off newly generated worlds early at sunrise, 5:15am (#6211)JRottm2017-08-05
| | | | | | | | | | Gives starting singleplayer games this subtle "dawn of a new world" feel. I would have set it even earlier (up to 4:45am), but I was worried that in some pre-existing games the player could be overwhelmed by hostile mobs right at the start, seriously changing gameplay. It's just the default, individual games should be able to override it, and for public servers it's irrelevant anyway, because only the first player to set foot in the world will notice, and that's usually the server admin.
* Add tiny Y offset in collisionMoveSimple() to tweak performanceJens Rottmann2017-08-05
| | | | | | | | | | | | | | | Another small general problem: the player is always standing exactly on the bondary between 2 nodes e.g. Y=1.5 is exactly between nodes Y=1 and Y=2. floatToInt() and myround() will round +/-n.5 always 'outwards' to +/-(n+1), which means they behave differently depending on where you are: they round upwards above sea level and downwards when underground. This inconsistency comes from the way the coordinates are calculated, independent of the specific C++ code. The result is a tiny bit of lost performance when moving underground, because 1 node level more than necessary is checked for collisions. This can be amended by adding a tiny offset to minpos_f.Y, like @paramat suggested. This is not an elegant solution, but still better than wasting CPU.
* Fix player coordinate rounding in collisionMoveSimple() (#6197)Jens Rottmann2017-08-05
| | | | | | | | | | | | | | | | | | | | To determine the area (nodes) where a player movement took place collisionMoveSimple() first took the old/new player coordinates and rounded them to integers, then added the player character's collision box and implicitely rounded the result. This has 2 problems: Rounding the position and the box seperately, then adding the resulting integers means you get twice the rounding error. And implicit rounding always rounds towards 0.0, unlike floatToInt(), which rounds towards the closest integer. Previous (simplified) behavior: round(pos)+(int)box, for example player at Y=0.9, body is 1.75m high: round(0.9)+(int)1.75 = 1+1 = 2. ==> A character's height of 1.75m always got rounded down to 1m, its width of +/-0.3 even became 0. Fixed by adding the floats first, then rounding properly: round(pos+box) = round(0.9+1.75) = round(2.65) = 3.
* Sort box corners correctlyThomas--S2017-08-04
|
* Fix crash when using --go in command lineJuozas Pocius2017-08-03
|
* Dungeons: Use biome 'node_stone' if normal stone types not detectedparamat2017-07-30
| | | | | | | Construct dungeons from the node defined as biome 'node_stone' if 'mapgen_stone', 'mapgen_desert_stone' and 'mapgen_sandstone' are not detected. Feature long-intended by kwolekr/hmmmm and present in code as a TODO.
* GenericCAO: Fix dark model below y = 0paramat2017-07-30
| | | | | | Move point at which light is sampled up to 0.5 nodes above foot level, to avoid that point sometimes passing into the node below causing the model to go dark.
* Darkness detection: Reduce chance of false positives darkening the skyboxLars Hofhansl2017-07-30
| | | | | | | | | The getBackgroundBrightness() function detects darkness in the view direction to decide when to make the skybox dark. The volume checked was too narrow and missed the left and right edges of the view, too easily causing a dark skybox. Widen the checked volume to match a FOV of 72 degrees and a 16:9 aspect ratio game window.
* Make direct item selection keys freely bindableWuzzy2017-07-30
|
* Move the nametag back to the top of the player (#6179)TeTpaAka2017-07-29
| | | read the actual height of the collisionbox
* Noise: Prevent unittest crash caused by division by zeroSmallJoker2017-07-29
|
* Revert "Noise::perlinMap2D,3D: replace a loop init with a single memset call"Loïc Blot2017-07-27
| | | | This reverts commit bc1654feedc90caa8c26328ca6f0fc59fbe5b76c.
* Fix a warning introduced by 4eb59aeeb2f2b535f4eb2a1608189bb03098454eLoïc Blot2017-07-27
|
* Add LuaEntity on_death callback (#6177)Loïc Blot2017-07-27
| | | | | | Add LuaEntity on_death callback This fixes #5474
* Rename previous_was_found to previous_existsLoic Blot2017-07-27
|
* MapBlock::actuallyUpdateDayNightDiff(): little performance optimizationLoic Blot2017-07-27
| | | | don't check isLightDayNightEq if checked on previous node
* compressZlib: don't use a SharedBuffer but a raw u8 * pointerLoic Blot2017-07-27
| | | | | | | | Remove usage of the SharedBuffer in zlib compression which has two problems: * We copied the whole memory block to compress it (not good with mapblocks) * We copied sometimes strings to SharedBuffer to SharedBuffer (2nd time) Use this method in MapNode::serializeBulk + optimize serialization but merging 3 identical loops in a single loop
* Massive performance improvement on correctBlockNodeIdsLoic Blot2017-07-27
| | | | | | correctBlockNodeIds does 2 lookups for each loaded node, one to translate DB ID to name and a second to translate name to real ID. Name to real ID is very consumming if done on every node. As mapblocks are in most cases composed of many identical adjacent nodes, cache previous source and destination id and use them on the next node to prevent any lookup on those maps. This reduce the function load from 15% of my CPU usage to ~0.7%, on the test, calls was reduced from 2.5M lookups to 42k lookups, it's a huge performance gain
* Noise::perlinMap2D,3D: replace a loop init with a single memset callLoic Blot2017-07-27
|
* Remove one unused variable in Server::Receive functionLoic Blot2017-07-27
|
* Remove unused Map::getDayNightDiff + fix one undefined variable in mapblock.cppLoic Blot2017-07-26
|
* TileLayer: use shared_ptr for FrameSpec vector (#6171)Loïc Blot2017-07-26
| | | | | | | | | | | | * TileLayer: use shared_ptr for vector framespec This reduce memory copy of TileLayer from (4 to 16) * FrameSpec where FrameSpec = (sizeof(int) + 3 * sizeof(ptr)) to int + sizeof(ptr) Callgrind difference Before: https://lut.im/RGkiJqQb8T/LeQIEXpAuRzfl7gd.png After: https://lut.im/bcqmwee1xu/cTwtptY5tRuS9lp0.png * Fix one push_back to use vector::emplace_back & optimize inclusions
* VoxelManip cleanups (const ref, const move) + function removal (#6169)Loïc Blot2017-07-26
| | | | | | | | | | * VoxelManip cleanups (const ref, const move) permitting to improve a little bit performance * VoxelArea: precalculate extent (performance enhancement) This permits to reduce extend high cost to zero and drop many v3s16 object creation/removal to calculate extent It rebalance the client thread update to updateFastFaceRow instead of MapBlockMesh generation This will also benefits to mapgen
* Mgv7: Add 'mount_zero_level' parameterparamat2017-07-26
| | | | | | | | Allows setting of the mountain 'zero level' (y where density gradient is zero). It is easy to vertically shift smooth terrain by editing noise parameter 'offset', but vertically shifting mountain terrain was complex and imprecise, involving making a calculation based on an average of the mountain height parameter.
* Move MapEditEventAreaIgnorer to emerge.cppLoic Blot2017-07-25
| | | | It's only used in emerge threads and it's a local object, don't expose it to the whole Minetest
* Network protocol: Document settable player collisionbox (#6168)Paramat2017-07-25
|
* Clouds API: change speed from 'y' to 'z', ColorSpecs in Lua docs (#6164)Ben Deutsch2017-07-24
|
* LBM: use range based for and fixed a loop variable overloading in applyLBMsLoic Blot2017-07-24
|
* Mgv7: Add option to repeat surface biomes in floatlandsparamat2017-07-22
|
* Player collisionbox: Make settableTeTpaAka2017-07-21
| | | | Breaks compatibility with old clients.
* In-cloud fog: Strengthen effect when small view range is usedLars Hofhansl2017-07-18
| | | | | | | Ensure in-cloud fog is always stronger than outside-of-cloud-fog even when using a small view range. Also limit in-cloud fog range to a maximum of 32 nodes to keep it fairly strong when using a large view range.
class="hl kwa">elseif customfct and customfct[i] then return customfct[i] end return static_env[i] end, __newindex = function(t, i, v) if i=="S" or i=="F" or i=="event" or (customfct and customfct[i]) or static_env[i] then debug.sethook() error("Trying to overwrite environment contents") end rawset(t,i,v) end, } setmetatable(fenv, metatbl) local fun, err=loadstring(code) if not fun then return false, err end --set function environment for all functions residing in F, so they get the right variables. Else it's a huge mess... atlatc.replace_function_envs(self.fdata, fenv) setfenv(fun, fenv) local succ, data = pcall(fun) if succ then data=fenv end return succ, data end function env_proto:run_initcode() if self.init_code and self.init_code~="" then self.fdata = {} atprint("[atlatc]Running initialization code for environment '"..self.name.."'") local succ, err = self:execute_code({}, self.init_code, {type="init", init=true}) if not succ then self.init_err=err end end end function env_proto:run_stepcode() if self.step_code and self.step_code~="" then local succ, err = self:execute_code({}, self.step_code, nil, {}) if not succ then --TODO end end end --- class interface function atlatc.env_new(name) local newenv={ name=name, init_code="", step_code="", sdata={} } setmetatable(newenv, {__index=env_proto}) return newenv end function atlatc.env_load(name, data) local newenv={} setmetatable(newenv, {__index=env_proto}) newenv:load(name, data) return newenv end function atlatc.run_initcode() for envname, env in pairs(atlatc.envs) do env:run_initcode() end end function atlatc.run_stepcode() for envname, env in pairs(atlatc.envs) do env:run_stepcode() end end