mirror of
https://github.com/AxioDL/PrimeWorldEditor.git
synced 2025-08-11 14:39:11 +00:00
83 lines
2.0 KiB
C++
83 lines
2.0 KiB
C++
#ifndef CCHARACTEREDITOR_H
|
|
#define CCHARACTEREDITOR_H
|
|
|
|
#include "CCharacterEditorViewport.h"
|
|
#include "CSkeletonHierarchyModel.h"
|
|
#include <Core/Scene/CScene.h>
|
|
#include <Core/Scene/CCharacterNode.h>
|
|
|
|
#include <QComboBox>
|
|
#include <QMainWindow>
|
|
#include <QTimer>
|
|
|
|
namespace Ui {
|
|
class CCharacterEditor;
|
|
}
|
|
|
|
class CCharacterEditor : public QMainWindow
|
|
{
|
|
Q_OBJECT
|
|
|
|
Ui::CCharacterEditor *ui;
|
|
CScene *mpScene;
|
|
CCharacterNode *mpCharNode;
|
|
CBone *mpSelectedBone;
|
|
|
|
CSkeletonHierarchyModel mSkeletonModel;
|
|
QComboBox *mpCharComboBox;
|
|
QComboBox *mpAnimComboBox;
|
|
QTimer mRefreshTimer;
|
|
|
|
TResPtr<CAnimSet> mpSet;
|
|
u32 mCurrentChar;
|
|
u32 mCurrentAnim;
|
|
bool mBindPose;
|
|
|
|
// Playback Controls
|
|
double mLastAnimUpdate;
|
|
float mAnimTime;
|
|
bool mPlayAnim;
|
|
bool mLoopAnim;
|
|
float mPlaybackSpeed;
|
|
|
|
// Constants
|
|
static const CVector3f skDefaultOrbitTarget;
|
|
static const float skDefaultOrbitDistance;
|
|
|
|
public:
|
|
explicit CCharacterEditor(QWidget *parent = 0);
|
|
~CCharacterEditor();
|
|
void UpdateAnimTime();
|
|
void UpdateCameraOrbit();
|
|
CSkeleton* CurrentSkeleton() const;
|
|
CAnimation* CurrentAnimation() const;
|
|
void SetActiveAnimSet(CAnimSet *pSet);
|
|
void SetSelectedBone(CBone *pBone);
|
|
|
|
public slots:
|
|
void Open();
|
|
void ToggleGrid(bool Enable);
|
|
void ToggleMeshVisible(bool Visible);
|
|
void ToggleSkeletonVisible(bool Visible);
|
|
void ToggleBindPose(bool Enable);
|
|
void ToggleOrbit(bool Enable);
|
|
void RefreshViewport();
|
|
void OnViewportHoverBoneChanged(u32 BoneID);
|
|
void OnViewportClick();
|
|
void OnSkeletonTreeSelectionChanged(const QModelIndex& rkIndex);
|
|
void SetActiveCharacterIndex(int CharIndex);
|
|
void SetActiveAnimation(int AnimIndex);
|
|
void PrevAnim();
|
|
void NextAnim();
|
|
|
|
void SetAnimTime(int Time);
|
|
void SetAnimTime(float Time);
|
|
void TogglePlay();
|
|
void ToggleLoop(bool Loop);
|
|
void Rewind();
|
|
void FastForward();
|
|
void AnimSpeedSpinBoxChanged(double NewVal);
|
|
};
|
|
|
|
#endif // CCHARACTEREDITORWINDOW_H
|