FreeWRL/FreeX3D  3.0.0
SAIScene.h
1 /****************************************************************************
2  This file is part of the FreeWRL/FreeX3D Distribution.
3 
4  Copyright 2009 CRC Canada. (http://www.crc.gc.ca)
5 
6  FreeWRL/FreeX3D is free software: you can redistribute it and/or modify
7  it under the terms of the GNU Lesser Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  FreeWRL/FreeX3D is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with FreeWRL/FreeX3D. If not, see <http://www.gnu.org/licenses/>.
18 ****************************************************************************/
19 
20 /****************************************************************************
21  IMPORTANT NOTICE:
22  A class derived from saiScene should ALWAYS derive also from saiExecutionContext
23  ALWAYS!
24 ****************************************************************************/
25 
26 
27 #ifndef _SAISCENE_H_ABSTRACT_
28 #define _SAISCENE_H_ABSTRACT_
29 
30 #include "SAIGlobals.h"
31 
32 namespace freeWRLSAI_cpp
33 {
34  class saiScene
35  {
36  public:
37  virtual const char* getMetaData(const char* strKey) = 0; //should return NULL if metadata not found
38  virtual void setMetaData(const char* strKey, const char* strMetadata) = 0; //if strMetadata = NULL, metadata pointed by strKey should be removed
39  virtual void rootNodeHandling(const saiNode* pTargetNode, int nAction) = 0;
40 
41  //not part of the standard but copied from Java Language Bindings
42  virtual void AddRootNode(const saiNode* pNodeToAdd) = 0; //calls rootNodeHandling(pNodeToAdd, AddRootNode)
43  virtual void RemoveRootNode(const saiNode* pNodeToRemove) = 0; //calls rootNodeHandling(pNodeToRemove, RemoveRootNode)
44 
45  //WAITING FOR DEFINITION
46  //virtual void namedNodeHandling... I believe it should be implemented with four different method signatures like Java Language Bindings does
47 
48  };
49 };
50 
51 
52 #endif //_SAISCENE_H_ABSTRACT_