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

📄 mgcbspnode.h

📁 3D Game Engine Design Source Code非常棒
💻 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 MGCBSPNODE_H
#define MGCBSPNODE_H

#include "MgcNode.h"


class MgcBspNode : public MgcNode
{
    MgcDeclareRTTI;
    MgcDeclareStream;

public:
    // Construction.  The base class MgcNode has *three* children and is not
    // allowed to grow.  The first and last children (indices 0 and 2) are
    // the left and right children of the binary tree.  The middle child slot
    // is where a derived class can attach additional geometry such as the
    // triangles that are coplanar with the splitting plane.
    MgcBspNode ();

    // These methods should be used instead of the attach/detach methods in
    // the MgcNode base class.  The left child corresponds to the positive
    // side of the separating plane.  The right child corresponds to the
    // negative side of the plane.
    MgcSpatialPtr AttachLeftChild (MgcSpatial* pkChild);
    MgcSpatialPtr AttachRightChild (MgcSpatial* pkChild);
    MgcSpatialPtr DetachLeftChild ();
    MgcSpatialPtr DetachRightChild ();
    MgcSpatialPtr GetLeftChild ();
    MgcSpatialPtr GetRightChild ();

    // plane access
    MgcPlane& ModelPlane ();
    const MgcPlane& ModelPlane () const;
    const MgcPlane& GetWorldPlane () const;

    // An application can attach relevant data to each BSP node.  The
    // callback is executed in the Draw pass when it is determined that the
    // node is potentially visible.  The application is responsible for
    // memory management associated with the data.
    typedef void (*CallbackFunction)(void);
    CallbackFunction& Callback ();
    void*& Data ();

protected:
    // geometric updates
    virtual void UpdateWorldData (MgcReal fAppTime);

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

    MgcPlane m_kModelPlane;
    MgcPlane m_kWorldPlane;
    CallbackFunction m_oCallback;
    void* m_pvData;
};

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

#endif

⌨️ 快捷键说明

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