Author: boucman
Date: Sat Nov  1 10:46:52 2008
New Revision: 30487

URL: http://svn.gna.org/viewcvs/wesnoth?rev=30487&view=rev
Log:
reduce jumpyness at change of hex

Modified:
    trunk/src/unit_animation.cpp
    trunk/src/unit_animation.hpp

Modified: trunk/src/unit_animation.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/unit_animation.cpp?rev=30487&r1=30486&r2=30487&view=diff
==============================================================================
--- trunk/src/unit_animation.cpp (original)
+++ trunk/src/unit_animation.cpp Sat Nov  1 10:46:52 2008
@@ -141,7 +141,9 @@
                hits_(),
                swing_num_(),
                sub_anims_(),
-               unit_anim_(start_time)
+               unit_anim_(start_time),
+               src_(),
+               dst_()
 {
        add_frame(frame.duration(),frame,!frame.does_not_change());
 }
@@ -160,7 +162,9 @@
        hits_(),
        swing_num_(),
        sub_anims_(),
-       unit_anim_(cfg,frame_string)
+       unit_anim_(cfg,frame_string),
+       src_(),
+       dst_()
 {
 //     if(!cfg["debug"].empty()) printf("DEBUG WML: 
FINAL\n%s\n\n",cfg.debug().c_str());
        config::child_map::const_iterator frame_itor 
=cfg.all_children().begin();
@@ -642,8 +646,6 @@
                animated<unit_frame>(),
                accelerate(true),
                parameters_(cfg,frame_string),
-               src_(),
-               dst_(),
                halo_id_(0),
                last_frame_begin_time_(0)
 {
@@ -731,8 +733,10 @@
 void unit_animation::start_animation(int start_time,const map_location &src, 
const map_location &dst, bool cycles, const std::string text, const Uint32 
text_color,const bool accelerate)
 {
                unit_anim_.accelerate = accelerate;
+               src_ = src;
+               dst_ = dst;
                new_animation_frame();
-       unit_anim_.start_animation(start_time, src, dst, cycles);
+       unit_anim_.start_animation(start_time, cycles);
        if(!text.empty()) {
                particule crude_build;
                crude_build.add_frame(1,frame_builder());
@@ -742,17 +746,14 @@
        std::map<std::string,particule>::iterator anim_itor =sub_anims_.begin();
        for( /*null*/; anim_itor != sub_anims_.end() ; anim_itor++) {
                anim_itor->second.accelerate = accelerate;
-               anim_itor->second.start_animation(start_time,src,dst,cycles);
+               anim_itor->second.start_animation(start_time,cycles);
        }
 }
 
 void unit_animation::update_parameters(const map_location &src, const 
map_location &dst)
 {
-       unit_anim_.update_parameters(src, dst);
-       std::map<std::string,particule>::iterator anim_itor =sub_anims_.begin();
-       for( /*null*/; anim_itor != sub_anims_.end() ; anim_itor++) {
-               anim_itor->second.update_parameters(src,dst);
-       }
+       src_ = src;
+       dst_ = dst;
 }
 void unit_animation::pause_animation()
 {
@@ -776,9 +777,9 @@
 {
 
        std::map<std::string,particule>::iterator anim_itor =sub_anims_.begin();
-       unit_anim_.redraw(value,true);
-       for( /*null*/; anim_itor != sub_anims_.end() ; anim_itor++) {
-               anim_itor->second.redraw( value);
+       unit_anim_.redraw(value,src_,dst_,true);
+       for( /*null*/; anim_itor != sub_anims_.end() ; anim_itor++) {
+               anim_itor->second.redraw( value,src_,dst_);
        }
 }
 bool unit_animation::invalidate(const frame_parameters& value) const
@@ -786,28 +787,28 @@
 
        bool result = false;
        std::map<std::string,particule>::const_iterator anim_itor 
=sub_anims_.begin();
-       result |= unit_anim_.invalidate(value,true);
-       for( /*null*/; anim_itor != sub_anims_.end() ; anim_itor++) {
-               result |= anim_itor->second.invalidate(value);
+       result |= unit_anim_.invalidate(value,src_,dst_,true);
+       for( /*null*/; anim_itor != sub_anims_.end() ; anim_itor++) {
+               result |= anim_itor->second.invalidate(value,src_,dst_);
        }
        return result;
 }
-void unit_animation::particule::redraw(const frame_parameters& value,const 
bool primary)
+void unit_animation::particule::redraw(const frame_parameters& value,const 
map_location &src, const map_location &dst, const bool primary)
 {
        const unit_frame& current_frame= get_current_frame();
        const frame_parameters default_val = 
parameters_.parameters(get_animation_time() -get_begin_time());
        if(get_current_frame_begin_time() != last_frame_begin_time_ ) {
                last_frame_begin_time_ = get_current_frame_begin_time();
-               
current_frame.redraw(get_current_frame_time(),true,src_,dst_,&halo_id_,default_val,value,primary);
+               
current_frame.redraw(get_current_frame_time(),true,src,dst,&halo_id_,default_val,value,primary);
        } else {
-               
current_frame.redraw(get_current_frame_time(),false,src_,dst_,&halo_id_,default_val,value,primary);
-       }
-}
-bool unit_animation::particule::invalidate(const frame_parameters& value,const 
bool primary ) const
+               
current_frame.redraw(get_current_frame_time(),false,src,dst,&halo_id_,default_val,value,primary);
+       }
+}
+bool unit_animation::particule::invalidate(const frame_parameters& value,const 
map_location &src, const map_location &dst, const bool primary ) const
 {
        const unit_frame& current_frame= get_current_frame();
        const frame_parameters default_val = 
parameters_.parameters(get_animation_time() -get_begin_time());
-       return 
current_frame.invalidate(need_update(),get_current_frame_time(),src_,dst_,default_val,value,primary);
+       return 
current_frame.invalidate(need_update(),get_current_frame_time(),src,dst,default_val,value,primary);
 }
 
 unit_animation::particule::~particule()
@@ -816,30 +817,15 @@
        halo_id_ = halo::NO_HALO;
 }
 
-void unit_animation::particule::start_animation(int start_time,
-       const map_location &src, const map_location &dst,
-       bool cycles)
+void unit_animation::particule::start_animation(int start_time, bool cycles)
 {
        halo::remove(halo_id_);
        halo_id_ = halo::NO_HALO;
        parameters_.duration(get_animation_duration());
        animated<unit_frame>::start_animation(start_time,cycles);
        last_frame_begin_time_ = get_begin_time() -1;
-       if(src != map_location::null_location || dst != 
map_location::null_location) {
-               src_ = src;
-               dst_ = dst;
-       }
-}
-
-
-
-void unit_animation::particule::update_parameters(const map_location &src, 
const map_location &dst)
-{
-       if(src != map_location::null_location || dst != 
map_location::null_location) {
-               src_ = src;
-               dst_ = dst;
-       }
-}
+}
+
 
 void unit_animator::add_animation(unit* animated_unit,const std::string& event,
                const map_location &src , const int value,bool with_bars,bool 
cycles,

Modified: trunk/src/unit_animation.hpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/unit_animation.hpp?rev=30487&r1=30486&r2=30487&view=diff
==============================================================================
--- trunk/src/unit_animation.hpp (original)
+++ trunk/src/unit_animation.hpp Sat Nov  1 10:46:52 2008
@@ -76,8 +76,6 @@
                                animated<unit_frame>(start_time),
                                accelerate(true),
                                parameters_(),
-                               src_(),
-                               dst_(),
                                halo_id_(0),
                                last_frame_begin_time_(0)
                                {};
@@ -85,18 +83,15 @@
                        virtual ~particule();
                        bool need_update() const;
                        void override(int start_time,const std::string 
highlight="", const std::string blend_ratio ="",Uint32 blend_color = 0,const 
std::string offset="");
-                       void redraw( const frame_parameters& value,const bool 
primary=false);
-                       bool invalidate(const frame_parameters& value, const 
bool primary = false) const;
-                       void start_animation(int start_time,const map_location& 
src,const  map_location& dst, bool cycles=false);
-                       void update_parameters(const map_location& src,const  
map_location& dst);
+                       void redraw( const frame_parameters& value,const 
map_location &src, const map_location &dst, const bool primary=false);
+                       bool invalidate(const frame_parameters& value,const 
map_location &src, const map_location &dst,  const bool primary = false) const;
+                       void start_animation(int start_time, bool cycles=false);
                        const frame_parameters parameters(const 
frame_parameters & default_val,bool primary) const { return 
get_current_frame().merge_parameters(get_current_frame_time(),parameters_.parameters(get_animation_time()-get_begin_time()),default_val,primary);
 };
                        bool accelerate;
                private:
 
                        //animation params that can be locally overridden by 
frames
                        frame_builder parameters_;
-                       map_location src_;
-                       map_location dst_;
                        int halo_id_;
                        int last_frame_begin_time_;
 
@@ -115,6 +110,9 @@
                std::vector<int> swing_num_;
                std::map<std::string,particule> sub_anims_;
                particule unit_anim_;
+               /* these are drawing parameters, but for efficiancy reason they 
are in the anim and not in the particle */
+               map_location src_;
+               map_location dst_;
 };
 
 class unit_animator


_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits

Reply via email to