player {
// components(pure data)
input;
movement;
position;
health;
// system
humanAnimatorController {input, movement}
humanMovementController {input, movement}
humanAttackController {input}
humanUserInput {input}
}
zombie {
// components(pure data)
input;
movement;
position;
health;
// system
zombieAnimatorController {input, movement}
zombieMovementController {input, movement}
zombieAttackController {input}
zombieAIInput {input}
}
input {
Vector3 move;
bool action_bite,
bool action_eat,
bool action_crawl,
...
}
// Or this way
input {
map<string, object> input_data;
}
zombie {
// components(pure data)
input;
zombieInput; // new component for zombie, contain special inputs like bite, eat, crawl...
movement;
position;
health;
// system
zombieAnimatorController {input, zombieInput, movement}
zombieMovementController {input, zombieInput, movement}
zombieAttackController {input, zombieInput}
zombieAIInput {input, zombieInput}
}