/*
** Command & Conquer Generals Zero Hour(tm)
** Copyright 2025 Electronic Arts Inc.
**
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program. If not, see .
*/
/* $Header: /Commando/Code/Tools/max2w3d/nodefilt.h 6 1/14/98 10:23a Greg_h $ */
/***********************************************************************************************
*** Confidential - Westwood Studios ***
***********************************************************************************************
* *
* Project Name : Commando / G *
* *
* File Name : NODEFILT.H *
* *
* Programmer : Greg Hjelstrom *
* *
* Start Date : 06/09/97 *
* *
* Last Update : June 9, 1997 [GH] *
* *
*---------------------------------------------------------------------------------------------*
* Functions: *
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
#ifndef NODEFILT_H
#define NODEFILT_H
#include "always.h"
#include
/***************************************************************
*
* INodeFilterClass
*
* This is simply an object used to accept or reject INodes
* based on whatever criteria you desire. There are some
* default node filters defined in this module or you can
* create your own by inheriting the Abstract Base Class
* INodeFilterClass and implementing the Accept_Node method.
*
***************************************************************/
class INodeFilterClass
{
public:
virtual BOOL Accept_Node(INode * node, TimeValue time) = 0;
};
/***************************************************************
*
* AnyINodeFilter
*
* Accepts all INodes...
*
***************************************************************/
class AnyINodeFilter : public INodeFilterClass
{
public:
virtual BOOL Accept_Node(INode * node, TimeValue time) { return TRUE; }
};
/***************************************************************
*
* HelperINodeFilter
*
* Accepts INodes which are Helper objects
*
***************************************************************/
class HelperINodeFilter : public INodeFilterClass
{
public:
virtual BOOL Accept_Node(INode * node, TimeValue time);
};
/***************************************************************
*
* MeshINodeFilter
*
* Only accepts INodes which are Triangle meshes
*
***************************************************************/
class MeshINodeFilter : public INodeFilterClass
{
public:
virtual BOOL Accept_Node(INode * node, TimeValue time);
};
/***************************************************************
*
* VisibleMeshINodeFilter
*
* Only accepts INodes which are Triangle meshes and are
* currently visible
*
***************************************************************/
class VisibleMeshINodeFilter : public INodeFilterClass
{
public:
virtual BOOL Accept_Node(INode * node, TimeValue time);
};
/***************************************************************
*
* VisibleHelperINodeFilter
*
* Only accepts INodes which are Helper objects and are
* currently visible
*
***************************************************************/
class VisibleHelperINodeFilter : public INodeFilterClass
{
public:
virtual BOOL Accept_Node(INode * node, TimeValue time);
};
/***************************************************************
*
* VisibleMeshOrHelperINodeFilter
*
* Only accepts INodes which are Triangle meshes or helper
* objects and are currently visible
*
***************************************************************/
class VisibleMeshOrHelperINodeFilter : public INodeFilterClass
{
public:
virtual BOOL Accept_Node(INode * node, TimeValue time);
};
/***************************************************************
*
* AnimatedINodeFilter
*
* Only accepts INodes which contain at least on animation
* key.
*
***************************************************************/
class AnimatedINodeFilter : public INodeFilterClass
{
public:
virtual BOOL Accept_Node(INode * node, TimeValue time);
};
/***************************************************************
*
* VisibleSelectedINodeFilter
*
* Only accepts INodes which are Visible and Selected
*
***************************************************************/
class VisibleSelectedINodeFilter : public INodeFilterClass
{
public:
virtual BOOL Accept_Node(INode * node, TimeValue time);
};
#endif /*NODEFILT_H*/