private void Play2Animations(int[] boneIds1, int[] boneIds2, AnimGroup group1, AnimGroup group2, AnimIndex animIndex1, AnimIndex animIndex2) { PlayerModel._anim[PlayerModel.GetAnimName(group1, animIndex1)].layer = 0; AnimationState state = PlayerModel.PlayAnim(group1, animIndex1, PlayMode.StopSameLayer); foreach (int boneId in boneIds1) { Frame f = PlayerModel.Frames.GetByBoneId(boneId); state.AddMixingTransform(f.transform, true); // runState.wrapMode = WrapMode.Loop; } PlayerModel._anim[PlayerModel.GetAnimName(group2, animIndex2)].layer = 1; state = PlayerModel.PlayAnim(group2, animIndex2, PlayMode.StopSameLayer); foreach (int boneId in boneIds2) { Frame f = PlayerModel.Frames.GetByBoneId(boneId); // state.RemoveMixingTransform(f.transform); state.AddMixingTransform(f.transform, true); // state.wrapMode = WrapMode.Loop; } state.weight = animationBlendWeight; // PlayerModel._anim.Blend( ); }
private void ReadTransformAnimations(ANIM animFile, AnimGroup animGroup, SBAnimation animation) { var decoder = new SSBHAnimTrackDecoder(animFile); foreach (AnimNode animNode in animGroup.Nodes) { SBTransformAnimation tfrmAnim = new SBTransformAnimation() { Name = animNode.Name }; foreach (AnimTrack track in animNode.Tracks) { object[] Transform = decoder.ReadTrack(track); if (track.Name.Equals("Transform")) { for (int i = 0; i < Transform.Length; i++) { AnimTrackTransform t = (AnimTrackTransform)Transform[i]; tfrmAnim.Transform.Keys.Add(new SBAnimKey <Matrix4>() { Frame = i, Value = GetMatrix((AnimTrackTransform)Transform[i]), }); } } } animation.TransformNodes.Add(tfrmAnim); } }
public void Equip(AnimGroup animGroup, AnimAttackType animAttackType, Color color) { float flashAmount = color.a; Color flashColor = new Color(color.r, color.g, color.b, 1f); m_spriteRenderer.material.SetFloat("_FlashAmount", flashAmount); m_spriteRenderer.material.SetColor("_FlashColor", flashColor); m_spriteRenderer.material.SetColor("_Color", m_tintColor); m_spriteRenderer.color = Color.white; m_spriteRenderer.sprite = null; m_animGroup = animGroup; m_animAttackType = animAttackType; m_animColor = color; if (m_animGroup != null) { float spriteHeight = m_animGroup.GetSpriteHeight(); Vector3 pos = transform.localPosition; pos.y = -Mathf.Max((spriteHeight - 1.5f) / 2, 0f); transform.localPosition = pos; animGroup.UpdateAnimator(m_animatorOverrideController, m_animAttackType); } else { ClearAnimator(m_animatorOverrideController, m_animAttackType); } }
private void CreateChoices(SceneTransitionRequest str) { var animGroup = new AnimGroup(); var curTime = Time.time; if (_choiceButtons != null) { foreach (var btn in _choiceButtons) { Destroy(btn); } } _choiceButtons = new Button[str.TransitionChoices.Length]; for (int i = 0; i < str.TransitionChoices.Length; ++i) { var choiceButton = Instantiate <Button>(ChoiceButtonPrototype, UIContainer.transform); var choice = str.TransitionChoices[i]; choiceButton.gameObject.SetActive(true); var choiceButtonCG = choiceButton.GetComponent <CanvasGroup>(); choiceButtonCG.alpha = 0.0f; animGroup.AddAnimation(new FadeCGAnimation(choiceButtonCG, curTime + i * FadeInDuration, FadeInDuration, FadeInCurve, 1.0f)); choiceButton.image.rectTransform.anchoredPosition = ChoiceButtonPrototype.image.rectTransform.anchoredPosition + new Vector2(0.0f, -i * (ChoiceButtonPrototype.image.rectTransform.rect.height + 40)); choiceButton.onClick.AddListener(delegate { _choiceHandler(choice.ChoiceID); }); var choiceButtonText = choiceButton.GetComponentInChildren <Text>(); choiceButtonText.text = choice.ChoiceText; _choiceButtons[i] = choiceButton; } _pendingAnimations.Enqueue(animGroup); }
private void TransitionMainText(SceneTransitionRequest str, Image anchorTarget) { var animGroup = new AnimGroup(); var textFadeOut = new FadeAnimation(PhraseText, Time.time, FadeOutDuration, FadeOutCurve, 0.0f); animGroup.AddAnimation(textFadeOut); var lastAnimFinish = textFadeOut.TimeEnd; var defaultTextBoxSize = new Vector2(anchorTarget.rectTransform.rect.width - 30, anchorTarget.rectTransform.rect.height - 35); var requiredHeight = GetDesiredTextHeight(PhraseText, str.TransitionPhrase, defaultTextBoxSize); if (PhraseBackground.rectTransform.anchoredPosition != anchorTarget.rectTransform.anchoredPosition || !Mathf.Approximately(requiredHeight, PhraseText.rectTransform.rect.height)) { var textBoxResize = new RectAnimation(PhraseBackground.rectTransform, textFadeOut.TimeEnd, TransitionDuration, TransitionCurve, anchorTarget.rectTransform); // Fixup for correct size textBoxResize.TargetSize.y = requiredHeight + 35; animGroup.AddAnimation(textBoxResize); lastAnimFinish = textBoxResize.TimeEnd; } var textChange = new SetTextAnimation(PhraseText, lastAnimFinish, str.TransitionPhrase); animGroup.AddAnimation(textChange); var textFadeIn = new FadeAnimation(PhraseText, lastAnimFinish, FadeInDuration, FadeInCurve, 1.0f); animGroup.AddAnimation(textFadeIn); _pendingAnimations.Enqueue(animGroup); }
private AnimationState LoadAnim(AnimGroup group, AnimIndex anim) { if (anim == AnimIndex.None) { return(null); } var animGroup = AnimationGroup.Get(Definition.AnimGroupName, group); var animName = animGroup[anim]; AnimationState state; if (!_loadedAnims.ContainsKey(animName)) { var clip = Importing.Conversion.Animation.Load(animGroup.FileName, animName, _frames); _loadedAnims.Add(animName, clip); _anim.AddClip(clip.Clip, animName); state = _anim[animName]; } else { state = _anim[animName]; } return(state); }
public bool GetAnimNameAndFile(AnimGroup group, AnimIndex anim, ref string animName, ref string fileName) { if (anim == AnimIndex.None) { return(false); } if (group == AnimGroup.None) { return(false); } if (null == this.Definition || string.IsNullOrEmpty(this.Definition.AnimGroupName)) { return(false); } var animGroup = AnimationGroup.Get(this.Definition.AnimGroupName, group); if (null == animGroup) { return(false); } animName = animGroup [anim]; fileName = animGroup.FileName; return(true); }
private void ReadMaterialAnimations(Anim animFile, AnimGroup animGroup, SBAnimation animation) { var decoder = new SsbhAnimTrackDecoder(animFile); foreach (AnimNode animNode in animGroup.Nodes) { foreach (AnimTrack track in animNode.Tracks) { SBMaterialAnimation matAnim = new SBMaterialAnimation() { MaterialName = animNode.Name, AttributeName = track.Name }; object[] MaterialAnim = decoder.ReadTrack(track); // only get vectors for now if (MaterialAnim == null || MaterialAnim.Length == 0 || MaterialAnim[0] == null || MaterialAnim[0].GetType() != typeof(AnimTrackCustomVector4)) { continue; } animation.MaterialNodes.Add(matAnim); for (int i = 0; i < MaterialAnim.Length; i++) { var vec = (AnimTrackCustomVector4)MaterialAnim[i]; matAnim.Keys.AddKey(i, new Vector4(vec.X, vec.Y, vec.Z, vec.W)); } } } }
private void ReadVisibilityAnimations(Anim animFile, AnimGroup animGroup, SBAnimation animation) { var decoder = new SsbhAnimTrackDecoder(animFile); foreach (AnimNode animNode in animGroup.Nodes) { SBVisibilityAnimation visAnim = new SBVisibilityAnimation() { MeshName = animNode.Name }; foreach (AnimTrack track in animNode.Tracks) { if (track.Name.Equals("Visibility")) { object[] Visibility = decoder.ReadTrack(track); for (int i = 0; i < Visibility.Length; i++) { visAnim.Visibility.AddKey(i, (bool)Visibility[i]); } } } animation.VisibilityNodes.Add(visAnim); } }
/// <summary> /// /// </summary> /// <param name="Type"></param> /// <param name="NodeName"></param> /// <returns></returns> private AnimNode GetNode(ANIM_TYPE type, string nodeName) { AnimGroup group = GetGroup(type); foreach (var node in group.Nodes) { if (node.Name.Equals(nodeName)) { return(node); } } var newnode = new AnimNode { Name = nodeName, Tracks = new AnimTrack[0] }; var nodes = group.Nodes; Array.Resize(ref nodes, nodes.Length + 1); nodes[nodes.Length - 1] = newnode; group.Nodes = nodes; return(newnode); }
public override void Execute() { base.Execute(); AnimGroup.AddAnimation(new Animation(CurrentAnimation.PixelTexture)); AnimGroup.AddNewTextField(new Vector2(36, 152 + ((AnimGroup.TextFont.LineSpacing + 2) * AnimGroup.Animations.Length)), "animation" + AnimGroup.Animations.Length); //animGroupTextFields = AddNewTextField(animGroupTextFields, new Vector2(36, 152 + ((consolas.LineSpacing + 2) * animGroup.Animations.Length)), "animation" + animGroup.Animations.Length); }
public AnimId(AnimGroup animGroup, AnimIndex animIndex) { this.animGroup = animGroup; this.animIndex = animIndex; this.fileName = null; this.animName = null; this.usesAnimGroup = true; }
public AnimId(string fileName, string animName) { this.animGroup = AnimGroup.None; this.animIndex = AnimIndex.None; this.fileName = fileName; this.animName = animName; this.usesAnimGroup = false; }
public Anim GetAnim(AnimGroup group, AnimIndex anim) { var animGroup = AnimationGroup.Get(Definition.AnimGroupName, group); Anim result; return(_loadedAnims.TryGetValue(animGroup[anim], out result) ? result : null); }
public override void Save(SaveContext saveContext) { base.Save(saveContext); var utility = saveContext.Utility; saveContext.WriteObjectListPointerPlaceholder(Meshes); // Materials saveContext.WriteDICTPointerPlaceholder(ModelMaterials); // Shapes saveContext.WriteObjectListPointerPlaceholder(Shapes); // Mesh Node Visibilities saveContext.WriteObjectListPointerPlaceholder(MeshNodeVisibilities); utility.Write(Flags); utility.Write((uint)FaceCulling); utility.Write(LayerId); // Load a Skeleton if this model has one if (HasSkeleton) { saveContext.WritePointerPlaceholder(Skeleton); } ///////////////////////////// // Begin saving dependent data // Save Lists saveContext.SaveAndMarkReference(Meshes); saveContext.SaveAndMarkReference(Shapes); saveContext.SaveAndMarkReference(MeshNodeVisibilities); // I'm not SURE this is where this goes (no test data at the moment I'm writing this) but all lists seem to follow here // Save DICT headers saveContext.SaveAndMarkReference(MetaDatas); saveContext.SaveAndMarkReference(AnimGroup); saveContext.SaveAndMarkReference(ModelMaterials); // Now for other interior data... MetaDatas?.SaveEntries(saveContext); AnimGroup?.SaveEntries(saveContext); Meshes.SaveList(saveContext); ModelMaterials?.SaveEntries(saveContext); Shapes.SaveList(saveContext); MeshNodeVisibilities.SaveList(saveContext); if (HasSkeleton) { saveContext.SaveAndMarkReference(Skeleton); } }
public void SetPlayerHelm(int helmId, Color helmColor) { AnimGroup animGroup = Resources.Load <AnimGroup>("Animations" + SLASH + "Groupings" + SLASH + "Helm" + SLASH + helmId); GearSocket gearSocket = GetGearSocketWithName("Helm"); if (gearSocket != null && ShowPlayerEquipment()) { gearSocket.Equip(animGroup, m_attackType, helmColor); } }
public void SetPlayerWeapon(int weaponId, Color weaponColor) { AnimGroup animGroup = Resources.Load <AnimGroup>("Animations" + SLASH + "Groupings" + SLASH + "Weapon" + SLASH + weaponId); GearSocket gearSocket = GetGearSocketWithName("Weapon"); if (gearSocket != null && ShowPlayerEquipment()) { gearSocket.Equip(animGroup, m_attackType, weaponColor); } }
public void SetPlayerShoes(int shoesId, Color shoesColor) { AnimGroup animGroup = Resources.Load <AnimGroup>("Animations" + SLASH + "Groupings" + SLASH + "Shoes" + SLASH + shoesId); GearSocket gearSocket = GetGearSocketWithName("Shoes"); if (gearSocket != null && ShowPlayerEquipment()) { gearSocket.Equip(animGroup, m_attackType, shoesColor); } }
public void SetPlayerPants(int pantsId, Color pantsColor) { AnimGroup animGroup = Resources.Load <AnimGroup>("Animations" + SLASH + "Groupings" + SLASH + "Bottom" + SLASH + pantsId); GearSocket gearSocket = GetGearSocketWithName("Bottom"); if (gearSocket != null && ShowPlayerEquipment()) { gearSocket.Equip(animGroup, m_attackType, pantsColor); } }
public void SetPlayerChest(int chestId, Color chestColor) { AnimGroup animGroup = Resources.Load <AnimGroup>("Animations" + SLASH + "Groupings" + SLASH + "Top" + SLASH + chestId); GearSocket gearSocket = GetGearSocketWithName("Top"); if (gearSocket != null && ShowPlayerEquipment()) { gearSocket.Equip(animGroup, m_attackType, chestColor); } }
public void SetPlayerFace(int faceId) { AnimGroup animGroup = Resources.Load <AnimGroup>("Animations" + SLASH + "Groupings" + SLASH + "Face" + SLASH + faceId); GearSocket gearSocket = GetGearSocketWithName("Face"); if (gearSocket != null && ShowPlayerEquipment()) { gearSocket.Equip(animGroup, m_attackType); } }
private void TransitionBackground(SceneTransitionRequest str) { var animGroup = new AnimGroup(); BackgroundTransition.sprite = _backgroundPool.GetBackgroundSprite(str.TransitionBackground.ToLower()); animGroup.AddAnimation(new FadeAnimation(BackgroundTransition, Time.time, FadeInDuration, FadeInCurve, 1.0f)) .AddAnimation(new SetSpriteAnimation(Background, Time.time + FadeInDuration, BackgroundTransition.sprite)) .AddAnimation(new FadeAnimation(BackgroundTransition, Time.time + FadeInDuration, 0.001f, FadeOutCurve, 0.0f)); _pendingAnimations.Enqueue(animGroup); }
private AnimationState LoadAnim(AnimGroup group, AnimIndex anim) { if (anim == AnimIndex.None) { return(null); } // if ("" == anim) // return null; if (group == AnimGroup.None) { return(null); } if (Definition == null || string.IsNullOrEmpty(Definition.AnimGroupName)) { return(null); } var animGroup = AnimationGroup.Get(Definition.AnimGroupName, group); if (null == animGroup) { return(null); } var animName = animGroup[anim]; // var animName = anim ; // if (!animGroup.HasAnimation (animName)) // return null; AnimationState state; if (!_loadedAnims.ContainsKey(animName)) { var importedAnim = Anim.Load(animGroup.FileName, animName, _frames); if (importedAnim != null && importedAnim.Clip != null) { _loadedAnims.Add(animName, importedAnim); _anim.AddClip(importedAnim.Clip, animName); state = _anim[animName]; } else { state = null; Debug.LogWarningFormat("Failed to load anim - file: {0}, anim name: {1}", animGroup.FileName, animName); } } else { state = _anim[animName]; } return(state); }
public override void Execute() { base.Execute(); AnimGroup.RemoveAnimation(AnimGroup.Animations[AnimGroup.Animations.Length - 1]); AnimGroup.RemoveTextField(); if (AnimGroup.Animations.Length <= 0) { AnimGroup.AddAnimation(new Animation(CurrentAnimation.PixelTexture)); AnimGroup.AddNewTextField(new Vector2(36, 152 + ((AnimGroup.TextFont.LineSpacing + 2) * AnimGroup.Animations.Length)), "animation" + AnimGroup.Animations.Length); } }
public Anim GetAnim(AnimGroup group, AnimIndex anim) { string animName = GetAnimName(group, anim); if (string.IsNullOrEmpty(animName)) { return(null); } return(GetAnim(animName)); }
public AnimationState CrossFadeAnimQueued(AnimGroup group, AnimIndex anim, float duration, QueueMode queueMode, PlayMode playMode) { var animState = LoadAnim(group, anim); _curAnimGroup = AnimGroup = group; _curAnim = AnimIndex = anim; _anim.CrossFadeQueued(animState.name, duration, queueMode, playMode); return(animState); }
public AnimationState PlayAnim(AnimGroup group, AnimIndex anim, PlayMode playMode) { var animState = LoadAnim(group, anim); _curAnimGroup = AnimGroup = group; _curAnim = AnimIndex = anim; _anim.Play(animState.name, playMode); return(animState); }
private AnimationState LoadAnim(AnimGroup group, AnimIndex anim) { string animName = null, fileName = null; if (GetAnimNameAndFile(group, anim, ref animName, ref fileName)) { return(LoadAnim(animName, fileName)); } return(null); }
public string GetAnimName(AnimGroup group, AnimIndex anim) { string animName = null, fileName = null; if (GetAnimNameAndFile(group, anim, ref animName, ref fileName)) { return(animName); } return(null); }
private AnimationState LoadAnim(AnimGroup group, AnimIndex anim) { if (anim == AnimIndex.None) { return(null); } // if ("" == anim) // return null; if (group == AnimGroup.None) { return(null); } if (Definition == null || (Definition != null && string.IsNullOrEmpty(Definition.AnimGroupName))) { return(null); } var animGroup = AnimationGroup.Get(Definition.AnimGroupName, group); if (null == animGroup) { return(null); } var animName = animGroup[anim]; // var animName = anim ; // if (!animGroup.HasAnimation (animName)) // return null; AnimationState state; if (!_loadedAnims.ContainsKey(animName)) { var clip = Anim.Load(animGroup.FileName, animName, _frames); if (clip.Clip != null) { _loadedAnims.Add(animName, clip); _anim.AddClip(clip.Clip, animName); state = _anim[animName]; } else { state = null; Debug.LogWarning(string.Format("File '{0}' doesn't exists!", animGroup.FileName)); } } else { state = _anim[animName]; } return(state); }
private AnimationGroup(Match match, StreamReader reader) { Name = match.Groups["groupName"].Value; FileName = match.Groups["fileName"].Value; Type = (AnimGroup) Enum.Parse(typeof(AnimGroup), match.Groups["animType"].Value, true); var animCount = int.Parse(match.Groups["animCount"].Value); _animations = new String[animCount]; var i = 0; string line; while ((line = reader.ReadLine()) != null && !_sEndRegex.IsMatch(line)) { line = line.Trim(); if (line.Length == 0) continue; _animations[i++] = line; } }
public static AnimationGroup Get(string name, AnimGroup type) { return GetInternal(name, type) ?? GetInternal("default", type); }
private static AnimationGroup GetInternal(string name, AnimGroup type) { Dictionary<AnimGroup, AnimationGroup> groupDict; if (!_sGroups.TryGetValue(name, out groupDict)) return null; AnimationGroup group; return groupDict.TryGetValue(type, out group) ? group : null; }
public AnimationState CrossFadeAnimQueued(AnimGroup group, AnimIndex anim, float duration, QueueMode queueMode, PlayMode playMode) { var animState = LoadAnim(group, anim); _curAnimGroup = AnimGroup = group; _curAnim = AnimIndex = anim; _anim.CrossFadeQueued(animState.name, duration, queueMode, playMode); return animState; }
public Anim GetAnim(AnimGroup group, AnimIndex anim) { var animGroup = AnimationGroup.Get(Definition.AnimGroupName, group); Anim result; return _loadedAnims.TryGetValue(animGroup[anim], out result) ? result : null; }
public AnimationState PlayAnim(AnimGroup group, AnimIndex anim, PlayMode playMode) { var animState = LoadAnim(group, anim); _curAnimGroup = AnimGroup = group; _curAnim = AnimIndex = anim; _anim.Play(animState.name, playMode); return animState; }
private void Load(int id) { _curPedestrianId = PedestrianId; Definition = Item.GetDefinition<PedestrianDef>(id); if (Definition == null) return; LoadModel(Definition.ModelName, Definition.TextureDictionaryName); _curAnim = AnimIndex.None; _curAnimGroup = AnimGroup.None; _anim = gameObject.GetComponent<UnityEngine.Animation>(); if (_anim == null) { _anim = gameObject.AddComponent<UnityEngine.Animation>(); } LoadAnim(AnimGroup.WalkCycle, AnimIndex.Walk); LoadAnim(AnimGroup.WalkCycle, AnimIndex.Run); LoadAnim(AnimGroup.WalkCycle, AnimIndex.Panicked); LoadAnim(AnimGroup.WalkCycle, AnimIndex.Idle); LoadAnim(AnimGroup.WalkCycle, AnimIndex.RoadCross); LoadAnim(AnimGroup.WalkCycle, AnimIndex.WalkStart); LoadAnim(AnimGroup.Car, AnimIndex.Sit); LoadAnim(AnimGroup.Car, AnimIndex.DriveLeft); LoadAnim(AnimGroup.Car, AnimIndex.DriveRight); LoadAnim(AnimGroup.Car, AnimIndex.GetInLeft); LoadAnim(AnimGroup.Car, AnimIndex.GetInRight); LoadAnim(AnimGroup.Car, AnimIndex.GetOutLeft); LoadAnim(AnimGroup.Car, AnimIndex.GetOutRight); }
private AnimationState LoadAnim(AnimGroup group, AnimIndex anim) { if (anim == AnimIndex.None) { return null; } var animGroup = AnimationGroup.Get(Definition.AnimGroupName, group); var animName = animGroup[anim]; AnimationState state; if (!_loadedAnims.ContainsKey(animName)) { var clip = Importing.Conversion.Animation.Load(animGroup.FileName, animName, _frames); _loadedAnims.Add(animName, clip); _anim.AddClip(clip.Clip, animName); state = _anim[animName]; } else { state = _anim[animName]; } return state; }