Example character level animations.

This commit is contained in:
2023-01-18 23:53:39 -08:00
parent 821074dfc4
commit 985218b9bc
29 changed files with 388 additions and 44 deletions

View File

@ -9,34 +9,23 @@
#include "prefabs/characters/DeathPrefab.hpp"
#include "scene/components/audio/AudioListener.hpp"
#include "scene/components/audio/AudioSource.hpp"
#include "visualnovel/events/characters/VisualNovelFadeCharacterEvent.hpp"
#include "visualnovel/events/timing/VisualNovelBatchEvent.hpp"
namespace Dawn {
class Scene_1 : public PixelVNScene {
protected:
DeathPrefab *death;
AudioSource *source;
void onFinished() {
std::cout << "Finished" << std::endl;
source->rewind();
}
DeathPrefab *death2;
void vnStage() override {
PixelVNScene::vnStage();
this->death = DeathPrefab::create(this);
// this->death->vnCharacter.setOpacity(0);
this->death->vnCharacter->setOpacity(0);
auto sourceItem = this->createSceneItem();
source = sourceItem->addComponent<AudioSource>();
source->transform->setLocalPosition(glm::vec3(1, 0, 0));
source->eventFinished.addListener(this, &Scene_1::onFinished);
auto audio = this->game->assetManager.get<AudioAsset>("audio_test");
source->setAudioData(audio);
source->loop = true;
source->state = AUDIO_SOURCE_STATE_PLAYING;
this->death2 = DeathPrefab::create(this);
this->death2->transform.setLocalPosition(glm::vec3(100, 0, 0));
}
void onSceneEnded() {
@ -51,12 +40,29 @@ namespace Dawn {
IVisualNovelEvent * getVNEvent() override {
auto start = new VisualNovelPauseEvent(vnManager, 1.0f);
start
// ->then(new VisualNovelTextboxEvent(vnManager, nullptr, "scene.1.1"))
// ->then(new VisualNovelCallbackEvent<Scene_1>(vnManager, this, &Scene_1::onSceneEnded))
->then(new VisualNovelBatchEvent(
vnManager,
std::vector<IVisualNovelEvent*>{
new VisualNovelFadeCharacterEvent(
vnManager,
this->death->vnCharacter,
true,
&easeLinear,
2.0f
),
new VisualNovelFadeCharacterEvent(
vnManager,
this->death2->vnCharacter,
false,
&easeLinear,
2.0f
)
}
))
->then(new VisualNovelTextboxEvent(vnManager, nullptr, "scene.1.1"))
->then(new VisualNovelCallbackEvent<Scene_1>(vnManager, this, &Scene_1::onSceneEnded))
;
return start;
}