@@ -415,9 +415,16 @@ std::vector<FrameSpec> createAnimationFrames(ITextureSource *tsrc,
415415{
416416 result_frame_length_ms = 0 ;
417417
418- if (image_name.empty () || animation. type == TileAnimationType::TAT_NONE )
418+ if (image_name.empty ())
419419 return {};
420420
421+ // Still create texture if not animated
422+ if (animation.type == TileAnimationType::TAT_NONE) {
423+ u32 id;
424+ video::ITexture *texture = tsrc->getTextureForMesh (image_name, &id);
425+ return {{id, texture}};
426+ }
427+
421428 video::ITexture *orginal_texture = tsrc->getTexture (image_name);
422429 if (!orginal_texture)
423430 return {};
@@ -656,8 +663,8 @@ void WieldMeshSceneNode::changeToMesh(scene::IMesh *mesh)
656663}
657664
658665void createItemMesh (Client *client, const ItemDefinition &def,
659- AnimationInfo &animation_normal,
660- AnimationInfo &animation_overlay,
666+ const AnimationInfo &animation_normal,
667+ const AnimationInfo &animation_overlay,
661668 ItemMesh *result)
662669{
663670 ITextureSource *tsrc = client->getTextureSource ();
@@ -700,7 +707,9 @@ void createItemMesh(Client *client, const ItemDefinition &def,
700707 case NDT_PLANTLIKE: {
701708 const TileLayer &l0 = f.tiles [0 ].layers [0 ];
702709 const TileLayer &l1 = f.tiles [0 ].layers [1 ];
703- mesh = getExtrudedMesh (l0.texture , l1.texture );
710+ mesh = getExtrudedMesh (
711+ extractTexture (f.tiledef [0 ], l0, tsrc),
712+ extractTexture (f.tiledef [1 ], l1, tsrc));
704713 // Add color
705714 result->buffer_info .emplace_back (0 , l0);
706715 result->buffer_info .emplace_back (1 , l1);
@@ -709,7 +718,9 @@ void createItemMesh(Client *client, const ItemDefinition &def,
709718 case NDT_PLANTLIKE_ROOTED: {
710719 // Use the plant tile
711720 const TileLayer &l0 = f.special_tiles [0 ].layers [0 ];
712- mesh = getExtrudedMesh (l0.texture );
721+ mesh = getExtrudedMesh (
722+ extractTexture (f.tiledef_special [0 ], l0, tsrc)
723+ );
713724 result->buffer_info .emplace_back (0 , l0);
714725 break ;
715726 }
0 commit comments