scenetraversal.h

Go to the documentation of this file.
00001 /*********************************************************************
00002  *<
00003     FILE: sceneTraversal.h
00004 
00005     DESCRIPTION: Interface for plugins controlling display traversal
00006 
00007     CREATED BY: John Hutchinson
00008 
00009     HISTORY: November 5 2003
00010 
00011  *> Copyright (c) 2000, All Rights Reserved.
00012  **********************************************************************/
00013 
00014 #pragma once
00015 
00016 #include "maxheap.h"
00017 #include "maxtypes.h"
00018 #include "baseinterface.h"
00019 
00020 // forward declarations
00021 class NodeIterator;
00022 class ViewExp;
00023 class INode;
00024 
00025 #define SCENETRAVERSAL_INTERFACE Interface_ID(0x35380d8c, 0x48e54b8c)
00026 
00027 // An interface for controlling the display traversal of the scene
00028 class ISceneTraversal : public BaseInterface
00029 {
00030 public:
00031 
00032     enum IteratorContext
00033     {
00034         kDisplay = 0,
00035         kHitTest = 1
00036     };
00037 
00038     virtual NodeIterator *GetIterator(ViewExp* vpt, IteratorContext context) = 0;
00039 };
00040 
00041 class NodeIterator: public MaxHeapOperators
00042 {
00043 public:
00044     virtual ~NodeIterator() {;}
00045     virtual void DeleteThis()=0;    // used to implement { delete this; }
00046     virtual void Reset() = 0;
00047     virtual INode *next() = 0;
00048 };