Replies: 21 comments
-
My bad, Map was missing its move assignment / move constructor. I've updated the the repository and you can now do
or
|
Beta Was this translation helpful? Give feedback.
-
Ok it works now. Thanks very much. |
Beta Was this translation helpful? Give feedback.
-
The problem is also evident in MapLayer but I managed to fix it by using the code you added for Map. |
Beta Was this translation helpful? Give feedback.
-
Ok MapLayer still doesnt work |
Beta Was this translation helpful? Give feedback.
-
What is 'MapLayer'? There is |
Beta Was this translation helpful? Give feedback.
-
No. I'm talking about MapLayer in SFMLOrthogonal. That's what I plan to do. |
Beta Was this translation helpful? Give feedback.
-
OK Sorry, I forget there were some examples :) To be honest I wouldn't use them in production code, they are merely there to demonstrate how you might make a drawable from a map layer using vertex arrays. For now you could temporarily remove the deleted constructor/assignment operator lines, although you may run in to other problems further down the line, but you'd at least be able to get something drawing. Vertex arrays are also notorious for the 'tearing' problem, so you may want to implement a renderer using this technique instead. |
Beta Was this translation helpful? Give feedback.
-
Oh, ok. Are there any prebuilt renderers I could use (compatible with this) or must I create my own? |
Beta Was this translation helpful? Give feedback.
-
Other than the examples I don't have any, but you may be able to find someone else using the library and ask them. The general idea is that the lib only parses tmx data into a C++ data format - what you do with the data is up to you, so it can be made to best suit your project. |
Beta Was this translation helpful? Give feedback.
-
Hey, I noticed in the SFML Orthogonal the tile map stops rendering past a certain distance when scaled. |
Beta Was this translation helpful? Give feedback.
-
I think the problem is that I'm scaling 16 x 16 tiles to a SCALE variable. I'm not exactly sure how to fix this issue. |
Beta Was this translation helpful? Give feedback.
-
Ah - presumably you're applying the scale to the transform contained in the sf::RenderStates passed to the draw function? If this is the case updateView() will need the scale applied to it too, so that it's large enough to account for the scaled up chunk size (I think) or apply the scale to the chunksize value to get the appropriate count from the view |
Beta Was this translation helpful? Give feedback.
-
I've tried changing this but now it only renders about half of the map the turns white. |
Beta Was this translation helpful? Give feedback.
-
fallahn I'm really confused about this.. |
Beta Was this translation helpful? Give feedback.
-
OK, based on what you've said the problem sounds like this: the example renderer is using the CPU bound tile coordinates of the map to calculate which tiles ought to be visible on screen. Then, when you apply a scale, things are drawn incorrectly. Bugs aside this sounds like it could be due to the fact that scale values passed via a transform are done GPU side, in what would be the fixed-function equivalent of the vertex shader stage. Technically this means that the CPU side calculations are incorrect relative to the output drawn on screen, because the scale is not taken into account when calculating the view. So what potential solutions are there?
|
Beta Was this translation helpful? Give feedback.
-
Hi, Thanks for the detailed feedback. I think the smartest thing to do would be to resize the view. Thanks fallahn. |
Beta Was this translation helpful? Give feedback.
-
So, the problem isn't with scale. TMXLITE is only loading half my tile map. |
Beta Was this translation helpful? Give feedback.
-
Could this have something to do with the fact that I'm instantiating a new tile layer every frame? |
Beta Was this translation helpful? Give feedback.
-
When you say only half do you mean it only loads 1 out of 2 layers? 4 out of 8? Or is it physically cut in half so a 128x128 tile layer only has 64x128 tiles loaded? Does drilling down through your debugger tell you what's missing? Or is the tmx file loaded, but a limitation in the renderer preventing all of it from being drawn? In general you would load the map once then use the loaded data to create a drawable (or more) for each layer, then repeatedly draw that each frame. You don't need to recreate anything - even if you were using animated sprites you only need to update texture coord data. Once the drawable has been created you can discard the tmx data |
Beta Was this translation helpful? Give feedback.
-
Or is the tmx file loaded, but a limitation in the renderer preventing all of it from being drawn? I believe the issue is this |
Beta Was this translation helpful? Give feedback.
-
I'm using a manager to store my game maps. The code is similar to this.
//_maps is an std::map. name is a string tmx::Map _map MapManager::_maps[name] = _map;
Fails because of operator deleted. So I got rid of that code and am directly storing maps in my game controller. However, I cannot keep loading the map each cycle as that is cpu intensive. I therefore tried to place the maps as private values in the controller but I get this error.
How can I get around this? I tried deleting the Map code but it leads to even more errors. Note std::map insert does not work for some reason
Beta Was this translation helpful? Give feedback.
All reactions