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

📄 mgcdlodnode.h

📁 《3D游戏引擎设计》的源码
💻 H
字号:
// 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
//
// RESTRICTED USE SOURCE CODE
// http://www.magic-software.com/License/restricted.pdf

#ifndef MGCDLODNODE_H
#define MGCDLODNODE_H

#include "MgcSwitchNode.h"
class MgcCamera;


class MgcDLodNode : public MgcSwitchNode
{
    MgcDeclareRTTI;
    MgcDeclareStream;

public:
    // construction
    MgcDLodNode (unsigned int uiQuantity = 1, unsigned int uiGrowBy = 1);

    // center for level of detail
    MgcVector3& ModelCenter ();
    const MgcVector3& ModelCenter () const;
    const MgcVector3& WorldCenter () const;

    // distance intervals for children
    void SetModelMinSqrDistance (unsigned int uiIndex, MgcReal fMinSqrDist);
    void SetModelMaxSqrDistance (unsigned int uiIndex, MgcReal fMaxSqrDist);
    void SetModelSqrDistance (unsigned int uiIndex, MgcReal fMinSqrDist,
        MgcReal fMaxSqrDist);

    MgcReal GetModelMinSqrDistance (unsigned int uiIndex) const;
    MgcReal GetModelMaxSqrDistance (unsigned int uiIndex) const;
    void GetModelSqrDistance (unsigned int uiIndex, MgcReal& rfMinSqrDist,
        MgcReal& rfMaxSqrDist) const;

    MgcReal GetWorldMinSqrDistance (unsigned int uiIndex) const;
    MgcReal GetWorldMaxSqrDistance (unsigned int uiIndex) const;
    void GetWorldSqrDistance (unsigned int uiIndex, MgcReal& rfMinSqrDist,
        MgcReal& rfMaxSqrDist) const;

protected:
    // geometric updates
    void SelectLevelOfDetail (const MgcCamera* pkCamera);
    virtual void UpdateWorldData (MgcReal fAppTime);

    // drawing
    virtual void Draw (MgcRenderer& rkRenderer);

    // for deferred updates
    MgcReal m_fLastUpdateTime;

    // point whose distance to camera determines correct child
    MgcVector3 m_kModelLodCenter;
    MgcVector3 m_kWorldLodCenter;

    // squared distances for each LOD interval
    MgcTArray<MgcReal> m_afModelMinSqrDist;
    MgcTArray<MgcReal> m_afModelMaxSqrDist;
    MgcTArray<MgcReal> m_afWorldMinSqrDist;
    MgcTArray<MgcReal> m_afWorldMaxSqrDist;
};

MgcSmartPointer(MgcDLodNode);
MgcRegisterStream(MgcDLodNode);
#include "MgcDLodNode.inl"

#endif

⌨️ 快捷键说明

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