SFML community forums

Help => General => Topic started by: sun on September 10, 2014, 10:41:38 pm

Title: Unable to load tiledmap box2d object using sfml-tmxloader
Post by: sun on September 10, 2014, 10:41:38 pm
Hi,

I've been hacking together a simply game prototype using various technologies in an aim to build a quick game. I've started to integrate tiled maps in my game by using sfml-tmxloader to load my map and my static box2d objects. Unfortunately, I'm having odd problems loading my static box2d object via sfml-tmxloader. The problem is that I am unable to actually create box2d object via the tmx::BodyCreator::Add function anywhere else but my main function.

Here's how I load maps and static bodies through my main function:
https://github.com/SundeepK/Clone/blob/wip/add_tmx_loading/src/main.cpp#L37

And here's how I load it in my game class:
https://github.com/SundeepK/Clone/blob/wip/add_tmx_loading/src/Game.cpp#L14

My code is slightly hacky and messy since I've been trying for hours to find out why I am unable to load box2d object from the tmx::BodyCreator::Add anywhere else but my main function (before my game class is actually created). I don't know if my game class is some how altering my box2d world, but I can create box2d manually without using tmx::BodyCreator::Add and they show fine. I much rather avoid having to re-write the code to create box2d object because its pretty much free in tmx::BodyCreator. A second pair of eyes would help me greatly! Thanks.
Title: AW: Unable to load tiledmap box2d object using sfml-tmxloader
Post by: eXpl0it3r on September 13, 2014, 05:18:14 pm
Please create a minimal and complete example.
From your text it's not fully clear to me, what does work and what doesn't.
Title: Re: Unable to load tiledmap box2d object using sfml-tmxloader
Post by: sun on September 16, 2014, 11:12:29 pm
So I fixed the problem a while back and forgot to post back, but to fix the problem I stored a pointer to my b2world object. Which I believe was not working previously (maybe you can confirm my understanding)  because I was passing by reference and then using the copy constructor to copy over my b2world to this other class, which was incorrect. For example:

LoadMap::LoadMap(b2world& box2dWorld) : m_world(box2dWorld){
}

So I switched to using a unique_ptr and will probably use pointers for such objects.