00001 #ifndef __FBSTORY_H__
00002 #define __FBSTORY_H__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00043 #include <kaydaradef.h>
00044 #ifndef FBSDK_DLL
00045
00048 #define FBSDK_DLL K_DLLIMPORT
00049 #endif
00050
00051 #include <fbsdk/fbcomponent.h>
00052 #include <fbsdk/fbcore.h>
00053 #include <fbsdk/fbvideo.h>
00054 #include <fbsdk/fbmodel.h>
00055
00056
00057 #ifdef FBSDKUseNamespace
00058 namespace FBSDKNamespace {
00059 #endif
00060
00061 __FB_FORWARD( FBStory );
00062 __FB_FORWARD( FBStoryFolder );
00063 __FB_FORWARD( FBStoryTrack );
00064 __FB_FORWARD( FBStoryClip );
00065 FB_DEFINE_COMPONENT( FBSDK_DLL, Story );
00066 FB_DEFINE_COMPONENT( FBSDK_DLL, StoryFolder );
00067 FB_DEFINE_COMPONENT( FBSDK_DLL, StoryTrack );
00068 FB_DEFINE_COMPONENT( FBSDK_DLL, StoryClip );
00069 FB_DEFINE_COMPONENT( FBSDK_DLL, AnimationNode );
00070 FB_DEFINE_COMPONENT( FBSDK_DLL, Video );
00071 FB_DEFINE_COMPONENT( FBSDK_DLL, AudioClip );
00072
00074 enum FBStoryTrackType {
00075 kFBStoryTrackAnimation,
00076 kFBStoryTrackCamera,
00077 kFBStoryTrackCharacter,
00078 kFBStoryTrackConstraint,
00079 kFBStoryTrackCommand,
00080 kFBStoryTrackShot,
00081 kFBStoryTrackAudio,
00082 kFBStoryTrackVideo
00083 };
00084
00086 enum FBStoryTrackRefMode {
00087 kFBStoryTrackOverride,
00088 kFBStoryTrackAdditive
00089 };
00090
00092 enum FBStoryTrackBodyPart {
00093 kFBStoryTrackBodyPartNone = 0,
00094
00095 kFBStoryTrackBodyPartHead = 1 << 0,
00096
00097 kFBStoryTrackBodyPartLeftShoulder = 1 << 1,
00098 kFBStoryTrackBodyPartLeftHand = 1 << 2,
00099 kFBStoryTrackBodyPartLeftArm = 1 << 3 | kFBStoryTrackBodyPartLeftShoulder | kFBStoryTrackBodyPartLeftHand,
00100 kFBStoryTrackBodyPartRightShoulder = 1 << 4,
00101 kFBStoryTrackBodyPartRightHand = 1 << 5,
00102 kFBStoryTrackBodyPartRightArm = 1 << 6 | kFBStoryTrackBodyPartRightShoulder | kFBStoryTrackBodyPartRightHand,
00103
00104 kFBStoryTrackBodyPartUpperBody = kFBStoryTrackBodyPartHead |
00105 kFBStoryTrackBodyPartLeftArm | kFBStoryTrackBodyPartLeftShoulder | kFBStoryTrackBodyPartLeftHand |
00106 kFBStoryTrackBodyPartRightArm | kFBStoryTrackBodyPartRightShoulder | kFBStoryTrackBodyPartRightHand,
00107
00108 kFBStoryTrackBodyPartLeftFoot = 1 << 7,
00109 kFBStoryTrackBodyPartLeftLeg = 1 << 8 | kFBStoryTrackBodyPartLeftFoot,
00110 kFBStoryTrackBodyPartRightFoot = 1 << 9,
00111 kFBStoryTrackBodyPartRightLeg = 1 << 10| kFBStoryTrackBodyPartRightFoot,
00112
00113 kFBStoryTrackBodyPartLowerBody = kFBStoryTrackBodyPartLeftLeg | kFBStoryTrackBodyPartLeftFoot | kFBStoryTrackBodyPartRightLeg | kFBStoryTrackBodyPartRightFoot,
00114
00115 kFBStoryTrackBodyPartAll = kFBStoryTrackBodyPartUpperBody | kFBStoryTrackBodyPartLowerBody,
00116
00117 kFBStoryTrackBodyPartProps = 1 << 11,
00118 kFBStoryTrackBodyPartExtensions = 1 << 12
00119 };
00120
00122 enum FBStoryClipShowGhostMode {
00123 kFBStoryClipAlways,
00124 kFBStoryClipTimeCursor
00125 };
00126
00128 enum FBStoryClipSolveMode {
00129 kFBStoryClipRetargetSkeleton,
00130 kFBStoryClipAnimSkeleton,
00131 kFBStoryClipAnimFkIk,
00132 kFBStoryClipAnimSkeletonIk
00133 };
00134
00136 enum FBStoryClipCompMode {
00137 kFBStoryClipOff,
00138 kFBStoryClipAuto,
00139 kFBStoryClipUser
00140 };
00141
00142 FB_DEFINE_ENUM(FBSDK_DLL, StoryTrackType);
00143 FB_DEFINE_ENUM(FBSDK_DLL, StoryTrackRefMode);
00144 FB_DEFINE_ENUM(FBSDK_DLL, StoryClipShowGhostMode);
00145 FB_DEFINE_ENUM(FBSDK_DLL, StoryClipSolveMode);
00146 FB_DEFINE_ENUM(FBSDK_DLL, StoryClipCompMode);
00147
00148 FB_FORWARD( FBPropertyListStoryFolder );
00150 class FBSDK_DLL FBPropertyListStoryFolder : public FBPropertyListComponentBase
00151 {
00152 public:
00158 virtual int Add(HFBStoryFolder pItem);
00159
00165 virtual int Remove(HFBStoryFolder pItem);
00166
00170 virtual void RemoveAt(int pIndex);
00171
00176 virtual HFBStoryFolder operator[](int pIndex);
00177
00181 virtual int GetCount();
00182
00183 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00184 inline virtual FBComponent* GetAt(int pIndex) { return (FBComponent*)operator[](pIndex); }
00185 private:
00186 inline virtual int Add ( FBComponent* pItem ) { return Add((FBStoryFolder*)pItem); }
00187 #endif
00188 };
00189
00190 FB_FORWARD( FBPropertyListStoryTrack );
00192 class FBSDK_DLL FBPropertyListStoryTrack : public FBPropertyListComponentBase
00193 {
00194 public:
00200 virtual int Add(HFBStoryTrack pItem);
00201
00207 virtual int Remove(HFBStoryTrack pItem);
00208
00212 virtual void RemoveAt(int pIndex);
00213
00218 virtual HFBStoryTrack operator[](int pIndex);
00219
00223 virtual int GetCount();
00224 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00225 inline virtual FBComponent* GetAt(int pIndex) { return (FBComponent*)operator[](pIndex); }
00226 private:
00227 inline virtual int Add ( FBComponent* pItem ) { return Add((FBStoryTrack*)pItem); }
00228 #endif
00229 };
00230
00231 FB_FORWARD( FBPropertyListStorySubTrack );
00233 class FBSDK_DLL FBPropertyListStorySubTrack : public FBPropertyListComponentBase
00234 {
00235 public:
00241 virtual int Add(HFBStoryTrack pItem);
00242
00248 virtual int Remove(HFBStoryTrack pItem);
00249
00253 virtual void RemoveAt(int pIndex);
00254
00259 virtual HFBStoryTrack operator[](int pIndex);
00260
00264 virtual int GetCount();
00265 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00266 inline virtual FBComponent* GetAt(int pIndex) { return (FBComponent*)operator[](pIndex); }
00267 private:
00268 inline virtual int Add ( FBComponent* pItem ) { return Add((FBStoryTrack*)pItem); }
00269 #endif
00270 };
00271
00272 FB_FORWARD( FBPropertyListStoryClip );
00274 class FBSDK_DLL FBPropertyListStoryClip : public FBPropertyListComponentBase
00275 {
00276 public:
00281 virtual int Add(HFBStoryClip pItem);
00282
00287 virtual int Remove(HFBStoryClip pItem);
00288
00292 virtual void RemoveAt(int pIndex);
00293
00298 virtual HFBStoryClip operator[](int pIndex);
00299
00303 virtual int GetCount();
00304 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00305 inline virtual FBComponent* GetAt(int pIndex) { return (FBComponent*)operator[](pIndex); }
00306 private:
00307 inline virtual int Add ( FBComponent* pItem ) { return Add((FBStoryClip*)pItem); }
00308 #endif
00309 };
00310
00311 FB_FORWARD( FBPropertyListStoryDetails );
00313 class FBSDK_DLL FBPropertyListStoryDetails : public FBPropertyListComponentBase
00314 {
00315 public:
00320 virtual int Add(FBComponent* pItem);
00321
00326 virtual int Remove(FBComponent* pItem);
00327
00331 virtual void RemoveAt(int pIndex);
00332
00337 virtual FBComponent* operator[](int pIndex);
00338
00342 virtual int GetCount();
00343 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00344 inline virtual FBComponent* GetAt(int pIndex) { return (FBComponent*)operator[](pIndex); }
00345 #endif
00346 };
00347
00348 FB_FORWARD( FBPropertyListPivot );
00350 class FBSDK_DLL FBPropertyListPivot : public FBPropertyListComponentBase
00351 {
00352 public:
00357 virtual int Add(FBModel* pItem);
00358
00363 virtual int Remove(FBModel* pItem);
00364
00368 virtual void RemoveAt(int pIndex);
00369
00374 virtual FBModel* operator[](int pIndex);
00375
00379 virtual int GetCount();
00380 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00381 inline virtual FBComponent* GetAt(int pIndex) { return (FBComponent*)operator[](pIndex); }
00382 private:
00383 inline virtual int Add ( FBComponent* pItem ) { return Add((FBModel*)pItem); }
00384 #endif
00385 };
00386
00388
00390
00393 class FBSDK_DLL FBStory : public FBComponent
00394 {
00395
00396 __FBClassDeclare(FBStory, FBComponent);
00397
00400 FBStory();
00401
00402 public:
00403
00404 FBPropertyBool Mute;
00405 FBPropertyBool LockedShot;
00406 FBPropertyBool SummaryClip;
00407 FBPropertyBool RecordToDisk;
00408 FBPropertyBool NoneBlockingPostprocess;
00409 FBPropertyStoryFolder RootFolder;
00410 FBPropertyStoryFolder RootEditFolder;
00411
00415 static FBStory& TheOne();
00416
00417 };
00418
00420
00422
00425 class FBSDK_DLL FBStoryFolder : public FBComponent
00426 {
00427
00428 __FBClassDeclare(FBStoryFolder, FBComponent);
00429 public:
00430
00436 FBStoryFolder(HFBStoryFolder pParentFolder=NULL, HIObject pObject=NULL);
00437
00440 virtual void FBDelete();
00441
00445 void Load(bool pLoad);
00446
00447 FBPropertyString Label;
00448 FBPropertyBool Solo;
00449 FBPropertyBool Mute;
00450 FBPropertyString RecordClipPath;
00451 FBPropertyStoryFolder Parent;
00452 FBPropertyListStoryFolder Childs;
00453 FBPropertyListStoryTrack Tracks;
00454 };
00455
00457
00459
00462 class FBSDK_DLL FBStoryTrack : public FBConstraint
00463 {
00464
00465 __FBClassDeclare(FBStoryTrack, FBConstraint);
00466 public:
00467
00473 FBStoryTrack(FBStoryTrackType pTrackType, HFBStoryFolder pFolder=NULL, HIObject pObject=NULL);
00474
00480 FBStoryTrack(FBComponent* pSource, HFBStoryFolder pFolder=NULL, HIObject pObject=NULL);
00481
00484 virtual void FBDelete();
00485
00489 void ChangeDetailsBegin();
00490
00494 void ChangeDetailsEnd();
00495
00496
00505 FBStoryClip* CopyTakeIntoTrack(FBTimeSpan& pTimeSpan, FBTake* pTake, FBTime pOutputOffset = 0, bool pMakeUndoable = false);
00506
00507
00513 void EnableBodyPart(FBStoryTrackBodyPart pPart, bool pEnable);
00514
00518 bool IsBodyPartEnabled(FBStoryTrackBodyPart pPart);
00519
00523 void AddClip(FBComponent* pClip, FBTime pTime);
00524
00528 void Load(bool pLoad);
00529
00530
00531 FBPropertyStoryTrackType Type;
00532 FBPropertyString Label;
00533 FBPropertyBool Mute;
00534 FBPropertyBool Solo;
00535 FBPropertyString RecordClipPath;
00536 FBPropertyString ClipNameConvention;
00537 FBPropertyBool RecordTrack;
00538 FBPropertyStoryFolder ParentFolder;
00539 FBPropertyStoryTrack ParentTrack;
00540 FBPropertyListStorySubTrack SubTracks;
00541 FBPropertyListStoryClip Clips;
00542 FBPropertyListStoryDetails Details;
00543
00544
00545 FBPropertyAnimatableDouble Weight;
00546
00547
00548 FBPropertyBool Ghost;
00549 FBPropertyBool GhostModel;
00550 FBPropertyBool GhostTravelling;
00551 FBPropertyBool GhostPivot;
00552 FBPropertyBool AcceptKey;
00553 FBPropertyStoryTrackRefMode ReferenceMode;
00554 FBPropertyBool OffsetEnable;
00555 FBPropertyBool PassThrough;
00556
00557
00558 FBPropertyCharacter Character;
00559 FBPropertyInt CharacterIndex;
00560
00561
00562 FBPropertyBool ShowBackplate;
00563 FBPropertyBool ShowFrontplate;
00564
00565
00566 FBPropertyInt AudioOutIndex;
00567
00568
00569 FBPropertyVideo TrackVideo;
00570 private:
00571 void FBStoryTrackInitProperties();
00572 };
00573
00575
00577
00580 class FBSDK_DLL FBStoryClip : public FBComponent
00581 {
00582
00583 __FBClassDeclare(FBStoryClip, FBComponent);
00584 public:
00585
00592 FBStoryClip(FBComponent* pClipObject, HFBStoryTrack pTrack, FBTime pTime, HIObject pObject=NULL);
00593
00600 FBStoryClip(const char* pFilePath, HFBStoryTrack pTrack, FBTime pTime, HIObject pObject=NULL);
00601
00604 virtual void FBDelete();
00605
00608 HFBStoryClip Clone();
00609
00616 FBTime Move(FBTime pDelta, bool pForce=true);
00617
00624 FBTime MoveTo(FBTime pTime, bool pForce=true);
00625
00631 HFBStoryClip Razor(FBTime pTime);
00632
00633
00637 void Match();
00638
00644 bool ExportToFile(FBString pOutputFile);
00645
00653 void GetAffectedObjects( FBArrayTemplate<FBComponent*>* pAffectedObjects );
00654
00663 void GetAffectedAnimationNodes( FBArrayTemplate<FBAnimationNode*>* pAffectedAnimationNodes, FBComponent* pClipObject );
00664
00665
00666
00667 FBPropertyColor Color;
00668 FBPropertyTime Start;
00669 FBPropertyTime Stop;
00670 FBPropertyTime MarkIn;
00671 FBPropertyTime MarkOut;
00672 FBPropertyTimeSpan PreBlend;
00673 FBPropertyTimeSpan PostBlend;
00674 FBPropertyTime Offset;
00675 FBPropertyDouble Speed;
00676
00677
00678 FBPropertyCamera ShotCamera;
00679 FBPropertyVideo ShotBackplate;
00680 FBPropertyVideo ShotFrontplate;
00681 FBPropertyBool ShowBackplate;
00682 FBPropertyBool ShowFrontplate;
00683 FBPropertyTime ShotActionStart;
00684 FBPropertyTime ShotActionStop;
00685
00686
00687 FBPropertyAudioClip AudioClip;
00688
00689
00690 FBPropertyDouble Scale;
00691 FBPropertyVector3d Translation;
00692 FBPropertyVector3d Rotation;
00693 FBPropertyVector3d LoopTranslation;
00694 FBPropertyBool AutoLoop;
00695 FBPropertyBool Loop;
00696 FBPropertyBool Ghost;
00697 FBPropertyBool GhostModel;
00698 FBPropertyBool GhostTravelling;
00699 FBPropertyBool GhostPivot;
00700 FBPropertyStoryClipShowGhostMode ShowGhostClipMode;
00701 FBPropertyAnimationNode PreBlendData;
00702 FBPropertyAnimationNode PostBlendData;
00703 FBPropertyListPivot Pivots;
00704 FBPropertyBool Loaded;
00705
00706
00707 FBPropertyStoryClipSolveMode SolvingMode;
00708 private:
00709 void FBStoryClipInitProperties();
00710 };
00711
00712 #ifdef FBSDKUseNamespace
00713 }
00714 #endif
00715 #endif