private void ParseEvents(Dictionary <String, Object> root) { if (root.ContainsKey("events")) { if (_events == null) { _events = new List <SpineEvent>(); } foreach (KeyValuePair <String, Object> entry in (Dictionary <String, Object>)root["events"]) { var entryMap = (Dictionary <String, Object>)entry.Value; SpineEvent spineEvent = new SpineEvent(entry.Key); spineEvent.IntParameter = GetInt(entryMap, "int", 0); spineEvent.FloatParameter = GetFloat(entryMap, "float", 0); spineEvent.StringParameter = GetString(entryMap, "string", null); _events.Add(spineEvent); } } }
private void ParseAnimation(String name, Dictionary <String, Object> map) { bool isNewClip = false; AnimationClip clip = GetAndClearAnimationClip(name, ref isNewClip); if (map.ContainsKey("bones")) { foreach (KeyValuePair <String, Object> entry in (Dictionary <String, Object>)map["bones"]) { String boneName = entry.Key; Transform bone = FindChildRecursive(_skeleton, boneName); ParseBoneTimelines(clip, bone, (Dictionary <String, Object>)entry.Value); } } if (map.ContainsKey("slots")) { foreach (KeyValuePair <String, Object> entry in (Dictionary <String, Object>)map["slots"]) { String slotName = entry.Key; Transform slot = FindChildRecursive(_skeleton, slotName + " [slot]"); ParseSlotTimelines(clip, slotName, slot, (Dictionary <String, Object>)entry.Value); } } if (map.ContainsKey("events")) { var eventsMap = (List <Object>)map["events"]; List <AnimationEvent> animationEvents = new List <AnimationEvent>(); foreach (Dictionary <String, Object> eventMap in eventsMap) { string eventName = (string)eventMap["name"]; SpineEvent spineEvent = GetEvent(eventName); if (spineEvent == null) { continue; } AnimationEvent animationEvent = new AnimationEvent(); animationEvent.time = (float)eventMap["time"]; animationEvent.functionName = eventName; animationEvent.intParameter = GetInt(eventMap, "int", spineEvent.IntParameter); animationEvent.floatParameter = GetFloat(eventMap, "float", spineEvent.FloatParameter); animationEvent.stringParameter = GetString(eventMap, "string", spineEvent.StringParameter); animationEvents.Add(animationEvent); } AnimationUtility.SetAnimationEvents(clip, animationEvents.ToArray()); } UpdateClipSettings(clip, isNewClip); }