Initial commit
This commit is contained in:
Binary file not shown.
@@ -0,0 +1,25 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.30907.101
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EvilSatellites", "EvilSatellites\EvilSatellites.csproj", "{48DE0A06-5D79-4EB1-B16A-4807A15AEBD0}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{48DE0A06-5D79-4EB1-B16A-4807A15AEBD0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{48DE0A06-5D79-4EB1-B16A-4807A15AEBD0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{48DE0A06-5D79-4EB1-B16A-4807A15AEBD0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{48DE0A06-5D79-4EB1-B16A-4807A15AEBD0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {A507D2F2-2F7A-44CF-A0F9-CBAABD7B4D90}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -0,0 +1,85 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using XVector3 = Microsoft.Xna.Framework.Vector3;
|
||||
using System.Numerics;
|
||||
using SynthySound;
|
||||
|
||||
namespace EvilSatellites
|
||||
{
|
||||
public class AudioAsset
|
||||
{
|
||||
private List<ISoundEffect3D> _SoundList { get; set; }
|
||||
private string _Path;
|
||||
private Synthy _Engine;
|
||||
private Vector3 _Position;
|
||||
public Vector3 Position
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Position;
|
||||
}
|
||||
set
|
||||
{
|
||||
_Position = value;
|
||||
foreach (var sound in _SoundList)
|
||||
{
|
||||
sound.Position = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
private Random rnd;
|
||||
private int _Min;
|
||||
private int _Max;
|
||||
public AudioAsset(Synthy engine, string path, int min, int max)
|
||||
{
|
||||
_SoundList = new List<ISoundEffect3D>();
|
||||
_Engine = engine;
|
||||
_Path = path;
|
||||
_Max = max;
|
||||
_Min = min;
|
||||
rnd = new Random();
|
||||
LoadAssets();
|
||||
}
|
||||
|
||||
private void LoadAssets()
|
||||
{
|
||||
for (var i = _Min; i <= _Max; i++)
|
||||
{
|
||||
Console.WriteLine(_Path + "/" + i.ToString() + ".wav");
|
||||
_SoundList.Add(_Engine.Load3D(_Path + "/" + i.ToString() + ".wav"));
|
||||
}
|
||||
}
|
||||
|
||||
public void Play()
|
||||
{
|
||||
var index = rnd.Next(_SoundList.Count);
|
||||
_SoundList[index].Reset();
|
||||
_SoundList[index].Play();
|
||||
}
|
||||
|
||||
public void AddEffect(IEffect effect)
|
||||
{
|
||||
foreach (var sound in _SoundList)
|
||||
{
|
||||
sound.ConnectToEffect(effect);
|
||||
}
|
||||
}
|
||||
|
||||
public void RemoveEffect(IEffect effect)
|
||||
{
|
||||
foreach (var sound in _SoundList)
|
||||
{
|
||||
sound.DisconnectFromEffect(effect);
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
foreach (var sound in _SoundList)
|
||||
{
|
||||
sound.Destroy();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
|
||||
#----------------------------- Global Properties ----------------------------#
|
||||
|
||||
/outputDir:bin/$(Platform)
|
||||
/intermediateDir:obj/$(Platform)
|
||||
/platform:DesktopGL
|
||||
/config:
|
||||
/profile:Reach
|
||||
/compress:False
|
||||
|
||||
#-------------------------------- References --------------------------------#
|
||||
|
||||
|
||||
#---------------------------------- Content ---------------------------------#
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<PublishReadyToRun>false</PublishReadyToRun>
|
||||
<TieredCompilation>false</TieredCompilation>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
<ApplicationIcon>Icon.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<None Remove="Icon.ico" />
|
||||
<None Remove="Icon.bmp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Icon.ico" />
|
||||
<EmbeddedResource Include="Icon.bmp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<MonoGameContentReference Include="Content\Content.mgcb" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<TrimmerRootAssembly Include="Microsoft.Xna.Framework.Content.ContentTypeReader" Visible="false" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="MonoGame.Framework.DesktopGL" Version="3.8.0.1641" />
|
||||
<PackageReference Include="MonoGame.Content.Builder.Task" Version="3.8.0.1641" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="CppSharp.Runtime">
|
||||
<HintPath>..\..\Synthizer\Synthy\bin\Debug\netstandard2.1\CppSharp.Runtime.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Synthizer.Net">
|
||||
<HintPath>..\..\Synthizer\Synthy\bin\Debug\netstandard2.1\Synthizer.Net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Synthy">
|
||||
<HintPath>..\..\Synthizer\Synthy\bin\Debug\netstandard2.1\Synthy.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,56 @@
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
using Microsoft.Xna.Framework.Input;
|
||||
using SynthySound;
|
||||
|
||||
namespace EvilSatellites
|
||||
{
|
||||
public class Game1 : Game
|
||||
{
|
||||
private GraphicsDeviceManager _graphics;
|
||||
private SpriteBatch _spriteBatch;
|
||||
private ScreenManager _manager;
|
||||
|
||||
public Game1()
|
||||
{
|
||||
_graphics = new GraphicsDeviceManager(this);
|
||||
Content.RootDirectory = "Content";
|
||||
IsMouseVisible = true;
|
||||
_manager = new ScreenManager(this);
|
||||
Components.Add(_manager);
|
||||
}
|
||||
|
||||
protected override void Initialize()
|
||||
{
|
||||
// TODO: Add your initialization logic here
|
||||
_manager.AddScreen(new EvilSatellites.Screens.GameScreen());
|
||||
base.Initialize();
|
||||
}
|
||||
|
||||
protected override void LoadContent()
|
||||
{
|
||||
_spriteBatch = new SpriteBatch(GraphicsDevice);
|
||||
// TODO: use this.Content to load your game content here
|
||||
}
|
||||
|
||||
protected override void Update(GameTime gameTime)
|
||||
{
|
||||
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
|
||||
Exit();
|
||||
|
||||
// TODO: Add your update logic here
|
||||
_manager.Update(gameTime);
|
||||
|
||||
base.Update(gameTime);
|
||||
}
|
||||
|
||||
protected override void Draw(GameTime gameTime)
|
||||
{
|
||||
GraphicsDevice.Clear(Color.CornflowerBlue);
|
||||
|
||||
// TODO: Add your drawing code here
|
||||
|
||||
base.Draw(gameTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Input;
|
||||
|
||||
namespace EvilSatellites
|
||||
{
|
||||
public interface IScreen
|
||||
{
|
||||
public void Activate();
|
||||
public void Deactivate();
|
||||
public void Update(GameTime gameTime);
|
||||
public void HandleInput(GameTime gameTime, KeyboardState inputs);
|
||||
ScreenManager Manager { get; set; }
|
||||
ScreenState State { get; set; }
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 256 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 144 KiB |
@@ -0,0 +1,81 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Input;
|
||||
|
||||
namespace EvilSatellites.Objects
|
||||
{
|
||||
public abstract class AbstractGameObject : IGameObject
|
||||
{
|
||||
private Vector3 _Position;
|
||||
public Vector3 Position
|
||||
{
|
||||
get => _Position;
|
||||
set => _Position = value;
|
||||
}
|
||||
private Vector3 _Orientation;
|
||||
public Vector3 Orientation
|
||||
{
|
||||
get => _Orientation;
|
||||
set => _Orientation = value;
|
||||
}
|
||||
public float Theta { get; set; }
|
||||
private Matrix _Rotation;
|
||||
public Matrix Rotation
|
||||
{
|
||||
get => _Rotation;
|
||||
set => _Rotation = value;
|
||||
}
|
||||
public IScreen Screen;
|
||||
public ObjectType Type { get; set; }
|
||||
|
||||
public AbstractGameObject(IScreen screen)
|
||||
{
|
||||
Screen = screen;
|
||||
Type = ObjectType.Generic;
|
||||
}
|
||||
|
||||
public void RotateX(float angle)
|
||||
{
|
||||
Matrix rotate = Matrix.CreateFromAxisAngle(_Rotation.Right, angle);
|
||||
_Rotation *= rotate;
|
||||
Orientation = _Rotation.Forward;
|
||||
}
|
||||
|
||||
public void RotateY(float angle)
|
||||
{
|
||||
Matrix rotate = Matrix.CreateFromAxisAngle(_Rotation.Up, angle);
|
||||
_Rotation *= rotate;
|
||||
Orientation = _Rotation.Forward;
|
||||
}
|
||||
|
||||
public void RotateZ(float angle)
|
||||
{
|
||||
Matrix rotate = Matrix.CreateFromAxisAngle(_Rotation.Forward, angle);
|
||||
_Rotation *= rotate;
|
||||
Orientation = _Rotation.Forward;
|
||||
}
|
||||
|
||||
public void Pitch(Single pitch)
|
||||
{
|
||||
Matrix rotate = Matrix.CreateFromYawPitchRoll(0, pitch, 0);
|
||||
_Rotation *= rotate;
|
||||
Orientation = _Rotation.Forward;
|
||||
}
|
||||
|
||||
public void Move(Vector3 pose)
|
||||
{
|
||||
var move = Vector3.Transform(pose, _Rotation);
|
||||
// move.Normalize();
|
||||
_Position += move;
|
||||
|
||||
}
|
||||
|
||||
public abstract void Update(GameTime gameTime);
|
||||
|
||||
public abstract void Activate();
|
||||
|
||||
public abstract void Destroy();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using Microsoft.Xna.Framework;
|
||||
|
||||
namespace EvilSatellites.Objects
|
||||
{
|
||||
public interface IGameObject
|
||||
{
|
||||
void Activate();
|
||||
void Destroy();
|
||||
Vector3 Position { get; set; }
|
||||
Vector3 Orientation { get; set; }
|
||||
float Theta { get; set; }
|
||||
Matrix Rotation { get; set; }
|
||||
void Update(GameTime gameTime);
|
||||
ObjectType Type { get; set; }
|
||||
void Move(Vector3 pose);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace EvilSatellites.Objects
|
||||
{
|
||||
public enum ObjectType
|
||||
{
|
||||
Generic,
|
||||
Player
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using Microsoft.Xna.Framework;
|
||||
|
||||
namespace EvilSatellites.Objects
|
||||
{
|
||||
public class Player : AbstractGameObject
|
||||
{
|
||||
private Vector3 _PrevPos;
|
||||
public Player(IScreen screen): base(screen)
|
||||
{
|
||||
Type = ObjectType.Player;
|
||||
Position = new Vector3(10, 0, 0);
|
||||
Rotation = Matrix.Identity;
|
||||
Orientation = Rotation.Forward;
|
||||
Activate();
|
||||
}
|
||||
|
||||
override public void Activate()
|
||||
{
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
public override void Destroy()
|
||||
{
|
||||
return;
|
||||
}
|
||||
override public void Update(GameTime gameTime)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using Microsoft.Xna.Framework;
|
||||
using SynthySound;
|
||||
|
||||
namespace EvilSatellites.Objects
|
||||
{
|
||||
class SynthyProp : AbstractGameObject
|
||||
{
|
||||
private ISoundEffect3D Sound;
|
||||
public SynthyProp(IScreen screen, Vector3 pos): base(screen)
|
||||
{
|
||||
Sound = Screen.Manager.Sound.Load3D(@"sfx/ambience/water1.wav");
|
||||
Sound.Loop = true;
|
||||
Position = pos;
|
||||
Sound.Position = new System.Numerics.Vector3(pos.X, pos.Y, pos.Z);
|
||||
Sound.ConnectToEffect(Screen.Manager.EnvironmentEffect);
|
||||
Activate();
|
||||
}
|
||||
|
||||
public override void Activate()
|
||||
{
|
||||
Sound.Play();
|
||||
}
|
||||
public override void Destroy()
|
||||
{
|
||||
Sound.Destroy();
|
||||
}
|
||||
|
||||
override public void Update(GameTime gameTime)
|
||||
{
|
||||
Sound.Position = new System.Numerics.Vector3(Position.X, Position.Y, Position.Z);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
using System;
|
||||
|
||||
namespace EvilSatellites
|
||||
{
|
||||
public static class Program
|
||||
{
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
using (var game = new Game1())
|
||||
game.Run();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
using System.Numerics;
|
||||
|
||||
namespace EvilSatellites.Quadtree
|
||||
{
|
||||
public interface Positional
|
||||
{
|
||||
Vector3 Position { get; }
|
||||
Vector3 Dimensions { get; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Numerics;
|
||||
|
||||
namespace EvilSatellites.Quadtree
|
||||
{
|
||||
public class Quadtree<T> where T : Positional
|
||||
{
|
||||
public Vector3 Dimensions { get; set; }
|
||||
public int MaxLevels;
|
||||
public int MaxObjects;
|
||||
public QuadtreeNode<T> Root;
|
||||
public Quadtree(Vector3 dimensions, int maxLevels, int maxObjects)
|
||||
{
|
||||
Dimensions = dimensions;
|
||||
this.MaxLevels = maxLevels;
|
||||
this.MaxObjects = maxObjects;
|
||||
this.Root = new QuadtreeNode<T>(new Vector3(0, 0, 0), Dimensions, MaxLevels, MaxObjects, 0);
|
||||
}
|
||||
|
||||
public void Add(T obj)
|
||||
{
|
||||
Root.Add(obj);
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
this.Root = new QuadtreeNode<T>(new Vector3(0, 0, 0), Dimensions, MaxLevels, MaxObjects, 0);
|
||||
}
|
||||
|
||||
public List<T> Find(Vector3 Position, Vector3 dimensions)
|
||||
{
|
||||
return Root.Find(Position, dimensions);
|
||||
}
|
||||
|
||||
public List<T> Find(Vector3 Position)
|
||||
{
|
||||
return Root.Find(Position, new Vector3(1, 1, 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,309 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Numerics;
|
||||
|
||||
namespace EvilSatellites.Quadtree
|
||||
{
|
||||
public class QuadtreeNode<T> where T : Positional
|
||||
{
|
||||
public enum Direction
|
||||
{
|
||||
UpperTopLeft,
|
||||
UpperTopRight,
|
||||
UpperBottomLeft,
|
||||
UpperBottomRight,
|
||||
LowerTopLeft,
|
||||
LowerTopRight,
|
||||
LowerBottomLeft,
|
||||
LowerBottomRight,
|
||||
Here
|
||||
}
|
||||
public List<T> Objects;
|
||||
public List<QuadtreeNode<T>> Nodes;
|
||||
public Vector3 Position;
|
||||
public Vector3 Dimensions;
|
||||
public int CurrentLevel;
|
||||
public int MaxObjects;
|
||||
public int MaxLevels;
|
||||
public QuadtreeNode(Vector3 position, Vector3 dimensions, int maxLevels, int maxObjects, int currentLevel)
|
||||
{
|
||||
this.Position = position;
|
||||
this.Dimensions = dimensions;
|
||||
Objects = new List<T>();
|
||||
Nodes = new List<QuadtreeNode<T>>();
|
||||
this.CurrentLevel = currentLevel;
|
||||
this.MaxLevels = maxLevels;
|
||||
this.MaxObjects = maxObjects;
|
||||
}
|
||||
|
||||
public void Add(T obj)
|
||||
{
|
||||
if (Nodes.Count > 0)
|
||||
{
|
||||
var indecies = GetIndecies(obj.Position, obj.Dimensions);
|
||||
foreach (var index in indecies)
|
||||
{
|
||||
if (Nodes[index].Intersects(obj.Position, obj.Dimensions))
|
||||
{
|
||||
Nodes[index].Add(obj);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
Objects.Add(obj);
|
||||
if (Objects.Count > this.MaxObjects)
|
||||
{
|
||||
if (Nodes.Count > 0)
|
||||
{
|
||||
DistributeObjects();
|
||||
}
|
||||
else
|
||||
{
|
||||
Split();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void Split()
|
||||
{
|
||||
if (CurrentLevel >= MaxLevels)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var halfWidth = Dimensions.X / 2;
|
||||
var halfHeight = Dimensions.Y / 2;
|
||||
var halfDepth = Dimensions.Z / 2;
|
||||
var upperTopLeft = new Vector3(Position.X, Position.Y + halfHeight, Position.Z+halfDepth);
|
||||
var upperTopRight = new Vector3(Position.X + halfWidth, Position.Y + halfHeight, Position.Z + halfDepth);
|
||||
var upperBottomLeft = new Vector3(Position.X, Position.Y, Position.Z + halfDepth);
|
||||
var upperBottomRight = new Vector3(Position.X + halfWidth, Position.Y, Position.Z + halfDepth);
|
||||
var lowerTopLeft = new Vector3(Position.X, Position.Y + halfHeight, Position.Z);
|
||||
var lowerTopRight = new Vector3(Position.X + halfWidth, Position.Y + halfHeight, Position.Z);
|
||||
var lowerBottomLeft = new Vector3(Position.X, Position.Y, Position.Z);
|
||||
var lowerBottomRight = new Vector3(Position.X + halfWidth, Position.Y, Position.Z);
|
||||
var upperTopLeftNode = new QuadtreeNode<T>(
|
||||
upperTopLeft,
|
||||
Dimensions / 2,
|
||||
MaxLevels,
|
||||
MaxObjects,
|
||||
CurrentLevel + 1
|
||||
);
|
||||
var upperTopRightNode = new QuadtreeNode<T>(
|
||||
upperTopRight,
|
||||
Dimensions / 2,
|
||||
MaxLevels,
|
||||
MaxObjects,
|
||||
CurrentLevel + 1
|
||||
);
|
||||
var upperBottomLeftNode = new QuadtreeNode<T>(
|
||||
upperBottomLeft,
|
||||
Dimensions / 2,
|
||||
MaxLevels,
|
||||
MaxObjects,
|
||||
CurrentLevel + 1
|
||||
);
|
||||
var upperBottomRightNode = new QuadtreeNode<T>(
|
||||
upperBottomRight,
|
||||
Dimensions / 2,
|
||||
MaxLevels,
|
||||
MaxObjects,
|
||||
CurrentLevel + 1
|
||||
);
|
||||
var lowerTopLeftNode = new QuadtreeNode<T>(
|
||||
lowerTopLeft,
|
||||
Dimensions / 2,
|
||||
MaxLevels,
|
||||
MaxObjects,
|
||||
CurrentLevel + 1
|
||||
);
|
||||
var lowerTopRightNode = new QuadtreeNode<T>(
|
||||
lowerTopRight,
|
||||
Dimensions / 2,
|
||||
MaxLevels,
|
||||
MaxObjects,
|
||||
CurrentLevel + 1
|
||||
);
|
||||
var lowerBottomLeftNode = new QuadtreeNode<T>(
|
||||
lowerBottomLeft,
|
||||
Dimensions / 2,
|
||||
MaxLevels,
|
||||
MaxObjects,
|
||||
CurrentLevel + 1
|
||||
);
|
||||
var lowerBottomRightNode = new QuadtreeNode<T>(
|
||||
lowerBottomRight,
|
||||
Dimensions / 2,
|
||||
MaxLevels,
|
||||
MaxObjects,
|
||||
CurrentLevel + 1
|
||||
);
|
||||
Nodes.Add(upperTopLeftNode);
|
||||
Nodes.Add(upperTopRightNode);
|
||||
Nodes.Add(upperBottomLeftNode);
|
||||
Nodes.Add(upperBottomRightNode);
|
||||
Nodes.Add(lowerTopLeftNode);
|
||||
Nodes.Add(lowerTopRightNode);
|
||||
Nodes.Add(lowerBottomLeftNode);
|
||||
Nodes.Add(lowerBottomRightNode);
|
||||
DistributeObjects();
|
||||
}
|
||||
|
||||
private void DistributeObjects()
|
||||
{
|
||||
List<T> movedObjects = new List<T>();
|
||||
for (var i = 0; i < Objects.Count; i++)
|
||||
{
|
||||
var indecies = GetIndecies(Objects[i].Position, Objects[i].Dimensions);
|
||||
foreach (var index in indecies)
|
||||
{
|
||||
if (Nodes[index].Intersects(Objects[i].Position, Objects[i].Dimensions))
|
||||
{
|
||||
Nodes[index].Add(Objects[i]);
|
||||
movedObjects.Add(Objects[i]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
foreach (var obj in movedObjects)
|
||||
{
|
||||
Objects.Remove(obj);
|
||||
}
|
||||
movedObjects.Clear();
|
||||
}
|
||||
|
||||
public int GetIndex(Vector3 position)
|
||||
{
|
||||
if (Nodes.Count == 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
var halfwidth = Dimensions.X / 2;
|
||||
var halfHeight = Dimensions.Y / 2;
|
||||
var halfDepth = Dimensions.Z / 2;
|
||||
var isTop = (position.Y > this.Position.Y + halfHeight);
|
||||
var isRight = (position.X > this.Position.X + halfwidth);
|
||||
var isUpper = (position.X > this.Position.X + halfwidth);
|
||||
if (isUpper)
|
||||
{
|
||||
if (isTop)
|
||||
{
|
||||
if (isRight)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (isRight)
|
||||
{
|
||||
return 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (isTop)
|
||||
{
|
||||
if (isRight)
|
||||
{
|
||||
return 5;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (isRight)
|
||||
{
|
||||
return 7;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 6;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<int> GetIndecies(Vector3 position, Vector3 dimensions)
|
||||
{
|
||||
List<int> indecies = new List<int>();
|
||||
for (var i = 0; i < Nodes.Count; i++)
|
||||
{
|
||||
if (Nodes[i].Intersects(position, dimensions)) indecies.Add(i);
|
||||
}
|
||||
return indecies;
|
||||
}
|
||||
|
||||
public List<T> Find(Vector3 position, Vector3 dimensions)
|
||||
{
|
||||
var results = new List<T>();
|
||||
if (!Intersects(position, dimensions))
|
||||
{
|
||||
return results;
|
||||
}
|
||||
|
||||
var index = GetIndex(position);
|
||||
if (index == -1)
|
||||
{
|
||||
return Objects;
|
||||
}
|
||||
|
||||
if (!Nodes[index].Intersects(position, dimensions))
|
||||
{
|
||||
results.AddRange(Objects);
|
||||
for (var i = 0; i < Nodes.Count; i++)
|
||||
{
|
||||
if (Nodes[i].Intersects(position, dimensions))
|
||||
{
|
||||
results.AddRange(Nodes[i].GetAllObjects());
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
results.AddRange(Nodes[index].Find(position, dimensions));
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
public bool Intersects(Vector3 position, Vector3 dimensions)
|
||||
{
|
||||
return (position.X <= (this.Position.X + this.Dimensions.X) && (position.X + dimensions.X) >= this.Position.X) && (position.Y <= (this.Position.Y + this.Dimensions.Y) && (position.Y + dimensions.Y) >= this.Position.Y) && (position.Z <= (this.Position.Z + this.Dimensions.Z) && (position.Z + dimensions.Z) >= this.Position.Z);
|
||||
}
|
||||
|
||||
public bool Fits(Vector3 position, Vector3 dimensions)
|
||||
{
|
||||
return (
|
||||
(position.X >= this.Position.X && position.X <= this.Position.X + this.Dimensions.X && position.Y >= this.Position.Y && position.Y <= this.Position.Y + this.Dimensions.Y) &&
|
||||
(position.X + dimensions.X >= this.Position.X && position.X + dimensions.X <= this.Position.X + this.Dimensions.X && position.Y + dimensions.Y >= this.Position.Y && position.Y + dimensions.Y <= this.Position.Y + this.Dimensions.Y)
|
||||
);
|
||||
}
|
||||
|
||||
public List<T> GetAllObjects()
|
||||
{
|
||||
List<T> objs = new List<T>();
|
||||
objs.AddRange(Objects);
|
||||
if (Nodes.Count > 0)
|
||||
{
|
||||
for (var i = 0; i < Nodes.Count; i++)
|
||||
{
|
||||
objs.AddRange(Nodes[i].GetAllObjects());
|
||||
}
|
||||
}
|
||||
return objs;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Input;
|
||||
using SynthySound;
|
||||
using Microsoft.Xna.Framework.Audio;
|
||||
|
||||
namespace EvilSatellites
|
||||
{
|
||||
public class ScreenManager : DrawableGameComponent
|
||||
{
|
||||
private List<IScreen> _Screens;
|
||||
private IScreen _CurrentScreen;
|
||||
private Game _Game;
|
||||
private bool _Running = false;
|
||||
public Synthy Sound = new Synthy();
|
||||
public FDNReverb EnvironmentEffect;
|
||||
public AudioListener Listener = new AudioListener();
|
||||
public ScreenManager(Game instance): base(instance)
|
||||
{
|
||||
EnvironmentEffect = Sound.CreateReverb();
|
||||
EnvironmentEffect.Delay = 0.03;
|
||||
EnvironmentEffect.Wet = 30;
|
||||
EnvironmentEffect.T60 = 3.3;
|
||||
EnvironmentEffect.Defusion = 1;
|
||||
EnvironmentEffect.FreePath = 0.22;
|
||||
|
||||
_Game = instance;
|
||||
_Screens = new List<IScreen>();
|
||||
_CurrentScreen = null;
|
||||
}
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
_Running = true;
|
||||
foreach (var screen in _Screens)
|
||||
{
|
||||
screen.Activate();
|
||||
}
|
||||
base.Initialize();
|
||||
}
|
||||
|
||||
public void AddScreen(IScreen screen)
|
||||
{
|
||||
screen.Manager = this;
|
||||
if (_Running) screen.Activate();
|
||||
_Screens.Add(screen);
|
||||
}
|
||||
public void RemoveScreen(IScreen screen)
|
||||
{
|
||||
if (!_Screens.Contains(screen))
|
||||
{
|
||||
throw new Exception("Cannot remove a screen that isn't added to manager");
|
||||
}
|
||||
screen.Deactivate();
|
||||
_Screens.Remove(screen);
|
||||
}
|
||||
|
||||
public void Update(GameTime gameTime)
|
||||
{
|
||||
Sound.Update();
|
||||
var input = Keyboard.GetState();
|
||||
foreach (var screen in _Screens)
|
||||
{
|
||||
if (screen.State == ScreenState.Active) screen.HandleInput(gameTime, input);
|
||||
screen.Update(gameTime);
|
||||
}
|
||||
base.Update(gameTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace EvilSatellites
|
||||
{
|
||||
public enum ScreenState
|
||||
{
|
||||
Active,
|
||||
Hidden
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Input;
|
||||
using SynthySound;
|
||||
using System.Linq;
|
||||
using EvilSatellites.Objects;
|
||||
|
||||
namespace EvilSatellites.Screens
|
||||
{
|
||||
public class GameScreen : IScreen
|
||||
{
|
||||
public ScreenManager Manager { get; set; }
|
||||
public ScreenState State { get; set; }
|
||||
public List<IGameObject> Objects = new List<IGameObject>();
|
||||
private float Theta = 0;
|
||||
public void Activate()
|
||||
{
|
||||
State = ScreenState.Active;
|
||||
Player player = new Player(this);
|
||||
Objects.Add(player);
|
||||
return;
|
||||
}
|
||||
|
||||
public void Deactivate()
|
||||
{
|
||||
State = ScreenState.Hidden;
|
||||
return;
|
||||
}
|
||||
public void Update(GameTime gameTime)
|
||||
{
|
||||
foreach (var obj in Objects)
|
||||
{
|
||||
obj.Update(gameTime);
|
||||
if (obj.Type == ObjectType.Player)
|
||||
{
|
||||
// obj.TranslateForward();
|
||||
Manager.Sound.ListenerPosition = new System.Numerics.Vector3(obj.Position.X, obj.Position.Y, obj.Position.Z);
|
||||
Manager.Sound.ListenerOrientationForward = System.Numerics.Vector3.Normalize(new System.Numerics.Vector3(obj.Rotation.Forward.X, obj.Rotation.Forward.Y, obj.Rotation.Forward.Z));
|
||||
Manager.Sound.ListenerOrientationUpwards = System.Numerics.Vector3.Normalize(new System.Numerics.Vector3(obj.Rotation.Up.X, obj.Rotation.Up.Y, obj.Rotation.Up.Z));
|
||||
Manager.Listener.Position = obj.Position;
|
||||
Manager.Listener.Forward = obj.Rotation.Forward;
|
||||
Manager.Listener.Up = obj.Rotation.Up;
|
||||
// Console.WriteLine(Manager.Sound.ListenerOrientationForward);
|
||||
// Console.WriteLine(Manager.Sound.ListenerOrientationUpwards);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
public void HandleInput(GameTime gameTime, KeyboardState inputs)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
/**
|
||||
* Product: Tolk
|
||||
* File: Tolk.cs
|
||||
* Description: .NET wrapper class (in C#).
|
||||
* Copyright: (c) 2014, Davy Kager <mail@davykager.nl>
|
||||
* License: LGPLv3
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace DavyKager {
|
||||
|
||||
public sealed class Tolk {
|
||||
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
|
||||
private static extern void Tolk_Load();
|
||||
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
|
||||
[return: MarshalAs(UnmanagedType.I1)]
|
||||
private static extern bool Tolk_IsLoaded();
|
||||
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
|
||||
private static extern void Tolk_Unload();
|
||||
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
|
||||
private static extern void Tolk_TrySAPI(
|
||||
[MarshalAs(UnmanagedType.I1)]bool trySAPI);
|
||||
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
|
||||
private static extern void Tolk_PreferSAPI(
|
||||
[MarshalAs(UnmanagedType.I1)]bool preferSAPI);
|
||||
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
|
||||
private static extern IntPtr Tolk_DetectScreenReader();
|
||||
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
|
||||
[return: MarshalAs(UnmanagedType.I1)]
|
||||
private static extern bool Tolk_HasSpeech();
|
||||
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
|
||||
[return: MarshalAs(UnmanagedType.I1)]
|
||||
private static extern bool Tolk_HasBraille();
|
||||
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
|
||||
[return: MarshalAs(UnmanagedType.I1)]
|
||||
private static extern bool Tolk_Output(
|
||||
[MarshalAs(UnmanagedType.LPWStr)]String str,
|
||||
[MarshalAs(UnmanagedType.I1)]bool interrupt);
|
||||
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
|
||||
[return: MarshalAs(UnmanagedType.I1)]
|
||||
private static extern bool Tolk_Speak(
|
||||
[MarshalAs(UnmanagedType.LPWStr)]String str,
|
||||
[MarshalAs(UnmanagedType.I1)]bool interrupt);
|
||||
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
|
||||
[return: MarshalAs(UnmanagedType.I1)]
|
||||
private static extern bool Tolk_Braille(
|
||||
[MarshalAs(UnmanagedType.LPWStr)]String str);
|
||||
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
|
||||
[return: MarshalAs(UnmanagedType.I1)]
|
||||
private static extern bool Tolk_IsSpeaking();
|
||||
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
|
||||
[return: MarshalAs(UnmanagedType.I1)]
|
||||
private static extern bool Tolk_Silence();
|
||||
|
||||
// Prevent construction
|
||||
private Tolk() {}
|
||||
|
||||
public static void Load() { Tolk_Load(); }
|
||||
public static bool IsLoaded() { return Tolk_IsLoaded(); }
|
||||
public static void Unload() { Tolk_Unload(); }
|
||||
public static void TrySAPI(bool trySAPI) { Tolk_TrySAPI(trySAPI); }
|
||||
public static void PreferSAPI(bool preferSAPI) { Tolk_PreferSAPI(preferSAPI); }
|
||||
// Prevent the marshaller from freeing the unmanaged string
|
||||
public static String DetectScreenReader() { return Marshal.PtrToStringUni(Tolk_DetectScreenReader()); }
|
||||
public static bool HasSpeech() { return Tolk_HasSpeech(); }
|
||||
public static bool HasBraille() { return Tolk_HasBraille(); }
|
||||
public static bool Output(String str, bool interrupt = false) { return Tolk_Output(str, interrupt); }
|
||||
public static bool Speak(String str, bool interrupt = false) { return Tolk_Speak(str, interrupt); }
|
||||
public static bool Braille(String str) { return Tolk_Braille(str); }
|
||||
public static bool IsSpeaking() { return Tolk_IsSpeaking(); }
|
||||
public static bool Silence() { return Tolk_Silence(); }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<assemblyIdentity version="1.0.0.0" name="EvilSatellites"/>
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||
<security>
|
||||
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- A list of the Windows versions that this application has been tested on and is
|
||||
is designed to work with. Uncomment the appropriate elements and Windows will
|
||||
automatically selected the most compatible environment. -->
|
||||
|
||||
<!-- Windows Vista -->
|
||||
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
|
||||
|
||||
<!-- Windows 7 -->
|
||||
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
|
||||
|
||||
<!-- Windows 8 -->
|
||||
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
|
||||
|
||||
<!-- Windows 8.1 -->
|
||||
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
|
||||
|
||||
<!-- Windows 10 -->
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
|
||||
|
||||
</application>
|
||||
</compatibility>
|
||||
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/pm</dpiAware>
|
||||
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">permonitorv2,permonitor</dpiAwareness>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
|
||||
</assembly>
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a3b0d5e043ebed222700820ce1c55d9c17dca63818f3d1b5b1e2d1902329a9b7
|
||||
size 1823142
|
||||
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:108d766249e2f51f330b0284e575a1d64936414cad0e4446f1bdf30a72e5a730
|
||||
size 2089826
|
||||
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8d47cb047800cfbd9189404b46991b7e2c5d1623a37cb1d235e34b5389d90cbd
|
||||
size 2778404
|
||||
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b77babc3153c25d827a353c6f8acccee57b562364dd33ddfbbaea4afba9ed83c
|
||||
size 3146198
|
||||
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:21fe42fb9aef435fd94bfab29cb5792ad219231c28ab02a589e0d75cc453ef9a
|
||||
size 430184
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d5297bd23f5a4dfe62b10beb547652327ee3f7a29439c3996b73e223ffc3c250
|
||||
size 442472
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9e9878ae9f183394009ed4a6a5878b90ae598543e7b7224d2a21f36a5a500f71
|
||||
size 460904
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:cada75a6d88118b4f6c0e1dfc052b1b06725a0857b31579bc9055b95415a2fa6
|
||||
size 409704
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0c0d917fd4ca24e134971cd127c235f34e9c50d496355f142ab821388b396bd2
|
||||
size 395368
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:985a5aaa3fd5b4f80e46790c3150cabcf51e0e2e247562bfe6e0c8d64408b077
|
||||
size 424040
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:47a7e2649bd0513dd8a826d174d43aa2ab58f1bf3e04acb5eb312af699e6eb00
|
||||
size 403560
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3ac9aa00ee03ec73be6375ca2fa46ecdbd8185f9b63d4e05467d4cb7466c18dd
|
||||
size 376434
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:25cdd9401f3059b2851050a494c2718b495ef6d8c2626b84f1d29e97def593ad
|
||||
size 407390
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e45bd6b6bd8eff497a9863c01849b112c02da735d46f15f52266cfa14f53ade8
|
||||
size 415110
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:64a559e9c6f2f4d5956a8e6a112307e44252419e819457e2748a5f0674ac466a
|
||||
size 375742
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3411f05051f25c5dc772ec614dbc81dfb19ae59fdf63dfd6fa270c7d9f069532
|
||||
size 356302
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5f0d2068aabda1451680aeb9d273da58a512c1aa079b1f1bbc3fcfc170682c87
|
||||
size 392542
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4903561d4ab046f2c51f032b0114470a49602eeee4fc0abe39b368600be3dd8c
|
||||
size 428570
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ac884f3ce0ba07ded98cf14039e1f0fda8d316ed03d7d886b8f91733628bd90e
|
||||
size 133132
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ba3e5e7c9e4adcd0fa26c5aab2c0efdd0d92a6cba19c6b19a785cfd1e231a44d
|
||||
size 136780
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9dcc26bc353473406a5ce1d152bf104a1b97dc4f776ed836eee3601f41737e86
|
||||
size 112558
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6866924e3ce77bb73a8fe78300e7f88da22aab220fb856d82a0f2b063dab8f63
|
||||
size 119506
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:53b4150409ec140af2fa72ef99ac8615f11b63e35210b71ff02c8787011201eb
|
||||
size 163972
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5295e17040ed2ecb7f5fb635b6f04b7c32b482e0f20ef0a6974d55d30270b6fb
|
||||
size 258256
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4ce5d862af7ce41f1e7f524d526eeb7a057752cff9d251dfeb996e883a01a15a
|
||||
size 159700
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:463649735897c6d569f49c16120dab2ccb8c3ea76cfd3e106f4995e9c04f383e
|
||||
size 182318
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ef4df01030cec6911bea57abaa1640b6e9b2424ad4bf83ae617637563fa16711
|
||||
size 194922
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c86f95b9949c69d9e44b9be77907874b7cd01828e4f9b6ca89d1526613a35752
|
||||
size 136638
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ba81baac2f16a5713539bc943f489dcc0177e5d6c7abf5a8fc54631e31e1721a
|
||||
size 155694
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ea56d4c7938807206e7a8b16735c78a68040b64516731755e279533c82de12d1
|
||||
size 110674
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fe5fbe9068b7ac7d5c869d1c0712f8001bc9c84cd5635c37c23b4c28b6f954e5
|
||||
size 159958
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:21478a92c07b037d7dc9c906f75dddc9953e98d46272cf5eeabfc5694b2eccbf
|
||||
size 226634
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:30f154c29ee01c7e2294c660a2736709ec088df715e0d5e68c90fa317f7fa2b8
|
||||
size 245864
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3c595557f6dd08080a7e7f3595d5fece1e0bf7d57553f6ad552423746ff941bf
|
||||
size 335976
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d964bd7051412c0901af58c8ea3782e6907c2e0294eaca37028620dfe645212c
|
||||
size 286824
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f1c83dcb75dcb70eaab586c6e3acee452b5e4aadef80e06b189088f4b4d127f7
|
||||
size 176232
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1be3e931b1529a0caa4aaf27d378a93ec03a57884f4bb16dcd5d7aa342730c20
|
||||
size 176232
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9b81d6ee3c61e33f527cf61a23dcdaa1fdfb2c4cfa086e4e1d789b8332b57462
|
||||
size 329832
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:938528842f460b8ab3d4303fbacedc6d0906f4856f1ae962e8891cf0535ec467
|
||||
size 327784
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:eecd0d8694ed11b415a0f41d18a99f11e0ec1523b85678665024c8b04786bc48
|
||||
size 212762
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d6eea592be801c4d6adcf55abaf7fbb0a11671a3c0cae4e5147d4ffdb708e2ea
|
||||
size 299542
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a2278def2f68dac34f77fc4c1e4246fc4796e50c8f664b86aa74293ff5b5bfdc
|
||||
size 247750
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6debce92fda2d74e40f0c981541ae156e148b74733bf50263b51bab81e27e832
|
||||
size 153978
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1718771fcc5d4593643f70567e5a340595d33c70d1e8ccc35bc72c5676975d70
|
||||
size 149126
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:de432f13581026c0052f91be9541da6c756e0013b6fa3f9426a7fea3b6b67c73
|
||||
size 289214
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:38e69ba396f02a96e8838b4ac5da5ffd861b48d917a45703636d95fe1d0a1709
|
||||
size 191394
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2567de029eb287cfd777662d89cd5531cdf56248e6f0bfcdf8d8726e9821f0d5
|
||||
size 490542
|
||||
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e9b293467138400fbafc19e183c6eb4cb4d03611287b9bf23b35adc227687656
|
||||
size 172900
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3f4637aff4bbdd26d1ca41fa1b704263b37651d6fb4a77f3626c5ff08ac4fe46
|
||||
size 232174
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f48f8136ab47a111b973ccf3ed73da21078e3f74ef3d603f2f2f60de96141572
|
||||
size 288622
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ebdfdcb5cbf5ae1b0795834677ea4dbd81cd8a09b2a6cd85dbe23e1d401026ea
|
||||
size 162802
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:46ff473e285e54ee161c3ec06c875538942e8b20618f3bc661cdf3bc09dcb7cf
|
||||
size 94946
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ef1f76f324d04589b4bb1feeca156a9a14edb0bcaa27381c67a895b438166b16
|
||||
size 140882
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:71d4b0dd223f057255bc3414ed110736b680399d90fc33eb2d517dfb888b74fd
|
||||
size 170690
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8c552aba8efff391a3f28325ac1ea091fab9e351c10adfc84a71acb840776747
|
||||
size 180438
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:25a2f90e69de29e0347a8eef796af6558e0ee6f93a9bb75d114d95a1468623e6
|
||||
size 151142
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:337123c8d25333c158e719e809d2a934d884df4f8c047d02625e53d6a26230af
|
||||
size 654142
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:27bb2c5f1b6708c5987fbde107337e5830b2fc15f741c5373a28e2201b715b88
|
||||
size 1051854
|
||||
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d9900107ff88f63ee5e8d68ef1cf038f47dcdcae3e252bf9b95df695ad1fb955
|
||||
size 12536
|
||||
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:81f41d5e74d05d442d33844e18ae048abda911f846170511bbdac06d747a2bb2
|
||||
size 40278
|
||||
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:42b59d004164a9851701bbc43435f6380caa28a6c5bda39dffbb6908215ba16d
|
||||
size 24596
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d34d6dd7dddd80cfd4a20e0729644b5b4d76eb25177239d0600850ce75d30a9b
|
||||
size 182148
|
||||
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:07cc958b1de51f624133aba86181fdcadde2fde9d12b0c16f7feac4bdf29fb94
|
||||
size 8512
|
||||
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:031fcd549601d22afcb4c661ec02a5244fad941ad181b62c73f2273268e5937b
|
||||
size 21686
|
||||
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:78e61118c6504226fefbdbf1f24c9ec4f5dc8d983ee520206fed0566e23c17f5
|
||||
size 119526
|
||||
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user