Пример #1
0
    private static void OnQos(IntPtr p,
                              long current_jitter, ulong current_running_time, ulong current_stream_time, ulong current_timestamp,
                              double proportion, ulong processed, ulong dropped)
    {
        GstUnityBridgeTexture self = ((GCHandle)p).Target as GstUnityBridgeTexture;

        if (self != null)
        {
            if (self.m_Events.m_OnQOS != null)
            {
                self.m_EventProcessor.QueueEvent(() =>
                {
                    QosData data = new QosData()
                    {
                        current_jitter       = current_jitter,
                        current_running_time = current_running_time,
                        current_stream_time  = current_stream_time,
                        current_timestamp    = current_timestamp,
                        proportion           = proportion,
                        processed            = processed,
                        dropped = dropped
                    };
                    self.m_Events.m_OnQOS.Invoke(data);
                });
            }
        }
    }
Пример #2
0
    private static void OnError(IntPtr p, string message)
    {
        GstUnityBridgeTexture self = ((GCHandle)p).Target as GstUnityBridgeTexture;

        if (self.m_Events.m_OnError != null)
        {
            self.m_EventProcessor.QueueEvent(() =>
            {
                self.m_Events.m_OnError.Invoke(message);
            });
        }
    }
Пример #3
0
    private static void OnFinish(IntPtr p)
    {
        GstUnityBridgeTexture self = ((GCHandle)p).Target as GstUnityBridgeTexture;

        self.m_EventProcessor.QueueEvent(() =>
        {
            if (self.m_Events.m_OnFinish != null)
            {
                self.m_Events.m_OnFinish.Invoke();
            }
            if (self.m_Loop)
            {
                self.Position = 0;
            }
        });
    }
Пример #4
0
    IEnumerator Start()
    {
        bmsLoader = GameObject.Find("BMSLoader").GetComponent<BMSLoader>();
        bmsLoader.loadBMS();
        bms = bmsLoader.bms;
        yield return new WaitForSeconds(0.1f);

        Time.timeScale = 0.0f;
        //set camera variables
        worldScreenHeight = Camera.main.orthographicSize * 2;
        worldScreenWidth = worldScreenHeight / Screen.height * Screen.width;

        if(bms == null)
        {
            Debug.Log("Parsing Failed");
        }

        currBpm = bms.info.init_bpm;

        //get components
        bgImage = bga.GetComponent<SpriteRenderer>();
        layerImage = bgaLayer.GetComponent<SpriteRenderer>();
        gstBga = bgaVideo.GetComponent<GstUnityBridgeTexture>();
        gstLayer = bgaLayerVideo.GetComponent<GstUnityBridgeTexture>();

        //set variables
        ulong maxSoundObjectId = 0;
        ulong maxBgaHeaderId = 0;

        foreach (BmsEvent be in bms.bmsEvents)
        {
            if (be.eventType == BMSParser.EventType.NoteEvent && ((NoteEvent)be).id > maxSoundObjectId)
                maxSoundObjectId = ((NoteEvent)be).id;
        }
        foreach (BGAHeader bh in bms.bga.bga_header)
        {
            if (bh.id > maxBgaHeaderId)
            {
                maxBgaHeaderId = bh.id;
            }
        }

        bgaSprites = new Sprite[maxBgaHeaderId+10];
        layerSprites = new Sprite[maxBgaHeaderId+10];
        eventLength = bms.bmsEvents.Count;

        pulseConstant = bms.info.init_bpm * bms.info.resolution / (60 * 4);
        lastPulse = bms.bmsEvents[bms.bmsEvents.Count - 1].y;
        resolution = bms.info.resolution;

        judge = GameObject.Find("Judge");
        judgeImage = GameObject.Find("JudgeImage").GetComponent<UnityEngine.UI.Image>();
        titleText = GameObject.Find("TitleText").GetComponent<Text>();
        subtitleText = GameObject.Find("SubtitleText").GetComponent<Text>();
        artistText = GameObject.Find("ArtistText").GetComponent<Text>();
        bpmText = GameObject.Find("BpmText").GetComponent<Text>();
        bgaText = GameObject.Find("BgaText").GetComponent<Text>();
        layerText = GameObject.Find("LayerText").GetComponent<Text>();
        pulseText = GameObject.Find("PulseText").GetComponent<Text>();
        genreText = GameObject.Find("GenreText").GetComponent<Text>();
        timeText = GameObject.Find("TimeText").GetComponent<Text>();
        measureText = GameObject.Find("MeasureText").GetComponent<Text>();
        totalText = GameObject.Find("TotalText").GetComponent<Text>();
        resolutionText = GameObject.Find("ResolutionText").GetComponent<Text>();
        soundText = GameObject.Find("SoundCountText").GetComponent<Text>();
        comboText = GameObject.Find("ComboText").GetComponent<Text>();
        loadingStatusText = GameObject.Find("LoadingStatusText").GetComponent<Text>();

        soundObjects = new GameObject[1296];

        //set Text
        titleText.text = "Title: " + bms.info.title;
        subtitleText.text = "Subtitle: " + bms.info.subtitle;
        artistText.text = "Artist: " + bms.info.artist;
        bpmText.text = "Bpm: " + bms.info.init_bpm;
        genreText.text = "Genre: " + bms.info.genre;
        totalText.text = "Total: " + bms.info.total;
        measureText.text = "Measure: 0/" + bms.info.maxMeasure;
        resolutionText.text = "Resolution: " + bms.info.resolution;

        loadingStatusText.text = "Loading BGA...";
        yield return null;
        LoadBga();

        loadingStatusText.text = "Loading Sound...";
        yield return null;
        LoadSound(bms.info.soundHeaders);

        loadingStatusText.text = "Drawing Notes...";
        yield return null;
        NotePlacement();

        Component[] sources = FindObjectsOfType(typeof(AudioSource)) as Component[];
        audioSources = new AudioSource[sources.Length];
        sources.CopyTo(audioSources, 0);

        //Check how many sounds are playing..
        InvokeRepeating("CurrentlyPlaying", 1f, 0.5f);

        DrawBMSGraph dbg = graphPanel.GetComponent<DrawBMSGraph>();
        dbg.DrawGraph(bms.bmsEvents);
        loadingStatusText.text = "Done";
        yield return null;

        loadingScreen.SetActive(false);
        isLoaded = true;
        timeOffset = Time.time;
        dbg.timeOffset = timeOffset;

        Time.timeScale = 1.0f;
    }