1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
using AudioTester.Core;
using NAudio.Mixer;
using NAudio.Wave;
using RayRoom.Core;
using RayRoom.NAudioEngine;
using System.Numerics;
namespace AudioTester
{
internal class Program
{
[STAThread]
static void Main(string[] args)
{
var settings = new Settings(44100, 100, 330, 100f);
RaySimulator simulator = new RaySimulator(settings);
var sampler = new AudioSampler(@".\Resources\test.wav", true);
List<ICastObject> structures = new List<ICastObject>
{
new AudioSource(new Vector2(0, 9), 10, sampler),
new Line(new Vector2(-2, 10), new Vector2(-2, -10)),
new Line(new Vector2(-1, 8), new Vector2(1, 8)),
new Line(new Vector2(2, 10), new Vector2(2, -10)),
new Line(new Vector2(-2, -10), new Vector2(2, -10)),
new Line(new Vector2(-2, 10), new Vector2(2, 10)),
};
var device = new AudioOut(settings);
device.Container = new ResultContainer(0, new AudioSourceCollision[0]);
Vector2 pos = new Vector2(0, 0);
using (var wo = new WasapiOut(NAudio.CoreAudioApi.AudioClientShareMode.Shared, 150))
{
wo.Init(device);
wo.Play();
while (wo.PlaybackState == PlaybackState.Playing)
{
if (Console.KeyAvailable)
{
var key = Console.ReadKey();
switch (key.Key)
{
case ConsoleKey.Q:
break;
case ConsoleKey.E:
break;
case ConsoleKey.W:
pos += new Vector2(0, 0.1f);
break;
case ConsoleKey.S:
pos += new Vector2(0, -0.1f);
break;
case ConsoleKey.A:
pos += new Vector2(-0.1f, 0);
break;
case ConsoleKey.D:
pos += new Vector2(0.1f, 0);
break;
case ConsoleKey.Escape:
wo.Stop();
break;
default:
break;
}
Console.CursorLeft = 0;
Console.CursorTop = 0;
Console.WriteLine(" {0} ", pos.ToString("0.00"));
}
var left = simulator.Simulate(structures, -Vector2.UnitX * 0.1f + pos, 0, 36);
var right = simulator.Simulate(structures, Vector2.UnitX * 0.1f + pos, 1, 36);
var container = new ResultContainer(36, left.distances.Concat(right.distances).ToArray());
device.Container = container;
}
}
}
}
}
|