Пример #1
0
        void parseHitGroundEffectInfo(StreamReader dataStream, GfxSkill skill)
        {
            GfxSkillHitGroundEffect HitGroundEffect = new GfxSkillHitGroundEffect();

            skill.HitGroundEffect = HitGroundEffect;
            string line;

            while (!dataStream.EndOfStream)
            {
                line = dataStream.ReadLine();
                // Ignore comments & blanks
                if (!(line.Length == 0 || line.Substring(0, 2) == "//"))
                {
                    string delim      = "\t";
                    string spaceDelim = " ";
                    line = line.TrimStart(spaceDelim.ToCharArray());
                    line = line.TrimEnd(spaceDelim.ToCharArray());
                    string strline = line.Trim(delim.ToCharArray());
                    if (strline == "}")
                    {
                        // Finished emitter
                        break;
                    }
                    else
                    {
                        // Attribute
                        parseHitGroundEffectInfoAttrib(strline, HitGroundEffect);
                    }
                }
            }
        }
Пример #2
0
        public GfxSkill(GfxSkill skill)
        {
            mSkillName      = skill.mSkillName;
            mRepeatEffect   = skill.mRepeatEffect;
            mAnimateName    = skill.mAnimateName;
            mHitTimeArray   = new List <float>();
            mBreakTimeArray = new List <float>();
            mShakeTimeArray = new List <float>();
            for (int i = 0; i < skill.mHitTimeArray.Count; i++)
            {
                mHitTimeArray.Add(skill.mHitTimeArray[i]);
            }

            for (int i = 0; i < skill.mBreakTimeArray.Count; i++)
            {
                mBreakTimeArray.Add(skill.mBreakTimeArray[i]);
            }

            for (int i = 0; i < skill.mShakeTimeArray.Count; i++)
            {
                mShakeTimeArray.Add(skill.mShakeTimeArray[i]);
            }

            mSkillEffects = new List <GfxSkillEffect>();
            for (int i = 0; i < skill.mSkillEffects.Count; i++)
            {
                GfxSkillEffect newSkillEffect = new GfxSkillEffect();
                newSkillEffect.Attach         = skill.mSkillEffects[i].Attach;
                newSkillEffect.AttachPoint    = skill.mSkillEffects[i].AttachPoint;
                newSkillEffect.AttachTime     = skill.mSkillEffects[i].AttachTime;
                newSkillEffect.EffectName     = skill.mSkillEffects[i].EffectName;
                newSkillEffect.OffsetPos      = skill.mSkillEffects[i].OffsetPos;
                newSkillEffect.OffsetRotation = skill.mSkillEffects[i].OffsetRotation;
                newSkillEffect.OffsetScale    = skill.mSkillEffects[i].OffsetScale;
                mSkillEffects.Add(newSkillEffect);
            }
            if (skill.mHitGroundEffect != null)
            {
                mHitGroundEffect                = new GfxSkillHitGroundEffect();
                mHitGroundEffect.OffsetPos      = skill.mHitGroundEffect.OffsetPos;
                mHitGroundEffect.OffsetRotation = skill.mHitGroundEffect.OffsetRotation;
                mHitGroundEffect.AttachTime     = skill.mHitGroundEffect.AttachTime;
                mHitGroundEffect.AttachPoint    = skill.mHitGroundEffect.AttachPoint;
                mHitGroundEffect.EffectName     = skill.mHitGroundEffect.EffectName;
                mHitGroundEffect.Attach         = skill.mHitGroundEffect.Attach;
                mHitGroundEffect.AnimateName    = skill.mHitGroundEffect.AnimateName;
                mHitGroundEffect.ShakeTime      = skill.mHitGroundEffect.ShakeTime;
            }
        }
Пример #3
0
        void parseHitGroundEffectInfoAttrib(string line, GfxSkillHitGroundEffect HitGroundEffect)
        {
            string[] szTemp = line.Split(new string[1] {
                " "
            }, StringSplitOptions.None);

            if (szTemp.Length <= 0)
            {
                Debug.LogError("the number of parameters must be >0! parseHitGroundEffectInfoAttrib " + line);
                return;
            }

            if (szTemp.Length == 2)
            {
                if (false == HitGroundEffect.setParameter(szTemp[0], szTemp[1]))
                {
                    Debug.LogError("Bad HitGroundEffect Info attribute line parseHitGroundEffectInfoAttrib " + line);
                }
            }
            else
            {
                string valueString = "";
                for (int i = 1; i < szTemp.Length; i++)
                {
                    valueString += szTemp[i];
                    if (i + 1 < szTemp.Length)
                    {
                        valueString += " ";
                    }
                }
                if (false == HitGroundEffect.setParameter(szTemp[0], valueString))
                {
                    Debug.LogError("Bad HitGroundEffect Info Complex attribute line parseHitGroundEffectInfoAttrib " + line);
                }
            }
        }
Пример #4
0
    void ShowHitGroundEffect()
    {
        // GUILayout.BeginHorizontal("box");

        GUILayout.BeginHorizontal("box");
        bool result = EditorGUILayout.Toggle("HitGroundSetting", openHitGroundEffect);

        GUILayout.EndHorizontal();
        if (result && result != openHitGroundEffect)
        {
            if (actor.Skill.HitGroundEffect != null)
            {
                GFX.GfxSkillHitGroundEffect curEffect = actor.Skill.HitGroundEffect;
                mHitGroundOffsetPos      = curEffect.OffsetPos;
                mHitGroundOffsetRotation = new Vector4(curEffect.OffsetRotation.x, curEffect.OffsetRotation.y,
                                                       curEffect.OffsetRotation.z, curEffect.OffsetRotation.w);
                List <string> animList = getCurrentAnimateList();
                mHitGroundAnimateNameIndex = animList.IndexOf(curEffect.AnimateName);
                mHitGroundLocatorNameIndex = actor.LocatorNames.IndexOf(curEffect.AttachPoint);
                mHitGroundOffsetScale      = curEffect.OffsetScale;
                mHitGroundAttachTime       = curEffect.AttachTime;
                mHitGroundEffectName       = curEffect.EffectName;
                mHitGroundAttach           = curEffect.Attach;
                mHitGroundShakeTime        = curEffect.ShakeTime;
            }
        }
        openHitGroundEffect = result;
        if (openHitGroundEffect)
        {
            GFX.GfxSkillHitGroundEffect curEffect = actor.Skill.HitGroundEffect;
            GUILayout.BeginHorizontal("box");
            mHitGroundOffsetPos = EditorGUILayout.Vector3Field("OffsetPos", mHitGroundOffsetPos);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal("box");
            mHitGroundOffsetRotation = EditorGUILayout.Vector3Field("OffsetRotation", mHitGroundOffsetRotation);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal("box");
            mHitGroundOffsetScale = EditorGUILayout.Vector3Field("OffsetScale", mHitGroundOffsetScale);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal("box");
            mHitGroundAttachTime = EditorGUILayout.Slider("AttachTime", mHitGroundAttachTime, 0f, 10f);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal("box");
            GUILayout.Label("AnimateName");
            if (mHitGroundAnimateNameIndex >= getCurrentAnimateList().Count)
            {
                EditorGUILayout.Popup(getCurrentAnimateList().Count - 1, getCurrentAnimateList().ToArray());
            }
            else
            {
                mHitGroundAnimateNameIndex = EditorGUILayout.Popup(mHitGroundAnimateNameIndex, getCurrentAnimateList().ToArray());
            }
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal("box");
            mHitGroundEffectName = EditorGUILayout.TextField("EffectTemplateName", mHitGroundEffectName);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal("box");
            mHitGroundAttach = EditorGUILayout.Toggle("Attach", mHitGroundAttach);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal("box");
            GUILayout.Label("AttachPoint");
            mHitGroundLocatorNameIndex = EditorGUILayout.Popup(mHitGroundLocatorNameIndex, actor.LocatorNames.ToArray());
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal("box");
            mHitGroundShakeTime = EditorGUILayout.Slider("ShakeTime", mHitGroundShakeTime, 0f, 10f);
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal("box");
            if (GUILayout.Button("SetHitGroundEffect"))
            {
                GFX.GfxSkillHitGroundEffect newEffect = new GFX.GfxSkillHitGroundEffect();
                newEffect.OffsetScale    = mHitGroundOffsetScale;
                newEffect.OffsetPos      = mHitGroundOffsetPos;
                newEffect.OffsetRotation = new Quaternion(mHitGroundOffsetRotation.x,
                                                          mHitGroundOffsetRotation.y,
                                                          mHitGroundOffsetRotation.z,
                                                          mHitGroundOffsetRotation.w);
                newEffect.AttachTime = mHitGroundAttachTime;
                newEffect.Attach     = mHitGroundAttach;
                if (actor.LocatorNames[mHitGroundLocatorNameIndex] == "none")
                {
                    newEffect.AttachPoint = "";
                }
                else
                {
                    newEffect.AttachPoint = actor.LocatorNames[mHitGroundLocatorNameIndex];
                }
                newEffect.EffectName = mHitGroundEffectName;
                newEffect.ShakeTime  = mHitGroundShakeTime;
                List <string> animateList = getCurrentAnimateList();
                if (animateList.Count <= mHitGroundAnimateNameIndex)
                {
                    newEffect.AnimateName = "";
                }
                else
                {
                    newEffect.AnimateName = animateList[mHitGroundAnimateNameIndex];
                }
                actor.Skill.HitGroundEffect = newEffect;
            }
            GUILayout.EndHorizontal();
        }
        //GUILayout.EndHorizontal();
    }