Beispiel #1
0
        void Start()
        {
            // Create
            RESULT result = RESULT.OK;

            result = RuntimeManager.LowlevelSystem.createReverb3D(out reverb);

            if (result != RESULT.OK)
            {
                UnityEngine.Debug.LogWarning("FMOD Extensions: Could not create 3D Reverb. " + result);
                return;
            }

            // Get the reverb's properties (preset and position)
            properties = ExtensionsUtils.ExtensionReverbToFMODReverb(preset);
            reverb.setProperties(ref properties);
            VECTOR pos = RuntimeUtils.ToFMODVector(transform.position);

            // Set position, min and max distances
            result = reverb.set3DAttributes(ref pos, minDistance, maxDistance);

            if (result != RESULT.OK)
            {
                UnityEngine.Debug.LogError("FMOD Extensions: Could not set 3D attributes to the 3D reverb " + result, this);
                return;
            }

            UnityEngine.Debug.Log("FMOD Extensions: Created 3D Reverb");
        }
Beispiel #2
0
        public RESULT SetReverbProperties(ref REVERB_PROPERTIES prop)
        {
            this.Properties = prop;
            RESULT r = reverb.setProperties(ref prop);

            return(r);
        }
Beispiel #3
0
 public Reverb_Area(ref FMOD.System system, Reverb_Attributes attribs, ref REVERB_PROPERTIES prop, Image image, int Layer, bool HasCollision, PointF pt, bool DrawAsSprite) : base(image, Layer, HasCollision, pt, DrawAsSprite, false)
 {
     Reverb3D = null;
     system.createReverb3D(out reverb);
     SetReverbProperties(ref prop);
     Set3DAttributes(ref attribs.Position, attribs.MinDistance, attribs.MaxDistance);
 }
Beispiel #4
0
        public void SfxSetReverb(Reverb reverb)
        {
            PRESET            preset = new PRESET();
            REVERB_PROPERTIES rp     = preset.OFF();

            switch (reverb)
            {
            case Reverb.Room:
                rp = preset.STONEROOM();
                break;

            case Reverb.Cave:
                rp = preset.CAVE();
                break;

            case Reverb.Arena:
                rp = preset.ARENA();
                break;

            case Reverb.Forest:
                rp = preset.FOREST();
                break;

            case Reverb.Mountains:
                rp = preset.MOUNTAINS();
                break;

            case Reverb.Underwater:
                rp = preset.UNDERWATER();
                break;

            case Reverb.Dungeon:
                rp = preset.STONECORRIDOR();
                break;

            case Reverb.CHall:
                rp = preset.CONCERTHALL();
                break;

            case Reverb.Quarry:
                rp = preset.QUARRY();
                break;

            case Reverb.Plain:
                rp = preset.PLAIN();
                break;
            }

            fSystem.setReverbAmbientProperties(ref rp);
            fSystem.setReverbProperties(ref rp);
        }
        internal ReverbProperties(ref REVERB_PROPERTIES props)
            : this()
        {
            // All field of REVERB_PROPERTIES are private in the wrapper, I had to modify the wrapper here to expose those fields

            DecayTime         = props.DecayTime;
            EarlyDelay        = props.EarlyDelay;
            LateDelay         = props.LateDelay;
            HFReference       = props.HFReference;
            HFDecayRatio      = props.HFDecayRatio;
            Diffusion         = props.Diffusion;
            Density           = props.Density;
            LowShelfFrequency = props.LowShelfFrequency;
            LowShelfGain      = props.LowShelfGain;
            HighCut           = props.HighCut;
            EarlyLateMix      = props.EarlyLateMix;
            WetLevel          = props.WetLevel;
        }
Beispiel #6
0
        public Form1()
        {
            InitializeComponent();
            //DoubleBuffered = true;
            //SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
            bullet = Image.FromFile("assets\\models\\gunshot.png");
            game   = new Game(new Player(new AnimatedSprite(true, true, 20, Image.FromFile("assets\\models\\player_idle.gif"), 0, true, new RectangleF(0, 0, 50, 50), true), 0, new RectangleF(0, 0, 50, 50)), new World(), 500);
            game.LoadWorldFromFile("assets\\maps\\test.mf");
            ap = new Ammo_Projectile(true, 2, 1000, Image.FromFile("assets\\models\\gunshot.png"), 0, true, new PointF(0, 0), true);
            game.player.AddPointSocket("Weapon", new PointF(34.5f, 30.6f));
            game.player.AddPointSocket("projectile", new PointF(34.5f, 30.6f));
            if ((game.player.GetSocketByName("Weapon") != null) && (game.player.GetSocketByName("projectile") != null))
            {
                game.Weapons.Add(new Weapon_Moveable(10, 100, Image.FromFile("assets\\models\\weapon_pistol.gif"), "Pistol", false, game.player.GetSocketByName("Weapon"), game.player.GetSocketByName("Projectile"), 0.6f, 0.6f));
            }
            //game.world.World_Actors.Add(new Actor(Image.FromFile("assets\\models\\floor_checkboard_texture.png"), 0, true, new PointF(50, 50), true));
            //game.world.World_Actors.Add(new Actor(Image.FromFile("assets\\models\\floor_checkboard_texture.png"), 1, true, new PointF(100, 50), true));
            ////game.world.World_Actors.Add(new Func_View_Layer(1, new RectangleF(90, 40, 100, 100), Image.FromFile("assets\\models\\ground_texture.png"), 0, false, new PointF(100,50), true));
            //game.world.World_Actors.Add(new Trigger_Change_Layer(TriggerType.Once, MoveDirection.NONE, 1, Image.FromFile("assets\\models\\ground_texture.png"), 0, true, new PointF(200, 200), true));
            game.SetPlayerWeapon(0);

            //Sound Work
            game.Sound_System.getLowLevelSystem(out system);

            //system.createReverb3D(out hall);
            REVERB_PROPERTIES Hall_Props = PRESET.HALLWAY();
            //hall.setProperties(ref Hall_Props);
            //VECTOR v = new VECTOR();
            //v = Vector.ToVECTOR(50, 0, 0);
            //hall.set3DAttributes(ref v, 0, 100);

            //game.AddActorToWorld(new Reverb_Area(system, new Reverb_Attributes(Vector.ToVECTOR(100, 100, 0), 0, 100), ref Hall_Props, Image.FromFile("assets\\models\\gunshot.bmp"), 0, false,new PointF(100,100), true));

            SoundData data = new SoundData();

            system.createSound("assets\\sounds\\pistol_shot.wav", MODE._3D, out data.sound);
            game.sounds.Add(data);
            game.AddActorToWorld(new Ambient_Sound(data, Image.FromFile("assets\\models\\gunshot.bmp"), 0, false, new RectangleF(0, 0, 50, 50), true));
            data = new SoundData();
            system.createSound("assets\\sounds\\sound_test_0.wav", MODE._3D, out data.sound);
            game.sounds.Add(data);
            game.Sound_System.update();
        }
Beispiel #7
0
        public void LoadWorldFromFile(string filename)
        {
            XmlDocument map = new XmlDocument();

            map.Load(filename);
            XmlElement root = map.DocumentElement;

            foreach (XmlNode node in root)
            {
                if (node.Attributes.Count > 0)
                {
                    if (node.Name == "world")
                    {
                        if (node.ChildNodes.Count > 0)
                        {
                            foreach (XmlNode actor in node)
                            {
                                if (actor.Name == "actor")
                                {
                                    if (actor.Attributes.Count > 0)
                                    {
                                        if (actor.Attributes.GetNamedItem("x") != null && actor.Attributes.GetNamedItem("y") != null && actor.Attributes.GetNamedItem("height") != null && actor.Attributes.GetNamedItem("width") != null && actor.Attributes.GetNamedItem("layer") != null && actor.Attributes.GetNamedItem("drawassprite") != null && actor.Attributes.GetNamedItem("hascollision") != null && actor.Attributes.GetNamedItem("imagefile") != null)
                                        {
                                            Image      g         = Image.FromFile(actor.Attributes.GetNamedItem("imagefile").Value);
                                            RectangleF collision = new RectangleF();
                                            collision.X      = Convert.ToSingle(actor.Attributes.GetNamedItem("x").Value);
                                            collision.Y      = Convert.ToSingle(actor.Attributes.GetNamedItem("y").Value);
                                            collision.Width  = Convert.ToSingle(actor.Attributes.GetNamedItem("width").Value);
                                            collision.Height = Convert.ToSingle(actor.Attributes.GetNamedItem("height").Value);
                                            if (actor.Attributes.GetNamedItem("height").Value == "-1")
                                            {
                                                collision.Width = g.Width;
                                            }
                                            if (actor.Attributes.GetNamedItem("width").Value == "-1")
                                            {
                                                collision.Height = g.Height;
                                            }
                                            int  layer        = Convert.ToInt32(actor.Attributes.GetNamedItem("layer").Value);
                                            bool drawassprite = Convert.ToBoolean(actor.Attributes.GetNamedItem("drawassprite").Value);
                                            bool hascollision = Convert.ToBoolean(actor.Attributes.GetNamedItem("hascollision").Value);

                                            if (actor.Attributes.GetNamedItem("type") != null)
                                            {
                                                if (actor.Attributes.GetNamedItem("type").Value == "solid")
                                                {
                                                    world.World_Actors.Add(new Actor(g, layer, hascollision, collision, drawassprite));
                                                }
                                                if (actor.Attributes.GetNamedItem("type").Value == "trigger")
                                                {
                                                    if (actor.Attributes.GetNamedItem("trigger_type") != null && actor.Attributes.GetNamedItem("enter_dir") != null && actor.Attributes.GetNamedItem("trigger_use_type") != null)
                                                    {
                                                        //MoveDirection md = (MoveDirection)Convert.ToInt32(actor.Attributes.GetNamedItem("enter_dir").Value);
                                                        //TriggerType tt = (TriggerType)Convert.ToInt32(actor.Attributes.GetNamedItem("trigger_type").Value);

                                                        MoveDirection md = MoveDirection.NONE;
                                                        Enum.TryParse <MoveDirection>(actor.Attributes.GetNamedItem("enter_dir").Value, out md);
                                                        TriggerType tt = TriggerType.Once;
                                                        Enum.TryParse <TriggerType>(actor.Attributes.GetNamedItem("trigger_type").Value, out tt);

                                                        if (actor.Attributes.GetNamedItem("trigger_type").Value == "change_layer")
                                                        {
                                                            int tlayer = Convert.ToInt32(actor.Attributes.GetNamedItem("target_layer").Value);
                                                            world.World_Actors.Add(new Trigger_Change_Layer(tt, md, tlayer, g, layer, hascollision, collision, drawassprite));
                                                        }
                                                    }
                                                }
                                                if (actor.Attributes.GetNamedItem("type").Value == "func")
                                                {
                                                    if (actor.Attributes.GetNamedItem("func_type") != null)
                                                    {
                                                        if (actor.Attributes.GetNamedItem("func_type").Value == "view_layer")
                                                        {
                                                            if (actor.Attributes.GetNamedItem("t_x") != null && actor.Attributes.GetNamedItem("t_y") != null && actor.Attributes.GetNamedItem("t_height") != null && actor.Attributes.GetNamedItem("t_width") != null && actor.Attributes.GetNamedItem("target_layer") != null)
                                                            {
                                                                float tx      = Convert.ToSingle(actor.Attributes.GetNamedItem("t_x").Value);
                                                                float ty      = Convert.ToSingle(actor.Attributes.GetNamedItem("t_y").Value);
                                                                float twidth  = Convert.ToSingle(actor.Attributes.GetNamedItem("t_width").Value);
                                                                float theight = Convert.ToSingle(actor.Attributes.GetNamedItem("t_height").Value);
                                                                int   tlayer  = Convert.ToInt32(actor.Attributes.GetNamedItem("target_layer").Value);
                                                                world.World_Actors.Add(new Func_View_Layer(tlayer, new RectangleF(tx, ty, twidth, theight), g, layer, hascollision, collision, drawassprite));
                                                            }
                                                        }
                                                    }
                                                }
                                                if (actor.Attributes.GetNamedItem("type").Value == "reverb")
                                                {
                                                    if (actor.Attributes.GetNamedItem("z") != null && actor.Attributes.GetNamedItem("max") != null && actor.Attributes.GetNamedItem("min") != null && actor.Attributes.GetNamedItem("reverb_preset_name") != null)
                                                    {
                                                        Reverb_Props_Presets rp = Reverb_Props_Presets.OFF;
                                                        float z   = Convert.ToSingle(actor.Attributes.GetNamedItem("z").Value);
                                                        float min = Convert.ToSingle(actor.Attributes.GetNamedItem("min").Value);
                                                        float max = Convert.ToSingle(actor.Attributes.GetNamedItem("max").Value);

                                                        Enum.TryParse <Reverb_Props_Presets>(actor.Attributes.GetNamedItem("reverb_preset_name").Value, out rp);
                                                        REVERB_PROPERTIES rev = Reverb_Area.LoadPreset(rp);
                                                        FMOD.System       system;
                                                        Sound_System.getLowLevelSystem(out system);

                                                        world.World_Actors.Add(new Reverb_Area(system, new Reverb_Attributes(Vector.ToVECTOR(0, 0, 0), 0, 1000), ref rev, g, layer, hascollision, collision, drawassprite));
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    if (node.Name == "entity")
                    {
                        if (node.ChildNodes.Count > 0)
                        {
                            foreach (XmlNode ent in node)
                            {
                                if (ent.Name == "ent")
                                {
                                    if (ent.Attributes.Count > 0)
                                    {
                                        if (ent.Attributes.GetNamedItem("name") != null)
                                        {
                                            if (ent.Attributes.GetNamedItem("name").Value == "player_start")
                                            {
                                                if (ent.Attributes.GetNamedItem("x") != null && ent.Attributes.GetNamedItem("y") != null)
                                                {
                                                    player.SetX(Convert.ToSingle(ent.Attributes.GetNamedItem("x").Value));
                                                    player.SetX(Convert.ToSingle(ent.Attributes.GetNamedItem("y").Value));
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Beispiel #8
0
 public Reverb_Area(Reverb3D Reverb, Reverb_Attributes attribs, ref REVERB_PROPERTIES prop, Image image, int Layer, bool HasCollision, PointF pt, bool DrawAsSprite) : base(image, Layer, HasCollision, pt, DrawAsSprite, false)
 {
     this.Reverb3D = Reverb;
     SetReverbProperties(ref prop);
     Set3DAttributes(ref attribs.Position, attribs.MinDistance, attribs.MaxDistance);
 }
Beispiel #9
0
        /// <summary>
        /// Gets an FMOD reverb preset from the FMOD Extension's preset enum
        /// </summary>
        /// <returns>The reverb to FMODR everb.</returns>
        /// <param name="preset">Preset.</param>
        public static REVERB_PROPERTIES ExtensionReverbToFMODReverb(ReverbPreset preset)
        {
            REVERB_PROPERTIES properties = new REVERB_PROPERTIES();

            switch (preset)
            {
            case ReverbPreset.Alley:
                properties = PRESET.ALLEY();
                break;

            case ReverbPreset.Arena:
                properties = PRESET.ARENA();
                break;

            case ReverbPreset.Auditorium:
                properties = PRESET.AUDITORIUM();
                break;

            case ReverbPreset.Bathroom:
                properties = PRESET.BATHROOM();
                break;

            case ReverbPreset.Cave:
                properties = PRESET.CAVE();
                break;

            case ReverbPreset.CerpettedHallway:
                properties = PRESET.CARPETTEDHALLWAY();
                break;

            case ReverbPreset.City:
                properties = PRESET.CITY();
                break;

            case ReverbPreset.ConcertHall:
                properties = PRESET.CONCERTHALL();
                break;

            case ReverbPreset.Forest:
                properties = PRESET.FOREST();
                break;

            case ReverbPreset.Generic:
                properties = PRESET.GENERIC();
                break;

            case ReverbPreset.Hallway:
                properties = PRESET.HALLWAY();
                break;

            case ReverbPreset.Hangar:
                properties = PRESET.HANGAR();
                break;

            case ReverbPreset.LivingRoom:
                properties = PRESET.LIVINGROOM();
                break;

            case ReverbPreset.Mountains:
                properties = PRESET.MOUNTAINS();
                break;

            case ReverbPreset.Off:
                properties = PRESET.OFF();
                break;

            case ReverbPreset.PaddedCell:
                properties = PRESET.PADDEDCELL();
                break;

            case ReverbPreset.ParkingLot:
                properties = PRESET.PARKINGLOT();
                break;

            case ReverbPreset.Plain:
                properties = PRESET.PLAIN();
                break;

            case ReverbPreset.Quarry:
                properties = PRESET.QUARRY();
                break;

            case ReverbPreset.Room:
                properties = PRESET.ROOM();
                break;

            case ReverbPreset.SewerPipe:
                properties = PRESET.SEWERPIPE();
                break;

            case ReverbPreset.StoneCorridor:
                properties = PRESET.STONECORRIDOR();
                break;

            case ReverbPreset.StoneRoom:
                properties = PRESET.STONEROOM();
                break;

            case ReverbPreset.Underwater:
                properties = PRESET.UNDERWATER();
                break;
            }

            return(properties);
        }