Metadata-Version: 2.1
Name: panda3d-tmx2bam
Version: 0.0.26
Summary: CLI tool for converting Tiled TMX files to Panda3D BAM files.
Home-page: https://github.com/janentikan/tmx2bam
Author: janEntikan
Author-email: bandaibandai@rocketship.com
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
Requires-Dist: panda3d

CLI tool for converting Tiled TMX files to Panda3D BAM files.

Usage:
```
$ pip install panda3d-tmx2bam
$ tmx2bam path/to/tmx/file.tmx path/to/bam/file.bam -prefabs=path/to/prefabs.bam
```
or
```
from tmx2bam import Tmx2Bam
from direct.showbase.ShowBase import ShowBase

base = ShowBase()
tmx_map = Tmx2Bam("path/to/tmx/file.tmx", prefabs="path/to/prefabs.bam")
tmx_map.node.reparent_to(render)
base.run()
```
Prefabs are optional. Without them all tiles will be cards.
Find important tiles and their properties like so:
```
tiles_with_my_property = tmx_map.node.find_all_matches('**/=my_property_name')
for tile in tiles_with_my_property:
  my_property_value = tile.get_tag("my_property_name")
```
You can read more about searching Panda3d's scene graph here:
https://docs.panda3d.org/1.10/python/programming/scene-graph/searching-scene-graph


Currently supports:
* TMX file with CSV data (default)
* Custom properties as PandaNode tags
* Multiple tilesheets
* Multiple layers and Groups
* Animated tiles
* Object layer/Objects (point, poly, rectangle, text, image)
* Background images
* Merge animated sprites
* Allow more shapes than just cards

Left to do:
* Infinite maps (chunks)
* Hexagonal and Isometric tiles
* Tile render order
* Tilesheet image collection
* Embedded tilesheet in tmx
* Embedding texture in bam
* Tiled features I'm not aware of
* Error handling
* A better readme

Exporter specific custom layer properties:
* "flatten" will flatten_strong() the layer
* "store_data" will store the data in the layer with set_python_tag()
* "z" set's the layer's z height.

Prefabs:
To use prefabs, simply make a bam (with blender and blend2bam for example),
where each root object is a nodepath named after a type in the spritesheet's
tsx. Tmx2bam will then replace the tiles or objects that have this type assigned
with this nodepath.

Mind:
* The Y axis is inverted in panda3d.
* Animated sprites can only have one steady frame-rate that you can set on the first frame in Tiled.
* Currently the image resolutions have to be power of two.
* Rendering tons of individual tiles is slow. Use the "flatten" property as much as possible.
* The ellipse and point objects are not drawn at this time, they're empty nodepaths.
* I'm not a programmer but I play one on TV. Your mileage may vary.

Fun snippets:
* Adding a "repeat" property to a "cube" prefabed tile to make towers and large walls and things.
```
for layer in tmx2bam.node.find_all_matches("**/=repeat"):
    repetitions = layer.get_tag("repeat")
    repeats_node = NodePath(layer.name+"-repeat")
    for repetition in range(int(repetitions)):
        repeat = NodePath("repeat")
        layer.copy_to(repeat)
        repeat.set_z(layer.get_z()+repetition-1)
        repeat.reparent_to(repeats_node)
    repeats_node.flatten_strong()
    repeats_node.reparent_to(layer)
```

Licensed WTFPL.


