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)); }
public extern IEnumerator orig_Play(SoundEffectInstance soundEffect, AudioPlayer player, float volumeMultiplier, Vector3 position, SoundEffectVariations.MaterialType materialType, Transform transformToFollow);
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()); } }
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); } } } }