diff options
author | Porteries Tristan <republicthunderbolt9@gmail.com> | 2015-07-24 18:05:38 +0300 |
---|---|---|
committer | Porteries Tristan <republicthunderbolt9@gmail.com> | 2015-07-24 18:08:55 +0300 |
commit | d2fac7df32889a8a8da2f08f0b7c7af6869fb888 (patch) | |
tree | dfe1cbace06bc61f26e0ebb1c51c1f14f564ee4a /source | |
parent | dc80ff9b56df7a509b62031f9e638347072ab927 (diff) |
BGE: Fix T45544 Adding Armatures takes an increasing amount of logic time
Armatures were not totaly freed (only the armature object not the armature) and the original armature user count was not decrease after replication.
Diffstat (limited to 'source')
-rw-r--r-- | source/gameengine/Converter/BL_ArmatureObject.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/source/gameengine/Converter/BL_ArmatureObject.cpp b/source/gameengine/Converter/BL_ArmatureObject.cpp index 795a7a9ae87..fb5055c9912 100644 --- a/source/gameengine/Converter/BL_ArmatureObject.cpp +++ b/source/gameengine/Converter/BL_ArmatureObject.cpp @@ -230,6 +230,8 @@ BL_ArmatureObject::BL_ArmatureObject( m_origObjArma = armature; // Keep a copy of the original armature so we can fix drivers later m_objArma = BKE_object_copy(armature); m_objArma->data = BKE_armature_copy((bArmature *)armature->data); + // During object replication ob->data is increase, we decrease it now because we get a copy. + id_us_min(&((bArmature *)m_origObjArma->data)->id); m_pose = m_objArma->pose; // need this to get iTaSC working ok in the BGE m_pose->flag |= POSE_GAME_ENGINE; @@ -250,8 +252,10 @@ BL_ArmatureObject::~BL_ArmatureObject() delete channel; } - if (m_objArma) + if (m_objArma) { + BKE_libblock_free(G.main, m_objArma->data); BKE_libblock_free(G.main, m_objArma); + } } |