Esempio n. 1
0
        /**
         * @inheritDoc
         */
        protected override void _onClear()
        {
            base._onClear();

            displayIndex = 0;
            skin         = null;
            slot         = null;
        }
 /**
  * @private
  */
 public void AddSlot(SlotDisplayDataSet value)
 {
     if (value != null && value.slot != null && !slots.ContainsKey(value.slot.name))
     {
         slots[value.slot.name] = value;
     }
     else
     {
         DragonBones.Warn("");
     }
 }
        /**
         * @private
         */
        override protected Slot _generateSlot(BuildArmaturePackage dataPackage, SlotDisplayDataSet slotDisplayDataSet, Armature armature)
        {
            var slot        = BaseObject.BorrowObject <UnitySlot>();
            var slotData    = slotDisplayDataSet.slot;
            var displayList = new List <object>();

            slot.name         = slotData.name;
            slot._rawDisplay  = new GameObject();
            slot._meshDisplay = slot._rawDisplay;

            (slot._rawDisplay as GameObject).AddComponent <SpriteRenderer>();
            (slot._rawDisplay as GameObject).name = slot.name;

            foreach (var displayData in slotDisplayDataSet.displays)
            {
                switch (displayData.type)
                {
                case DisplayType.Image:
                    if (displayData.texture == null)
                    {
                        displayData.texture = this._getTextureData(dataPackage.dataName, displayData.name);
                    }

                    displayList.Add(slot._rawDisplay);
                    break;

                case DisplayType.Mesh:
                    if (displayData.texture == null)
                    {
                        displayData.texture = this._getTextureData(dataPackage.dataName, displayData.name);
                    }

                    displayList.Add(slot._meshDisplay);
                    break;

                case DisplayType.Armature:
                    var childArmature = this.BuildArmature(displayData.name, dataPackage.dataName);
                    if (childArmature != null)
                    {
                        if (!slot.inheritAnimation)
                        {
                            var actions = slotData.actions.Count > 0 ? slotData.actions : childArmature.armatureData.actions;
                            if (actions.Count > 0)
                            {
                                foreach (var actionData in actions)
                                {
                                    childArmature._bufferAction(actionData);
                                }
                            }
                            else
                            {
                                childArmature.animation.Play();
                            }
                        }

                        // hide
                        var childArmatureDisplay = childArmature.display as GameObject;
                        var armatureComponent    = childArmatureDisplay.GetComponent <UnityArmatureComponent>();
                        if (armatureComponent != null && Application.isPlaying)
                        {
                            childArmatureDisplay.transform.parent = _hiddenObject.transform;
                        }
                        else
                        {
                            childArmatureDisplay.transform.parent = (armature.display as GameObject).transform;
                            childArmatureDisplay.SetActive(false);
                        }

                        //
                        (childArmature.display as GameObject).name = slot.name;

                        displayData.armature = childArmature.armatureData;     //
                    }

                    displayList.Add(childArmature);
                    break;

                default:
                    displayList.Add(null);
                    break;
                }
            }

            slot._setDisplayList(displayList);

            return(slot);
        }
Esempio n. 4
0
 /**
  * @private
  */
 protected abstract Slot _generateSlot(BuildArmaturePackage dataPackage, SlotDisplayDataSet slotDisplayDataSet, Armature armature);
Esempio n. 5
0
        /**
         * @inheritDoc
         */
        protected override void _onClear()
        {
            base._onClear();

            var disposeDisplayList = new List <object>();

            foreach (var eachDisplay in _displayList)
            {
                if (
                    eachDisplay != _rawDisplay && eachDisplay != _meshDisplay &&
                    !disposeDisplayList.Contains(eachDisplay)
                    )
                {
                    disposeDisplayList.Add(eachDisplay);
                }
            }

            foreach (var eachDisplay in disposeDisplayList)
            {
                if (eachDisplay is Armature)
                {
                    ((Armature)eachDisplay).Dispose();
                }
                else
                {
                    _disposeDisplay(eachDisplay);
                }
            }

            if (_meshDisplay != null && _meshDisplay != _rawDisplay) // May be _meshDisplay and _rawDisplay is the same one.
            {
                _disposeDisplay(_meshDisplay);
            }

            if (_rawDisplay != null)
            {
                _disposeDisplay(_rawDisplay);
            }

            inheritAnimation  = true;
            displayController = null;

            _blendIndex     = -1;
            _zOrder         = 0;
            _displayDataSet = null;
            _meshData       = null;
            _childArmature  = null;
            _rawDisplay     = null;
            _meshDisplay    = null;
            _cacheFrames    = null;
            _colorTransform.Identity();
            _ffdVertices.Clear();
            _replacedDisplayDataSet.Clear();

            _zOrderDirty     = false;
            _displayDirty    = false;
            _blendModeDirty  = false;
            _colorDirty      = false;
            _originDirty     = false;
            _transformDirty  = false;
            _ffdDirty        = false;
            _displayIndex    = -2;
            _cacheFrameIndex = -1;
            _blendMode       = BlendMode.Normal;
            _pivotX          = 0.0f;
            _pivotY          = 0.0f;
            _display         = null;
            _localMatrix.Identity();
            _displayList.Clear();
            _meshBones.Clear();
        }
Esempio n. 6
0
        /**
         * @private
         */
        override protected Slot _generateSlot(BuildArmaturePackage dataPackage, SlotDisplayDataSet slotDisplayDataSet, Armature armature)
        {
            var slot            = BaseObject.BorrowObject <UnitySlot>();
            var slotData        = slotDisplayDataSet.slot;
            var displayList     = new List <object>();
            var armatureDisplay = armature.display as GameObject;
            var transform       = armatureDisplay.transform.Find(slotData.name);
            var gameObject      = transform == null ? null : transform.gameObject;

            if (gameObject == null)
            {
                gameObject = new GameObject(slotData.name);
                gameObject.AddComponent <MeshRenderer>();
                gameObject.AddComponent <MeshFilter>();
            }

            slot.name         = slotData.name;
            slot._rawDisplay  = gameObject;
            slot._meshDisplay = slot._rawDisplay;

            foreach (var displayData in slotDisplayDataSet.displays)
            {
                switch (displayData.type)
                {
                case DisplayType.Image:
                    if (displayData.texture == null)
                    {
                        displayData.texture = this._getTextureData(dataPackage.dataName, displayData.name);
                    }

                    displayList.Add(slot._rawDisplay);
                    break;

                case DisplayType.Mesh:
                    if (displayData.texture == null)
                    {
                        displayData.texture = this._getTextureData(dataPackage.dataName, displayData.name);
                    }

                    displayList.Add(slot._meshDisplay);
                    break;

                case DisplayType.Armature:
                    var childDisplayName = slotData.name + " (" + displayData.name + ")";
                    var childTransform   = armatureDisplay.transform.Find(childDisplayName);
                    var childArmature    = childTransform == null?
                                           this.BuildArmature(displayData.name, dataPackage.dataName) :
                                               BuildArmatureComponent(displayData.name, dataPackage.dataName, null, childTransform.gameObject).armature;

                    if (childArmature != null)
                    {
                        if (childArmature._clock != null)
                        {
                            childArmature._clock.Remove(childArmature);
                        }

                        if (!slot.inheritAnimation)
                        {
                            var actions = slotData.actions.Count > 0 ? slotData.actions : childArmature.armatureData.actions;
                            if (actions.Count > 0)
                            {
                                foreach (var actionData in actions)
                                {
                                    childArmature._bufferAction(actionData);
                                }
                            }
                            else
                            {
                                childArmature.animation.Play();
                            }
                        }

                        displayData.armature = childArmature.armatureData;     //

                        // Hide
                        var childArmatureDisplay = childArmature.display as GameObject;
                        childArmatureDisplay.name = childDisplayName;
                        childArmatureDisplay.gameObject.hideFlags = HideFlags.HideInHierarchy;
                        childArmatureDisplay.SetActive(false);
                    }

                    displayList.Add(childArmature);
                    break;

                default:
                    displayList.Add(null);
                    break;
                }
            }

            slot._setDisplayList(displayList);

            return(slot);
        }