]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/environment.cpp
forgot some files
[dragonfireclient.git] / src / environment.cpp
index ef973fb1e68dbe91bedd3c95b497a732549c00b2..d144baeefd375b713992efb4835ca4bde838f8e0 100644 (file)
@@ -115,6 +115,26 @@ Player * Environment::getRandomConnectedPlayer()
        return NULL;
 }
 
+Player * Environment::getNearestConnectedPlayer(v3f pos)
+{
+       core::list<Player*> connected_players = getPlayers(true);
+       f32 nearest_d = 0;
+       Player *nearest_player = NULL;
+       for(core::list<Player*>::Iterator
+                       i = connected_players.begin();
+                       i != connected_players.end(); i++)
+       {
+               Player *player = *i;
+               f32 d = player->getPosition().getDistanceFrom(pos);
+               if(d < nearest_d || nearest_player == NULL)
+               {
+                       nearest_d = d;
+                       nearest_player = player;
+               }
+       }
+       return nearest_player;
+}
+
 core::list<Player*> Environment::getPlayers()
 {
        return m_players;
@@ -464,9 +484,6 @@ void ServerEnvironment::step(float dtime)
        {
                m_random_spawn_timer += myrand_range(2.0, 20.0);
 
-               /*TestSAO *obj = new TestSAO(0,
-                               v3f(myrand_range(-2*BS,2*BS), BS*5, myrand_range(-2*BS,2*BS)));*/
-
                /*
                        Find some position
                */
@@ -480,40 +497,20 @@ void ServerEnvironment::step(float dtime)
                if(player)
                        pos = player->getPosition();
                pos += v3f(
-                       myrand_range(-5,5)*BS,
+                       myrand_range(-3,3)*BS,
                        0,
-                       myrand_range(-5,5)*BS
+                       myrand_range(-3,3)*BS
                );
 
                /*
-                       Create a LuaSAO (ServerActiveObject)
-               */
-
-               LuaSAO *obj = new LuaSAO(this, 0, pos);
-               
-               /*
-                       Select a random type for it
+                       Create a TestSAO object
                */
-               std::string objectdir = porting::getDataPath("luaobjects");
-               std::vector<fs::DirListNode> dirlist = fs::GetDirListing(objectdir);
-               if(dirlist.size() > 0)
-               {
-                       u32 selected_i = myrand_range(0, dirlist.size()-1);
-                       std::string selected_name = "";
-                       selected_name = dirlist[selected_i].name;
-                       /*for(u32 i=0; i<dirlist.size(); i++)*/
-                       
-                       dstream<<"ServerEnvironment: Selected script name \""<<selected_name
-                                       <<"\" for new lua object"<<std::endl;
 
-                       /*
-                               Load the scripts for the type
-                       */
-                       obj->initializeFromNothing(selected_name.c_str());
+               TestSAO *obj = new TestSAO(this, 0,
+                               v3f(myrand_range(-2*BS,2*BS), BS*5, myrand_range(-2*BS,2*BS)));
 
-                       // Add the object to the environment
-                       addActiveObject(obj);
-               }
+               // Add the object to the environment
+               addActiveObject(obj);
        }
 
        } // enable_experimental
@@ -788,10 +785,20 @@ void ClientEnvironment::step(float dtime)
 
                f32 dtime_part;
                if(dtime_downcount > dtime_max_increment)
+               {
                        dtime_part = dtime_max_increment;
+                       dtime_downcount -= dtime_part;
+               }
                else
+               {
                        dtime_part = dtime_downcount;
-               dtime_downcount -= dtime_part;
+                       /*
+                               Setting this to 0 (no -=dtime_part) disables an infinite loop
+                               when dtime_part is so small that dtime_downcount -= dtime_part
+                               does nothing
+                       */
+                       dtime_downcount = 0;
+               }
                
                /*
                        Handle local player
@@ -884,7 +891,8 @@ void ClientEnvironment::step(float dtime)
                                        {
                                                v3s16 p_blocks = getNodeBlockPos(bottompos);
                                                MapBlock *b = m_map->getBlockNoCreate(p_blocks);
-                                               b->updateMesh(m_daynight_ratio);
+                                               //b->updateMesh(m_daynight_ratio);
+                                               b->setMeshExpired(true);
                                        }
                                }
                        }