/* プレビュ用:初期化関数 */
    private void PreparePreview()
    {
        if (CriAtomPlugin.IsLibraryInitialized() == false)
        {
            CriWareInitializer.InitializeAtom(new CriAtomConfig());
        }
        if (CriAtomPlugin.IsLibraryInitialized() == false)
        {
            return;
        }

        previewPlayer = new CriAtomExPlayer();
        if (previewPlayer == null)
        {
            return;
        }

        if (atomComponent != null)
        {
            CriAtomEx.RegisterAcf(null, Path.Combine(CriWare.streamingAssetsPath, atomComponent.acfFile));
        }
        else
        {
            Debug.LogWarning("[CRIWARE] CriAtom component not found in this scene");
            return;
        }

        isPreviewReady = true;
    }
示例#2
0
        //----- method -----

        public void Initialize(SoundParam defaultSoundParam)
        {
            if (initialized)
            {
                return;
            }

            this.defaultSoundParam = defaultSoundParam;

            player = new CriAtomExPlayer();

            soundParams        = new Dictionary <SoundType, SoundParam>();
            managedSoundSheets = new Dictionary <string, SoundSheet>();
            soundElements      = new List <SoundElement>();

            // デフォルトのサウンド設定を適用.
            SetSoundParam();

            // サウンドイベントを受信.
            CriAtomExSequencer.SetEventCallback(SoundEventCallback, SoundEventSeparator.ToString());

            // サウンドの状態更新.
            Observable.EveryEndOfFrame().Subscribe(_ => UpdateElement());

            // 一定周期で未使用状態になったAcbの解放を行う.
            Observable.Interval(TimeSpan.FromSeconds(5f)).Subscribe(_ => ReleaseSoundSheet());

            initialized = true;
        }
        private void Initialize()
        {
            CriAtomEditor.InitializePluginForEditor();

            if (CriAtomPlugin.IsLibraryInitialized() == false)
            {
                return;
            }

            player = new CriAtomExPlayer();
            if (player == null)
            {
                return;
            }

            player.SetPanType(CriAtomEx.PanType.Pan3d);

            player.UpdateAll();

            isPlayerReady = true;

            CriDisposableObjectManager.Register(this, CriDisposableObjectManager.ModuleType.Atom);

            if (finalizeSuppressed)
            {
                GC.ReRegisterForFinalize(this);
            }
        }
示例#4
0
 protected virtual void InternalFinalize()
 {
     this.player.Dispose();
     this.player = null;
     this.source.Dispose();
     this.source = null;
     CriAtomPlugin.FinalizeLibrary();
 }
 private void dispose()
 {
     CriDisposableObjectManager.Unregister(this);
     if (player != null)
     {
         player.Dispose();
         player = null;
     }
     this.isPlayerReady = false;
 }
示例#6
0
 public PlayerSource(CriAtomEx3dListener listener)
 {
     this.player   = new CriAtomExPlayer();
     this.source3d = new CriAtomEx3dSource();
     this.source3d.SetPosition(0, 0, 0);
     this.source3d.Update();
     this.player.Set3dSource(this.source3d);
     this.player.Set3dListener(listener);
     this.player.UpdateAll();
 }
    /**
     * <summary>AtomExプレーヤのアタッチ</summary>
     * \par 説明:
     * 出力データ解析を行うAtomExプレーヤをアタッチします。<br/>
     * 複数のAtomExプレーヤをアタッチすることは出来ません。
     * アタッチ中に別のAtomExプレーヤをアタッチした場合、アタッチ中のAtomExプレーヤはデタッチされます。<br/>
     * <br/>
     * CriAtomSourceをアタッチする場合、CriAtomSource::AttachToOutputAnalyzerを使用してください。
     * \attention
     * アタッチは再生開始前に行う必要があります。再生開始後のアタッチは失敗します。<br/>
     * \sa CriAtomExPlayerOutputAnalyzer::DetachExPlayer, CriAtomSource::AttachToOutputAnalyzer
     */
    public void AttachExPlayer(CriAtomExPlayer player)
    {
        if (player == null || this.handle == IntPtr.Zero)
        {
            return;
        }

        /* アタッチ済みのプレーヤがあればデタッチ */
        this.DetachExPlayer();

        criAtomExPlayerOutputAnalyzer_AttachExPlayer(this.handle, player.nativeHandle);
        this.player = player;
    }
    private void OnDisable()
    {
#if CRI_UNITY_EDITOR_PREVIEW
        if (previewAcb != null)
        {
            previewAcb.Dispose();
            previewAcb = null;
        }
        if (previewPlayer != null)
        {
            previewPlayer.Dispose();
            previewPlayer = null;
        }
#endif
    }
示例#9
0
        public void Initialize(SoundParam defaultSoundParam)
        {
            if (initialized)
            {
                return;
            }

            this.defaultSoundParam = defaultSoundParam;

            player = new CriAtomExPlayer();

            soundParams        = new Dictionary <SoundType, SoundParam>();
            managedSoundSheets = new Dictionary <string, SoundSheet>();
            soundElements      = new List <SoundElement>();

            // デフォルトのサウンド設定を適用.
            SetSoundParam();

            // サウンドイベントを受信.

            CriAtomExSequencer.EventCallback soundEventCallback = (ref CriAtomExSequencer.CriAtomExSequenceEventInfo info) =>
            {
                if (onSoundEvent != null)
                {
                    onSoundEvent.OnNext(info);
                }
            };

            CriAtomExSequencer.OnCallback += soundEventCallback;

            // サウンドの状態更新.
            Observable.EveryEndOfFrame()
            .Subscribe(_ => UpdateElement())
            .AddTo(Disposable);;

            // 一定周期で未使用状態になったAcbの解放を行う.
            Observable.Interval(TimeSpan.FromSeconds(5f))
            .Subscribe(_ => ReleaseSoundSheet())
            .AddTo(Disposable);

            initialized = true;
        }
    /**
     * <summary>AtomExプレーヤのアタッチ</summary>
     * <returns>アタッチが成功したかどうか(成功:true、失敗:false)</returns>
     * \par 説明:
     * 出力データ解析を行うAtomExプレーヤをアタッチします。<br/>
     * 複数のAtomExプレーヤをアタッチすることは出来ません。
     * アタッチ中に別のAtomExプレーヤをアタッチした場合、アタッチ中のAtomExプレーヤはデタッチされます。<br/>
     * <br/>
     * CriAtomSourceをアタッチする場合、CriAtomSource::AttachToOutputAnalyzerを使用してください。
     * \attention
     * アタッチは再生開始前に行う必要があります。再生開始後のアタッチは失敗します。<br/>
     * <br/>
     * 本関数でアタッチしたAtomExプレーヤをデタッチする前に破棄した場合、
     * デタッチ時にアクセス違反が発生します。<br/>
     * 必ず先にデタッチを行ってからAtomExプレーヤを破棄してください。<br/>
     * \sa CriAtomExPlayerOutputAnalyzer::DetachExPlayer, CriAtomSource::AttachToOutputAnalyzer
     */
    public bool AttachExPlayer(CriAtomExPlayer player)
    {
        if (player == null || this.handle == IntPtr.Zero)
        {
            return(false);
        }

        /* アタッチ済みのプレーヤがあればデタッチ */
        this.DetachExPlayer();

        /* プレーヤの状態をチェック */
        CriAtomExPlayer.Status status = player.GetStatus();
        if (status != CriAtomExPlayer.Status.Stop)
        {
            return(false);
        }

        criAtomExPlayerOutputAnalyzer_AttachExPlayer(this.handle, player.nativeHandle);
        this.player = player;

        return(true);
    }
示例#11
0
    private void Setup()
    {
        CriAtom.instance = this;

        CriAtomPlugin.InitializeLibrary();

        if (!String.IsNullOrEmpty(this.acfFile)) {
            string acfPath = Path.Combine(CriWare.streamingAssetsPath, this.acfFile);
            CriAtomEx.RegisterAcf(null, acfPath);
        }

        if (!String.IsNullOrEmpty(dspBusSetting)) {
            AttachDspBusSetting(dspBusSetting);
        }

        foreach (var cueSheet in this.cueSheets) {
            cueSheet.acb = this.LoadAcbFile(cueSheet.acbFile, cueSheet.awbFile);
        }

        if (this.dontDestroyOnLoad) {
            GameObject.DontDestroyOnLoad(this.gameObject);
        }

        this.player = new CriAtomExPlayer();
    }
示例#12
0
 protected virtual void InternalInitialize()
 {
     CriAtomPlugin.InitializeLibrary();
     this.player = new CriAtomExPlayer();
     this.source = new CriAtomEx3dSource();
 }
示例#13
0
 /**
  * <summary>AtomExプレーヤの削除</summary>
  * <param name='player'>AtomExプレーヤのネイティブハンドル</param>
  * <remarks>
  * <para header='説明'>サウンドオブジェクトからAtomExプレーヤを削除します。<br/>
  * 削除したAtomExプレーヤはサウンドオブジェクトとの関連付けが切られ、 サウンドオブジェクト
  * による影響を受けなくなります。<br/></para>
  * <para header='注意'>本関数の呼び出しは、削除しようとしているAtomExプレーヤで音声を再生していない状態で行ってください。<br/>
  * 再生中のAtomExプレーヤが指定された場合、 削除時に再生停止が行われます。<br/></para>
  * </remarks>
  * <seealso cref='CriAtomExSoundObject::AddPlayer'/>
  * <seealso cref='CriAtomExSoundObject::DeleteAllPlayers'/>
  * <seealso cref='CriAtomExPlayer::nativeHandle'/>
  */
 public void DeletePlayer(CriAtomExPlayer player)
 {
     criAtomExSoundObject_DeletePlayer(this.handle, player.nativeHandle);
 }
示例#14
0
 override protected void InternalInitialize()
 {
     CriAtomPlugin.InitializeLibrary();
     player = new CriAtomExPlayer(_enableAudioSyncedTimer);
     source = new CriAtomEx3dSource();
 }
示例#15
0
 protected virtual void InternalFinalize()
 {
     this.player.Dispose();
     this.player = null;
     this.source.Dispose();
     this.source = null;
     CriAtomPlugin.FinalizeLibrary();
 }
示例#16
0
 protected virtual void InternalInitialize()
 {
     CriAtomPlugin.InitializeLibrary();
     this.player = new CriAtomExPlayer();
     this.source = new CriAtomEx3dSource();
 }
	/**
	 * <summary>AtomExプレーヤのアタッチ</summary>
	 * \par 説明:
	 * 出力データ解析を行うAtomExプレーヤをアタッチします。<br/>
	 * 複数のAtomExプレーヤをアタッチすることは出来ません。
	 * アタッチ中に別のAtomExプレーヤをアタッチした場合、アタッチ中のAtomExプレーヤはデタッチされます。<br/>
	 * <br/>
	 * CriAtomSourceをアタッチする場合、CriAtomSource::AttachToOutputAnalyzerを使用してください。
	 * \attention
	 * アタッチは再生開始前に行う必要があります。再生開始後のアタッチは失敗します。<br/>
	 * \sa CriAtomExPlayerOutputAnalyzer::DetachExPlayer, CriAtomSource::AttachToOutputAnalyzer
	 */
	public void AttachExPlayer(CriAtomExPlayer player)
	{
		if (player == null || this.handle == IntPtr.Zero) {
			return;
		}

		/* アタッチ済みのプレーヤがあればデタッチ */
		this.DetachExPlayer();

		criAtomExPlayerOutputAnalyzer_AttachExPlayer(this.handle, player.nativeHandle);
		this.player = player;
	}