void CPHWorld::SetStep(dReal s) { fixed_step = s; world_cfm = CFM(SPRING_S(base_cfm,base_erp,base_fixed_step),DAMPING(base_cfm,base_erp)); world_erp = ERP(SPRING_S(base_cfm,base_erp,base_fixed_step),DAMPING(base_cfm,base_erp)); world_spring = 1.0f*SPRING (world_cfm,world_erp); world_damping = 1.0f*DAMPING(world_cfm,world_erp); if(ph_world&&ph_world->Exist()) { float frame_time = Device.fTimeDelta; u32 it_number = iFloor (frame_time /fixed_step); frame_time -= it_number*fixed_step; ph_world->m_previous_frame_time = frame_time; ph_world->m_frame_time = frame_time; } }
const dReal default_l_limit = 150.f;//(3.f/fixed_step=0.02f); const dReal default_l_scale = 1.01f; const dReal default_w_scale = 1.01f; const dReal default_k_l = 0.0002f;//square resistance !! const dReal default_k_w = 0.05f; const dReal mass_limit = 10000.f;//some conventional value used as evaluative param (there is no code restriction on mass) extern const u16 max_joint_allowed_for_exeact_integration = 30; //base params const dReal base_fixed_step = 0.02f ; const dReal base_erp = 0.54545456f ; const dReal base_cfm = 1.1363636e-006f ; //base params dReal fixed_step = 0.01f; dReal world_cfm = CFM(SPRING_S(base_cfm,base_erp,base_fixed_step),DAMPING(base_cfm,base_erp)); dReal world_erp = ERP(SPRING_S(base_cfm,base_erp,base_fixed_step),DAMPING(base_cfm,base_erp)); dReal world_spring = 1.0f*SPRING (world_cfm,world_erp); dReal world_damping = 1.0f*DAMPING(world_cfm,world_erp); const dReal default_world_gravity = 2*9.81f; ///////////////////////////////////////////////////// int phIterations = 18; float phTimefactor = 1.f; float phBreakCommonFactor = 0.01f; float phRigidBreakWeaponFactor = 1.f; Fbox phBoundaries = {1000.f,1000.f,-1000.f,-1000.f};