Пример #1
0
        /// <summary>
        /// Finds a Wwise object by ID number and then passes it to an IWwiseObjectVisitor.
        /// </summary>
        /// <param name="id">The ID number of the object to find.</param>
        /// <param name="visitor">The IWwiseObjectVisitor to pass the object to if it is found.</param>
        /// <returns>true if the object was found and a method was called on the visitor.</returns>
        public bool Dispatch(uint id, IWwiseObjectVisitor visitor)
        {
            IWwiseObject obj = Find(id);

            if (obj != null)
            {
                obj.Accept(visitor);
                return(true);
            }
            return(false);
        }
Пример #2
0
 /// <summary>
 /// Registers a bank-less object (e.g. one from soundstream.pck) with the scanner.
 /// </summary>
 /// <param name="obj">The object to register.</param>
 public void RegisterGlobalObject(IWwiseObject obj)
 {
     _globalObjects.Add(obj);
 }
 /// <summary>
 /// Adds an object to the collection so that it can be referenced by its ID number.
 /// </summary>
 /// <param name="obj">The IWwiseObject to store.</param>
 public void Add(IWwiseObject obj)
 {
     _objects[obj.ID] = obj;
 }
Пример #4
0
        private void ReadObjects(EndianReader reader)
        {
            int  numObjects = reader.ReadInt32();
            long offset     = reader.Position;

            for (int i = 0; i < numObjects; i++)
            {
                // Read the object's header
                ObjectType type = (ObjectType)reader.ReadSByte();
                int        size = reader.ReadInt32();
                offset += 5;

                // Read the object's ID
                uint id = reader.ReadUInt32();

                // Read the rest of the object based upon its type
                IWwiseObject obj = null;
                switch (type)
                {
                case ObjectType.Voice:
                    obj = new SoundBankVoice(reader, id);
                    break;

                case ObjectType.Action:
                    obj = new SoundBankAction(reader, id);
                    break;

                case ObjectType.Event:
                    SoundBankEvent ev = new SoundBankEvent(reader, id);
                    _eventsById[ev.ID] = ev;
                    obj = ev;
                    break;

                case ObjectType.SequenceContainer:
                    obj = new SoundBankSequenceContainer(reader, id);
                    break;

                case ObjectType.SwitchContainer:
                    obj = new SoundBankSwitchContainer(reader, id);
                    break;

                case ObjectType.ActorMixer:
                    obj = new SoundBankActorMixer(reader, id);
                    break;

                case ObjectType.MusicPlaylistContainer:
                    obj = new SoundBankMusicPlaylist(reader, id);
                    break;

                case ObjectType.MusicSegment:
                    obj = new SoundBankMusicSegment(reader, id);
                    break;

                case ObjectType.MusicTrack:
                    obj = new SoundBankMusicTrack(reader, id);
                    break;

                case ObjectType.MusicSwitchContainer:
                    obj = new SoundBankMusicSwitchContainer(reader, id);
                    break;
                }

                // Register the object if something was read
                if (obj != null)
                {
                    _objects.Add(obj);
                }

                // Skip to the next object
                offset += size;
                reader.SeekTo(offset);
            }
        }
Пример #5
0
 /// <summary>
 /// Adds an object to the collection so that it can be referenced by its ID number.
 /// </summary>
 /// <param name="obj">The IWwiseObject to store.</param>
 public void Add(IWwiseObject obj)
 {
     _objects[obj.ID] = obj;
 }