/**
   * Apply damage and return true of death.
   *
   * @param damage
   * @return
   */
  public boolean applyDamage(double damage) {
    health -= damage;

    if (health > 0) {
      APAMultiplayerLayeredCharacterScene scene = getCharacterScene();

      // Build up "one shot" particle.
      SKEmitterNode emitter = getDamageEmitter();
      if (emitter != null) {
        emitter = (SKEmitterNode) emitter.copy();
        scene.addNode(emitter, APAWorldLayer.AboveCharacter);

        emitter.setPosition(getPosition());
        APAUtils.runOneShotEmitter(emitter, 0.15);
      }

      // Show the damage.
      SKAction damageAction = getDamageAction();
      if (damageAction != null) {
        runAction(damageAction);
      }
      return false;
    }

    performDeath();

    return true;
  }
 public void addToScene(APAMultiplayerLayeredCharacterScene scene) {
   scene.addNode(this, APAWorldLayer.Character);
   scene.addNode(shadowBlob, APAWorldLayer.BelowCharacter);
 }