void dragon::update() { aware(); if(_isAware) attack(); for (int i = 0; i < 3; ++i) { _bubbles[i].update(); } collision(); deadMotion(); setImage(); }
void Enemy::update(btDiscreteDynamicsWorld* dynamicsWorld, vec3* playerPosition, const string playerState, bool &isPlayerDead) { rigidBody->activate(true); if (isDead == true) { if (death_anim_frames_count == 0) { rigidBody->activate(false); model->setAnimation(death); } death_anim_frames_count++; } else if (state == State::WALKING) { walking(dynamicsWorld, playerPosition, playerState); } else if (state == State::AGGRESSIVE) { aggressive(dynamicsWorld, playerPosition, isPlayerDead); } else if (state == State::AWARE) { aware(dynamicsWorld, playerPosition, playerState); } angle = -(atan2(direction.z, direction.x) * 180 / 3.14f); /*Wyciagniecie pozycji rigidbody z macierzy*/ btScalar openGlMatrix[16]; rigidBody->getWorldTransform().getOpenGLMatrix(openGlMatrix); position.x = openGlMatrix[12]; position.y = openGlMatrix[13]; position.z = openGlMatrix[14]; float poprawka_wysokosci = -1.4f; model->updatePositon(position.x, position.y + poprawka_wysokosci, position.z); model->updateRotation(angle); rigidBody->setWorldTransform(btTransform(btQuaternion(btScalar(degreesToRadians(angle)), btScalar(0), btScalar(0)), btVector3(position.x, position.y, position.z))); }