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); } } } }
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; } }
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); } } }
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(); }