std::make_shared<anim::Vector>(...)
Make a shared pointer to an anim::Vector, alright.
Yep, I'm using shared pointers because there are multiple classes like anim::Vector, which are derived from a single base class. They're stored in a vector of base class pointers, so they need to be allocated dynamically on the heap. For one reason or another, it was easier to use shared_ptr than manually delete. I can't seem to remember now.
call(..., ...)
Presumably calling some function a with arguments b, yes?
Yep, it's a macro that looks like this:
#define call(func, obj) std::bind(func, obj, std::placeholders::_1)
This line would be much longer without that in place.
static_cast<...>(...)
Statically convert something to a new type.
This is where it gets complicated. That function later on, PolygonNode::setPosition, is actually overloaded. It can take a sf::Vector2f object, which is just a 2D float coordinate, or two floats separately. So when I bind the function, the compiler doesn't know which instance of the function to use. Which leads to...
void(PolygonNode::*)(const sf::Vector2f&)
Brain.exe has stopped working. Some crazy polymorphism and conversion, I'm guessing.
Casting it to a specific instance of the function using function pointer syntax. I didn't even know PolygonNode::* was something I could do, but I guess it specifies it as a member of that class so that a "this" pointer gets passed in.