⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testkeyframecontroller.cpp

📁 《3D游戏引擎设计》的源码
💻 CPP
字号:
// Magic Software, Inc.
// http://www.magic-software.com
// Copyright (c) 2000, All Rights Reserved
//
// Source code from Magic Software is supplied under the terms of a license
// agreement and may not be copied or disclosed except in accordance with the
// terms of that agreement.  The various license agreements may be found at
// the Magic Software web site.  This file is subject to the license
//
// FREE SOURCE CODE
// http://www.magic-software.com/License.html/free.pdf

#include "TestKeyframeController.h"

//---------------------------------------------------------------------------
MgcApplication* MgcApplication::Create ()
{
    return new TestKeyframeController;
}
//---------------------------------------------------------------------------
TestKeyframeController::TestKeyframeController ()
    :
    MgcApplication("TestKeyframeController",640,480,0,1)
{
    // initialize 'last time'
    MeasureTime();
}
//---------------------------------------------------------------------------
bool TestKeyframeController::Initialize ()
{
    m_spkCamera = new MgcOglCamera(640,480);
    m_spkCamera->SetFrustum(1.0,1000.0,-0.55,0.55,0.4125,-0.4125);
    MgcVector3 kCLoc(80.0,0.0,23.0);
    MgcVector3 kCLeft(0.0,-1.0,0.0);
    MgcVector3 kCUp(0.0,0.0,1.0);
    MgcVector3 kCDir(-1.0,0,0.0);
    m_spkCamera->SetFrame(kCLoc,kCLeft,kCUp,kCDir);

    m_spkRenderer = new MgcOglRenderer(GetWindowHandle(),640,480);
    m_spkRenderer->SetBackgroundColor(MgcColor(0.5f,0.0f,1.0f));
    m_spkRenderer->SetCamera(m_spkCamera);

    MgcStream kStream;
    bool bLoaded = kStream.Load("biped.mgc");
    m_spkScene = (MgcNode*) kStream.GetObjectAt(0);

    m_spkCamera->Update();
    m_spkScene->UpdateGS(0.0);
    m_spkScene->UpdateRS();
    return true;
}
//---------------------------------------------------------------------------
void TestKeyframeController::Terminate ()
{
    m_spkRenderer = 0;
    m_spkScene = 0;
}
//---------------------------------------------------------------------------
void TestKeyframeController::OnIdle ()
{
    MeasureTime();

    m_spkRenderer->ClearBuffers();
    m_spkRenderer->Draw(m_spkScene);
    m_spkRenderer->DisplayBackBuffer();

    DrawFrameRate();
    UpdateClicks();
}
//---------------------------------------------------------------------------
bool TestKeyframeController::WmChar (char cCharCode, long lKeyData)
{
    switch ( cCharCode )
    {
    case '0':  // reset frame rate measurements
        ResetTime();
        return true;
    case 'q':
    case 'Q':
    case VK_ESCAPE:
        PostMessage(GetWindowHandle(),WM_DESTROY,0,0);
        return true;
    }

    // animation
    static MgcReal fTime = 0.0;

    switch ( cCharCode )
    {
    case 'g':
        fTime += 0.01;
        break;
    case 'G':
        fTime = 0.0;
        break;
    }

    m_spkScene->UpdateGS(fTime);

    return false;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -