mgcturret.h

来自「《3D游戏引擎设计》的源码」· C头文件 代码 · 共 87 行

H
87
字号
// 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/free.pdf

#ifndef MGCTURRET_H
#define MGCTURRET_H

#include "MgcMatrix3.h"

class MgcTurret
{
public:
    MgcTurret ();

    MgcReal& TranslateSpeed (int i);
    MgcReal& RotateSpeed (int i);

    void BindKeysToTranslateRight (int iKeyM, int iKeyP, MgcReal fSpeed);
    void BindKeysToTranslateUp (int iKeyM, int iKeyP, MgcReal fSpeed);
    void BindKeysToTranslateDirection (int iKeyM, int iKeyP, MgcReal fSpeed);

    void BindKeysToRotateRight (int iKeyM, int iKeyP, MgcReal fSpeed);
    void BindKeysToRotateUp (int iKeyM, int iKeyP, MgcReal fSpeed);
    void BindKeysToRotateDirection (int iKeyM, int iKeyP, MgcReal fSpeed);

    bool ReadKeyboard ();

    const MgcMatrix3& GetRotate () const;
    const MgcVector3& GetTranslate () const;

protected:
    bool ReadTrn (int i);
    bool ReadRot (int i);
    void BindTrnKeys (int i, int iKeyM, int iKeyP, MgcReal fSpeed);
    void BindRotKeys (int i, int iKeyM, int iKeyP, MgcReal fSpeed);

    int m_iTrnKeyM[3];
    int m_iTrnKeyP[3];
    MgcReal m_fTrnSpeed[3];
    int m_iRotKeyM[3];
    int m_iRotKeyP[3];
    MgcReal m_fRotSpeed[3];
    bool m_bUseAxis[3];
    bool m_bUpdateAxis[3];
    MgcVector3 m_kAxis[3];

    // local transforms for turret
    MgcMatrix3 m_kRotate[3];
    MgcVector3 m_kTranslate[3];

    // composite transforms for global motion
    MgcMatrix3 m_kRotateComp;
    MgcVector3 m_kTranslateComp;
};

//---------------------------------------------------------------------------
inline MgcReal& MgcTurret::TranslateSpeed (int i)
{
    return m_fTrnSpeed[i];
}
//---------------------------------------------------------------------------
inline MgcReal& MgcTurret::RotateSpeed (int i)
{
    return m_fRotSpeed[i];
}
//---------------------------------------------------------------------------
inline const MgcMatrix3& MgcTurret::GetRotate () const
{
    return m_kRotateComp;
}
//---------------------------------------------------------------------------
inline const MgcVector3& MgcTurret::GetTranslate () const
{
    return m_kTranslateComp;
}
//---------------------------------------------------------------------------

#endif

⌨️ 快捷键说明

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