From: Marijn <m.j...@st...> - 2004-02-25 18:48:02
|
A few things... There seem to be quite some places in the source where pairs of coordinates are used. Right now these are often represented as std::pair<double, double> or as two separate variables. Is there anything against introducing a vector class specially for this? I have written one myself that has been used in quite a few programs already, you can take a look at it at http://www.student.kun.nl/m.j.haverbeke/vector2.h (there is also a vector3.h for 3-dimensional vectors in the same directory, might be useful later on). It is a template that groups two variables together and allows arithmetic operations on them, comes with typedefs for the commonly used scalar types. I've found it makes arithmetic with vectors a lot more straightforward and readable (std::pair<int, int> becomes Vector2i, pos.first() becomes pos.x()). I'll volunteer for updating current code to use this class... On the forum Noelte asked me to take a look at the elliptical galaxy generation. I messed with it a little and I think my new version is nice, but I was wondering whether there are any short time plans for introducing variable-size galaxies. Right now galaxy size seems to be a contant, and it is really hard to get good-looking results when cramming hundreds of stars into the current (rather small) area. Also, on my computer there seems to be a bug that causes the game to think the mouse is somewhat higher than it actually is (if I am making any sense), I have to click under buttons to press them. I have the latest version of GiGi (got it from its CVS two days ago), and of the other libraries I use the versions that came with the windows kit file from the CVS. Marijn |
From: Dennis B. <de...@un...> - 2004-02-25 19:25:05
|
Marijn wrote: > used scalar types. I've found it makes arithmetic with vectors a lot more > straightforward and readable (std::pair<int, int> becomes Vector2i, > pos.first() becomes pos.x()). I'll volunteer for updating current code to > use this class... Do we really have so much vector-arithmetic in FreeOrion? If not, I would like to stick to std::pair (we could typedef a Vector if we need to). Otherwise, we would probably end up in some functions taking/returing pair, other Vector; futhermore, I think using Vector2i (that should be Vector2f _if_ we use it anyway) would also require modifications to work nicely with the STL (to be used as a key, for example: IIRC(!) you could create a map <pair<>, whatever>, but I'm not sure) The other thing would be that I would also need to wrap this class to make it available in Python, and I'd like to stick to one type of tuples. Just my $0.02 |
From: Marijn <m.j...@st...> - 2004-02-25 19:39:08
|
> Do we really have so much vector-arithmetic in FreeOrion? If not, I > would like to stick to std::pair (we could typedef a Vector if we need > to). I saw heaps of it in the universe-generating code, other places where it would exist are ship movement and the (future) combat engine. > Otherwise, we would probably end up in some functions taking/returing > pair, other Vector; I already volunteered to convert the current codebase. > futhermore, I think using Vector2i (that should be > Vector2f _if_ we use it anyway) would also require modifications to work > nicely with the STL (to be used as a key, for example: IIRC(!) you > could create a map <pair<>, whatever>, but I'm not sure) std::map requires operator<, this is currently not defined on my vector class but that would be easy (though not entirely elegant, comparing the length would be too inefficient, comparing first the first, then the second member would only make sense for key-comparing. Now I am curiouw how std::pair defines operator<) > The other thing would be that I would also need to wrap this class to > make it available in Python, and I'd like to stick to one type of tuples. Me too! Just that I much prefer a specialized vector class over std::pair. Marijn |
From: <no...@we...> - 2004-02-25 21:45:12
|
Hi, i think in void FleetDetailPanel::SetFleet(Fleet* fleet) if (m_read_only) m_fleet_connection = GG::Connect(m_fleet->StateChangedSignal(), &FleetDetailPanel::Refresh, this); is pretty useless!? Would somebody show me an example where this code is useful? Ronald. PS: Update bug in FleetWindow as reported by zach is fixed. Checkin follows. |