From 3e50850260db13ec63ce4ca0e47e7fd7e30ce484 Mon Sep 17 00:00:00 2001 From: Loïc Blot Date: Wed, 26 Jul 2017 20:12:48 +0200 Subject: TileLayer: use shared_ptr for FrameSpec vector (#6171) * TileLayer: use shared_ptr for vector framespec This reduce memory copy of TileLayer from (4 to 16) * FrameSpec where FrameSpec = (sizeof(int) + 3 * sizeof(ptr)) to int + sizeof(ptr) Callgrind difference Before: https://lut.im/RGkiJqQb8T/LeQIEXpAuRzfl7gd.png After: https://lut.im/bcqmwee1xu/cTwtptY5tRuS9lp0.png * Fix one push_back to use vector::emplace_back & optimize inclusions --- src/wieldmesh.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/wieldmesh.cpp') diff --git a/src/wieldmesh.cpp b/src/wieldmesh.cpp index e0d6b7e0d..c532a048c 100644 --- a/src/wieldmesh.cpp +++ b/src/wieldmesh.cpp @@ -593,7 +593,7 @@ void postProcessNodeMesh(scene::SMesh *mesh, const ContentFeatures &f, material.MaterialType = *mattype; } if (layer->animation_frame_count > 1) { - FrameSpec animation_frame = layer->frames[0]; + const FrameSpec &animation_frame = (*layer->frames)[0]; material.setTexture(0, animation_frame.texture); } else { material.setTexture(0, layer->texture); @@ -601,7 +601,7 @@ void postProcessNodeMesh(scene::SMesh *mesh, const ContentFeatures &f, if (use_shaders) { if (layer->normal_texture) { if (layer->animation_frame_count > 1) { - FrameSpec animation_frame = layer->frames[0]; + const FrameSpec &animation_frame = (*layer->frames)[0]; material.setTexture(1, animation_frame.normal_texture); } else material.setTexture(1, layer->normal_texture); -- cgit v1.2.3