/* 変数宣言 */ CriAtomEx3dListenerHn listener; CriAtomEx3dSourceHn source; CriAtomEx3dTransceiverHn transceiver; CriAtomEx3dRegionHn region_a, region_b; CriAtomExVector pos; /* 各オブジェクトの作成 */ listener = criAtomEx3dListener_Create(NULL, NULL, 0); source = criAtomEx3dSource_Create(NULL, NULL, 0); transceiver = criAtomEx3dTransceiver_Create(NULL, NULL, 0); region_a = criAtomEx3dRegion_Create(NULL, NULL, 0); region_b = criAtomEx3dRegion_Create(NULL, NULL, 0); /* EXプレーヤーに音源、リスナーを設定 */ player = criAtomExPlayer_Create(NULL, NULL, 0); criAtomExPlayer_Set3dListenerHn(player, listener); criAtomExPlayer_Set3dSourceHn(player, source); /* リージョンの設定 */ criAtomEx3dListener_Set3dRegionHn(source, region_a); criAtomEx3dSource_Set3dRegionHn(source, region_b); criAtomEx3dTransceiver_Set3dRegionHn(transceiver, region_b); /* パラメーターの設定 */ pos.x = 0.0f; pos.y = 0.0f; pos.z = 0.0f; criAtomEx3dSource_SetPosition(source, &pos); criAtomEx3dSource_Update(source); : criAtomEx3dListener_Update(listener); : criAtomEx3dTransceiver_Update(transceiver); /* 再生開始 */ id = criAtomExPlayer_Start(player); : pos.x += 10.0f; criAtomEx3dSource_SetPosition(source, &pos); criAtomEx3dSource_Update(source); : /* リスナーのリージョン変更 */ criAtomEx3dListener_Set3dRegionHn(listener, region_b); criAtomEx3dListener_Update(listener)
/* リスナーのリージョン切替 */ /* Switch region of listener */ if (0.0f < listener->transform.pos.z) { listener->region_index = 0; } else { listener->region_index = 1; } criAtomEx3dListener_Set3dRegionHn(listener->hn, s_app_obj->regions[listener->region_index]);