Esempio n. 1
0
    void updatePlayer(string[] player_info)
    {
        string key = player_info[0];

        if (PlayerDictionary.ContainsKey(key))
        {
            Debug.Log("player w/ id " + key + " exists");
            PlayerDictionary[key].Missing = false;
        }
        else
        {
            if (numClones < maxNumClones)
            {
                PlayerDictionary.Add(key, new MInC_Player(numClones));
                char[] playerID_char = key.ToCharArray();
                float  angle_rad     = 2.0f * Mathf.PI * numClones / maxNumClones;
                                #if !UNITY_EDITOR
                PluginFunc_AddPlayer(playerID_char, playerID_char.Length, 0);
                PluginFunc_SetPlayerAngle(playerID_char, playerID_char.Length, angle_rad / (2.0f * Mathf.PI));
                                #endif
                AddObject(angle_rad);
                numClones++;
            }
        }

        MInC_Player player = PlayerDictionary[key];
        player.SeqPos_Next    = Int32.Parse(player_info[1]);
        player.SeqSpeed_Next  = Int32.Parse(player_info[2]);
        player.SeqOctave_Next = Int32.Parse(player_info[3]);
        player.SeqMute_Next   = Int32.Parse(player_info[4]);
        player.Like           = Int32.Parse(player_info[5]);
    }
Esempio n. 2
0
    public void AdvanceSelf()
    {
        MInC_Player self = PlayerDictionary [playerID];

                #if !UNITY_EDITOR
        if (self.SeqPos_Cur > (numSeqs - 1))
        {
            return;
        }
                #endif
        self.SeqPos_Cur = ++self.SeqPos_Next;

        // send updated sequence number to server
        SendPlayerParamValue("pos", playerID, self.SeqPos_Cur);

        // send updated sequence number to sequencer
        char[] playerID_char = playerID.ToCharArray();
                #if !UNITY_EDITOR
        PluginFunc_SetSequence(playerID_char, playerID_char.Length, self.SeqPos_Cur);
                #endif
        UpdateSelfHeight();

#if true
        // compute ratio of vertical height to distance (magnitude)
        foreach (KeyValuePair <string, MInC_Player> entry in PlayerDictionary)
        {
            if (PlayerDictionary [entry.Key].clonePos >= 0)             // not self
            {
                SetPlayerAudioHeight(entry.Key.ToCharArray(), PlayerDictionary [entry.Key].SeqPos_Cur);
            }
        }
#endif
    }
Esempio n. 3
0
 void updatePlayers_Begin()
 {
     foreach (KeyValuePair <string, MInC_Player> entry in PlayerDictionary)
     {
         MInC_Player player = PlayerDictionary[entry.Key];
         player.Missing = true;
     }
     PlayerDictionary[playerID].Missing = false;
 }
Esempio n. 4
0
    void UpdateSelfHeight()
    {
        MInC_Player self = PlayerDictionary [playerID];

        // raise height
        GameObject cm = GameObject.Find("/CardboardMain");

        if (cm != null)
        {
            Vector3 v = cm.GetComponent <Transform>().position;
            v.y = SeqPosToHeight(self.SeqPos_Cur);
            cm.GetComponent <Transform>().position = v;
        }
    }
Esempio n. 5
0
    void updatePlayers_End()
    {
        foreach (KeyValuePair <string, MInC_Player> entry in PlayerDictionary)
        {
            MInC_Player player        = PlayerDictionary[entry.Key];
            char[]      playerID_char = entry.Key.ToCharArray();

            if (player.Missing)
            {
                PlayerDictionary.Remove(entry.Key);
                                #if !UNITY_EDITOR
                PluginFunc_RemovePlayer(playerID_char, playerID_char.Length);
                                #endif
                Destroy(clones[player.clonePos]);
                clones[player.clonePos] = null;
            }
            else if (player.clonePos >= 0)             // not self
            {
                GameObject go = clones[player.clonePos];

                /* seq position */
                if (player.SeqPos_Cur != player.SeqPos_Next)
                {
                    player.SeqPos_Cur = player.SeqPos_Next;
                                        #if !UNITY_EDITOR
                    PluginFunc_SetSequence(playerID_char, playerID_char.Length, player.SeqPos_Cur);
                                        #endif

                    // raise height of player
                    Vector3 v3 = go.GetComponent <Transform>().position;
                    v3.y = SeqPosToHeight(player.SeqPos_Cur);
                    go.GetComponent <Transform>().position = v3;

#if true
                    // set player amplitude based on ratio of height difference to distance (magnitude)
                    SetPlayerAudioHeight(playerID_char, player.SeqPos_Cur);
#endif

                    bool playing = player.SeqPos_Cur > 0;
//					go.GetComponent<Renderer>().enabled = playing;
                                        #if !SCENE_SPHERES_ONLY
                    go.GetComponentInChildren <ParticleSystem> ().GetComponent <Renderer> ().enabled = playing;
                                        #endif
                }

                /* seq speed */
                if (player.SeqSpeed_Cur != player.SeqSpeed_Next)
                {
                    player.SeqSpeed_Cur = player.SeqSpeed_Next;
                                        #if !UNITY_EDITOR
                    PluginFunc_SetSpeed(playerID_char, playerID_char.Length, player.SeqSpeed_Cur);
                                        #endif
                }

                /* seq octave */
                if (player.SeqOctave_Cur != player.SeqOctave_Next)
                {
                    player.SeqOctave_Cur = player.SeqOctave_Next;
                                        #if !UNITY_EDITOR
                    PluginFunc_SetOctave(playerID_char, playerID_char.Length, player.SeqOctave_Cur);
                                        #endif
                }

                /* seq mute */
                if (player.SeqMute_Cur != player.SeqMute_Next)
                {
                    player.SeqMute_Cur = player.SeqMute_Next;
                                        #if !UNITY_EDITOR
                    PluginFunc_SetMute(playerID_char, playerID_char.Length, player.SeqMute_Cur);
                                        #endif
                }

                                #if SCENE_SPHERES_ONLY
                Color c = Color.black;
                float v = 0.0f;
                                #if !UNITY_EDITOR
                float amp = PluginFunc_GetPlayerPeakAmp(playerID_char, playerID_char.Length);
                float db  = 20.0f * (float)Math.Log10(amp);
                v = (db + 90.0f) / 90.0f;
                v = v < 0.0f ? 0.0f: v;
                                #endif
                c.g = v;
                go.GetComponent <Renderer>().material.color = c;
                                #else
                /* like ? */
                go.GetComponent <Renderer>().material.color = player.Like == 1 ? Color.red : Color.white;
                                #endif
            }

            Debug.Log("player " + entry.Key +
                      " pos=" + player.SeqPos_Cur +
                      " speed=" + player.SeqSpeed_Cur +
                      " octave=" + player.SeqOctave_Cur +
                      " mute=" + player.SeqMute_Cur +
                      " like=" + player.Like);
        }
    }
Esempio n. 6
0
    void Update()
    {
        if (Cardboard.SDK.Triggered && !blockTrigger)
        {
            AdvanceSelf();
            Debug.Log("Cardboard.SDK.Triggered " + blockTrigger);
        }

        float self_angle   = 1.0f - Cardboard.SDK.HeadPose.Orientation.eulerAngles.y / 360.0f;
        float self_angle_L = self_angle + 0.25f;

        float angle_rad = (1.0f - self_angle) * 2.0f * Mathf.PI;

        if (playerID != null)
        {
            MInC_Player self = PlayerDictionary [playerID];

            if (!blockTrigger)
            {
                float height = SeqPosToHeight(self.SeqPos_Cur) + 3.0f;
                infoCanvas.GetComponent <Transform> ().position = new Vector3(Mathf.Sin(angle_rad) * radius, height, Mathf.Cos(angle_rad) * radius);
                infoCanvas.GetComponent <Transform> ().rotation = Quaternion.Euler(new Vector3(0, -self_angle * 360.0f, 0));
            }

            GameObject infoText = GameObject.Find("/InfoCanvas/Panel/Like Button/Text");
            string     text     = (self_angle * 360.0f).ToString("F0") + "\n" + self.SeqPos_Cur.ToString();
            if (infoText != null)
            {
                infoText.GetComponent <Text>().text = text;
            }
        }

                #if !UNITY_EDITOR
        PluginFunc_SetOrientation(self_angle);
                #endif

        foreach (KeyValuePair <string, MInC_Player> entry in PlayerDictionary)
        {
            MInC_Player player = PlayerDictionary[entry.Key];
            if (player.clonePos >= 0)             // not self
            {
                float clone_angle = (float)player.clonePos / maxNumClones;

                float prox_L = Mathf.Abs(self_angle_L - clone_angle);
                prox_L = prox_L > 1.0f ? prox_L - 1.0f : prox_L > 0.5f ? 1.0f - prox_L : prox_L;

                float prox_C = prox_L - 0.25f;

                                #if false
                float scale_R = (prox_C + 0.25f) / 0.5f;
                float scale_L = 1.0f - scale_R;

                Vector3 v3 = clones [player.clonePos].GetComponent <Transform>().position;
                                #endif

                GameObject go = clones [player.clonePos];
                if (player.SeqPos_Cur > 0)
                {
                    float angle_degrees = player.SeqSpeed_Cur == 0 ? -0.5f : player.SeqSpeed_Cur == 2 ? -2.0f : -1.0f;
                    go.GetComponent <Transform> ().Rotate(0, angle_degrees, 0);
                }

                                #if !SCENE_SPHERES_ONLY
                go.GetComponentInChildren <TextMesh> ().text = entry.Key
                                                               + "\n"
                                                               + player.SeqPos_Cur.ToString();
#if false
                +"\n"
                + prox_C.ToString()
                + "\n"
                + player.clonePos.ToString() + ", " + clone_angle.ToString()
                + "\n"
                + scale_L.ToString() + " - " + scale_R.ToString()
                + "\n"
                + v3.x + ", " + v3.y + ", " + v3.z;
#endif
                                #endif
            }
        }
    }