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 };