/** * @private */ protected void _updateDisplay() { var prevDisplay = _display != null ? _display : _rawDisplay; var prevChildArmature = _childArmature; if (_displayIndex >= 0 && _displayIndex < _displayList.Count) { _display = _displayList[_displayIndex]; if (_display is Armature) { _childArmature = (Armature)_display; _display = _childArmature.display; } else { _childArmature = null; } } else { _display = null; _childArmature = null; } var currentDisplay = _display != null ? _display : _rawDisplay; if (currentDisplay != prevDisplay) { _onUpdateDisplay(); _replaceDisplay(prevDisplay); _blendModeDirty = true; _colorDirty = true; } // Update frame. if (currentDisplay == _rawDisplay || currentDisplay == _meshDisplay) { _updateFrame(); } // Update child armature. if (_childArmature != prevChildArmature) { if (prevChildArmature != null) { prevChildArmature.clock = null; prevChildArmature._parent = null; // Update child armature parent. if (prevChildArmature.inheritAnimation) { prevChildArmature.animation.Reset(); } } if (_childArmature != null) { _childArmature.clock = _armature.clock; _childArmature._parent = this; // Update child armature parent. // Update child armature flip. _childArmature.flipX = _armature.flipX; _childArmature.flipY = _armature.flipY; if (_childArmature.inheritAnimation) { if (_childArmature.cacheFrameRate == 0) // Set child armature frameRate. { var cacheFrameRate = _armature.cacheFrameRate; if (cacheFrameRate != 0) { _childArmature.cacheFrameRate = cacheFrameRate; } } // Child armature action. var actions = _skinSlotData.slot.actions.Count > 0 ? _skinSlotData.slot.actions : _childArmature.armatureData.actions; if (actions.Count > 0) { foreach (var action in actions) { _childArmature._bufferAction(action); } } else { _childArmature.animation.Play(); } } } } }
/** * @private */ protected void _updateDisplay() { var prevDisplay = _display != null ? _display : _rawDisplay; var prevChildArmature = _childArmature; if (_displayIndex >= 0 && _displayIndex < _displayList.Count) { _display = _displayList[_displayIndex]; if (_display is Armature) { _childArmature = (Armature)_display; _display = _childArmature._display; } else { _childArmature = null; } } else { _display = null; _childArmature = null; } var currentDisplay = _display != null ? _display : _rawDisplay; if (currentDisplay != prevDisplay) { _onUpdateDisplay(); if (prevDisplay != null) { _replaceDisplay(prevDisplay); } else { _addDisplay(); } _blendModeDirty = true; _colorDirty = true; } // Update origin. if (_displayDataSet != null && _displayIndex >= 0 && _displayIndex < _displayDataSet.displays.Count) { origin.CopyFrom(_displayDataSet.displays[_displayIndex].transform); _originDirty = true; } // Update meshData. _updateMeshData(false); // Update frame. if (currentDisplay == _rawDisplay || currentDisplay == _meshDisplay) { _updateFrame(); } // Update child armature. if (_childArmature != prevChildArmature) { if (prevChildArmature != null) { prevChildArmature._parent = null; // Update child armature parent. if (inheritAnimation) { prevChildArmature.animation.Reset(); } } if (_childArmature != null) { _childArmature._parent = this; // Update child armature parent. // Update child armature flip. _childArmature.flipX = this._armature.flipX; _childArmature.flipY = this._armature.flipY; if (inheritAnimation) { if (_childArmature.cacheFrameRate == 0) // Set child armature frameRate. { var cacheFrameRate = _armature.cacheFrameRate; if (cacheFrameRate != 0) { _childArmature.cacheFrameRate = cacheFrameRate; } } // Child armature action. var slotData = _armature.armatureData.GetSlot(name); var actions = slotData.actions.Count > 0 ? slotData.actions : _childArmature.armatureData.actions; if (actions.Count > 0) { foreach (var action in actions) { _childArmature._bufferAction(action); } } else { _childArmature.animation.Play(); } } } } }