aboutsummaryrefslogtreecommitdiff
path: root/src/script/lua_api/l_vmanip.h
Commit message (Collapse)AuthorAge
* C++ modernize: Pragma once (#6264)Loïc Blot2017-08-17
| | | | * Migrate cpp headers to pragma once
* C++11 cleanup on constructors (#6000)Vincent Glize2017-06-19
| | | | * C++11 cleanup on constructors dir script
* Replace luaL_reg with luaL_Reg as recent LuaJIT dropped the Lua 5.0 compat ↵Loïc Blot2017-04-08
| | | | | (#5541) We are bundling Lua5.1 which has same macro
* Clang-format: fix some header files and remove them from whitelistLoic Blot2017-04-07
|
* Shorten ManualMapVoxelManipulator to MMVManipkwolekr2015-01-05
|
* Add minetest.generate_ores() and minetest.generate_decorations()kwolekr2015-01-04
|
* LuaVoxelManip: Remove blank allocatorkwolekr2014-12-29
|
* LuaVoxelManip: Add option to allocate blank datakwolekr2014-12-27
|
* Add LuaVoxelManip methods: get_node_at() and set_node_at()kwolekr2014-09-01
|
* Update Mapgen VoxelManipulator on buffer invalidationkwolekr2014-09-01
|
* LuaVoxelManip: Add get_param2_data and set_param2_datakwolekr2014-01-19
|
* LuaVoxelManip: Add get_light_data() and set_light_data()kwolekr2013-11-30
|
* Omnicleanup: header cleanup, add ModApiUtil shared between game and mainmenuKahrl2013-08-14
|
* LuaVoxelManip: Fix minor bug with set_lighting, remove coordinate params for ↵kwolekr2013-06-29
| | | | light and liquid updates
* LuaVoxelManip: Separate VoxelManip data get/set from emerging/blitting data ↵kwolekr2013-06-27
| | | | back to map
* Add minetest.get_mapgen_object to APIkwolekr2013-06-27
|
* Add LuaVoxelManipkwolekr2013-06-27
lass="hl opt">*> &modified_blocks); /*! * Copies back nodes from a voxel manipulator * to the map and updates lighting. * For server use only. * * \param modified_blocks output, contains all map blocks that * the function modified */ void blit_back_with_light(ServerMap *map, MMVManip *vm, std::map<v3s16, MapBlock*> *modified_blocks); /*! * Corrects the light in a map block. * For server use only. * * \param block the block to update */ void repair_block_light(ServerMap *map, MapBlock *block, std::map<v3s16, MapBlock*> *modified_blocks); /*! * This class iterates trough voxels that intersect with * a line. The collision detection does not see nodeboxes, * every voxel is a cube and is returned. * This iterator steps to all nodes exactly once. */ struct VoxelLineIterator { public: //! Starting position of the line in world coordinates. v3f m_start_position; //! Direction and length of the line in world coordinates. v3f m_line_vector; /*! * Each component stores the next smallest positive number, by * which multiplying the line's vector gives a vector that ends * on the intersection of two nodes. */ v3f m_next_intersection_multi { 10000.0f, 10000.0f, 10000.0f }; /*! * Each component stores the smallest positive number, by which * m_next_intersection_multi's components can be increased. */ v3f m_intersection_multi_inc { 10000.0f, 10000.0f, 10000.0f }; /*! * Direction of the line. Each component can be -1 or 1 (if a * component of the line's vector is 0, then there will be 1). */ v3s16 m_step_directions { 1, 1, 1 }; //! Position of the current node. v3s16 m_current_node_pos; //! Index of the current node s16 m_current_index = 0; //! Position of the start node. v3s16 m_start_node_pos; //! Index of the last node s16 m_last_index; /*! * Creates a voxel line iterator with the given line. * @param start_position starting point of the line * in voxel coordinates * @param line_vector length and direction of the * line in voxel coordinates. start_position+line_vector * is the end of the line */ VoxelLineIterator(const v3f &start_position,const v3f &line_vector); /*! * Steps to the next voxel. * Updates m_current_node_pos and * m_previous_node_pos. * Note that it works even if hasNext() is false, * continuing the line as a ray. */ void next(); /*! * Returns true if the next voxel intersects the given line. */ inline bool hasNext() const { return m_current_index < m_last_index; } /*! * Returns how many times next() must be called until * voxel==m_current_node_pos. * If voxel does not intersect with the line, * the result is undefined. */ s16 getIndex(v3s16 voxel); }; } // namespace voxalgo