public void ImportData(JSONObject json_data)
        {
            m_effect_type = (PARTICLE_EFFECT_TYPE)(int)json_data["m_effect_type"].Number;
            if (m_effect_type == PARTICLE_EFFECT_TYPE.LEGACY)
            {
                m_legacy_particle_effect = json_data["m_legacy_particle_effect"].Str.PathToParticleEmitter();
            }
            else
            {
                m_shuriken_particle_effect = json_data["m_shuriken_particle_effect"].Str.PathToParticleSystem();
            }
            m_duration.ImportData(json_data["m_duration"].Obj);
            m_follow_mesh = json_data["m_follow_mesh"].Boolean;
            m_position_offset.ImportData(json_data["m_position_offset"].Obj);
            m_rotation_offset.ImportData(json_data["m_rotation_offset"].Obj);
            m_rotate_relative_to_letter = json_data["m_rotate_relative_to_letter"].Boolean;

            ImportBaseData(json_data);
        }
        public void ImportData(JSONObject json_data)
        {
            m_action_type           = (ACTION_TYPE)(int)json_data["m_action_type"].Number;
            m_ease_type             = (EasingEquation)(int)json_data["m_ease_type"].Number;
            m_use_gradient_start    = json_data["m_use_gradient_start"].Boolean;
            m_use_gradient_end      = json_data["m_use_gradient_end"].Boolean;
            m_force_same_start_time = json_data["m_force_same_start_time"].Boolean;
            m_letter_anchor_start   = (int)json_data["m_letter_anchor_start"].Number;
            m_letter_anchor_end     = (int)json_data["m_letter_anchor_end"].Number;
            m_letter_anchor_2_way   = json_data["m_letter_anchor_2_way"].Boolean;
            m_offset_from_last      = json_data["m_offset_from_last"].Boolean;
            m_position_axis_ease_data.ImportData(json_data["m_position_axis_ease_data"].Obj);
            m_rotation_axis_ease_data.ImportData(json_data["m_rotation_axis_ease_data"].Obj);
            m_scale_axis_ease_data.ImportData(json_data["m_scale_axis_ease_data"].Obj);

            if (m_use_gradient_start)
            {
                m_start_vertex_colour.ImportData(json_data["m_start_vertex_colour"].Obj);
            }
            else
            {
                m_start_colour.ImportData(json_data["m_start_colour"].Obj);
            }
            if (m_use_gradient_end)
            {
                m_end_vertex_colour.ImportData(json_data["m_end_vertex_colour"].Obj);
            }
            else
            {
                m_end_colour.ImportData(json_data["m_end_colour"].Obj);
            }

            m_start_euler_rotation.ImportData(json_data["m_start_euler_rotation"].Obj);
            m_end_euler_rotation.ImportData(json_data["m_end_euler_rotation"].Obj);
            m_start_pos.ImportData(json_data["m_start_pos"].Obj);
            m_end_pos.ImportData(json_data["m_end_pos"].Obj);
            m_start_scale.ImportData(json_data["m_start_scale"].Obj);
            m_end_scale.ImportData(json_data["m_end_scale"].Obj);
            m_delay_progression.ImportData(json_data["m_delay_progression"].Obj);
            m_duration_progression.ImportData(json_data["m_duration_progression"].Obj);


            m_audio_effects = new List <AudioEffectSetup>();
            AudioEffectSetup audio_effect;

            foreach (JSONValue audio_data in json_data["AUDIO_EFFECTS_DATA"].Array)
            {
                audio_effect = new AudioEffectSetup();
                audio_effect.ImportData(audio_data.Obj);
                m_audio_effects.Add(audio_effect);
            }

            m_particle_effects = new List <ParticleEffectSetup>();
            ParticleEffectSetup particle_effect;

            foreach (JSONValue particle_data in json_data["PARTICLE_EFFECTS_DATA"].Array)
            {
                particle_effect = new ParticleEffectSetup();
                particle_effect.ImportData(particle_data.Obj);
                m_particle_effects.Add(particle_effect);
            }
        }