Beispiel #1
0
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");
	}
}
Beispiel #2
0
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;
}
Beispiel #3
0
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;
}
Beispiel #4
0
    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);
        }
    };
Beispiel #5
0
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();
	}
}