Browse Source

Update SpritePacker.cpp

to guarantee best results, either: "stbrp_init_target", the forth parameter need either:
     1. make sure 'num_nodes' >= 'width'
or  2. call stbrp_allow_out_of_mem() defined below with 'allow_out_of_mem = 1'
error408 6 years ago
parent
commit
fb866a87fd
1 changed files with 5 additions and 11 deletions
  1. 5 11
      Source/Tools/SpritePacker/SpritePacker.cpp

+ 5 - 11
Source/Tools/SpritePacker/SpritePacker.cpp

@@ -289,19 +289,13 @@ void Run(Vector<String>& arguments)
 
 
             stbrp_context packerContext;
             stbrp_context packerContext;
             stbrp_node packerMemory[PACKER_NUM_NODES];
             stbrp_node packerMemory[PACKER_NUM_NODES];
-            stbrp_init_target(&packerContext, textureWidth, textureHeight, packerMemory, packerInfos.Size());
-            stbrp_pack_rects(&packerContext, packerRects, packerInfos.Size());
-
-            // check to see if everything fit
-            for (unsigned i = 0; i < packerInfos.Size(); ++i)
+            stbrp_init_target(&packerContext, textureWidth, textureHeight, packerMemory, PACKER_NUM_NODES);
+            if (!stbrp_pack_rects(&packerContext, packerRects, packerInfos.Size()))
             {
             {
-                stbrp_rect* packerRect = &packerRects[i];
-                if (!packerRect->was_packed)
-                {
-                    fit = false;
-                    break;
-                }
+                // check to see if everything fit
+                fit = false;
             }
             }
+
             if (fit)
             if (fit)
             {
             {
                 success = true;
                 success = true;