static void apply3Daudio(Audio3DCue a3dcue) { AudioEmitter emit = new AudioEmitter(); Matrix mat; // Compute the emitter: MUST BE adjused in v0.1.0 mat = a3dcue.Source.WorldMat; emit.Position = mat.Translation; emit.Up = mat.Up; emit.Forward = mat.Forward; emit.Velocity = Vector3.Zero; a3dcue.cue.Apply3D(listen, emit); }
/// <summary> /// Plays a cue using 3D effects (assuming the cue has an associated runtime parameter control) /// </summary> /// <param name="cuename"></param> /// <param name="emmitterObject"></param> /// <returns></returns> public static Cue Play3DCue(string cuename, GameObject emmitterObject) { // init the datastructures on first call if (mActiveCueList == null) { mActiveCueList = new List<Audio3DCue>(); mCueStack = new Stack<Audio3DCue>(); listen = new AudioListener(); } Audio3DCue new3DCue; if (mCueStack.Count > 0) new3DCue = mCueStack.Pop(); // reuse an old cue else new3DCue = new Audio3DCue(); // get a new one new3DCue.cue = GetCue(cuename); // mPermSoundBank.GetCue(cuename); new3DCue.Source = emmitterObject; apply3Daudio(new3DCue); // adjsut the 3D settings new3DCue.cue.Play(); // start playign the cue mActiveCueList.Add(new3DCue); // Add to the update list return new3DCue.cue; }