Ignore:
Timestamp:
Jul 1, 2012, 10:42:08 PM (8 years ago)
Author:
touky
Message:

Added Location modifier in URO.
Added BtPhystest for Bullet Physics test project.

Location:
trunk/games/ToukyDemo
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/games/ToukyDemo/Character.h

    r1551 r1554  
    217217                                {
    218218                                        m_body_cos[i].z += 2.0f * seconds;
    219                                         /*
    220                                         float fPI = M_PI;
    221                                         float Tmp = (std::abs(std::fmod(m_body_cos[i].z, fPI * 2.0f) - fPI) / fPI);
    222                                         Tmp = Tmp * Tmp * (3 - 2 * Tmp);
    223                                         Tmp = Tmp * 2.0f - 1.f;
    224                                         m_body_rotation[i].z = Tmp * 30.0f;
    225                                         */
    226219                                        m_body_rotation[i].z = lol::cos(m_body_cos[i].z) * 30.0f;
    227220                                        break;
  • trunk/games/ToukyDemo/UserReactiveObject.h

    r1548 r1554  
    99#define __USERREACTIVEOBJECT_H__
    1010
    11 #define DEF_X 12
     11#define DEF_X 15
    1212#define DEF_Y 1
    13 #define DEF_Z 12
     13#define DEF_Z 15
    1414#define DEF_SIZE 10
    1515#define DEF_INF_BLEND 50
     
    168168public:
    169169    UserReactiveObject()
    170       : m_ready(false)
     170      : m_ready(false),
     171                m_dist_modifier_influence_point(vec3(1.0f)),
     172                m_dist_modifier_grid_point(vec3(1.0f)),
     173                m_wave_angle(0.0f),
     174                m_debug_point_angle(0.0f)
    171175    {
     176
     177                m_dist_modifier_influence_point.y = .0f;
     178
    172179                m_ref_mesh.Compile( "[sc#f80 afcb10 8 8 -1]"
    173180                                                        "[sc#bbd afcb8 10 8 -1]"
    174181                                                        "[sc#44d afcb8 8 10 -1]");
    175 
    176                 wave_angle = 0.0f;
    177                 debug_point_angle = 0.0f;
    178182
    179183                m_influence_list << (influence_infos(0.0f, false, false, INF_WAVE)
     
    234238
    235239                m_rotation *= quat::rotate(seconds * 10.0f, vec3(0, 1, 0));
    236                 LocalToWorld = mat4::translate(m_position) * mat4(m_rotation);
     240                m_local_to_world = mat4::translate(m_position) * mat4(m_rotation);
    237241
    238242                m_influence_point_list.Empty();
    239243
    240                 wave_angle += 3.0f * seconds;
    241                 debug_point_angle += 1.0f * seconds;
    242 
    243                 if (wave_angle > M_PI * 2.0f)
    244                         wave_angle -= M_PI * 2.0f;
    245                 if (debug_point_angle > M_PI * 2.0f)
    246                         debug_point_angle -= M_PI * 2.0f;
     244                m_wave_angle += 3.0f * seconds;
     245                m_debug_point_angle += 1.0f * seconds;
     246
     247                if (m_wave_angle > M_PI * 2.0f)
     248                        m_wave_angle -= M_PI * 2.0f;
     249                if (m_debug_point_angle > M_PI * 2.0f)
     250                        m_debug_point_angle -= M_PI * 2.0f;
    247251
    248252                for (int i = 0; i < m_influencing_entities.Count(); ++i)
     
    250254                        if (m_influencing_entities[i])
    251255                        {
    252                                 mat4 LocalPos = inverse(LocalToWorld) * mat4::translate(m_influencing_entities[i]->m_position);
     256                                mat4 LocalPos = inverse(m_local_to_world) * mat4::translate(m_influencing_entities[i]->m_position);
    253257                                m_influence_point_list << influencing_point_infos(BLD_SPHERE, LocalPos.v3.xyz, 1.0f);
    254258                        }
    255259                }
    256260
    257                 //m_influence_point_list << influencing_point_infos(BLD_SPHERE, vec3(lol::cos(debug_point_angle) * DEF_X, 0, lol::sin(debug_point_angle) * DEF_Z) * DEF_SIZE * 0.3f, 1.0f);
    258                 //m_influence_point_list << influencing_point_infos(BLD_SQUARE, vec3(-lol::cos(debug_point_angle) * DEF_X, 0, -lol::sin(debug_point_angle) * DEF_Z) * DEF_SIZE * 0.3f, 1.0f);
     261                //m_influence_point_list << influencing_point_infos(BLD_SPHERE, vec3(lol::cos(m_debug_point_angle) * DEF_X, 0, lol::sin(m_debug_point_angle) * DEF_Z) * DEF_SIZE * 0.3f, 1.0f);
     262                //m_influence_point_list << influencing_point_infos(BLD_SQUARE, vec3(-lol::cos(m_debug_point_angle) * DEF_X, 0, -lol::sin(m_debug_point_angle) * DEF_Z) * DEF_SIZE * 0.3f, 1.0f);
    259263
    260264                ComputeInfluenceValues();
     
    268272                for (int i=0; i < m_point_list.Count(); i++)
    269273                {
    270                         m_point_list[i].m_influence_previous = m_point_list[i].m_influence;
    271 
    272274                        float cur_blend = 0.0f;
    273                         for (int j=0; j < m_influence_point_list.Count(); j++)
     275                        transient_infos &CurTI = m_point_list[i];
     276
     277                        CurTI.m_influence_previous = CurTI.m_influence;
     278
     279                        for (int j = 0; j < m_influence_point_list.Count(); j++)
    274280                        {
    275281                                float new_blend = 0.0f;
    276                                 switch (m_influence_point_list[j].m_useage)
     282                                influencing_point_infos &CurIPI = m_influence_point_list[j];
     283                                vec3 ModBasePos = CurTI.m_base_pos * m_dist_modifier_grid_point;
     284                                vec3 ModInfPos = CurIPI.m_position * m_dist_modifier_influence_point;
     285
     286                                switch (CurIPI.m_useage)
    277287                                {
    278                                 case BLD_SPHERE:
     288                                        case BLD_SPHERE:
    279289                                        {
    280                                                 new_blend = 1.0f - min(1.0f, max(0.0f, length(m_point_list[i].m_base_pos - m_influence_point_list[j].m_position) - DEF_INF_MAX) / DEF_INF_BLEND);
     290                                                new_blend = 1.0f - min(1.0f, max(0.0f, length(ModBasePos - ModInfPos) - DEF_INF_MAX) / DEF_INF_BLEND);
    281291                                                break;
    282292                                        }
    283                                 case BLD_SQUARE:
     293                                        case BLD_SQUARE:
    284294                                        {
    285                                                 vec3 point_diff = m_point_list[i].m_base_pos - m_influence_point_list[j].m_position;
     295                                                vec3 point_diff = ModBasePos - ModInfPos;
    286296                                                point_diff = vec3(std::abs(point_diff.x), std::abs(point_diff.y), std::abs(point_diff.z));
    287297
     
    291301                                                break;
    292302                                        }
    293                                 default:
     303                                        default:
    294304                                        {
    295305                                                break;
     
    297307                                };
    298308
    299                                 //cur_blend = max(cur_blend, 1.0f - min(1.0f, max(0.0f, length(m_point_list[i].m_base_pos - m_influence_point_list[j].m_position) - DEF_INF_MAX) / DEF_INF_BLEND));
     309                                //cur_blend = max(cur_blend, 1.0f - min(1.0f, max(0.0f, length(ModBasePos - ModInfPos) - DEF_INF_MAX) / DEF_INF_BLEND));
    300310                                cur_blend = max(cur_blend, new_blend);
    301311                        }
    302312
    303                         m_point_list[i].m_influence = cur_blend;
     313                        CurTI.m_influence = cur_blend;
    304314                }
    305315        }
     
    374384                        case INF_WAVE:
    375385                        {
    376                                 float point_angle = wave_angle + (float)src_transient.m_point_id * 2.0f * (float)M_PI * 2.0f / ((float)DEF_X * 1.051f);
     386                                float point_angle = m_wave_angle + (float)src_transient.m_point_id * 2.0f * (float)M_PI * 2.0f / ((float)DEF_X * 1.051f);
    377387                                dst_work.m_pos += vec3(0.0f, (-1.0f + lol::cos(point_angle)) * 20.0f, 0.0f);
    378388                                //TODO : dst_work.m_rot += vec3(0,0,0);
     
    410420                for (int i=0; i < m_point_list.Count(); i++)
    411421                {
    412                         mat4 model = LocalToWorld *
     422                        mat4 model = m_local_to_world *
    413423                                mat4::translate(m_point_list[i].m_final_pos) *
    414424                                mat4(quat::fromeuler_yxz(m_point_list[i].m_final_rot)) *
     
    430440        Array<WorldEntity*>                             m_influencing_entities;
    431441
    432         float                                                   wave_angle;
    433         float                                                   debug_point_angle;
    434         mat4                                                    LocalToWorld;
     442        vec3                                                    m_dist_modifier_influence_point;
     443        vec3                                                    m_dist_modifier_grid_point;
     444
     445        float                                                   m_wave_angle;
     446        float                                                   m_debug_point_angle;
     447        mat4                                                    m_local_to_world;
    435448    bool                                                        m_ready;
    436449};
Note: See TracChangeset for help on using the changeset viewer.