All pastes #2009975 Raw Edit

Stuff

public diff v1 · immutable
#2009975 ·published 2010-12-03 21:53 UTC
rendered paste body
Index: src/character/movement.h===================================================================--- src/character/movement.h	(revision 9176)+++ src/character/movement.h	(working copy)@@ -31,16 +31,18 @@  typedef struct _xmlNode xmlNode; +// Position of a member relative to its superior one class member_mvt-{  // Position of a member relative to its superior one+{  +  MemberType type;   Double angle_rad; // angle in radian public:   Point2d pos;   Point2d scale;   /* SetAngle take radian values */-  inline void SetAngle(Double angle) { angle_rad = RestrictAngle(angle); }+  void SetAngle(Double angle) { angle_rad = RestrictAngle(angle); }   /* GetAngle returns radian values */-  inline const Double &GetAngle() const { return angle_rad; }+  const Double &GetAngle() const { return angle_rad; }   Double alpha;   int follow_cursor_limit;   bool follow_cursor;@@ -48,17 +50,22 @@   bool follow_half_crosshair;   bool follow_speed;   bool follow_direction;-  member_mvt(): angle_rad(0), pos(0.0, 0.0), scale(1.0, 1.0), alpha(1),-                follow_cursor_limit(0), follow_cursor(false),-                follow_crosshair(false), follow_half_crosshair(false),-                follow_speed(false), follow_direction(false)+  member_mvt(const std::string& name = DUMMY_MEMBER)+    : type(name)+    , angle_rad(ZERO), pos(ZERO, ZERO), scale(ONE, ONE), alpha(ONE)+    , follow_cursor_limit(0), follow_cursor(false)+    , follow_crosshair(false), follow_half_crosshair(false)+    , follow_speed(false), follow_direction(false)   { };+  operator const MemberType& () const { return type; }+  bool operator==(const MemberType& other) const { return type == other; }+  bool operator!=(const MemberType& other) const { return type == other; } };  class Movement { public:-  typedef std::map<MemberType, class member_mvt> member_def; // Describe the position of each member for a given frame+  typedef std::vector<class member_mvt> member_def; // Describe the position of each member for a given frame  private:   uint ref_count;Index: src/character/member.cpp===================================================================--- src/character/member.cpp	(revision 9182)+++ src/character/member.cpp	(working copy)@@ -18,7 +18,6 @@  ******************************************************************************  *****************************************************************************/ -#include <map> #include <iostream> #include "character/character.h" #include "character/member.h"Index: src/character/member_type.h===================================================================--- src/character/member_type.h	(revision 9182)+++ src/character/member_type.h	(working copy)@@ -21,13 +21,15 @@ #ifndef MEMBER_TYPE_H #define MEMBER_TYPE_H +#define DUMMY_MEMBER "dummy"+ class MemberType {   typedef std::vector<std::string> Vector;   static Vector Map; public:   int type;-  MemberType(const std::string& name)+  MemberType(const std::string& name = DUMMY_MEMBER)   {     uint count;     for (count = 0; count<Map.size(); count++) {Index: src/character/movement.cpp===================================================================--- src/character/movement.cpp	(revision 9176)+++ src/character/movement.cpp	(working copy)@@ -18,7 +18,6 @@  ******************************************************************************  *****************************************************************************/ -#include <map> #include <iostream> #include <cstdio> #include "character/movement.h"@@ -61,19 +60,20 @@    * thr array to be able to get all of them. */   frames.resize(nodes.size()); +  uint count=0;   for (int frame_number=0; it != end; ++it, frame_number++) {      xmlNodeArray members = XmlReader::GetNamedChildren(*it, "member");     xmlNodeArray::const_iterator it2;     MSG_DEBUG("body.movement", "    Found %i frame members", members.size());+    frames[frame_number].resize(members.size());      for (it2 = members.begin(); it2 != members.end(); ++it2) {-       const xmlNode *child = *it2;       std::string member_type;       XmlReader::ReadStringAttr(child, "type", member_type); -      member_mvt mvt;+      member_mvt mvt(member_type);       int dx = 0, dy = 0, angle_deg = 0;       Double scale_x = 1.0, scale_y = 1.0, tmp_alpha = 1.0; @@ -107,7 +107,7 @@       always_moving |= mvt.follow_speed;       always_moving |= mvt.follow_direction; -      frames[frame_number][member_type] = mvt;+      frames[frame_number].push_back(mvt);     }   } }Index: src/character/body.cpp===================================================================--- src/character/body.cpp	(revision 9176)+++ src/character/body.cpp	(working copy)@@ -20,7 +20,7 @@  *****************************************************************************/ #include <sstream> #include <iostream>-#include <map>+#include <algorithm> #include <WARMUX_debug.h> #include "character/body.h" #include "character/character.h"@@ -299,7 +299,6 @@    std::vector<junction *>::iterator member = skel_lst.begin();   bool                              useCrossHair;-  member_mvt                        mb_mvt;   Movement::member_def              movMember = mvt->GetFrames()[frame];   Movement::member_def::iterator    itMember; @@ -309,12 +308,12 @@   for (; member != skel_lst.end(); ++member) {     ASSERT(frame < mvt->GetFrames().size()); -    itMember = movMember.find((*member)->member->GetType());+    itMember = std::find(movMember.begin(), movMember.end(), (*member)->member->GetType());      if (itMember != movMember.end()) {        // This member needs to be moved :-      mb_mvt       = itMember->second;+      member_mvt& mb_mvt = *itMember;        useCrossHair = ActiveTeam().AccessWeapon().UseCrossHair();