Пример #1
0
        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);
                }
            }
        }
Пример #2
0
        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);
        }