On Sun, Sep 5, 2010 at 7:31 PM, Mikko Vartiainen <[email protected]> wrote:
> Animation seems to be the big obstacle on 4x10 case. I made crude test
> (see below) with animations, and this alone changes completely
> unplayable game to about 10 fps game.
I made more refined test. Here we simply stop animation if character
is not visible. It makes a huge difference when there is lot a
characters.
--
Mikko
Index: src/character/character.h
===================================================================
--- src/character/character.h (revision 8358)
+++ src/character/character.h (working copy)
@@ -96,7 +96,6 @@
Body* body;
private:
- bool MustBeDrawn() const;
bool MustDrawLostEnergy() const;
bool MustDrawEnergyBar() const;
bool MustDrawName() const;
@@ -123,6 +122,7 @@
bool ComputeHeightMovement(int & height);
public:
+ bool MustBeDrawn() const;
Character (Team& my_team, const std::string &name, Body *char_body);
Character (const Character& acharacter);
~Character();
Index: src/character/body.cpp
===================================================================
--- src/character/body.cpp (revision 8358)
+++ src/character/body.cpp (working copy)
@@ -455,6 +455,7 @@
void Body::Build()
{
+
// Increase frame number if needed
unsigned int last_frame = current_frame;
@@ -498,7 +499,8 @@
ResetMovement();
ApplySqueleton();
- ApplyMovement(current_mvt, current_frame);
+ if (owner->MustBeDrawn())
+ ApplyMovement(current_mvt, current_frame);
int layersCount = (int)current_clothe->GetLayers().size();
@@ -530,7 +532,8 @@
body_mvt.pos.y = GetSize().y - y_max + current_mvt->GetTestBottom();
body_mvt.pos.x = ONE_HALF*(GetSize().x - skel_lst.front()->member->GetSprite().GetWidth());
body_mvt.SetAngle(main_rotation_rad);
- skel_lst.front()->member->ApplyMovement(body_mvt, skel_lst);
+ if (owner->MustBeDrawn())
+ skel_lst.front()->member->ApplyMovement(body_mvt, skel_lst);
need_rebuild = false;
}
_______________________________________________
Wormux-dev mailing list
[email protected]
https://mail.gna.org/listinfo/wormux-dev