コード例 #1
0
 public IEnumerator Play(SoundEffectInstance soundEffect, AudioPlayer player, float volumeMultiplier,
                         Vector3 position, SoundEffectVariations.MaterialType materialType, Transform transformToFollow) // Hook this method for audio sharing
 {
     if (SocketConnection.GetIsServer() && SocketConnection.gameStarted)
     {
         SocketConnection.SetCulture();
         Vector3 distance = position == Vector3.zero ? position : Camera.main.transform.position - position; // Get the relative position from the camera
         string  tosend   = "AUDIO|" + GetCategory(soundEffect) + "/" + soundEffect.soundRef + "|" +
                            volumeMultiplier + "|" + distance.ToString("F5") + "|" + materialType.ToString();
         SocketConnection.WriteToOpponent(tosend); // Transfer the sound
     }
     return(orig_Play(soundEffect, player, volumeMultiplier, position, materialType, transformToFollow));
 }
コード例 #2
0
 public extern IEnumerator orig_Play(SoundEffectInstance soundEffect, AudioPlayer player, float volumeMultiplier,
                                     Vector3 position, SoundEffectVariations.MaterialType materialType, Transform transformToFollow);
コード例 #3
0
        static PinaCollada()
        {
            try
            {
                directory         = "ImportedAssets";
                invariant_culture = CultureInfo.InvariantCulture;
                string[] files = Directory.GetFiles(directory + "\\Models");

                Utilities.Log("Import Meshes");
                int num = 0;
                for (int i = 0; i < files.Length; i++)
                {
                    if (files[i].EndsWith(".dae"))
                    {
                        num++;
                    }
                }
                imported_meshes = new Dictionary <string, Mesh>();
                int num2 = 0;
                for (int j = 0; j < files.Length; j++)
                {
                    if (Path.GetFileName(files[j]).EndsWith(".dae"))
                    {
                        var perfectFileName = GetPerfectFileName(files[j]);
                        Utilities.Log(perfectFileName);
                        imported_meshes.Add(perfectFileName, ImportMesh(Path.GetFileName(files[j])));
                        num2++;
                    }
                }

                Utilities.Log("Import Materials");

                num2 = 0;
                imported_materials = new Dictionary <string, Material[]>();
                for (int k = 0; k < files.Length; k++)
                {
                    if (Path.GetFileName(files[k]).EndsWith(".dae"))
                    {
                        imported_materials.Add(GetPerfectFileName(files[k]), ImportMaterials(Path.GetFileName(files[k])));
                        num2++;
                    }
                }

                Utilities.Log("Import Textures");

                List <Texture2D> list   = new List <Texture2D>();
                string[]         files2 = Directory.GetFiles(directory + "\\Textures");

                foreach (string text in files2)
                {
                    if (text.EndsWith(".png"))
                    {
                        byte[]    data      = File.ReadAllBytes(text);
                        Texture2D texture2D = new Texture2D(64, 64, TextureFormat.ARGB32, false);
                        texture2D.LoadImage(data);
                        texture2D.name = GetPerfectFileName(text);
                        list.Add(texture2D);
                    }
                }
                imported_textures = list.ToArray();
                imported_sounds   = new Dictionary <string, SoundEffectInstance>();

                Utilities.Log("Import Sounds");

                int num3 = 0;
                SoundEffectVariations.MaterialType[] array = new SoundEffectVariations.MaterialType[6] {
                    SoundEffectVariations.MaterialType.Default,
                    SoundEffectVariations.MaterialType.Ground,
                    SoundEffectVariations.MaterialType.Meat,
                    SoundEffectVariations.MaterialType.Metal,
                    SoundEffectVariations.MaterialType.WarMachine,
                    SoundEffectVariations.MaterialType.Wood
                };
                files2 = Directory.GetDirectories(directory + "\\Sounds");
                foreach (string text2 in files2)
                {
                    if (text2.Contains("."))
                    {
                        continue;
                    }
                    List <SoundEffectVariations> list2 = new List <SoundEffectVariations>();
                    int      num4        = 0;
                    string[] directories = Directory.GetDirectories(text2);
                    foreach (string path in directories)
                    {
                        List <AudioClip> list3  = new List <AudioClip>();
                        string[]         files3 = Directory.GetFiles(path);
                        foreach (string text3 in files3)
                        {
                            if (text3.EndsWith(".wav"))
                            {
                                list3.Add(GetAudioFromFile(text3));
                            }
                        }
                        list2.Add(new SoundEffectVariations());
                        list2[num4].clips        = list3.ToArray();
                        list2[num4].materialType = array[num4];
                        num4++;
                    }
                    string perfectFileName = GetPerfectFileName(text2);
                    if (File.Exists(directory + "\\Sounds\\" + perfectFileName + "\\" + perfectFileName + ".sfxml"))
                    {
                        string text4 = File.ReadAllText(directory + "\\Sounds\\" + perfectFileName + "\\" + perfectFileName + ".sfxml");
                        imported_sounds.Add(perfectFileName, new SoundEffectInstance());
                        imported_sounds[perfectFileName].soundRef  = perfectFileName;
                        imported_sounds[perfectFileName].clipTypes = list2.ToArray();
                        if (text4.Contains("volume"))
                        {
                            imported_sounds[perfectFileName].volume = GetVector2(GetSection(text4, "volume", "", "", ""))[0];
                        }
                        if (text4.Contains("pitch"))
                        {
                            imported_sounds[perfectFileName].pitch = GetVector2(GetSection(text4, "pitch", "", "", ""))[0];
                        }
                        if (text4.Contains("max_instances"))
                        {
                            imported_sounds[perfectFileName].maxInstances = GetInt(GetSection(text4, "max_instances", "", "", ""))[0];
                        }
                        if (text4.Contains("cooldown"))
                        {
                            imported_sounds[perfectFileName].cooldown = GetFloat(GetSection(text4, "cooldown", "", "", ""))[0];
                        }
                        if (text4.Contains("space_blend"))
                        {
                            imported_sounds[perfectFileName].spatialBlend = GetFloat(GetSection(text4, "space_blend", "", "", ""))[0];
                        }
                        if (text4.Contains("reverb_mix"))
                        {
                            imported_sounds[perfectFileName].reverbZoneMix = GetFloat(GetSection(text4, "reverb_mix", "", "", ""))[0];
                        }
                        if (text4.Contains("distance_min_max"))
                        {
                            imported_sounds[perfectFileName].minDistance = GetFloat(GetSection(text4, "distance_min_max", "", "", ""))[0];
                        }
                        if (text4.Contains("distance_min_max"))
                        {
                            imported_sounds[perfectFileName].maxDistance = GetFloat(GetSection(text4, "distance_min_max", "", "", ""))[1];
                        }
                        if (text4.Contains("song_length"))
                        {
                            imported_sounds[perfectFileName].lengthInMeasures = GetInt(GetSection(text4, "song_length", "", "", ""))[0];
                        }
                        if (text4.Contains("transitions"))
                        {
                            imported_sounds[perfectFileName].transitionMeasures = GetInt(GetSection(text4, "transitions", "", "", ""));
                        }
                        num3++;
                    }
                }
            }
            catch (Exception ex)
            {
                Utilities.LogError(ex.ToString());
            }
        }
コード例 #4
0
        public static void Tick()     // A thread safe repeating method
        {
            if (Time.time > waitTime) // Wait until the interval has passed (~60tps)
            {
                waitTime += interval;
                SocketConnection.SetCulture();

                if (SocketConnection.getUIClient().Connected)
                {
                    ScreenshareSender.SetWinHandle(); // Send the unity window handle for receiving images
                }

                if (SocketConnection.switchScene)
                {
                    SocketConnection.switchScene = false;
                    TABSSceneManager.LoadScene(SocketConnection.newScene, true); // Instantly load the new scene
                }

                if (SocketConnection.switchMap)
                {
                    //SocketConnection.WriteToUI("SHOWMSG|Loading a map!"); // Debug
                    SocketConnection.switchMap = false;
                    CampaignPlayerDataHolder.StartedPlayingSandbox();          // Change the game state
                    TABSSceneManager.LoadMap(GetMap(SocketConnection.newMap)); // Load the new map
                }

                if (SocketConnection.updateBudget) // Refresh the UI's budget
                {
                    SocketConnection.updateBudget = false;
                    UpdateUIBudget();
                }


                while (SocketConnection.tickCommands.TryDequeue(out string newData))
                {
                    if (newData.StartsWith("SPAWNUNIT"))
                    {
                        string[] split   = newData.Split('|');
                        string   entName = split[1];
                        Team     team    = (Team)Enum.Parse(typeof(Team), split[2]);
                        Vector3  pos     = StrToVec3(split[3]);

                        UnitBlueprint blueprint = GetUnitBlueprint(entName);
                        GetBrushBehaviorOfUnitBrush(GameObject.FindObjectOfType <UnitBrush>()).Place(blueprint, team, pos); // Add the unit with the brush

                        ServiceLocator.GetService <BattleBudget>().SpendAmount(team, (int)blueprint.UnitCost);              // Update the budget
                        UpdateUIBudget();
                    }
                    else if (newData.StartsWith("REMOVEUNIT"))
                    {
                        string[] split = newData.Split('|');
                        Vector3  pos   = StrToVec3(split[1]);
                        Team     team  = (Team)Enum.Parse(typeof(Team), split[2]);

                        Unit unit = FindClosestUnit(pos); // Get the nearest unit of the pos
                        if (unit != null && unit.Team == team)
                        {
                            GetBrushBehaviorOfUnitBrush(GameObject.FindObjectOfType <UnitBrush>()).Remove(unit, team);       // Remove the unit with the brush

                            ServiceLocator.GetService <BattleBudget>().ReturnAmount(team, (int)unit.unitBlueprint.UnitCost); // Update the budget
                            UpdateUIBudget();
                        }
                    }
                    else if (newData.StartsWith("CLEAR"))
                    {
                        bool        red  = bool.Parse(newData.Split('|')[1]);
                        Team        team = red ? Team.Red : Team.Blue;
                        PlacementUI pui  = GameObject.FindObjectOfType <PlacementUI>(); // Get the placement UI

                        // Clear the right area without triggering an echo
                        UnitLayoutManager.ClearTeam(team);
                        GetClearButtonDelegate(pui)(team);
                    }
                    else if (newData.StartsWith("AUDIO"))
                    {
                        string[] split = newData.Split('|');

                        string  soundRef = split[1];
                        float   volMulti = float.Parse(split[2]);
                        Vector3 relPos   = StrToVec3(split[3]);
                        SoundEffectVariations.MaterialType matType = (SoundEffectVariations.MaterialType)Enum.
                                                                     Parse(typeof(SoundEffectVariations.MaterialType), split[4]);
                        Vector3 worldPos = Camera.main.transform.position + relPos; // Get the world pos from the relative one

                        ServiceLocator.GetService <SoundPlayer>().PlaySoundEffect(soundRef, volMulti, worldPos, matType);
                    }
                }
            }
        }