vengi/src/tests/testanimation/TestAnimation.h

60 lines
1.6 KiB
C
Raw Permalink Normal View History

/**
* @file
*/
#pragma once
#include "animation/AnimationSystem.h"
#include "testcore/TestApp.h"
#include "animation/AnimationCache.h"
#include "animation/AnimationRenderer.h"
#include "attrib/ShadowAttributes.h"
#include "stock/StockDataProvider.h"
#include "stock/Stock.h"
#include "core/ArrayLength.h"
#include <vector>
2020-01-29 11:27:43 -08:00
#include "core/String.h"
2020-08-30 13:16:13 -07:00
#include "io/File.h"
/**
* @brief Renders a character animation
*/
class TestAnimation: public TestApp {
private:
using Super = TestApp;
int _entityType = 0;
animation::AnimationCachePtr _animationCache;
animation::AnimationRenderer _renderer;
animation::AnimationSystem _animationSystem;
stock::StockDataProviderPtr _stockDataProvider;
stock::Stock _stock;
attrib::ShadowAttributes _attrib;
std::vector<core::String> _animations;
std::vector<core::String> _items;
int _itemIdx = 0;
int _animationIdx = 0;
io::FilePtr _luaFile;
int _currentAnimationEntityIndex = 0;
2020-08-23 12:16:40 -07:00
double _timeScale = 1.0;
bool loadAnimationEntity();
void doRender() override;
void onRenderUI() override;
bool addItem(stock::ItemId id);
const std::vector<core::String>& animationEntityTypes() const;
animation::AnimationEntity* animationEntity();
public:
TestAnimation(const metric::MetricPtr& metric, const stock::StockDataProviderPtr& stockDataProvider,
const io::FilesystemPtr& filesystem,
const core::EventBusPtr& eventBus, const core::TimeProviderPtr& timeProvider,
const animation::AnimationCachePtr& animationCache);
2020-08-30 13:46:21 -07:00
app::AppState onConstruct() override;
app::AppState onInit() override;
app::AppState onCleanup() override;
};