00001
00032 #ifndef LL_LLFLOATERANIMPREVIEW_H
00033 #define LL_LLFLOATERANIMPREVIEW_H
00034
00035 #include "llfloaternamedesc.h"
00036 #include "lldynamictexture.h"
00037 #include "llcharacter.h"
00038 #include "llquaternion.h"
00039
00040 class LLVOAvatar;
00041 class LLViewerJointMesh;
00042
00043 class LLPreviewAnimation : public LLDynamicTexture
00044 {
00045 public:
00046 LLPreviewAnimation(S32 width, S32 height);
00047 virtual ~LLPreviewAnimation();
00048
00049 BOOL render();
00050 void requestUpdate();
00051 void rotate(F32 yaw_radians, F32 pitch_radians);
00052 void zoom(F32 zoom_delta);
00053 void setZoom(F32 zoom_amt);
00054 void pan(F32 right, F32 up);
00055 virtual BOOL needsUpdate() { return mNeedsUpdate; }
00056
00057 LLVOAvatar* getDummyAvatar() { return mDummyAvatar; }
00058
00059 protected:
00060 BOOL mNeedsUpdate;
00061 F32 mCameraDistance;
00062 F32 mCameraYaw;
00063 F32 mCameraPitch;
00064 F32 mCameraZoom;
00065 LLVector3 mCameraOffset;
00066 LLVector3 mCameraRelPos;
00067 LLPointer<LLVOAvatar> mDummyAvatar;
00068 };
00069
00070 class LLFloaterAnimPreview : public LLFloaterNameDesc
00071 {
00072 public:
00073 LLFloaterAnimPreview(const char* filename);
00074 virtual ~LLFloaterAnimPreview();
00075
00076 BOOL postBuild();
00077
00078 BOOL handleMouseDown(S32 x, S32 y, MASK mask);
00079 BOOL handleMouseUp(S32 x, S32 y, MASK mask);
00080 BOOL handleHover(S32 x, S32 y, MASK mask);
00081 BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
00082 void onMouseCaptureLost();
00083
00084 void refresh();
00085
00086 static void onBtnPlay(void*);
00087 static void onBtnStop(void*);
00088 static void setUploadAmount(S32 amount) { sUploadAmount = amount; }
00089 static void onSliderMove(LLUICtrl*, void*);
00090 static void onCommitBaseAnim(LLUICtrl*, void*);
00091 static void onCommitLoop(LLUICtrl*, void*);
00092 static void onCommitLoopIn(LLUICtrl*, void*);
00093 static void onCommitLoopOut(LLUICtrl*, void*);
00094 static BOOL validateLoopIn(LLUICtrl*, void*);
00095 static BOOL validateLoopOut(LLUICtrl*, void*);
00096 static void onCommitName(LLUICtrl*, void*);
00097 static void onCommitHandPose(LLUICtrl*, void*);
00098 static void onCommitEmote(LLUICtrl*, void*);
00099 static void onCommitPriority(LLUICtrl*, void*);
00100 static void onCommitEaseIn(LLUICtrl*, void*);
00101 static void onCommitEaseOut(LLUICtrl*, void*);
00102 static BOOL validateEaseIn(LLUICtrl*, void*);
00103 static BOOL validateEaseOut(LLUICtrl*, void*);
00104 static void onBtnOK(void*);
00105 static void onSaveComplete(const LLUUID& asset_uuid,
00106 LLAssetType::EType type,
00107 void* user_data,
00108 S32 status, LLExtStat ext_status);
00109 protected:
00110 void draw();
00111 void resetMotion();
00112
00113 LLPreviewAnimation* mAnimPreview;
00114 S32 mLastMouseX;
00115 S32 mLastMouseY;
00116 LLButton* mPlayButton;
00117 LLButton* mStopButton;
00118 F32 mLastSliderValue;
00119 LLRect mPreviewRect;
00120 LLRectf mPreviewImageRect;
00121 LLAssetID mMotionID;
00122 LLTransactionID mTransactionID;
00123 BOOL mEnabled;
00124 LLAnimPauseRequest mPauseRequest;
00125
00126 std::map<LLString, LLUUID> mIDList;
00127
00128 static S32 sUploadAmount;
00129 };
00130
00131 #endif // LL_LLFLOATERANIMPREVIEW_H