A c++ Godot engine module, to layer, pack, and merge textures at runtime.
Go to file
2019-10-23 17:10:57 +02:00
doc_classes Docs setup. 2019-10-22 02:10:35 +02:00
rectpack2D Implemented reference counting. 2019-10-21 23:18:06 +02:00
texture_resource Changed the saved extension for the importer. 2019-10-22 21:02:12 +02:00
.gitignore Initial Skeleton. 2019-10-20 21:19:00 +02:00
config.py Docs setup. 2019-10-22 02:10:35 +02:00
LICENSE Initial commit 2019-10-20 21:04:56 +02:00
README.md Update README.md 2019-10-22 20:12:43 +02:00
register_types.cpp Added the new resource, and it's importer to the build, and fixed compile. 2019-10-22 11:53:49 +02:00
register_types.h Renamed the module to texture_packer. 2019-10-21 21:05:02 +02:00
SCsub Added the new resource, and it's importer to the build, and fixed compile. 2019-10-22 11:53:49 +02:00
texture_merger.cpp Added an ERR_FAIL_COND into TexturePacker::add_texture. Aléso fixed an issue from the previous few commits with variables in scope in TextureMerger. 2019-10-23 17:10:57 +02:00
texture_merger.h Now automatic merge in TextureMerger will create your atlases on the next update (_process). Also now it works even if you manipulate the textures directly with the API. 2019-10-23 16:54:28 +02:00
texture_packer.cpp Added an ERR_FAIL_COND into TexturePacker::add_texture. Aléso fixed an issue from the previous few commits with variables in scope in TextureMerger. 2019-10-23 17:10:57 +02:00
texture_packer.h Added a texture_removed signal, and _texture_removed vmethod. The unref_texture, and unref_texture_index functions now return wether the texture actually got removed. 2019-10-23 16:30:41 +02:00

Texture Packer for the Godot Engine

This is a texture packer engine module, for the Godot Engine.

Internally it uses the legacy version of rectpack2D

It should work on all platforms.

Building

  1. Get the source code for the Godot Engine.
git clone https://github.com/godotengine/godot.git godot
  1. Go into Godot's modules directory.
cd ./godot/modules/
  1. Clone this repository
git clone https://github.com/Relintai/texture_packer texture_packer
  1. Build Godot. Tutorial

Features and Usage

TexturePacker

This is the class that can merge textures. Add every texture you want into it using it's API (add_texture()), and then call merge().

add_texture() will return an AtlasTexture, this is the texture you want to use in your classes. It is immediately usable, it will just contain the original texture. Calling merge() will change it, to point to the new (merged) texture.

Supports filters, custom background color, margins.

The keep_original_atlases option:

If you set this to true, and then add AtlasTexture(s), TexturePacker will change these ones (the ones you actually added) after the bake.

You can use this to bake gui textures together, without changing the resources everywhere at runtime. Think of rpgs, when you have a huge number of potential icons that the player can put on his or her actionbars. You can look look at Tales of Maj'Eyal or pretty much every actually complex MMORPGs as an example.

Note: Doing something like this in only recommended, if you can't pre-make the atlases (or it's really unfeasible), you are better off making the atlases yourself during development.

TextureMerger

A Node that can bake textures for you. It uses TexturePacker internally.

It has an exposed Array, so you can assign textures to it in the editor.

PackerImageResource

This is a simple Texture, which just contains an imported Image. It has no logic for drawing.

Useful for textures you only need for baking, as this class will not register it's data into the VisualServer.

The module also contains an editor plugin which can import textures as PackerImageResource Resource.

To access it, click on a texture, switch to the import tab, and in the "Import As" Dropdown, select "Packer Image Recource".