Compare commits

..

No commits in common. "35d088497c59f4f5d0481cdeb2d69242f307b49c" and "04c3b17c780f78fcaa23af8187b5e5e30ff8fcab" have entirely different histories.

10 changed files with 15 additions and 49 deletions

View File

@ -161,17 +161,6 @@ function nodeupdate_single(p, delay)
end end
end end
if minetest.get_node_group(n.name, "hanging_node") ~= 0 then
p_top = {x=p.x, y=p.y+1, z=p.z}
n_top = minetest.env:get_node(p_top)
if minetest.registered_nodes[n_top.name].walkable == true then return end
if minetest.get_node_group(n_top.name, "hanging_node") ~= 0 == false then
drop_attached_node(p)
nodeupdate(p)
end
return
end
if minetest.get_node_group(n.name, "attached_node") ~= 0 then if minetest.get_node_group(n.name, "attached_node") ~= 0 then
if not check_attached_node(p, n) then if not check_attached_node(p, n) then
drop_attached_node(p) drop_attached_node(p)

View File

@ -528,8 +528,7 @@ Special groups
- attached_node: if the node under it is not a walkable block the node will be - attached_node: if the node under it is not a walkable block the node will be
dropped as an item. If the node is wallmounted the dropped as an item. If the node is wallmounted the
wallmounted direction is checked. wallmounted direction is checked.
- hanging_node: drops node(s) beneath it if they contain hanging_node group.
Can only place node when top node is haning_node or walkable true
Known damage and digging time defining groups Known damage and digging time defining groups
---------------------------------------------- ----------------------------------------------
- crumbly: dirt, sand - crumbly: dirt, sand

View File

@ -192,7 +192,7 @@ bool wouldCollideWithCeiling(
collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
f32 pos_max_d, const aabb3f &box_0, f32 pos_max_d, const aabb3f &box_0,
f32 stepheight, f32 dtime, f32 stepheight, f32 dtime,
v3f &pos_f, v3f &speed_f, v3f &accel_f,ActiveObject* self) v3f &pos_f, v3f &speed_f, v3f &accel_f)
{ {
Map *map = &env->getMap(); Map *map = &env->getMap();
//TimeTaker tt("collisionMoveSimple"); //TimeTaker tt("collisionMoveSimple");
@ -300,9 +300,7 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
c_env->getActiveObjects(pos_f,distance * 1.5,clientobjects); c_env->getActiveObjects(pos_f,distance * 1.5,clientobjects);
for (int i=0; i < clientobjects.size(); i++) for (int i=0; i < clientobjects.size(); i++)
{ {
if ((self == 0) || (self != clientobjects[i].obj)) { objects.push_back((ActiveObject*)clientobjects[i].obj);
objects.push_back((ActiveObject*)clientobjects[i].obj);
}
} }
} }
else else
@ -316,9 +314,7 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
for (std::set<u16>::iterator iter = s_objects.begin(); iter != s_objects.end(); iter++) for (std::set<u16>::iterator iter = s_objects.begin(); iter != s_objects.end(); iter++)
{ {
ServerActiveObject *current = s_env->getActiveObject(*iter); ServerActiveObject *current = s_env->getActiveObject(*iter);
if ((self == 0) || (self != current)) { objects.push_back((ActiveObject*)current);
objects.push_back((ActiveObject*)current);
}
} }
} }
} }
@ -462,9 +458,8 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
if (is_object[nearest_boxindex]) { if (is_object[nearest_boxindex]) {
info.type = COLLISION_OBJECT; info.type = COLLISION_OBJECT;
} }
else { else
info.type = COLLISION_NODE; info.type = COLLISION_NODE;
}
info.node_p = node_positions[nearest_boxindex]; info.node_p = node_positions[nearest_boxindex];
info.bouncy = bouncy; info.bouncy = bouncy;
info.old_speed = speed_f; info.old_speed = speed_f;

View File

@ -26,7 +26,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
class Map; class Map;
class IGameDef; class IGameDef;
class Environment; class Environment;
class ActiveObject;
enum CollisionType enum CollisionType
{ {
@ -71,7 +70,7 @@ struct collisionMoveResult
collisionMoveResult collisionMoveSimple(Environment *env,IGameDef *gamedef, collisionMoveResult collisionMoveSimple(Environment *env,IGameDef *gamedef,
f32 pos_max_d, const aabb3f &box_0, f32 pos_max_d, const aabb3f &box_0,
f32 stepheight, f32 dtime, f32 stepheight, f32 dtime,
v3f &pos_f, v3f &speed_f, v3f &accel_f,ActiveObject* self=0); v3f &pos_f, v3f &speed_f, v3f &accel_f);
#if 0 #if 0
// This doesn't seem to work and isn't used // This doesn't seem to work and isn't used

View File

@ -1152,7 +1152,7 @@ public:
v3f p_acceleration = m_acceleration; v3f p_acceleration = m_acceleration;
moveresult = collisionMoveSimple(env,env->getGameDef(), moveresult = collisionMoveSimple(env,env->getGameDef(),
pos_max_d, box, stepheight, dtime, pos_max_d, box, stepheight, dtime,
p_pos, p_velocity, p_acceleration,this); p_pos, p_velocity, p_acceleration);
// Apply results // Apply results
m_position = p_pos; m_position = p_pos;
m_velocity = p_velocity; m_velocity = p_velocity;

View File

@ -502,7 +502,7 @@ void LuaEntitySAO::step(float dtime, bool send_recommended)
v3f p_acceleration = m_acceleration; v3f p_acceleration = m_acceleration;
moveresult = collisionMoveSimple(m_env,m_env->getGameDef(), moveresult = collisionMoveSimple(m_env,m_env->getGameDef(),
pos_max_d, box, stepheight, dtime, pos_max_d, box, stepheight, dtime,
p_pos, p_velocity, p_acceleration,this); p_pos, p_velocity, p_acceleration);
// Apply results // Apply results
m_base_position = p_pos; m_base_position = p_pos;
m_velocity = p_velocity; m_velocity = p_velocity;

View File

@ -96,23 +96,9 @@ EmergeManager::~EmergeManager() {
delete emergethread[i]; delete emergethread[i];
delete mapgen[i]; delete mapgen[i];
} }
emergethread.clear();
for (unsigned int i = 0; i < mapgen.size(); i++)
delete mapgen[i];
mapgen.clear();
for (unsigned int i = 0; i < ores.size(); i++)
delete ores[i];
ores.clear();
for (std::map<std::string, MapgenFactory *>::iterator iter = mglist.begin();
iter != mglist.end(); iter ++) {
delete iter->second;
}
mglist.clear();
delete biomedef; delete biomedef;
delete params;
} }

View File

@ -2494,8 +2494,6 @@ ServerMap::~ServerMap()
delete chunk; delete chunk;
} }
#endif #endif
delete m_mgparams;
} }
bool ServerMap::initBlockMake(BlockMakeData *data, v3s16 blockpos) bool ServerMap::initBlockMake(BlockMakeData *data, v3s16 blockpos)

View File

@ -687,8 +687,9 @@ bool pathfinder::update_all_costs( v3s16 ipos,
if ((g_pos2.totalcost < 0) || if ((g_pos2.totalcost < 0) ||
(g_pos2.totalcost > new_cost)) { (g_pos2.totalcost > new_cost)) {
int old_cost = g_pos2.totalcost;
DEBUG_OUT(LVL "Pathfinder: updating path at: "<< DEBUG_OUT(LVL "Pathfinder: updating path at: "<<
PPOS(ipos2) << " from: " << g_pos2.totalcost << " to "<< PPOS(ipos2) << " from: " << old_cost << " to "<<
new_cost << std::endl); new_cost << std::endl);
if (update_all_costs(ipos2,invert(directions[i]), if (update_all_costs(ipos2,invert(directions[i]),
new_cost,level)) { new_cost,level)) {
@ -846,8 +847,9 @@ bool pathfinder::update_cost_heuristic( v3s16 ipos,
if ((g_pos2.totalcost < 0) || if ((g_pos2.totalcost < 0) ||
(g_pos2.totalcost > new_cost)) { (g_pos2.totalcost > new_cost)) {
int old_cost = g_pos2.totalcost;
DEBUG_OUT(LVL "Pathfinder: updating path at: "<< DEBUG_OUT(LVL "Pathfinder: updating path at: "<<
PPOS(ipos2) << " from: " << g_pos2.totalcost << " to "<< PPOS(ipos2) << " from: " << old_cost << " to "<<
new_cost << " srcdir=" << new_cost << " srcdir=" <<
PPOS(invert(direction))<< std::endl); PPOS(invert(direction))<< std::endl);
if (update_cost_heuristic(ipos2,invert(direction), if (update_cost_heuristic(ipos2,invert(direction),

View File

@ -662,11 +662,9 @@ int EnvRef::l_line_of_sight(lua_State *L) {
v3f pos2 = checkFloatPos(L, 2); v3f pos2 = checkFloatPos(L, 2);
//read step size from lua //read step size from lua
if(lua_isnumber(L, 3)) if(lua_isnumber(L, 3))
stepsize = lua_tonumber(L, 3); stepsize = lua_tonumber(L, 3);
lua_pushboolean(L, env->line_of_sight(pos1,pos2,stepsize)); return (env->line_of_sight(pos1,pos2,stepsize));
return 1;
} }
int EnvRef::l_find_path(lua_State *L) int EnvRef::l_find_path(lua_State *L)