From 9e9c3be3f6013b0895d7e6d256cf6f8561573e05 Mon Sep 17 00:00:00 2001 From: NordonOscillius Date: Sun, 28 Oct 2012 14:59:41 +0300 Subject: [PATCH] Update src/alternativa/engine3d/shadows/OmniLightShadow.as MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The removeCaster() method was fixed: it seems like removing a caster from the end of the _casters vector won't work. For example, if _casters has only one element then calling _casters[0] = _casters.pop(); will first remove that element from vector (with pop() method) and then add it again with the same index. Метод removeCaster() был исправлен: похоже, удаление с его помощью последнего объекта из вектора _casters не сработает. Например, если вектор _casters имеет всего один элемент, то выполнение _casters[0] = _casters.pop(); сначала удалит тот элемент из вектора (_casters.pop()), а затем добавит его вновь с тем же индексом. --- src/alternativa/engine3d/shadows/OmniLightShadow.as | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/alternativa/engine3d/shadows/OmniLightShadow.as b/src/alternativa/engine3d/shadows/OmniLightShadow.as index 511d5f0..9783311 100644 --- a/src/alternativa/engine3d/shadows/OmniLightShadow.as +++ b/src/alternativa/engine3d/shadows/OmniLightShadow.as @@ -901,7 +901,12 @@ package alternativa.engine3d.shadows { public function removeCaster(object:Object3D):void { var index:int = _casters.indexOf(object); if (index < 0) throw new Error("Caster not found"); - _casters[index] = _casters.pop(); + if (index == _casters.length - 1) { + _casters.pop(); + } + else { + _casters[index] = _casters.pop(); + } } /**