There's a quirk to C++ templates you should be aware of:
Code:
std::list<std::pair<double,double>>
This is likely to cause erorrs on many compilers, because the closing >> is parsed as a stream operator >> and not as two template-parameter closing braces as intended. To avoid this, always put a space between template parameter braces:
Code:
std::list<std::pair<double,double> >
...
Your problems with the debugger are probably related to using templates and the STL, which the debugger doesn't seem to handle very well. Sometimes adding a debug output line will cause the compiler to treat something differently, allowing the run-time debugger to be used on variables it otherwise couldn't. It's not very reliable, unfortunately. I'm hoping MSVS 2010 will be an improvement, but I haven't looked into it yet.
...
I don't have any objections to adding a "treeteir" parameter to techs. It would be best if the parameter could be made optional, though, with the value being determined automatically when it's not specified. Would that be too complicated?
Your TechPanel class seems to be taking a pointer to its parent in its constructor, and then using that to do its rendering and InWindow calculations. This parent dependence suggests that it might be better to remove the TechPanel class, and do everything within the LayoutPanel. This would presumably allow the rendering of all the panels to be optimized in various ways, at least including eliminating some redundant matrix push and popping...
Weird stuff is definitely happening with the scrolling.
The new style of dependency lines is harder to interpret than the old ones. The main problem, I think, is that the lines all originate from the same horizontal position and fan out at very extreme angles, leading to a jumble of cris-crossing lines. The old layout had the lines originating and arriving at all different places around the tech panel.
There are also a few unnecessary complications of the conneciton lines, such as in the attached, that should probably be worked out.
It would also be good to try to group together techs from the same category at the same vertical range of positions, as much as is reasonable, for all tiers of techs, not just the tier one techs. It's nice that each category's tier 1 techs are currently together, but there's a lot more to a category than just tier 1...