Updated lots of things
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include "EventTriggerModule.h"
|
||||
#include "CharacterModule.h"
|
||||
#include "CharacterAnimationModule.h"
|
||||
#include "world-build.h"
|
||||
namespace ECS
|
||||
{
|
||||
CharacterAnimationModule::CharacterAnimationModule(flecs::world &ecs)
|
||||
@@ -29,7 +30,9 @@ CharacterAnimationModule::CharacterAnimationModule(flecs::world &ecs)
|
||||
"swimming-edge-climb",
|
||||
"character-talk",
|
||||
"pass-character",
|
||||
"idle-act"
|
||||
"idle-act",
|
||||
"sitting-chair",
|
||||
"sitting-ground"
|
||||
};
|
||||
int state_count = sizeof(animNames) /
|
||||
sizeof(animNames[0]);
|
||||
@@ -107,6 +110,12 @@ CharacterAnimationModule::CharacterAnimationModule(flecs::world &ecs)
|
||||
->state("character-talk")
|
||||
->animation("character-talk")
|
||||
->end()
|
||||
->state("sitting")
|
||||
->animation("sitting-chair")
|
||||
->end()
|
||||
->state("sitting-ground")
|
||||
->animation("sitting-ground")
|
||||
->end()
|
||||
->transition_end("swimming-edge-climb", "idle")
|
||||
->transition_end("hanging-climb", "idle")
|
||||
->transition_end("pass-character", "idle")
|
||||
@@ -646,5 +655,47 @@ CharacterAnimationModule::CharacterAnimationModule(flecs::world &ecs)
|
||||
result.m_collisionObject)));
|
||||
}
|
||||
});
|
||||
struct AnimationSetCommand : public GameWorld::Command {
|
||||
int operator()(const std::vector<GameWorld::Parameter *> &args)
|
||||
override
|
||||
{
|
||||
GameWorld::ValueParameter<flecs::entity> *param_e =
|
||||
static_cast<GameWorld::ValueParameter<
|
||||
flecs::entity> *>(args[0]);
|
||||
OgreAssert(param_e->get().is_valid(), "bad entity");
|
||||
GameWorld::ValueParameter<std::string> *param_node =
|
||||
static_cast<GameWorld::ValueParameter<
|
||||
std::string> *>(args[1]);
|
||||
GameWorld::ValueParameter<std::string> *param_state =
|
||||
static_cast<GameWorld::ValueParameter<
|
||||
std::string> *>(args[2]);
|
||||
if (param_e->get().has<AnimationControl>() &&
|
||||
param_e->get().get<AnimationControl>().configured ==
|
||||
true) {
|
||||
const AnimationControl &control =
|
||||
param_e->get().get<AnimationControl>();
|
||||
AnimationNodeStateMachine *sm =
|
||||
control.mAnimationSystem
|
||||
->get<AnimationNodeStateMachine>(
|
||||
param_node->get());
|
||||
bool reset = false;
|
||||
if (args.size() == 4) {
|
||||
GameWorld::ValueParameter<bool>
|
||||
*param_reset = static_cast<
|
||||
GameWorld::ValueParameter<
|
||||
bool> *>(
|
||||
args[3]);
|
||||
reset = param_reset->get();
|
||||
}
|
||||
sm->setAnimation(param_state->get(), reset);
|
||||
std::cout << "animation switch: "
|
||||
<< param_node->get() << " "
|
||||
<< param_state->get() << std::endl;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
ECS::get_mut<GameWorld>().add_command<AnimationSetCommand>(
|
||||
"set_animation_state");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user