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"); }
public RESULT SetReverbProperties(ref REVERB_PROPERTIES prop) { this.Properties = prop; RESULT r = reverb.setProperties(ref prop); return(r); }
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); }
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; }
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(); }
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)); } } } } } } } } } } }
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); }
/// <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); }