Example #1
0
    // Update is called once per frame
    void Update()
    {
        if (!musicPlayer.isPlaying)
        {
            return;
        }

        int sampleValue = Mathf.ClosestPowerOfTwo((int)Mathf.Pow(SampleCount, 2f));

        if (sampleValue != lastSampleCount)
        {
            ShutdownVisuals();
            lastSampleCount = sampleValue;
            lastSampleData  = new float[lastSampleCount];
            SetUpVisuals(sampleValue * musicClip.channels, sampleValue);
        }

#if DOTS
        // if(!SampleData.IsCreated)
        // {
        //     Debug.Log("SampleData is Null");
        //     return;
        // }

        int arrayLength = SampleData.Value.sampleArray.Length;

        if (arrayLength != lastSampleCount * musicClip.channels)
        {
            //TODO: Resize the Blob array
            arrayLength = lastSampleCount * musicClip.channels;

            //Dispose of the old blob array
            SampleData.Dispose();

            using (BlobBuilder blobBuilder = new BlobBuilder(Allocator.Temp))
            {
                ref MusicDataBlobAsset musicDataBlobAsset = ref blobBuilder.ConstructRoot <MusicDataBlobAsset>();

                BlobBuilderArray <MusicSample> musicDataArray = blobBuilder.Allocate(ref musicDataBlobAsset.sampleArray, arrayLength);

                //Setup array data
                for (int i = 0; i < arrayLength; i++)
                {
                    musicDataArray[i] = new MusicSample {
                        Value = 0
                    };
                }

                SampleData = blobBuilder.CreateBlobAssetReference <MusicDataBlobAsset>(Allocator.Persistent);

                for (int i = 0; i < entityVisualizers.Length; i++)
                {
                    var viz = entityManager.GetComponentData <VisualizerData>(entityVisualizers[i]);
                    viz.MusicData = SampleData;
                    entityManager.SetComponentData <VisualizerData>(entityVisualizers[i], viz);
                }
            }
        }
    protected override void OnUpdate()
    {
        Debug.Log("Music Data BLob constructor called");
        BlobAssetReference <MusicDataBlobAsset> musicDataBlobAssetReference;

        using (BlobBuilder blobBuilder = new BlobBuilder(Allocator.Temp))
        {
            ref MusicDataBlobAsset musicDataBlobAsset = ref blobBuilder.ConstructRoot <MusicDataBlobAsset>();

            int sampleSize = 1024;
            BlobBuilderArray <MusicSample> musicDataArray = blobBuilder.Allocate(ref musicDataBlobAsset.sampleArray, sampleSize);

            //Set array data here
            for (int i = 0; i < sampleSize; i++)
            {
                musicDataArray[i] = new MusicSample {
                    Value = 0
                };
            }

            musicDataBlobAssetReference = blobBuilder.CreateBlobAssetReference <MusicDataBlobAsset>(Allocator.Persistent);
        }