Hello,
I use the following structure for loading instanced and atlased sprites in my game: I load up a file called an "atlas" which contains metadata on all sprites and animations in the atlas. When I want to display a sprite onscreen or give an entity a sprite, I use a class called "SpriteInstance" which adds a destination rectangle (screen rect) for the sprite and an animation frame, but uses the underlying Sprite which is found in the SpriteList in the atlas. So, 1 atlas, many sprites, and (potentially) many more sprite insatnces. The only problem I'm having now is how to refernce the "parent" sprite and the starting animation when creating a SpriteInstance. My constructor is as follows:
SpriteInstance(Sprite * parent, float x, float y, float scaleX, float scaleY, std::wstring startingAnimation)
I tried using the wstring to do some hashing or whatnot, but I am quite confused on that subject. I also just used the raw Sprite pointer, and I will have to do something like this:
auto IsLevel1Atlas = [](std::unique_ptr<Atlas> atlas) -> bool { return atlas->GetName() == L"Level1Atlas"; };
#define &(std::find_if(mAtlasList.begin(), mAtlasList.end(), IsLevel1Atlas)->get()->GetSpriteList().find(L"Background")->second) SpritePtr
mSpriteInstanceList.push_back(SpriteInstance(SpritePtr, 0, 0, INTENDED_SCREEN_WIDTH, INTENDED_SCREEN_HEIGHT, startinganimation);
Which doesn't compile by the way. Is there a better way?
Thanks in advance.
-Dave Ottley
Sprites and Atlases
The system I use has what you call animation frames as objects in their own right (I call them cells). There is a function to find one by name, and after that you can pass around a pointer to it just like you do with the parent in your example. In fact, the cell knows it's parent so you don't need to pass that around separately. So my code to create an instance looks something like this:
cell = cell_manager.lookup_cell("example_cell_name");
new_sprite = std::auto_ptr<dx_sprite>(new dx_sprite());
new_sprite->set_cell(cell);
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement