def __destroyDestructible(self, chunkID, dmgType, destData,
                           isNeedAnimation):
     if self.forceNoAnimation:
         isNeedAnimation = False
     if dmgType == DestructiblesCache.DESTR_TYPE_FALLING_ATOM:
         destrIndex, fallDirYaw, fallSpeed = DestructiblesCache.decodeFallenColumn(
             destData)
         pitchConstr, collisionFlags = BigWorld.wg_getDestructibleFallPitchConstr(
             self.__spaceID, chunkID, destrIndex, fallDirYaw)
         if pitchConstr is None:
             pitchConstr = math.pi / 2.0
         self.__dropDestructible(chunkID, destrIndex, dmgType, fallDirYaw,
                                 pitchConstr, fallSpeed, isNeedAnimation,
                                 collisionFlags)
     if dmgType == DestructiblesCache.DESTR_TYPE_TREE:
         destrIndex, fallDirYaw, pitchConstr, fallSpeed = DestructiblesCache.decodeFallenTree(
             destData)
         _, collisionFlags = BigWorld.wg_getDestructibleFallPitchConstr(
             self.__spaceID, chunkID, destrIndex, fallDirYaw)
         self.__dropDestructible(chunkID, destrIndex, dmgType, fallDirYaw,
                                 pitchConstr, fallSpeed, isNeedAnimation,
                                 collisionFlags)
         WWISE.WG_lightSoundRemove(self.__spaceID, chunkID, destrIndex)
     elif dmgType == DestructiblesCache.DESTR_TYPE_FRAGILE:
         destrIndex, isShotDamage = DestructiblesCache.decodeFragile(
             destData)
         self.__destroyFragile(chunkID, destrIndex, isNeedAnimation,
                               isShotDamage)
         WWISE.WG_lightSoundRemove(self.__spaceID, chunkID, destrIndex)
     elif dmgType == DestructiblesCache.DESTR_TYPE_STRUCTURE:
         destrIndex, matKind, isShotDamage = DestructiblesCache.decodeDestructibleModule(
             destData)
         self.__destroyModule(chunkID, destrIndex, matKind, isNeedAnimation,
                              isShotDamage)
     return