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
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 not check_attached_node(p, n) then
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
dropped as an item. If the node is wallmounted the
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
----------------------------------------------
- crumbly: dirt, sand

View File

@ -192,7 +192,7 @@ bool wouldCollideWithCeiling(
collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
f32 pos_max_d, const aabb3f &box_0,
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();
//TimeTaker tt("collisionMoveSimple");
@ -300,9 +300,7 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
c_env->getActiveObjects(pos_f,distance * 1.5,clientobjects);
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
@ -316,9 +314,7 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
for (std::set<u16>::iterator iter = s_objects.begin(); iter != s_objects.end(); 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]) {
info.type = COLLISION_OBJECT;
}
else {
else
info.type = COLLISION_NODE;
}
info.node_p = node_positions[nearest_boxindex];
info.bouncy = bouncy;
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 IGameDef;
class Environment;
class ActiveObject;
enum CollisionType
{
@ -71,7 +70,7 @@ struct collisionMoveResult
collisionMoveResult collisionMoveSimple(Environment *env,IGameDef *gamedef,
f32 pos_max_d, const aabb3f &box_0,
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
// This doesn't seem to work and isn't used

View File

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

View File

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

View File

@ -96,23 +96,9 @@ EmergeManager::~EmergeManager() {
delete emergethread[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 params;
}

View File

@ -2494,8 +2494,6 @@ ServerMap::~ServerMap()
delete chunk;
}
#endif
delete m_mgparams;
}
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) ||
(g_pos2.totalcost > new_cost)) {
int old_cost = g_pos2.totalcost;
DEBUG_OUT(LVL "Pathfinder: updating path at: "<<
PPOS(ipos2) << " from: " << g_pos2.totalcost << " to "<<
PPOS(ipos2) << " from: " << old_cost << " to "<<
new_cost << std::endl);
if (update_all_costs(ipos2,invert(directions[i]),
new_cost,level)) {
@ -846,8 +847,9 @@ bool pathfinder::update_cost_heuristic( v3s16 ipos,
if ((g_pos2.totalcost < 0) ||
(g_pos2.totalcost > new_cost)) {
int old_cost = g_pos2.totalcost;
DEBUG_OUT(LVL "Pathfinder: updating path at: "<<
PPOS(ipos2) << " from: " << g_pos2.totalcost << " to "<<
PPOS(ipos2) << " from: " << old_cost << " to "<<
new_cost << " srcdir=" <<
PPOS(invert(direction))<< std::endl);
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);
//read step size from lua
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 1;
return (env->line_of_sight(pos1,pos2,stepsize));
}
int EnvRef::l_find_path(lua_State *L)