#include "actor/SeActor3.h"
#include "jp/ggaf/dx/actor/supporter/VecDriver.h"
#include "jp/ggaf/dx/actor/supporter/VecDriverFaceAngAssistant.h"
#include "jp/ggaf/dx/actor/supporter/VecDriverMvAngAssistant.h"
#include "jp/ggaf/lib/util/CollisionChecker.h"
#include "MgrGod.h"
#include "jp/ggaf/lib/util/VirtualButton.h"
#include "jp/ggaf/dx/actor/supporter/SeTransmitterForActor.h"


using namespace GgafLib;
using namespace Mogera;

SeActor3::SeActor3(const char* prm_name) :
        GgafLib::DefaultMeshActor(prm_name, "Zako") { //Guruguru.x が参照される。
    //座標設定
    setMaterialColor(0.0, 1.0, 1.0);
//    CollisionChecker* pChecker = getCollisionChecker();
//    pChecker->createCollisionArea(1);
//    pChecker->setColliSphere(0, PX_C(20));
//    setHitAble(true);
    GgafDx::SeTransmitterForActor* se = getSeTransmitter();
    se->set(0, "WAVE_ENEMY_FIRE_LASER_001");
    se->set(1, "WAVE_ENEMY_FIRE_LASER_002");
}

void SeActor3::initialize() {
}

void SeActor3::processBehavior() {
    VirtualButton* pVb = P_GOD->getSpacetime()->pVb_;
    static int D = 20;
    if (GgafDx::Input::isPushedDownKey(DIK_1)) {
        getSeTransmitter()->play3D(0, true);
    }
    if (GgafDx::Input::isPushedDownKey(DIK_2)) {
        getSeTransmitter()->stop(0);
    }
    if (GgafDx::Input::isPushedDownKey(DIK_3)) {
        getSeTransmitter()->play3D(1);
    }
    if (GgafDx::Input::isPushedDownKey(DIK_Q)) {
        setPosition(0, 0, 0);
    }
    if (pVb->isPressed(VB_BUTTON1)) {
        //ボタン１（スペースキー）を押しながらの場合
        if (pVb->isPressed(VB_UP)) {
            _z += PX_C(D); //奥
        }
        if (pVb->isPressed(VB_DOWN)) {
            _z -= PX_C(D); //手前
        }
    } else {
        //ボタン１（スペースキー）を離している場合
        if (pVb->isPressed(VB_RIGHT)) {
            _x += PX_C(D); //右
        }
        if (pVb->isPressed(VB_LEFT)) {
            _x -= PX_C(D); //左
        }
        if (pVb->isPressed(VB_UP)) {
            _y += PX_C(D); //上
        }
        if (pVb->isPressed(VB_DOWN)) {
            _y -= PX_C(D); //下
        }
    }
    getVecDriver()->behave(); //力車を活動させる（Z軸回転する）
    getSeTransmitter()->behave(); //３D効果活動
}

void SeActor3::onHit(const GgafCore::Actor* prm_pOtherActor) {
    _TRACE_("SeActor3::onHit!!!! 相手＝"<<prm_pOtherActor->getName()<<"");
}

SeActor3::~SeActor3() {
}

