Changeset 1500


Ignore:
Timestamp:
Jun 19, 2012, 2:55:20 PM (8 years ago)
Author:
touky
Message:

Added ignore_step in Lolnament

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/orbital/Lolnament.h

    r1496 r1500  
    107107struct influence_infos
    108108{
    109         influence_infos(float step, const int method=INF_DEFAULT)
     109        influence_infos(float step, const bool ignore_step_up=false, const bool ignore_step_down=false, const int method=INF_DEFAULT)
    110110        {
    111111                //Empty struct
     
    114114                m_step = clamp(step, 0.0f, 1.0f);
    115115                m_method = method;
     116                m_ignore_step_up = ignore_step_up;
     117                m_ignore_step_down = ignore_step_down;
    116118        };
    117119
     
    134136        float   m_step;
    135137        int             m_method;
     138        bool    m_ignore_step_up;
     139        bool    m_ignore_step_down;
    136140
    137141        vec3    m_offset_pos[3];
     
    156160                debug_point_angle = 0.0f;
    157161
    158                 m_influence_list << (influence_infos(0.0f, INF_WAVE) << Point_infos_Part(OFF_DEF, vec3(.0f), vec3(.0f), .0f, vec3(.0f), .0f, 1.2f));
    159                 m_influence_list << (influence_infos(0.3f) << Point_infos_Part(OFF_DEF, vec3(.0f, 40.0f, .0f), vec3(.0f, 90.0f, .0f)));
    160                 m_influence_list << (influence_infos(0.7f) << Point_infos_Part(OFF_DEF, vec3(.0f, 40.0f, .0f), vec3(.0f, 90.0f, .0f)));
    161                 m_influence_list << (influence_infos(1.0f) << Point_infos_Part(OFF_DEF, vec3(.0f, 80.0f, .0f), vec3(.0f, .0f, 90.0f), .0f, vec3(2.0f, .0f, .0f))
    162                                                                                                         << Point_infos_Part(RND_MIN, vec3(-40.0f, .0f, -40.0f), vec3(.0f))
    163                                                                                                         << Point_infos_Part(RND_MAX, vec3(40.0f, .0f, 40.0f), vec3(.0f)));
     162                m_influence_list << (influence_infos(0.0f, false, false, INF_WAVE)
     163                                                                << Point_infos_Part(OFF_DEF, vec3(.0f), vec3(.0f), .0f, vec3(.0f), .0f, 1.2f));
     164                m_influence_list << (influence_infos(0.3f, false, true)
     165                                                                << Point_infos_Part(OFF_DEF, vec3(.0f, 40.0f, .0f), vec3(.0f, 90.0f, .0f)));
     166                m_influence_list << (influence_infos(0.7f, false, true)
     167                                                                << Point_infos_Part(OFF_DEF, vec3(.0f, 40.0f, .0f), vec3(.0f, 90.0f, .0f)));
     168                m_influence_list << (influence_infos(1.0f)
     169                                                                << Point_infos_Part(OFF_DEF, vec3(.0f, 80.0f, .0f), vec3(.0f, .0f, 90.0f), .0f, vec3(2.0f, .0f, .0f))
     170                                                                << Point_infos_Part(RND_MIN, vec3(-40.0f, .0f, -40.0f), vec3(.0f))
     171                                                                << Point_infos_Part(RND_MAX, vec3(40.0f, .0f, 40.0f), vec3(.0f)));
    164172
    165173                vec3 default_offset = vec3((float)DEF_X, (float)DEF_Y, (float)DEF_Z) * (float)DEF_SIZE * 0.5f;
     
    213221                for (int i=0; i < m_point_list.Count(); i++)
    214222                {
     223                        bool dir_influence_up = (m_point_list[i].m_influence - m_point_list[i].m_influence_previous > .0f)?(true):(false);
     224
    215225                        int info_a = 0;
    216226                        int info_b = m_influence_list.Count();
     
    220230                        {
    221231                                if (m_influence_list[j].m_step <= m_point_list[i].m_influence &&
    222                                         m_influence_list[j].m_step > step_a)
     232                                        m_influence_list[j].m_step > step_a &&
     233                                        ((dir_influence_up && !m_influence_list[j].m_ignore_step_up) ||
     234                                        (!dir_influence_up && !m_influence_list[j].m_ignore_step_down)))
    223235                                {
    224236                                        info_a = j;
     
    226238                                }
    227239                                if (m_influence_list[j].m_step >= m_point_list[i].m_influence &&
    228                                         m_influence_list[j].m_step < step_b)
     240                                        m_influence_list[j].m_step < step_b &&
     241                                        ((dir_influence_up && !m_influence_list[j].m_ignore_step_up) ||
     242                                        (!dir_influence_up && !m_influence_list[j].m_ignore_step_down)))
    229243                                {
    230244                                        info_b = j;
     
    241255                        divider = (divider > .0f)?((m_point_list[i].m_influence - step_a) / divider):(1.0f);
    242256
    243                         float dir_influence = m_point_list[i].m_influence - m_point_list[i].m_influence_previous;
    244                         float damp_used = ((dir_influence > 0.f)?(work_b.m_damp_up):(work_a.m_damp_down));
     257                        float damp_used = ((dir_influence_up)?(work_b.m_damp_up):(work_a.m_damp_down));
    245258                        damp_used = (seconds / (seconds + damp_used));
    246259
Note: See TracChangeset for help on using the changeset viewer.