| 247 | } |
| 248 | |
| 249 | void ::VobTypes::NPC_SetModelVisual(VobTypes::NpcVobInformation& vob, const std::string& visual) |
| 250 | { |
| 251 | Handle::EntityHandle e = vob.entity; |
| 252 | |
| 253 | // Initialize animations |
| 254 | Components::AnimationComponent& anim = Components::Actions::initComponent<Components::AnimationComponent>(vob.world->getComponentAllocator(), e); |
| 255 | |
| 256 | // Strip extension |
| 257 | std::string libName = visual.substr(0, visual.find_last_of('.')); |
| 258 | |
| 259 | anim.getAnimHandler().setWorld(*vob.world); |
| 260 | anim.getAnimHandler().loadMeshLibFromVDF(libName, vob.world->getEngine()->getVDFSIndex()); |
| 261 | |
| 262 | // Meshlib changed, re-get all animation |
| 263 | vob.playerController->getNpcAnimationHandler().initAnimations(); |
| 264 | |
| 265 | // TODO: Move to other place (MDS) |
| 266 | // Load all default animations |
| 267 | for (int i = 0; i < Logic::ModelVisual::NUM_ANIMATIONS; i++) |
| 268 | { |
| 269 | const char* name = Logic::ModelVisual::getAnimationName(static_cast<Logic::ModelVisual::EModelAnimType>(i)); |
| 270 | |
| 271 | anim.getAnimHandler().addAnimation(name); |
| 272 | } |
| 273 | |
| 274 | for (int i = 0; i < 20; i++) |
| 275 | { |
| 276 | std::string ns = std::to_string(i + 1); |
| 277 | if (ns.size() == 1) |
| 278 | ns = "0" + ns; |
| 279 | |
| 280 | anim.getAnimHandler().addAnimation("T_DIALOGGESTURE_" + ns); |
| 281 | } |
| 282 | |
| 283 | anim.getAnimHandler().addAnimation("-S_RUNL"); |
| 284 | anim.getAnimHandler().addAnimation("-S_WALKL"); |
| 285 | anim.getAnimHandler().addAnimation("-S_FISTRUNL"); |
| 286 | anim.getAnimHandler().addAnimation("-S_FISTWALKL"); |
| 287 | |
| 288 | anim.getAnimHandler().addAnimation("-S_RUN"); |
| 289 | anim.getAnimHandler().addAnimation("-S_WALK"); |
| 290 | anim.getAnimHandler().addAnimation("-S_FISTRUN"); |
| 291 | anim.getAnimHandler().addAnimation("-S_FISTWALK"); |
| 292 | |
| 293 | anim.getAnimHandler().addAnimation("-T_JUMPB"); |
| 294 | anim.getAnimHandler().addAnimation("-T_RUNSTRAFEL"); |
| 295 | anim.getAnimHandler().addAnimation("-T_RUNSTRAFER"); |
| 296 | |
| 297 | // Fist |
| 298 | anim.getAnimHandler().addAnimation("-S_FISTATTACK"); |
| 299 | |
| 300 | // 1H |
| 301 | anim.getAnimHandler().addAnimation("-S_1HATTACK"); |
| 302 | |
| 303 | //anim.getAnimHandler().playAnimation("S_RUNL"); |
| 304 | } |
| 305 | |
| 306 | void ::VobTypes::NPC_SetHeadMesh(VobTypes::NpcVobInformation& vob, const std::string& visual, int headTextureIdx, |
nothing calls this directly
no test coverage detected