fbscene.h

Go to the documentation of this file.
00001 #ifndef __FBSCENE_H__
00002 #define __FBSCENE_H__
00003 /**************************************************************************
00004  Copyright (c) 1994 - 2009 Autodesk, Inc. and/or its licensors.
00005  All Rights Reserved.
00006  
00007  The coded instructions, statements, computer programs, and/or related 
00008  material (collectively the "Data") in these files contain unpublished 
00009  information proprietary to Autodesk, Inc. and/or its licensors, which is 
00010  protected by Canada and United States of America federal copyright law 
00011  and by international treaties.
00012  
00013  The Data may not be disclosed or distributed to third parties, in whole 
00014  or in part, without the prior written consent of Autodesk, Inc. 
00015  ("Autodesk").
00016  
00017  THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY.
00018  ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED. AUTODESK MAKES NO 
00019  WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR 
00020  ARISING BY CUSTOM OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES 
00021  OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR 
00022  PURPOSE OR USE. WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT 
00023  WARRANT THAT THE OPERATION OF THE DATA WILL BE UNINTERRUPTED OR ERROR 
00024  FREE.
00025  
00026  IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS 
00027  OR SUPPLIERS ("AUTODESK GROUP") BE LIABLE FOR ANY LOSSES, DAMAGES OR 
00028  EXPENSES OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR MULTIPLE 
00029  DAMAGES OR OTHER SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS 
00030  OF PROFITS, REVENUE OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR 
00031  DAMAGES OF ANY KIND), HOWEVER CAUSED, AND REGARDLESS OF THE THEORY OF 
00032  LIABILITY, WHETHER DERIVED FROM CONTRACT, TORT (INCLUDING, BUT NOT 
00033  LIMITED TO, NEGLIGENCE), OR OTHERWISE, ARISING OUT OF OR RELATING TO THE 
00034  DATA OR ITS USE OR ANY OTHER PERFORMANCE, WHETHER OR NOT AUTODESK HAS 
00035  BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS OR DAMAGE.
00036  
00037 **************************************************************************/
00038 
00044 #include <kaydaradef.h>
00045 #ifndef FBSDK_DLL 
00046 
00049     #define FBSDK_DLL K_DLLIMPORT
00050 #endif
00051 
00052 #include <fbsdk/fbcomponent.h>
00053 #include <fbsdk/fbcore.h>
00054 #include <fbsdk/fbdata.h>
00055 #include <fbsdk/fbfolder.h>
00056 #include <fbsdk/fbrenderer.h>
00057 #include <fbsdk/fbshader.h>
00058 #include <fbsdk/fbmodel.h>
00059 #include <fbsdk/fbvideo.h>
00060 #include <fbsdk/fbmotion.h>
00061 #include <fbsdk/fbgroup.h>
00062 #include <fbsdk/fbobjectpose.h>
00063 
00064 #if !defined(K_NO_CHARACTER)
00065     #include <fbsdk/fbcharacter.h>
00066     #include <fbsdk/fbcharacterface.h>
00067     #include <fbsdk/fbcharacterpose.h>
00068     #include <fbsdk/fbcharacterextension.h>
00069 #endif
00070 
00071 #if !defined(K_NO_DECK)
00072     #include <fbsdk/fbdeck.h>
00073 #endif
00074 
00075 #if !defined(K_NO_AUDIO)
00076     #include <fbsdk/fbaudio.h>
00077 #endif
00078 
00079 #if !defined(K_NO_MANIPULATOR)
00080     #include <fbsdk/fbmanipulator.h>
00081 #endif
00082 
00083 #if !defined(K_NO_NOTE)
00084     #include <fbsdk/fbnote.h>
00085 #endif
00086 
00087 #if !defined(K_NO_POSE)
00088     #include <fbsdk/fbpose.h>
00089 #endif
00090 
00091 #if !defined(K_NO_STORY)
00092     #include <fbsdk/fbcommand.h>
00093 #endif
00094 
00095 #if !defined(K_NO_PROJECTSETTINGS)
00096     #include <fbsdk/fbprojectsettings.h>
00097 #endif
00098 
00099 #ifndef FBSDK_LEAN_AND_MEAN
00100     #include <fbsdk/fbuserobject.h>
00101 #endif
00102 
00103 #include <fbsdk/fbconstraint.h>
00104 
00105 #ifdef FBSDKUseNamespace
00106     namespace FBSDKNamespace {
00107 #endif
00108 
00109 
00110 
00112 // FBSceneEvent
00115 enum FBSceneChangeType
00116 {
00117     kFBSceneChangeNone,                 
00118     kFBSceneChangeDestroy,              
00119     kFBSceneChangeAttach,               
00120     kFBSceneChangeDetach,               
00121     kFBSceneChangeAddChild,             
00122     kFBSceneChangeRemoveChild,          
00123     kFBSceneChangeSelect,               
00124     kFBSceneChangeUnselect,             
00125     kFBSceneChangeRename,               
00126     kFBSceneChangeRenamePrefix,         
00127     kFBSceneChangeRenameUnique,         
00128     kFBSceneChangeRenameUniquePrefix,   
00129     kFBSceneChangeRenamed,              
00130     kFBSceneChangeRenamedPrefix,        
00131     kFBSceneChangeRenamedUnique,        
00132     kFBSceneChangeRenamedUniquePrefix,  
00133     kFBSceneChangeSoftSelect,           
00134     kFBSceneChangeSoftUnselect,         
00135     kFBSceneChangeHardSelect,           
00136     kFBSceneChangeActivate,             
00137     kFBSceneChangeDeactivate,           
00138     kFBSceneChangeLoadBegin,            
00139     kFBSceneChangeLoadEnd,              
00140     kFBSceneChangeClearBegin,           
00141     kFBSceneChangeClearEnd,             
00142     kFBSceneChangeTransactionBegin,     
00143     kFBSceneChangeTransactionEnd,       
00144     kFBSceneChangeReSelect,             
00145     kFBSceneChangeChangeName,           
00146     kFBSceneChangeChangedName,          
00147     kFBSceneChangePreParent,            
00148     kFBSceneChangePreUnparent,          
00149     kFBSceneChangeFocus,                
00150     kFBSceneChangeChangedParent,        
00151     kFBSceneChangeReorder,              
00152     kFBSceneChangeReordered,            
00153 };
00154 
00155 FB_DEFINE_ENUM( FBSDK_DLL, SceneChangeType );
00156 
00157 __FB_FORWARD( FBEventSceneChange );
00158 
00166 class FBSDK_DLL FBEventSceneChange: public FBEvent 
00167 {
00168 public:
00172     FBEventSceneChange( HKEventBase pEvent );       
00173 
00174     FBPropertySceneChangeType   Type;            
00175     FBPropertyComponent         Component;       
00176     FBPropertyComponent         ChildComponent;  
00177 };
00178 
00180 // FBEventTakeChange
00183 enum FBTakeChangeType   
00184 {
00185     kFBTakeChangeAdded,         
00186     kFBTakeChangeRemoved,       
00187     kFBTakeChangeOpened,        
00188     kFBTakeChangeClosed,        
00189     kFBTakeChangeRenamed,       
00190     kFBTakeChangeUpdated,       
00191     kFBTakeChangeMoved,         
00192     kFBTakeChangeNone           
00193 };
00194 
00195 FB_DEFINE_ENUM( FBSDK_DLL, TakeChangeType );
00196 
00197 __FB_FORWARD( FBEventTakeChange );
00198 
00206 class FBSDK_DLL FBEventTakeChange: public FBEvent 
00207 {
00208   public:
00209 
00213     FBEventTakeChange( HKEventBase pEvent );        
00214 
00215     FBPropertyTakeChangeType    Type;        
00216     FBPropertyTake              Take;        
00217 };
00218 
00220 // FBSceneList
00222 FB_FORWARD      ( FBPropertyListScene );
00223 __FB_FORWARD( FBScene );
00224 FB_DEFINE_LIST  ( FBSDK_DLL, Scene );
00225 
00228 class FBSDK_DLL FBPropertyListScene : public FBPropertyBaseList< HFBScene >
00229 {
00230   private:
00231   public:
00236     virtual int Add( HFBScene pItem );
00240     virtual void RemoveAt( int pIndex );
00245     virtual HFBScene operator[](int pIndex);
00249     virtual int GetCount();
00250 };
00251 
00253 // FBScene
00255 
00272 class FBSDK_DLL FBScene : public FBComponent {
00273     __FBClassDeclare( FBScene,FBComponent );
00274 
00275     // We want to disallow the use of the copy constructor and operator for FBScene.
00276     FBScene( const FBScene* );
00277     FBScene( const FBScene& );
00278     FBScene& operator=( const FBScene& );
00279 
00280 public:
00281 
00287     FBScene(HIObject pObject);
00288 
00291     virtual void FBDelete();
00292 
00296     K_DEPRECATED void Clear();
00300     bool                            Evaluate();
00301 
00305     bool                            EvaluateDeformations();
00306 
00307     FBPropertyListTake              Takes;          
00308     FBPropertyModel                 RootModel;      
00309     FBPropertyListCamera            Cameras;        
00310     FBPropertyListMaterial          Materials;      
00311     FBPropertyListTexture           Textures;       
00312     FBPropertyListShader            Shaders;        
00313     FBPropertyListDeformer          Deformers;      
00314     FBPropertyListDevice            Devices;        
00315     FBPropertyListConstraint        Constraints;    
00316 
00317     FBPropertyListLight             Lights;         
00318 #if !defined(K_NO_AUDIO)
00319     FBPropertyListAudioClip         AudioClips;     
00320 #endif
00321 #if !defined(K_NO_VIDEO)
00322     FBPropertyListVideoClip         VideoClips;     
00323 #endif
00324 
00325     FBPropertyListMotionClip        MotionClips;    
00326 
00327 #if !defined(K_NO_FOLDER)
00328     FBPropertyListFolder            Folders;        
00329 #endif
00330 
00331 #if !defined(K_NO_NOTE)
00332     FBPropertyListNote              Notes;          
00333 #endif
00334 
00335 #if !defined(K_NO_POSE)
00336     FBPropertyListPose              Poses;          
00337     FBPropertyListObjectPose        ObjectPoses;    
00338 #endif
00339 
00340 #if !defined(K_NO_ACTOR)
00341     FBPropertyListActor             Actors;         
00342     FBPropertyListActorFace         ActorFaces;     
00343 #endif
00344 
00345 #if !defined(K_NO_CHARACTER)
00346     FBPropertyListMarkerSet         MarkerSets;     
00347     FBPropertyListControlSet        ControlSets;    
00348     FBPropertyListCharacter         Characters;     
00349     FBPropertyListCharacterFace     CharacterFaces; 
00350     FBPropertyListCharacterPose     CharacterPoses; 
00351     FBPropertyListCharacterExtension CharacterExtensions;   
00352 #endif
00353 
00354 #ifndef FB_KERNEL 
00355     FBPropertyListUserObject        UserObjects;    
00356 #endif
00357 
00358 #if !defined(K_NO_PROJECTSETTINGS)
00359     FBPropertyProjectSettings       ProjectSettings;
00360 #endif
00361 
00362     FBPropertyRenderer              Renderer;       
00363     FBPropertyListComponent         Components;     
00364     FBPropertyListGroup             Groups;         
00365     FBPropertyListSet               Sets;           
00366 
00367 #ifndef FB_KERNEL 
00368     FBPropertyListHandle            Handles;        
00369 #endif
00370 
00371     FBPropertyListConstraintSolver      ConstraintSolvers;      
00372     FBPropertyListPhysicalProperties    PhysicalProperties;     
00373 
00374     FBPropertyTime                  LocalTime;      
00375 
00376     FBPropertyEvent                 OnChange;       
00377     FBPropertyEvent                 OnTakeChange;   
00378 };
00379 
00380 #ifndef __FB_COMPONENT_SCENE
00381     #define __FB_COMPONENT_SCENE
00382     FB_DEFINE_COMPONENT( FBSDK_DLL, Scene );
00383 #endif
00384 
00385 
00386 #ifdef FBSDKUseNamespace
00387     }
00388 #endif
00389 #endif
00390