void LoadPrograms() { { s_geometryProgram.program = glCreateProgram(); s_geometryProgram.vertex = _AttachShaderFromFile(s_geometryProgram.program, "../../assets/program.vert", GL_VERTEX_SHADER); s_geometryProgram.fragment = _AttachShaderFromFile(s_geometryProgram.program, "../../assets/program.frag", GL_FRAGMENT_SHADER); _Finalize(s_geometryProgram.program); // get uniforms s_geometryProgram.u_mvp = glGetUniformLocation(s_geometryProgram.program, "mvp_matrix"); s_geometryProgram.u_m = glGetUniformLocation(s_geometryProgram.program, "m_matrix"); } { s_iblProgram.program = glCreateProgram(); s_iblProgram.vertex = _AttachShaderFromFile(s_iblProgram.program, "../../assets/composite.vert", GL_VERTEX_SHADER); s_iblProgram.fragment = _AttachShaderFromFile(s_iblProgram.program, "../../assets/composite.frag", GL_FRAGMENT_SHADER); _Finalize(s_iblProgram.program); // get uniforms s_iblProgram.u_rt0 = glGetUniformLocation(s_iblProgram.program, "RT0"); s_iblProgram.u_rt1 = glGetUniformLocation(s_iblProgram.program, "RT1"); s_iblProgram.u_rt2 = glGetUniformLocation(s_iblProgram.program, "RT2"); s_iblProgram.u_rt3 = glGetUniformLocation(s_iblProgram.program, "RT3"); s_iblProgram.u_invView = glGetUniformLocation(s_iblProgram.program, "invView"); s_iblProgram.u_invProj = glGetUniformLocation(s_iblProgram.program, "invProj"); } }
MoveSpline::UpdateResult MoveSpline::_updateState(int32& ms_time_diff) { if (Finalized()) { ms_time_diff = 0; return Result_Arrived; } UpdateResult result = Result_None; int32 minimal_diff = std::min(ms_time_diff, segment_time_elapsed()); //sometimes we receive here values < 0 //then the core crash on ASSERT //this is only a first workaround.. // i need help here if (minimal_diff < 0) { TC_LOG_ERROR("misc", "MoveSpline::_updateState (Prevent Core Crash: minimal_diff is < 0) ms_time_diff:%u \n", ms_time_diff); _Finalize(); ms_time_diff = 0; return Result_Arrived; } ASSERT(minimal_diff >= 0); time_passed += minimal_diff; ms_time_diff -= minimal_diff; if (time_passed >= next_timestamp()) { ++point_Idx; if (point_Idx < spline.last()) { result = Result_NextSegment; } else { if (spline.isCyclic()) { point_Idx = spline.first(); time_passed = time_passed % Duration(); result = Result_NextCycle; } else { _Finalize(); ms_time_diff = 0; result = Result_Arrived; } } } return result; }
MoveSpline::UpdateResult MoveSpline::_updateState(int32& ms_time_diff) { if (ms_time_diff < 0) { ms_time_diff = 0; return Result_Arrived; } if (Finalized()) { ms_time_diff = 0; return Result_Arrived; } UpdateResult result = Result_None; int32 minimal_diff = std::min(ms_time_diff, segment_time_elapsed()); ASSERT(minimal_diff >= 0); time_passed += minimal_diff; ms_time_diff -= minimal_diff; if (time_passed >= next_timestamp()) { ++point_Idx; if (point_Idx < spline.last()) { result = Result_NextSegment; } else { if (spline.isCyclic()) { point_Idx = spline.first(); time_passed = time_passed % Duration(); result = Result_NextSegment; } else { _Finalize(); ms_time_diff = 0; result = Result_Arrived; } } } return result; }
void Finalize(Player &u) { // remove flag to prevent send object build movement packets for flight state and crash (movement generator already not at top of stack) if (m_displayId) u.Unmount(); u.clearUnitState(UNIT_STAT_TAXI_FLIGHT); u.RemoveFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_TAXI_FLIGHT); u.getHostileRefManager().setOnlineOfflineState(true); if(u.pvpInfo.inHostileArea) u.CastSpell(&u, 2479, true); _Finalize(u); if (m_previewDisplayId) { u.Mount(m_previewDisplayId); } };
LRESULT WeaselIME::OnIMESelect(BOOL fSelect) { EZDBGONLYLOGGERPRINT("On IME select: %d, HIMC = 0x%x", fSelect, m_hIMC); if (fSelect) { // initialize weasel client m_client.Connect(launch_server); m_client.StartSession(); return _Initialize(); } else { m_client.EndSession(); return _Finalize(); } }