public static void Load() { if (savedAudios != null) { foreach (FMODAudioSource audio in savedAudios) { GameObject.Destroy(audio.gameObject); } savedAudios.Clear(); savedAudios = null; } savedAudios = new List <FMODAudioSource> (); string dir = GameConfig.GetUserDataPath() + "/PlanetExplorers/Audio Saves/"; string path = dir + "audio_points.xml"; if (File.Exists(path)) { XmlDocument xmldoc = new XmlDocument(); xmldoc.Load(path); foreach (XmlNode node in xmldoc.DocumentElement.ChildNodes) { if (node.Name == "AUDIO") { Vector3 pos = Vector3.zero; pos.x = XmlConvert.ToSingle(node.Attributes["posx"].Value); pos.y = XmlConvert.ToSingle(node.Attributes["posy"].Value); pos.z = XmlConvert.ToSingle(node.Attributes["posz"].Value); Vector3 rot = Vector3.zero; rot.x = XmlConvert.ToSingle(node.Attributes["rotx"].Value); rot.y = XmlConvert.ToSingle(node.Attributes["roty"].Value); rot.z = XmlConvert.ToSingle(node.Attributes["rotz"].Value); string evtpath = node.Attributes["path"].Value; float volume = XmlConvert.ToSingle(node.Attributes["volume"].Value); float pitch = XmlConvert.ToSingle(node.Attributes["pitch"].Value); float mindist = XmlConvert.ToSingle(node.Attributes["mindist"].Value); float maxdist = XmlConvert.ToSingle(node.Attributes["maxdist"].Value); FMODAudioSource audio = CreateAudioSource(pos, rot); audio.path = evtpath; audio.volume = volume; audio.pitch = pitch; audio.minDistance = mindist; audio.maxDistance = maxdist; foreach (XmlNode pnode in node.ChildNodes) { if (pnode.Name == "PARAM") { string pn = pnode.Attributes["name"].Value; float pv = XmlConvert.ToSingle(pnode.Attributes["value"].Value); audio.SetParam(pn, pv); } } savedAudios.Add(audio); } } } }
public static void AlterSaveState(FMODAudioSourceRTE rte, bool state) { FMODAudioSource found = savedAudios.Find(iter => iter == rte.audioSrc); if (found == null) { savedAudios.Add(rte.audioSrc); rte.gizmoColor = Color.green; } else { savedAudios.Remove(rte.audioSrc); rte.gizmoColor = Color.yellow; } }
// Use this for initialization void Start() { audioSrc = GetComponent <FMODAudioSource>(); gizmo = GameObject.CreatePrimitive(PrimitiveType.Quad); gizmo.transform.parent = transform; gizmo.transform.localPosition = Vector3.zero; r = gizmo.GetComponent <Renderer>(); mat = Material.Instantiate(Resources.Load <Material>("AudioGizmoMat")) as Material; r.material = mat; mat.color = Color.yellow; col = gizmo.GetComponent <Collider>(); (col as MeshCollider).convex = true; col.isTrigger = true; bound = GameObject.CreatePrimitive(PrimitiveType.Sphere); Collider c = bound.GetComponent <Collider>(); Collider.DestroyImmediate(c); bound.transform.parent = transform; bound.transform.localPosition = Vector3.zero; Renderer br = bound.GetComponent <Renderer>(); boundmat = Material.Instantiate(Resources.Load <Material>("AudioBoundMat")) as Material; br.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; br.receiveShadows = false; br.material = boundmat; bound.SetActive(false); gizmo.layer = LayerMask.NameToLayer("PE Environment"); gizmo.transform.rotation = Camera.main.transform.rotation; gskin = Resources.Load <GUISkin>("AudioRTESkin"); if (PeFmodEditor.savedAudios != null) { FMODAudioSource found = PeFmodEditor.savedAudios.Find(iter => iter == audioSrc); if (found != null) { gizmoColor = Color.green; } } if (audioSrc.audioInst != null) { EventDescription _desc; audioSrc.audioInst.getDescription(out _desc); _desc.getPath(out inputPath); } }
void OnDestroy() { FMODAudioSource.Destroy(audioSrc); }
void Awake() { audioSrc = gameObject.AddComponent <FMODAudioSource> (); }