📄 mgcbspnode.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 + -