/[enigma]/enigma/world.cc
ViewVC logotype

Diff of /enigma/world.cc

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.32 by dheck, Thu Jan 2 17:20:41 2003 UTC revision 1.33 by dheck, Fri Jan 3 23:00:53 2003 UTC
# Line 25  Line 25 
25  #include "display.hh"  #include "display.hh"
26  #include "player.hh"  #include "player.hh"
27  #include "sound.hh"  #include "sound.hh"
28  #include "px/math.hh"  #include "px/px.hh"
 #include "px/tools.hh"  
 #include "px/array2.hh"  
29  #include "px/dict.hh"  #include "px/dict.hh"
30  #include "lua.hh"  #include "lua.hh"
31  #include "options.hh"  #include "options.hh"
# Line 147  namespace Line 145  namespace
145              if (a->is_flying() || a->is_dead() )              if (a->is_flying() || a->is_dead() )
146                  return V3();                  return V3();
147    
             double damping=options::MouseDamping;  
148              if (a->int_attrib("mouseforce"))              if (a->int_attrib("mouseforce"))
149                  return force*exp(-time*damping);                  return force*exp(-time*options::MouseDamping);
150              else              else
151                  return V3();                  return V3();
152          }          }
# Line 158  namespace Line 155  namespace
155              double damping=options::MouseDamping;              double damping=options::MouseDamping;
156              force *= exp(-dtime*damping);              force *= exp(-dtime*damping);
157    
158              if (length(force) < 0.01)  //             if (length(force) < 0.01)
159                  force = V3();  //                 force = V3();
160          }          }
161      private:      private:
162          void limit_force() {          void limit_force() {}
             if (length(force) > maxforce)  
                 force *= maxforce/length(force);  
         }  
163                    
164          double maxforce;        // maximum force possible          double maxforce;        // maximum force possible
165          V3 force;          V3 force;
# Line 280  get_accel (Actor *a, const V3 & x, const Line 274  get_accel (Actor *a, const V3 & x, const
274      {      {
275          if (Floor *floor = GetFloor(p))          if (Floor *floor = GetFloor(p))
276          {          {
277              f += mouseforce->get_force(a,x,v, time) * floor->mousefactor();              // Mouse force
278                V3 mousef = mouseforce->get_force(a,x,v, time);
279                mousef *= floor->mousefactor();
280                f += mousef;
281    
282                // Friction
283              double vv=length(v);              double vv=length(v);
284              if (vv > 0.01)              if (vv > 0) {
285                  f -= v/vv * options::FrictionFactor*floor->friction();                  V3 frictionf = v * options::FrictionFactor*floor->friction();
286              else                  frictionf /= vv;
287                  f -= v * options::FrictionFactor*(floor->friction());                  frictionf *= pow(vv, 0.8);
288                    f -= frictionf;
289                }
290              f += floor->get_force(a);              f += floor->get_force(a);
291          }          }
292    

Legend:
Removed from v.1.32  
changed lines
  Added in v.1.33

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26