Beispiel #1
0
        //public int Id;
        //public string Name;
        //public int Level;

        //public EffectAuthoring[] EffectElements;

        public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
        {
            var skill = new Skill
            {
                //Id = Id,
                //Name = Name,
                //Level = Level
            };

            dstManager.AddComponentData <Skill>(entity, skill);

            var statBuffer = dstManager.AddBuffer <StatElement>(entity);
            var statNum    = (byte)ESkillStatType.Max;

            for (int i = 0; i < statNum; i++)
            {
                statBuffer.Add(new StatElement {
                    StatId = (byte)i
                });
            }

            //if(EffectElements != null)
            //{
            //    var buffer = dstManager.AddBuffer<SkillEffectElement>(entity);
            //    for(int i = 0; i< EffectElements.Length; i++)
            //    {
            //        var effectEntity = conversionSystem.GetPrimaryEntity(EffectElements[i].gameObject);
            //        buffer.Add(new SkillEffectElement { EffectEntity = effectEntity });
            //    }
            //}

            var childCount = transform.childCount;

            if (childCount > 0)
            {
                var buffer = dstManager.AddBuffer <SkillEffectElement>(entity);
                for (int i = 0; i < childCount; i++)
                {
                    var child           = transform.GetChild(i).gameObject;
                    var effectAuthoring = child.GetComponent <EffectAuthoring>();

                    var effectEntity = conversionSystem.GetPrimaryEntity(child);

                    var element = new SkillEffectElement
                    {
                        EffectType   = effectAuthoring.Type,
                        EffectEntity = effectEntity
                    };

                    buffer.Add(element);
                }
            }
        }
    // Get category
    public bool GetSkillEffectElement(int skillEffectID, out SkillEffectElement skillEffectElement)
    {
        skillEffectElement = null;

        if (!_skillEffectElementList.ContainsKey(skillEffectID))
        {
            return(false);
        }

        skillEffectElement = _skillEffectElementList[skillEffectID];

        return(true);
    }
    public bool GetSkillEffectElement(string skillEffectName, out SkillEffectElement skillEffectElement)
    {
        skillEffectElement = null;

        foreach (SkillEffectElement val in _skillEffectElementList.Values)
        {
            if (val._skillEffectName == skillEffectName)
            {
                skillEffectElement = val;

                return(true);
            }
        }

        return(false);
    }
    public bool LoadSkillElement(SecurityElement element, out SkillEffectElement skillEffectElement)
    {
        skillEffectElement = new SkillEffectElement();
        if (element.Tag != "SkillEffect")
        {
            return(false);
        }

        skillEffectElement._skillEffectID   = StrParser.ParseDecInt(element.Attribute("EffectID"), -1);
        skillEffectElement._skillEffectName = StrParser.ParseStr(element.Attribute("Name"), "");

        if (element.Children == null)
        {
            return(false);
        }

        foreach (SecurityElement childrenElement in element.Children)
        {
            if (childrenElement.Tag == "Particle")
            {
                if (!LoadSkillParticleElement(childrenElement, out skillEffectElement._skillParticleElement))
                {
                    continue;
                }

                skillEffectElement._skillParticleElementList.Add(skillEffectElement._skillParticleElement);
            }
            else if (childrenElement.Tag == "Sound")
            {
                if (!LoadSkillSoundElement(childrenElement, out skillEffectElement._skillSoundElement))
                {
                    continue;
                }
            }
        }

        return(true);
    }