diff --git a/Milky Way/Assets/Animations/MainMenu.controller b/Milky Way/Assets/Animations/MainMenu.controller
deleted file mode 100644
index d7c8cf3..0000000
Binary files a/Milky Way/Assets/Animations/MainMenu.controller and /dev/null differ
diff --git a/Milky Way/Assets/Animations/MainMenuEmpty.anim b/Milky Way/Assets/Animations/MainMenuEmpty.anim
deleted file mode 100644
index 4afedde..0000000
Binary files a/Milky Way/Assets/Animations/MainMenuEmpty.anim and /dev/null differ
diff --git a/Milky Way/Assets/Animations/MainMenuOpen.anim b/Milky Way/Assets/Animations/MainMenuOpen.anim
deleted file mode 100644
index 9a8a535..0000000
Binary files a/Milky Way/Assets/Animations/MainMenuOpen.anim and /dev/null differ
diff --git a/Milky Way/Assets/Animations/MenuAnimation.controller b/Milky Way/Assets/Animations/MenuAnimation.controller
deleted file mode 100644
index dbeb544..0000000
Binary files a/Milky Way/Assets/Animations/MenuAnimation.controller and /dev/null differ
diff --git a/Milky Way/Assets/Editor.meta b/Milky Way/Assets/Editor.meta
new file mode 100644
index 0000000..ab61c4b
--- /dev/null
+++ b/Milky Way/Assets/Editor.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 27bbe120a2e03a84c90539658ae5dd32
+folderAsset: yes
+timeCreated: 1518626376
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Editor/Menu.meta b/Milky Way/Assets/Editor/Menu.meta
new file mode 100644
index 0000000..d866387
--- /dev/null
+++ b/Milky Way/Assets/Editor/Menu.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: f18abd112c45161458ad5cdedfcf4916
+folderAsset: yes
+timeCreated: 1518626376
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Editor/Menu/Find.meta b/Milky Way/Assets/Editor/Menu/Find.meta
new file mode 100644
index 0000000..a5ac191
--- /dev/null
+++ b/Milky Way/Assets/Editor/Menu/Find.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 50960bd8ad1471f40b358962ce5cf6ca
+folderAsset: yes
+timeCreated: 1518626376
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Editor/Menu/Find/FindMenu.cs b/Milky Way/Assets/Editor/Menu/Find/FindMenu.cs
new file mode 100644
index 0000000..6e621e3
--- /dev/null
+++ b/Milky Way/Assets/Editor/Menu/Find/FindMenu.cs
@@ -0,0 +1,528 @@
+// Unity
+using UnityEngine;
+
+// System
+using System.Linq;
+using System.Collections.Generic;
+
+namespace UnityEditor
+{
+ ///
+ /// Implements menu options to help finding objects and prefabs with certain properties.
+ ///
+ public sealed class FindMenu : EditorWindow
+{
+ #region [Statics and Constants]
+
+ #region [Menu Paths]
+ ///
+ /// The generic menu path.
+ ///
+ private const string MenuPath = "Custom Tools/Find/";
+ #endregion
+
+ #region [Messages]
+
+ #region [Objects]
+ ///
+ /// The found objects with tag message.
+ ///
+ private const string FoundObjectsWithTag = "Found {0} objects with the {1} tag in the scene.";
+ ///
+ /// The found objects with layer message.
+ ///
+ private const string FoundObjectsWithLayer = "Found {0} objects with the {1} layer in the scene.";
+ ///
+ /// The found objects with component message.
+ ///
+ private const string FoundObjectsWithComponent = "Found {0} objects with the {1} component ({2} components) in the scene.";
+ ///
+ /// The found objects with missing component message.
+ ///
+ private const string FoundObjectsWithMissingComponents = "Found {0} objects with missing components ({1} missing components) in the scene.";
+
+ ///
+ /// The object with missing component message.
+ ///
+ private const string ObjectWithTag = "The object {0} has the tag {1}.";
+ ///
+ /// The object with missing component message.
+ ///
+ private const string ObjectWithLayer = "The object {0} has the layer {1}.";
+ ///
+ /// The object with missing component message.
+ ///
+ private const string ObjectWithComponent = "The object {0} has the component {1} at the following position: {2}.";
+ ///
+ /// The object with missing component message.
+ ///
+ private const string ObjectWithMissingComponent = "The object {0} is missing a component at the following position: {1}.";
+ #endregion
+
+ #region [Prefabs]
+ ///
+ /// The search pattern we use to find .prefab files.
+ ///
+ private const string PREFAB_FILE_SEARCH_PATTERN = "t:Prefab";
+ ///
+ /// The format string for the searching progress bar title.
+ ///
+ private const string PROGRESS_BAR_TITLE_FORMAT = "Searching for any prefabs with a {0} Component!";
+ ///
+ /// The format string for the searching progress bar message.
+ ///
+ private const string PROGRESS_BAR_MESSAGE_FORMAT = "Searching prefab ({0}/{1})";
+ ///
+ /// The format string for when we get a very unlikely error case.
+ ///
+ private const string ERROR_MESSAGE_FORMAT = "{0} encountered an unexptected error! Could not parse the System.Type from the script asset!";
+ ///
+ /// The format string we will use to display when we do not find any prefabs which have the specified component.
+ ///
+ private const string NOT_FOUND_MESSAGE_FORMAT = "Did not find any prefabs which had a {0} Component attached!";
+ ///
+ /// The format string we will use when we have found results and want to display the count to the user.
+ ///
+ private const string SUCCESS_MESSAGE_FORMAT = "Found {0} prefabs with an attached -{1}- Component!";
+ #endregion
+
+ #endregion
+
+ #endregion
+
+ #region [Methods] Find
+ ///
+ /// Finds the objects with a specific tag.
+ ///
+ [MenuItem(MenuPath + "Objects (with tag)", false, 10)]
+ public static void FindObjectsWithTag()
+{
+ // Create the window
+ ComboBoxWindow window = (ComboBoxWindow)GetWindow(typeof(ComboBoxWindow));
+ window.Initialize("Find Tag", "Tag:", UnityEditorInternal.InternalEditorUtility.tags, new ComboBoxWindow.OnClose(FindObjectsWithTag));
+ window.position = new Rect(Screen.width / 2, Screen.height / 2, 250, 150);
+ window.Show();
+ }
+
+ ///
+ /// Finds the objects with a specific layer.
+ ///
+ [MenuItem(MenuPath + "Objects (with layer)", false, 11)]
+ public static void FindObjectsWithLayer()
+{
+ // Create the window
+ ComboBoxWindow window = (ComboBoxWindow)GetWindow(typeof(ComboBoxWindow));
+ window.Initialize("Find Layer", "Layer:", UnityEditorInternal.InternalEditorUtility.layers, new ComboBoxWindow.OnClose(FindObjectsWithLayer));
+ window.position = new Rect(Screen.width / 2, Screen.height / 2, 250, 150);
+ window.Show();
+ }
+
+ ///
+ /// Finds the objects with the given component.
+ ///
+ [MenuItem(MenuPath + "Objects (with component)", false, 12)]
+ public static void FindObjectsWithComponent()
+{
+ // Create the window
+ TextBoxWindow window = (TextBoxWindow)GetWindow(typeof(TextBoxWindow));
+ window.Initialize("Find Component", "Component:", new TextBoxWindow.OnClose(FindObjectsWithComponent));
+ window.position = new Rect(Screen.width / 2, Screen.height / 2, 250, 150);
+ window.Show();
+ }
+
+ ///
+ /// Finds the objects with missing components
+ ///
+ [MenuItem(MenuPath + "Objects (with missing components)", false, 13)]
+ public static void FindObjectsWithMissingComponents()
+{
+ FindMissingComponents();
+ }
+
+ ///
+ /// Finds the prefabs with a specific component.
+ ///
+ [MenuItem(MenuPath + "Prefabs (with component)", false, 21)]
+ public static void FindPrefabsWithComponents()
+{
+ // TODO
+ }
+
+ ///
+ /// Finds the prefabs with a specific component.
+ ///
+ [MenuItem(MenuPath + "Prefabs (with missing component)", false, 22)]
+ public static void FindPrefabsWithMissingComponents()
+{
+ // TODO
+ }
+
+ #region Methods
+ ///
+ /// Our main function. When the user has a valid MonoBehaviour asset selected,
+ /// they can right click, and choose the option specified by our MenuItem attribute.
+ /// That will call this function!
+ ///
+ static void Find()
+{ //After testing it seems that Undo automatically records Selection changes.
+ //So I am not manually registering any Undo, since all this really does is modify the
+ //Selection.activeIds.
+
+ //Get the System.Type of the Selection.activeObject.
+ var selectedType = GetSelectedType();
+
+ //Sanity, shouldn't ever happen but lets be safe.
+ if(selectedType == null)
+{ Debug.LogErrorFormat(ERROR_MESSAGE_FORMAT, typeof(FindMenu).Name);
+ return;
+ }
+
+ //Get the path to every prefab in the project.
+ var allMatches = GetPrefabsWhoHaveScript(selectedType).ToArray();
+
+ //Sanity, bail if we got no results.
+ if(allMatches == null || allMatches.Length == 0)
+{ DisplayNoResultsFoundMessage(selectedType);
+ return;
+ }
+
+ //Display the results to the user.
+ HighlightResults(allMatches, selectedType);
+ }
+
+ ///
+ /// Our validation function, will only allow the user to select the MenuItem
+ /// if a MonoScript is selected.
+ ///
+ [MenuItem("Assets/Find References in Prefabs", true)]
+ static bool IsValidScriptSelected()
+{ //We only know how to find MonoBehaviours.
+ //Bail if the selected script did not derive from MonoBehaviour.
+ return IsMonoBehaviour(GetSelectedType());
+ }
+
+ ///
+ /// Inspect the current activeObject Selection. Returns the Type name of the selected script.
+ ///
+ ///
+ static System.Type GetSelectedType()
+{ //Cast the current selection to a MonoScript (Unitys representation of a C#, JS or Boo file)
+ var currentSelection = Selection.activeObject as MonoScript;
+
+ //Our currentSelection shouldnt be null, our IsScriptSelected function should
+ //prevent Unity from allowing us to run on a non-MonoScript object
+ //But lets be safe.
+ if(currentSelection == null)
+{ //If the cast failed then reutrn Empty so we know it failed.
+ return null;
+ }
+
+ //The selected object was indeed a script. Return the class name
+ return currentSelection.GetClass();
+ }
+
+ ///
+ /// Just because a script file was selected, it doesn't mean that the script itself
+ /// was a MonoBehaviour, it could be lots of other things. We can only search prefabs for
+ /// scripts which derive from MonoBehavior
+ ///
+ private static bool IsMonoBehaviour(System.Type selectedType)
+{ //Sanity
+ if(selectedType == null)
+{ return false;
+ }
+
+ //Ensure that the selectedType derives from MonoBehaviour.
+ return typeof(MonoBehaviour).IsAssignableFrom(selectedType);
+ }
+
+ ///
+ /// Log to the Console that we didn't find any results.
+ ///
+ private static void DisplayNoResultsFoundMessage(System.Type selectedType)
+{ Debug.LogFormat(NOT_FOUND_MESSAGE_FORMAT, selectedType.Name);
+ }
+
+ ///
+ /// Search all prefabs in the project and return any which have the specified script attached.
+ ///
+ /// The System.Type to search for (must derive from MonoBehaviour)
+ /// The Object id for each prefab who has the script component attached.
+ private static IEnumerable GetPrefabsWhoHaveScript(System.Type selectedType)
+{ //Get all of the prefabs in the project.
+ var allPrefabs = GetPathToEachPrefabInProject();
+
+ float totalPrefabCount = allPrefabs.Count();
+ float currentPrefab = 1;
+
+ //Iterate over all of the prefabs in the project.
+ foreach(var prefabPath in allPrefabs)
+{ //Search could take a long time in a huge project, display a cancelable progress bar to the user in case they get bored.
+ if(EditorUtility.DisplayCancelableProgressBar(string.Format(PROGRESS_BAR_TITLE_FORMAT, selectedType.Name),
+ string.Format(PROGRESS_BAR_MESSAGE_FORMAT, currentPrefab, totalPrefabCount),
+ currentPrefab / totalPrefabCount))
+{ //User canceled! Clear the progress bar and return empty!
+ EditorUtility.ClearProgressBar();
+ yield break;
+ }
+
+ //Use the AssetDatabase to load the prefab.
+ var prefab = AssetDatabase.LoadAssetAtPath(prefabPath) as GameObject;
+
+ //See if the prefab has the component.
+ if(PrefabHasScript(prefab, selectedType))
+{ //It did! Return the instance id of this prefab.
+ yield return prefab.GetInstanceID();
+ }
+
+ //Increment cound so progressbar displays correctly.
+ currentPrefab++;
+ }
+
+ //Ensure we clear the progress bar after we successfully complete the entire search.
+ EditorUtility.ClearProgressBar();
+ }
+
+ ///
+ /// Return the AssetDatabase path to each .prefab in the project.
+ ///
+ private static IEnumerable GetPathToEachPrefabInProject()
+{ foreach(var prefabGUID in AssetDatabase.FindAssets(PREFAB_FILE_SEARCH_PATTERN))
+{ yield return AssetDatabase.GUIDToAssetPath(prefabGUID);
+ }
+ }
+
+ ///
+ /// Search the specified prefabs hierarchy and see if it has the selectedType attached.
+ ///
+ public static bool PrefabHasScript(GameObject prefab, System.Type selectedType)
+{ //Sanity
+ if(prefab == null)
+{ return false;
+ }
+
+ //Now that the prefab is loaded we can see if it has our script component attached.
+ //Search on the root first instead of searching in children, this could provide
+ //a bit of a speedup for big hierarchies.
+ var allComponents = prefab.GetComponents(selectedType);
+
+ if(allComponents.Length != 0)
+{ return true;
+ }
+ else
+{ //We didn't find the component on the root, search in children..
+ allComponents = prefab.GetComponentsInChildren(selectedType, true);
+
+ if(allComponents != null && allComponents.Length > 0)
+{ //One of the children had the component, return the id of root.
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ ///
+ /// Make the Project view display the updated selection.
+ ///
+ private static void HighlightResults(int[] ids, System.Type selectedType)
+{ //Update the selection so the user could drag them into the scene if needed.
+ Selection.instanceIDs = ids;
+ //Tried messing around with internal calls via reflection, but the results were not consistent.
+ //Until unity exposes a way to highlight multiselection in the project view, this is the best we can do :(
+ EditorGUIUtility.PingObject(Selection.instanceIDs.Last());
+
+ //DISABLED THIS TO REDUCE CONSOLE CLUTTER, FEEL FREE TO UNCOMMENT IF YOU LIKE IT!
+ //Log the count to the console.
+ //Debug.LogFormat(SUCCESS_MESSAGE_FORMAT, ids.Length, selectedType.Name);
+ }
+ #endregion Methods
+
+ ///
+ /// Finds the objects with the given tag name.
+ ///
+ ///
+ /// The tag name.
+ private static void FindObjectsWithTag(string tagName)
+{
+ // Initialize the counters
+ int gameObjectsWithTag = 0;
+
+ // Retrieve the selected game-objects
+ GameObject[] gameObjects = GetSelectedGameObjects();
+
+ foreach(GameObject gameObject in gameObjects)
+{
+ if(gameObject.CompareTag(tagName) == true)
+{
+ // Update the counter
+ gameObjectsWithTag++;
+
+ // Add a confirmation message
+ Debug.Log(string.Format(ObjectWithTag, GetGameObjectName(gameObject), tagName));
+ }
+ }
+
+ // Add a confirmation message
+ Debug.Log(string.Format(FoundObjectsWithTag, gameObjectsWithTag, tagName));
+ }
+
+ ///
+ /// Finds the objects with the given layer name.
+ ///
+ ///
+ /// The layer name.
+ private static void FindObjectsWithLayer(string layerName)
+{
+ // Initialize the counters
+ int gameObjectsWithLayer = 0;
+
+ // Retrieve the selected game-objects
+ GameObject[] gameObjects = GetSelectedGameObjects();
+
+ foreach(GameObject gameObject in gameObjects)
+{
+ if(gameObject.layer == LayerMask.NameToLayer(layerName) == true)
+{
+ // Update the counter
+ gameObjectsWithLayer++;
+
+ // Add a confirmation message
+ Debug.Log(string.Format(ObjectWithLayer, GetGameObjectName(gameObject), layerName));
+ }
+ }
+
+ // Add a confirmation message
+ Debug.Log(string.Format(FoundObjectsWithLayer, gameObjectsWithLayer, layerName));
+ }
+
+ ///
+ /// Finds the objects with the given component name.
+ ///
+ ///
+ /// The component name.
+ private static void FindObjectsWithComponent(string componentName)
+{
+ // Initialize the counters
+ int componentCounter = 0;
+ int gameObjectsWithComponent = 0;
+
+ // Retrieve the selected game-objects
+ GameObject[] gameObjects = GetSelectedGameObjects();
+
+ foreach(GameObject gameObject in gameObjects)
+{
+ // Retrieve the components from the game-object
+ Component[] components = gameObject.GetComponents();
+
+ // Check whether this game-object has the component
+ bool foundComponents = false;
+
+ // Find the components with the given name
+ for(int position = 0; position < components.Length; position++)
+{
+ if(components[position] != null && components[position].GetType().Name.Contains(componentName))
+{
+ // Update the counter
+ componentCounter++;
+ // Update the flag
+ foundComponents = true;
+
+ // Add a confirmation message
+ Debug.Log(string.Format(ObjectWithComponent, GetGameObjectName(gameObject), components[position].GetType().Name, position));
+ }
+ }
+
+ // Update the counter
+ if(foundComponents == true)
+ gameObjectsWithComponent++;
+ }
+
+ // Add a confirmation message
+ Debug.Log(string.Format(FoundObjectsWithComponent, gameObjectsWithComponent, componentName, componentCounter));
+ }
+
+ ///
+ /// Finds the objects with missing components.
+ ///
+ private static void FindMissingComponents()
+{
+ // Initialize the counters
+ int missingComponentCounter = 0;
+ int gameObjectsWithMissingComponents = 0;
+
+ // Retrieve the selected game-objects
+ GameObject[] gameObjects = GetSelectedGameObjects();
+
+ foreach(GameObject gameObject in gameObjects)
+{
+ // Retrieve the components from the game-object
+ Component[] components = gameObject.GetComponents();
+
+ // Check whether this game-object is missing anything
+ bool foundMissingComponents = false;
+
+ for(int position = 0; position < components.Length; position++)
+{
+ if(components[position] == null)
+{
+ // Update the counter
+ missingComponentCounter++;
+ // Update the flag
+ foundMissingComponents = true;
+
+ // Add a confirmation message
+ Debug.Log(string.Format(ObjectWithMissingComponent, GetGameObjectName(gameObject), position));
+ }
+ }
+
+ // Update the counter
+ if(foundMissingComponents == true)
+ gameObjectsWithMissingComponents++;
+ }
+
+ // Add a confirmation message
+ Debug.Log(string.Format(FoundObjectsWithMissingComponents, gameObjectsWithMissingComponents, missingComponentCounter));
+ }
+ #endregion
+
+ #region [Methods] Auxiliar
+ ///
+ /// Gets the selected game-objects.
+ ///
+ private static GameObject[] GetSelectedGameObjects()
+{
+ GameObject[] gameObjects = null;
+
+ // Retrieve the game-objects
+ if(Selection.gameObjects.Length != 0)
+ gameObjects = Selection.gameObjects;
+ else
+ gameObjects = FindObjectsOfType(typeof(GameObject)) as GameObject[];
+
+ return gameObjects;
+ }
+
+ ///
+ /// Gets the full name of the game-object.
+ ///
+ ///
+ /// The game-object.
+ private static string GetGameObjectName(GameObject gameObject)
+{
+ // Build the objects full name
+ string name = gameObject.transform.name;
+
+ Transform transform = gameObject.transform.parent;
+
+ while(transform != null)
+{
+ name = transform.name + "/" + name;
+ transform = transform.parent;
+ }
+
+ return name;
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/Menus/LaunchGame.cs.meta b/Milky Way/Assets/Editor/Menu/Find/FindMenu.cs.meta
similarity index 52%
rename from Milky Way/Assets/Scripts/Menus/LaunchGame.cs.meta
rename to Milky Way/Assets/Editor/Menu/Find/FindMenu.cs.meta
index 1a36f75..73a9dfc 100644
--- a/Milky Way/Assets/Scripts/Menus/LaunchGame.cs.meta
+++ b/Milky Way/Assets/Editor/Menu/Find/FindMenu.cs.meta
@@ -1,8 +1,12 @@
fileFormatVersion: 2
-guid: e75f70f7678481642a8b2a6fe269bc71
+guid: d94b84d2ce7247e49ab5c07fdb621fc0
+timeCreated: 1485276805
+licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Editor/Menu/Find/Windows.meta b/Milky Way/Assets/Editor/Menu/Find/Windows.meta
new file mode 100644
index 0000000..5ee8d91
--- /dev/null
+++ b/Milky Way/Assets/Editor/Menu/Find/Windows.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 443db574ce6091f408803549e119bd3d
+folderAsset: yes
+timeCreated: 1514304383
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Editor/Menu/Find/Windows/ComboBoxWindow.cs b/Milky Way/Assets/Editor/Menu/Find/Windows/ComboBoxWindow.cs
new file mode 100644
index 0000000..c580f50
--- /dev/null
+++ b/Milky Way/Assets/Editor/Menu/Find/Windows/ComboBoxWindow.cs
@@ -0,0 +1,96 @@
+// Unity
+using UnityEngine;
+using UnityEditor;
+
+namespace UnityEditor
+{
+ ///
+ /// Implements a combo-box input pop-up window.
+ ///
+ ///
+ ///
+ public sealed class ComboBoxWindow : EditorWindow
+{
+ #region [Attributes] Window
+ ///
+ /// Gets the window title.
+ ///
+ public string windowTitle { get; private set; }
+ ///
+ /// Gets the combo box label.
+ ///
+ public string comboBoxLabel { get; private set; }
+ ///
+ /// Gets the combo box option.
+ ///
+ public int comboBoxOption { get; private set; }
+ ///
+ /// Gets the combo box options.
+ ///
+ public string[] comboBoxOptions { get; private set; }
+ #endregion
+
+ #region [Attributes] Delegate
+ ///
+ /// Invoked when the window is closed.
+ ///
+ ///
+ /// The option selected.
+ public delegate void OnClose(string option);
+
+ ///
+ /// Gets or sets the on-close callback.
+ ///
+ private OnClose onCloseCallback { get; set; }
+ #endregion
+
+ #region [Methods] Window
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ ///
+ /// The window title.
+ /// The combo box label.
+ /// The combo box options.
+ /// The on close callback.
+ public void Initialize(string windowTitle, string comboBoxLabel, string[] comboBoxOptions, OnClose onCloseCallback)
+{
+ // Initialize the window
+ this.windowTitle = windowTitle;
+ this.comboBoxLabel = comboBoxLabel;
+ this.comboBoxOptions = comboBoxOptions;
+
+ // Initialize the callback
+ this.onCloseCallback = onCloseCallback;
+ }
+
+ ///
+ /// Called when the [GUI] is drawn.
+ ///
+ public void OnGUI()
+{
+ // Update the title
+ this.titleContent.text = this.windowTitle;
+
+ // Create the label
+ EditorGUILayout.LabelField(this.comboBoxLabel, EditorStyles.boldLabel);
+ // Small space
+ EditorGUILayout.Space();
+ // Create the text box
+ this.comboBoxOption = EditorGUILayout.Popup(this.comboBoxOption, this.comboBoxOptions, EditorStyles.foldout);
+ // Remaining space
+ GUILayout.FlexibleSpace();
+
+ // Create the find button
+ if( (GUILayout.Button(this.windowTitle, EditorStyles.miniButtonMid)) ||
+ (Event.current != null && Event.current.isKey && (Event.current.keyCode == KeyCode.End || Event.current.keyCode == KeyCode.KeypadEnter)))
+{
+ this.Close();
+
+ // Trigger the delegate
+ this.onCloseCallback(this.comboBoxOptions[this.comboBoxOption]);
+ }
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/PowerUp/HomingRocketPowerUp.cs.meta b/Milky Way/Assets/Editor/Menu/Find/Windows/ComboBoxWindow.cs.meta
similarity index 52%
rename from Milky Way/Assets/Scripts/PowerUp/HomingRocketPowerUp.cs.meta
rename to Milky Way/Assets/Editor/Menu/Find/Windows/ComboBoxWindow.cs.meta
index a749447..52f6b15 100644
--- a/Milky Way/Assets/Scripts/PowerUp/HomingRocketPowerUp.cs.meta
+++ b/Milky Way/Assets/Editor/Menu/Find/Windows/ComboBoxWindow.cs.meta
@@ -1,8 +1,12 @@
fileFormatVersion: 2
-guid: 21f13f79e2413784cbaed7adcfe591ef
+guid: eb7d8cc98e75ff94795f216188758bc5
+timeCreated: 1514304383
+licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Editor/Menu/Find/Windows/TextBoxWindow.cs b/Milky Way/Assets/Editor/Menu/Find/Windows/TextBoxWindow.cs
new file mode 100644
index 0000000..c4f8ec6
--- /dev/null
+++ b/Milky Way/Assets/Editor/Menu/Find/Windows/TextBoxWindow.cs
@@ -0,0 +1,91 @@
+// Unity
+using UnityEngine;
+using UnityEditor;
+
+namespace UnityEditor
+{
+ ///
+ /// Implements a text-box input pop-up window.
+ ///
+ ///
+ ///
+ public sealed class TextBoxWindow : EditorWindow
+{
+ #region [Attributes] Window
+ ///
+ /// Gets the window title.
+ ///
+ public string windowTitle { get; private set; }
+ ///
+ /// Gets the text box label.
+ ///
+ public string textBoxLabel { get; private set; }
+ ///
+ /// Gets the text box text.
+ ///
+ public string textBoxText { get; private set; }
+ #endregion
+
+ #region [Attributes] Delegate
+ ///
+ /// Invoked when the window is closed.
+ ///
+ ///
+ /// The text selected.
+ public delegate void OnClose(string text);
+
+ ///
+ /// Gets or sets the on-close callback.
+ ///
+ private OnClose onCloseCallback { get; set; }
+ #endregion
+
+ #region [Methods] Window
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ ///
+ /// The window title.
+ /// The text box label.
+ /// The on close callback.
+ public void Initialize(string windowTitle, string textBoxLabel, OnClose onCloseCallback)
+{
+ // Initialize the window
+ this.windowTitle = windowTitle;
+ this.textBoxLabel = textBoxLabel;
+ this.textBoxText = string.Empty;
+
+ // Initialize the callback
+ this.onCloseCallback = onCloseCallback;
+ }
+
+ ///
+ /// Called when the [GUI] is drawn.
+ ///
+ public void OnGUI()
+{
+ // Update the title
+ this.titleContent.text = this.windowTitle;
+
+ // Create the label
+ EditorGUILayout.LabelField(this.textBoxLabel, EditorStyles.boldLabel);
+ // Small space
+ EditorGUILayout.Space();
+ // Create the text box
+ this.textBoxText = EditorGUILayout.TextField(this.textBoxText, EditorStyles.textField);
+ // Remaining space
+ GUILayout.FlexibleSpace();
+
+ // Create the find button
+ if( (GUILayout.Button(this.windowTitle, EditorStyles.miniButtonMid)) ||
+ (Event.current != null && Event.current.isKey && (Event.current.keyCode == KeyCode.End || Event.current.keyCode == KeyCode.KeypadEnter)))
+{
+ this.Close();
+
+ // Trigger the delegate
+ this.onCloseCallback(this.textBoxText);
+ }
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/PowerUp/HomingRocketPowerUpController.cs.meta b/Milky Way/Assets/Editor/Menu/Find/Windows/TextBoxWindow.cs.meta
similarity index 52%
rename from Milky Way/Assets/Scripts/PowerUp/HomingRocketPowerUpController.cs.meta
rename to Milky Way/Assets/Editor/Menu/Find/Windows/TextBoxWindow.cs.meta
index 5880756..bac494a 100644
--- a/Milky Way/Assets/Scripts/PowerUp/HomingRocketPowerUpController.cs.meta
+++ b/Milky Way/Assets/Editor/Menu/Find/Windows/TextBoxWindow.cs.meta
@@ -1,8 +1,12 @@
fileFormatVersion: 2
-guid: 5f0ed1bd4b2b6614cad57d2ffed7cd94
+guid: 52a37798a9006594d9af2a87bb4e51c8
+timeCreated: 1514304383
+licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Editor/Menu/Scripts.meta b/Milky Way/Assets/Editor/Menu/Scripts.meta
new file mode 100644
index 0000000..420220b
--- /dev/null
+++ b/Milky Way/Assets/Editor/Menu/Scripts.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 6150030839d3f9b499e6d61764cbed2c
+folderAsset: yes
+timeCreated: 1518626376
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Editor/Menu/Scripts/ScriptsMenu.cs b/Milky Way/Assets/Editor/Menu/Scripts/ScriptsMenu.cs
new file mode 100644
index 0000000..0dbe24f
--- /dev/null
+++ b/Milky Way/Assets/Editor/Menu/Scripts/ScriptsMenu.cs
@@ -0,0 +1,175 @@
+// Unity
+using UnityEngine;
+
+// System
+using System;
+using System.IO;
+using System.Collections.Generic;
+using System.Text.RegularExpressions;
+
+namespace UnityEditor
+{
+ ///
+ /// Implements menu options to convert script files (e.g. normalizing line endings).
+ ///
+ public static class ScriptsMenu
+ {
+ #region [Statics and Constants]
+
+ #region [Menu Paths]
+ ///
+ /// The generic menu path.
+ ///
+ private const string MenuPath = "Custom Tools/Scripts/";
+ #endregion
+
+ #region [Messages]
+
+ #region [Conversion]
+ ///
+ /// The title for the dialog shown when attempting the end of line conversion.
+ /// .
+ private const string EndOfLineConversionDialogTitle = "EOL Conversion to {0} Format";
+ ///
+ /// The body for the dialog shown when attempting the end of line conversion.
+ /// .
+ private const string EndOfLineConversionDialogBody =
+ @"This operation may potentially modify many files in the current project!
+ Hopefully you have backups of everything.
+ Are you sure you want to proceed?";
+ ///
+ /// The confirmation message after attempting the end of line conversion.
+ ///
+ private const string EndOfLineConversionConfirmationMessage = "Conversion skipped {0} " + "files and changed {1} files";
+ #endregion
+
+ #endregion
+
+ #region [Scripts]
+ ///
+ /// The file extensions considered for the end of line conversion.
+ ///
+ private static string[] ScriptExtensions = new string[]
+{ "*.txt",
+ "*.cs",
+ "*.js",
+ "*.boo",
+ "*.compute",
+ "*.shader",
+ "*.cginc",
+ "*.glsl",
+ "*.xml",
+ "*.xaml",
+ "*.json",
+ "*.inc",
+ "*.css",
+ "*.htm",
+ "*.html",
+ };
+ ///
+ /// The windows end of line string.
+ ///
+ private const string WindowsEndOfLine = "\r\n";
+ ///
+ /// The unix end of line string.
+ ///
+ private const string UnixEndOfLine = "\n";
+ #endregion
+
+ #endregion
+
+ #region [Methods] Scripts
+ ///
+ /// Converts the line endings to windows format.
+ ///
+ [MenuItem(MenuPath + "Convert to Windows Format")]
+ public static void ConvertLineEndingsToWindowsFormat()
+ {
+ ConvertLineEndings(false);
+ }
+
+ ///
+ /// Converts the line endings to unix format.
+ ///
+ [MenuItem(MenuPath + "Convert to Unix Format")]
+ public static void ConvertLineEndingsToUnixFormat()
+ {
+ ConvertLineEndings(true);
+ }
+
+ ///
+ /// Converts the line endings to the specified format.
+ ///
+ ///
+ /// if set to true [is unix format].
+ private static void ConvertLineEndings(bool unixFormat)
+ {
+ // Show the confirmation dialog
+ if(!EditorUtility.DisplayDialog(
+ string.Format(EndOfLineConversionDialogTitle, (unixFormat ? "Unix" : "Windows")),
+ EndOfLineConversionDialogBody,
+ "Yes", "No"))
+ {
+ return;
+ }
+
+ Regex regex = new Regex(@"(? changedFiles = new List();
+
+ StringComparison comparisonType = StringComparison.Ordinal;
+
+ // For each script extension
+ foreach(string fileExtension in ScriptExtensions)
+ {
+ // Retrieve all the files inside the assets folder with the current extension
+ string[] filenames = Directory.GetFiles(Application.dataPath, fileExtension, SearchOption.AllDirectories);
+
+ totalFileCount += filenames.Length;
+
+ // Update the script
+ foreach(string filename in filenames)
+ {
+ string originalText = File.ReadAllText(filename);
+ string changedText = regex.Replace(originalText, WindowsEndOfLine);
+
+ if(unixFormat)
+ changedText = changedText.Replace(WindowsEndOfLine, UnixEndOfLine);
+
+ bool isTextIdentical = string.Equals(changedText, originalText, comparisonType);
+
+ if(!isTextIdentical)
+ {
+ changedFiles.Add(filename);
+
+ File.WriteAllText(filename, changedText, System.Text.Encoding.UTF8);
+ }
+ }
+ }
+
+ int changedFileCount = changedFiles.Count;
+ int skippedFileCount = (totalFileCount - changedFileCount);
+
+ string message = string.Format(EndOfLineConversionConfirmationMessage, skippedFileCount, changedFileCount);
+
+ if(changedFileCount <= 0)
+ {
+ message += ".";
+ }
+ else
+ {
+ message += (":" + WindowsEndOfLine);
+ message += string.Join(WindowsEndOfLine, changedFiles.ToArray());
+ }
+
+ Debug.Log(message);
+
+ // Recompile the modified scripts.
+ if(changedFileCount > 0)
+ AssetDatabase.Refresh();
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/PowerUp/ShieldPowerUp.cs.meta b/Milky Way/Assets/Editor/Menu/Scripts/ScriptsMenu.cs.meta
similarity index 52%
rename from Milky Way/Assets/Scripts/PowerUp/ShieldPowerUp.cs.meta
rename to Milky Way/Assets/Editor/Menu/Scripts/ScriptsMenu.cs.meta
index 723c36e..9b840c7 100644
--- a/Milky Way/Assets/Scripts/PowerUp/ShieldPowerUp.cs.meta
+++ b/Milky Way/Assets/Editor/Menu/Scripts/ScriptsMenu.cs.meta
@@ -1,8 +1,12 @@
fileFormatVersion: 2
-guid: 5fb1999d05348f7438888837f844c71b
+guid: 15fee023b90d0bf49871e85684458cac
+timeCreated: 1482948685
+licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Plugins.meta b/Milky Way/Assets/Plugins.meta
new file mode 100644
index 0000000..e308807
--- /dev/null
+++ b/Milky Way/Assets/Plugins.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 2d7b4d3b682ceab4c93fdba7d48c161b
+folderAsset: yes
+timeCreated: 1518626293
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Plugins/Newtonsoft.meta b/Milky Way/Assets/Plugins/Newtonsoft.meta
new file mode 100644
index 0000000..db64bc1
--- /dev/null
+++ b/Milky Way/Assets/Plugins/Newtonsoft.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 9c706fd69d5dbc148b4a67d702e25c44
+folderAsset: yes
+timeCreated: 1518626293
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.dll b/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.dll
new file mode 100644
index 0000000..1ed20a0
Binary files /dev/null and b/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.dll differ
diff --git a/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.dll.mdb b/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.dll.mdb
new file mode 100644
index 0000000..1cc9f24
Binary files /dev/null and b/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.dll.mdb differ
diff --git a/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.dll.mdb.meta b/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.dll.mdb.meta
new file mode 100644
index 0000000..da583ca
--- /dev/null
+++ b/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.dll.mdb.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6fa7a46d1cd2adb41a0f104873f609e6
+timeCreated: 1482928686
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.dll.meta b/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.dll.meta
new file mode 100644
index 0000000..cd5b5a4
--- /dev/null
+++ b/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.dll.meta
@@ -0,0 +1,34 @@
+fileFormatVersion: 2
+guid: 592ae7ef9de95a8418da57eb898b09e6
+timeCreated: 1482928689
+licenseType: Free
+PluginImporter:
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ data:
+ first:
+ Any:
+ second:
+ enabled: 1
+ settings: {}
+ data:
+ first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ data:
+ first:
+ Windows Store Apps: WindowsStoreApps
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.pdb b/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.pdb
new file mode 100644
index 0000000..fd1402e
Binary files /dev/null and b/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.pdb differ
diff --git a/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.pdb.meta b/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.pdb.meta
new file mode 100644
index 0000000..300a767
--- /dev/null
+++ b/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.pdb.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b2a930bc2f3873649ae09b2bc777acc5
+timeCreated: 1482928686
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.xml b/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.xml
new file mode 100644
index 0000000..4be37fd
--- /dev/null
+++ b/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.xml
@@ -0,0 +1,8922 @@
+
+
+
+ Newtonsoft.Json
+
+
+
+
+ Implements a reader that provides fast, non-cached, forward-only access to serialized JSON data.
+
+
+
+
+ Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary.
+
+
+ true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether the root object will be read as a JSON array.
+
+
+ true if the root object will be read as a JSON array; otherwise, false.
+
+
+
+
+ Gets or sets the used when reading values from BSON.
+
+ The used when reading values from BSON.
+
+
+
+ Initializes a new instance of the class.
+
+ The stream.
+
+
+
+ Initializes a new instance of the class.
+
+ The reader.
+
+
+
+ Initializes a new instance of the class.
+
+ The stream.
+ if set to true the root object will be read as a JSON array.
+ The used when reading values from BSON.
+
+
+
+ Initializes a new instance of the class.
+
+ The reader.
+ if set to true the root object will be read as a JSON array.
+ The used when reading values from BSON.
+
+
+
+ Reads the next JSON token from the stream.
+
+
+ true if the next token was read successfully; false if there are no more tokens to read.
+
+
+
+
+ Changes the to Closed.
+
+
+
+
+ Implements a writer that provides a fast, non-cached, forward-only way of generating JSON data.
+
+
+
+
+ Gets or sets the used when writing values to BSON.
+ When set to no conversion will occur.
+
+ The used when writing values to BSON.
+
+
+
+ Initializes a new instance of the class.
+
+ The stream.
+
+
+
+ Initializes a new instance of the class.
+
+ The writer.
+
+
+
+ Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream.
+
+
+
+
+ Writes the end.
+
+ The token.
+
+
+
+ Writes out a comment /*...*/ containing the specified text.
+
+ Text to place inside the comment.
+
+
+
+ Writes the start of a constructor with the given name.
+
+ The name of the constructor.
+
+
+
+ Writes raw JSON.
+
+ The raw JSON to write.
+
+
+
+ Writes raw JSON where a value is expected and updates the writer's state.
+
+ The raw JSON to write.
+
+
+
+ Writes the beginning of a JSON array.
+
+
+
+
+ Writes the beginning of a JSON object.
+
+
+
+
+ Writes the property name of a name/value pair on a JSON object.
+
+ The name of the property.
+
+
+
+ Closes this stream and the underlying stream.
+
+
+
+
+ Writes a value.
+ An error will raised if the value cannot be written as a single JSON token.
+
+ The value to write.
+
+
+
+ Writes a null value.
+
+
+
+
+ Writes an undefined value.
+
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a [] value.
+
+ The [] value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a [] value that Implements a BSON object id.
+
+ The Object ID value to write.
+
+
+
+ Writes a BSON regex.
+
+ The regex pattern.
+ The regex options.
+
+
+
+ Implements a BSON Oid (object id).
+
+
+
+
+ Gets or sets the value of the Oid.
+
+ The value of the Oid.
+
+
+
+ Initializes a new instance of the class.
+
+ The Oid value.
+
+
+
+ Converts a binary value to and from a base 64 string value.
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+ Converts a to and from JSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified value type.
+
+ Type of the value.
+
+ true if this instance can convert the specified value type; otherwise, false.
+
+
+
+
+ Converts a to and from JSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified value type.
+
+ Type of the value.
+
+ true if this instance can convert the specified value type; otherwise, false.
+
+
+
+
+ Create a custom object
+
+ The object type to convert.
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Creates an object which will then be populated by the serializer.
+
+ Type of the object.
+ The created object.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this can write JSON.
+
+
+ true if this can write JSON; otherwise, false.
+
+
+
+
+ Provides a base class for converting a to and from JSON.
+
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+ Converts an Entity Framework EntityKey to and from JSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+ Converts a to and from JSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+ Converts a to and from JSON and BSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+ Converts a to and from JSON and BSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+ Converts an to and from its name string value.
+
+
+
+
+ Gets or sets a value indicating whether the written enum text should be camel case.
+
+ true if the written enum text will be camel case; otherwise, false.
+
+
+
+ Gets or sets a value indicating whether integer values are allowed.
+
+ true if integers are allowed; otherwise, false.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ true if the written enum text will be camel case; otherwise, false.
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+ Converts a to and from a string (e.g. "1.2.3.4").
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing property value of the JSON that is being converted.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+ Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z).
+
+
+
+
+ Gets or sets the date time styles used when converting a date to and from JSON.
+
+ The date time styles used when converting a date to and from JSON.
+
+
+
+ Gets or sets the date time format used when converting a date to and from JSON.
+
+ The date time format used when converting a date to and from JSON.
+
+
+
+ Gets or sets the culture used when converting a date to and from JSON.
+
+ The culture used when converting a date to and from JSON.
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)).
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing property value of the JSON that is being converted.
+ The calling serializer.
+ The object value.
+
+
+
+ Converts XML to and from JSON.
+
+
+
+
+ Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements.
+
+ The name of the deserialize root element.
+
+
+
+ Gets or sets a flag to indicate whether to write the Json.NET array attribute.
+ This attribute helps preserve arrays when converting the written XML back to JSON.
+
+ true if the array attibute is written to the XML; otherwise, false.
+
+
+
+ Gets or sets a value indicating whether to write the root JSON object.
+
+ true if the JSON root object is omitted; otherwise, false.
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The calling serializer.
+ The value.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Checks if the attributeName is a namespace attribute.
+
+ Attribute name to test.
+ The attribute name prefix if it has one, otherwise an empty string.
+ true if attribute name is for a namespace attribute, otherwise false.
+
+
+
+ Determines whether this instance can convert the specified value type.
+
+ Type of the value.
+
+ true if this instance can convert the specified value type; otherwise, false.
+
+
+
+
+ Specifies how constructors are used when initializing objects during deserialization by the .
+
+
+
+
+ First attempt to use the public default constructor, then fall back to single parameterized constructor, then the non-public default constructor.
+
+
+
+
+ Json.NET will use a non-public default constructor before falling back to a parameterized constructor.
+
+
+
+
+ Specifies how dates are formatted when writing JSON text.
+
+
+
+
+ Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z".
+
+
+
+
+ Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/".
+
+
+
+
+ Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text.
+
+
+
+
+ Date formatted strings are not parsed to a date type and are read as strings.
+
+
+
+
+ Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to .
+
+
+
+
+ Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to .
+
+
+
+
+ Specifies how to treat the time value when converting between string and .
+
+
+
+
+ Treat as local time. If the object Implements a Coordinated Universal Time (UTC), it is converted to the local time.
+
+
+
+
+ Treat as a UTC. If the object Implements a local time, it is converted to a UTC.
+
+
+
+
+ Treat as a local time if a is being converted to a string.
+ If a string is being converted to , convert to a local time if a time zone is specified.
+
+
+
+
+ Time zone information should be preserved when converting.
+
+
+
+
+ Specifies float format handling options when writing special floating point numbers, e.g. ,
+ and with .
+
+
+
+
+ Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity".
+
+
+
+
+ Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity.
+ Note that this will produce non-valid JSON.
+
+
+
+
+ Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a property.
+
+
+
+
+ Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text.
+
+
+
+
+ Floating point numbers are parsed to .
+
+
+
+
+ Floating point numbers are parsed to .
+
+
+
+
+ Specifies formatting options for the .
+
+
+
+
+ No special formatting is applied. This is the default.
+
+
+
+
+ Causes child objects to be indented according to the and settings.
+
+
+
+
+ Provides an interface for using pooled arrays.
+
+ The array type content.
+
+
+
+ Rent a array from the pool. This array must be returned when it is no longer needed.
+
+ The minimum required length of the array. The returned array may be longer.
+ The rented array from the pool. This array must be returned when it is no longer needed.
+
+
+
+ Return an array to the pool.
+
+ The array that is being returned.
+
+
+
+ Instructs the to use the specified constructor when deserializing that object.
+
+
+
+
+ Instructs the how to serialize the collection.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified container Id.
+
+ The container Id.
+
+
+
+ The exception thrown when an error occurs during JSON serialization or deserialization.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class
+ with a specified error message.
+
+ The error message that explains the reason for the exception.
+
+
+
+ Initializes a new instance of the class
+ with a specified error message and a reference to the inner exception that is the cause of this exception.
+
+ The error message that explains the reason for the exception.
+ The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.
+
+
+
+ Initializes a new instance of the class.
+
+ The that holds the serialized object data about the exception being thrown.
+ The that contains contextual information about the source or destination.
+ The parameter is null.
+ The class name is null or is zero (0).
+
+
+
+ Instructs the to deserialize properties with no matching class member into the specified collection
+ and write values during serialization.
+
+
+
+
+ Gets or sets a value that indicates whether to write extension data when serializing the object.
+
+
+ true to write extension data when serializing the object; otherwise, false. The default is true.
+
+
+
+
+ Gets or sets a value that indicates whether to read extension data when deserializing the object.
+
+
+ true to read extension data when deserializing the object; otherwise, false. The default is true.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Instructs the to always serialize the member, and require the member has a value.
+
+
+
+
+ Specifies how JSON comments are handled when loading JSON.
+
+
+
+
+ Ignore comments.
+
+
+
+
+ Load comments as a with type .
+
+
+
+
+ Specifies how line information is handled when loading JSON.
+
+
+
+
+ Ignore line information.
+
+
+
+
+ Load line information.
+
+
+
+
+ Implements a view of a .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The name.
+
+
+
+ When overridden in a derived class, returns whether resetting an object changes its value.
+
+
+ true if resetting the component changes its value; otherwise, false.
+
+ The component to test for reset capability.
+
+
+
+ When overridden in a derived class, gets the current value of the property on a component.
+
+
+ The value of a property for a given component.
+
+ The component with the property for which to retrieve the value.
+
+
+
+
+ When overridden in a derived class, resets the value for this property of the component to the default value.
+
+ The component with the property value that is to be reset to the default value.
+
+
+
+
+ When overridden in a derived class, sets the value of the component to a different value.
+
+ The component with the property value that is to be set.
+ The new value.
+
+
+
+
+ When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted.
+
+
+ true if the property should be persisted; otherwise, false.
+
+ The component with the property to be examined for persistence.
+
+
+
+ When overridden in a derived class, gets the type of the component this property is bound to.
+
+
+ A that Implements the type of component this property is bound to. When the or methods are invoked, the object specified might be an instance of this type.
+
+
+
+
+ When overridden in a derived class, gets a value indicating whether this property is read-only.
+
+
+ true if the property is read-only; otherwise, false.
+
+
+
+
+ When overridden in a derived class, gets the type of the property.
+
+
+ A that Implements the type of the property.
+
+
+
+
+ Gets the hash code for the name of the member.
+
+
+
+ The hash code for the name of the member.
+
+
+
+
+ Specifies the settings used when loading JSON.
+
+
+
+
+ Gets or sets how JSON comments are handled when loading JSON.
+
+ The JSON comment handling.
+
+
+
+ Gets or sets how JSON line info is handled when loading JSON.
+
+ The JSON line info handling.
+
+
+
+ Specifies the settings used when merging JSON.
+
+
+
+
+ Gets or sets the method used when merging JSON arrays.
+
+ The method used when merging JSON arrays.
+
+
+
+ Gets or sets how how null value properties are merged.
+
+ How null value properties are merged.
+
+
+
+ Specifies how JSON arrays are merged together.
+
+
+
+ Concatenate arrays.
+
+
+ Union arrays, skipping items that already exist.
+
+
+ Replace all array items.
+
+
+ Merge array items together, matched by index.
+
+
+
+ Specifies how null value properties are merged.
+
+
+
+
+ The content's null value properties will be ignored during merging.
+
+
+
+
+ The content's null value properties will be merged.
+
+
+
+
+ Implements a raw JSON string.
+
+
+
+
+ Initializes a new instance of the class from another object.
+
+ A object to copy from.
+
+
+
+ Initializes a new instance of the class.
+
+ The raw json.
+
+
+
+ Creates an instance of with the content of the reader's current token.
+
+ The reader.
+ An instance of with the content of the reader's current token.
+
+
+
+ Implements a collection of objects.
+
+ The type of token
+
+
+
+ Gets the with the specified key.
+
+
+
+
+
+ Compares tokens to determine whether they are equal.
+
+
+
+
+ Determines whether the specified objects are equal.
+
+ The first object of type to compare.
+ The second object of type to compare.
+
+ true if the specified objects are equal; otherwise, false.
+
+
+
+
+ Returns a hash code for the specified object.
+
+ The for which a hash code is to be returned.
+ A hash code for the specified object.
+ The type of is a reference type and is null.
+
+
+
+ Contains the LINQ to JSON extension methods.
+
+
+
+
+ Returns a collection of tokens that contains the ancestors of every token in the source collection.
+
+ The type of the objects in source, constrained to .
+ An of that contains the source collection.
+ An of that contains the ancestors of every token in the source collection.
+
+
+
+ Returns a collection of tokens that contains every token in the source collection, and the ancestors of every token in the source collection.
+
+ The type of the objects in source, constrained to .
+ An of that contains the source collection.
+ An of that contains every token in the source collection, the ancestors of every token in the source collection.
+
+
+
+ Returns a collection of tokens that contains the descendants of every token in the source collection.
+
+ The type of the objects in source, constrained to .
+ An of that contains the source collection.
+ An of that contains the descendants of every token in the source collection.
+
+
+
+ Returns a collection of tokens that contains every token in the source collection, and the descendants of every token in the source collection.
+
+ The type of the objects in source, constrained to .
+ An of that contains the source collection.
+ An of that contains every token in the source collection, and the descendants of every token in the source collection.
+
+
+
+ Returns a collection of child properties of every object in the source collection.
+
+ An of that contains the source collection.
+ An of that contains the properties of every object in the source collection.
+
+
+
+ Returns a collection of child values of every object in the source collection with the given key.
+
+ An of that contains the source collection.
+ The token key.
+ An of that contains the values of every token in the source collection with the given key.
+
+
+
+ Returns a collection of child values of every object in the source collection.
+
+ An of that contains the source collection.
+ An of that contains the values of every token in the source collection.
+
+
+
+ Returns a collection of converted child values of every object in the source collection with the given key.
+
+ The type to convert the values to.
+ An of that contains the source collection.
+ The token key.
+ An that contains the converted values of every token in the source collection with the given key.
+
+
+
+ Returns a collection of converted child values of every object in the source collection.
+
+ The type to convert the values to.
+ An of that contains the source collection.
+ An that contains the converted values of every token in the source collection.
+
+
+
+ Converts the value.
+
+ The type to convert the value to.
+ A cast as a of .
+ A converted value.
+
+
+
+ Converts the value.
+
+ The source collection type.
+ The type to convert the value to.
+ A cast as a of .
+ A converted value.
+
+
+
+ Returns a collection of child tokens of every array in the source collection.
+
+ The source collection type.
+ An of that contains the source collection.
+ An of that contains the values of every token in the source collection.
+
+
+
+ Returns a collection of converted child tokens of every array in the source collection.
+
+ An of that contains the source collection.
+ The type to convert the values to.
+ The source collection type.
+ An that contains the converted values of every token in the source collection.
+
+
+
+ Returns the input typed as .
+
+ An of that contains the source collection.
+ The input typed as .
+
+
+
+ Returns the input typed as .
+
+ The source collection type.
+ An of that contains the source collection.
+ The input typed as .
+
+
+
+ Implements a JSON constructor.
+
+
+
+
+ Gets the container's children tokens.
+
+ The container's children tokens.
+
+
+
+ Gets or sets the name of this constructor.
+
+ The constructor name.
+
+
+
+ Gets the node type for this .
+
+ The type.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class from another object.
+
+ A object to copy from.
+
+
+
+ Initializes a new instance of the class with the specified name and content.
+
+ The constructor name.
+ The contents of the constructor.
+
+
+
+ Initializes a new instance of the class with the specified name and content.
+
+ The constructor name.
+ The contents of the constructor.
+
+
+
+ Initializes a new instance of the class with the specified name.
+
+ The constructor name.
+
+
+
+ Writes this token to a .
+
+ A into which this method will write.
+ A collection of which will be used when writing the token.
+
+
+
+ Gets the with the specified key.
+
+ The with the specified key.
+
+
+
+ Loads an from a .
+
+ A that will be read for the content of the .
+ A that contains the JSON that was read from the specified .
+
+
+
+ Loads an from a .
+
+ A that will be read for the content of the .
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+ A that contains the JSON that was read from the specified .
+
+
+
+ Implements a token that can contain other tokens.
+
+
+
+
+ Occurs when the list changes or an item in the list changes.
+
+
+
+
+ Occurs before an item is added to the collection.
+
+
+
+
+ Gets the container's children tokens.
+
+ The container's children tokens.
+
+
+
+ Raises the event.
+
+ The instance containing the event data.
+
+
+
+ Raises the event.
+
+ The instance containing the event data.
+
+
+
+ Gets a value indicating whether this token has child tokens.
+
+
+ true if this token has child values; otherwise, false.
+
+
+
+
+ Get the first child token of this token.
+
+
+ A containing the first child token of the .
+
+
+
+
+ Get the last child token of this token.
+
+
+ A containing the last child token of the .
+
+
+
+
+ Returns a collection of the child tokens of this token, in document order.
+
+
+ An of containing the child tokens of this , in document order.
+
+
+
+
+ Returns a collection of the child values of this token, in document order.
+
+ The type to convert the values to.
+
+ A containing the child values of this , in document order.
+
+
+
+
+ Returns a collection of the descendant tokens for this token in document order.
+
+ An containing the descendant tokens of the .
+
+
+
+ Returns a collection of the tokens that contain this token, and all descendant tokens of this token, in document order.
+
+ An containing this token, and all the descendant tokens of the .
+
+
+
+ Adds the specified content as children of this .
+
+ The content to be added.
+
+
+
+ Adds the specified content as the first children of this .
+
+ The content to be added.
+
+
+
+ Creates an that can be used to add tokens to the .
+
+ An that is ready to have content written to it.
+
+
+
+ Replaces the children nodes of this token with the specified content.
+
+ The content.
+
+
+
+ Removes the child nodes from this token.
+
+
+
+
+ Merge the specified content into this .
+
+ The content to be merged.
+
+
+
+ Merge the specified content into this using .
+
+ The content to be merged.
+ The used to merge the content.
+
+
+
+ Gets the count of child JSON tokens.
+
+ The count of child JSON tokens
+
+
+
+ Implements a collection of objects.
+
+ The type of token
+
+
+
+ An empty collection of objects.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The enumerable.
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Gets the with the specified key.
+
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Implements a JSON object.
+
+
+
+
+
+
+
+ Gets the container's children tokens.
+
+ The container's children tokens.
+
+
+
+ Occurs when a property value changes.
+
+
+
+
+ Occurs when a property value is changing.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class from another object.
+
+ A object to copy from.
+
+
+
+ Initializes a new instance of the class with the specified content.
+
+ The contents of the object.
+
+
+
+ Initializes a new instance of the class with the specified content.
+
+ The contents of the object.
+
+
+
+ Gets the node type for this .
+
+ The type.
+
+
+
+ Gets an of this object's properties.
+
+ An of this object's properties.
+
+
+
+ Gets a the specified name.
+
+ The property name.
+ A with the specified name or null.
+
+
+
+ Gets an of this object's property values.
+
+ An of this object's property values.
+
+
+
+ Gets the with the specified key.
+
+ The with the specified key.
+
+
+
+ Gets or sets the with the specified property name.
+
+
+
+
+
+ Loads an from a .
+
+ A that will be read for the content of the .
+ A that contains the JSON that was read from the specified .
+
+
+
+ Loads an from a .
+
+ A that will be read for the content of the .
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+ A that contains the JSON that was read from the specified .
+
+
+
+ Load a from a string that contains JSON.
+
+ A that contains JSON.
+ A populated from the string that contains JSON.
+
+
+
+
+
+
+ Load a from a string that contains JSON.
+
+ A that contains JSON.
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+ A populated from the string that contains JSON.
+
+
+
+
+
+
+ Creates a from an object.
+
+ The object that will be used to create .
+ A with the values of the specified object
+
+
+
+ Creates a from an object.
+
+ The object that will be used to create .
+ The that will be used to read the object.
+ A with the values of the specified object
+
+
+
+ Writes this token to a .
+
+ A into which this method will write.
+ A collection of which will be used when writing the token.
+
+
+
+ Gets the with the specified property name.
+
+ Name of the property.
+ The with the specified property name.
+
+
+
+ Gets the with the specified property name.
+ The exact property name will be searched for first and if no matching property is found then
+ the will be used to match a property.
+
+ Name of the property.
+ One of the enumeration values that specifies how the strings will be compared.
+ The with the specified property name.
+
+
+
+ Tries to get the with the specified property name.
+ The exact property name will be searched for first and if no matching property is found then
+ the will be used to match a property.
+
+ Name of the property.
+ The value.
+ One of the enumeration values that specifies how the strings will be compared.
+ true if a value was successfully retrieved; otherwise, false.
+
+
+
+ Adds the specified property name.
+
+ Name of the property.
+ The value.
+
+
+
+ Removes the property with the specified name.
+
+ Name of the property.
+ true if item was successfully removed; otherwise, false.
+
+
+
+ Tries the get value.
+
+ Name of the property.
+ The value.
+ true if a value was successfully retrieved; otherwise, false.
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Raises the event with the provided arguments.
+
+ Name of the property.
+
+
+
+ Raises the event with the provided arguments.
+
+ Name of the property.
+
+
+
+ Returns the properties for this instance of a component.
+
+
+ A that Implements the properties for this component instance.
+
+
+
+
+ Returns the properties for this instance of a component using the attribute array as a filter.
+
+ An array of type that is used as a filter.
+
+ A that Implements the filtered properties for this component instance.
+
+
+
+
+ Returns a collection of custom attributes for this instance of a component.
+
+
+ An containing the attributes for this object.
+
+
+
+
+ Returns the class name of this instance of a component.
+
+
+ The class name of the object, or null if the class does not have a name.
+
+
+
+
+ Returns the name of this instance of a component.
+
+
+ The name of the object, or null if the object does not have a name.
+
+
+
+
+ Returns a type converter for this instance of a component.
+
+
+ A that is the converter for this object, or null if there is no for this object.
+
+
+
+
+ Returns the default event for this instance of a component.
+
+
+ An that Implements the default event for this object, or null if this object does not have events.
+
+
+
+
+ Returns the default property for this instance of a component.
+
+
+ A that Implements the default property for this object, or null if this object does not have properties.
+
+
+
+
+ Returns an editor of the specified type for this instance of a component.
+
+ A that Implements the editor for this object.
+
+ An of the specified type that is the editor for this object, or null if the editor cannot be found.
+
+
+
+
+ Returns the events for this instance of a component using the specified attribute array as a filter.
+
+ An array of type that is used as a filter.
+
+ An that Implements the filtered events for this component instance.
+
+
+
+
+ Returns the events for this instance of a component.
+
+
+ An that Implements the events for this component instance.
+
+
+
+
+ Returns an object that contains the property described by the specified property descriptor.
+
+ A that Implements the property whose owner is to be found.
+
+ An that Implements the owner of the specified property.
+
+
+
+
+ Implements a JSON array.
+
+
+
+
+
+
+
+ Gets the container's children tokens.
+
+ The container's children tokens.
+
+
+
+ Gets the node type for this .
+
+ The type.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class from another object.
+
+ A object to copy from.
+
+
+
+ Initializes a new instance of the class with the specified content.
+
+ The contents of the array.
+
+
+
+ Initializes a new instance of the class with the specified content.
+
+ The contents of the array.
+
+
+
+ Loads an from a .
+
+ A that will be read for the content of the .
+ A that contains the JSON that was read from the specified .
+
+
+
+ Loads an from a .
+
+ A that will be read for the content of the .
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+ A that contains the JSON that was read from the specified .
+
+
+
+ Load a from a string that contains JSON.
+
+ A that contains JSON.
+ A populated from the string that contains JSON.
+
+
+
+
+
+
+ Load a from a string that contains JSON.
+
+ A that contains JSON.
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+ A populated from the string that contains JSON.
+
+
+
+
+
+
+ Creates a from an object.
+
+ The object that will be used to create .
+ A with the values of the specified object
+
+
+
+ Creates a from an object.
+
+ The object that will be used to create .
+ The that will be used to read the object.
+ A with the values of the specified object
+
+
+
+ Writes this token to a .
+
+ A into which this method will write.
+ A collection of which will be used when writing the token.
+
+
+
+ Gets the with the specified key.
+
+ The with the specified key.
+
+
+
+ Gets or sets the at the specified index.
+
+
+
+
+
+ Determines the index of a specific item in the .
+
+ The object to locate in the .
+
+ The index of if found in the list; otherwise, -1.
+
+
+
+
+ Inserts an item to the at the specified index.
+
+ The zero-based index at which should be inserted.
+ The object to insert into the .
+
+ is not a valid index in the .
+ The is read-only.
+
+
+
+ Removes the item at the specified index.
+
+ The zero-based index of the item to remove.
+
+ is not a valid index in the .
+ The is read-only.
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Adds an item to the .
+
+ The object to add to the .
+ The is read-only.
+
+
+
+ Removes all items from the .
+
+ The is read-only.
+
+
+
+ Determines whether the contains a specific value.
+
+ The object to locate in the .
+
+ true if is found in the ; otherwise, false.
+
+
+
+
+ Copies to.
+
+ The array.
+ Index of the array.
+
+
+
+ Gets a value indicating whether the is read-only.
+
+ true if the is read-only; otherwise, false.
+
+
+
+ Removes the first occurrence of a specific object from the .
+
+ The object to remove from the .
+
+ true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original .
+
+ The is read-only.
+
+
+
+ Implements a reader that provides fast, non-cached, forward-only access to serialized JSON data.
+
+
+
+
+ Gets the at the reader's current position.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The token to read from.
+
+
+
+ Reads the next JSON token from the stream.
+
+
+ true if the next token was read successfully; false if there are no more tokens to read.
+
+
+
+
+ Gets the path of the current JSON token.
+
+
+
+
+ Implements a writer that provides a fast, non-cached, forward-only way of generating JSON data.
+
+
+
+
+ Gets the at the writer's current position.
+
+
+
+
+ Gets the token being writen.
+
+ The token being writen.
+
+
+
+ Initializes a new instance of the class writing to the given .
+
+ The container being written to.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream.
+
+
+
+
+ Closes this stream and the underlying stream.
+
+
+
+
+ Writes the beginning of a JSON object.
+
+
+
+
+ Writes the beginning of a JSON array.
+
+
+
+
+ Writes the start of a constructor with the given name.
+
+ The name of the constructor.
+
+
+
+ Writes the end.
+
+ The token.
+
+
+
+ Writes the property name of a name/value pair on a JSON object.
+
+ The name of the property.
+
+
+
+ Writes a value.
+ An error will raised if the value cannot be written as a single JSON token.
+
+ The value to write.
+
+
+
+ Writes a null value.
+
+
+
+
+ Writes an undefined value.
+
+
+
+
+ Writes raw JSON.
+
+ The raw JSON to write.
+
+
+
+ Writes out a comment /*...*/ containing the specified text.
+
+ Text to place inside the comment.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a [] value.
+
+ The [] value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Implements an abstract JSON token.
+
+
+
+
+ Gets a comparer that can compare two tokens for value equality.
+
+ A that can compare two nodes for value equality.
+
+
+
+ Gets or sets the parent.
+
+ The parent.
+
+
+
+ Gets the root of this .
+
+ The root of this .
+
+
+
+ Gets the node type for this .
+
+ The type.
+
+
+
+ Gets a value indicating whether this token has child tokens.
+
+
+ true if this token has child values; otherwise, false.
+
+
+
+
+ Compares the values of two tokens, including the values of all descendant tokens.
+
+ The first to compare.
+ The second to compare.
+ true if the tokens are equal; otherwise false.
+
+
+
+ Gets the next sibling token of this node.
+
+ The that contains the next sibling token.
+
+
+
+ Gets the previous sibling token of this node.
+
+ The that contains the previous sibling token.
+
+
+
+ Gets the path of the JSON token.
+
+
+
+
+ Adds the specified content immediately after this token.
+
+ A content object that contains simple content or a collection of content objects to be added after this token.
+
+
+
+ Adds the specified content immediately before this token.
+
+ A content object that contains simple content or a collection of content objects to be added before this token.
+
+
+
+ Returns a collection of the ancestor tokens of this token.
+
+ A collection of the ancestor tokens of this token.
+
+
+
+ Returns a collection of tokens that contain this token, and the ancestors of this token.
+
+ A collection of tokens that contain this token, and the ancestors of this token.
+
+
+
+ Returns a collection of the sibling tokens after this token, in document order.
+
+ A collection of the sibling tokens after this tokens, in document order.
+
+
+
+ Returns a collection of the sibling tokens before this token, in document order.
+
+ A collection of the sibling tokens before this token, in document order.
+
+
+
+ Gets the with the specified key.
+
+ The with the specified key.
+
+
+
+ Gets the with the specified key converted to the specified type.
+
+ The type to convert the token to.
+ The token key.
+ The converted token value.
+
+
+
+ Get the first child token of this token.
+
+ A containing the first child token of the .
+
+
+
+ Get the last child token of this token.
+
+ A containing the last child token of the .
+
+
+
+ Returns a collection of the child tokens of this token, in document order.
+
+ An of containing the child tokens of this , in document order.
+
+
+
+ Returns a collection of the child tokens of this token, in document order, filtered by the specified type.
+
+ The type to filter the child tokens on.
+ A containing the child tokens of this , in document order.
+
+
+
+ Returns a collection of the child values of this token, in document order.
+
+ The type to convert the values to.
+ A containing the child values of this , in document order.
+
+
+
+ Removes this token from its parent.
+
+
+
+
+ Replaces this token with the specified token.
+
+ The value.
+
+
+
+ Writes this token to a .
+
+ A into which this method will write.
+ A collection of which will be used when writing the token.
+
+
+
+ Returns the indented JSON for this token.
+
+
+ The indented JSON for this token.
+
+
+
+
+ Returns the JSON for this token using the given formatting and converters.
+
+ Indicates how the output is formatted.
+ A collection of which will be used when writing the token.
+ The JSON for this token using the given formatting and converters.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to [].
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from [] to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Creates an for this token.
+
+ An that can be used to read this token and its descendants.
+
+
+
+ Creates a from an object.
+
+ The object that will be used to create .
+ A with the value of the specified object
+
+
+
+ Creates a from an object using the specified .
+
+ The object that will be used to create .
+ The that will be used when reading the object.
+ A with the value of the specified object
+
+
+
+ Creates the specified .NET type from the .
+
+ The object type that the token will be deserialized to.
+ The new object created from the JSON value.
+
+
+
+ Creates the specified .NET type from the .
+
+ The object type that the token will be deserialized to.
+ The new object created from the JSON value.
+
+
+
+ Creates the specified .NET type from the using the specified .
+
+ The object type that the token will be deserialized to.
+ The that will be used when creating the object.
+ The new object created from the JSON value.
+
+
+
+ Creates the specified .NET type from the using the specified .
+
+ The object type that the token will be deserialized to.
+ The that will be used when creating the object.
+ The new object created from the JSON value.
+
+
+
+ Creates a from a .
+
+ An positioned at the token to read into this .
+
+ An that contains the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+
+
+
+
+ Creates a from a .
+
+ An positioned at the token to read into this .
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+
+ An that contains the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+
+
+
+
+ Load a from a string that contains JSON.
+
+ A that contains JSON.
+ A populated from the string that contains JSON.
+
+
+
+ Load a from a string that contains JSON.
+
+ A that contains JSON.
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+ A populated from the string that contains JSON.
+
+
+
+ Creates a from a .
+
+ An positioned at the token to read into this .
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+
+ An that contains the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+
+
+
+
+ Creates a from a .
+
+ An positioned at the token to read into this .
+
+ An that contains the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+
+
+
+
+ Selects a using a JPath expression. Selects the token that matches the object path.
+
+
+ A that contains a JPath expression.
+
+ A , or null.
+
+
+
+ Selects a using a JPath expression. Selects the token that matches the object path.
+
+
+ A that contains a JPath expression.
+
+ A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression.
+ A .
+
+
+
+ Selects a collection of elements using a JPath expression.
+
+
+ A that contains a JPath expression.
+
+ An that contains the selected elements.
+
+
+
+ Selects a collection of elements using a JPath expression.
+
+
+ A that contains a JPath expression.
+
+ A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression.
+ An that contains the selected elements.
+
+
+
+ Creates a new instance of the . All child tokens are recursively cloned.
+
+ A new instance of the .
+
+
+
+ Adds an object to the annotation list of this .
+
+ The annotation to add.
+
+
+
+ Get the first annotation object of the specified type from this .
+
+ The type of the annotation to retrieve.
+ The first annotation object that matches the specified type, or null if no annotation is of the specified type.
+
+
+
+ Gets the first annotation object of the specified type from this .
+
+ The of the annotation to retrieve.
+ The first annotation object that matches the specified type, or null if no annotation is of the specified type.
+
+
+
+ Gets a collection of annotations of the specified type for this .
+
+ The type of the annotations to retrieve.
+ An that contains the annotations for this .
+
+
+
+ Gets a collection of annotations of the specified type for this .
+
+ The of the annotations to retrieve.
+ An of that contains the annotations that match the specified type for this .
+
+
+
+ Removes the annotations of the specified type from this .
+
+ The type of annotations to remove.
+
+
+
+ Removes the annotations of the specified type from this .
+
+ The of annotations to remove.
+
+
+
+ Implements a JSON property.
+
+
+
+
+ Gets the container's children tokens.
+
+ The container's children tokens.
+
+
+
+ Gets the property name.
+
+ The property name.
+
+
+
+ Gets or sets the property value.
+
+ The property value.
+
+
+
+ Initializes a new instance of the class from another object.
+
+ A object to copy from.
+
+
+
+ Gets the node type for this .
+
+ The type.
+
+
+
+ Initializes a new instance of the class.
+
+ The property name.
+ The property content.
+
+
+
+ Initializes a new instance of the class.
+
+ The property name.
+ The property content.
+
+
+
+ Writes this token to a .
+
+ A into which this method will write.
+ A collection of which will be used when writing the token.
+
+
+
+ Loads an from a .
+
+ A that will be read for the content of the .
+ A that contains the JSON that was read from the specified .
+
+
+
+ Loads an from a .
+
+ A that will be read for the content of the .
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+ A that contains the JSON that was read from the specified .
+
+
+
+ Specifies the type of token.
+
+
+
+
+ No token type has been set.
+
+
+
+
+ A JSON object.
+
+
+
+
+ A JSON array.
+
+
+
+
+ A JSON constructor.
+
+
+
+
+ A JSON object property.
+
+
+
+
+ A comment.
+
+
+
+
+ An integer value.
+
+
+
+
+ A float value.
+
+
+
+
+ A string value.
+
+
+
+
+ A boolean value.
+
+
+
+
+ A null value.
+
+
+
+
+ An undefined value.
+
+
+
+
+ A date value.
+
+
+
+
+ A raw JSON value.
+
+
+
+
+ A collection of bytes value.
+
+
+
+
+ A Guid value.
+
+
+
+
+ A Uri value.
+
+
+
+
+ A TimeSpan value.
+
+
+
+
+ Implements a value in JSON (string, integer, date, etc).
+
+
+
+
+ Initializes a new instance of the class from another object.
+
+ A object to copy from.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Gets a value indicating whether this token has child tokens.
+
+
+ true if this token has child values; otherwise, false.
+
+
+
+
+ Creates a comment with the given value.
+
+ The value.
+ A comment with the given value.
+
+
+
+ Creates a string with the given value.
+
+ The value.
+ A string with the given value.
+
+
+
+ Creates a null value.
+
+ A null value.
+
+
+
+ Creates a undefined value.
+
+ A undefined value.
+
+
+
+ Gets the node type for this .
+
+ The type.
+
+
+
+ Gets or sets the underlying token value.
+
+ The underlying token value.
+
+
+
+ Writes this token to a .
+
+ A into which this method will write.
+ A collection of which will be used when writing the token.
+
+
+
+ Indicates whether the current object is equal to another object of the same type.
+
+
+ true if the current object is equal to the parameter; otherwise, false.
+
+ An object to compare with this object.
+
+
+
+ Determines whether the specified is equal to the current .
+
+ The to compare with the current .
+
+ true if the specified is equal to the current ; otherwise, false.
+
+
+ The parameter is null.
+
+
+
+
+ Serves as a hash function for a particular type.
+
+
+ A hash code for the current .
+
+
+
+
+ Returns a that Implements this instance.
+
+
+ A that Implements this instance.
+
+
+
+
+ Returns a that Implements this instance.
+
+ The format.
+
+ A that Implements this instance.
+
+
+
+
+ Returns a that Implements this instance.
+
+ The format provider.
+
+ A that Implements this instance.
+
+
+
+
+ Returns a that Implements this instance.
+
+ The format.
+ The format provider.
+
+ A that Implements this instance.
+
+
+
+
+ Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object.
+
+ An object to compare with this instance.
+
+ A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings:
+ Value
+ Meaning
+ Less than zero
+ This instance is less than .
+ Zero
+ This instance is equal to .
+ Greater than zero
+ This instance is greater than .
+
+
+ is not the same type as this instance.
+
+
+
+
+ Specifies metadata property handling options for the .
+
+
+
+
+ Read metadata properties located at the start of a JSON object.
+
+
+
+
+ Read metadata properties located anywhere in a JSON object. Note that this setting will impact performance.
+
+
+
+
+ Do not try to read metadata properties.
+
+
+
+
+ A camel case naming strategy.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ A flag indicating whether dictionary keys should be processed.
+
+
+ A flag indicating whether explicitly specified property names should be processed,
+ e.g. a property name customized with a .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Resolves the specified property name.
+
+ The property name to resolve.
+ The resolved property name.
+
+
+
+ The default naming strategy. Property names and dictionary keys are unchanged.
+
+
+
+
+ Resolves the specified property name.
+
+ The property name to resolve.
+ The resolved property name.
+
+
+
+ Implements a trace writer that writes to the application's instances.
+
+
+
+
+ Gets the that will be used to filter the trace messages passed to the writer.
+ For example a filter level of Info will exclude Verbose messages and include Info,
+ Warning and Error messages.
+
+
+ The that will be used to filter the trace messages passed to the writer.
+
+
+
+
+ Writes the specified trace level, message and optional exception.
+
+ The at which to write this trace.
+ The trace message.
+ The trace exception. This parameter is optional.
+
+
+
+ Provides methods to get attributes.
+
+
+
+
+ Returns a collection of all of the attributes, or an empty collection if there are no attributes.
+
+ When true, look up the hierarchy chain for the inherited custom attribute.
+ A collection of s, or an empty collection.
+
+
+
+ Returns a collection of attributes, identified by type, or an empty collection if there are no attributes.
+
+ The type of the attributes.
+ When true, look up the hierarchy chain for the inherited custom attribute.
+ A collection of s, or an empty collection.
+
+
+
+ Implements a trace writer.
+
+
+
+
+ Gets the that will be used to filter the trace messages passed to the writer.
+ For example a filter level of Info will exclude Verbose messages and include Info,
+ Warning and Error messages.
+
+ The that will be used to filter the trace messages passed to the writer.
+
+
+
+ Writes the specified trace level, message and optional exception.
+
+ The at which to write this trace.
+ The trace message.
+ The trace exception. This parameter is optional.
+
+
+
+ Contract details for a used by the .
+
+
+
+
+ Gets or sets the default collection items .
+
+ The converter.
+
+
+
+ Gets or sets a value indicating whether the collection items preserve object references.
+
+ true if collection items preserve object references; otherwise, false.
+
+
+
+ Gets or sets the collection item reference loop handling.
+
+ The reference loop handling.
+
+
+
+ Gets or sets the collection item type name handling.
+
+ The type name handling.
+
+
+
+ Initializes a new instance of the class.
+
+ The underlying type for the contract.
+
+
+
+ Implements a trace writer that writes to memory. When the trace message limit is
+ reached then old trace messages will be removed as new messages are added.
+
+
+
+
+ Gets the that will be used to filter the trace messages passed to the writer.
+ For example a filter level of Info will exclude Verbose messages and include Info,
+ Warning and Error messages.
+
+
+ The that will be used to filter the trace messages passed to the writer.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Writes the specified trace level, message and optional exception.
+
+ The at which to write this trace.
+ The trace message.
+ The trace exception. This parameter is optional.
+
+
+
+ Returns an enumeration of the most recent trace messages.
+
+ An enumeration of the most recent trace messages.
+
+
+
+ Returns a of the most recent trace messages.
+
+
+ A of the most recent trace messages.
+
+
+
+
+ A base class for resolving how property names and dictionary keys are serialized.
+
+
+
+
+ A flag indicating whether dictionary keys should be processed.
+ Defaults to false.
+
+
+
+
+ A flag indicating whether explicitly specified property names,
+ e.g. a property name customized with a , should be processed.
+ Defaults to false.
+
+
+
+
+ Gets the serialized name for a given property name.
+
+ The initial property name.
+ A flag indicating whether the property has had a name explicitly specfied.
+ The serialized property name.
+
+
+
+ Gets the serialized key for a given dictionary key.
+
+ The initial dictionary key.
+ The serialized dictionary key.
+
+
+
+ Resolves the specified property name.
+
+ The property name to resolve.
+ The resolved property name.
+
+
+
+ Provides methods to get attributes from a , , or .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The instance to get attributes for. This parameter should be a , , or .
+
+
+
+ Returns a collection of all of the attributes, or an empty collection if there are no attributes.
+
+ When true, look up the hierarchy chain for the inherited custom attribute.
+ A collection of s, or an empty collection.
+
+
+
+ Returns a collection of attributes, identified by type, or an empty collection if there are no attributes.
+
+ The type of the attributes.
+ When true, look up the hierarchy chain for the inherited custom attribute.
+ A collection of s, or an empty collection.
+
+
+
+ A snake case naming strategy.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ A flag indicating whether dictionary keys should be processed.
+
+
+ A flag indicating whether explicitly specified property names should be processed,
+ e.g. a property name customized with a .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Resolves the specified property name.
+
+ The property name to resolve.
+ The resolved property name.
+
+
+
+ Contract details for a used by the .
+
+
+
+
+ Gets or sets the ISerializable object constructor.
+
+ The ISerializable object constructor.
+
+
+
+ Initializes a new instance of the class.
+
+ The underlying type for the contract.
+
+
+
+ Contract details for a used by the .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The underlying type for the contract.
+
+
+
+ Contract details for a used by the .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The underlying type for the contract.
+
+
+
+ Get and set values for a using dynamic methods.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The member info.
+
+
+
+ Sets the value.
+
+ The target to set the value on.
+ The value to set on the target.
+
+
+
+ Gets the value.
+
+ The target to get the value from.
+ The value.
+
+
+
+ Provides data for the Error event.
+
+
+
+
+ Gets the current object the error event is being raised against.
+
+ The current object the error event is being raised against.
+
+
+
+ Gets the error context.
+
+ The error context.
+
+
+
+ Initializes a new instance of the class.
+
+ The current object.
+ The error context.
+
+
+
+ Resolves member mappings for a type, camel casing property names.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Used by to resolves a for a given .
+
+
+
+
+ Gets a value indicating whether members are being get and set using dynamic code generation.
+ This value is determined by the runtime permissions available.
+
+
+ true if using dynamic code generation; otherwise, false.
+
+
+
+
+ Gets or sets the default members search flags.
+
+ The default members search flags.
+
+
+
+ Gets or sets a value indicating whether compiler generated members should be serialized.
+
+
+ true if serialized compiler generated members; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types.
+
+
+ true if the interface will be ignored when serializing and deserializing types; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types.
+
+
+ true if the attribute will be ignored when serializing and deserializing types; otherwise, false.
+
+
+
+
+ Gets or sets the naming strategy used to resolve how property names and dictionary keys are serialized.
+
+ The naming strategy used to resolve how property names and dictionary keys are serialized.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ If set to true the will use a cached shared with other resolvers of the same type.
+ Sharing the cache will significantly improve performance with multiple resolver instances because expensive reflection will only
+ happen once. This setting can cause unexpected behavior if different instances of the resolver are suppose to produce different
+ results. When set to false it is highly recommended to reuse instances with the .
+
+
+
+
+ Resolves the contract for a given type.
+
+ The type to resolve a contract for.
+ The contract for a given type.
+
+
+
+ Gets the serializable members for the type.
+
+ The type to get serializable members for.
+ The serializable members for the type.
+
+
+
+ Creates a for the given type.
+
+ Type of the object.
+ A for the given type.
+
+
+
+ Creates the constructor parameters.
+
+ The constructor to create properties for.
+ The type's member properties.
+ Properties for the given .
+
+
+
+ Creates a for the given .
+
+ The matching member property.
+ The constructor parameter.
+ A created for the given .
+
+
+
+ Resolves the default for the contract.
+
+ Type of the object.
+ The contract's default .
+
+
+
+ Creates a for the given type.
+
+ Type of the object.
+ A for the given type.
+
+
+
+ Creates a for the given type.
+
+ Type of the object.
+ A for the given type.
+
+
+
+ Creates a for the given type.
+
+ Type of the object.
+ A for the given type.
+
+
+
+ Creates a for the given type.
+
+ Type of the object.
+ A for the given type.
+
+
+
+ Creates a for the given type.
+
+ Type of the object.
+ A for the given type.
+
+
+
+ Creates a for the given type.
+
+ Type of the object.
+ A for the given type.
+
+
+
+ Determines which contract type is created for the given type.
+
+ Type of the object.
+ A for the given type.
+
+
+
+ Creates properties for the given .
+
+ The type to create properties for.
+ /// The member serialization mode for the type.
+ Properties for the given .
+
+
+
+ Creates the used by the serializer to get and set values from a member.
+
+ The member.
+ The used by the serializer to get and set values from a member.
+
+
+
+ Creates a for the given .
+
+ The member's parent .
+ The member to create a for.
+ A created for the given .
+
+
+
+ Resolves the name of the property.
+
+ Name of the property.
+ Resolved name of the property.
+
+
+
+ Resolves the key of the dictionary. By default is used to resolve dictionary keys.
+
+ Key of the dictionary.
+ Resolved key of the dictionary.
+
+
+
+ Gets the resolved name of the property.
+
+ Name of the property.
+ Name of the property.
+
+
+
+ The default serialization binder used when resolving and loading classes from type names.
+
+
+
+
+ When overridden in a derived class, controls the binding of a serialized object to a type.
+
+ Specifies the name of the serialized object.
+ Specifies the name of the serialized object.
+
+ The type of the object the formatter creates a new instance of.
+
+
+
+
+ Provides information surrounding an error.
+
+
+
+
+ Gets the error.
+
+ The error.
+
+
+
+ Gets the original object that caused the error.
+
+ The original object that caused the error.
+
+
+
+ Gets the member that caused the error.
+
+ The member that caused the error.
+
+
+
+ Gets the path of the JSON location where the error occurred.
+
+ The path of the JSON location where the error occurred.
+
+
+
+ Gets or sets a value indicating whether this is handled.
+
+ true if handled; otherwise, false.
+
+
+
+ Used by to resolves a for a given .
+
+
+
+
+
+
+
+
+ Resolves the contract for a given type.
+
+ The type to resolve a contract for.
+ The contract for a given type.
+
+
+
+ Provides methods to get and set values.
+
+
+
+
+ Sets the value.
+
+ The target to set the value on.
+ The value to set on the target.
+
+
+
+ Gets the value.
+
+ The target to get the value from.
+ The value.
+
+
+
+ Contract details for a used by the .
+
+
+
+
+ Gets the of the collection items.
+
+ The of the collection items.
+
+
+
+ Gets a value indicating whether the collection type is a multidimensional array.
+
+ true if the collection type is a multidimensional array; otherwise, false.
+
+
+
+ Gets or sets the function used to create the object. When set this function will override .
+
+ The function used to create the object.
+
+
+
+ Gets a value indicating whether the creator has a parameter with the collection values.
+
+ true if the creator has a parameter with the collection values; otherwise, false.
+
+
+
+ Initializes a new instance of the class.
+
+ The underlying type for the contract.
+
+
+
+ Handles serialization callback events.
+
+ The object that raised the callback event.
+ The streaming context.
+
+
+
+ Handles serialization error callback events.
+
+ The object that raised the callback event.
+ The streaming context.
+ The error context.
+
+
+
+ Sets extension data for an object during deserialization.
+
+ The object to set extension data on.
+ The extension data key.
+ The extension data value.
+
+
+
+ Gets extension data for an object during serialization.
+
+ The object to set extension data on.
+
+
+
+ Contract details for a used by the .
+
+
+
+
+ Gets the underlying type for the contract.
+
+ The underlying type for the contract.
+
+
+
+ Gets or sets the type created during deserialization.
+
+ The type created during deserialization.
+
+
+
+ Gets or sets whether this type contract is serialized as a reference.
+
+ Whether this type contract is serialized as a reference.
+
+
+
+ Gets or sets the default for this contract.
+
+ The converter.
+
+
+
+ Gets or sets all methods called immediately after deserialization of the object.
+
+ The methods called immediately after deserialization of the object.
+
+
+
+ Gets or sets all methods called during deserialization of the object.
+
+ The methods called during deserialization of the object.
+
+
+
+ Gets or sets all methods called after serialization of the object graph.
+
+ The methods called after serialization of the object graph.
+
+
+
+ Gets or sets all methods called before serialization of the object.
+
+ The methods called before serialization of the object.
+
+
+
+ Gets or sets all method called when an error is thrown during the serialization of the object.
+
+ The methods called when an error is thrown during the serialization of the object.
+
+
+
+ Gets or sets the method called immediately after deserialization of the object.
+
+ The method called immediately after deserialization of the object.
+
+
+
+ Gets or sets the method called during deserialization of the object.
+
+ The method called during deserialization of the object.
+
+
+
+ Gets or sets the method called after serialization of the object graph.
+
+ The method called after serialization of the object graph.
+
+
+
+ Gets or sets the method called before serialization of the object.
+
+ The method called before serialization of the object.
+
+
+
+ Gets or sets the method called when an error is thrown during the serialization of the object.
+
+ The method called when an error is thrown during the serialization of the object.
+
+
+
+ Gets or sets the default creator method used to create the object.
+
+ The default creator method used to create the object.
+
+
+
+ Gets or sets a value indicating whether the default creator is non public.
+
+ true if the default object creator is non-public; otherwise, false.
+
+
+
+ Contract details for a used by the .
+
+
+
+
+ Gets or sets the property name resolver.
+
+ The property name resolver.
+
+
+
+ Gets or sets the dictionary key resolver.
+
+ The dictionary key resolver.
+
+
+
+ Gets the of the dictionary keys.
+
+ The of the dictionary keys.
+
+
+
+ Gets the of the dictionary values.
+
+ The of the dictionary values.
+
+
+
+ Gets or sets the function used to create the object. When set this function will override .
+
+ The function used to create the object.
+
+
+
+ Gets a value indicating whether the creator has a parameter with the dictionary values.
+
+ true if the creator has a parameter with the dictionary values; otherwise, false.
+
+
+
+ Initializes a new instance of the class.
+
+ The underlying type for the contract.
+
+
+
+ Maps a JSON property to a .NET member or constructor parameter.
+
+
+
+
+ Gets or sets the name of the property.
+
+ The name of the property.
+
+
+
+ Gets or sets the type that declared this property.
+
+ The type that declared this property.
+
+
+
+ Gets or sets the order of serialization of a member.
+
+ The numeric order of serialization.
+
+
+
+ Gets or sets the name of the underlying member or parameter.
+
+ The name of the underlying member or parameter.
+
+
+
+ Gets the that will get and set the during serialization.
+
+ The that will get and set the during serialization.
+
+
+
+ Gets or sets the for this property.
+
+ The for this property.
+
+
+
+ Gets or sets the type of the property.
+
+ The type of the property.
+
+
+
+ Gets or sets the for the property.
+ If set this converter takes presidence over the contract converter for the property type.
+
+ The converter.
+
+
+
+ Gets or sets the member converter.
+
+ The member converter.
+
+
+
+ Gets or sets a value indicating whether this is ignored.
+
+ true if ignored; otherwise, false.
+
+
+
+ Gets or sets a value indicating whether this is readable.
+
+ true if readable; otherwise, false.
+
+
+
+ Gets or sets a value indicating whether this is writable.
+
+ true if writable; otherwise, false.
+
+
+
+ Gets or sets a value indicating whether this has a member attribute.
+
+ true if has a member attribute; otherwise, false.
+
+
+
+ Gets the default value.
+
+ The default value.
+
+
+
+ Gets or sets a value indicating whether this is required.
+
+ A value indicating whether this is required.
+
+
+
+ Gets or sets a value indicating whether this property preserves object references.
+
+
+ true if this instance is reference; otherwise, false.
+
+
+
+
+ Gets or sets the property null value handling.
+
+ The null value handling.
+
+
+
+ Gets or sets the property default value handling.
+
+ The default value handling.
+
+
+
+ Gets or sets the property reference loop handling.
+
+ The reference loop handling.
+
+
+
+ Gets or sets the property object creation handling.
+
+ The object creation handling.
+
+
+
+ Gets or sets or sets the type name handling.
+
+ The type name handling.
+
+
+
+ Gets or sets a predicate used to determine whether the property should be serialize.
+
+ A predicate used to determine whether the property should be serialize.
+
+
+
+ Gets or sets a predicate used to determine whether the property should be deserialized.
+
+ A predicate used to determine whether the property should be deserialized.
+
+
+
+ Gets or sets a predicate used to determine whether the property should be serialized.
+
+ A predicate used to determine whether the property should be serialized.
+
+
+
+ Gets or sets an action used to set whether the property has been deserialized.
+
+ An action used to set whether the property has been deserialized.
+
+
+
+ Returns a that Implements this instance.
+
+
+ A that Implements this instance.
+
+
+
+
+ Gets or sets the converter used when serializing the property's collection items.
+
+ The collection's items converter.
+
+
+
+ Gets or sets whether this property's collection items are serialized as a reference.
+
+ Whether this property's collection items are serialized as a reference.
+
+
+
+ Gets or sets the the type name handling used when serializing the property's collection items.
+
+ The collection's items type name handling.
+
+
+
+ Gets or sets the the reference loop handling used when serializing the property's collection items.
+
+ The collection's items reference loop handling.
+
+
+
+ A collection of objects.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The type.
+
+
+
+ When implemented in a derived class, extracts the key from the specified element.
+
+ The element from which to extract the key.
+ The key for the specified element.
+
+
+
+ Adds a object.
+
+ The property to add to the collection.
+
+
+
+ Gets the closest matching object.
+ First attempts to get an exact case match of propertyName and then
+ a case insensitive match.
+
+ Name of the property.
+ A matching property if found.
+
+
+
+ Gets a property by property name.
+
+ The name of the property to get.
+ Type property name string comparison.
+ A matching property if found.
+
+
+
+ Used to resolve references when serializing and deserializing JSON by the .
+
+
+
+
+ Resolves a reference to its object.
+
+ The serialization context.
+ The reference to resolve.
+ The object that
+
+
+
+ Gets the reference for the sepecified object.
+
+ The serialization context.
+ The object to get a reference for.
+ The reference to the object.
+
+
+
+ Determines whether the specified object is referenced.
+
+ The serialization context.
+ The object to test for a reference.
+
+ true if the specified object is referenced; otherwise, false.
+
+
+
+
+ Adds a reference to the specified object.
+
+ The serialization context.
+ The reference.
+ The object to reference.
+
+
+
+ Contract details for a used by the .
+
+
+
+
+ Gets or sets the object member serialization.
+
+ The member object serialization.
+
+
+
+ Gets or sets a value that indicates whether the object's properties are required.
+
+
+ A value indicating whether the object's properties are required.
+
+
+
+
+ Gets the object's properties.
+
+ The object's properties.
+
+
+
+ Gets the constructor parameters required for any non-default constructor
+
+
+
+
+ Gets a collection of instances that define the parameters used with .
+
+
+
+
+ Gets or sets the override constructor used to create the object.
+ This is set when a constructor is marked up using the
+ JsonConstructor attribute.
+
+ The override constructor.
+
+
+
+ Gets or sets the parametrized constructor used to create the object.
+
+ The parametrized constructor.
+
+
+
+ Gets or sets the function used to create the object. When set this function will override .
+ This function is called with a collection of arguments which are defined by the collection.
+
+ The function used to create the object.
+
+
+
+ Gets or sets the extension data setter.
+
+
+
+
+ Gets or sets the extension data getter.
+
+
+
+
+ Gets or sets the extension data value type.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The underlying type for the contract.
+
+
+
+ Contract details for a used by the .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The underlying type for the contract.
+
+
+
+ Lookup and create an instance of the JsonConverter type described by the argument.
+
+ The JsonConverter type to create.
+ Optional arguments to pass to an initializing constructor of the JsonConverter.
+ If null, the default constructor is used.
+
+
+
+ Get and set values for a using reflection.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The member info.
+
+
+
+ Sets the value.
+
+ The target to set the value on.
+ The value to set on the target.
+
+
+
+ Gets the value.
+
+ The target to get the value from.
+ The value.
+
+
+
+ When applied to a method, specifies that the method is called when an error occurs serializing an object.
+
+
+
+
+ Implements a method that constructs an object.
+
+ The object type to create.
+
+
+
+ Specifies how strings are escaped when writing JSON text.
+
+
+
+
+ Only control characters (e.g. newline) are escaped.
+
+
+
+
+ All non-ASCII and control characters (e.g. newline) are escaped.
+
+
+
+
+ HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped.
+
+
+
+
+ Converts the value to the specified type. If the value is unable to be converted, the
+ value is checked whether it assignable to the specified type.
+
+ The value to convert.
+ The culture to use when converting.
+ The type to convert or cast the value to.
+
+ The converted type. If conversion was unsuccessful, the initial value
+ is returned if assignable to the target type.
+
+
+
+
+ Gets a dictionary of the names and values of an Enum type.
+
+
+
+
+
+ Gets a dictionary of the names and values of an Enum type.
+
+ The enum type to get names and values for.
+
+
+
+
+ Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer.
+
+
+
+
+ Determines whether the collection is null or empty.
+
+ The collection.
+
+ true if the collection is null or empty; otherwise, false.
+
+
+
+
+ Adds the elements of the specified collection to the specified generic IList.
+
+ The list to add to.
+ The collection of elements to add.
+
+
+
+ Gets the type of the typed collection's items.
+
+ The type.
+ The type of the typed collection's items.
+
+
+
+ Gets the member's underlying type.
+
+ The member.
+ The underlying type of the member.
+
+
+
+ Determines whether the member is an indexed property.
+
+ The member.
+
+ true if the member is an indexed property; otherwise, false.
+
+
+
+
+ Determines whether the property is an indexed property.
+
+ The property.
+
+ true if the property is an indexed property; otherwise, false.
+
+
+
+
+ Gets the member's value on the object.
+
+ The member.
+ The target object.
+ The member's value on the object.
+
+
+
+ Sets the member's value on the target object.
+
+ The member.
+ The target.
+ The value.
+
+
+
+ Determines whether the specified MemberInfo can be read.
+
+ The MemberInfo to determine whether can be read.
+ /// if set to true then allow the member to be gotten non-publicly.
+
+ true if the specified MemberInfo can be read; otherwise, false.
+
+
+
+
+ Determines whether the specified MemberInfo can be set.
+
+ The MemberInfo to determine whether can be set.
+ if set to true then allow the member to be set non-publicly.
+ if set to true then allow the member to be set if read-only.
+
+ true if the specified MemberInfo can be set; otherwise, false.
+
+
+
+
+ Determines whether the string is all white space. Empty string will return false.
+
+ The string to test whether it is all white space.
+
+ true if the string is all white space; otherwise, false.
+
+
+
+
+ Indicating whether a property is required.
+
+
+
+
+ The property is not required. The default state.
+
+
+
+
+ The property must be defined in JSON but can be a null value.
+
+
+
+
+ The property must be defined in JSON and cannot be a null value.
+
+
+
+
+ The property is not required but it cannot be a null value.
+
+
+
+
+ Specifies reference handling options for the .
+ Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement ISerializable.
+
+
+
+
+
+
+
+ Do not preserve references when serializing types.
+
+
+
+
+ Preserve references when serializing into a JSON object structure.
+
+
+
+
+ Preserve references when serializing into a JSON array structure.
+
+
+
+
+ Preserve references when serializing.
+
+
+
+
+ Provides an interface to enable a class to return line and position information.
+
+
+
+
+ Gets a value indicating whether the class can return line information.
+
+
+ true if LineNumber and LinePosition can be provided; otherwise, false.
+
+
+
+
+ Gets the current line number.
+
+ The current line number or 0 if no line information is available (for example, HasLineInfo returns false).
+
+
+
+ Gets the current line position.
+
+ The current line position or 0 if no line information is available (for example, HasLineInfo returns false).
+
+
+
+ Instructs the how to serialize the collection.
+
+
+
+
+ Gets or sets a value indicating whether null items are allowed in the collection.
+
+ true if null items are allowed in the collection; otherwise, false.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with a flag indicating whether the array can contain null items
+
+ A flag indicating whether the array can contain null items.
+
+
+
+ Initializes a new instance of the class with the specified container Id.
+
+ The container Id.
+
+
+
+ Instructs the how to serialize the object.
+
+
+
+
+ Gets or sets the id.
+
+ The id.
+
+
+
+ Gets or sets the title.
+
+ The title.
+
+
+
+ Gets or sets the description.
+
+ The description.
+
+
+
+ Gets or sets the collection's items converter.
+
+ The collection's items converter.
+
+
+
+ The parameter list to use when constructing the described by ItemConverterType.
+ If null, the default constructor is used.
+ When non-null, there must be a constructor defined in the that exactly matches the number,
+ order, and type of these parameters.
+
+
+ [JsonContainer(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })]
+
+
+
+
+ Gets or sets the of the .
+
+ The of the .
+
+
+
+ The parameter list to use when constructing the described by NamingStrategyType.
+ If null, the default constructor is used.
+ When non-null, there must be a constructor defined in the that exactly matches the number,
+ order, and type of these parameters.
+
+
+ [JsonContainer(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })]
+
+
+
+
+ Gets or sets a value that indicates whether to preserve object references.
+
+
+ true to keep object reference; otherwise, false. The default is false.
+
+
+
+
+ Gets or sets a value that indicates whether to preserve collection's items references.
+
+
+ true to keep collection's items object references; otherwise, false. The default is false.
+
+
+
+
+ Gets or sets the reference loop handling used when serializing the collection's items.
+
+ The reference loop handling.
+
+
+
+ Gets or sets the type name handling used when serializing the collection's items.
+
+ The type name handling.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified container Id.
+
+ The container Id.
+
+
+
+ Specifies default value handling options for the .
+
+
+
+
+
+
+
+
+ Include members where the member value is the same as the member's default value when serializing objects.
+ Included members are written to JSON. Has no effect when deserializing.
+
+
+
+
+ Ignore members where the member value is the same as the member's default value when serializing objects
+ so that is is not written to JSON.
+ This option will ignore all default values (e.g. null for objects and nullable types; 0 for integers,
+ decimals and floating point numbers; and false for booleans). The default value ignored can be changed by
+ placing the on the property.
+
+
+
+
+ Members with a default value but no JSON will be set to their default value when deserializing.
+
+
+
+
+ Ignore members where the member value is the same as the member's default value when serializing objects
+ and sets members to their default value when deserializing.
+
+
+
+
+ Instructs the to use the specified when serializing the member or class.
+
+
+
+
+ Gets the of the .
+
+ The of the .
+
+
+
+ The parameter list to use when constructing the described by ConverterType.
+ If null, the default constructor is used.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Type of the .
+
+
+
+ Initializes a new instance of the class.
+
+ Type of the .
+ Parameter list to use when constructing the . Can be null.
+
+
+
+ Instructs the how to serialize the object.
+
+
+
+
+ Gets or sets the member serialization.
+
+ The member serialization.
+
+
+
+ Gets or sets a value that indicates whether the object's properties are required.
+
+
+ A value indicating whether the object's properties are required.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified member serialization.
+
+ The member serialization.
+
+
+
+ Initializes a new instance of the class with the specified container Id.
+
+ The container Id.
+
+
+
+ Specifies the settings on a object.
+
+
+
+
+ Gets or sets how reference loops (e.g. a class referencing itself) is handled.
+
+ Reference loop handling.
+
+
+
+ Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization.
+
+ Missing member handling.
+
+
+
+ Gets or sets how objects are created during deserialization.
+
+ The object creation handling.
+
+
+
+ Gets or sets how null values are handled during serialization and deserialization.
+
+ Null value handling.
+
+
+
+ Gets or sets how null default are handled during serialization and deserialization.
+
+ The default value handling.
+
+
+
+ Gets or sets a collection that will be used during serialization.
+
+ The converters.
+
+
+
+ Gets or sets how object references are preserved by the serializer.
+
+ The preserve references handling.
+
+
+
+ Gets or sets how type name writing and reading is handled by the serializer.
+
+
+ should be used with caution when your application deserializes JSON from an external source.
+ Incoming types should be validated with a custom
+ when deserializing with a value other than TypeNameHandling.None.
+
+ The type name handling.
+
+
+
+ Gets or sets how metadata properties are used during deserialization.
+
+ The metadata properties handling.
+
+
+
+ Gets or sets how a type name assembly is written and resolved by the serializer.
+
+ The type name assembly format.
+
+
+
+ Gets or sets how constructors are used during deserialization.
+
+ The constructor handling.
+
+
+
+ Gets or sets the contract resolver used by the serializer when
+ serializing .NET objects to JSON and vice versa.
+
+ The contract resolver.
+
+
+
+ Gets or sets the equality comparer used by the serializer when comparing references.
+
+ The equality comparer.
+
+
+
+ Gets or sets the used by the serializer when resolving references.
+
+ The reference resolver.
+
+
+
+ Gets or sets a function that creates the used by the serializer when resolving references.
+
+ A function that creates the used by the serializer when resolving references.
+
+
+
+ Gets or sets the used by the serializer when writing trace messages.
+
+ The trace writer.
+
+
+
+ Gets or sets the used by the serializer when resolving type names.
+
+ The binder.
+
+
+
+ Gets or sets the error handler called during serialization and deserialization.
+
+ The error handler called during serialization and deserialization.
+
+
+
+ Gets or sets the used by the serializer when invoking serialization callback methods.
+
+ The context.
+
+
+
+ Get or set how and values are formatted when writing JSON text, and the expected date format when reading JSON text.
+
+
+
+
+ Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a .
+
+
+
+
+ Indicates how JSON text output is formatted.
+
+
+
+
+ Get or set how dates are written to JSON text.
+
+
+
+
+ Get or set how time zones are handling during serialization and deserialization.
+
+
+
+
+ Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON.
+
+
+
+
+ Get or set how special floating point numbers, e.g. ,
+ and ,
+ are written as JSON.
+
+
+
+
+ Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text.
+
+
+
+
+ Get or set how strings are escaped when writing JSON text.
+
+
+
+
+ Gets or sets the culture used when reading JSON. Defaults to .
+
+
+
+
+ Gets a value indicating whether there will be a check for additional content after deserializing an object.
+
+
+ true if there will be a check for additional content after deserializing an object; otherwise, false.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Implements a reader that provides validation.
+
+
+ JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details.
+
+
+
+
+
+ Sets an event handler for receiving schema validation errors.
+
+
+
+
+ Gets the text value of the current JSON token.
+
+
+
+
+
+ Gets the depth of the current token in the JSON document.
+
+ The depth of the current token in the JSON document.
+
+
+
+ Gets the path of the current JSON token.
+
+
+
+
+ Gets the quotation mark character used to enclose the value of a string.
+
+
+
+
+
+ Gets the type of the current JSON token.
+
+
+
+
+
+ Gets the Common Language Runtime (CLR) type for the current JSON token.
+
+
+
+
+
+ Initializes a new instance of the class that
+ validates the content returned from the given .
+
+ The to read from while validating.
+
+
+
+ Gets or sets the schema.
+
+ The schema.
+
+
+
+ Gets the used to construct this .
+
+ The specified in the constructor.
+
+
+
+ Reads the next JSON token from the stream as a .
+
+ A .
+
+
+
+ Reads the next JSON token from the stream as a [].
+
+
+ A [] or a null reference if the next JSON token is null.
+
+
+
+
+ Reads the next JSON token from the stream as a .
+
+ A .
+
+
+
+ Reads the next JSON token from the stream as a .
+
+ A .
+
+
+
+ Reads the next JSON token from the stream as a .
+
+ A .
+
+
+
+ Reads the next JSON token from the stream as a .
+
+ A . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the stream as a .
+
+ A . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the stream as a .
+
+ A .
+
+
+
+ Reads the next JSON token from the stream.
+
+
+ true if the next token was read successfully; false if there are no more tokens to read.
+
+
+
+
+ Specifies the member serialization options for the .
+
+
+
+
+ All public members are serialized by default. Members can be excluded using or .
+ This is the default member serialization mode.
+
+
+
+
+ Only members marked with or are serialized.
+ This member serialization mode can also be set by marking the class with .
+
+
+
+
+ All public and private fields are serialized. Members can be excluded using or .
+ This member serialization mode can also be set by marking the class with
+ and setting IgnoreSerializableAttribute on to false.
+
+
+
+
+ Specifies how object creation is handled by the .
+
+
+
+
+ Reuse existing objects, create new objects when needed.
+
+
+
+
+ Only reuse existing objects.
+
+
+
+
+ Always create new objects.
+
+
+
+
+ Implements a reader that provides fast, non-cached, forward-only access to JSON text data.
+
+
+
+
+ Initializes a new instance of the class with the specified .
+
+ The TextReader containing the XML data to read.
+
+
+
+ Gets or sets the reader's character buffer pool.
+
+
+
+
+ Reads the next JSON token from the stream.
+
+
+ true if the next token was read successfully; false if there are no more tokens to read.
+
+
+
+
+ Reads the next JSON token from the stream as a .
+
+ A . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the stream as a .
+
+ A . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the stream as a .
+
+ A . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the stream as a [].
+
+ A [] or a null reference if the next JSON token is null. This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the stream as a .
+
+ A . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the stream as a .
+
+ A . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the stream as a .
+
+ A . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the stream as a .
+
+ A . This method will return null at the end of an array.
+
+
+
+ Changes the state to closed.
+
+
+
+
+ Gets a value indicating whether the class can return line information.
+
+
+ true if LineNumber and LinePosition can be provided; otherwise, false.
+
+
+
+
+ Gets the current line number.
+
+
+ The current line number or 0 if no line information is available (for example, HasLineInfo returns false).
+
+
+
+
+ Gets the current line position.
+
+
+ The current line position or 0 if no line information is available (for example, HasLineInfo returns false).
+
+
+
+
+ Instructs the to always serialize the member with the specified name.
+
+
+
+
+ Gets or sets the used when serializing the property's collection items.
+
+ The collection's items .
+
+
+
+ The parameter list to use when constructing the described by ItemConverterType.
+ If null, the default constructor is used.
+ When non-null, there must be a constructor defined in the that exactly matches the number,
+ order, and type of these parameters.
+
+
+ [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })]
+
+
+
+
+ Gets or sets the of the .
+
+ The of the .
+
+
+
+ The parameter list to use when constructing the described by NamingStrategyType.
+ If null, the default constructor is used.
+ When non-null, there must be a constructor defined in the that exactly matches the number,
+ order, and type of these parameters.
+
+
+ [JsonProperty(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })]
+
+
+
+
+ Gets or sets the null value handling used when serializing this property.
+
+ The null value handling.
+
+
+
+ Gets or sets the default value handling used when serializing this property.
+
+ The default value handling.
+
+
+
+ Gets or sets the reference loop handling used when serializing this property.
+
+ The reference loop handling.
+
+
+
+ Gets or sets the object creation handling used when deserializing this property.
+
+ The object creation handling.
+
+
+
+ Gets or sets the type name handling used when serializing this property.
+
+ The type name handling.
+
+
+
+ Gets or sets whether this property's value is serialized as a reference.
+
+ Whether this property's value is serialized as a reference.
+
+
+
+ Gets or sets the order of serialization of a member.
+
+ The numeric order of serialization.
+
+
+
+ Gets or sets a value indicating whether this property is required.
+
+
+ A value indicating whether this property is required.
+
+
+
+
+ Gets or sets the name of the property.
+
+ The name of the property.
+
+
+
+ Gets or sets the the reference loop handling used when serializing the property's collection items.
+
+ The collection's items reference loop handling.
+
+
+
+ Gets or sets the the type name handling used when serializing the property's collection items.
+
+ The collection's items type name handling.
+
+
+
+ Gets or sets whether this property's collection items are serialized as a reference.
+
+ Whether this property's collection items are serialized as a reference.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified name.
+
+ Name of the property.
+
+
+
+ Instructs the not to serialize the public field or public read/write property value.
+
+
+
+
+ Implements a writer that provides a fast, non-cached, forward-only way of generating JSON data.
+
+
+
+
+ Gets or sets the writer's character array pool.
+
+
+
+
+ Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented.
+
+
+
+
+ Gets or sets which character to use to quote attribute values.
+
+
+
+
+ Gets or sets which character to use for indenting when is set to Formatting.Indented.
+
+
+
+
+ Gets or sets a value indicating whether object names will be surrounded with quotes.
+
+
+
+
+ Creates an instance of the JsonWriter class using the specified .
+
+ The TextWriter to write to.
+
+
+
+ Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream.
+
+
+
+
+ Closes this stream and the underlying stream.
+
+
+
+
+ Writes the beginning of a JSON object.
+
+
+
+
+ Writes the beginning of a JSON array.
+
+
+
+
+ Writes the start of a constructor with the given name.
+
+ The name of the constructor.
+
+
+
+ Writes the specified end token.
+
+ The end token to write.
+
+
+
+ Writes the property name of a name/value pair on a JSON object.
+
+ The name of the property.
+
+
+
+ Writes the property name of a name/value pair on a JSON object.
+
+ The name of the property.
+ A flag to indicate whether the text should be escaped when it is written as a JSON property name.
+
+
+
+ Writes indent characters.
+
+
+
+
+ Writes the JSON value delimiter.
+
+
+
+
+ Writes an indent space.
+
+
+
+
+ Writes a value.
+ An error will raised if the value cannot be written as a single JSON token.
+
+ The value to write.
+
+
+
+ Writes a null value.
+
+
+
+
+ Writes an undefined value.
+
+
+
+
+ Writes raw JSON.
+
+ The raw JSON to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a [] value.
+
+ The [] value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes out a comment /*...*/ containing the specified text.
+
+ Text to place inside the comment.
+
+
+
+ Writes out the given white space.
+
+ The string of white space characters.
+
+
+
+ The exception thrown when an error occurs while reading JSON text.
+
+
+
+
+ Gets the path to the JSON where the error occurred.
+
+ The path to the JSON where the error occurred.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class
+ with a specified error message.
+
+ The error message that explains the reason for the exception.
+
+
+
+ Initializes a new instance of the class
+ with a specified error message and a reference to the inner exception that is the cause of this exception.
+
+ The error message that explains the reason for the exception.
+ The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.
+
+
+
+ Initializes a new instance of the class.
+
+ The that holds the serialized object data about the exception being thrown.
+ The that contains contextual information about the source or destination.
+ The parameter is null.
+ The class name is null or is zero (0).
+
+
+
+ The exception thrown when an error occurs while reading JSON text.
+
+
+
+
+ Gets the line number indicating where the error occurred.
+
+ The line number indicating where the error occurred.
+
+
+
+ Gets the line position indicating where the error occurred.
+
+ The line position indicating where the error occurred.
+
+
+
+ Gets the path to the JSON where the error occurred.
+
+ The path to the JSON where the error occurred.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class
+ with a specified error message.
+
+ The error message that explains the reason for the exception.
+
+
+
+ Initializes a new instance of the class
+ with a specified error message and a reference to the inner exception that is the cause of this exception.
+
+ The error message that explains the reason for the exception.
+ The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.
+
+
+
+ Initializes a new instance of the class.
+
+ The that holds the serialized object data about the exception being thrown.
+ The that contains contextual information about the source or destination.
+ The parameter is null.
+ The class name is null or is zero (0).
+
+
+
+ Converts an object to and from JSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+
+ Gets the of the JSON produced by the JsonConverter.
+
+
+ JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details.
+
+
+ The of the JSON produced by the JsonConverter.
+
+
+
+ Gets a value indicating whether this can read JSON.
+
+ true if this can read JSON; otherwise, false.
+
+
+
+ Gets a value indicating whether this can write JSON.
+
+ true if this can write JSON; otherwise, false.
+
+
+
+ Implements a collection of .
+
+
+
+
+ Implements a reader that provides fast, non-cached, forward-only access to serialized JSON data.
+
+
+
+
+ Specifies the state of the reader.
+
+
+
+
+ The Read method has not been called.
+
+
+
+
+ The end of the file has been reached successfully.
+
+
+
+
+ Reader is at a property.
+
+
+
+
+ Reader is at the start of an object.
+
+
+
+
+ Reader is in an object.
+
+
+
+
+ Reader is at the start of an array.
+
+
+
+
+ Reader is in an array.
+
+
+
+
+ The Close method has been called.
+
+
+
+
+ Reader has just read a value.
+
+
+
+
+ Reader is at the start of a constructor.
+
+
+
+
+ Reader in a constructor.
+
+
+
+
+ An error occurred that prevents the read operation from continuing.
+
+
+
+
+ The end of the file has been reached successfully.
+
+
+
+
+ Gets the current reader state.
+
+ The current reader state.
+
+
+
+ Gets or sets a value indicating whether the underlying stream or
+ should be closed when the reader is closed.
+
+
+ true to close the underlying stream or when
+ the reader is closed; otherwise false. The default is true.
+
+
+
+
+ Gets or sets a value indicating whether multiple pieces of JSON content can
+ be read from a continuous stream without erroring.
+
+
+ true to support reading multiple pieces of JSON content; otherwise false. The default is false.
+
+
+
+
+ Gets the quotation mark character used to enclose the value of a string.
+
+
+
+
+ Get or set how time zones are handling when reading JSON.
+
+
+
+
+ Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON.
+
+
+
+
+ Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text.
+
+
+
+
+ Get or set how custom date formatted strings are parsed when reading JSON.
+
+
+
+
+ Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a .
+
+
+
+
+ Gets the type of the current JSON token.
+
+
+
+
+ Gets the text value of the current JSON token.
+
+
+
+
+ Gets The Common Language Runtime (CLR) type for the current JSON token.
+
+
+
+
+ Gets the depth of the current token in the JSON document.
+
+ The depth of the current token in the JSON document.
+
+
+
+ Gets the path of the current JSON token.
+
+
+
+
+ Gets or sets the culture used when reading JSON. Defaults to .
+
+
+
+
+ Initializes a new instance of the class with the specified .
+
+
+
+
+ Reads the next JSON token from the stream.
+
+ true if the next token was read successfully; false if there are no more tokens to read.
+
+
+
+ Reads the next JSON token from the stream as a .
+
+ A . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the stream as a .
+
+ A . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the stream as a [].
+
+ A [] or a null reference if the next JSON token is null. This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the stream as a .
+
+ A . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the stream as a .
+
+ A . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the stream as a .
+
+ A . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the stream as a .
+
+ A . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the stream as a .
+
+ A . This method will return null at the end of an array.
+
+
+
+ Skips the children of the current token.
+
+
+
+
+ Sets the current token.
+
+ The new token.
+
+
+
+ Sets the current token and value.
+
+ The new token.
+ The value.
+
+
+
+ Sets the state based on current token type.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Changes the to Closed.
+
+
+
+
+ Provides methods for converting between common language runtime types and JSON types.
+
+
+
+
+
+
+
+ Gets or sets a function that creates default .
+ Default settings are automatically used by serialization methods on ,
+ and and on .
+ To serialize without using any default settings create a with
+ .
+
+
+
+
+ Implements JavaScript's boolean value true as a string. This field is read-only.
+
+
+
+
+ Implements JavaScript's boolean value false as a string. This field is read-only.
+
+
+
+
+ Implements JavaScript's null as a string. This field is read-only.
+
+
+
+
+ Implements JavaScript's undefined as a string. This field is read-only.
+
+
+
+
+ Implements JavaScript's positive infinity as a string. This field is read-only.
+
+
+
+
+ Implements JavaScript's negative infinity as a string. This field is read-only.
+
+
+
+
+ Implements JavaScript's NaN as a string. This field is read-only.
+
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation using the specified.
+
+ The value to convert.
+ The format the date will be converted to.
+ The time zone handling when the date is converted to a string.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation using the specified.
+
+ The value to convert.
+ The format the date will be converted to.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ The string delimiter character.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ The string delimiter character.
+ The string escape handling.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Serializes the specified object to a JSON string.
+
+ The object to serialize.
+ A JSON string representation of the object.
+
+
+
+ Serializes the specified object to a JSON string using formatting.
+
+ The object to serialize.
+ Indicates how the output is formatted.
+
+ A JSON string representation of the object.
+
+
+
+
+ Serializes the specified object to a JSON string using a collection of .
+
+ The object to serialize.
+ A collection converters used while serializing.
+ A JSON string representation of the object.
+
+
+
+ Serializes the specified object to a JSON string using formatting and a collection of .
+
+ The object to serialize.
+ Indicates how the output is formatted.
+ A collection converters used while serializing.
+ A JSON string representation of the object.
+
+
+
+ Serializes the specified object to a JSON string using .
+
+ The object to serialize.
+ The used to serialize the object.
+ If this is null, default serialization settings will be used.
+
+ A JSON string representation of the object.
+
+
+
+
+ Serializes the specified object to a JSON string using a type, formatting and .
+
+ The object to serialize.
+ The used to serialize the object.
+ If this is null, default serialization settings will be used.
+
+ The type of the value being serialized.
+ This parameter is used when is Auto to write out the type name if the type of the value does not match.
+ Specifing the type is optional.
+
+
+ A JSON string representation of the object.
+
+
+
+
+ Serializes the specified object to a JSON string using formatting and .
+
+ The object to serialize.
+ Indicates how the output is formatted.
+ The used to serialize the object.
+ If this is null, default serialization settings will be used.
+
+ A JSON string representation of the object.
+
+
+
+
+ Serializes the specified object to a JSON string using a type, formatting and .
+
+ The object to serialize.
+ Indicates how the output is formatted.
+ The used to serialize the object.
+ If this is null, default serialization settings will be used.
+
+ The type of the value being serialized.
+ This parameter is used when is Auto to write out the type name if the type of the value does not match.
+ Specifing the type is optional.
+
+
+ A JSON string representation of the object.
+
+
+
+
+ Deserializes the JSON to a .NET object.
+
+ The JSON to deserialize.
+ The deserialized object from the JSON string.
+
+
+
+ Deserializes the JSON to a .NET object using .
+
+ The JSON to deserialize.
+
+ The used to deserialize the object.
+ If this is null, default serialization settings will be used.
+
+ The deserialized object from the JSON string.
+
+
+
+ Deserializes the JSON to the specified .NET type.
+
+ The JSON to deserialize.
+ The of object being deserialized.
+ The deserialized object from the JSON string.
+
+
+
+ Deserializes the JSON to the specified .NET type.
+
+ The type of the object to deserialize to.
+ The JSON to deserialize.
+ The deserialized object from the JSON string.
+
+
+
+ Deserializes the JSON to the given anonymous type.
+
+
+ The anonymous type to deserialize to. This can't be specified
+ traditionally and must be infered from the anonymous type passed
+ as a parameter.
+
+ The JSON to deserialize.
+ The anonymous type object.
+ The deserialized anonymous type from the JSON string.
+
+
+
+ Deserializes the JSON to the given anonymous type using .
+
+
+ The anonymous type to deserialize to. This can't be specified
+ traditionally and must be infered from the anonymous type passed
+ as a parameter.
+
+ The JSON to deserialize.
+ The anonymous type object.
+
+ The used to deserialize the object.
+ If this is null, default serialization settings will be used.
+
+ The deserialized anonymous type from the JSON string.
+
+
+
+ Deserializes the JSON to the specified .NET type using a collection of .
+
+ The type of the object to deserialize to.
+ The JSON to deserialize.
+ Converters to use while deserializing.
+ The deserialized object from the JSON string.
+
+
+
+ Deserializes the JSON to the specified .NET type using .
+
+ The type of the object to deserialize to.
+ The object to deserialize.
+
+ The used to deserialize the object.
+ If this is null, default serialization settings will be used.
+
+ The deserialized object from the JSON string.
+
+
+
+ Deserializes the JSON to the specified .NET type using a collection of .
+
+ The JSON to deserialize.
+ The type of the object to deserialize.
+ Converters to use while deserializing.
+ The deserialized object from the JSON string.
+
+
+
+ Deserializes the JSON to the specified .NET type using .
+
+ The JSON to deserialize.
+ The type of the object to deserialize to.
+
+ The used to deserialize the object.
+ If this is null, default serialization settings will be used.
+
+ The deserialized object from the JSON string.
+
+
+
+ Populates the object with values from the JSON string.
+
+ The JSON to populate values from.
+ The target object to populate values onto.
+
+
+
+ Populates the object with values from the JSON string using .
+
+ The JSON to populate values from.
+ The target object to populate values onto.
+
+ The used to deserialize the object.
+ If this is null, default serialization settings will be used.
+
+
+
+
+ Serializes the XML node to a JSON string.
+
+ The node to serialize.
+ A JSON string of the XmlNode.
+
+
+
+ Serializes the XML node to a JSON string using formatting.
+
+ The node to serialize.
+ Indicates how the output is formatted.
+ A JSON string of the XmlNode.
+
+
+
+ Serializes the XML node to a JSON string using formatting and omits the root object if is true.
+
+ The node to serialize.
+ Indicates how the output is formatted.
+ Omits writing the root object.
+ A JSON string of the XmlNode.
+
+
+
+ Deserializes the XmlNode from a JSON string.
+
+ The JSON string.
+ The deserialized XmlNode
+
+
+
+ Deserializes the XmlNode from a JSON string nested in a root elment specified by .
+
+ The JSON string.
+ The name of the root element to append when deserializing.
+ The deserialized XmlNode
+
+
+
+ Deserializes the XmlNode from a JSON string nested in a root elment specified by
+ and writes a .NET array attribute for collections.
+
+ The JSON string.
+ The name of the root element to append when deserializing.
+
+ A flag to indicate whether to write the Json.NET array attribute.
+ This attribute helps preserve arrays when converting the written XML back to JSON.
+
+ The deserialized XmlNode
+
+
+
+ Serializes the to a JSON string.
+
+ The node to convert to JSON.
+ A JSON string of the XNode.
+
+
+
+ Serializes the to a JSON string using formatting.
+
+ The node to convert to JSON.
+ Indicates how the output is formatted.
+ A JSON string of the XNode.
+
+
+
+ Serializes the to a JSON string using formatting and omits the root object if is true.
+
+ The node to serialize.
+ Indicates how the output is formatted.
+ Omits writing the root object.
+ A JSON string of the XNode.
+
+
+
+ Deserializes the from a JSON string.
+
+ The JSON string.
+ The deserialized XNode
+
+
+
+ Deserializes the from a JSON string nested in a root elment specified by .
+
+ The JSON string.
+ The name of the root element to append when deserializing.
+ The deserialized XNode
+
+
+
+ Deserializes the from a JSON string nested in a root elment specified by
+ and writes a .NET array attribute for collections.
+
+ The JSON string.
+ The name of the root element to append when deserializing.
+
+ A flag to indicate whether to write the Json.NET array attribute.
+ This attribute helps preserve arrays when converting the written XML back to JSON.
+
+ The deserialized XNode
+
+
+
+ The exception thrown when an error occurs during JSON serialization or deserialization.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class
+ with a specified error message.
+
+ The error message that explains the reason for the exception.
+
+
+
+ Initializes a new instance of the class
+ with a specified error message and a reference to the inner exception that is the cause of this exception.
+
+ The error message that explains the reason for the exception.
+ The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.
+
+
+
+ Initializes a new instance of the class.
+
+ The that holds the serialized object data about the exception being thrown.
+ The that contains contextual information about the source or destination.
+ The parameter is null.
+ The class name is null or is zero (0).
+
+
+
+ Serializes and deserializes objects into and from the JSON format.
+ The enables you to control how objects are encoded into JSON.
+
+
+
+
+ Occurs when the errors during serialization and deserialization.
+
+
+
+
+ Gets or sets the used by the serializer when resolving references.
+
+
+
+
+ Gets or sets the used by the serializer when resolving type names.
+
+
+
+
+ Gets or sets the used by the serializer when writing trace messages.
+
+ The trace writer.
+
+
+
+ Gets or sets the equality comparer used by the serializer when comparing references.
+
+ The equality comparer.
+
+
+
+ Gets or sets how type name writing and reading is handled by the serializer.
+
+
+ should be used with caution when your application deserializes JSON from an external source.
+ Incoming types should be validated with a custom
+ when deserializing with a value other than TypeNameHandling.None.
+
+
+
+
+ Gets or sets how a type name assembly is written and resolved by the serializer.
+
+ The type name assembly format.
+
+
+
+ Gets or sets how object references are preserved by the serializer.
+
+
+
+
+ Get or set how reference loops (e.g. a class referencing itself) is handled.
+
+
+
+
+ Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization.
+
+
+
+
+ Get or set how null values are handled during serialization and deserialization.
+
+
+
+
+ Get or set how null default are handled during serialization and deserialization.
+
+
+
+
+ Gets or sets how objects are created during deserialization.
+
+ The object creation handling.
+
+
+
+ Gets or sets how constructors are used during deserialization.
+
+ The constructor handling.
+
+
+
+ Gets or sets how metadata properties are used during deserialization.
+
+ The metadata properties handling.
+
+
+
+ Gets a collection that will be used during serialization.
+
+ Collection that will be used during serialization.
+
+
+
+ Gets or sets the contract resolver used by the serializer when
+ serializing .NET objects to JSON and vice versa.
+
+
+
+
+ Gets or sets the used by the serializer when invoking serialization callback methods.
+
+ The context.
+
+
+
+ Indicates how JSON text output is formatted.
+
+
+
+
+ Get or set how dates are written to JSON text.
+
+
+
+
+ Get or set how time zones are handling during serialization and deserialization.
+
+
+
+
+ Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON.
+
+
+
+
+ Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text.
+
+
+
+
+ Get or set how special floating point numbers, e.g. ,
+ and ,
+ are written as JSON text.
+
+
+
+
+ Get or set how strings are escaped when writing JSON text.
+
+
+
+
+ Get or set how and values are formatted when writing JSON text, and the expected date format when reading JSON text.
+
+
+
+
+ Gets or sets the culture used when reading JSON. Defaults to .
+
+
+
+
+ Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a .
+
+
+
+
+ Gets a value indicating whether there will be a check for additional JSON content after deserializing an object.
+
+
+ true if there will be a check for additional JSON content after deserializing an object; otherwise, false.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Creates a new instance.
+ The will not use default settings
+ from .
+
+
+ A new instance.
+ The will not use default settings
+ from .
+
+
+
+
+ Creates a new instance using the specified .
+ The will not use default settings
+ from .
+
+ The settings to be applied to the .
+
+ A new instance using the specified .
+ The will not use default settings
+ from .
+
+
+
+
+ Creates a new instance.
+ The will use default settings
+ from .
+
+
+ A new instance.
+ The will use default settings
+ from .
+
+
+
+
+ Creates a new instance using the specified .
+ The will use default settings
+ from as well as the specified .
+
+ The settings to be applied to the .
+
+ A new instance using the specified .
+ The will use default settings
+ from as well as the specified .
+
+
+
+
+ Populates the JSON values onto the target object.
+
+ The that contains the JSON structure to reader values from.
+ The target object to populate values onto.
+
+
+
+ Populates the JSON values onto the target object.
+
+ The that contains the JSON structure to reader values from.
+ The target object to populate values onto.
+
+
+
+ Deserializes the JSON structure contained by the specified .
+
+ The that contains the JSON structure to deserialize.
+ The being deserialized.
+
+
+
+ Deserializes the JSON structure contained by the specified
+ into an instance of the specified type.
+
+ The containing the object.
+ The of object being deserialized.
+ The instance of being deserialized.
+
+
+
+ Deserializes the JSON structure contained by the specified
+ into an instance of the specified type.
+
+ The containing the object.
+ The type of the object to deserialize.
+ The instance of being deserialized.
+
+
+
+ Deserializes the JSON structure contained by the specified
+ into an instance of the specified type.
+
+ The containing the object.
+ The of object being deserialized.
+ The instance of being deserialized.
+
+
+
+ Serializes the specified and writes the JSON structure
+ to a Stream using the specified .
+
+ The used to write the JSON structure.
+ The to serialize.
+
+
+
+ Serializes the specified and writes the JSON structure
+ to a Stream using the specified .
+
+ The used to write the JSON structure.
+ The to serialize.
+
+ The type of the value being serialized.
+ This parameter is used when is Auto to write out the type name if the type of the value does not match.
+ Specifing the type is optional.
+
+
+
+
+ Serializes the specified and writes the JSON structure
+ to a Stream using the specified .
+
+ The used to write the JSON structure.
+ The to serialize.
+
+ The type of the value being serialized.
+ This parameter is used when is Auto to write out the type name if the type of the value does not match.
+ Specifing the type is optional.
+
+
+
+
+ Serializes the specified and writes the JSON structure
+ to a Stream using the specified .
+
+ The used to write the JSON structure.
+ The to serialize.
+
+
+
+
+ Contains the JSON schema extension methods.
+
+
+ JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details.
+
+
+
+
+
+
+ Determines whether the is valid.
+
+
+ JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details.
+
+
+ The source to test.
+ The schema to test with.
+
+ true if the specified is valid; otherwise, false.
+
+
+
+
+
+ Determines whether the is valid.
+
+
+ JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details.
+
+
+ The source to test.
+ The schema to test with.
+ When this method returns, contains any error messages generated while validating.
+
+ true if the specified is valid; otherwise, false.
+
+
+
+
+
+ Validates the specified .
+
+
+ JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details.
+
+
+ The source to test.
+ The schema to test with.
+
+
+
+
+ Validates the specified .
+
+
+ JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details.
+
+
+ The source to test.
+ The schema to test with.
+ The validation event handler.
+
+
+
+
+ Returns detailed information about the schema exception.
+
+
+ JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details.
+
+
+
+
+
+ Gets the line number indicating where the error occurred.
+
+ The line number indicating where the error occurred.
+
+
+
+ Gets the line position indicating where the error occurred.
+
+ The line position indicating where the error occurred.
+
+
+
+ Gets the path to the JSON where the error occurred.
+
+ The path to the JSON where the error occurred.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class
+ with a specified error message.
+
+ The error message that explains the reason for the exception.
+
+
+
+ Initializes a new instance of the class
+ with a specified error message and a reference to the inner exception that is the cause of this exception.
+
+ The error message that explains the reason for the exception.
+ The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.
+
+
+
+ Initializes a new instance of the class.
+
+ The that holds the serialized object data about the exception being thrown.
+ The that contains contextual information about the source or destination.
+ The parameter is null.
+ The class name is null or is zero (0).
+
+
+
+
+ Resolves from an id.
+
+
+ JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details.
+
+
+
+
+
+ Gets or sets the loaded schemas.
+
+ The loaded schemas.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a for the specified reference.
+
+ The id.
+ A for the specified reference.
+
+
+
+
+ Specifies undefined schema Id handling options for the .
+
+
+ JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details.
+
+
+
+
+
+ Do not infer a schema Id.
+
+
+
+
+ Use the .NET type name as the schema Id.
+
+
+
+
+ Use the assembly qualified .NET type name as the schema Id.
+
+
+
+
+
+ Returns detailed information related to the .
+
+
+ JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details.
+
+
+
+
+
+ Gets the associated with the validation error.
+
+ The JsonSchemaException associated with the validation error.
+
+
+
+ Gets the path of the JSON location where the validation error occurred.
+
+ The path of the JSON location where the validation error occurred.
+
+
+
+ Gets the text description corresponding to the validation error.
+
+ The text description.
+
+
+
+
+ Implements the callback method that will handle JSON schema validation events and the .
+
+
+ JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details.
+
+
+
+
+
+
+ An in-memory representation of a JSON Schema.
+
+
+ JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details.
+
+
+
+
+
+ Gets or sets the id.
+
+
+
+
+ Gets or sets the title.
+
+
+
+
+ Gets or sets whether the object is required.
+
+
+
+
+ Gets or sets whether the object is read only.
+
+
+
+
+ Gets or sets whether the object is visible to users.
+
+
+
+
+ Gets or sets whether the object is transient.
+
+
+
+
+ Gets or sets the description of the object.
+
+
+
+
+ Gets or sets the types of values allowed by the object.
+
+ The type.
+
+
+
+ Gets or sets the pattern.
+
+ The pattern.
+
+
+
+ Gets or sets the minimum length.
+
+ The minimum length.
+
+
+
+ Gets or sets the maximum length.
+
+ The maximum length.
+
+
+
+ Gets or sets a number that the value should be divisble by.
+
+ A number that the value should be divisble by.
+
+
+
+ Gets or sets the minimum.
+
+ The minimum.
+
+
+
+ Gets or sets the maximum.
+
+ The maximum.
+
+
+
+ Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute.
+
+ A flag indicating whether the value can not equal the number defined by the "minimum" attribute.
+
+
+
+ Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute.
+
+ A flag indicating whether the value can not equal the number defined by the "maximum" attribute.
+
+
+
+ Gets or sets the minimum number of items.
+
+ The minimum number of items.
+
+
+
+ Gets or sets the maximum number of items.
+
+ The maximum number of items.
+
+
+
+ Gets or sets the of items.
+
+ The of items.
+
+
+
+ Gets or sets a value indicating whether items in an array are validated using the instance at their array position from .
+
+
+ true if items are validated using their array position; otherwise, false.
+
+
+
+
+ Gets or sets the of additional items.
+
+ The of additional items.
+
+
+
+ Gets or sets a value indicating whether additional items are allowed.
+
+
+ true if additional items are allowed; otherwise, false.
+
+
+
+
+ Gets or sets whether the array items must be unique.
+
+
+
+
+ Gets or sets the of properties.
+
+ The of properties.
+
+
+
+ Gets or sets the of additional properties.
+
+ The of additional properties.
+
+
+
+ Gets or sets the pattern properties.
+
+ The pattern properties.
+
+
+
+ Gets or sets a value indicating whether additional properties are allowed.
+
+
+ true if additional properties are allowed; otherwise, false.
+
+
+
+
+ Gets or sets the required property if this property is present.
+
+ The required property if this property is present.
+
+
+
+ Gets or sets the a collection of valid enum values allowed.
+
+ A collection of valid enum values allowed.
+
+
+
+ Gets or sets disallowed types.
+
+ The disallow types.
+
+
+
+ Gets or sets the default value.
+
+ The default value.
+
+
+
+ Gets or sets the collection of that this schema extends.
+
+ The collection of that this schema extends.
+
+
+
+ Gets or sets the format.
+
+ The format.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Reads a from the specified .
+
+ The containing the JSON Schema to read.
+ The object representing the JSON Schema.
+
+
+
+ Reads a from the specified .
+
+ The containing the JSON Schema to read.
+ The to use when resolving schema references.
+ The object representing the JSON Schema.
+
+
+
+ Load a from a string that contains schema JSON.
+
+ A that contains JSON.
+ A populated from the string that contains JSON.
+
+
+
+ Parses the specified json.
+
+ The json.
+ The resolver.
+ A populated from the string that contains JSON.
+
+
+
+ Writes this schema to a .
+
+ A into which this method will write.
+
+
+
+ Writes this schema to a using the specified .
+
+ A into which this method will write.
+ The resolver used.
+
+
+
+ Returns a that Implements the current .
+
+
+ A that Implements the current .
+
+
+
+
+
+ Generates a from a specified .
+
+
+ JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details.
+
+
+
+
+
+ Gets or sets how undefined schemas are handled by the serializer.
+
+
+
+
+ Gets or sets the contract resolver.
+
+ The contract resolver.
+
+
+
+ Generate a from the specified type.
+
+ The type to generate a from.
+ A generated from the specified type.
+
+
+
+ Generate a from the specified type.
+
+ The type to generate a from.
+ The used to resolve schema references.
+ A generated from the specified type.
+
+
+
+ Generate a from the specified type.
+
+ The type to generate a from.
+ Specify whether the generated root will be nullable.
+ A generated from the specified type.
+
+
+
+ Generate a from the specified type.
+
+ The type to generate a from.
+ The used to resolve schema references.
+ Specify whether the generated root will be nullable.
+ A generated from the specified type.
+
+
+
+
+ The value types allowed by the .
+
+
+ JSON Schema validation has been moved to its own package. See http://www.newtonsoft.com/jsonschema for more details.
+
+
+
+
+
+ No type specified.
+
+
+
+
+ String type.
+
+
+
+
+ Float type.
+
+
+
+
+ Integer type.
+
+
+
+
+ Boolean type.
+
+
+
+
+ Object type.
+
+
+
+
+ Array type.
+
+
+
+
+ Null type.
+
+
+
+
+ Any type.
+
+
+
+
+ Specifies missing member handling options for the .
+
+
+
+
+ Ignore a missing member and do not attempt to deserialize it.
+
+
+
+
+ Throw a when a missing member is encountered during deserialization.
+
+
+
+
+ Specifies null value handling options for the .
+
+
+
+
+
+
+
+
+ Include null values when serializing and deserializing objects.
+
+
+
+
+ Ignore null values when serializing and deserializing objects.
+
+
+
+
+ Specifies reference loop handling options for the .
+
+
+
+
+ Throw a when a loop is encountered.
+
+
+
+
+ Ignore loop references and do not serialize.
+
+
+
+
+ Serialize loop references.
+
+
+
+
+ Specifies type name handling options for the .
+
+
+ should be used with caution when your application deserializes JSON from an external source.
+ Incoming types should be validated with a custom
+ when deserializing with a value other than TypeNameHandling.None.
+
+
+
+
+ Do not include the .NET type name when serializing types.
+
+
+
+
+ Include the .NET type name when serializing into a JSON object structure.
+
+
+
+
+ Include the .NET type name when serializing into a JSON array structure.
+
+
+
+
+ Always include the .NET type name when serializing.
+
+
+
+
+ Include the .NET type name when the type of the object being serialized is not the same as its declared type.
+
+
+
+
+ Specifies the type of JSON token.
+
+
+
+
+ This is returned by the if a method has not been called.
+
+
+
+
+ An object start token.
+
+
+
+
+ An array start token.
+
+
+
+
+ A constructor start token.
+
+
+
+
+ An object property name.
+
+
+
+
+ A comment.
+
+
+
+
+ Raw JSON.
+
+
+
+
+ An integer.
+
+
+
+
+ A float.
+
+
+
+
+ A string.
+
+
+
+
+ A boolean.
+
+
+
+
+ A null token.
+
+
+
+
+ An undefined token.
+
+
+
+
+ An object end token.
+
+
+
+
+ An array end token.
+
+
+
+
+ A constructor end token.
+
+
+
+
+ A Date.
+
+
+
+
+ Byte data.
+
+
+
+
+ Implements a writer that provides a fast, non-cached, forward-only way of generating JSON data.
+
+
+
+
+ Gets or sets a value indicating whether the underlying stream or
+ should be closed when the writer is closed.
+
+
+ true to close the underlying stream or when
+ the writer is closed; otherwise false. The default is true.
+
+
+
+
+ Gets the top.
+
+ The top.
+
+
+
+ Gets the state of the writer.
+
+
+
+
+ Gets the path of the writer.
+
+
+
+
+ Indicates how JSON text output is formatted.
+
+
+
+
+ Get or set how dates are written to JSON text.
+
+
+
+
+ Get or set how time zones are handling when writing JSON text.
+
+
+
+
+ Get or set how strings are escaped when writing JSON text.
+
+
+
+
+ Get or set how special floating point numbers, e.g. ,
+ and ,
+ are written to JSON text.
+
+
+
+
+ Get or set how and values are formatting when writing JSON text.
+
+
+
+
+ Gets or sets the culture used when writing JSON. Defaults to .
+
+
+
+
+ Creates an instance of the JsonWriter class.
+
+
+
+
+ Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream.
+
+
+
+
+ Closes this stream and the underlying stream.
+
+
+
+
+ Writes the beginning of a JSON object.
+
+
+
+
+ Writes the end of a JSON object.
+
+
+
+
+ Writes the beginning of a JSON array.
+
+
+
+
+ Writes the end of an array.
+
+
+
+
+ Writes the start of a constructor with the given name.
+
+ The name of the constructor.
+
+
+
+ Writes the end constructor.
+
+
+
+
+ Writes the property name of a name/value pair on a JSON object.
+
+ The name of the property.
+
+
+
+ Writes the property name of a name/value pair on a JSON object.
+
+ The name of the property.
+ A flag to indicate whether the text should be escaped when it is written as a JSON property name.
+
+
+
+ Writes the end of the current JSON object or array.
+
+
+
+
+ Writes the current token and its children.
+
+ The to read the token from.
+
+
+
+ Writes the current token.
+
+ The to read the token from.
+ A flag indicating whether the current token's children should be written.
+
+
+
+ Writes the token and its value.
+
+ The to write.
+
+ The value to write.
+ A value is only required for tokens that have an associated value, e.g. the property name for .
+ A null value can be passed to the method for token's that don't have a value, e.g. .
+
+
+
+ Writes the token.
+
+ The to write.
+
+
+
+ Writes the specified end token.
+
+ The end token to write.
+
+
+
+ Writes indent characters.
+
+
+
+
+ Writes the JSON value delimiter.
+
+
+
+
+ Writes an indent space.
+
+
+
+
+ Writes a null value.
+
+
+
+
+ Writes an undefined value.
+
+
+
+
+ Writes raw JSON without changing the writer's state.
+
+ The raw JSON to write.
+
+
+
+ Writes raw JSON where a value is expected and updates the writer's state.
+
+ The raw JSON to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a [] value.
+
+ The [] value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+ An error will raised if the value cannot be written as a single JSON token.
+
+ The value to write.
+
+
+
+ Writes out a comment /*...*/ containing the specified text.
+
+ Text to place inside the comment.
+
+
+
+ Writes out the given white space.
+
+ The string of white space characters.
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Sets the state of the JsonWriter,
+
+ The JsonToken being written.
+ The value being written.
+
+
+
+ Specifies the state of the .
+
+
+
+
+ An exception has been thrown, which has left the in an invalid state.
+ You may call the method to put the in the Closed state.
+ Any other method calls results in an being thrown.
+
+
+
+
+ The method has been called.
+
+
+
+
+ An object is being written.
+
+
+
+
+ A array is being written.
+
+
+
+
+ A constructor is being written.
+
+
+
+
+ A property is being written.
+
+
+
+
+ A write method has not been called.
+
+
+
+
diff --git a/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.xml.meta b/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.xml.meta
new file mode 100644
index 0000000..42695cf
--- /dev/null
+++ b/Milky Way/Assets/Plugins/Newtonsoft/Newtonsoft.Json.xml.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5e30fc9bc51178448acac0fb76755183
+timeCreated: 1482928756
+licenseType: Free
+TextScriptImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Animations.meta b/Milky Way/Assets/Resources/Animations.meta
similarity index 55%
rename from Milky Way/Assets/Animations.meta
rename to Milky Way/Assets/Resources/Animations.meta
index 54c1449..ce944bc 100644
--- a/Milky Way/Assets/Animations.meta
+++ b/Milky Way/Assets/Resources/Animations.meta
@@ -1,5 +1,9 @@
fileFormatVersion: 2
guid: ddd6aaa3be3085645bb44b7086ee015d
folderAsset: yes
+timeCreated: 1518801332
+licenseType: Free
DefaultImporter:
userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Animations/Button.controller b/Milky Way/Assets/Resources/Animations/Button.controller
similarity index 100%
rename from Milky Way/Assets/Animations/Button.controller
rename to Milky Way/Assets/Resources/Animations/Button.controller
diff --git a/Milky Way/Assets/Animations/Button.controller.meta b/Milky Way/Assets/Resources/Animations/Button.controller.meta
similarity index 100%
rename from Milky Way/Assets/Animations/Button.controller.meta
rename to Milky Way/Assets/Resources/Animations/Button.controller.meta
diff --git a/Milky Way/Assets/Resources/Animations/Main Menu Empty.anim b/Milky Way/Assets/Resources/Animations/Main Menu Empty.anim
new file mode 100644
index 0000000..9ad5989
Binary files /dev/null and b/Milky Way/Assets/Resources/Animations/Main Menu Empty.anim differ
diff --git a/Milky Way/Assets/Animations/MainMenuEmpty.anim.meta b/Milky Way/Assets/Resources/Animations/Main Menu Empty.anim.meta
similarity index 100%
rename from Milky Way/Assets/Animations/MainMenuEmpty.anim.meta
rename to Milky Way/Assets/Resources/Animations/Main Menu Empty.anim.meta
diff --git a/Milky Way/Assets/Resources/Animations/Main Menu Open.anim b/Milky Way/Assets/Resources/Animations/Main Menu Open.anim
new file mode 100644
index 0000000..1ce8162
Binary files /dev/null and b/Milky Way/Assets/Resources/Animations/Main Menu Open.anim differ
diff --git a/Milky Way/Assets/Animations/MainMenuOpen.anim.meta b/Milky Way/Assets/Resources/Animations/Main Menu Open.anim.meta
similarity index 100%
rename from Milky Way/Assets/Animations/MainMenuOpen.anim.meta
rename to Milky Way/Assets/Resources/Animations/Main Menu Open.anim.meta
diff --git a/Milky Way/Assets/Resources/Animations/Main Menu.controller b/Milky Way/Assets/Resources/Animations/Main Menu.controller
new file mode 100644
index 0000000..73641c0
Binary files /dev/null and b/Milky Way/Assets/Resources/Animations/Main Menu.controller differ
diff --git a/Milky Way/Assets/Animations/MainMenu.controller.meta b/Milky Way/Assets/Resources/Animations/Main Menu.controller.meta
similarity index 100%
rename from Milky Way/Assets/Animations/MainMenu.controller.meta
rename to Milky Way/Assets/Resources/Animations/Main Menu.controller.meta
diff --git a/Milky Way/Assets/Resources/Animations/Menu Animation.controller b/Milky Way/Assets/Resources/Animations/Menu Animation.controller
new file mode 100644
index 0000000..548a33b
Binary files /dev/null and b/Milky Way/Assets/Resources/Animations/Menu Animation.controller differ
diff --git a/Milky Way/Assets/Animations/MenuAnimation.controller.meta b/Milky Way/Assets/Resources/Animations/Menu Animation.controller.meta
similarity index 100%
rename from Milky Way/Assets/Animations/MenuAnimation.controller.meta
rename to Milky Way/Assets/Resources/Animations/Menu Animation.controller.meta
diff --git a/Milky Way/Assets/Animations/Panel.controller b/Milky Way/Assets/Resources/Animations/Panel.controller
similarity index 100%
rename from Milky Way/Assets/Animations/Panel.controller
rename to Milky Way/Assets/Resources/Animations/Panel.controller
diff --git a/Milky Way/Assets/Animations/Panel.controller.meta b/Milky Way/Assets/Resources/Animations/Panel.controller.meta
similarity index 100%
rename from Milky Way/Assets/Animations/Panel.controller.meta
rename to Milky Way/Assets/Resources/Animations/Panel.controller.meta
diff --git a/Milky Way/Assets/Resources/Fonts/Roboto.meta b/Milky Way/Assets/Resources/Fonts/Roboto.meta
new file mode 100644
index 0000000..c155f55
--- /dev/null
+++ b/Milky Way/Assets/Resources/Fonts/Roboto.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 43463bfb524f0ae45bfd32030e835c9d
+folderAsset: yes
+timeCreated: 1518657409
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Fonts/Roboto-Light.ttf b/Milky Way/Assets/Resources/Fonts/Roboto/Roboto-Light.ttf
similarity index 100%
rename from Milky Way/Assets/Resources/Fonts/Roboto-Light.ttf
rename to Milky Way/Assets/Resources/Fonts/Roboto/Roboto-Light.ttf
diff --git a/Milky Way/Assets/Resources/Fonts/Roboto-Light.ttf.meta b/Milky Way/Assets/Resources/Fonts/Roboto/Roboto-Light.ttf.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Fonts/Roboto-Light.ttf.meta
rename to Milky Way/Assets/Resources/Fonts/Roboto/Roboto-Light.ttf.meta
diff --git a/Milky Way/Assets/Resources/Fonts/Roboto-Medium.ttf b/Milky Way/Assets/Resources/Fonts/Roboto/Roboto-Medium.ttf
similarity index 100%
rename from Milky Way/Assets/Resources/Fonts/Roboto-Medium.ttf
rename to Milky Way/Assets/Resources/Fonts/Roboto/Roboto-Medium.ttf
diff --git a/Milky Way/Assets/Resources/Fonts/Roboto-Medium.ttf.meta b/Milky Way/Assets/Resources/Fonts/Roboto/Roboto-Medium.ttf.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Fonts/Roboto-Medium.ttf.meta
rename to Milky Way/Assets/Resources/Fonts/Roboto/Roboto-Medium.ttf.meta
diff --git a/Milky Way/Assets/Resources/Fonts/Roboto-Thin.ttf b/Milky Way/Assets/Resources/Fonts/Roboto/Roboto-Thin.ttf
similarity index 100%
rename from Milky Way/Assets/Resources/Fonts/Roboto-Thin.ttf
rename to Milky Way/Assets/Resources/Fonts/Roboto/Roboto-Thin.ttf
diff --git a/Milky Way/Assets/Resources/Fonts/Roboto-Thin.ttf.meta b/Milky Way/Assets/Resources/Fonts/Roboto/Roboto-Thin.ttf.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Fonts/Roboto-Thin.ttf.meta
rename to Milky Way/Assets/Resources/Fonts/Roboto/Roboto-Thin.ttf.meta
diff --git a/Milky Way/Assets/Resources/Materials/Minimap.mat b/Milky Way/Assets/Resources/Materials/Minimap.mat
new file mode 100644
index 0000000..437da91
Binary files /dev/null and b/Milky Way/Assets/Resources/Materials/Minimap.mat differ
diff --git a/Milky Way/Assets/Resources/Materials/Minimap.mat.meta b/Milky Way/Assets/Resources/Materials/Minimap.mat.meta
new file mode 100644
index 0000000..b38025f
--- /dev/null
+++ b/Milky Way/Assets/Resources/Materials/Minimap.mat.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 57571ff48c38afe4b933f2c61b6ad1c7
+timeCreated: 1518798656
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: -1
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Materials/Objects.meta b/Milky Way/Assets/Resources/Materials/Objects.meta
new file mode 100644
index 0000000..791e3ef
--- /dev/null
+++ b/Milky Way/Assets/Resources/Materials/Objects.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 8bced34b4f28dd542b23ac4cf409fc7c
+folderAsset: yes
+timeCreated: 1518656754
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Materials/Black Particle.mat b/Milky Way/Assets/Resources/Materials/Objects/Black Particle.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Black Particle.mat
rename to Milky Way/Assets/Resources/Materials/Objects/Black Particle.mat
diff --git a/Milky Way/Assets/Resources/Materials/Black Particle.mat.meta b/Milky Way/Assets/Resources/Materials/Objects/Black Particle.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Black Particle.mat.meta
rename to Milky Way/Assets/Resources/Materials/Objects/Black Particle.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Blue Diffuse.mat b/Milky Way/Assets/Resources/Materials/Objects/Blue Diffuse.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Blue Diffuse.mat
rename to Milky Way/Assets/Resources/Materials/Objects/Blue Diffuse.mat
diff --git a/Milky Way/Assets/Resources/Materials/Blue Diffuse.mat.meta b/Milky Way/Assets/Resources/Materials/Objects/Blue Diffuse.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Blue Diffuse.mat.meta
rename to Milky Way/Assets/Resources/Materials/Objects/Blue Diffuse.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Objects/Explosions.meta b/Milky Way/Assets/Resources/Materials/Objects/Explosions.meta
new file mode 100644
index 0000000..418b6f4
--- /dev/null
+++ b/Milky Way/Assets/Resources/Materials/Objects/Explosions.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 2f6bd7b8dd9d2034ca1bb35c411103cc
+folderAsset: yes
+timeCreated: 1518656826
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Materials/Objects/Explosions/dummy b/Milky Way/Assets/Resources/Materials/Objects/Explosions/dummy
new file mode 100644
index 0000000..e69de29
diff --git a/Milky Way/Assets/Resources/Materials/Objects/Explosions/dummy.meta b/Milky Way/Assets/Resources/Materials/Objects/Explosions/dummy.meta
new file mode 100644
index 0000000..13e0aad
--- /dev/null
+++ b/Milky Way/Assets/Resources/Materials/Objects/Explosions/dummy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b9818d03b165b7d4db54caf4977ad8cd
+timeCreated: 1518657756
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Materials/Flare Diffuse.mat b/Milky Way/Assets/Resources/Materials/Objects/Flare Diffuse.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Flare Diffuse.mat
rename to Milky Way/Assets/Resources/Materials/Objects/Flare Diffuse.mat
diff --git a/Milky Way/Assets/Resources/Materials/Flare Diffuse.mat.meta b/Milky Way/Assets/Resources/Materials/Objects/Flare Diffuse.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Flare Diffuse.mat.meta
rename to Milky Way/Assets/Resources/Materials/Objects/Flare Diffuse.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Green Diffuse.mat b/Milky Way/Assets/Resources/Materials/Objects/Green Diffuse.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Green Diffuse.mat
rename to Milky Way/Assets/Resources/Materials/Objects/Green Diffuse.mat
diff --git a/Milky Way/Assets/Resources/Materials/Green Diffuse.mat.meta b/Milky Way/Assets/Resources/Materials/Objects/Green Diffuse.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Green Diffuse.mat.meta
rename to Milky Way/Assets/Resources/Materials/Objects/Green Diffuse.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Objects/Items.meta b/Milky Way/Assets/Resources/Materials/Objects/Items.meta
new file mode 100644
index 0000000..317fd84
--- /dev/null
+++ b/Milky Way/Assets/Resources/Materials/Objects/Items.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 103f3b7728af06248866fcf8e27eca59
+folderAsset: yes
+timeCreated: 1518656836
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Materials/Objects/Items/dummy b/Milky Way/Assets/Resources/Materials/Objects/Items/dummy
new file mode 100644
index 0000000..e69de29
diff --git a/Milky Way/Assets/Resources/Materials/Objects/Items/dummy.meta b/Milky Way/Assets/Resources/Materials/Objects/Items/dummy.meta
new file mode 100644
index 0000000..fd442ea
--- /dev/null
+++ b/Milky Way/Assets/Resources/Materials/Objects/Items/dummy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3e2ad5637a3f71d4fab4e2a704629de1
+timeCreated: 1518657756
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Materials/Orange Diffuse.mat b/Milky Way/Assets/Resources/Materials/Objects/Orange Diffuse.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Orange Diffuse.mat
rename to Milky Way/Assets/Resources/Materials/Objects/Orange Diffuse.mat
diff --git a/Milky Way/Assets/Resources/Materials/Orange Diffuse.mat.meta b/Milky Way/Assets/Resources/Materials/Objects/Orange Diffuse.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Orange Diffuse.mat.meta
rename to Milky Way/Assets/Resources/Materials/Objects/Orange Diffuse.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Objects/PowerUps.meta b/Milky Way/Assets/Resources/Materials/Objects/PowerUps.meta
new file mode 100644
index 0000000..8850d3d
--- /dev/null
+++ b/Milky Way/Assets/Resources/Materials/Objects/PowerUps.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 7ed5d73ea156e0a44a395c479d57a1de
+folderAsset: yes
+timeCreated: 1518656841
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Materials/Power Ups/Sand A.mat b/Milky Way/Assets/Resources/Materials/Objects/PowerUps/Sand A.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Power Ups/Sand A.mat
rename to Milky Way/Assets/Resources/Materials/Objects/PowerUps/Sand A.mat
diff --git a/Milky Way/Assets/Resources/Materials/Power Ups/Sand A.mat.meta b/Milky Way/Assets/Resources/Materials/Objects/PowerUps/Sand A.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Power Ups/Sand A.mat.meta
rename to Milky Way/Assets/Resources/Materials/Objects/PowerUps/Sand A.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Power Ups/Sand B.mat b/Milky Way/Assets/Resources/Materials/Objects/PowerUps/Sand B.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Power Ups/Sand B.mat
rename to Milky Way/Assets/Resources/Materials/Objects/PowerUps/Sand B.mat
diff --git a/Milky Way/Assets/Resources/Materials/Power Ups/Sand B.mat.meta b/Milky Way/Assets/Resources/Materials/Objects/PowerUps/Sand B.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Power Ups/Sand B.mat.meta
rename to Milky Way/Assets/Resources/Materials/Objects/PowerUps/Sand B.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Objects/Projectiles.meta b/Milky Way/Assets/Resources/Materials/Objects/Projectiles.meta
new file mode 100644
index 0000000..40255b6
--- /dev/null
+++ b/Milky Way/Assets/Resources/Materials/Objects/Projectiles.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 58890adee198d554bb448279e2a15255
+folderAsset: yes
+timeCreated: 1518656848
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Materials/Objects/Projectiles/dummy b/Milky Way/Assets/Resources/Materials/Objects/Projectiles/dummy
new file mode 100644
index 0000000..e69de29
diff --git a/Milky Way/Assets/Resources/Materials/Objects/Projectiles/dummy.meta b/Milky Way/Assets/Resources/Materials/Objects/Projectiles/dummy.meta
new file mode 100644
index 0000000..c196726
--- /dev/null
+++ b/Milky Way/Assets/Resources/Materials/Objects/Projectiles/dummy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d871583bb723d3441af24ca72623a745
+timeCreated: 1518657756
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Materials/Red Diffuse.mat b/Milky Way/Assets/Resources/Materials/Objects/Red Diffuse.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Red Diffuse.mat
rename to Milky Way/Assets/Resources/Materials/Objects/Red Diffuse.mat
diff --git a/Milky Way/Assets/Resources/Materials/Red Diffuse.mat.meta b/Milky Way/Assets/Resources/Materials/Objects/Red Diffuse.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Red Diffuse.mat.meta
rename to Milky Way/Assets/Resources/Materials/Objects/Red Diffuse.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Objects/Spaceships.meta b/Milky Way/Assets/Resources/Materials/Objects/Spaceships.meta
new file mode 100644
index 0000000..80c6c28
--- /dev/null
+++ b/Milky Way/Assets/Resources/Materials/Objects/Spaceships.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 81ce57bcbfee9384ab70c68775bac02c
+folderAsset: yes
+timeCreated: 1518656854
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships/Trackers.meta b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Markers.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Spaceships/Trackers.meta
rename to Milky Way/Assets/Resources/Materials/Objects/Spaceships/Markers.meta
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships/Trackers/Marker 1.mat b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Markers/Marker 1.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Spaceships/Trackers/Marker 1.mat
rename to Milky Way/Assets/Resources/Materials/Objects/Spaceships/Markers/Marker 1.mat
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships/Trackers/Marker 1.mat.meta b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Markers/Marker 1.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Spaceships/Trackers/Marker 1.mat.meta
rename to Milky Way/Assets/Resources/Materials/Objects/Spaceships/Markers/Marker 1.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships/Trackers/Marker 2.mat b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Markers/Marker 2.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Spaceships/Trackers/Marker 2.mat
rename to Milky Way/Assets/Resources/Materials/Objects/Spaceships/Markers/Marker 2.mat
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships/Trackers/Marker 2.mat.meta b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Markers/Marker 2.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Spaceships/Trackers/Marker 2.mat.meta
rename to Milky Way/Assets/Resources/Materials/Objects/Spaceships/Markers/Marker 2.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships/Trackers/Marker 3.mat b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Markers/Marker 3.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Spaceships/Trackers/Marker 3.mat
rename to Milky Way/Assets/Resources/Materials/Objects/Spaceships/Markers/Marker 3.mat
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships/Trackers/Marker 3.mat.meta b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Markers/Marker 3.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Spaceships/Trackers/Marker 3.mat.meta
rename to Milky Way/Assets/Resources/Materials/Objects/Spaceships/Markers/Marker 3.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships/Trackers/Marker 4.mat b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Markers/Marker 4.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Spaceships/Trackers/Marker 4.mat
rename to Milky Way/Assets/Resources/Materials/Objects/Spaceships/Markers/Marker 4.mat
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships/Trackers/Marker 4.mat.meta b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Markers/Marker 4.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Spaceships/Trackers/Marker 4.mat.meta
rename to Milky Way/Assets/Resources/Materials/Objects/Spaceships/Markers/Marker 4.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships/Models.meta b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Spaceships/Models.meta
rename to Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models.meta
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships/Models/Orange Ship Glow Material.mat b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Orange Ship Glow Material.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Spaceships/Models/Orange Ship Glow Material.mat
rename to Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Orange Ship Glow Material.mat
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships/Models/Orange Ship Glow Material.mat.meta b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Orange Ship Glow Material.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Spaceships/Models/Orange Ship Glow Material.mat.meta
rename to Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Orange Ship Glow Material.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships/Models/Orange Ship Metal Material.mat b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Orange Ship Metal Material.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Spaceships/Models/Orange Ship Metal Material.mat
rename to Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Orange Ship Metal Material.mat
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships/Models/Orange Ship Metal Material.mat.meta b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Orange Ship Metal Material.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Spaceships/Models/Orange Ship Metal Material.mat.meta
rename to Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Orange Ship Metal Material.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships/Models/Purple Ship Glow Material.mat b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Purple Ship Glow Material.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Spaceships/Models/Purple Ship Glow Material.mat
rename to Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Purple Ship Glow Material.mat
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships/Models/Purple Ship Glow Material.mat.meta b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Purple Ship Glow Material.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Spaceships/Models/Purple Ship Glow Material.mat.meta
rename to Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Purple Ship Glow Material.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships/Models/Purple Ship Metal Material.mat b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Purple Ship Metal Material.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Spaceships/Models/Purple Ship Metal Material.mat
rename to Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Purple Ship Metal Material.mat
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships/Models/Purple Ship Metal Material.mat.meta b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Purple Ship Metal Material.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Spaceships/Models/Purple Ship Metal Material.mat.meta
rename to Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Purple Ship Metal Material.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships/Models/Red Ship Glow Material.mat b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Red Ship Glow Material.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Spaceships/Models/Red Ship Glow Material.mat
rename to Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Red Ship Glow Material.mat
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships/Models/Red Ship Glow Material.mat.meta b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Red Ship Glow Material.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Spaceships/Models/Red Ship Glow Material.mat.meta
rename to Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Red Ship Glow Material.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships/Models/Red Ship Metal Material.mat b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Red Ship Metal Material.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Spaceships/Models/Red Ship Metal Material.mat
rename to Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Red Ship Metal Material.mat
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships/Models/Red Ship Metal Material.mat.meta b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Red Ship Metal Material.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Spaceships/Models/Red Ship Metal Material.mat.meta
rename to Milky Way/Assets/Resources/Materials/Objects/Spaceships/Models/Red Ship Metal Material.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Trail.meta b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Trail.meta
new file mode 100644
index 0000000..316fe4b
--- /dev/null
+++ b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Trail.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: f337cc7baaa4267498eabdcddc15ab2f
+folderAsset: yes
+timeCreated: 1518657875
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Trail/Trail.mat b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Trail/Trail.mat
new file mode 100644
index 0000000..4458489
Binary files /dev/null and b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Trail/Trail.mat differ
diff --git a/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Trail/Trail.mat.meta b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Trail/Trail.mat.meta
new file mode 100644
index 0000000..fdaeb4c
--- /dev/null
+++ b/Milky Way/Assets/Resources/Materials/Objects/Spaceships/Trail/Trail.mat.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: c123fdc72fde98245aed397258d53247
+timeCreated: 1518657884
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Materials/Objects/Yellow Diffuse.mat b/Milky Way/Assets/Resources/Materials/Objects/Yellow Diffuse.mat
new file mode 100644
index 0000000..8ebd9b3
Binary files /dev/null and b/Milky Way/Assets/Resources/Materials/Objects/Yellow Diffuse.mat differ
diff --git a/Milky Way/Assets/Resources/Materials/Yellow Diffuse.mat.meta b/Milky Way/Assets/Resources/Materials/Objects/Yellow Diffuse.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Yellow Diffuse.mat.meta
rename to Milky Way/Assets/Resources/Materials/Objects/Yellow Diffuse.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Power Ups.meta b/Milky Way/Assets/Resources/Materials/Power Ups.meta
deleted file mode 100644
index ac07a06..0000000
--- a/Milky Way/Assets/Resources/Materials/Power Ups.meta
+++ /dev/null
@@ -1,5 +0,0 @@
-fileFormatVersion: 2
-guid: ca65558935a33f547bb90242c3ac9d8c
-folderAsset: yes
-DefaultImporter:
- userData:
diff --git a/Milky Way/Assets/Resources/Materials/Spaceships.meta b/Milky Way/Assets/Resources/Materials/Spaceships.meta
deleted file mode 100644
index 8621e35..0000000
--- a/Milky Way/Assets/Resources/Materials/Spaceships.meta
+++ /dev/null
@@ -1,5 +0,0 @@
-fileFormatVersion: 2
-guid: cbaa6014d6d6c4a4489c46f1d627436c
-folderAsset: yes
-DefaultImporter:
- userData:
diff --git a/Milky Way/Assets/Resources/Materials/Tracks/Arena.meta b/Milky Way/Assets/Resources/Materials/Tracks/Arena.meta
new file mode 100644
index 0000000..61dbb91
--- /dev/null
+++ b/Milky Way/Assets/Resources/Materials/Tracks/Arena.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 0a6a415ebb53f754a9c11aaf79b1a477
+folderAsset: yes
+timeCreated: 1518656788
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Materials/Tracks/Arena/dummy b/Milky Way/Assets/Resources/Materials/Tracks/Arena/dummy
new file mode 100644
index 0000000..e69de29
diff --git a/Milky Way/Assets/Resources/Materials/Tracks/Arena/dummy.meta b/Milky Way/Assets/Resources/Materials/Tracks/Arena/dummy.meta
new file mode 100644
index 0000000..63b7833
--- /dev/null
+++ b/Milky Way/Assets/Resources/Materials/Tracks/Arena/dummy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5a53bc221fe2d404ab5d403bf55e889d
+timeCreated: 1518657756
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Materials/Tracks/Planets.meta b/Milky Way/Assets/Resources/Materials/Tracks/Saturn.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Tracks/Planets.meta
rename to Milky Way/Assets/Resources/Materials/Tracks/Saturn.meta
diff --git a/Milky Way/Assets/Resources/Materials/Tracks/Boundary.mat b/Milky Way/Assets/Resources/Materials/Tracks/Saturn/Boundary.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Tracks/Boundary.mat
rename to Milky Way/Assets/Resources/Materials/Tracks/Saturn/Boundary.mat
diff --git a/Milky Way/Assets/Resources/Materials/Tracks/Boundary.mat.meta b/Milky Way/Assets/Resources/Materials/Tracks/Saturn/Boundary.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Tracks/Boundary.mat.meta
rename to Milky Way/Assets/Resources/Materials/Tracks/Saturn/Boundary.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Tracks/Planets/Mars.mat b/Milky Way/Assets/Resources/Materials/Tracks/Saturn/Mars.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Tracks/Planets/Mars.mat
rename to Milky Way/Assets/Resources/Materials/Tracks/Saturn/Mars.mat
diff --git a/Milky Way/Assets/Resources/Materials/Tracks/Planets/Mars.mat.meta b/Milky Way/Assets/Resources/Materials/Tracks/Saturn/Mars.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Tracks/Planets/Mars.mat.meta
rename to Milky Way/Assets/Resources/Materials/Tracks/Saturn/Mars.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Tracks/Road.mat b/Milky Way/Assets/Resources/Materials/Tracks/Saturn/Road.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Tracks/Road.mat
rename to Milky Way/Assets/Resources/Materials/Tracks/Saturn/Road.mat
diff --git a/Milky Way/Assets/Resources/Materials/Tracks/Road.mat.meta b/Milky Way/Assets/Resources/Materials/Tracks/Saturn/Road.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Tracks/Road.mat.meta
rename to Milky Way/Assets/Resources/Materials/Tracks/Saturn/Road.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Tracks/Planets/Saturn Ring.mat b/Milky Way/Assets/Resources/Materials/Tracks/Saturn/Saturn Ring.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Tracks/Planets/Saturn Ring.mat
rename to Milky Way/Assets/Resources/Materials/Tracks/Saturn/Saturn Ring.mat
diff --git a/Milky Way/Assets/Resources/Materials/Tracks/Planets/Saturn Ring.mat.meta b/Milky Way/Assets/Resources/Materials/Tracks/Saturn/Saturn Ring.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Tracks/Planets/Saturn Ring.mat.meta
rename to Milky Way/Assets/Resources/Materials/Tracks/Saturn/Saturn Ring.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Tracks/Planets/Saturn.mat b/Milky Way/Assets/Resources/Materials/Tracks/Saturn/Saturn.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Tracks/Planets/Saturn.mat
rename to Milky Way/Assets/Resources/Materials/Tracks/Saturn/Saturn.mat
diff --git a/Milky Way/Assets/Resources/Materials/Tracks/Planets/Saturn.mat.meta b/Milky Way/Assets/Resources/Materials/Tracks/Saturn/Saturn.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Materials/Tracks/Planets/Saturn.mat.meta
rename to Milky Way/Assets/Resources/Materials/Tracks/Saturn/Saturn.mat.meta
diff --git a/Milky Way/Assets/Resources/Materials/Yellow Diffuse.mat b/Milky Way/Assets/Resources/Materials/Yellow Diffuse.mat
deleted file mode 100644
index 77ed046..0000000
Binary files a/Milky Way/Assets/Resources/Materials/Yellow Diffuse.mat and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Models/Objects.meta b/Milky Way/Assets/Resources/Models/Objects.meta
new file mode 100644
index 0000000..51c8d73
--- /dev/null
+++ b/Milky Way/Assets/Resources/Models/Objects.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 982ab8adca1f68f438ae9543641c25a6
+folderAsset: yes
+timeCreated: 1518657003
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Models/Objects/Explosions.meta b/Milky Way/Assets/Resources/Models/Objects/Explosions.meta
new file mode 100644
index 0000000..b7acfb6
--- /dev/null
+++ b/Milky Way/Assets/Resources/Models/Objects/Explosions.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 72132e4ef99498244a2bc528cc74e0c7
+folderAsset: yes
+timeCreated: 1518657009
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Models/Objects/Explosions/dummy b/Milky Way/Assets/Resources/Models/Objects/Explosions/dummy
new file mode 100644
index 0000000..e69de29
diff --git a/Milky Way/Assets/Resources/Models/Objects/Explosions/dummy.meta b/Milky Way/Assets/Resources/Models/Objects/Explosions/dummy.meta
new file mode 100644
index 0000000..876c686
--- /dev/null
+++ b/Milky Way/Assets/Resources/Models/Objects/Explosions/dummy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a4013c0f08eb7de44a3f28f99b920531
+timeCreated: 1518657756
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Models/Objects/Items.meta b/Milky Way/Assets/Resources/Models/Objects/Items.meta
new file mode 100644
index 0000000..e29823e
--- /dev/null
+++ b/Milky Way/Assets/Resources/Models/Objects/Items.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 980aefbe701037e429ff5c5073ff2d6d
+folderAsset: yes
+timeCreated: 1518657022
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Models/PowerUps/HomingRocket.FBX b/Milky Way/Assets/Resources/Models/Objects/Items/HomingRocket.FBX
similarity index 100%
rename from Milky Way/Assets/Resources/Models/PowerUps/HomingRocket.FBX
rename to Milky Way/Assets/Resources/Models/Objects/Items/HomingRocket.FBX
diff --git a/Milky Way/Assets/Resources/Models/PowerUps/HomingRocket.FBX.meta b/Milky Way/Assets/Resources/Models/Objects/Items/HomingRocket.FBX.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Models/PowerUps/HomingRocket.FBX.meta
rename to Milky Way/Assets/Resources/Models/Objects/Items/HomingRocket.FBX.meta
diff --git a/Milky Way/Assets/Resources/Models/PowerUps/shield.FBX b/Milky Way/Assets/Resources/Models/Objects/Items/Shield.FBX
similarity index 100%
rename from Milky Way/Assets/Resources/Models/PowerUps/shield.FBX
rename to Milky Way/Assets/Resources/Models/Objects/Items/Shield.FBX
diff --git a/Milky Way/Assets/Resources/Models/PowerUps/shield.FBX.meta b/Milky Way/Assets/Resources/Models/Objects/Items/Shield.FBX.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Models/PowerUps/shield.FBX.meta
rename to Milky Way/Assets/Resources/Models/Objects/Items/Shield.FBX.meta
diff --git a/Milky Way/Assets/Resources/Models/PowerUps/Smokescreen.FBX b/Milky Way/Assets/Resources/Models/Objects/Items/Smokescreen.FBX
similarity index 100%
rename from Milky Way/Assets/Resources/Models/PowerUps/Smokescreen.FBX
rename to Milky Way/Assets/Resources/Models/Objects/Items/Smokescreen.FBX
diff --git a/Milky Way/Assets/Resources/Models/PowerUps/Smokescreen.FBX.meta b/Milky Way/Assets/Resources/Models/Objects/Items/Smokescreen.FBX.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Models/PowerUps/Smokescreen.FBX.meta
rename to Milky Way/Assets/Resources/Models/Objects/Items/Smokescreen.FBX.meta
diff --git a/Milky Way/Assets/Resources/Models/PowerUps/star.FBX b/Milky Way/Assets/Resources/Models/Objects/Items/StarFragment.FBX
similarity index 100%
rename from Milky Way/Assets/Resources/Models/PowerUps/star.FBX
rename to Milky Way/Assets/Resources/Models/Objects/Items/StarFragment.FBX
diff --git a/Milky Way/Assets/Resources/Models/PowerUps/star.FBX.meta b/Milky Way/Assets/Resources/Models/Objects/Items/StarFragment.FBX.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Models/PowerUps/star.FBX.meta
rename to Milky Way/Assets/Resources/Models/Objects/Items/StarFragment.FBX.meta
diff --git a/Milky Way/Assets/Resources/Models/Objects/PowerUps.meta b/Milky Way/Assets/Resources/Models/Objects/PowerUps.meta
new file mode 100644
index 0000000..dd8fe36
--- /dev/null
+++ b/Milky Way/Assets/Resources/Models/Objects/PowerUps.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 91f402cc6c451184187122df63b0c65a
+folderAsset: yes
+timeCreated: 1518657028
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Models/Objects/PowerUps/dummy b/Milky Way/Assets/Resources/Models/Objects/PowerUps/dummy
new file mode 100644
index 0000000..e69de29
diff --git a/Milky Way/Assets/Resources/Models/Objects/PowerUps/dummy.meta b/Milky Way/Assets/Resources/Models/Objects/PowerUps/dummy.meta
new file mode 100644
index 0000000..3e5ac38
--- /dev/null
+++ b/Milky Way/Assets/Resources/Models/Objects/PowerUps/dummy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a96e2ace03d610a4f804a6a66aa05194
+timeCreated: 1518657756
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Models/Objects/Projectiles.meta b/Milky Way/Assets/Resources/Models/Objects/Projectiles.meta
new file mode 100644
index 0000000..387ee36
--- /dev/null
+++ b/Milky Way/Assets/Resources/Models/Objects/Projectiles.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 413311380496c4b4ebb8378e80f247d5
+folderAsset: yes
+timeCreated: 1518657035
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Models/Objects/Projectiles/dummy b/Milky Way/Assets/Resources/Models/Objects/Projectiles/dummy
new file mode 100644
index 0000000..e69de29
diff --git a/Milky Way/Assets/Resources/Models/Objects/Projectiles/dummy.meta b/Milky Way/Assets/Resources/Models/Objects/Projectiles/dummy.meta
new file mode 100644
index 0000000..e7c3125
--- /dev/null
+++ b/Milky Way/Assets/Resources/Models/Objects/Projectiles/dummy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e3d7453050ff18b439afd49db8666d05
+timeCreated: 1518657756
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Models/Objects/Spaceships.meta b/Milky Way/Assets/Resources/Models/Objects/Spaceships.meta
new file mode 100644
index 0000000..9d692e0
--- /dev/null
+++ b/Milky Way/Assets/Resources/Models/Objects/Spaceships.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: f11a0cc3f141b364b8ce1fa3e3e07a19
+folderAsset: yes
+timeCreated: 1518657040
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Models/Spaceships/Speeder Ship.FBX b/Milky Way/Assets/Resources/Models/Objects/Spaceships/Speeder Ship.FBX
similarity index 100%
rename from Milky Way/Assets/Resources/Models/Spaceships/Speeder Ship.FBX
rename to Milky Way/Assets/Resources/Models/Objects/Spaceships/Speeder Ship.FBX
diff --git a/Milky Way/Assets/Resources/Models/Spaceships/Speeder Ship.FBX.meta b/Milky Way/Assets/Resources/Models/Objects/Spaceships/Speeder Ship.FBX.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Models/Spaceships/Speeder Ship.FBX.meta
rename to Milky Way/Assets/Resources/Models/Objects/Spaceships/Speeder Ship.FBX.meta
diff --git a/Milky Way/Assets/Resources/Models/Spaceships/Spider Ship.FBX b/Milky Way/Assets/Resources/Models/Objects/Spaceships/Spider Ship.FBX
similarity index 100%
rename from Milky Way/Assets/Resources/Models/Spaceships/Spider Ship.FBX
rename to Milky Way/Assets/Resources/Models/Objects/Spaceships/Spider Ship.FBX
diff --git a/Milky Way/Assets/Resources/Models/Spaceships/Spider Ship.FBX.meta b/Milky Way/Assets/Resources/Models/Objects/Spaceships/Spider Ship.FBX.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Models/Spaceships/Spider Ship.FBX.meta
rename to Milky Way/Assets/Resources/Models/Objects/Spaceships/Spider Ship.FBX.meta
diff --git a/Milky Way/Assets/Resources/Models/Spaceships/Tracker.FBX b/Milky Way/Assets/Resources/Models/Objects/Spaceships/Tracker.FBX
similarity index 100%
rename from Milky Way/Assets/Resources/Models/Spaceships/Tracker.FBX
rename to Milky Way/Assets/Resources/Models/Objects/Spaceships/Tracker.FBX
diff --git a/Milky Way/Assets/Resources/Models/Spaceships/Tracker.FBX.meta b/Milky Way/Assets/Resources/Models/Objects/Spaceships/Tracker.FBX.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Models/Spaceships/Tracker.FBX.meta
rename to Milky Way/Assets/Resources/Models/Objects/Spaceships/Tracker.FBX.meta
diff --git a/Milky Way/Assets/Resources/Models/PowerUps.meta b/Milky Way/Assets/Resources/Models/PowerUps.meta
deleted file mode 100644
index 3d02c04..0000000
--- a/Milky Way/Assets/Resources/Models/PowerUps.meta
+++ /dev/null
@@ -1,5 +0,0 @@
-fileFormatVersion: 2
-guid: a3e31bbc028dcb242b70f7e2c59e214e
-folderAsset: yes
-DefaultImporter:
- userData:
diff --git a/Milky Way/Assets/Resources/Models/Spaceships.meta b/Milky Way/Assets/Resources/Models/Spaceships.meta
deleted file mode 100644
index 37283b8..0000000
--- a/Milky Way/Assets/Resources/Models/Spaceships.meta
+++ /dev/null
@@ -1,5 +0,0 @@
-fileFormatVersion: 2
-guid: e248312642fff8f46a3cf4be229f5d65
-folderAsset: yes
-DefaultImporter:
- userData:
diff --git a/Milky Way/Assets/Resources/Models/Tracks/Arena.meta b/Milky Way/Assets/Resources/Models/Tracks/Arena.meta
new file mode 100644
index 0000000..0a6084a
--- /dev/null
+++ b/Milky Way/Assets/Resources/Models/Tracks/Arena.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 5d5383d662ae7d9498eb421a007b1bca
+folderAsset: yes
+timeCreated: 1518657297
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Models/Tracks/Arena/dummy b/Milky Way/Assets/Resources/Models/Tracks/Arena/dummy
new file mode 100644
index 0000000..e69de29
diff --git a/Milky Way/Assets/Resources/Models/Tracks/Arena/dummy.meta b/Milky Way/Assets/Resources/Models/Tracks/Arena/dummy.meta
new file mode 100644
index 0000000..4388ae7
--- /dev/null
+++ b/Milky Way/Assets/Resources/Models/Tracks/Arena/dummy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d563551d35a6b8c4ca79c535f1cdea52
+timeCreated: 1518657756
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Models/Tracks/Finish Line.meta b/Milky Way/Assets/Resources/Models/Tracks/Finish Line.meta
new file mode 100644
index 0000000..b2b2395
--- /dev/null
+++ b/Milky Way/Assets/Resources/Models/Tracks/Finish Line.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: ccf40d968d57f124c8d42d061ef262fa
+folderAsset: yes
+timeCreated: 1518657303
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Models/Tracks/Finish Line/dummy b/Milky Way/Assets/Resources/Models/Tracks/Finish Line/dummy
new file mode 100644
index 0000000..e69de29
diff --git a/Milky Way/Assets/Resources/Models/Tracks/Finish Line/dummy.meta b/Milky Way/Assets/Resources/Models/Tracks/Finish Line/dummy.meta
new file mode 100644
index 0000000..9267856
--- /dev/null
+++ b/Milky Way/Assets/Resources/Models/Tracks/Finish Line/dummy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6571a11c6c8b4794680f1f05e8f10931
+timeCreated: 1518657756
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Models/Tracks/Saturn.meta b/Milky Way/Assets/Resources/Models/Tracks/Saturn.meta
new file mode 100644
index 0000000..ddb94f9
--- /dev/null
+++ b/Milky Way/Assets/Resources/Models/Tracks/Saturn.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: b58d243011cd53541893179f40781696
+folderAsset: yes
+timeCreated: 1518657254
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Models/Tracks/Saturn/02 - Default.mat b/Milky Way/Assets/Resources/Models/Tracks/Saturn/02 - Default.mat
new file mode 100644
index 0000000..4215c85
Binary files /dev/null and b/Milky Way/Assets/Resources/Models/Tracks/Saturn/02 - Default.mat differ
diff --git a/Milky Way/Assets/Resources/Models/Tracks/Saturn/02 - Default.mat.meta b/Milky Way/Assets/Resources/Models/Tracks/Saturn/02 - Default.mat.meta
new file mode 100644
index 0000000..862fc6b
--- /dev/null
+++ b/Milky Way/Assets/Resources/Models/Tracks/Saturn/02 - Default.mat.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: c42ae6f7a306d5f48907943dc0b2a33a
+timeCreated: 1518364944
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Models/Tracks/Saturn/03 - Default.mat b/Milky Way/Assets/Resources/Models/Tracks/Saturn/03 - Default.mat
new file mode 100644
index 0000000..5d66850
Binary files /dev/null and b/Milky Way/Assets/Resources/Models/Tracks/Saturn/03 - Default.mat differ
diff --git a/Milky Way/Assets/Resources/Models/Tracks/Saturn/03 - Default.mat.meta b/Milky Way/Assets/Resources/Models/Tracks/Saturn/03 - Default.mat.meta
new file mode 100644
index 0000000..dafff42
--- /dev/null
+++ b/Milky Way/Assets/Resources/Models/Tracks/Saturn/03 - Default.mat.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: f3564164cdf440f49aa39b17c45a6216
+timeCreated: 1518364944
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Models/Tracks/Saturn/07 - Default.mat b/Milky Way/Assets/Resources/Models/Tracks/Saturn/07 - Default.mat
new file mode 100644
index 0000000..3f2cd38
Binary files /dev/null and b/Milky Way/Assets/Resources/Models/Tracks/Saturn/07 - Default.mat differ
diff --git a/Milky Way/Assets/Resources/Models/Tracks/Saturn/07 - Default.mat.meta b/Milky Way/Assets/Resources/Models/Tracks/Saturn/07 - Default.mat.meta
new file mode 100644
index 0000000..2d5007b
--- /dev/null
+++ b/Milky Way/Assets/Resources/Models/Tracks/Saturn/07 - Default.mat.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 23653b6c00433574895b503a441320cd
+timeCreated: 1518364944
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Models/Tracks/Saturn/08 - Default.mat b/Milky Way/Assets/Resources/Models/Tracks/Saturn/08 - Default.mat
new file mode 100644
index 0000000..b28c585
Binary files /dev/null and b/Milky Way/Assets/Resources/Models/Tracks/Saturn/08 - Default.mat differ
diff --git a/Milky Way/Assets/Resources/Models/Tracks/Saturn/08 - Default.mat.meta b/Milky Way/Assets/Resources/Models/Tracks/Saturn/08 - Default.mat.meta
new file mode 100644
index 0000000..190770c
--- /dev/null
+++ b/Milky Way/Assets/Resources/Models/Tracks/Saturn/08 - Default.mat.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 36e23d41f42efea4d8db88026634c850
+timeCreated: 1518364944
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Models/Tracks/Saturn/09 - Default.mat b/Milky Way/Assets/Resources/Models/Tracks/Saturn/09 - Default.mat
new file mode 100644
index 0000000..42188e6
Binary files /dev/null and b/Milky Way/Assets/Resources/Models/Tracks/Saturn/09 - Default.mat differ
diff --git a/Milky Way/Assets/Resources/Models/Tracks/Saturn/09 - Default.mat.meta b/Milky Way/Assets/Resources/Models/Tracks/Saturn/09 - Default.mat.meta
new file mode 100644
index 0000000..fa49b0b
--- /dev/null
+++ b/Milky Way/Assets/Resources/Models/Tracks/Saturn/09 - Default.mat.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: f64e3836367ccd847980d15b0acb07d5
+timeCreated: 1518364943
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Models/Tracks/Saturn/Grid.mat b/Milky Way/Assets/Resources/Models/Tracks/Saturn/Grid.mat
new file mode 100644
index 0000000..5125ba9
Binary files /dev/null and b/Milky Way/Assets/Resources/Models/Tracks/Saturn/Grid.mat differ
diff --git a/Milky Way/Assets/Resources/Models/Tracks/Saturn/Grid.mat.meta b/Milky Way/Assets/Resources/Models/Tracks/Saturn/Grid.mat.meta
new file mode 100644
index 0000000..0ca3ffe
--- /dev/null
+++ b/Milky Way/Assets/Resources/Models/Tracks/Saturn/Grid.mat.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: f70137a1b15bdeb4eb526d8fbc7fbdee
+timeCreated: 1518364944
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Models/Tracks/SpaceTrackV2.FBX b/Milky Way/Assets/Resources/Models/Tracks/Saturn/SpaceTrackV2.FBX
similarity index 100%
rename from Milky Way/Assets/Resources/Models/Tracks/SpaceTrackV2.FBX
rename to Milky Way/Assets/Resources/Models/Tracks/Saturn/SpaceTrackV2.FBX
diff --git a/Milky Way/Assets/Resources/Models/Tracks/SpaceTrackV2.FBX.meta b/Milky Way/Assets/Resources/Models/Tracks/Saturn/SpaceTrackV2.FBX.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Models/Tracks/SpaceTrackV2.FBX.meta
rename to Milky Way/Assets/Resources/Models/Tracks/Saturn/SpaceTrackV2.FBX.meta
diff --git a/Milky Way/Assets/Resources/Models/Tracks/TestMap3.FBX b/Milky Way/Assets/Resources/Models/Tracks/Saturn/TestMap3.FBX
similarity index 100%
rename from Milky Way/Assets/Resources/Models/Tracks/TestMap3.FBX
rename to Milky Way/Assets/Resources/Models/Tracks/Saturn/TestMap3.FBX
diff --git a/Milky Way/Assets/Resources/Models/Tracks/TestMap3.FBX.meta b/Milky Way/Assets/Resources/Models/Tracks/Saturn/TestMap3.FBX.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Models/Tracks/TestMap3.FBX.meta
rename to Milky Way/Assets/Resources/Models/Tracks/Saturn/TestMap3.FBX.meta
diff --git a/Milky Way/Assets/Resources/Physics Materials.meta b/Milky Way/Assets/Resources/Physics.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Physics Materials.meta
rename to Milky Way/Assets/Resources/Physics.meta
diff --git a/Milky Way/Assets/Resources/Physics/Objects.meta b/Milky Way/Assets/Resources/Physics/Objects.meta
new file mode 100644
index 0000000..c7bff7d
--- /dev/null
+++ b/Milky Way/Assets/Resources/Physics/Objects.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 55c2262e23fbb734fb60aa5aa3979771
+folderAsset: yes
+timeCreated: 1518656650
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Physics/Objects/Explosions.meta b/Milky Way/Assets/Resources/Physics/Objects/Explosions.meta
new file mode 100644
index 0000000..75d728e
--- /dev/null
+++ b/Milky Way/Assets/Resources/Physics/Objects/Explosions.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 3a11e0f2bf9c09441af72e765846dced
+folderAsset: yes
+timeCreated: 1518656674
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Physics/Objects/Explosions/dummy b/Milky Way/Assets/Resources/Physics/Objects/Explosions/dummy
new file mode 100644
index 0000000..e69de29
diff --git a/Milky Way/Assets/Resources/Physics/Objects/Explosions/dummy.meta b/Milky Way/Assets/Resources/Physics/Objects/Explosions/dummy.meta
new file mode 100644
index 0000000..f2ca103
--- /dev/null
+++ b/Milky Way/Assets/Resources/Physics/Objects/Explosions/dummy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 04cc942d11e5ffa43a78dfa67ff2d183
+timeCreated: 1518657756
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Physics/Objects/Items.meta b/Milky Way/Assets/Resources/Physics/Objects/Items.meta
new file mode 100644
index 0000000..d40255d
--- /dev/null
+++ b/Milky Way/Assets/Resources/Physics/Objects/Items.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 45b383218ed890146b129686584f2a43
+folderAsset: yes
+timeCreated: 1518656682
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Physics/Objects/Items/dummy b/Milky Way/Assets/Resources/Physics/Objects/Items/dummy
new file mode 100644
index 0000000..e69de29
diff --git a/Milky Way/Assets/Resources/Physics/Objects/Items/dummy.meta b/Milky Way/Assets/Resources/Physics/Objects/Items/dummy.meta
new file mode 100644
index 0000000..1442b0d
--- /dev/null
+++ b/Milky Way/Assets/Resources/Physics/Objects/Items/dummy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2f72e1377ac2e224fb4165a08c34f3aa
+timeCreated: 1518657756
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Physics/Objects/PowerUps.meta b/Milky Way/Assets/Resources/Physics/Objects/PowerUps.meta
new file mode 100644
index 0000000..292f883
--- /dev/null
+++ b/Milky Way/Assets/Resources/Physics/Objects/PowerUps.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 83756d111245554479ab222aa3dc15a6
+folderAsset: yes
+timeCreated: 1518656691
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Physics/Objects/PowerUps/dummy b/Milky Way/Assets/Resources/Physics/Objects/PowerUps/dummy
new file mode 100644
index 0000000..e69de29
diff --git a/Milky Way/Assets/Resources/Physics/Objects/PowerUps/dummy.meta b/Milky Way/Assets/Resources/Physics/Objects/PowerUps/dummy.meta
new file mode 100644
index 0000000..90ae67c
--- /dev/null
+++ b/Milky Way/Assets/Resources/Physics/Objects/PowerUps/dummy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1eb3d20c3d0342245bd1cb06d38fcdff
+timeCreated: 1518657756
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Physics/Objects/Projectiles.meta b/Milky Way/Assets/Resources/Physics/Objects/Projectiles.meta
new file mode 100644
index 0000000..e130c7e
--- /dev/null
+++ b/Milky Way/Assets/Resources/Physics/Objects/Projectiles.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: a0326dd4c8c40464897aa439dae7098a
+folderAsset: yes
+timeCreated: 1518656698
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Physics/Objects/Projectiles/dummy b/Milky Way/Assets/Resources/Physics/Objects/Projectiles/dummy
new file mode 100644
index 0000000..e69de29
diff --git a/Milky Way/Assets/Resources/Physics/Objects/Projectiles/dummy.meta b/Milky Way/Assets/Resources/Physics/Objects/Projectiles/dummy.meta
new file mode 100644
index 0000000..059050d
--- /dev/null
+++ b/Milky Way/Assets/Resources/Physics/Objects/Projectiles/dummy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: bf293fc8ee1093947a6622dcc918efb0
+timeCreated: 1518657756
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Physics/Objects/Spaceships.meta b/Milky Way/Assets/Resources/Physics/Objects/Spaceships.meta
new file mode 100644
index 0000000..7a4f2c6
--- /dev/null
+++ b/Milky Way/Assets/Resources/Physics/Objects/Spaceships.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: e0e32219925dc7544a1eb398a525534c
+folderAsset: yes
+timeCreated: 1518656704
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Physics Materials/Body.physicMaterial b/Milky Way/Assets/Resources/Physics/Objects/Spaceships/Body.physicMaterial
similarity index 100%
rename from Milky Way/Assets/Resources/Physics Materials/Body.physicMaterial
rename to Milky Way/Assets/Resources/Physics/Objects/Spaceships/Body.physicMaterial
diff --git a/Milky Way/Assets/Resources/Physics Materials/Body.physicMaterial.meta b/Milky Way/Assets/Resources/Physics/Objects/Spaceships/Body.physicMaterial.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Physics Materials/Body.physicMaterial.meta
rename to Milky Way/Assets/Resources/Physics/Objects/Spaceships/Body.physicMaterial.meta
diff --git a/Milky Way/Assets/Resources/Physics/Tracks.meta b/Milky Way/Assets/Resources/Physics/Tracks.meta
new file mode 100644
index 0000000..21214cb
--- /dev/null
+++ b/Milky Way/Assets/Resources/Physics/Tracks.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 2415ea51522e0cd44ada3eda8baf1c59
+folderAsset: yes
+timeCreated: 1518656655
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Physics/Tracks/Arena.meta b/Milky Way/Assets/Resources/Physics/Tracks/Arena.meta
new file mode 100644
index 0000000..6615046
--- /dev/null
+++ b/Milky Way/Assets/Resources/Physics/Tracks/Arena.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: f9aa083f7561c4349a0deaa199b84737
+folderAsset: yes
+timeCreated: 1518657309
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Physics/Tracks/Arena/dummy b/Milky Way/Assets/Resources/Physics/Tracks/Arena/dummy
new file mode 100644
index 0000000..e69de29
diff --git a/Milky Way/Assets/Resources/Physics/Tracks/Arena/dummy.meta b/Milky Way/Assets/Resources/Physics/Tracks/Arena/dummy.meta
new file mode 100644
index 0000000..1b19ef5
--- /dev/null
+++ b/Milky Way/Assets/Resources/Physics/Tracks/Arena/dummy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8cdf26441c522db46afe7db4b69b38ce
+timeCreated: 1518657756
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Physics/Tracks/Finish Line.meta b/Milky Way/Assets/Resources/Physics/Tracks/Finish Line.meta
new file mode 100644
index 0000000..17a1e7e
--- /dev/null
+++ b/Milky Way/Assets/Resources/Physics/Tracks/Finish Line.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: b41f26872b5a67e4e982837c4b714387
+folderAsset: yes
+timeCreated: 1518657316
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Physics/Tracks/Finish Line/dummy b/Milky Way/Assets/Resources/Physics/Tracks/Finish Line/dummy
new file mode 100644
index 0000000..e69de29
diff --git a/Milky Way/Assets/Resources/Physics/Tracks/Finish Line/dummy.meta b/Milky Way/Assets/Resources/Physics/Tracks/Finish Line/dummy.meta
new file mode 100644
index 0000000..dfa0aba
--- /dev/null
+++ b/Milky Way/Assets/Resources/Physics/Tracks/Finish Line/dummy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: eb8fd46a82ca68248bfa30836f806c22
+timeCreated: 1518657756
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Physics Materials/Road.physicMaterial b/Milky Way/Assets/Resources/Physics/Tracks/Road.physicMaterial
similarity index 100%
rename from Milky Way/Assets/Resources/Physics Materials/Road.physicMaterial
rename to Milky Way/Assets/Resources/Physics/Tracks/Road.physicMaterial
diff --git a/Milky Way/Assets/Resources/Physics Materials/Road.physicMaterial.meta b/Milky Way/Assets/Resources/Physics/Tracks/Road.physicMaterial.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Physics Materials/Road.physicMaterial.meta
rename to Milky Way/Assets/Resources/Physics/Tracks/Road.physicMaterial.meta
diff --git a/Milky Way/Assets/Resources/Physics/Tracks/Saturn.meta b/Milky Way/Assets/Resources/Physics/Tracks/Saturn.meta
new file mode 100644
index 0000000..18a9d6f
--- /dev/null
+++ b/Milky Way/Assets/Resources/Physics/Tracks/Saturn.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 247f81cf2c937fd42b8e185e5d21b5c0
+folderAsset: yes
+timeCreated: 1518657321
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Physics/Tracks/Saturn/dummy b/Milky Way/Assets/Resources/Physics/Tracks/Saturn/dummy
new file mode 100644
index 0000000..e69de29
diff --git a/Milky Way/Assets/Resources/Physics/Tracks/Saturn/dummy.meta b/Milky Way/Assets/Resources/Physics/Tracks/Saturn/dummy.meta
new file mode 100644
index 0000000..bc6d8f4
--- /dev/null
+++ b/Milky Way/Assets/Resources/Physics/Tracks/Saturn/dummy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 10050eb72a0d5d04691054bcf7fd185e
+timeCreated: 1518657756
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Physics Materials/Wall.physicMaterial b/Milky Way/Assets/Resources/Physics/Tracks/Wall.physicMaterial
similarity index 100%
rename from Milky Way/Assets/Resources/Physics Materials/Wall.physicMaterial
rename to Milky Way/Assets/Resources/Physics/Tracks/Wall.physicMaterial
diff --git a/Milky Way/Assets/Resources/Physics Materials/Wall.physicMaterial.meta b/Milky Way/Assets/Resources/Physics/Tracks/Wall.physicMaterial.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Physics Materials/Wall.physicMaterial.meta
rename to Milky Way/Assets/Resources/Physics/Tracks/Wall.physicMaterial.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/Canvas.prefab b/Milky Way/Assets/Resources/Prefabs/Canvas.prefab
deleted file mode 100644
index 244fb46..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/Canvas.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Canvas.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Canvas.prefab.meta
deleted file mode 100644
index 44cd6d5..0000000
--- a/Milky Way/Assets/Resources/Prefabs/Canvas.prefab.meta
+++ /dev/null
@@ -1,4 +0,0 @@
-fileFormatVersion: 2
-guid: 0f8c3cc0e8cce634ca9114ba7567d636
-NativeFormatImporter:
- userData:
diff --git a/Milky Way/Assets/Resources/Prefabs/Explosions/Green Explosion.prefab b/Milky Way/Assets/Resources/Prefabs/Explosions/Green Explosion.prefab
deleted file mode 100644
index c9b6e0a..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/Explosions/Green Explosion.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Explosions/Red Explosion.prefab b/Milky Way/Assets/Resources/Prefabs/Explosions/Red Explosion.prefab
deleted file mode 100644
index 77ab00d..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/Explosions/Red Explosion.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Explosions/Smokescreen.prefab b/Milky Way/Assets/Resources/Prefabs/Explosions/Smokescreen.prefab
deleted file mode 100644
index 5660322..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/Explosions/Smokescreen.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Items/HomingRocket PowerUp.prefab b/Milky Way/Assets/Resources/Prefabs/Items/HomingRocket PowerUp.prefab
deleted file mode 100644
index 603996c..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/Items/HomingRocket PowerUp.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Items/Shield PowerUp.prefab b/Milky Way/Assets/Resources/Prefabs/Items/Shield PowerUp.prefab
deleted file mode 100644
index c256874..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/Items/Shield PowerUp.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Items/Smokescreen PowerUp.prefab b/Milky Way/Assets/Resources/Prefabs/Items/Smokescreen PowerUp.prefab
deleted file mode 100644
index d1eb591..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/Items/Smokescreen PowerUp.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Items/Star Fragment.prefab b/Milky Way/Assets/Resources/Prefabs/Items/Star Fragment.prefab
deleted file mode 100644
index 5000a19..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/Items/Star Fragment.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Main Menu.prefab b/Milky Way/Assets/Resources/Prefabs/Main Menu.prefab
new file mode 100644
index 0000000..b5c774b
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Main Menu.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Main Menu.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Main Menu.prefab.meta
new file mode 100644
index 0000000..9a6b47b
--- /dev/null
+++ b/Milky Way/Assets/Resources/Prefabs/Main Menu.prefab.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 19bc4746a686b3c4b95741d0a0c958de
+timeCreated: 1518845640
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 100100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Prefabs/Multiplayer Menu.prefab b/Milky Way/Assets/Resources/Prefabs/Multiplayer Menu.prefab
new file mode 100644
index 0000000..6c1e520
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Multiplayer Menu.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Multiplayer Menu.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Multiplayer Menu.prefab.meta
new file mode 100644
index 0000000..39e6feb
--- /dev/null
+++ b/Milky Way/Assets/Resources/Prefabs/Multiplayer Menu.prefab.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 640aa1af750564342bde0f273440c8ce
+timeCreated: 1518845643
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 100100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects.meta b/Milky Way/Assets/Resources/Prefabs/Objects.meta
new file mode 100644
index 0000000..81c4a07
--- /dev/null
+++ b/Milky Way/Assets/Resources/Prefabs/Objects.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: a3dc8c443293eab49835ed1e89eeaafc
+folderAsset: yes
+timeCreated: 1518656556
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Prefabs/Explosions.meta b/Milky Way/Assets/Resources/Prefabs/Objects/Explosions.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Prefabs/Explosions.meta
rename to Milky Way/Assets/Resources/Prefabs/Objects/Explosions.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Big Explosion.prefab b/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Big Explosion.prefab
new file mode 100644
index 0000000..31aa180
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Big Explosion.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Big Explosion.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Big Explosion.prefab.meta
new file mode 100644
index 0000000..b5518ac
--- /dev/null
+++ b/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Big Explosion.prefab.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 65d7aa61ab06fd04392c6dbce7181ba5
+timeCreated: 1518760603
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 100100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Green Explosion.prefab b/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Green Explosion.prefab
new file mode 100644
index 0000000..1ecb203
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Green Explosion.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Explosions/Green Explosion.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Green Explosion.prefab.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Prefabs/Explosions/Green Explosion.prefab.meta
rename to Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Green Explosion.prefab.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Red Explosion.prefab b/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Red Explosion.prefab
new file mode 100644
index 0000000..e99dc8a
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Red Explosion.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Explosions/Red Explosion.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Red Explosion.prefab.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Prefabs/Explosions/Red Explosion.prefab.meta
rename to Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Red Explosion.prefab.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Small Green Explosion.prefab b/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Small Green Explosion.prefab
new file mode 100644
index 0000000..965c578
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Small Green Explosion.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Small Green Explosion.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Small Green Explosion.prefab.meta
new file mode 100644
index 0000000..242cac1
--- /dev/null
+++ b/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Small Green Explosion.prefab.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 4abe41a994040604f9378e72f9b3cad3
+timeCreated: 1518759954
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 100100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Small Red Explosion.prefab b/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Small Red Explosion.prefab
new file mode 100644
index 0000000..5cf338f
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Small Red Explosion.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Small Red Explosion.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Small Red Explosion.prefab.meta
new file mode 100644
index 0000000..beda214
--- /dev/null
+++ b/Milky Way/Assets/Resources/Prefabs/Objects/Explosions/Small Red Explosion.prefab.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 088a9953d92fb994d8cff6fa66cb7315
+timeCreated: 1518759953
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 100100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Prefabs/Items.meta b/Milky Way/Assets/Resources/Prefabs/Objects/Items.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Prefabs/Items.meta
rename to Milky Way/Assets/Resources/Prefabs/Objects/Items.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Items/HomingRocket.prefab b/Milky Way/Assets/Resources/Prefabs/Objects/Items/HomingRocket.prefab
new file mode 100644
index 0000000..fe5e222
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Objects/Items/HomingRocket.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Items/HomingRocket PowerUp.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Objects/Items/HomingRocket.prefab.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Prefabs/Items/HomingRocket PowerUp.prefab.meta
rename to Milky Way/Assets/Resources/Prefabs/Objects/Items/HomingRocket.prefab.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Items/Shield.prefab b/Milky Way/Assets/Resources/Prefabs/Objects/Items/Shield.prefab
new file mode 100644
index 0000000..2a3886f
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Objects/Items/Shield.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Items/Shield PowerUp.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Objects/Items/Shield.prefab.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Prefabs/Items/Shield PowerUp.prefab.meta
rename to Milky Way/Assets/Resources/Prefabs/Objects/Items/Shield.prefab.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Items/Smokescreen.prefab b/Milky Way/Assets/Resources/Prefabs/Objects/Items/Smokescreen.prefab
new file mode 100644
index 0000000..d471c9d
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Objects/Items/Smokescreen.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Items/Smokescreen PowerUp.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Objects/Items/Smokescreen.prefab.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Prefabs/Items/Smokescreen PowerUp.prefab.meta
rename to Milky Way/Assets/Resources/Prefabs/Objects/Items/Smokescreen.prefab.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Items/StarFragment.prefab b/Milky Way/Assets/Resources/Prefabs/Objects/Items/StarFragment.prefab
new file mode 100644
index 0000000..ed1f3bc
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Objects/Items/StarFragment.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Items/Star Fragment.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Objects/Items/StarFragment.prefab.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Prefabs/Items/Star Fragment.prefab.meta
rename to Milky Way/Assets/Resources/Prefabs/Objects/Items/StarFragment.prefab.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/PowerUps.meta b/Milky Way/Assets/Resources/Prefabs/Objects/PowerUps.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Prefabs/PowerUps.meta
rename to Milky Way/Assets/Resources/Prefabs/Objects/PowerUps.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/PowerUps/HomingRocket.prefab b/Milky Way/Assets/Resources/Prefabs/Objects/PowerUps/HomingRocket.prefab
new file mode 100644
index 0000000..4dd8f66
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Objects/PowerUps/HomingRocket.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/PowerUps/HomingRocket.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Objects/PowerUps/HomingRocket.prefab.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Prefabs/PowerUps/HomingRocket.prefab.meta
rename to Milky Way/Assets/Resources/Prefabs/Objects/PowerUps/HomingRocket.prefab.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/PowerUps/Shield.prefab b/Milky Way/Assets/Resources/Prefabs/Objects/PowerUps/Shield.prefab
new file mode 100644
index 0000000..ba3641a
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Objects/PowerUps/Shield.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/PowerUps/Shield.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Objects/PowerUps/Shield.prefab.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Prefabs/PowerUps/Shield.prefab.meta
rename to Milky Way/Assets/Resources/Prefabs/Objects/PowerUps/Shield.prefab.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/PowerUps/Smokescreen.prefab b/Milky Way/Assets/Resources/Prefabs/Objects/PowerUps/Smokescreen.prefab
new file mode 100644
index 0000000..c6c7095
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Objects/PowerUps/Smokescreen.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Explosions/Smokescreen.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Objects/PowerUps/Smokescreen.prefab.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Prefabs/Explosions/Smokescreen.prefab.meta
rename to Milky Way/Assets/Resources/Prefabs/Objects/PowerUps/Smokescreen.prefab.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/Projectiles.meta b/Milky Way/Assets/Resources/Prefabs/Objects/Projectiles.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Prefabs/Projectiles.meta
rename to Milky Way/Assets/Resources/Prefabs/Objects/Projectiles.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Projectiles/Laser.prefab b/Milky Way/Assets/Resources/Prefabs/Objects/Projectiles/Laser.prefab
new file mode 100644
index 0000000..077030a
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Objects/Projectiles/Laser.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Projectiles/Laser.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Objects/Projectiles/Laser.prefab.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Prefabs/Projectiles/Laser.prefab.meta
rename to Milky Way/Assets/Resources/Prefabs/Objects/Projectiles/Laser.prefab.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/Spaceships.meta b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Prefabs/Spaceships.meta
rename to Milky Way/Assets/Resources/Prefabs/Objects/Spaceships.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Multiplayer Canvas.prefab b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Multiplayer Canvas.prefab
new file mode 100644
index 0000000..c2f903a
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Multiplayer Canvas.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Multiplayer Canvas.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Multiplayer Canvas.prefab.meta
new file mode 100644
index 0000000..f20a4e4
--- /dev/null
+++ b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Multiplayer Canvas.prefab.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 0e8aeda21d939984d9cd1175194bc53e
+timeCreated: 1518759339
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 100100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Player 1 Spaceship.prefab b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Player 1 Spaceship.prefab
new file mode 100644
index 0000000..5aeb1c3
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Player 1 Spaceship.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Player 1 Spaceship.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Player 1 Spaceship.prefab.meta
new file mode 100644
index 0000000..df37f28
--- /dev/null
+++ b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Player 1 Spaceship.prefab.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 12a8b77a1681b1d4c8c2d2afeaefd951
+timeCreated: 1518759390
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 100100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Player 2 Spaceship.prefab b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Player 2 Spaceship.prefab
new file mode 100644
index 0000000..ba980cf
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Player 2 Spaceship.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Player 2 Spaceship.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Player 2 Spaceship.prefab.meta
new file mode 100644
index 0000000..f418cd9
--- /dev/null
+++ b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Player 2 Spaceship.prefab.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 99950e63de4080546b333d1262bfb3ff
+timeCreated: 1518759404
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 100100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Singleplayer Canvas.prefab b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Singleplayer Canvas.prefab
new file mode 100644
index 0000000..5a89908
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Singleplayer Canvas.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Singleplayer Canvas.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Singleplayer Canvas.prefab.meta
new file mode 100644
index 0000000..347634d
--- /dev/null
+++ b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/Singleplayer Canvas.prefab.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 53ab230045fe79b45a70abb41eb981ec
+timeCreated: 1518761527
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 100100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/x Orange Ship.prefab b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/x Orange Ship.prefab
new file mode 100644
index 0000000..33a640f
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/x Orange Ship.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Spaceships/Orange Ship.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/x Orange Ship.prefab.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Prefabs/Spaceships/Orange Ship.prefab.meta
rename to Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/x Orange Ship.prefab.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/x Purple Ship.prefab b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/x Purple Ship.prefab
new file mode 100644
index 0000000..7231e33
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/x Purple Ship.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Spaceships/Purple Ship.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/x Purple Ship.prefab.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Prefabs/Spaceships/Purple Ship.prefab.meta
rename to Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/x Purple Ship.prefab.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/x Red Ship.prefab b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/x Red Ship.prefab
new file mode 100644
index 0000000..baedaea
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/x Red Ship.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Spaceships/Red Ship.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/x Red Ship.prefab.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Prefabs/Spaceships/Red Ship.prefab.meta
rename to Milky Way/Assets/Resources/Prefabs/Objects/Spaceships/x Red Ship.prefab.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/PowerUps/HomingRocket.prefab b/Milky Way/Assets/Resources/Prefabs/PowerUps/HomingRocket.prefab
deleted file mode 100644
index 84b28cd..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/PowerUps/HomingRocket.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/PowerUps/Shield.prefab b/Milky Way/Assets/Resources/Prefabs/PowerUps/Shield.prefab
deleted file mode 100644
index b027bf9..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/PowerUps/Shield.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/PowerUps/Smokescreen.prefab b/Milky Way/Assets/Resources/Prefabs/PowerUps/Smokescreen.prefab
deleted file mode 100644
index 3230016..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/PowerUps/Smokescreen.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/PowerUps/Smokescreen.prefab.meta b/Milky Way/Assets/Resources/Prefabs/PowerUps/Smokescreen.prefab.meta
deleted file mode 100644
index 068dd13..0000000
--- a/Milky Way/Assets/Resources/Prefabs/PowerUps/Smokescreen.prefab.meta
+++ /dev/null
@@ -1,4 +0,0 @@
-fileFormatVersion: 2
-guid: 16e54984b3687e043b6fb8104cf09e1c
-NativeFormatImporter:
- userData:
diff --git a/Milky Way/Assets/Resources/Prefabs/Projectiles/Laser.prefab b/Milky Way/Assets/Resources/Prefabs/Projectiles/Laser.prefab
deleted file mode 100644
index 93a36ab..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/Projectiles/Laser.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Singleplayer Menu.prefab b/Milky Way/Assets/Resources/Prefabs/Singleplayer Menu.prefab
new file mode 100644
index 0000000..ab25f1a
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Singleplayer Menu.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Singleplayer Menu.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Singleplayer Menu.prefab.meta
new file mode 100644
index 0000000..618d820
--- /dev/null
+++ b/Milky Way/Assets/Resources/Prefabs/Singleplayer Menu.prefab.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: e3bb56a124a0f754d8caecfbbe2e8da6
+timeCreated: 1518845641
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 100100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Prefabs/Spaceship Container.prefab b/Milky Way/Assets/Resources/Prefabs/Spaceship Container.prefab
deleted file mode 100644
index 2983e3b..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/Spaceship Container.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Spaceship Container.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Spaceship Container.prefab.meta
deleted file mode 100644
index 6b7c624..0000000
--- a/Milky Way/Assets/Resources/Prefabs/Spaceship Container.prefab.meta
+++ /dev/null
@@ -1,4 +0,0 @@
-fileFormatVersion: 2
-guid: 8352afcd675a0e247886470bd49cd305
-NativeFormatImporter:
- userData:
diff --git a/Milky Way/Assets/Resources/Prefabs/Spaceships/Orange Ship.prefab b/Milky Way/Assets/Resources/Prefabs/Spaceships/Orange Ship.prefab
deleted file mode 100644
index bf6538b..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/Spaceships/Orange Ship.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Spaceships/Purple Ship.prefab b/Milky Way/Assets/Resources/Prefabs/Spaceships/Purple Ship.prefab
deleted file mode 100644
index 04dfcd7..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/Spaceships/Purple Ship.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Spaceships/Red Ship.prefab b/Milky Way/Assets/Resources/Prefabs/Spaceships/Red Ship.prefab
deleted file mode 100644
index fbc4852..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/Spaceships/Red Ship.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Arena.meta b/Milky Way/Assets/Resources/Prefabs/Tracks/Arena.meta
new file mode 100644
index 0000000..90a5469
--- /dev/null
+++ b/Milky Way/Assets/Resources/Prefabs/Tracks/Arena.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: e93b96f5909ea0544b264444c04f0b5c
+folderAsset: yes
+timeCreated: 1518656617
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Arena.prefab b/Milky Way/Assets/Resources/Prefabs/Tracks/Arena.prefab
deleted file mode 100644
index 3b88783..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/Tracks/Arena.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Arena/Arena.prefab b/Milky Way/Assets/Resources/Prefabs/Tracks/Arena/Arena.prefab
new file mode 100644
index 0000000..a706f00
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Tracks/Arena/Arena.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Arena.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Tracks/Arena/Arena.prefab.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Prefabs/Tracks/Arena.prefab.meta
rename to Milky Way/Assets/Resources/Prefabs/Tracks/Arena/Arena.prefab.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Arena/Minimap Camera.prefab b/Milky Way/Assets/Resources/Prefabs/Tracks/Arena/Minimap Camera.prefab
new file mode 100644
index 0000000..0274af4
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Tracks/Arena/Minimap Camera.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Arena/Minimap Camera.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Tracks/Arena/Minimap Camera.prefab.meta
new file mode 100644
index 0000000..807e9dc
--- /dev/null
+++ b/Milky Way/Assets/Resources/Prefabs/Tracks/Arena/Minimap Camera.prefab.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 49ccb35a88d09584e8e47fee02f0adc3
+timeCreated: 1518799641
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 100100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Corner Track Left.prefab b/Milky Way/Assets/Resources/Prefabs/Tracks/Corner Track Left.prefab
deleted file mode 100644
index 8d4f6a3..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/Tracks/Corner Track Left.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Corner Track Left.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Tracks/Corner Track Left.prefab.meta
deleted file mode 100644
index 515e47a..0000000
--- a/Milky Way/Assets/Resources/Prefabs/Tracks/Corner Track Left.prefab.meta
+++ /dev/null
@@ -1,4 +0,0 @@
-fileFormatVersion: 2
-guid: 59b430866845aeb4197461c5cfb2fe31
-NativeFormatImporter:
- userData:
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Corner Track Right.prefab b/Milky Way/Assets/Resources/Prefabs/Tracks/Corner Track Right.prefab
deleted file mode 100644
index 3a5e2ff..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/Tracks/Corner Track Right.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Corner Track Right.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Tracks/Corner Track Right.prefab.meta
deleted file mode 100644
index de99da9..0000000
--- a/Milky Way/Assets/Resources/Prefabs/Tracks/Corner Track Right.prefab.meta
+++ /dev/null
@@ -1,4 +0,0 @@
-fileFormatVersion: 2
-guid: 8a2d574e661c6cf4f8c43d2f934489cb
-NativeFormatImporter:
- userData:
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Finish Line.meta b/Milky Way/Assets/Resources/Prefabs/Tracks/Finish Line.meta
new file mode 100644
index 0000000..d27b5aa
--- /dev/null
+++ b/Milky Way/Assets/Resources/Prefabs/Tracks/Finish Line.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: e99d58add254b1e4da8d92d2fbc541e1
+folderAsset: yes
+timeCreated: 1518656782
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Finish Line.prefab b/Milky Way/Assets/Resources/Prefabs/Tracks/Finish Line.prefab
deleted file mode 100644
index fd2c514..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/Tracks/Finish Line.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Finish Line/Finish Line.prefab b/Milky Way/Assets/Resources/Prefabs/Tracks/Finish Line/Finish Line.prefab
new file mode 100644
index 0000000..7e388f8
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Tracks/Finish Line/Finish Line.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Finish Line.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Tracks/Finish Line/Finish Line.prefab.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Prefabs/Tracks/Finish Line.prefab.meta
rename to Milky Way/Assets/Resources/Prefabs/Tracks/Finish Line/Finish Line.prefab.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Ramp Track.prefab b/Milky Way/Assets/Resources/Prefabs/Tracks/Ramp Track.prefab
deleted file mode 100644
index bf0d373..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/Tracks/Ramp Track.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Ramp Track.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Tracks/Ramp Track.prefab.meta
deleted file mode 100644
index fd1a597..0000000
--- a/Milky Way/Assets/Resources/Prefabs/Tracks/Ramp Track.prefab.meta
+++ /dev/null
@@ -1,4 +0,0 @@
-fileFormatVersion: 2
-guid: 13cf0825823e2bb4991713227d6bc1ad
-NativeFormatImporter:
- userData:
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Saturn Track/Checkpoint Manager.prefab b/Milky Way/Assets/Resources/Prefabs/Tracks/Saturn Track/Checkpoint Manager.prefab
deleted file mode 100644
index d374575..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/Tracks/Saturn Track/Checkpoint Manager.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Saturn Track/Checkpoint Manager.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Tracks/Saturn Track/Checkpoint Manager.prefab.meta
deleted file mode 100644
index bd0e2ac..0000000
--- a/Milky Way/Assets/Resources/Prefabs/Tracks/Saturn Track/Checkpoint Manager.prefab.meta
+++ /dev/null
@@ -1,4 +0,0 @@
-fileFormatVersion: 2
-guid: f79430ded9d2e6d43aac9e16f9d7c627
-NativeFormatImporter:
- userData:
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Saturn Track/SpaceTrack.prefab b/Milky Way/Assets/Resources/Prefabs/Tracks/Saturn Track/SpaceTrack.prefab
deleted file mode 100644
index 74b378e..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/Tracks/Saturn Track/SpaceTrack.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Saturn Track.meta b/Milky Way/Assets/Resources/Prefabs/Tracks/Saturn.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Prefabs/Tracks/Saturn Track.meta
rename to Milky Way/Assets/Resources/Prefabs/Tracks/Saturn.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Saturn/Minimap Camera.prefab b/Milky Way/Assets/Resources/Prefabs/Tracks/Saturn/Minimap Camera.prefab
new file mode 100644
index 0000000..727389d
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Tracks/Saturn/Minimap Camera.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Saturn/Minimap Camera.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Tracks/Saturn/Minimap Camera.prefab.meta
new file mode 100644
index 0000000..a0078b2
--- /dev/null
+++ b/Milky Way/Assets/Resources/Prefabs/Tracks/Saturn/Minimap Camera.prefab.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: d91f16e9debc25440a2dd57f4b1d6b2c
+timeCreated: 1518799779
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 100100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Saturn/Saturn.prefab b/Milky Way/Assets/Resources/Prefabs/Tracks/Saturn/Saturn.prefab
new file mode 100644
index 0000000..6979711
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Tracks/Saturn/Saturn.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Saturn Track/SpaceTrack.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Tracks/Saturn/Saturn.prefab.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Prefabs/Tracks/Saturn Track/SpaceTrack.prefab.meta
rename to Milky Way/Assets/Resources/Prefabs/Tracks/Saturn/Saturn.prefab.meta
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Straight Track 1.prefab b/Milky Way/Assets/Resources/Prefabs/Tracks/Straight Track 1.prefab
deleted file mode 100644
index 8cda063..0000000
Binary files a/Milky Way/Assets/Resources/Prefabs/Tracks/Straight Track 1.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Tracks/Straight Track 1.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Tracks/Straight Track 1.prefab.meta
deleted file mode 100644
index 103a9a0..0000000
--- a/Milky Way/Assets/Resources/Prefabs/Tracks/Straight Track 1.prefab.meta
+++ /dev/null
@@ -1,4 +0,0 @@
-fileFormatVersion: 2
-guid: cfb2bcebb9d6f71408375be8dbe324f6
-NativeFormatImporter:
- userData:
diff --git a/Milky Way/Assets/Resources/Prefabs/Upgrade Menu.prefab b/Milky Way/Assets/Resources/Prefabs/Upgrade Menu.prefab
new file mode 100644
index 0000000..7a4e86c
Binary files /dev/null and b/Milky Way/Assets/Resources/Prefabs/Upgrade Menu.prefab differ
diff --git a/Milky Way/Assets/Resources/Prefabs/Upgrade Menu.prefab.meta b/Milky Way/Assets/Resources/Prefabs/Upgrade Menu.prefab.meta
new file mode 100644
index 0000000..e623783
--- /dev/null
+++ b/Milky Way/Assets/Resources/Prefabs/Upgrade Menu.prefab.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 13e0d6712063417459da7fb3bc25151f
+timeCreated: 1518845645
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 100100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Shaders.meta b/Milky Way/Assets/Resources/Shaders.meta
similarity index 100%
rename from Milky Way/Assets/Shaders.meta
rename to Milky Way/Assets/Resources/Shaders.meta
diff --git a/Milky Way/Assets/Resources/Shaders/Alpha Mask.meta b/Milky Way/Assets/Resources/Shaders/Alpha Mask.meta
new file mode 100644
index 0000000..41281f2
--- /dev/null
+++ b/Milky Way/Assets/Resources/Shaders/Alpha Mask.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 8a749bb05642f9c4a9d5008cdfa621d4
+folderAsset: yes
+timeCreated: 1518798810
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Shaders/Alpha Mask/Alpha Mask.shader b/Milky Way/Assets/Resources/Shaders/Alpha Mask/Alpha Mask.shader
new file mode 100644
index 0000000..9371cf8
--- /dev/null
+++ b/Milky Way/Assets/Resources/Shaders/Alpha Mask/Alpha Mask.shader
@@ -0,0 +1,64 @@
+Shader "Custom/Alpha Mask"
+{
+ Properties
+ {
+ _MainTexture ("Main Texture", 2D) = "white" {}
+ _AlphaTexture ("Alpha Texture", 2D) = "white" {}
+ }
+
+ SubShader
+ {
+ Tags
+ {
+ "RenderType" = "Transparent"
+ "Queue"="Transparent"
+
+ "IgnoreProjector"="True"
+ }
+
+ Cull Off
+ Lighting Off
+ ZWrite Off
+ ZTest Off
+ Fog { Mode Off }
+
+ Blend SrcAlpha OneMinusSrcAlpha
+ ColorMask[_ColorMask]
+
+ CGPROGRAM
+ #include "UnityCG.cginc"
+
+ #pragma surface surfaceFunction NoLighting alpha
+
+ struct Input
+ {
+ float2 uv_MainTexture;
+ float2 uv_AlphaTexture;
+ };
+
+ sampler2D _MainTexture;
+ sampler2D _AlphaTexture;
+
+ // Custom lighting model [No Lighting]
+ fixed4 LightingNoLighting(SurfaceOutput surface, fixed3 lightDirection, fixed attenuation)
+ {
+ fixed4 color;
+ color.rgb = surface.Albedo;
+ color.a = surface.Alpha;
+
+ return color;
+ }
+
+ // Custom surface function
+ void surfaceFunction(Input input, inout SurfaceOutput output)
+ {
+ float4 mainTexture = tex2D (_MainTexture, input.uv_MainTexture);
+ float4 alphaTexture = tex2D (_AlphaTexture, input.uv_AlphaTexture);
+
+ output.Albedo = mainTexture.rgb;
+ output.Alpha = alphaTexture.a;
+ }
+
+ ENDCG
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Resources/Shaders/Alpha Mask/Alpha Mask.shader.meta b/Milky Way/Assets/Resources/Shaders/Alpha Mask/Alpha Mask.shader.meta
new file mode 100644
index 0000000..228f592
--- /dev/null
+++ b/Milky Way/Assets/Resources/Shaders/Alpha Mask/Alpha Mask.shader.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: e6b20519bca693f479efb1cb6d302d99
+timeCreated: 1518798815
+licenseType: Free
+ShaderImporter:
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Shaders/Interlace.meta b/Milky Way/Assets/Resources/Shaders/Interlace.meta
new file mode 100644
index 0000000..5219a1f
--- /dev/null
+++ b/Milky Way/Assets/Resources/Shaders/Interlace.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 60c23f25da76b1d4782f0371c7e1cd79
+folderAsset: yes
+timeCreated: 1518657423
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Shaders/InterlacePatternAdditive.shader b/Milky Way/Assets/Resources/Shaders/Interlace/InterlacePatternAdditive.shader
similarity index 91%
rename from Milky Way/Assets/Shaders/InterlacePatternAdditive.shader
rename to Milky Way/Assets/Resources/Shaders/Interlace/InterlacePatternAdditive.shader
index 5eaa803..a73ee97 100644
--- a/Milky Way/Assets/Shaders/InterlacePatternAdditive.shader
+++ b/Milky Way/Assets/Resources/Shaders/Interlace/InterlacePatternAdditive.shader
@@ -1,3 +1,5 @@
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
Shader "Self-Illumin/InterlacePatternAdditive" {
Properties {
@@ -28,7 +30,7 @@ Shader "Self-Illumin/InterlacePatternAdditive" {
{
v2f o;
- o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos (v.vertex);
o.uv.xy = v.texcoord.xy;
o.uv2.xy = TRANSFORM_TEX(v.texcoord.xy, _InterlacePattern) + _Time.xx * _InterlacePattern_ST.zw;
diff --git a/Milky Way/Assets/Shaders/InterlacePatternAdditive.shader.meta b/Milky Way/Assets/Resources/Shaders/Interlace/InterlacePatternAdditive.shader.meta
similarity index 100%
rename from Milky Way/Assets/Shaders/InterlacePatternAdditive.shader.meta
rename to Milky Way/Assets/Resources/Shaders/Interlace/InterlacePatternAdditive.shader.meta
diff --git a/Milky Way/Assets/Resources/Textures/Skyboxes.meta b/Milky Way/Assets/Resources/Skyboxes.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Skyboxes.meta
rename to Milky Way/Assets/Resources/Skyboxes.meta
diff --git a/Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue.meta b/Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue.meta
rename to Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue.meta
diff --git a/Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/backImage.png b/Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Back.png
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/backImage.png
rename to Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Back.png
diff --git a/Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/backImage.png.meta b/Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Back.png.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/backImage.png.meta
rename to Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Back.png.meta
diff --git a/Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/DSB.mat b/Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/DSB.mat
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/DSB.mat
rename to Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/DSB.mat
diff --git a/Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/DSB.mat.meta b/Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/DSB.mat.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/DSB.mat.meta
rename to Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/DSB.mat.meta
diff --git a/Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/downImage.png b/Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Down.png
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/downImage.png
rename to Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Down.png
diff --git a/Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/downImage.png.meta b/Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Down.png.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/downImage.png.meta
rename to Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Down.png.meta
diff --git a/Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/frontImage.png b/Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Front.png
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/frontImage.png
rename to Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Front.png
diff --git a/Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/frontImage.png.meta b/Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Front.png.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/frontImage.png.meta
rename to Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Front.png.meta
diff --git a/Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/rightImage.png b/Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Image.png
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/rightImage.png
rename to Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Image.png
diff --git a/Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/rightImage.png.meta b/Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Image.png.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/rightImage.png.meta
rename to Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Image.png.meta
diff --git a/Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/leftImage.png b/Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Left.png
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/leftImage.png
rename to Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Left.png
diff --git a/Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/leftImage.png.meta b/Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Left.png.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/leftImage.png.meta
rename to Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Left.png.meta
diff --git a/Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/upImage.png b/Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Up.png
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/upImage.png
rename to Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Up.png
diff --git a/Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/upImage.png.meta b/Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Up.png.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Skyboxes/DeepSpaceBlue/upImage.png.meta
rename to Milky Way/Assets/Resources/Skyboxes/DeepSpaceBlue/Up.png.meta
diff --git a/Milky Way/Assets/Resources/Sounds/Background.meta b/Milky Way/Assets/Resources/Sounds/Background.meta
new file mode 100644
index 0000000..7e6ba76
--- /dev/null
+++ b/Milky Way/Assets/Resources/Sounds/Background.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 4cf9a2005fc90864196f46669b9bff15
+folderAsset: yes
+timeCreated: 1518657433
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Sounds/background.wav b/Milky Way/Assets/Resources/Sounds/Background/Background.wav
similarity index 100%
rename from Milky Way/Assets/Resources/Sounds/background.wav
rename to Milky Way/Assets/Resources/Sounds/Background/Background.wav
diff --git a/Milky Way/Assets/Resources/Sounds/background.wav.meta b/Milky Way/Assets/Resources/Sounds/Background/Background.wav.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Sounds/background.wav.meta
rename to Milky Way/Assets/Resources/Sounds/Background/Background.wav.meta
diff --git a/Milky Way/Assets/Resources/Textures.meta b/Milky Way/Assets/Resources/Sprites.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures.meta
rename to Milky Way/Assets/Resources/Sprites.meta
diff --git a/Milky Way/Assets/Resources/Textures/huh.jpg b/Milky Way/Assets/Resources/Sprites/Banner.jpg
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/huh.jpg
rename to Milky Way/Assets/Resources/Sprites/Banner.jpg
diff --git a/Milky Way/Assets/Resources/Textures/huh.jpg.meta b/Milky Way/Assets/Resources/Sprites/Banner.jpg.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/huh.jpg.meta
rename to Milky Way/Assets/Resources/Sprites/Banner.jpg.meta
diff --git a/Milky Way/Assets/Resources/Sprites/Circle - Black.png b/Milky Way/Assets/Resources/Sprites/Circle - Black.png
new file mode 100644
index 0000000..93fa96b
Binary files /dev/null and b/Milky Way/Assets/Resources/Sprites/Circle - Black.png differ
diff --git a/Milky Way/Assets/Resources/Sprites/Circle - Black.png.meta b/Milky Way/Assets/Resources/Sprites/Circle - Black.png.meta
new file mode 100644
index 0000000..6204713
--- /dev/null
+++ b/Milky Way/Assets/Resources/Sprites/Circle - Black.png.meta
@@ -0,0 +1,76 @@
+fileFormatVersion: 2
+guid: e6aa9e4c87b868d4c97c3f02019ba77e
+timeCreated: 1518798656
+licenseType: Free
+TextureImporter:
+ fileIDToRecycleName: {}
+ serializedVersion: 4
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ filterMode: -1
+ aniso: -1
+ mipBias: -1
+ wrapMode: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spritePixelsToUnits: 100
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ - buildTarget: Standalone
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ spritePackingTag:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Sprites/Circle - White.png b/Milky Way/Assets/Resources/Sprites/Circle - White.png
new file mode 100644
index 0000000..32d17dd
Binary files /dev/null and b/Milky Way/Assets/Resources/Sprites/Circle - White.png differ
diff --git a/Milky Way/Assets/Resources/Sprites/Circle - White.png.meta b/Milky Way/Assets/Resources/Sprites/Circle - White.png.meta
new file mode 100644
index 0000000..668d104
--- /dev/null
+++ b/Milky Way/Assets/Resources/Sprites/Circle - White.png.meta
@@ -0,0 +1,76 @@
+fileFormatVersion: 2
+guid: 9c880e3c4b39f0c4a948a7a034dcf82e
+timeCreated: 1518798656
+licenseType: Free
+TextureImporter:
+ fileIDToRecycleName: {}
+ serializedVersion: 4
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ filterMode: -1
+ aniso: -1
+ mipBias: -1
+ wrapMode: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spritePixelsToUnits: 100
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ - buildTarget: Standalone
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ spritePackingTag:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Sprites/Objects.meta b/Milky Way/Assets/Resources/Sprites/Objects.meta
new file mode 100644
index 0000000..c6d42af
--- /dev/null
+++ b/Milky Way/Assets/Resources/Sprites/Objects.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 377461aeabbb2e1408d88848f099b195
+folderAsset: yes
+timeCreated: 1518657346
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Sprites/Objects/Explosions.meta b/Milky Way/Assets/Resources/Sprites/Objects/Explosions.meta
new file mode 100644
index 0000000..7f9d981
--- /dev/null
+++ b/Milky Way/Assets/Resources/Sprites/Objects/Explosions.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 1a543a812ed2077488c87faddf19f3ea
+folderAsset: yes
+timeCreated: 1518657356
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Textures/PowerUps/SandA.tga b/Milky Way/Assets/Resources/Sprites/Objects/Explosions/SandA.tga
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/PowerUps/SandA.tga
rename to Milky Way/Assets/Resources/Sprites/Objects/Explosions/SandA.tga
diff --git a/Milky Way/Assets/Resources/Textures/PowerUps/SandA.tga.meta b/Milky Way/Assets/Resources/Sprites/Objects/Explosions/SandA.tga.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/PowerUps/SandA.tga.meta
rename to Milky Way/Assets/Resources/Sprites/Objects/Explosions/SandA.tga.meta
diff --git a/Milky Way/Assets/Resources/Textures/PowerUps/SandB.tga b/Milky Way/Assets/Resources/Sprites/Objects/Explosions/SandB.tga
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/PowerUps/SandB.tga
rename to Milky Way/Assets/Resources/Sprites/Objects/Explosions/SandB.tga
diff --git a/Milky Way/Assets/Resources/Textures/PowerUps/SandB.tga.meta b/Milky Way/Assets/Resources/Sprites/Objects/Explosions/SandB.tga.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/PowerUps/SandB.tga.meta
rename to Milky Way/Assets/Resources/Sprites/Objects/Explosions/SandB.tga.meta
diff --git a/Milky Way/Assets/Resources/Sprites/Objects/Items.meta b/Milky Way/Assets/Resources/Sprites/Objects/Items.meta
new file mode 100644
index 0000000..569d245
--- /dev/null
+++ b/Milky Way/Assets/Resources/Sprites/Objects/Items.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: d03f359eedfb9614f81e3083aed9d0c1
+folderAsset: yes
+timeCreated: 1518657441
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Sprites/Objects/Items/dummy b/Milky Way/Assets/Resources/Sprites/Objects/Items/dummy
new file mode 100644
index 0000000..e69de29
diff --git a/Milky Way/Assets/Resources/Sprites/Objects/Items/dummy.meta b/Milky Way/Assets/Resources/Sprites/Objects/Items/dummy.meta
new file mode 100644
index 0000000..d0eac6c
--- /dev/null
+++ b/Milky Way/Assets/Resources/Sprites/Objects/Items/dummy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7dfad84821407b642b2c4f281261f7b3
+timeCreated: 1518657756
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Sprites/Objects/PowerUps.meta b/Milky Way/Assets/Resources/Sprites/Objects/PowerUps.meta
new file mode 100644
index 0000000..6bd1444
--- /dev/null
+++ b/Milky Way/Assets/Resources/Sprites/Objects/PowerUps.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 9fd7b496470ce8f4985f3a6859d941c9
+folderAsset: yes
+timeCreated: 1518657447
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/HomingRocket.png b/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/HomingRocket.png
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/HUD/PowerUps/HomingRocket.png
rename to Milky Way/Assets/Resources/Sprites/Objects/PowerUps/HomingRocket.png
diff --git a/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/HomingRocket.png.meta b/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/HomingRocket.png.meta
new file mode 100644
index 0000000..77cf225
--- /dev/null
+++ b/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/HomingRocket.png.meta
@@ -0,0 +1,74 @@
+fileFormatVersion: 2
+guid: 5b48d1ef91a385f409d4560a5a84b14c
+TextureImporter:
+ fileIDToRecycleName: {}
+ serializedVersion: 4
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: -1
+ maxTextureSize: 1024
+ textureSettings:
+ filterMode: -1
+ aniso: -1
+ mipBias: -1
+ wrapMode: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spritePixelsToUnits: 100
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - buildTarget: DefaultTexturePlatform
+ maxTextureSize: 1024
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ - buildTarget: Standalone
+ maxTextureSize: 1024
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ spritePackingTag:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/HomingRocketK.png b/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/HomingRocketKey.png
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/HUD/PowerUps/HomingRocketK.png
rename to Milky Way/Assets/Resources/Sprites/Objects/PowerUps/HomingRocketKey.png
diff --git a/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/HomingRocketKey.png.meta b/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/HomingRocketKey.png.meta
new file mode 100644
index 0000000..015be38
--- /dev/null
+++ b/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/HomingRocketKey.png.meta
@@ -0,0 +1,74 @@
+fileFormatVersion: 2
+guid: 8f00fdb96dcdb3b4ebb1b80d088f3a83
+TextureImporter:
+ fileIDToRecycleName: {}
+ serializedVersion: 4
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: -1
+ maxTextureSize: 1024
+ textureSettings:
+ filterMode: -1
+ aniso: -1
+ mipBias: -1
+ wrapMode: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spritePixelsToUnits: 100
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - buildTarget: DefaultTexturePlatform
+ maxTextureSize: 1024
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ - buildTarget: Standalone
+ maxTextureSize: 1024
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ spritePackingTag:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/Shield.png b/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/Shield.png
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/HUD/PowerUps/Shield.png
rename to Milky Way/Assets/Resources/Sprites/Objects/PowerUps/Shield.png
diff --git a/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/Shield.png.meta b/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/Shield.png.meta
new file mode 100644
index 0000000..0caded0
--- /dev/null
+++ b/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/Shield.png.meta
@@ -0,0 +1,74 @@
+fileFormatVersion: 2
+guid: ada6bf89493680b44b71a7fcafd95562
+TextureImporter:
+ fileIDToRecycleName: {}
+ serializedVersion: 4
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: -1
+ maxTextureSize: 1024
+ textureSettings:
+ filterMode: -1
+ aniso: -1
+ mipBias: -1
+ wrapMode: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spritePixelsToUnits: 100
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - buildTarget: DefaultTexturePlatform
+ maxTextureSize: 1024
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ - buildTarget: Standalone
+ maxTextureSize: 1024
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ spritePackingTag:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/ShieldK.png b/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/ShieldKey.png
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/HUD/PowerUps/ShieldK.png
rename to Milky Way/Assets/Resources/Sprites/Objects/PowerUps/ShieldKey.png
diff --git a/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/ShieldKey.png.meta b/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/ShieldKey.png.meta
new file mode 100644
index 0000000..784725d
--- /dev/null
+++ b/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/ShieldKey.png.meta
@@ -0,0 +1,74 @@
+fileFormatVersion: 2
+guid: 7e40c25861c9f7e47b8e3d4353dccbd4
+TextureImporter:
+ fileIDToRecycleName: {}
+ serializedVersion: 4
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: -1
+ maxTextureSize: 1024
+ textureSettings:
+ filterMode: -1
+ aniso: -1
+ mipBias: -1
+ wrapMode: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spritePixelsToUnits: 100
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - buildTarget: DefaultTexturePlatform
+ maxTextureSize: 1024
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ - buildTarget: Standalone
+ maxTextureSize: 1024
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ spritePackingTag:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/Smokescreen.png b/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/Smokescreen.png
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/HUD/PowerUps/Smokescreen.png
rename to Milky Way/Assets/Resources/Sprites/Objects/PowerUps/Smokescreen.png
diff --git a/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/Smokescreen.png.meta b/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/Smokescreen.png.meta
new file mode 100644
index 0000000..2fd2b7c
--- /dev/null
+++ b/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/Smokescreen.png.meta
@@ -0,0 +1,74 @@
+fileFormatVersion: 2
+guid: 7d9d9b72cf503694eab605a0426b31ef
+TextureImporter:
+ fileIDToRecycleName: {}
+ serializedVersion: 4
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: -1
+ maxTextureSize: 1024
+ textureSettings:
+ filterMode: -1
+ aniso: -1
+ mipBias: -1
+ wrapMode: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spritePixelsToUnits: 100
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - buildTarget: DefaultTexturePlatform
+ maxTextureSize: 1024
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ - buildTarget: Standalone
+ maxTextureSize: 1024
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ spritePackingTag:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/SmokescreenK.png b/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/SmokescreenKey.png
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/HUD/PowerUps/SmokescreenK.png
rename to Milky Way/Assets/Resources/Sprites/Objects/PowerUps/SmokescreenKey.png
diff --git a/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/SmokescreenKey.png.meta b/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/SmokescreenKey.png.meta
new file mode 100644
index 0000000..cede7a8
--- /dev/null
+++ b/Milky Way/Assets/Resources/Sprites/Objects/PowerUps/SmokescreenKey.png.meta
@@ -0,0 +1,74 @@
+fileFormatVersion: 2
+guid: 9f7ae0d2e15e7834c906a0601ddb709c
+TextureImporter:
+ fileIDToRecycleName: {}
+ serializedVersion: 4
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: -1
+ maxTextureSize: 1024
+ textureSettings:
+ filterMode: -1
+ aniso: -1
+ mipBias: -1
+ wrapMode: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spritePixelsToUnits: 100
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - buildTarget: DefaultTexturePlatform
+ maxTextureSize: 1024
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ - buildTarget: Standalone
+ maxTextureSize: 1024
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ spritePackingTag:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Sprites/Objects/Projectiles.meta b/Milky Way/Assets/Resources/Sprites/Objects/Projectiles.meta
new file mode 100644
index 0000000..cfc3077
--- /dev/null
+++ b/Milky Way/Assets/Resources/Sprites/Objects/Projectiles.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 9909ee5363ada974abed2286cd722f48
+folderAsset: yes
+timeCreated: 1518657474
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Sprites/Objects/Projectiles/dummy b/Milky Way/Assets/Resources/Sprites/Objects/Projectiles/dummy
new file mode 100644
index 0000000..e69de29
diff --git a/Milky Way/Assets/Resources/Sprites/Objects/Projectiles/dummy.meta b/Milky Way/Assets/Resources/Sprites/Objects/Projectiles/dummy.meta
new file mode 100644
index 0000000..4c62381
--- /dev/null
+++ b/Milky Way/Assets/Resources/Sprites/Objects/Projectiles/dummy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b766ab9bea416674b980261fe281b482
+timeCreated: 1518657756
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Sprites/Objects/Spaceships.meta b/Milky Way/Assets/Resources/Sprites/Objects/Spaceships.meta
new file mode 100644
index 0000000..63d28b5
--- /dev/null
+++ b/Milky Way/Assets/Resources/Sprites/Objects/Spaceships.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 518a22469304a854e8d8c2f20d4c5dd3
+folderAsset: yes
+timeCreated: 1518657456
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Minimap.renderTexture b/Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Minimap.renderTexture
new file mode 100644
index 0000000..e71518e
Binary files /dev/null and b/Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Minimap.renderTexture differ
diff --git a/Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Minimap.renderTexture.meta b/Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Minimap.renderTexture.meta
new file mode 100644
index 0000000..4cc535b
--- /dev/null
+++ b/Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Minimap.renderTexture.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 794ee74fe1c2d4c41a77f4e0c4def33f
+timeCreated: 1518798064
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 8400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Textures/Spaceships/Speeder Diffuse.tif b/Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Speeder Diffuse.tif
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Spaceships/Speeder Diffuse.tif
rename to Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Speeder Diffuse.tif
diff --git a/Milky Way/Assets/Resources/Textures/Spaceships/Speeder Diffuse.tif.meta b/Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Speeder Diffuse.tif.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Spaceships/Speeder Diffuse.tif.meta
rename to Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Speeder Diffuse.tif.meta
diff --git a/Milky Way/Assets/Resources/Textures/Spaceships/Speeder Normals.tif b/Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Speeder Normals.tif
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Spaceships/Speeder Normals.tif
rename to Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Speeder Normals.tif
diff --git a/Milky Way/Assets/Resources/Textures/Spaceships/Speeder Normals.tif.meta b/Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Speeder Normals.tif.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Spaceships/Speeder Normals.tif.meta
rename to Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Speeder Normals.tif.meta
diff --git a/Milky Way/Assets/Resources/Textures/Spaceships/Spider Normals.tif b/Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Spider Normals.tif
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Spaceships/Spider Normals.tif
rename to Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Spider Normals.tif
diff --git a/Milky Way/Assets/Resources/Textures/Spaceships/Spider Normals.tif.meta b/Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Spider Normals.tif.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Spaceships/Spider Normals.tif.meta
rename to Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Spider Normals.tif.meta
diff --git a/Milky Way/Assets/Resources/Textures/Spaceships/Spider Purple Diffuse.tif b/Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Spider Purple Diffuse.tif
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Spaceships/Spider Purple Diffuse.tif
rename to Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Spider Purple Diffuse.tif
diff --git a/Milky Way/Assets/Resources/Textures/Spaceships/Spider Purple Diffuse.tif.meta b/Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Spider Purple Diffuse.tif.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Spaceships/Spider Purple Diffuse.tif.meta
rename to Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Spider Purple Diffuse.tif.meta
diff --git a/Milky Way/Assets/Resources/Textures/Spaceships/Spider Red Diffuse.tif b/Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Spider Red Diffuse.tif
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Spaceships/Spider Red Diffuse.tif
rename to Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Spider Red Diffuse.tif
diff --git a/Milky Way/Assets/Resources/Textures/Spaceships/Spider Red Diffuse.tif.meta b/Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Spider Red Diffuse.tif.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Spaceships/Spider Red Diffuse.tif.meta
rename to Milky Way/Assets/Resources/Sprites/Objects/Spaceships/Spider Red Diffuse.tif.meta
diff --git a/Milky Way/Assets/Resources/Sprites/Square.png b/Milky Way/Assets/Resources/Sprites/Square.png
new file mode 100644
index 0000000..459c610
Binary files /dev/null and b/Milky Way/Assets/Resources/Sprites/Square.png differ
diff --git a/Milky Way/Assets/Resources/Sprites/Square.png.meta b/Milky Way/Assets/Resources/Sprites/Square.png.meta
new file mode 100644
index 0000000..9a6f3c0
--- /dev/null
+++ b/Milky Way/Assets/Resources/Sprites/Square.png.meta
@@ -0,0 +1,76 @@
+fileFormatVersion: 2
+guid: f878284508710024888f2fe692ce8d83
+timeCreated: 1518759241
+licenseType: Free
+TextureImporter:
+ fileIDToRecycleName: {}
+ serializedVersion: 4
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ filterMode: -1
+ aniso: -1
+ mipBias: -1
+ wrapMode: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spritePixelsToUnits: 100
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ - buildTarget: Standalone
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ spritePackingTag:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Textures/Tracks.meta b/Milky Way/Assets/Resources/Sprites/Tracks.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Tracks.meta
rename to Milky Way/Assets/Resources/Sprites/Tracks.meta
diff --git a/Milky Way/Assets/Resources/Sprites/Tracks/Arena.meta b/Milky Way/Assets/Resources/Sprites/Tracks/Arena.meta
new file mode 100644
index 0000000..4bd66e7
--- /dev/null
+++ b/Milky Way/Assets/Resources/Sprites/Tracks/Arena.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 20e65c664f0357c42a44b4c5413ae31a
+folderAsset: yes
+timeCreated: 1518657564
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Sprites/Tracks/Arena/dummy b/Milky Way/Assets/Resources/Sprites/Tracks/Arena/dummy
new file mode 100644
index 0000000..e69de29
diff --git a/Milky Way/Assets/Resources/Sprites/Tracks/Arena/dummy.meta b/Milky Way/Assets/Resources/Sprites/Tracks/Arena/dummy.meta
new file mode 100644
index 0000000..a4fb242
--- /dev/null
+++ b/Milky Way/Assets/Resources/Sprites/Tracks/Arena/dummy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1097bda15d302d14094d54ba2d656575
+timeCreated: 1518657756
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Resources/Textures/Tracks/Finish Line.meta b/Milky Way/Assets/Resources/Sprites/Tracks/Finish Line.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Tracks/Finish Line.meta
rename to Milky Way/Assets/Resources/Sprites/Tracks/Finish Line.meta
diff --git a/Milky Way/Assets/Resources/Textures/Tracks/Finish Line/Chess.png b/Milky Way/Assets/Resources/Sprites/Tracks/Finish Line/Chess.png
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Tracks/Finish Line/Chess.png
rename to Milky Way/Assets/Resources/Sprites/Tracks/Finish Line/Chess.png
diff --git a/Milky Way/Assets/Resources/Textures/Tracks/Finish Line/Chess.png.meta b/Milky Way/Assets/Resources/Sprites/Tracks/Finish Line/Chess.png.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Tracks/Finish Line/Chess.png.meta
rename to Milky Way/Assets/Resources/Sprites/Tracks/Finish Line/Chess.png.meta
diff --git a/Milky Way/Assets/Resources/Textures/Tracks/Planets.meta b/Milky Way/Assets/Resources/Sprites/Tracks/Saturn.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Tracks/Planets.meta
rename to Milky Way/Assets/Resources/Sprites/Tracks/Saturn.meta
diff --git a/Milky Way/Assets/Resources/Textures/Tracks/Planets/Jupiter.jpg b/Milky Way/Assets/Resources/Sprites/Tracks/Saturn/Jupiter Diffuse.jpg
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Tracks/Planets/Jupiter.jpg
rename to Milky Way/Assets/Resources/Sprites/Tracks/Saturn/Jupiter Diffuse.jpg
diff --git a/Milky Way/Assets/Resources/Textures/Tracks/Planets/Jupiter.jpg.meta b/Milky Way/Assets/Resources/Sprites/Tracks/Saturn/Jupiter Diffuse.jpg.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Tracks/Planets/Jupiter.jpg.meta
rename to Milky Way/Assets/Resources/Sprites/Tracks/Saturn/Jupiter Diffuse.jpg.meta
diff --git a/Milky Way/Assets/Resources/Textures/Tracks/Road/Road Diffuse.png b/Milky Way/Assets/Resources/Sprites/Tracks/Saturn/Road Diffuse.png
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Tracks/Road/Road Diffuse.png
rename to Milky Way/Assets/Resources/Sprites/Tracks/Saturn/Road Diffuse.png
diff --git a/Milky Way/Assets/Resources/Textures/Tracks/Road/Road Diffuse.png.meta b/Milky Way/Assets/Resources/Sprites/Tracks/Saturn/Road Diffuse.png.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Tracks/Road/Road Diffuse.png.meta
rename to Milky Way/Assets/Resources/Sprites/Tracks/Saturn/Road Diffuse.png.meta
diff --git a/Milky Way/Assets/Resources/Textures/Tracks/Road/Road Normals.png b/Milky Way/Assets/Resources/Sprites/Tracks/Saturn/Road Normals.png
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Tracks/Road/Road Normals.png
rename to Milky Way/Assets/Resources/Sprites/Tracks/Saturn/Road Normals.png
diff --git a/Milky Way/Assets/Resources/Textures/Tracks/Road/Road Normals.png.meta b/Milky Way/Assets/Resources/Sprites/Tracks/Saturn/Road Normals.png.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Tracks/Road/Road Normals.png.meta
rename to Milky Way/Assets/Resources/Sprites/Tracks/Saturn/Road Normals.png.meta
diff --git a/Milky Way/Assets/Resources/Textures/Tracks/Planets/Saturn Ring.jpg b/Milky Way/Assets/Resources/Sprites/Tracks/Saturn/Saturn Diffuse Ring.jpg
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Tracks/Planets/Saturn Ring.jpg
rename to Milky Way/Assets/Resources/Sprites/Tracks/Saturn/Saturn Diffuse Ring.jpg
diff --git a/Milky Way/Assets/Resources/Textures/Tracks/Planets/Saturn Ring.jpg.meta b/Milky Way/Assets/Resources/Sprites/Tracks/Saturn/Saturn Diffuse Ring.jpg.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Tracks/Planets/Saturn Ring.jpg.meta
rename to Milky Way/Assets/Resources/Sprites/Tracks/Saturn/Saturn Diffuse Ring.jpg.meta
diff --git a/Milky Way/Assets/Resources/Textures/Tracks/Planets/Saturn.jpg b/Milky Way/Assets/Resources/Sprites/Tracks/Saturn/Saturn Diffuse.jpg
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Tracks/Planets/Saturn.jpg
rename to Milky Way/Assets/Resources/Sprites/Tracks/Saturn/Saturn Diffuse.jpg
diff --git a/Milky Way/Assets/Resources/Textures/Tracks/Planets/Saturn.jpg.meta b/Milky Way/Assets/Resources/Sprites/Tracks/Saturn/Saturn Diffuse.jpg.meta
similarity index 100%
rename from Milky Way/Assets/Resources/Textures/Tracks/Planets/Saturn.jpg.meta
rename to Milky Way/Assets/Resources/Sprites/Tracks/Saturn/Saturn Diffuse.jpg.meta
diff --git a/Milky Way/Assets/Resources/Textures/HUD.meta b/Milky Way/Assets/Resources/Textures/HUD.meta
deleted file mode 100644
index b041348..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD.meta
+++ /dev/null
@@ -1,5 +0,0 @@
-fileFormatVersion: 2
-guid: 5ec3d37fa4905564ea31d8b259c3154a
-folderAsset: yes
-DefaultImporter:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/Laps.meta b/Milky Way/Assets/Resources/Textures/HUD/Laps.meta
deleted file mode 100644
index 37bb56d..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD/Laps.meta
+++ /dev/null
@@ -1,5 +0,0 @@
-fileFormatVersion: 2
-guid: 8ac96be8dea66df45afbd298e95c83d7
-folderAsset: yes
-DefaultImporter:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/Laps/1stLap.png b/Milky Way/Assets/Resources/Textures/HUD/Laps/1stLap.png
deleted file mode 100644
index 468cfea..0000000
Binary files a/Milky Way/Assets/Resources/Textures/HUD/Laps/1stLap.png and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Textures/HUD/Laps/1stLap.png.meta b/Milky Way/Assets/Resources/Textures/HUD/Laps/1stLap.png.meta
deleted file mode 100644
index cdf9054..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD/Laps/1stLap.png.meta
+++ /dev/null
@@ -1,47 +0,0 @@
-fileFormatVersion: 2
-guid: 0bd3a957c18547244beebbaaa7160109
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 1
- linearTexture: 0
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: .25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: -1
- mipBias: -1
- wrapMode: -1
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 50
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: .5, y: .5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 0
- textureType: -1
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- spritePackingTag:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/Laps/2ndLap.png b/Milky Way/Assets/Resources/Textures/HUD/Laps/2ndLap.png
deleted file mode 100644
index 7847785..0000000
Binary files a/Milky Way/Assets/Resources/Textures/HUD/Laps/2ndLap.png and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Textures/HUD/Laps/2ndLap.png.meta b/Milky Way/Assets/Resources/Textures/HUD/Laps/2ndLap.png.meta
deleted file mode 100644
index 39c0ef5..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD/Laps/2ndLap.png.meta
+++ /dev/null
@@ -1,47 +0,0 @@
-fileFormatVersion: 2
-guid: 4489f1c880db81a4b81dcfccf9d75c9e
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 1
- linearTexture: 0
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: .25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: -1
- mipBias: -1
- wrapMode: -1
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 50
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: .5, y: .5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 0
- textureType: -1
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- spritePackingTag:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/Laps/3rdLap.png b/Milky Way/Assets/Resources/Textures/HUD/Laps/3rdLap.png
deleted file mode 100644
index 25eb799..0000000
Binary files a/Milky Way/Assets/Resources/Textures/HUD/Laps/3rdLap.png and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Textures/HUD/Laps/3rdLap.png.meta b/Milky Way/Assets/Resources/Textures/HUD/Laps/3rdLap.png.meta
deleted file mode 100644
index 122c314..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD/Laps/3rdLap.png.meta
+++ /dev/null
@@ -1,47 +0,0 @@
-fileFormatVersion: 2
-guid: 79b55eb46a963054fb64df6ef3289758
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 1
- linearTexture: 0
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: .25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: -1
- mipBias: -1
- wrapMode: -1
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 50
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: .5, y: .5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 0
- textureType: -1
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- spritePackingTag:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/PowerUps.meta b/Milky Way/Assets/Resources/Textures/HUD/PowerUps.meta
deleted file mode 100644
index 711239c..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD/PowerUps.meta
+++ /dev/null
@@ -1,5 +0,0 @@
-fileFormatVersion: 2
-guid: ce0811082fa5bef4f872a173f63bdc7c
-folderAsset: yes
-DefaultImporter:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/CircleTexture.png b/Milky Way/Assets/Resources/Textures/HUD/PowerUps/CircleTexture.png
deleted file mode 100644
index 0382c22..0000000
Binary files a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/CircleTexture.png and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/CircleTexture.png.meta b/Milky Way/Assets/Resources/Textures/HUD/PowerUps/CircleTexture.png.meta
deleted file mode 100644
index c9c5a35..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/CircleTexture.png.meta
+++ /dev/null
@@ -1,47 +0,0 @@
-fileFormatVersion: 2
-guid: 19a7b26e47d1768498d8fd482c2cf5fd
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 1
- linearTexture: 0
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: .25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: 16
- mipBias: -1
- wrapMode: 1
- nPOTScale: 0
- lightmap: 0
- compressionQuality: 50
- spriteMode: 1
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: .5, y: .5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 1
- textureType: 8
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- spritePackingTag:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/HomingRocket.png.meta b/Milky Way/Assets/Resources/Textures/HUD/PowerUps/HomingRocket.png.meta
deleted file mode 100644
index 33b7009..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/HomingRocket.png.meta
+++ /dev/null
@@ -1,47 +0,0 @@
-fileFormatVersion: 2
-guid: 5b48d1ef91a385f409d4560a5a84b14c
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 1
- linearTexture: 0
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: .25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: -1
- mipBias: -1
- wrapMode: -1
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 50
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: .5, y: .5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 0
- textureType: -1
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- spritePackingTag:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/HomingRocketK.png.meta b/Milky Way/Assets/Resources/Textures/HUD/PowerUps/HomingRocketK.png.meta
deleted file mode 100644
index 2a5a617..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/HomingRocketK.png.meta
+++ /dev/null
@@ -1,47 +0,0 @@
-fileFormatVersion: 2
-guid: 8f00fdb96dcdb3b4ebb1b80d088f3a83
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 1
- linearTexture: 0
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: .25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: -1
- mipBias: -1
- wrapMode: -1
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 50
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: .5, y: .5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 0
- textureType: -1
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- spritePackingTag:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/L1.png b/Milky Way/Assets/Resources/Textures/HUD/PowerUps/L1.png
deleted file mode 100644
index 6a7b2e2..0000000
Binary files a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/L1.png and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/L1.png.meta b/Milky Way/Assets/Resources/Textures/HUD/PowerUps/L1.png.meta
deleted file mode 100644
index 084ff2a..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/L1.png.meta
+++ /dev/null
@@ -1,47 +0,0 @@
-fileFormatVersion: 2
-guid: 83fc0ad92a6a0f7438c49be511446824
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 1
- linearTexture: 0
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: .25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: -1
- mipBias: -1
- wrapMode: -1
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 50
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: .5, y: .5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 0
- textureType: -1
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- spritePackingTag:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/Shield.png.meta b/Milky Way/Assets/Resources/Textures/HUD/PowerUps/Shield.png.meta
deleted file mode 100644
index 97f079f..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/Shield.png.meta
+++ /dev/null
@@ -1,47 +0,0 @@
-fileFormatVersion: 2
-guid: ada6bf89493680b44b71a7fcafd95562
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 1
- linearTexture: 0
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: .25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: -1
- mipBias: -1
- wrapMode: -1
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 50
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: .5, y: .5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 0
- textureType: -1
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- spritePackingTag:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/ShieldK.png.meta b/Milky Way/Assets/Resources/Textures/HUD/PowerUps/ShieldK.png.meta
deleted file mode 100644
index 607ff7e..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/ShieldK.png.meta
+++ /dev/null
@@ -1,47 +0,0 @@
-fileFormatVersion: 2
-guid: 7e40c25861c9f7e47b8e3d4353dccbd4
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 1
- linearTexture: 0
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: .25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: -1
- mipBias: -1
- wrapMode: -1
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 50
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: .5, y: .5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 0
- textureType: -1
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- spritePackingTag:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/Smokescreen.png.meta b/Milky Way/Assets/Resources/Textures/HUD/PowerUps/Smokescreen.png.meta
deleted file mode 100644
index 94172bd..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/Smokescreen.png.meta
+++ /dev/null
@@ -1,47 +0,0 @@
-fileFormatVersion: 2
-guid: 7d9d9b72cf503694eab605a0426b31ef
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 1
- linearTexture: 0
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: .25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: -1
- mipBias: -1
- wrapMode: -1
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 50
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: .5, y: .5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 0
- textureType: -1
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- spritePackingTag:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/SmokescreenK.png.meta b/Milky Way/Assets/Resources/Textures/HUD/PowerUps/SmokescreenK.png.meta
deleted file mode 100644
index 4ae85ff..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/SmokescreenK.png.meta
+++ /dev/null
@@ -1,47 +0,0 @@
-fileFormatVersion: 2
-guid: 9f7ae0d2e15e7834c906a0601ddb709c
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 1
- linearTexture: 0
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: .25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: -1
- mipBias: -1
- wrapMode: -1
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 50
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: .5, y: .5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 0
- textureType: -1
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- spritePackingTag:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/Timer.png b/Milky Way/Assets/Resources/Textures/HUD/PowerUps/Timer.png
deleted file mode 100644
index 11511a2..0000000
Binary files a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/Timer.png and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/Timer.png.meta b/Milky Way/Assets/Resources/Textures/HUD/PowerUps/Timer.png.meta
deleted file mode 100644
index 99dea2c..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD/PowerUps/Timer.png.meta
+++ /dev/null
@@ -1,47 +0,0 @@
-fileFormatVersion: 2
-guid: 7b054227a3f14784fbdb5c9ff2a5c7e6
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 1
- linearTexture: 0
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: .25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: -1
- mipBias: -1
- wrapMode: -1
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 50
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: .5, y: .5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 0
- textureType: -1
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- spritePackingTag:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/Speedometer.meta b/Milky Way/Assets/Resources/Textures/HUD/Speedometer.meta
deleted file mode 100644
index 023085e..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD/Speedometer.meta
+++ /dev/null
@@ -1,5 +0,0 @@
-fileFormatVersion: 2
-guid: ae64066ee7c42c741b6573c9c158dbef
-folderAsset: yes
-DefaultImporter:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/Speedometer/PointerV2.png b/Milky Way/Assets/Resources/Textures/HUD/Speedometer/PointerV2.png
deleted file mode 100644
index 9fea5c7..0000000
Binary files a/Milky Way/Assets/Resources/Textures/HUD/Speedometer/PointerV2.png and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Textures/HUD/Speedometer/PointerV2.png.meta b/Milky Way/Assets/Resources/Textures/HUD/Speedometer/PointerV2.png.meta
deleted file mode 100644
index 9079324..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD/Speedometer/PointerV2.png.meta
+++ /dev/null
@@ -1,47 +0,0 @@
-fileFormatVersion: 2
-guid: 26d2c4836a336144abd4bd75a1049c5a
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 1
- linearTexture: 0
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: .25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: -1
- mipBias: -1
- wrapMode: -1
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 50
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: .5, y: .5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 0
- textureType: -1
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- spritePackingTag:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/Speedometer/SpeedometerV2.png b/Milky Way/Assets/Resources/Textures/HUD/Speedometer/SpeedometerV2.png
deleted file mode 100644
index 3cedda8..0000000
Binary files a/Milky Way/Assets/Resources/Textures/HUD/Speedometer/SpeedometerV2.png and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Textures/HUD/Speedometer/SpeedometerV2.png.meta b/Milky Way/Assets/Resources/Textures/HUD/Speedometer/SpeedometerV2.png.meta
deleted file mode 100644
index fcdf774..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD/Speedometer/SpeedometerV2.png.meta
+++ /dev/null
@@ -1,47 +0,0 @@
-fileFormatVersion: 2
-guid: d7e29c4052d1a3c49a2e9b267310f565
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 1
- linearTexture: 0
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: .25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: -1
- mipBias: -1
- wrapMode: -1
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 50
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: .5, y: .5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 0
- textureType: -1
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- spritePackingTag:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/Standings.meta b/Milky Way/Assets/Resources/Textures/HUD/Standings.meta
deleted file mode 100644
index dc54780..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD/Standings.meta
+++ /dev/null
@@ -1,5 +0,0 @@
-fileFormatVersion: 2
-guid: 22c78ea2346380b41b4467396faef065
-folderAsset: yes
-DefaultImporter:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/Standings/1stPlace.png b/Milky Way/Assets/Resources/Textures/HUD/Standings/1stPlace.png
deleted file mode 100644
index 0b74f7e..0000000
Binary files a/Milky Way/Assets/Resources/Textures/HUD/Standings/1stPlace.png and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Textures/HUD/Standings/1stPlace.png.meta b/Milky Way/Assets/Resources/Textures/HUD/Standings/1stPlace.png.meta
deleted file mode 100644
index 5235170..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD/Standings/1stPlace.png.meta
+++ /dev/null
@@ -1,47 +0,0 @@
-fileFormatVersion: 2
-guid: 3d4c8af6afc0257479254869420b6ea6
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 1
- linearTexture: 0
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: .25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: -1
- mipBias: -1
- wrapMode: -1
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 50
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: .5, y: .5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 0
- textureType: -1
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- spritePackingTag:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/Standings/2ndPlace.png b/Milky Way/Assets/Resources/Textures/HUD/Standings/2ndPlace.png
deleted file mode 100644
index dff155c..0000000
Binary files a/Milky Way/Assets/Resources/Textures/HUD/Standings/2ndPlace.png and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Textures/HUD/Standings/2ndPlace.png.meta b/Milky Way/Assets/Resources/Textures/HUD/Standings/2ndPlace.png.meta
deleted file mode 100644
index 3398258..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD/Standings/2ndPlace.png.meta
+++ /dev/null
@@ -1,47 +0,0 @@
-fileFormatVersion: 2
-guid: 631c8dccca4f0534e8ac034242f7a182
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 1
- linearTexture: 0
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: .25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: -1
- mipBias: -1
- wrapMode: -1
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 50
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: .5, y: .5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 0
- textureType: -1
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- spritePackingTag:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/Standings/3rdPlace.png b/Milky Way/Assets/Resources/Textures/HUD/Standings/3rdPlace.png
deleted file mode 100644
index a981301..0000000
Binary files a/Milky Way/Assets/Resources/Textures/HUD/Standings/3rdPlace.png and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Textures/HUD/Standings/3rdPlace.png.meta b/Milky Way/Assets/Resources/Textures/HUD/Standings/3rdPlace.png.meta
deleted file mode 100644
index e9c1a08..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD/Standings/3rdPlace.png.meta
+++ /dev/null
@@ -1,47 +0,0 @@
-fileFormatVersion: 2
-guid: 3d61003591e5d5142a78ce882683e647
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 1
- linearTexture: 0
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: .25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: -1
- mipBias: -1
- wrapMode: -1
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 50
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: .5, y: .5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 0
- textureType: -1
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- spritePackingTag:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/HUD/Standings/4thPlace.png b/Milky Way/Assets/Resources/Textures/HUD/Standings/4thPlace.png
deleted file mode 100644
index a1f1511..0000000
Binary files a/Milky Way/Assets/Resources/Textures/HUD/Standings/4thPlace.png and /dev/null differ
diff --git a/Milky Way/Assets/Resources/Textures/HUD/Standings/4thPlace.png.meta b/Milky Way/Assets/Resources/Textures/HUD/Standings/4thPlace.png.meta
deleted file mode 100644
index 3c0823e..0000000
--- a/Milky Way/Assets/Resources/Textures/HUD/Standings/4thPlace.png.meta
+++ /dev/null
@@ -1,47 +0,0 @@
-fileFormatVersion: 2
-guid: 3e03287229ed40345be98d6b4fde62bd
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 1
- linearTexture: 0
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: .25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: -1
- mipBias: -1
- wrapMode: -1
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 50
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: .5, y: .5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 0
- textureType: -1
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- spritePackingTag:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/PowerUps.meta b/Milky Way/Assets/Resources/Textures/PowerUps.meta
deleted file mode 100644
index a914b75..0000000
--- a/Milky Way/Assets/Resources/Textures/PowerUps.meta
+++ /dev/null
@@ -1,5 +0,0 @@
-fileFormatVersion: 2
-guid: 1d16bf47aecfc1e419200ae6ec63db0a
-folderAsset: yes
-DefaultImporter:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/Spaceships.meta b/Milky Way/Assets/Resources/Textures/Spaceships.meta
deleted file mode 100644
index 23e6b16..0000000
--- a/Milky Way/Assets/Resources/Textures/Spaceships.meta
+++ /dev/null
@@ -1,5 +0,0 @@
-fileFormatVersion: 2
-guid: df27b215d1c3286479bfb65dd241c54d
-folderAsset: yes
-DefaultImporter:
- userData:
diff --git a/Milky Way/Assets/Resources/Textures/Tracks/Road.meta b/Milky Way/Assets/Resources/Textures/Tracks/Road.meta
deleted file mode 100644
index fad34ce..0000000
--- a/Milky Way/Assets/Resources/Textures/Tracks/Road.meta
+++ /dev/null
@@ -1,5 +0,0 @@
-fileFormatVersion: 2
-guid: b108ff3bef1f65f48a7ef2399a8f537c
-folderAsset: yes
-DefaultImporter:
- userData:
diff --git a/Milky Way/Assets/Resources/meshTest.prefab b/Milky Way/Assets/Resources/meshTest.prefab
deleted file mode 100644
index 477d938..0000000
Binary files a/Milky Way/Assets/Resources/meshTest.prefab and /dev/null differ
diff --git a/Milky Way/Assets/Resources/meshTest.prefab.meta b/Milky Way/Assets/Resources/meshTest.prefab.meta
deleted file mode 100644
index 3295a4c..0000000
--- a/Milky Way/Assets/Resources/meshTest.prefab.meta
+++ /dev/null
@@ -1,4 +0,0 @@
-fileFormatVersion: 2
-guid: 9328508a7ee3fc24a8c39f6b71ec0f0d
-NativeFormatImporter:
- userData:
diff --git a/Milky Way/Assets/Scenes/Arena Prototype.unity b/Milky Way/Assets/Scenes/Arena Prototype.unity
deleted file mode 100644
index c18048c..0000000
Binary files a/Milky Way/Assets/Scenes/Arena Prototype.unity and /dev/null differ
diff --git a/Milky Way/Assets/Scenes/Levels.meta b/Milky Way/Assets/Scenes/Levels.meta
new file mode 100644
index 0000000..2e17161
--- /dev/null
+++ b/Milky Way/Assets/Scenes/Levels.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 42adeec5cc66ae34f93ddb09b942b054
+folderAsset: yes
+timeCreated: 1518763990
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Scenes/Levels/Arena.unity b/Milky Way/Assets/Scenes/Levels/Arena.unity
new file mode 100644
index 0000000..6634780
Binary files /dev/null and b/Milky Way/Assets/Scenes/Levels/Arena.unity differ
diff --git a/Milky Way/Assets/Scenes/Arena Prototype.unity.meta b/Milky Way/Assets/Scenes/Levels/Arena.unity.meta
similarity index 100%
rename from Milky Way/Assets/Scenes/Arena Prototype.unity.meta
rename to Milky Way/Assets/Scenes/Levels/Arena.unity.meta
diff --git a/Milky Way/Assets/Scenes/Levels/Time Attack.unity b/Milky Way/Assets/Scenes/Levels/Time Attack.unity
new file mode 100644
index 0000000..7b15a7d
Binary files /dev/null and b/Milky Way/Assets/Scenes/Levels/Time Attack.unity differ
diff --git a/Milky Way/Assets/Scenes/Time Attack Prototype.unity.meta b/Milky Way/Assets/Scenes/Levels/Time Attack.unity.meta
similarity index 100%
rename from Milky Way/Assets/Scenes/Time Attack Prototype.unity.meta
rename to Milky Way/Assets/Scenes/Levels/Time Attack.unity.meta
diff --git a/Milky Way/Assets/Scenes/Levels/Track.unity b/Milky Way/Assets/Scenes/Levels/Track.unity
new file mode 100644
index 0000000..9c77a19
Binary files /dev/null and b/Milky Way/Assets/Scenes/Levels/Track.unity differ
diff --git a/Milky Way/Assets/Scenes/Single Race Prototype.unity.meta b/Milky Way/Assets/Scenes/Levels/Track.unity.meta
similarity index 100%
rename from Milky Way/Assets/Scenes/Single Race Prototype.unity.meta
rename to Milky Way/Assets/Scenes/Levels/Track.unity.meta
diff --git a/Milky Way/Assets/Scenes/MainMenu.unity b/Milky Way/Assets/Scenes/MainMenu.unity
deleted file mode 100644
index cc07f42..0000000
Binary files a/Milky Way/Assets/Scenes/MainMenu.unity and /dev/null differ
diff --git a/Milky Way/Assets/Scenes/Menu.unity b/Milky Way/Assets/Scenes/Menu.unity
new file mode 100644
index 0000000..d08ba48
Binary files /dev/null and b/Milky Way/Assets/Scenes/Menu.unity differ
diff --git a/Milky Way/Assets/Scenes/MainMenu.unity.meta b/Milky Way/Assets/Scenes/Menu.unity.meta
similarity index 100%
rename from Milky Way/Assets/Scenes/MainMenu.unity.meta
rename to Milky Way/Assets/Scenes/Menu.unity.meta
diff --git a/Milky Way/Assets/Scenes/Prototype.unity b/Milky Way/Assets/Scenes/Prototype.unity
deleted file mode 100644
index b425fd6..0000000
Binary files a/Milky Way/Assets/Scenes/Prototype.unity and /dev/null differ
diff --git a/Milky Way/Assets/Scenes/Prototype.unity.meta b/Milky Way/Assets/Scenes/Prototype.unity.meta
deleted file mode 100644
index 0de5e32..0000000
--- a/Milky Way/Assets/Scenes/Prototype.unity.meta
+++ /dev/null
@@ -1,4 +0,0 @@
-fileFormatVersion: 2
-guid: 234ba2decf0d2a24782437687ee44b1d
-DefaultImporter:
- userData:
diff --git a/Milky Way/Assets/Scenes/Single Race Prototype.unity b/Milky Way/Assets/Scenes/Single Race Prototype.unity
deleted file mode 100644
index f6d376c..0000000
Binary files a/Milky Way/Assets/Scenes/Single Race Prototype.unity and /dev/null differ
diff --git a/Milky Way/Assets/Scenes/Time Attack Prototype.unity b/Milky Way/Assets/Scenes/Time Attack Prototype.unity
deleted file mode 100644
index d08969f..0000000
Binary files a/Milky Way/Assets/Scenes/Time Attack Prototype.unity and /dev/null differ
diff --git a/Milky Way/Assets/Scripts/Controllers.meta b/Milky Way/Assets/Scripts/Controllers.meta
new file mode 100644
index 0000000..14fb246
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: c5a5c3a117fd5dd4fb5ca60f6f943190
+folderAsset: yes
+timeCreated: 1518559776
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Scripts/Controllers/IObjectController.cs b/Milky Way/Assets/Scripts/Controllers/IObjectController.cs
new file mode 100644
index 0000000..49d8236
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/IObjectController.cs
@@ -0,0 +1,26 @@
+namespace MilkyWay
+{
+ ///
+ /// Defines the necessary methods to implement a Runnable Object.
+ ///
+ /// These methods are necessary to control the Objects Lifecycle.
+ /// These events are used to initialized, update and destroy the Object.
+ ///
+ public interface IObjectController
+ {
+ ///
+ /// Creates the Object.
+ ///
+ void ObjectCreate();
+
+ ///
+ /// Updates the Object.
+ ///
+ void ObjectUpdate();
+
+ ///
+ /// Destroys the Object.
+ ///
+ void ObjectDestroy();
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/Controllers/IObjectController.cs.meta b/Milky Way/Assets/Scripts/Controllers/IObjectController.cs.meta
new file mode 100644
index 0000000..dbac1c0
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/IObjectController.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 8d0742c7544d56948aec269e95a7f8fe
+timeCreated: 1518557363
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Scripts/Controllers/Interface.meta b/Milky Way/Assets/Scripts/Controllers/Interface.meta
new file mode 100644
index 0000000..dc1e733
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Interface.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: a65b57f5bc986ed44aa7af4cab321039
+folderAsset: yes
+timeCreated: 1518559776
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Scripts/Menus.meta b/Milky Way/Assets/Scripts/Controllers/Interface/Menus.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/Menus.meta
rename to Milky Way/Assets/Scripts/Controllers/Interface/Menus.meta
diff --git a/Milky Way/Assets/Scripts/Menus/MainMenuEmpty.anim b/Milky Way/Assets/Scripts/Controllers/Interface/Menus/MainMenuEmpty.anim
similarity index 100%
rename from Milky Way/Assets/Scripts/Menus/MainMenuEmpty.anim
rename to Milky Way/Assets/Scripts/Controllers/Interface/Menus/MainMenuEmpty.anim
diff --git a/Milky Way/Assets/Scripts/Menus/MainMenuEmpty.anim.meta b/Milky Way/Assets/Scripts/Controllers/Interface/Menus/MainMenuEmpty.anim.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/Menus/MainMenuEmpty.anim.meta
rename to Milky Way/Assets/Scripts/Controllers/Interface/Menus/MainMenuEmpty.anim.meta
diff --git a/Milky Way/Assets/Scripts/Controllers/Interface/Menus/MenuController.cs b/Milky Way/Assets/Scripts/Controllers/Interface/Menus/MenuController.cs
new file mode 100644
index 0000000..6165645
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Interface/Menus/MenuController.cs
@@ -0,0 +1,60 @@
+// Unity
+using UnityEngine;
+
+namespace MilkyWay.Managers.Menu
+{
+ ///
+ /// Manages the menus in MilkyWay.
+ ///
+ public class MenuController : MonoBehaviour
+ {
+ #region [Attributes]
+ ///
+ /// The animator.
+ ///
+ private Animator Animator;
+ ///
+ /// The canvas group.
+ ///
+ private CanvasGroup CanvasGroup;
+
+ ///
+ /// Whether this menu is open.
+ ///
+ public bool IsOpen
+ {
+ get { return Animator.GetBool("isOpen"); }
+ set { Animator.SetBool("isOpen", value); }
+ }
+ #endregion
+
+ #region [Methods]
+ ///
+ /// Awakes this instance.
+ ///
+ public virtual void Awake()
+ {
+ /*this.Animator = GetComponent();
+ this.CanvasGroup = GetComponent();
+
+ // Disable the Menu
+ this.IsOpen = false;*/
+ }
+
+ ///
+ /// Updates this instance.
+ ///
+ public virtual void Update()
+ {
+ /*if (!this.Animator.GetCurrentAnimatorStateInfo(0).IsName("Open"))
+ {
+ this.CanvasGroup.blocksRaycasts = CanvasGroup.interactable = false;
+ }
+ else
+ {
+ this.CanvasGroup.blocksRaycasts = CanvasGroup.interactable = true;
+ }*/
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/Menus/Menu.cs.meta b/Milky Way/Assets/Scripts/Controllers/Interface/Menus/MenuController.cs.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/Menus/Menu.cs.meta
rename to Milky Way/Assets/Scripts/Controllers/Interface/Menus/MenuController.cs.meta
diff --git a/Milky Way/Assets/Scripts/Controllers/Interface/Menus/MenuManager.cs b/Milky Way/Assets/Scripts/Controllers/Interface/Menus/MenuManager.cs
new file mode 100644
index 0000000..ed0a55c
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Interface/Menus/MenuManager.cs
@@ -0,0 +1,85 @@
+// Unity
+using UnityEngine;
+
+// System
+using System.Linq;
+using System.Collections.Generic;
+using UnityEngine.SceneManagement;
+
+namespace MilkyWay.Managers.Menu
+{
+ ///
+ /// Manages the main-menu in MilkyWay.
+ ///
+ public sealed class MenuManager : MonoBehaviour
+ {
+ #region [Constants and Statics]
+ ///
+ /// The main menu game-object name.
+ ///
+ public const string MainMenuName = "Main Menu";
+
+ ///
+ /// The singleplayer menu game-object name.
+ ///
+ public const string SingleplayerMenuName = "Singleplayer Menu";
+ ///
+ /// The multiplayer menu game-object name.
+ ///
+ public const string MultiplayerMenuName = "Multiplayer Menu";
+ ///
+ /// The upgrade menu game-object name.
+ ///
+ public const string UpgradeMenuName = "Upgrade Menu";
+ #endregion
+
+ #region [Attributes]
+ ///
+ /// The current menu.
+ ///
+ public MenuController CurrentMenu { get; private set; }
+ ///
+ /// The list of available menus.
+ ///
+ public List MenuList { get; private set; }
+ #endregion
+
+ #region [Methods]
+ ///
+ /// Starts this instance.
+ ///
+ public void Start()
+ {
+ // Retrieve the menus
+ this.MenuList = new List(GetComponentsInChildren());
+
+ // Show the main menu by default
+ ShowMenu(this.MenuList.FirstOrDefault(menu => menu.name == MainMenuName));
+ }
+
+ ///
+ /// Shows the specified menu.
+ ///
+ public void ShowMenu(MenuController menuController)
+ {
+ // Hide the previous menu
+ if (this.CurrentMenu != null)
+ this.CurrentMenu.gameObject.SetActive(false);
+
+ // Show the current menu
+ this.CurrentMenu = menuController;
+ this.CurrentMenu.gameObject.SetActive(true);
+ }
+
+ ///
+ /// Loads the level.
+ ///
+ ///
+ /// Name of the level.
+ public void LoadLevel(string levelName)
+ {
+ SceneManager.LoadScene(levelName, LoadSceneMode.Single);
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/Menus/MenuManager.cs.meta b/Milky Way/Assets/Scripts/Controllers/Interface/Menus/MenuManager.cs.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/Menus/MenuManager.cs.meta
rename to Milky Way/Assets/Scripts/Controllers/Interface/Menus/MenuManager.cs.meta
diff --git a/Milky Way/Assets/Scripts/Controllers/Interface/Menus/UpgradesMenu.cs b/Milky Way/Assets/Scripts/Controllers/Interface/Menus/UpgradesMenu.cs
new file mode 100644
index 0000000..23f9f70
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Interface/Menus/UpgradesMenu.cs
@@ -0,0 +1,228 @@
+// Unity
+using UnityEngine.UI;
+
+// System
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using MilkyWay.Objects.Spaceships;
+
+namespace MilkyWay.Managers.Menu
+{
+ ///
+ /// The upgrade entries.
+ ///
+ public enum UpgradeEntries
+ {
+ Health,
+ Handling,
+ WeaponPower,
+ Acceleration,
+ Points
+ }
+
+ ///
+ /// Manages the upgrades menus in MilkyWay.
+ ///
+ public sealed class UpgradesMenu : MenuController
+ {
+ #region [Constants and Statics]
+ ///
+ /// The maximum upgrade points.
+ ///
+ public const int MaximumUpgradePoints = 15;
+ #endregion
+
+ #region [Attributes]
+ ///
+ /// The spaceship configurations.
+ ///
+ private SpaceshipConfiguration[] Configurations;
+
+ ///
+ /// The upgrade labels.
+ ///
+ private Dictionary[] Labels;
+ ///
+ /// The upgrade sliders.
+ ///
+ private Dictionary[] Sliders;
+ #endregion
+
+ #region [Methods]
+ ///
+ /// Starts this instance.
+ ///
+ public override void Awake()
+ {
+ base.Awake();
+
+ // Initilize the configurations
+ this.Configurations = new SpaceshipConfiguration[2];
+ // Initilize the labels and sliders
+ this.Labels = new Dictionary[2];
+ this.Sliders = new Dictionary[2];
+
+ for (int i = 0; i < 2; i++)
+ {
+ // Load the configuration (if it exists)
+ this.Configurations[i] = SpaceshipConfiguration.LoadConfiguration(i+1);
+
+ // Load the labels and sliders
+ this.Labels[i] = new Dictionary();
+ this.Sliders[i] = new Dictionary();
+
+ foreach(UpgradeEntries upgradeEntry in Enum.GetValues(typeof(UpgradeEntries)))
+ {
+ Text text = this.transform.Find(string.Format("Panel/Options/Player {0}/Stats/{1}/Value", i+1, upgradeEntry)).GetComponent();
+ Slider slider = this.transform.Find(string.Format("Panel/Options/Player {0}/Stats/{1}/Slider", i + 1, upgradeEntry)).GetComponent();
+
+ switch (upgradeEntry)
+ {
+ case UpgradeEntries.Health:
+ // Update the label
+ text.text = this.Configurations[i].Health.ToString();
+ // Update the slider
+ slider.value = this.Configurations[i].Health;
+ slider.onValueChanged.AddListener(UpdateHealth);
+ break;
+
+ case UpgradeEntries.Handling:
+ // Update the label
+ text.text = this.Configurations[i].Handling.ToString();
+ // Update the slider
+ slider.value = this.Configurations[i].Handling;
+ slider.onValueChanged.AddListener(UpdateHandling);
+ break;
+
+ case UpgradeEntries.WeaponPower:
+ // Update the label
+ text.text = this.Configurations[i].WeaponPower.ToString();
+ // Update the slider
+ slider.value = this.Configurations[i].WeaponPower;
+ slider.onValueChanged.AddListener(UpdateWeaponPower);
+ break;
+
+ case UpgradeEntries.Acceleration:
+ // Update the label
+ text.text = this.Configurations[i].Acceleration.ToString();
+ // Update the slider
+ slider.value = this.Configurations[i].Acceleration;
+ slider.onValueChanged.AddListener(UpdateAcceleration);
+ break;
+
+ case UpgradeEntries.Points:
+ // Calculate the available points
+ int points = MaximumUpgradePoints;
+ points -= this.Configurations[i].Health;
+ points -= this.Configurations[i].Handling;
+ points -= this.Configurations[i].WeaponPower;
+ points -= this.Configurations[i].Acceleration;
+ // Update the label
+ text.text = points.ToString();
+ break;
+ }
+
+ this.Labels[i].Add(upgradeEntry, text);
+ this.Sliders[i].Add(upgradeEntry, slider);
+ }
+ }
+ }
+
+ ///
+ /// Updates the health.
+ ///
+ /// The value.
+ public void UpdateHealth(float value)
+ {
+ OnUpdate(UpgradeEntries.Health);
+ }
+
+ ///
+ /// Updates the handling.
+ ///
+ /// The value.
+ public void UpdateHandling(float value)
+ {
+ OnUpdate(UpgradeEntries.Handling);
+ }
+
+ ///
+ /// Updates the weapon power.
+ ///
+ /// The value.
+ public void UpdateWeaponPower(float value)
+ {
+ OnUpdate(UpgradeEntries.WeaponPower);
+ }
+
+ ///
+ /// Updates the acceleration.
+ ///
+ /// The value.
+ public void UpdateAcceleration(float value)
+ {
+ OnUpdate(UpgradeEntries.Acceleration);
+ }
+
+ ///
+ /// Gets the spent points.
+ ///
+ ///
+ /// The spaceship identifier.
+ private int GetSpentPoints(int spaceshipID)
+ {
+ // Calculate the acumulated points
+ int points = 0;
+ points += (int)this.Sliders[spaceshipID][UpgradeEntries.Health].value;
+ points += (int)this.Sliders[spaceshipID][UpgradeEntries.Handling].value;
+ points += (int)this.Sliders[spaceshipID][UpgradeEntries.WeaponPower].value;
+ points += (int)this.Sliders[spaceshipID][UpgradeEntries.Acceleration].value;
+
+ return points;
+ }
+
+ ///
+ /// Called when [update].
+ ///
+ private void OnUpdate(UpgradeEntries upgradeEntry)
+ {
+ // Validate the points
+ for(int i = 0; i < 2; i++)
+ {
+ // Calculate the spent points
+ int points = GetSpentPoints(i);
+
+ // Too many points were spent
+ if(points > MaximumUpgradePoints)
+ {
+ int difference = points - MaximumUpgradePoints;
+
+ // Update the slider
+ this.Sliders[i][upgradeEntry].value -= difference;
+
+ // Update the points
+ this.Labels[i][UpgradeEntries.Points].text = (MaximumUpgradePoints - points + difference).ToString();
+ }
+ else
+ {
+ // Update the points
+ this.Labels[i][UpgradeEntries.Points].text = (MaximumUpgradePoints - points).ToString();
+ }
+
+ // Update the label
+ this.Labels[i][upgradeEntry].text = this.Sliders[i][upgradeEntry].value.ToString(CultureInfo.InvariantCulture);
+
+ // Update the configuration
+ this.Configurations[i].Health = (int)this.Sliders[i][UpgradeEntries.Health].value;
+ this.Configurations[i].Handling = (int)this.Sliders[i][UpgradeEntries.Handling].value;
+ this.Configurations[i].WeaponPower = (int)this.Sliders[i][UpgradeEntries.WeaponPower].value;
+ this.Configurations[i].Acceleration = (int)this.Sliders[i][UpgradeEntries.Acceleration].value;
+
+ // Save the configuration
+ SpaceshipConfiguration.SaveConfiguration(this.Configurations[i]);
+ }
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/Menus/Upgrades.cs.meta b/Milky Way/Assets/Scripts/Controllers/Interface/Menus/UpgradesMenu.cs.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/Menus/Upgrades.cs.meta
rename to Milky Way/Assets/Scripts/Controllers/Interface/Menus/UpgradesMenu.cs.meta
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects.meta b/Milky Way/Assets/Scripts/Controllers/Objects.meta
new file mode 100644
index 0000000..6953fc8
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 7e936dda6ba17c445adb0a3fa7aa4737
+folderAsset: yes
+timeCreated: 1518656209
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/Explosions.meta b/Milky Way/Assets/Scripts/Controllers/Objects/Explosions.meta
new file mode 100644
index 0000000..2b923f0
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/Explosions.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: b863abf11163e3047b2b8d18d63b65aa
+folderAsset: yes
+timeCreated: 1518625331
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/Explosions/ExplosionController.cs b/Milky Way/Assets/Scripts/Controllers/Objects/Explosions/ExplosionController.cs
new file mode 100644
index 0000000..096fb33
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/Explosions/ExplosionController.cs
@@ -0,0 +1,44 @@
+// Unity
+using UnityEngine;
+
+namespace MilkyWay.Objects.Spaceships
+{
+ ///
+ /// Implements an explosion controller.
+ ///
+ ///
+ ///
+ public sealed class ExplosionController : MonoBehaviour
+ {
+ #region [Attributes]
+ ///
+ /// The flame particle system.
+ ///
+ private ParticleSystem Flame;
+ ///
+ /// The smoke particle system.
+ ///
+ private ParticleSystem Smoke;
+ #endregion
+
+ #region [Methods]
+ ///
+ /// Starts this instance.
+ ///
+ public void Start()
+ {
+ this.Flame = this.transform.Find("Flame").GetComponent();
+ this.Smoke = this.transform.Find("Smoke").GetComponent();
+ }
+
+ ///
+ /// Updates this instance.
+ ///
+ public void Update()
+ {
+ if (this.Flame.isStopped && this.Smoke.isStopped)
+ Destroy(this.gameObject);
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/SpaceShip/ExplosionController.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/Explosions/ExplosionController.cs.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/SpaceShip/ExplosionController.cs.meta
rename to Milky Way/Assets/Scripts/Controllers/Objects/Explosions/ExplosionController.cs.meta
diff --git a/Milky Way/Assets/Scripts/Item.meta b/Milky Way/Assets/Scripts/Controllers/Objects/Items.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/Item.meta
rename to Milky Way/Assets/Scripts/Controllers/Objects/Items.meta
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/Items/ItemController.cs b/Milky Way/Assets/Scripts/Controllers/Objects/Items/ItemController.cs
new file mode 100644
index 0000000..9e64c70
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/Items/ItemController.cs
@@ -0,0 +1,84 @@
+// Unity
+using UnityEngine;
+
+// MilkyWay
+using MilkyWay.Managers;
+using MilkyWay.Objects.Spaceships;
+
+namespace MilkyWay.Objects.Items
+{
+ ///
+ /// Abstract class representing an item that can be picked up by a spaceship.
+ ///
+ public abstract class ItemController : MonoBehaviour, IObjectController
+ {
+ #region [Constants and Statics]
+ ///
+ /// The items rotation speed.
+ ///
+ public const float RotationSpeed = 2.5f;
+ #endregion
+
+ #region [Attributes]
+ ///
+ /// The items name.
+ ///
+ protected string Name
+ {
+ get { return this.name; }
+ set { this.name = value; }
+ }
+ #endregion
+
+ #region [Methods]
+ ///
+ public virtual void ObjectCreate()
+ {
+ // Initialize the name
+ this.Name = GetType().Name;
+
+ // Update the parent
+ ItemManager.Instance.AddItem(this);
+ }
+
+ ///
+ public virtual void ObjectUpdate()
+ {
+ Vector3 eulerAngles = this.transform.localRotation.eulerAngles;
+ eulerAngles.y += RotationSpeed;
+
+ this.transform.localRotation = Quaternion.Euler(eulerAngles.x, eulerAngles.y, eulerAngles.z);
+ }
+
+ ///
+ public virtual void ObjectDestroy()
+ {
+ Destroy(this.gameObject);
+ }
+
+ ///
+ /// Called when a trigger collider enters this instance.
+ ///
+ ///
+ /// The collider.
+ public void OnTriggerEnter(Collider collider)
+ {
+ // Collision with spaceships
+ if(collider.gameObject.layer == LayerManager.GetLayer(Layer.Spaceships))
+ {
+ SpaceshipController spaceship = collider.GetComponent();
+
+ if(AddItem(spaceship))
+ ObjectDestroy();
+ }
+ }
+
+ ///
+ /// Adds the item to the spaceship.
+ ///
+ ///
+ /// The spaceship.
+ public abstract bool AddItem(SpaceshipController spaceship);
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/Item/Item.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/Items/ItemController.cs.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/Item/Item.cs.meta
rename to Milky Way/Assets/Scripts/Controllers/Objects/Items/ItemController.cs.meta
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/Items/PowerUpItemController.cs b/Milky Way/Assets/Scripts/Controllers/Objects/Items/PowerUpItemController.cs
new file mode 100644
index 0000000..a7a78b5
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/Items/PowerUpItemController.cs
@@ -0,0 +1,71 @@
+// MilkyWay
+
+using MilkyWay.Objects.PowerUps;
+using MilkyWay.Objects.Spaceships;
+
+namespace MilkyWay.Objects.Items
+{
+ ///
+ /// Class representing a power-up item that can be picked up by a spaceship.
+ ///
+ public sealed class PowerUpItemController : ItemController
+ {
+ #region [Attributes]
+ ///
+ /// The power up name.
+ ///
+ public string PowerUpName;
+ ///
+ /// The power up.
+ ///
+ private IPowerUp PowerUp;
+ #endregion
+
+ #region [Methods]
+ ///
+ public override void ObjectCreate()
+ {
+ base.ObjectCreate();
+
+ // Initialize the name
+ this.Name = string.Format("PowerUp-{0}", PowerUpName);
+
+ // Initialize the power-up
+ switch(this.PowerUpName)
+ {
+ case "HomingRocket":
+ this.PowerUp = new HomingRocket();
+ break;
+ case "Smokescreen":
+ this.PowerUp = new Smokescreen();
+ break;
+ case "Shield":
+ this.PowerUp = new Shield();
+ break;
+ }
+ this.PowerUp.PowerUpCreate();
+ }
+
+ ///
+ public override void ObjectUpdate()
+ {
+ base.ObjectUpdate();
+ }
+
+ ///
+ public override void ObjectDestroy()
+ {
+ base.ObjectDestroy();
+ }
+
+ ///
+ public override bool AddItem(SpaceshipController spaceship)
+ {
+ if (spaceship != null)
+ return spaceship.AddPowerUp(this.PowerUp);
+
+ return false;
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/Item/PowerUpItem.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/Items/PowerUpItemController.cs.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/Item/PowerUpItem.cs.meta
rename to Milky Way/Assets/Scripts/Controllers/Objects/Items/PowerUpItemController.cs.meta
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/Items/StarFragmentItemController.cs b/Milky Way/Assets/Scripts/Controllers/Objects/Items/StarFragmentItemController.cs
new file mode 100644
index 0000000..b23f0cb
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/Items/StarFragmentItemController.cs
@@ -0,0 +1,49 @@
+// MilkyWay
+using MilkyWay.Objects.Spaceships;
+
+namespace MilkyWay.Objects.Items
+{
+ ///
+ /// Class representing a star-fragment item that can be picked up by a spaceship.
+ ///
+ public class StarFragmentItemController : ItemController
+ {
+ #region [Attributes]
+ ///
+ /// The star-fragments star-dust amount.
+ ///
+ public int StarDust;
+ #endregion
+
+ #region [Methods]
+ ///
+ public override void ObjectCreate()
+ {
+ base.ObjectCreate();
+
+ this.Name = string.Format("StarFragment x{0}", StarDust);
+ }
+
+ ///
+ public override void ObjectUpdate()
+ {
+ base.ObjectUpdate();
+ }
+
+ ///
+ public override void ObjectDestroy()
+ {
+ base.ObjectDestroy();
+ }
+
+ ///
+ public override bool AddItem(SpaceshipController spaceship)
+ {
+ if (spaceship != null)
+ return spaceship.AddStarDust(this.StarDust);
+
+ return false;
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/Item/StarFragmentItem.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/Items/StarFragmentItemController.cs.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/Item/StarFragmentItem.cs.meta
rename to Milky Way/Assets/Scripts/Controllers/Objects/Items/StarFragmentItemController.cs.meta
diff --git a/Milky Way/Assets/Scripts/PowerUp.meta b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/PowerUp.meta
rename to Milky Way/Assets/Scripts/Controllers/Objects/PowerUps.meta
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/HomingRocket.cs b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/HomingRocket.cs
new file mode 100644
index 0000000..febd5be
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/HomingRocket.cs
@@ -0,0 +1,123 @@
+// Unity
+using UnityEngine;
+
+// MilkyWay
+using MilkyWay.Managers;
+using MilkyWay.Objects.Spaceships;
+
+namespace MilkyWay.Objects.PowerUps
+{
+ ///
+ /// Implements the HomingRocket power-up.
+ ///
+ ///
+ ///
+ public sealed class HomingRocket : PowerUp
+ {
+ #region [Constants and Statics]
+ ///
+ /// The default damage.
+ ///
+ public const float DefaultDamage = 150.0f;
+ ///
+ /// The default force.
+ ///
+ public const float DefaultForce = 1.0f;
+ ///
+ /// The default duration.
+ ///
+ public const float DefaultDuration = 90.0f;
+ ///
+ /// The default setup duration.
+ ///
+ public const float DefaultSetupDuration = 1.5f;
+ #endregion
+
+ #region [Attributes]
+ ///
+ /// The homing-rockets damage.
+ ///
+ public float Damage { get; private set; }
+ ///
+ /// The homing-rockets force.
+ ///
+ public float Force { get; private set; }
+ ///
+ /// The homing-rockets duration.
+ ///
+ public float Duration { get; private set; }
+ ///
+ /// The homing-rockets setup duration.
+ ///
+ public float SetupDuration { get; private set; }
+
+ ///
+ /// The homing-rocket power-up controller.
+ ///
+ public HomingRocketController HomingRocketController
+ {
+ get; private set;
+ }
+ ///
+ public override PowerUpController PowerUpController
+ {
+ get { return this.HomingRocketController; }
+ }
+ #endregion
+
+ #region [Methods]
+ ///
+ public override void PowerUpCreate()
+ {
+ base.PowerUpCreate();
+
+ // Initialize the homing-rockets properties
+ this.Damage = DefaultDamage;
+ this.Force = DefaultForce;
+ this.Duration = DefaultDuration;
+ this.SetupDuration = DefaultSetupDuration;
+ }
+
+ ///
+ public override void PowerUpUpdate()
+ {
+ base.PowerUpUpdate();
+ }
+
+ ///
+ public override void PowerUpDestroy()
+ {
+ base.PowerUpDestroy();
+ }
+
+ ///
+ public override bool Activate(SpaceshipController spaceship)
+ {
+ if(this.Active == false)
+ {
+ // Update the flag
+ this.Active = true;
+ // Update the spaceship
+ this.Spaceship = spaceship;
+
+ // Create the power-up
+ this.HomingRocketController = ResourceManager.LoadGameObject(string.Format("Objects/PowerUps/{0}", this.Name));
+ this.HomingRocketController.transform.localRotation = Quaternion.identity;
+ this.HomingRocketController.transform.position = Vector3.zero;
+ this.HomingRocketController.Spaceship = this.Spaceship;
+ this.HomingRocketController.Damage = this.Damage;
+ this.HomingRocketController.Speed = this.Force;
+ this.HomingRocketController.Duration = this.Duration;
+ this.HomingRocketController.SetupDuration = this.SetupDuration;
+
+ // Initialize the homing-rockets controller
+ this.HomingRocketController.ObjectCreate();
+
+ return this.HomingRocketController.Activate();
+ }
+
+ return false;
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/HomingRocket.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/HomingRocket.cs.meta
new file mode 100644
index 0000000..a8a5101
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/HomingRocket.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 9fd3514ea0fa75849923d0f1c6410917
+timeCreated: 1518566884
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/HomingRocketController.cs b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/HomingRocketController.cs
new file mode 100644
index 0000000..b915b25
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/HomingRocketController.cs
@@ -0,0 +1,196 @@
+// Unity
+using UnityEngine;
+
+// MilkyWay
+using MilkyWay.Utility;
+using MilkyWay.Managers;
+using MilkyWay.Objects.Spaceships;
+
+namespace MilkyWay.Objects.PowerUps
+{
+ ///
+ /// Implements the HomingRocket Controller.
+ ///
+ ///
+ ///
+ public sealed class HomingRocketController : PowerUpController
+ {
+ #region [Attributes]
+ ///
+ /// The homing-rockets damage.
+ ///
+ public float Damage { get; set; }
+ ///
+ /// The homing-rockets speed.
+ ///
+ public float Speed { get; set; }
+ ///
+ /// The homing-rockets setup duration.
+ ///
+ public float SetupDuration { get; set; }
+ ///
+ /// The homing-rockets setup duration timer.
+ ///
+ public Timer SetupDurationTimer { get; set; }
+
+ ///
+ /// The homing-rockets target spaceship.
+ ///
+ public SpaceshipController SpaceshipTarget { get; set; }
+ #endregion
+
+ #region [Methods]
+ ///
+ public override void ObjectCreate()
+ {
+ base.ObjectCreate();
+
+ // Initialize the setup timer
+ this.SetupDurationTimer = new Timer(TimerMode.Countdown, this.SetupDuration);
+ }
+
+ ///
+ public override void ObjectUpdate()
+ {
+ base.ObjectUpdate();
+
+ // Update the setup timer
+ this.SetupDurationTimer.Update();
+
+ // Face the rocket towards the target
+ this.transform.LookAt(this.SpaceshipTarget.transform.position, Vector3.up);
+
+ // The rocket is still in the setup phase
+ if(this.SetupDurationTimer.Finished == false)
+ {
+ // Increase the rockets height
+ this.transform.position += this.transform.up * 5.0f * Time.deltaTime;
+ }
+ else
+ {
+ // The rocket just ended the setup phase
+ if(this.DurationTimer.Finished == false)
+ {
+ // Release the rocket from the parent so it can move freely
+ if(this.DurationTimer.Running == false)
+ {
+ this.DurationTimer.Start();
+
+ this.transform.parent = null;
+ }
+ else
+ {
+ // Increase the speed
+ this.Speed += 0.125f * Time.deltaTime;
+
+ // Calculate the targets direction
+ Vector3 direction = this.SpaceshipTarget.transform.position - this.transform.position;
+ direction.Normalize();
+
+ // Translate the rocket towards the target
+ this.transform.Translate(direction * this.Speed, Space.World);
+ // Rotate the rocket around its SpaceshipForward axis
+ this.transform.Rotate(this.transform.forward, 45.0f * Time.deltaTime);
+ }
+ }
+ else
+ {
+ ObjectDestroy();
+ }
+ }
+ }
+
+ ///
+ public override void ObjectDestroy()
+ {
+ base.ObjectDestroy();
+ }
+
+ ///
+ public override bool Activate()
+ {
+ if (base.Activate() == false)
+ return false;
+
+ // Search for the nearest spaceship
+ GameObject nearestSpaceship = null;
+ float nearestSpaceshipDistance = float.MaxValue;
+
+ foreach(GameObject spaceship in GameObject.FindGameObjectsWithTag(LayerManager.GetTagName(Tag.Spaceship)))
+ {
+ float distance = Vector3.Distance(spaceship.transform.position, this.transform.position);
+
+ if(distance < nearestSpaceshipDistance && this.Spaceship.gameObject != spaceship)
+ {
+ nearestSpaceship = spaceship;
+ nearestSpaceshipDistance = distance;
+ }
+ }
+
+ if (nearestSpaceship != null)
+ {
+ // Store the spaceship target
+ this.SpaceshipTarget = nearestSpaceship.GetComponent();
+ // Update the position
+ this.transform.position = this.Spaceship.transform.position;
+
+ // Start the setup
+ this.SetupDurationTimer.Start();
+ }
+
+ return nearestSpaceship != null;
+ }
+
+ ///
+ /// Called when [trigger enter].
+ ///
+ ///
+ /// The collider.
+ public void OnTriggerEnter(Collider collider)
+ {
+ // Collision with spaceships
+ if(collider.gameObject.layer == LayerManager.GetLayer(Layer.Spaceships))
+ {
+ // Collision with hostile spaceships
+ if(collider.gameObject == this.SpaceshipTarget.gameObject)
+ {
+ // Inflict more damage to spaceships ahead in the standings
+ if(this.Spaceship.Record.CurrentStanding > this.SpaceshipTarget.Record.CurrentStanding)
+ this.SpaceshipTarget.InflictDamage(this.Damage * 10);
+ else
+ this.SpaceshipTarget.InflictDamage(this.Damage);
+
+ // Instantiate the explosion and make it follow the target
+ GameObject explosion = ResourceManager.LoadGameObject("Objects/Explosions/Red Explosion");
+ explosion.transform.parent = this.SpaceshipTarget.transform;
+ explosion.transform.position = this.SpaceshipTarget.transform.position;
+
+ // Destroy the missile
+ ObjectDestroy();
+ }
+ }
+
+ // Collision with other power-ups
+ if(collider.gameObject.layer == LayerManager.GetLayer(Layer.PowerUps))
+ {
+ // Collision with the shield power-up
+ if(collider.gameObject.tag == LayerManager.GetTagName(Tag.Shield))
+ {
+ ShieldController shield = collider.transform.GetComponent();
+
+ if (shield.Spaceship == this.SpaceshipTarget)
+ {
+ // Instantiate the explosion and make it follow the target
+ GameObject explosion = ResourceManager.LoadGameObject("Objects/Explosions/Green Explosion");
+ explosion.transform.parent = this.SpaceshipTarget.transform;
+ explosion.transform.position = this.SpaceshipTarget.transform.position;
+
+ // Destroy the missile
+ ObjectDestroy();
+ }
+ }
+ }
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/HomingRocketController.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/HomingRocketController.cs.meta
new file mode 100644
index 0000000..75d4e22
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/HomingRocketController.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 52fbbbcc5bc7ce1409e064652e7f03a9
+timeCreated: 1518566884
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/IPowerUp.cs b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/IPowerUp.cs
new file mode 100644
index 0000000..acb2781
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/IPowerUp.cs
@@ -0,0 +1,52 @@
+// MilkyWay
+using MilkyWay.Objects.PowerUps;
+using MilkyWay.Objects.Spaceships;
+
+namespace MilkyWay
+{
+ ///
+ /// Defines the necessary methods to implement a PowerUp.
+ ///
+ /// These methods are necessary to control the PowerUps Lifecycle.
+ /// These events are used to initialized, update and destroy the PowerUp.
+ ///
+ public interface IPowerUp
+ {
+ #region [Attributes]
+ ///
+ /// The power-ups name.
+ ///
+ string Name { get; }
+ ///
+ /// Whether the power-up is active.
+ ///
+ bool Active { get; }
+ ///
+ /// The power-ups controller.
+ ///
+ PowerUpController PowerUpController { get; }
+ #endregion
+
+ #region [Method]
+ ///
+ /// Creates the PowerUp.
+ ///
+ void PowerUpCreate();
+ ///
+ /// Updates the PowerUp.
+ ///
+ void PowerUpUpdate();
+ ///
+ /// Destroys the PowerUp.
+ ///
+ void PowerUpDestroy();
+
+ ///
+ /// Activates the PowerUp.
+ ///
+ ///
+ /// The spaceship activating the PowerUp.
+ bool Activate(SpaceshipController spaceship);
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/IPowerUp.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/IPowerUp.cs.meta
new file mode 100644
index 0000000..60d6648
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/IPowerUp.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: fe00c48f57e16bb47a39787b88781d2c
+timeCreated: 1518566885
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/IPowerUpController.cs b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/IPowerUpController.cs
new file mode 100644
index 0000000..03865f0
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/IPowerUpController.cs
@@ -0,0 +1,43 @@
+// Unity
+using UnityEngine;
+
+// System
+using System.Diagnostics.CodeAnalysis;
+
+// MilkyWay
+using MilkyWay.Utility;
+
+namespace MilkyWay
+{
+ ///
+ /// Defines the necessary methods to implement a Runnable Object.
+ ///
+ /// These methods are necessary to control the Objects Lifecycle.
+ /// These events are used to initialized, update and destroy the Object.
+ ///
+ public interface IPowerUpController : IObjectController
+ {
+ #region [Attributes]
+ ///
+ /// Gets the transform.
+ ///
+ [SuppressMessage("ReSharper", "InconsistentNaming")]
+ Transform transform { get; }
+ ///
+ /// The power-ups duration.
+ ///
+ float Duration { get; }
+ ///
+ /// The power-ups duration timer.
+ ///
+ Timer DurationTimer { get; }
+ #endregion
+
+ #region [Method]
+ ///
+ /// Activates the PowerUp.
+ ///
+ bool Activate();
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/IPowerUpController.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/IPowerUpController.cs.meta
new file mode 100644
index 0000000..31669ec
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/IPowerUpController.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: fdb349a317c7c7446a5af67f3defe193
+timeCreated: 1518566885
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/PowerUp.cs b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/PowerUp.cs
new file mode 100644
index 0000000..c39b07f
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/PowerUp.cs
@@ -0,0 +1,64 @@
+// Unity
+using UnityEngine;
+
+// MilkyWay
+using MilkyWay.Managers;
+using MilkyWay.Objects.Spaceships;
+
+namespace MilkyWay.Objects.PowerUps
+{
+ ///
+ /// Abstract class representing a power-up that can be picked up by a SpaceshipController.
+ ///
+ public abstract class PowerUp : IPowerUp
+ {
+ #region [Attributes]
+ ///
+ public string Name { get; protected set; }
+ ///
+ public bool Active { get; protected set; }
+ ///
+ public abstract PowerUpController PowerUpController { get; }
+
+ ///
+ /// The power-ups source spaceship.
+ ///
+ public SpaceshipController Spaceship;
+ #endregion
+
+ #region [Methods]
+ ///
+ public virtual void PowerUpCreate()
+ {
+ this.Name = this.GetType().Name;
+ }
+
+ ///
+ public virtual void PowerUpUpdate()
+ {
+ if (this.Active)
+ {
+ // Update the power-up
+ if(this.PowerUpController != null)
+ this.PowerUpController.ObjectUpdate();
+ // Destroy the power-up
+ if(this.PowerUpController == null || this.PowerUpController.DurationTimer.Finished)
+ PowerUpDestroy();
+ }
+ }
+
+ ///
+ public virtual void PowerUpDestroy()
+ {
+ // Destroy the power-up
+ if(this.PowerUpController != null)
+ this.PowerUpController.ObjectDestroy();
+ // Remove the power-up
+ this.Spaceship.RemovePowerUp(this);
+ }
+
+ ///
+ public abstract bool Activate(SpaceshipController spaceship);
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/PowerUp/PowerUp.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/PowerUp.cs.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/PowerUp/PowerUp.cs.meta
rename to Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/PowerUp.cs.meta
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/PowerUpController.cs b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/PowerUpController.cs
new file mode 100644
index 0000000..543d8cc
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/PowerUpController.cs
@@ -0,0 +1,72 @@
+// Unity
+using UnityEngine;
+
+// MilkyWay
+using MilkyWay.Utility;
+using MilkyWay.Managers;
+using MilkyWay.Objects.Spaceships;
+
+namespace MilkyWay.Objects.PowerUps
+{
+ ///
+ /// Abstract class representing a power-up controller.
+ ///
+ public abstract class PowerUpController : MonoBehaviour, IPowerUpController
+ {
+ #region [Attributes]
+ ///
+ public float Duration { get; set; }
+ ///
+ public Timer DurationTimer { get; set; }
+
+ ///
+ /// The power-ups source spaceship.
+ ///
+ public SpaceshipController Spaceship { get; set; }
+ #endregion
+
+ #region [Methods]
+ ///
+ public virtual void ObjectCreate()
+ {
+ // Initialize the timer
+ this.DurationTimer = new Timer(TimerMode.Countdown, this.Duration);
+
+ // Update the parent
+ PowerUpManager.Instance.AddPowerUp(this);
+ }
+
+ ///
+ public virtual void ObjectUpdate()
+ {
+ // Update the timer
+ this.DurationTimer.Update();
+ // The timer ran out
+ if(this.DurationTimer.Finished)
+ ObjectDestroy();
+ }
+
+ ///
+ public virtual void ObjectDestroy()
+ {
+ Destroy(this.gameObject);
+
+ // Update the parent
+ PowerUpManager.Instance.RemovePowerUp(this);
+ }
+
+ ///
+ public virtual bool Activate()
+ {
+ if (this.DurationTimer.Running == false)
+ {
+ this.DurationTimer.Start();
+
+ return true;
+ }
+
+ return false;
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/PowerUp/PowerUpController.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/PowerUpController.cs.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/PowerUp/PowerUpController.cs.meta
rename to Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/PowerUpController.cs.meta
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/Shield.cs b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/Shield.cs
new file mode 100644
index 0000000..9cf697a
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/Shield.cs
@@ -0,0 +1,103 @@
+// Unity
+using UnityEngine;
+
+// MilkyWay
+using MilkyWay.Managers;
+using MilkyWay.Objects.Spaceships;
+
+namespace MilkyWay.Objects.PowerUps
+{
+ ///
+ /// Implements the shield power-up.
+ ///
+ ///
+ ///
+ public sealed class Shield : PowerUp
+ {
+ #region [Constants and Statics]
+ ///
+ /// The default Health.
+ ///
+ public const float DefaultHealth = 500.0f;
+ ///
+ /// The default duration.
+ ///
+ public const float DefaultDuration = 15.0f;
+ #endregion
+
+ #region [Attributes]
+ ///
+ /// The shields Health.
+ ///
+ public float Health { get; private set; }
+ ///
+ /// The shields duration.
+ ///
+ public float Duration { get; private set; }
+
+ ///
+ /// The shields power-up controller.
+ ///
+ public ShieldController ShieldController
+ {
+ get; private set;
+ }
+ ///
+ public override PowerUpController PowerUpController
+ {
+ get { return this.ShieldController; }
+ }
+ #endregion
+
+ #region [Methods]
+ ///
+ public override void PowerUpCreate()
+ {
+ base.PowerUpCreate();
+
+ // Initialize the shields properties
+ this.Health = DefaultHealth;
+ this.Duration = DefaultDuration;
+ }
+
+ ///
+ public override void PowerUpUpdate()
+ {
+ base.PowerUpUpdate();
+ }
+
+ ///
+ public override void PowerUpDestroy()
+ {
+ base.PowerUpDestroy();
+ }
+
+ ///
+ public override bool Activate(SpaceshipController spaceship)
+ {
+ if (this.Active == false)
+ {
+ // Update the flag
+ this.Active = true;
+ // Update the spaceship
+ this.Spaceship = spaceship;
+
+ // Create the power-up
+ this.ShieldController = ResourceManager.LoadGameObject(string.Format("Objects/PowerUps/{0}", this.Name));
+ this.ShieldController.transform.localRotation = Quaternion.identity;
+ this.ShieldController.transform.position = Vector3.zero;
+ this.ShieldController.Spaceship = this.Spaceship;
+ this.ShieldController.Duration = this.Duration;
+ this.ShieldController.Health = this.Health;
+
+ // Initialize the shields controller
+ this.ShieldController.ObjectCreate();
+
+ return this.ShieldController.Activate();
+ }
+
+ return false;
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/Shield.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/Shield.cs.meta
new file mode 100644
index 0000000..8e2d294
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/Shield.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 07f5e1e7e3258fa438ce0188f4bc7f1b
+timeCreated: 1518566883
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/ShieldController.cs b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/ShieldController.cs
new file mode 100644
index 0000000..3cea072
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/ShieldController.cs
@@ -0,0 +1,63 @@
+// Unity
+using UnityEngine;
+
+namespace MilkyWay.Objects.PowerUps
+{
+ ///
+ /// Implements the Shield Controller.
+ ///
+ ///
+ ///
+ public sealed class ShieldController : PowerUpController
+ {
+ #region [Constants and Statics]
+ ///
+ /// The shields rotation speed.
+ ///
+ public const float RotationSpeed = 2.5f;
+ #endregion
+
+ #region [Attributes]
+ ///
+ /// The shields HealthPoints.
+ ///
+ public float Health { get; set; }
+ #endregion
+
+ #region [Methods]
+ ///
+ public override void ObjectCreate()
+ {
+ base.ObjectCreate();
+
+ this.transform.position = this.Spaceship.transform.position;
+ }
+
+ ///
+ public override void ObjectUpdate()
+ {
+ base.ObjectUpdate();
+
+ // Update the shields position
+ this.transform.position = this.Spaceship.transform.position;
+ // Update the shields rotation
+ this.transform.localRotation = Quaternion.Euler(this.transform.localRotation.eulerAngles + Vector3.up * RotationSpeed);
+ }
+
+ ///
+ public override void ObjectDestroy()
+ {
+ base.ObjectDestroy();
+ }
+
+ ///
+ public override bool Activate()
+ {
+ // Update the shields position
+ this.transform.position = this.Spaceship.transform.position;
+
+ return base.Activate();
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/ShieldController.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/ShieldController.cs.meta
new file mode 100644
index 0000000..5f5d556
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/ShieldController.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 4f431f16bc004a0419ee96699d2a8dc6
+timeCreated: 1518566884
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/Smokescreen.cs b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/Smokescreen.cs
new file mode 100644
index 0000000..6789ba6
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/Smokescreen.cs
@@ -0,0 +1,103 @@
+// Unity
+using UnityEngine;
+
+// MilkyWay
+using MilkyWay.Managers;
+using MilkyWay.Objects.Spaceships;
+
+namespace MilkyWay.Objects.PowerUps
+{
+ ///
+ /// Implements the Smokescreen power-up.
+ ///
+ ///
+ ///
+ public sealed class Smokescreen : PowerUp
+ {
+ #region [Constants and Statics]
+ ///
+ /// The default radius.
+ ///
+ public const float DefaultRadius = 50.0f;
+ ///
+ /// The default duration.
+ ///
+ public const float DefaultDuration = 25.0f;
+ #endregion
+
+ #region [Attributes]
+ ///
+ /// The smokescreens radius.
+ ///
+ public float Radius { get; private set; }
+ ///
+ /// The smokescreens duration.
+ ///
+ public float Duration { get; private set; }
+
+ ///
+ /// The smokescreens power-up controller.
+ ///
+ public SmokescreenController SmokescreenController
+ {
+ get; private set;
+ }
+ ///
+ public override PowerUpController PowerUpController
+ {
+ get { return this.SmokescreenController; }
+ }
+ #endregion
+
+ #region [Methods]
+ ///
+ public override void PowerUpCreate()
+ {
+ base.PowerUpCreate();
+
+ // Initialize the smokescreens properties
+ this.Radius = DefaultRadius;
+ this.Duration = DefaultDuration;
+ }
+
+ ///
+ public override void PowerUpUpdate()
+ {
+ base.PowerUpUpdate();
+ }
+
+ ///
+ public override void PowerUpDestroy()
+ {
+ base.PowerUpDestroy();
+ }
+
+ ///
+ public override bool Activate(SpaceshipController spaceship)
+ {
+ if (this.Active == false)
+ {
+ // Update the flag
+ this.Active = true;
+ // Update the spaceship
+ this.Spaceship = spaceship;
+
+ // Create the power-up
+ this.SmokescreenController = ResourceManager.LoadGameObject(string.Format("Objects/PowerUps/{0}", this.Name));
+ this.SmokescreenController.transform.localRotation = Quaternion.identity;
+ this.SmokescreenController.transform.position = Vector3.zero;
+ this.SmokescreenController.Spaceship = this.Spaceship;
+ this.SmokescreenController.Duration = this.Duration;
+ this.SmokescreenController.Radius = this.Radius;
+
+ // Initialize the smokescreens controller
+ this.SmokescreenController.ObjectCreate();
+
+ return this.SmokescreenController.Activate();
+ }
+
+ return false;
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/Smokescreen.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/Smokescreen.cs.meta
new file mode 100644
index 0000000..5ebbcc7
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/Smokescreen.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 596b3077ac3ae1a4e99148af342fa53f
+timeCreated: 1518566884
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/SmokescreenController.cs b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/SmokescreenController.cs
new file mode 100644
index 0000000..3da039c
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/SmokescreenController.cs
@@ -0,0 +1,46 @@
+namespace MilkyWay.Objects.PowerUps
+{
+ ///
+ /// Implements the Smokescreen Controller.
+ ///
+ ///
+ ///
+ public sealed class SmokescreenController : PowerUpController
+ {
+ #region [Attributes]
+ ///
+ /// The smokescreens radius.
+ ///
+ public float Radius { get; set; }
+ #endregion
+
+ #region [Methods]
+ ///
+ public override void ObjectCreate()
+ {
+ base.ObjectCreate();
+ }
+
+ ///
+ public override void ObjectUpdate()
+ {
+ base.ObjectUpdate();
+ }
+
+ ///
+ public override void ObjectDestroy()
+ {
+ base.ObjectDestroy();
+ }
+
+ ///
+ public override bool Activate()
+ {
+ // Update the smokescreens position
+ this.transform.position = this.Spaceship.transform.position;
+
+ return base.Activate();
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/SmokescreenController.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/SmokescreenController.cs.meta
new file mode 100644
index 0000000..4d7226f
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/PowerUps/SmokescreenController.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: a002a73667544a8469644e51595ae9d9
+timeCreated: 1518566885
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Scripts/Projectile.meta b/Milky Way/Assets/Scripts/Controllers/Objects/Projectiles.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/Projectile.meta
rename to Milky Way/Assets/Scripts/Controllers/Objects/Projectiles.meta
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/Projectiles/LaserController.cs b/Milky Way/Assets/Scripts/Controllers/Objects/Projectiles/LaserController.cs
new file mode 100644
index 0000000..2ca3599
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/Projectiles/LaserController.cs
@@ -0,0 +1,64 @@
+using MilkyWay.Managers;
+using UnityEngine;
+
+namespace MilkyWay.Objects.Projectiles
+{
+ ///
+ /// Implements a laser controller.
+ ///
+ ///
+ ///
+ public sealed class LaserController : ProjectileController
+ {
+ #region [Constants and Statics]
+ ///
+ /// The lasers force.
+ ///
+ public const float Force = 10000.0f;
+ #endregion
+
+ #region [Attributes]
+ ///
+ /// The lasers rigidbody.
+ ///
+ private Rigidbody Rigidbody;
+ #endregion
+
+ #region [Methods]
+ ///
+ public override void ObjectCreate()
+ {
+ base.ObjectCreate();
+
+ // Initialize the speed
+ this.Rigidbody = GetComponent();
+ this.Rigidbody.useGravity = false;
+ this.Rigidbody.AddForce(this.transform.forward * Force);
+ }
+
+ ///
+ public override void ObjectUpdate()
+ {
+ base.ObjectUpdate();
+
+ RaycastHit raycastHit;
+
+ // Cast a ray downward towards the tracks
+ if(Physics.Raycast(this.transform.position + this.transform.up * 5.0f, -this.transform.up, out raycastHit, 25.0f, LayerManager.GetLayerMask(Layer.Tracks)))
+ {
+ if(raycastHit.collider.tag == LayerManager.GetTagName(Tag.Road))
+ {
+ // Adjust the lasers position to hover over the track
+ this.transform.position = raycastHit.point + this.transform.up * 4.25f;
+ }
+ }
+ }
+
+ ///
+ public override void ObjectDestroy()
+ {
+ base.ObjectDestroy();
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/Projectile/LaserController.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/Projectiles/LaserController.cs.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/Projectile/LaserController.cs.meta
rename to Milky Way/Assets/Scripts/Controllers/Objects/Projectiles/LaserController.cs.meta
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/Projectiles/ProjectileController.cs b/Milky Way/Assets/Scripts/Controllers/Objects/Projectiles/ProjectileController.cs
new file mode 100644
index 0000000..7ea757e
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/Projectiles/ProjectileController.cs
@@ -0,0 +1,124 @@
+// Unity
+using UnityEngine;
+
+// MilkyWay
+using MilkyWay.Utility;
+using MilkyWay.Managers;
+using MilkyWay.Objects.Spaceships;
+
+namespace MilkyWay.Objects.Projectiles
+{
+ ///
+ /// Abstract class representing a projectile.
+ ///
+ ///
+ ///
+ ///
+ public abstract class ProjectileController : MonoBehaviour, IObjectController
+ {
+ #region [Constants and Statics]
+ ///
+ /// The projectiles default damage.
+ ///
+ public const float DefaultDamage = 5.0f;
+ ///
+ /// The projectiles default duration.
+ ///
+ public const float DefaultDuration = 10.0f;
+ #endregion
+
+ #region [Attributes]
+ ///
+ /// The projectiles damage.
+ ///
+ public float Damage { get; set; }
+ ///
+ /// The projectiles duration.
+ ///
+ public Timer DurationTimer { get; set; }
+
+ ///
+ /// The projectiles spaceship.
+ ///
+ public SpaceshipController Spaceship;
+ #endregion
+
+ #region [Methods]
+ ///
+ public virtual void ObjectCreate()
+ {
+ // Initialize the damage
+ this.Damage = DefaultDamage;
+ // Initialize the timer
+ this.DurationTimer = new Timer(TimerMode.Countdown, DefaultDuration);
+ this.DurationTimer.Start();
+
+ // Update the parent
+ ProjectileManager.Instance.AddProjectile(this);
+ }
+
+ ///
+ public virtual void ObjectUpdate()
+ {
+ // Update the timer
+ this.DurationTimer.Update();
+
+ // The timer ran out
+ if (this.DurationTimer.Current == 0.0f && this.DurationTimer.Finished)
+ ObjectDestroy();
+ }
+
+ ///
+ public virtual void ObjectDestroy()
+ {
+ Destroy(this.gameObject);
+ }
+
+ ///
+ /// Called when [trigger enter].
+ ///
+ ///
+ /// The collider.
+ public virtual void OnTriggerEnter(Collider collider)
+ {
+ // Collision with spaceships
+ if(collider.gameObject.layer == LayerManager.GetLayer(Layer.Spaceships))
+ {
+ // Collision with hostile spaceships
+ if(collider.gameObject != this.Spaceship.gameObject)
+ {
+ // Inflict damage
+ SpaceshipController spaceship = collider.GetComponent();
+ spaceship.InflictDamage(this.Damage);
+
+ // Instantiate the explosion and make it follow the target
+ GameObject explosion = ResourceManager.LoadGameObject("Objects/Explosions/Small Red Explosion");
+ explosion.transform.parent = collider.transform;
+ explosion.transform.position =
+ this.transform.position - (this.transform.position - collider.transform.position).magnitude * this.transform.forward;
+
+ // Destroy the projectile
+ ObjectDestroy();
+ }
+ }
+
+ // Collision with other power-ups
+ if(collider.gameObject.layer == LayerManager.GetLayer(Layer.PowerUps))
+ {
+ // Collision with the shield power-up
+ if(collider.gameObject.tag == LayerManager.GetTagName(Tag.Shield))
+ {
+ // Instantiate the explosion and make it follow the target
+ GameObject explosion = ResourceManager.LoadGameObject("Objects/Explosions/Small Green Explosion");
+ explosion.transform.parent = collider.transform;
+ explosion.transform.position =
+ this.transform.position - (this.transform.position - collider.transform.position).magnitude * this.transform.forward;
+
+ // Destroy the projectile
+ ObjectDestroy();
+ }
+ }
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/Projectile/ProjectileController.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/Projectiles/ProjectileController.cs.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/Projectile/ProjectileController.cs.meta
rename to Milky Way/Assets/Scripts/Controllers/Objects/Projectiles/ProjectileController.cs.meta
diff --git a/Milky Way/Assets/Scripts/SpaceShip.meta b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/SpaceShip.meta
rename to Milky Way/Assets/Scripts/Controllers/Objects/Spaceships.meta
diff --git a/Milky Way/Assets/Scripts/SpaceShip/Joystick.meta b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/SpaceShip/Joystick.meta
rename to Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components.meta
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/CameraController.cs b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/CameraController.cs
new file mode 100644
index 0000000..9058a79
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/CameraController.cs
@@ -0,0 +1,82 @@
+// Unity
+using UnityEngine;
+
+// System
+using System;
+
+// MilkyWay
+using MilkyWay.Managers;
+
+namespace MilkyWay.Objects.Spaceships
+{
+ ///
+ /// Implements the spaceships camera controller.
+ ///
+ ///
+ ///
+ public sealed class CameraController : MonoBehaviour
+ {
+ #region [Constants and Statics]
+ ///
+ /// The dampen time.
+ /// Higher values means the camera takes more time to adjust.
+ ///
+ private const float DampenTime = 0.05f;
+ #endregion
+
+ #region [Attributes]
+ ///
+ /// The camera component.
+ ///
+ private Camera Camera;
+ ///
+ /// The cameras spaceship.
+ ///
+ public SpaceshipController Spaceship;
+ #endregion
+
+ #region [Methods]
+ ///
+ /// Initializes this instance.
+ ///
+ public void Initialize()
+ {
+ this.Camera = GetComponent();
+
+ switch (GameManager.Instance.RaceMode)
+ {
+ // Adjust the cameras viewport for multiplayer modes
+ case RaceMode.Arena:
+ case RaceMode.Track:
+
+ this.Camera.rect = new Rect(0.5f * (Spaceship.ID - 1), 0.0f, 0.5f, 1.0f);
+ break;
+
+ // Adjust the cameras viewport for singleplayer modes
+ case RaceMode.TimeAttack:
+
+ this.Camera.rect = new Rect(0.0f, 0.0f, 1.0f, 1.0f);
+ break;
+
+ default:
+ throw new ArgumentOutOfRangeException();
+ }
+ }
+
+ ///
+ /// Updates this instance.
+ ///
+ public void FixedUpdate()
+ {
+ // Calculate the destination from the spaceships position and place the camera behind it
+ Vector3 destination = this.Spaceship.transform.position - this.Spaceship.transform.forward * 15.0f + this.Spaceship.transform.up * 12.5f;
+ Vector3 velocity = Vector3.zero;
+
+ // Adjust the position taking into account the dampen time required to catch up
+ this.transform.position = Vector3.SmoothDamp(this.transform.position, destination, ref velocity, DampenTime);
+ // Adjust the rotation taking into account the spaceships position
+ this.transform.LookAt(this.Spaceship.transform.position + this.Spaceship.transform.forward * 15.0f, this.Spaceship.transform.up);
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/SpaceShip/Camera/CameraController.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/CameraController.cs.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/SpaceShip/Camera/CameraController.cs.meta
rename to Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/CameraController.cs.meta
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/JoystickController.cs b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/JoystickController.cs
new file mode 100644
index 0000000..78b9c3b
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/JoystickController.cs
@@ -0,0 +1,164 @@
+// Unity
+using UnityEngine;
+
+namespace MilkyWay.Objects.Spaceships
+{
+ ///
+ /// The available joystick modes.
+ ///
+ public enum JoystickMode
+ {
+ Playstation4
+ };
+
+ ///
+ /// Implements a spaceships joystick controller.
+ ///
+ ///
+ ///
+ public sealed class JoystickController : IObjectController
+ {
+ #region [Attributes]
+ ///
+ /// The joystick mode.
+ ///
+ public JoystickMode JoystickMode;
+
+ ///
+ /// The triangle keys corresponding key-code.
+ ///
+ public KeyCode Triangle;
+ ///
+ /// The circle keys corresponding key-code.
+ ///
+ public KeyCode Circle;
+ ///
+ /// The cross keys corresponding key-code.
+ ///
+ public KeyCode Cross;
+ ///
+ /// The square keys corresponding key-code.
+ ///
+ public KeyCode Square;
+
+ ///
+ /// The L1 keys corresponding key-code.
+ ///
+ public KeyCode L1;
+ ///
+ /// The L2 keys corresponding key-code.
+ ///
+ public KeyCode L2;
+ ///
+ /// The L3 keys corresponding key-code.
+ ///
+ public KeyCode L3;
+ ///
+ /// The R1 keys corresponding key-code.
+ ///
+ public KeyCode R1;
+ ///
+ /// The R2 keys corresponding key-code.
+ ///
+ public KeyCode R2;
+ ///
+ /// The R3 keys corresponding key-code.
+ ///
+ public KeyCode R3;
+
+ ///
+ /// The start keys corresponding key-code.
+ ///
+ public KeyCode Start;
+ ///
+ /// The select keys corresponding key-code.
+ ///
+ public KeyCode Select;
+ ///
+ /// The playstation keys corresponding key-code.
+ ///
+ public KeyCode Playstation;
+
+ ///
+ /// The name of the vertical axis.
+ ///
+ public string VerticalAxis;
+ ///
+ /// The name of the horizontal axis.
+ ///
+ public string HorizontalAxis;
+
+ ///
+ /// The joysticks spaceship.
+ ///
+ public SpaceshipController Spaceship;
+ #endregion
+
+ #region [Methods]
+ ///
+ public void ObjectCreate()
+ {
+ // Map the keys according to the spaceships ID
+ switch(this.Spaceship.ID)
+ {
+ case 1:
+ if(this.JoystickMode == JoystickMode.Playstation4)
+ {
+ this.Triangle = KeyCode.Joystick1Button0;
+ this.Circle = KeyCode.Joystick1Button1;
+ this.Cross = KeyCode.Joystick1Button2;
+ this.Square = KeyCode.Joystick1Button3;
+
+ this.L1 = KeyCode.Joystick1Button4;
+ this.L2 = KeyCode.Joystick1Button6;
+ this.L3 = KeyCode.Joystick1Button9;
+ this.R1 = KeyCode.Joystick1Button5;
+ this.R2 = KeyCode.Joystick1Button7;
+ this.R3 = KeyCode.Joystick1Button10;
+
+ this.Start = KeyCode.Joystick1Button11;
+ this.Select = KeyCode.Joystick1Button9;
+ this.Playstation = KeyCode.Joystick1Button12;
+ }
+ break;
+
+ case 2:
+ if(this.JoystickMode == JoystickMode.Playstation4)
+ {
+ this.Triangle = KeyCode.Joystick2Button0;
+ this.Circle = KeyCode.Joystick2Button1;
+ this.Cross = KeyCode.Joystick2Button2;
+ this.Square = KeyCode.Joystick2Button3;
+
+ this.L1 = KeyCode.Joystick2Button4;
+ this.L2 = KeyCode.Joystick2Button6;
+ this.L3 = KeyCode.Joystick2Button9;
+ this.R1 = KeyCode.Joystick2Button5;
+ this.R2 = KeyCode.Joystick2Button7;
+ this.R3 = KeyCode.Joystick2Button10;
+
+ this.Start = KeyCode.Joystick2Button11;
+ this.Select = KeyCode.Joystick2Button9;
+ this.Playstation = KeyCode.Joystick2Button12;
+ }
+ break;
+ }
+
+ this.VerticalAxis = "Vertical Axis Joystick " + this.Spaceship.ID;
+ this.HorizontalAxis = "Horizontal Axis Joystick " + this.Spaceship.ID;
+ }
+
+ ///
+ public void ObjectUpdate()
+ {
+ // Nothing to do here.
+ }
+
+ ///
+ public void ObjectDestroy()
+ {
+ // Nothing to do here.
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/SpaceShip/Joystick/JoystickController.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/JoystickController.cs.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/SpaceShip/Joystick/JoystickController.cs.meta
rename to Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/JoystickController.cs.meta
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/MarkerController.cs b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/MarkerController.cs
new file mode 100644
index 0000000..67d8043
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/MarkerController.cs
@@ -0,0 +1,42 @@
+// Unity
+using UnityEngine;
+
+namespace MilkyWay.Objects.Spaceships
+{
+ ///
+ /// Implements the spaceships tracker controller.
+ ///
+ ///
+ ///
+ ///
+ public sealed class MarkerController : MonoBehaviour, IObjectController
+ {
+ #region [Constants and Statics]
+ ///
+ /// The trackers rotation speed.
+ ///
+ public const float RotationSpeed = 2.5f;
+ #endregion
+
+ #region [Methods]
+ ///
+ public void ObjectCreate()
+ {
+ // Nothing to do here.
+ }
+
+ ///
+ public void ObjectUpdate()
+ {
+ // Update the markers rotation
+ this.transform.localRotation = Quaternion.Euler(this.transform.localRotation.eulerAngles + Vector3.up * RotationSpeed);
+ }
+
+ ///
+ public void ObjectDestroy()
+ {
+ Destroy(this.gameObject);
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/SpaceShip/Tracker/TrackerController.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/MarkerController.cs.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/SpaceShip/Tracker/TrackerController.cs.meta
rename to Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/MarkerController.cs.meta
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/ModelController.cs b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/ModelController.cs
new file mode 100644
index 0000000..9005c3a
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/ModelController.cs
@@ -0,0 +1,46 @@
+// Unity
+using System;
+using UnityEngine;
+
+namespace MilkyWay.Objects.Spaceships
+{
+ ///
+ /// Implements the spaceships model controller.
+ ///
+ ///
+ ///
+ ///
+ public sealed class ModelController : MonoBehaviour, IObjectController
+ {
+ #region [Constants and Statics]
+ ///
+ /// The models turn angle variation.
+ ///
+ public const float TurnAngleVariation = 0.97f;
+ #endregion
+
+ #region [Methods]
+ ///
+ public void ObjectCreate()
+ {
+ // Nothing to do here.
+ }
+
+ ///
+ public void ObjectUpdate()
+ {
+ float angle = this.transform.localRotation.eulerAngles.z;
+ angle = (angle > 180.0f ? (angle - 360.0f) : angle) * TurnAngleVariation;
+
+ // Update the models rotation
+ this.transform.localRotation = Quaternion.Euler(0.0f, 0.0f, angle);
+ }
+
+ ///
+ public void ObjectDestroy()
+ {
+ Destroy(this.gameObject);
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/SpaceShip/Model/ModelController.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/ModelController.cs.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/SpaceShip/Model/ModelController.cs.meta
rename to Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/ModelController.cs.meta
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/ShooterController.cs b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/ShooterController.cs
new file mode 100644
index 0000000..976498e
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/ShooterController.cs
@@ -0,0 +1,120 @@
+// Unity
+using UnityEngine;
+
+// System
+using System.Collections.Generic;
+
+// MilkyWay
+using MilkyWay.Utility;
+using MilkyWay.Managers;
+using MilkyWay.Objects.Projectiles;
+
+namespace MilkyWay.Objects.Spaceships
+{
+ ///
+ /// Implements a spaceships shooter.
+ ///
+ ///
+ ///
+ ///
+ public sealed class ShooterController : MonoBehaviour, IObjectController
+ {
+ #region [Constants and Static]
+ ///
+ /// The shooter delay.
+ ///
+ private const float ShooterDelay = 0.025f;
+ #endregion
+
+ #region [Attributes]
+ ///
+ /// The shooter timer
+ ///
+ private Timer ShooterTimer;
+ ///
+ /// The list of shooters.
+ ///
+ private List ShooterList;
+ ///
+ /// The list of lasers shot.
+ ///
+ private List LaserList;
+
+ ///
+ /// The shooters spaceship.
+ ///
+ public SpaceshipController Spaceship;
+ #endregion
+
+ #region [Methods]
+ ///
+ public void ObjectCreate()
+ {
+ // Initialize the timer
+ this.ShooterTimer = new Timer(TimerMode.Countdown, ShooterDelay);
+ this.ShooterTimer.Start();
+
+ // Initialize the shooter list
+ this.ShooterList = new List
+ {
+ this.transform.Find("Shooter 1"),
+ this.transform.Find("Shooter 2")
+ };
+
+ // Initialize the laser list
+ this.LaserList = new List();
+ }
+
+ ///
+ public void ObjectUpdate()
+ {
+ // Update the timer
+ this.ShooterTimer.Update();
+
+ // Update the lasers
+ this.LaserList.RemoveAll(laser => laser == null);
+ foreach(LaserController laser in this.LaserList)
+ laser.ObjectUpdate();
+ }
+
+ ///
+ public void ObjectDestroy()
+ {
+ // Destroy the lasers
+ this.LaserList.RemoveAll(laser => laser == null);
+ foreach(LaserController laser in this.LaserList)
+ laser.ObjectDestroy();
+
+ Destroy(this.gameObject);
+ }
+
+ ///
+ /// Shoots projectiles from each shooter.
+ ///
+ public void Shoot()
+ {
+ // If the delay hasn't ended yet
+ if(this.ShooterTimer.Finished == false)
+ return;
+
+ float randomDistance = Random.Range(0.0f, 2.0f);
+
+ foreach(Transform shooter in ShooterList)
+ {
+ // Instantiate the laser
+ LaserController laser = ResourceManager.LoadGameObject("Objects/Projectiles/Laser");
+ laser.transform.position = shooter.position - this.transform.forward * randomDistance;
+ laser.transform.rotation = shooter.parent.rotation;
+ laser.Spaceship = this.Spaceship;
+ laser.ObjectCreate();
+
+ // Store the laser
+ this.LaserList.Add(laser);
+ }
+
+ // Start the delay again
+ this.ShooterTimer.Start();
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/SpaceShip/ShooterController.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/ShooterController.cs.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/SpaceShip/ShooterController.cs.meta
rename to Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/ShooterController.cs.meta
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/TrailController.cs b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/TrailController.cs
new file mode 100644
index 0000000..696c865
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/TrailController.cs
@@ -0,0 +1,47 @@
+// Unity
+using UnityEngine;
+
+namespace MilkyWay.Objects.Spaceships
+{
+ ///
+ /// Implements the spaceships trail controller.
+ ///
+ ///
+ ///
+ ///
+ public sealed class TrailController : MonoBehaviour, IObjectController
+ {
+ #region [Attributes]
+ ///
+ /// The trails particle system.
+ ///
+ private Rigidbody RigidBody;
+ ///
+ /// The trails particle system.
+ ///
+ private ParticleSystem Particles;
+ #endregion
+
+ #region [Methods]
+ ///
+ public void ObjectCreate()
+ {
+ this.RigidBody = this.transform.parent.parent.parent.GetComponent();
+ this.Particles = GetComponent();
+ }
+
+ ///
+ public void ObjectUpdate()
+ {
+ ParticleSystem.MainModule module = this.Particles.main;
+ module.startSpeed = (this.RigidBody.velocity.magnitude / 100.0f) * 10.0f;
+ }
+
+ ///
+ public void ObjectDestroy()
+ {
+ Destroy(this.gameObject);
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/SpaceShip/Model/TrailController.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/TrailController.cs.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/SpaceShip/Model/TrailController.cs.meta
rename to Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Components/TrailController.cs.meta
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Interface.meta b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Interface.meta
new file mode 100644
index 0000000..af79765
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/Interface.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 9ae851b7edf9ad949bfb4d42dbb6b742
+folderAsset: yes
+timeCreated: 1518632183
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/SpaceshipConfiguration.cs b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/SpaceshipConfiguration.cs
new file mode 100644
index 0000000..b4da683
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/SpaceshipConfiguration.cs
@@ -0,0 +1,152 @@
+// Unity
+using System;
+using UnityEngine;
+
+// MilkyWay
+using MilkyWay.Managers;
+
+namespace MilkyWay.Objects.Spaceships
+{
+ ///
+ /// Implements a spaceship configuration.
+ ///
+ public sealed class SpaceshipConfiguration
+ {
+ #region [Constants and Statics]
+ ///
+ /// The minimum health points.
+ ///
+ private const int MinimumHealthPoints = 0;
+ ///
+ /// The maximum health points.
+ ///
+ private const int MaximumHealthPoints = 5;
+
+ ///
+ /// The minimum handling points.
+ ///
+ private const int MinimumHandlingPoints = 0;
+ ///
+ /// The maximum handling points.
+ ///
+ private const int MaximumHandlingPoints = 5;
+
+ ///
+ /// The minimum weapon power points.
+ ///
+ private const int MinimumWeaponPowerPoints = 0;
+ ///
+ /// The maximum weapon power points.
+ ///
+ private const int MaximumWeaponPowerPoints = 5;
+
+ ///
+ /// The minimum acceleration points.
+ ///
+ private const int MinimumAccelerationPoints = 0;
+ ///
+ /// The maximum acceleration points.
+ ///
+ private const int MaximumAccelerationPoints = 5;
+ #endregion
+
+ #region [Attributes]
+ ///
+ /// The spaceship identifier.
+ ///
+ public int SpaceshipID { get; private set; }
+
+ ///
+ /// The currently selected health points.
+ ///
+ public int Health { get; set; }
+ ///
+ /// The currently selected handling points.
+ ///
+ public int Handling { get; set; }
+ ///
+ /// The currently selected weapon power points.
+ ///
+ public int WeaponPower { get; set; }
+ ///
+ /// The currently selected acceleration points.
+ ///
+ public int Acceleration { get; set; }
+ #endregion
+
+ #region [Methods]
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ ///
+ /// The spaceships.
+ /// The health.
+ /// The handling.
+ /// The weapon power.
+ /// The acceleration.
+ public SpaceshipConfiguration(SpaceshipController spaceship, int health, int handling, int weaponPower, int acceleration)
+ {
+ this.SpaceshipID = spaceship != null ? spaceship.ID : 0;
+
+ this.Health = Mathf.Clamp(health, MinimumHealthPoints, MaximumHealthPoints);
+ this.Handling = Mathf.Clamp(handling, MinimumHandlingPoints, MaximumHandlingPoints);
+ this.WeaponPower = Mathf.Clamp(weaponPower, MinimumWeaponPowerPoints, MaximumWeaponPowerPoints);
+ this.Acceleration = Mathf.Clamp(acceleration, MinimumAccelerationPoints, MaximumAccelerationPoints);
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public SpaceshipConfiguration(int spaceshipID) : this(null, 0, 0, 0, 0)
+ {
+ this.SpaceshipID = spaceshipID;
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public SpaceshipConfiguration() : this(null, 0,0,0,0)
+ {
+ // Nothing to do here.
+ }
+
+ #region [Methods] Serialization
+ ///
+ /// Loads the configuration from a JSON file.
+ ///
+ ///
+ /// The spaceship ID to load the configuration for.
+ public static SpaceshipConfiguration LoadConfiguration(int spaceshipID)
+ {
+ // Create the file name for this spaceship
+ string fileName = string.Format(@"SpaceshipConfiguration-{0}.json", spaceshipID);
+
+ // Read the configuration
+ try
+ {
+ return SerializationManager.Deserialize(fileName);
+ }
+ catch (Exception)
+ {
+ return new SpaceshipConfiguration(spaceshipID);
+ }
+ }
+
+ ///
+ /// Saves the configuration to a JSON file.
+ ///
+ ///
+ /// The configuration to save.
+ public static void SaveConfiguration(SpaceshipConfiguration configuration)
+ {
+ // Create the file name for this spaceship
+ string fileName = string.Format(@"SpaceshipConfiguration-{0}.json", configuration.SpaceshipID);
+
+ // Read the configuration
+ SerializationManager.Serialize(configuration, fileName);
+ }
+ #endregion
+
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/SpaceShip/SpaceshipConfiguration.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/SpaceshipConfiguration.cs.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/SpaceShip/SpaceshipConfiguration.cs.meta
rename to Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/SpaceshipConfiguration.cs.meta
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/SpaceshipController.cs b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/SpaceshipController.cs
new file mode 100644
index 0000000..db7ab5b
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/SpaceshipController.cs
@@ -0,0 +1,812 @@
+// Unity
+using UnityEngine;
+
+// System
+using System.Linq;
+using System.Collections.Generic;
+
+// JetBrains
+using JetBrains.Annotations;
+
+// MilkyWay
+using MilkyWay.Utility;
+using MilkyWay.Managers;
+using MilkyWay.Objects.PowerUps;
+
+// ReSharper disable RedundantJumpStatement
+namespace MilkyWay.Objects.Spaceships
+{
+ ///
+ /// Implements a generic Spaceship.
+ ///
+ ///
+ ///
+ public sealed class SpaceshipController : MonoBehaviour, IObjectController
+ {
+ #region [Constants and Statics]
+ ///
+ /// The base health value.
+ ///
+ public const float BaseHealth = 100.0f;
+ ///
+ /// The base health increment for each point spent in the configuration.
+ ///
+ public const float BaseHealthIncrement = 50.0f;
+
+ ///
+ /// The base handling value.
+ ///
+ public const float BaseHandling = 10.0f;
+ ///
+ /// The base handling increment for each point spent in the configuration.
+ ///
+ public const float BaseHandlingIncrement = 5.0f;
+
+ ///
+ /// The base weapon power value.
+ ///
+ public const float BaseWeaponPower = 5.0f;
+ ///
+ /// The base weapon power increment for each point spent in the configuration.
+ ///
+ public const float BaseWeaponPowerIncrement = 5.0f;
+
+ ///
+ /// The base acceleration value.
+ ///
+ public const float BaseAcceleration = 2.5f;
+ ///
+ /// The base acceleration increment for each point spent in the configuration.
+ ///
+ public const float BaseAccelerationIncrement = 1.25f;
+
+ ///
+ /// The default repair time.
+ ///
+ public const float DefaultRepairTime = 2.5f;
+
+ ///
+ /// The marker materials.
+ ///
+ private static Material[] MarkerMaterials { get; set; }
+
+ #region [Loading]
+ ///
+ /// Loads the necessary attributes.
+ ///
+ [UsedImplicitly] [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
+ private static void LoadStaticAttributes()
+ {
+ // Load the marker materials
+ MarkerMaterials = new Material[]
+ {
+ ResourceManager.LoadMaterial("Objects/Spaceships/Markers/Marker 1"),
+ ResourceManager.LoadMaterial("Objects/Spaceships/Markers/Marker 2"),
+ ResourceManager.LoadMaterial("Objects/Spaceships/Markers/Marker 3"),
+ ResourceManager.LoadMaterial("Objects/Spaceships/Markers/Marker 4")
+ };
+ }
+ #endregion
+
+ #endregion
+
+ #region [Attributes]
+ ///
+ /// The spaceships identifier.
+ ///
+ public int ID { get; set; }
+ ///
+ /// The spaceships race record.
+ /// Contains the current standings, laps and lap times.
+ ///
+ public SpaceshipRecord Record { get; private set; }
+ ///
+ /// The spaceships race configurations.
+ /// Contains the upgrade points used for this spaceship.
+ ///
+ public SpaceshipConfiguration Configuration { get; private set; }
+
+ ///
+ /// The current health value.
+ /// Determines how much damage the spaceships can take before needing repairs.
+ ///
+ public float Health { get; private set; }
+ ///
+ /// The maximum health value.
+ ///
+ public float MaximumHealth { get; private set; }
+
+ ///
+ /// The current power value.
+ /// Determines how much damage the spaceships basic attacks deal.
+ ///
+ public float WeaponPower { get; private set; }
+ ///
+ /// The maximum power value.
+ ///
+ public float MaximumWeaponPower { get; private set; }
+
+ ///
+ /// The current acceleration value.
+ /// Determines how fast the spaceship can gain speed.
+ ///
+ public float Acceleration { get; private set; }
+ ///
+ /// The maximum acceleration value.
+ ///
+ public float MaximumAcceleration { get; private set; }
+
+ ///
+ /// The current handling value.
+ /// Determines how well the spaceship can turn.
+ ///
+ public float Handling { get; private set; }
+ ///
+ /// The maximum handling value.
+ ///
+ public float MaximumHandling { get; private set; }
+
+ ///
+ /// The repair timer.
+ /// Determines how fast the spaceship can repair itself.
+ ///
+ public Timer RepairTimer { get; private set; }
+
+ ///
+ /// The current star-dust value.
+ /// Holds the amount of star-dust accumulated during a race.
+ ///
+ public int StarDust { get; private set; }
+ ///
+ /// The currently available power-ups.
+ /// Holds the available power-ups accumulated during a race.
+ ///
+ public List PowerUpList { get; private set; }
+ ///
+ /// The added power-ups.
+ /// Holds the added power-ups that weren't yet made available.
+ ///
+ public List AddedPowerUpList { get; private set; }
+ ///
+ /// The removed power-ups.
+ /// Holds the removed power-ups that weren't yet made unavailable.
+ ///
+ public List RemovedPowerUpList { get; private set; }
+
+ ///
+ /// The spaceships up vector.
+ ///
+ public Vector3 SpaceshipUp { get; private set; }
+ ///
+ /// The spaceships right vector.
+ ///
+ public Vector3 SpaceshipRight { get; private set; }
+ ///
+ /// The spaceships forward vector.
+ ///
+ public Vector3 SpaceshipForward { get; private set; }
+
+ ///
+ /// The spaceships model container.
+ /// Contains all the visual components.
+ ///
+ public Transform BodyContainer { get; private set; }
+ ///
+ /// The spaceships tracker container.
+ /// Contains the tracking visual components.
+ ///
+ public Transform MarkerContainer { get; private set; }
+ ///
+ /// The spaceships corner container.
+ /// Contains all the corners used for road sticking.
+ ///
+ public Transform CornerContainer { get; private set; }
+ ///
+ /// The spaceships shooter container.
+ /// Contains all the shooters used for firing lasers.
+ ///
+ public Transform ShooterContainer { get; private set; }
+
+ ///
+ /// The spaceships back-left corner anchor.
+ ///
+ private Transform BackLeftCorner { get; set; }
+ ///
+ /// The spaceships back-SpaceshipRight corner anchor.
+ ///
+ private Transform BackRightCorner { get; set; }
+ ///
+ /// The spaceships front-left corner anchor.
+ ///
+ private Transform FrontLeftCorner { get; set; }
+ ///
+ /// The spaceships front-SpaceshipRight corner anchor.
+ ///
+ private Transform FrontRightCorner { get; set; }
+
+ ///
+ /// The model controller.
+ /// Handles the spaceships model animations.
+ ///
+ private ModelController Model { get; set; }
+ ///
+ /// The shooter controller.
+ /// Handles the spaceships trail animations.
+ ///
+ private TrailController Trail { get; set; }
+ ///
+ /// The marker controller.
+ /// Handles the spaceships marker animations.
+ ///
+ private MarkerController Marker { get; set; }
+ ///
+ /// The shooter controller.
+ /// Handles the spaceships basic attacks.
+ ///
+ private ShooterController Shooter { get; set; }
+ ///
+ /// The joystick controller.
+ /// Handles input conversions from joysticks.
+ ///
+ private JoystickController Joystick { get; set; }
+
+ ///
+ /// The spaceships rigidbody.
+ ///
+ private Rigidbody Rigidbody { get; set; }
+
+ ///
+ /// The camera controller.
+ /// Handles the spaceship-following.
+ ///
+ private CameraController Camera { get; set; }
+ #endregion
+
+ #region [Methods]
+ ///
+ public void ObjectCreate()
+ {
+ // Initialize the identifier
+ this.ID = GameManager.Instance.SpaceshipList.IndexOf(this) + 1;
+
+ // Initialize the race-record
+ this.Record = new SpaceshipRecord(this);
+ // Initialize the configuration
+ this.Configuration = SpaceshipConfiguration.LoadConfiguration(this.ID);
+
+ // Initialize the health based on the configuration
+ this.Health = this.MaximumHealth = BaseHealth + BaseHealthIncrement * this.Configuration.Health;
+ // Initialize the handling based on the configuration
+ this.Handling = this.MaximumHandling = BaseHandling + BaseHandlingIncrement * this.Configuration.Handling;
+ // Initialize the weapon power based on the configuration
+ this.WeaponPower = this.MaximumWeaponPower = BaseWeaponPower + BaseWeaponPowerIncrement * this.Configuration.WeaponPower;
+ // Initialize the acceleration based on the configuration
+ this.Acceleration = this.MaximumAcceleration = BaseAcceleration + BaseAccelerationIncrement * this.Configuration.Acceleration;
+
+ // Reset the acceleration
+ this.Acceleration = 0.0f;
+
+ // Initialize the repair timer
+ this.RepairTimer = new Timer(TimerMode.Countdown, DefaultRepairTime);
+
+ // Initialize the star-dust
+ this.StarDust = 0;
+ // Initialize the power-up list
+ this.PowerUpList = new List();
+ this.AddedPowerUpList = new List();
+ this.RemovedPowerUpList = new List();
+
+ // Initialize the containers
+ this.BodyContainer = this.transform.Find("Body");
+ this.MarkerContainer = this.transform.Find("Markers");
+ this.CornerContainer = this.transform.Find("Corners");
+ this.ShooterContainer = this.transform.Find("Shooters");
+ // Initialize the anchors
+ this.BackLeftCorner = this.CornerContainer.Find("Back Left");
+ this.BackRightCorner = this.CornerContainer.Find("Back Right");
+ this.FrontLeftCorner = this.CornerContainer.Find("Front Left");
+ this.FrontRightCorner = this.CornerContainer.Find("Front Right");
+
+ // Initialize the models material
+ MeshRenderer[] modelMeshRenderers = this.BodyContainer.GetComponentsInChildren();
+ foreach(MeshRenderer meshRenderer in modelMeshRenderers)
+ meshRenderer.material = MarkerMaterials[this.ID];
+ // Initialize the trackers material
+ MeshRenderer[] markerMeshRenderers = this.MarkerContainer.GetComponentsInChildren();
+ foreach(MeshRenderer meshRenderer in markerMeshRenderers)
+ meshRenderer.material = MarkerMaterials[this.ID];
+
+ // Initialize the rigidbody
+ this.Rigidbody = GetComponent();
+
+ // Initialize the model controller
+ this.Model = this.BodyContainer.GetComponentInChildren();
+ this.Model.ObjectCreate();
+ // Initialize the trail controller
+ this.Trail = this.BodyContainer.GetComponentInChildren();
+ this.Trail.ObjectCreate();
+ // Initialize the marker controller
+ this.Marker = this.MarkerContainer.GetComponentInChildren();
+ this.Marker.ObjectCreate();
+
+ // Initialize the shooter controller
+ this.Shooter = GetComponentInChildren();
+ this.Shooter.Spaceship = this;
+ this.Shooter.ObjectCreate();
+ // Initialize the joystick controller
+ this.Joystick = new JoystickController();
+ this.Joystick.Spaceship = this;
+ this.Joystick.ObjectCreate();
+
+ // Initialize the camera controller
+ this.Camera = this.transform.parent.GetComponentInChildren();
+ this.Camera.Spaceship = this;
+ this.Camera.Initialize();
+ }
+
+ ///
+ public void ObjectUpdate()
+ {
+ // Update the timers
+ this.Record.TotalLapTime += Time.fixedDeltaTime;
+ this.Record.CurrentLapTime += Time.fixedDeltaTime;
+
+ // Update the repair timer
+ this.RepairTimer.Update();
+
+ // Update the controllers
+ this.Model.ObjectUpdate();
+ this.Trail.ObjectUpdate();
+ this.Marker.ObjectUpdate();
+ this.Shooter.ObjectUpdate();
+ this.Joystick.ObjectUpdate();
+
+ // Update the spaceships health
+ if (UpdateHealth())
+ {
+ // Update the spaceships sticking to the track
+ UpdateSticking();
+ // Update the spaceships laser shooters and power-ups
+ UpdateAbilities();
+ }
+ }
+
+ ///
+ public void ObjectDestroy()
+ {
+ // Update the controllers
+ this.Model.ObjectDestroy();
+ this.Trail.ObjectDestroy();
+ this.Marker.ObjectDestroy();
+ this.Shooter.ObjectDestroy();
+ this.Joystick.ObjectDestroy();
+
+ Destroy(this.gameObject);
+ }
+
+ #region [Methods] Update
+ ///
+ /// Checks the spaceships health.
+ /// If the repair timer is finished, restores the spaceships health before returning.
+ /// Returns true if the spaceship has more than 0 health remaining.
+ ///
+ public bool UpdateHealth()
+ {
+ // If the repairs are complete
+ if(this.Health == 0.0f && this.RepairTimer.Finished)
+ this.Health = this.MaximumHealth;
+
+ return this.Health > 0.0f;
+ }
+
+ ///
+ /// Updates the sticking.
+ ///
+ ///
+ public void UpdateSticking()
+ {
+ // Spaceship rotation ajustments
+ RaycastHit backLeftHit;
+ RaycastHit backRightHit;
+ RaycastHit frontLeftHit;
+ RaycastHit frontRightHit;
+
+ // Cast rays from each of the spaceships corners heading towards the track
+ bool backLeftRay = Physics.Raycast(BackLeftCorner.position + this.transform.up * 5.0f, -this.transform.up,
+ out backLeftHit, 25.0f, LayerManager.GetLayerMask(Layer.Tracks));
+ bool backRightRay = Physics.Raycast(BackRightCorner.position + this.transform.up * 5.0f, -this.transform.up,
+ out backRightHit, 25.0f, LayerManager.GetLayerMask(Layer.Tracks));
+ bool frontLeftRay = Physics.Raycast(FrontLeftCorner.position + this.transform.up * 5.0f, -this.transform.up,
+ out frontLeftHit, 25.0f, LayerManager.GetLayerMask(Layer.Tracks));
+ bool frontRightRay = Physics.Raycast(FrontRightCorner.position + this.transform.up * 5.0f, -this.transform.up,
+ out frontRightHit, 25.0f, LayerManager.GetLayerMask(Layer.Tracks));
+
+ if(backLeftRay && backRightRay && frontLeftRay && frontRightRay)
+ {
+ // If there is a hit, adjust the spaceships rotation
+ if(backLeftHit.collider.tag == LayerManager.GetTagName(Tag.Road) && backRightHit.collider.tag == LayerManager.GetTagName(Tag.Road) &&
+ frontLeftHit.collider.tag == LayerManager.GetTagName(Tag.Road) && frontRightHit.collider.tag == LayerManager.GetTagName(Tag.Road))
+ {
+ this.SpaceshipUp =
+ Vector3.Cross(backRightHit.point - backRightHit.normal, backLeftHit.point - backLeftHit.normal) +
+ Vector3.Cross(backLeftHit.point - backLeftHit.normal, frontLeftHit.point - frontLeftHit.normal) +
+ Vector3.Cross(frontLeftHit.point - frontLeftHit.normal, frontRightHit.point - frontRightHit.normal) +
+ Vector3.Cross(frontRightHit.point - frontRightHit.normal, backRightHit.point - backRightHit.normal);
+ this.SpaceshipUp.Normalize();
+
+ this.SpaceshipRight = this.transform.right;
+ this.SpaceshipRight.Normalize();
+
+ this.SpaceshipForward = Vector3.Cross(SpaceshipRight, SpaceshipUp);
+ this.SpaceshipForward.Normalize();
+ }
+ }
+
+ // Adjust the spaceships rotation so that it's parallel to the tracl
+ this.transform.LookAt(this.transform.position + this.SpaceshipForward * 5.0f, this.SpaceshipUp);
+
+ // Spaceships position adjustments
+ RaycastHit centerHit;
+
+ // Cast a Ray from he spaceships center heading towards the track
+ if(Physics.Raycast(this.transform.position + this.transform.up * 5.0f, -this.transform.up, out centerHit, 25.0f, LayerManager.GetLayerMask(Layer.Tracks)))
+ {
+ // If there is a hit, adjust the spaceships position so that it's slightly above the track
+ if(centerHit.collider.tag == LayerManager.GetTagName(Tag.Road))
+ this.transform.position = centerHit.point + this.transform.up * 2.5f;
+ }
+ }
+
+ ///
+ /// Updates the abilities.
+ ///
+ public void UpdateAbilities()
+ {
+ // Clean the powerUp list
+ this.PowerUpList.AddRange(this.AddedPowerUpList);
+ this.PowerUpList.RemoveAll(powerUp => powerUp == null);
+ this.PowerUpList.RemoveAll(powerUp => this.RemovedPowerUpList.Exists(existingPowerUp => existingPowerUp.Name == powerUp.Name));
+
+ // Clean the temporary lists
+ this.AddedPowerUpList.Clear();
+ this.RemovedPowerUpList.Clear();
+
+ // Update the power-ups
+ this.PowerUpList.RemoveAll(powerUp => powerUp == null);
+ foreach(IPowerUp powerUp in this.PowerUpList)
+ powerUp.PowerUpUpdate();
+
+ // Lasers
+ if((Input.GetKey(this.Joystick.L1)) ||
+ (this.Record.SpaceshipID == 1 && Input.GetKey(KeyCode.F1)) ||
+ (this.Record.SpaceshipID == 2 && Input.GetKey(KeyCode.Alpha1)))
+ {
+ // Shoot the lasers
+ this.Shooter.Shoot();
+ }
+
+ // Shield
+ if((Input.GetKey(this.Joystick.R1)) ||
+ (this.Record.SpaceshipID == 1 && Input.GetKey(KeyCode.F3)) ||
+ (this.Record.SpaceshipID == 2 && Input.GetKey(KeyCode.Alpha3)))
+ {
+ // Retrieve the shield power-up
+ IPowerUp shield = this.PowerUpList.FirstOrDefault(powerUp => powerUp is Shield);
+ if(shield != null)
+ shield.Activate(this);
+ }
+
+ // Smokescreen
+ if((Input.GetKey(this.Joystick.R2)) ||
+ (this.Record.SpaceshipID == 1 && Input.GetKey(KeyCode.F4)) ||
+ (this.Record.SpaceshipID == 2 && Input.GetKey(KeyCode.Alpha4)))
+ {
+ // Retrieve the smokescreen power-up
+ IPowerUp smokescreen = this.PowerUpList.FirstOrDefault(powerUp => powerUp is Smokescreen);
+ if(smokescreen != null)
+ smokescreen.Activate(this);
+ }
+
+ // Homing-Rocket
+ if((Input.GetKey(this.Joystick.L2)) ||
+ (this.Record.SpaceshipID == 1 && Input.GetKey(KeyCode.F2)) ||
+ (this.Record.SpaceshipID == 2 && Input.GetKey(KeyCode.Alpha2)))
+ {
+ // Retrieve the homing-rocket power-up
+ IPowerUp homingRocket = this.PowerUpList.FirstOrDefault(powerUp => powerUp is HomingRocket);
+ if(homingRocket != null)
+ homingRocket.Activate(this);
+ }
+ }
+
+ ///
+ /// Updates the movement. TODO
+ ///
+ ///
+ public void FixedUpdate()
+ {
+ this.Acceleration = this.Acceleration * 0.95f;
+
+ // Accelerator = Cross & Brake = Square
+ bool accelerator =
+ (Input.GetKey(this.Joystick.Cross) && Input.GetKey(this.Joystick.Square) == false) || // Joystick
+ (Input.GetKey(KeyCode.W) && Input.GetKey(KeyCode.Q) == false && this.Record.SpaceshipID == 1) || // PC Player 1
+ (Input.GetKey(KeyCode.UpArrow) && Input.GetKey(KeyCode.B) == false &&
+ this.Record.SpaceshipID == 2); // PC Player 2
+
+ if(accelerator)
+ {
+ // "Shifts"
+ this.Acceleration =
+ Mathf.Clamp(
+ this.Acceleration + 5.0f * (this.MaximumAcceleration / (this.Acceleration + 2.5f)), 0.0f, this.MaximumAcceleration);
+
+ if(this.Record.SpaceshipID == 1)
+ this.Acceleration *= 1.325f;
+
+ if(this.Record.CurrentStanding > 1)
+ this.Acceleration *= 1.15f;
+ }
+
+ // Reverse = Triangle & Brake = Square
+ bool reverse =
+ (Input.GetKey(this.Joystick.Triangle) && Input.GetKey(this.Joystick.Square) == false) || //Joystick
+ (Input.GetKey(KeyCode.S) && Input.GetKey(KeyCode.Q) == false && this.Record.SpaceshipID == 1) || // PC Player 1
+ (Input.GetKey(KeyCode.DownArrow) && Input.GetKey(KeyCode.B) == false &&
+ this.Record.SpaceshipID == 2); // PC Player 2
+
+ if(reverse)
+ {
+ // "Shifts"
+ this.Acceleration = -this.MaximumAcceleration * 0.50f;
+ }
+
+ // Brake = Square
+ bool brake =
+ (Input.GetKey(this.Joystick.Square)) || // Joystick
+ (Input.GetKey(KeyCode.Q) && this.Record.SpaceshipID == 1) || // PC Player 1
+ (Input.GetKey(KeyCode.B) && this.Record.SpaceshipID == 2); // PC Player 2
+
+ if(brake)
+ {
+ this.Acceleration = 0.0f;
+
+ // Reduce the Spaceships Velocity (Acceleration)
+ this.GetComponent().velocity = this.GetComponent().velocity * 0.95f;
+
+ // Reduce the Spaceships Angular Velocity (Steering)
+ this.GetComponent().angularVelocity = this.GetComponent().angularVelocity * 0.95f;
+ }
+
+ if(Mathf.Abs(this.Acceleration) < 0.05f)
+ this.Acceleration = 0.0f;
+
+ // Steering = Stick and Directional Pad
+ float horizontalAxis =
+ Input.GetAxis(this.Joystick.HorizontalAxis);
+
+ if(horizontalAxis == 0.0f && this.Record.SpaceshipID == 1)
+ horizontalAxis = Input.GetAxis("Horizontal Axis PC 1");
+ else if(horizontalAxis == 0.0f && this.Record.SpaceshipID == 2)
+ horizontalAxis = Input.GetAxis("Horizontal Axis PC 2");
+
+ if(horizontalAxis != 0.0f)
+ {
+ float angle = this.Model.transform.localRotation.eulerAngles.z;
+
+ if(angle > 180.0f)
+ angle -= 360.0f;
+
+ if(angle < 45.0f && horizontalAxis < 0.0f)
+ this.Model.transform.RotateAround(this.Model.transform.position, this.Model.transform.forward, -horizontalAxis * 0.50f);
+
+ if(angle > -45.0f && horizontalAxis > 0.0f)
+ this.Model.transform.RotateAround(this.Model.transform.position, this.Model.transform.forward, -horizontalAxis * 0.50f);
+
+ this.Acceleration *= 0.75f;
+
+ horizontalAxis *= Mathf.Sign(this.Acceleration);
+
+ // Increment the spaceships angular velocity
+ this.Rigidbody.AddTorque(this.transform.up * horizontalAxis * Handling, ForceMode.Acceleration);
+ }
+
+ // Increment the spaceships velocity
+ this.Rigidbody.AddForce(this.transform.forward * Acceleration * 50.0f, ForceMode.Acceleration);
+ }
+ #endregion
+
+ #region [Methods] Damage
+ ///
+ /// Inflicts damage to the spaceship.
+ ///
+ /// The damage.
+ public void InflictDamage(float damage)
+ {
+ // Update the health
+ this.Health = Mathf.Clamp(this.Health - damage, 0.0f, this.MaximumHealth);
+
+ // Decrease the acceleration
+ this.Acceleration *= 0.75f;
+
+ // Start the repairs if the health ran out
+ if (this.Health == 0.0f && this.RepairTimer.Running == false)
+ {
+ this.RepairTimer.Start();
+
+ // Instantiate the explosion and make it follow the target
+ GameObject explosion = ResourceManager.LoadGameObject("Objects/Explosions/Big Explosion");
+ explosion.transform.parent = this.transform;
+ explosion.transform.position = this.transform.position;
+ }
+ }
+ #endregion
+
+ #region [Methods] StarDust
+ ///
+ /// Adds the star-dust to the spaceship.
+ ///
+ ///
+ /// The value.
+ public bool AddStarDust(int value)
+ {
+ this.StarDust += value;
+
+ return true;
+ }
+ ///
+ /// Removes the star-dust from the spaceship.
+ ///
+ ///
+ /// The value.
+ public bool RemoveStarDust(int value)
+ {
+ this.StarDust -= value;
+
+ return true;
+ }
+ #endregion
+
+ #region [Methods] PowerUps
+ ///
+ /// Adds the power-up to the spaceship.
+ ///
+ ///
+ /// The power up.
+ public bool AddPowerUp(IPowerUp powerUp)
+ {
+ // If the spaceship already has this power-up, don't add it.
+ if(this.PowerUpList.Exists(existingPowerUp => existingPowerUp.Name == powerUp.Name) ||
+ this.AddedPowerUpList.Exists(existingPowerUp => existingPowerUp.Name == powerUp.Name))
+ return false;
+
+ // Add the power-up
+ this.AddedPowerUpList.Add(powerUp);
+
+ return true;
+ }
+ ///
+ /// Removes the power-up from the spaceship.
+ ///
+ ///
+ /// The power up.
+ public bool RemovePowerUp(IPowerUp powerUp)
+ {
+ // If the spaceship doesn't have this power-up, don't remove it.
+ if(this.PowerUpList.Exists(existingPowerUp => existingPowerUp.Name == powerUp.Name) == false &&
+ this.RemovedPowerUpList.Exists(existingPowerUp => existingPowerUp.Name == powerUp.Name) == false)
+ return false;
+
+ // Remove the power-up
+ this.RemovedPowerUpList.Add(powerUp);
+
+ return true;
+ }
+ #endregion
+
+ #region [Methods] Collision
+ ///
+ /// Called when there is a collision with the spaceship.
+ ///
+ ///
+ /// The collision information.
+ public void OnCollisionEnter(Collision collision)
+ {
+ // Check if we're colliding with a boundary
+ if(collision.collider.transform.tag == LayerManager.GetTagName(Tag.Boundary))
+ {
+ // Reduce the acceleration
+ this.Acceleration *= 0.5f;
+
+ foreach(ContactPoint contactPoint in collision.contacts)
+ {
+ RaycastHit centerHit;
+
+ // Cast a ray from the saceships center heading towards the track
+ if(Physics.Raycast(this.transform.position + this.transform.up * 5.0f, -this.transform.up, out centerHit, 25.0f, LayerManager.GetLayerMask(Layer.Tracks)))
+ {
+ // If there is a collision, adjust the Spaceships Position
+ if(centerHit.collider.tag == LayerManager.GetTagName(Tag.Road))
+ {
+ Vector3 contactNormal = contactPoint.point - centerHit.point;
+ contactNormal.Normalize();
+ Vector3 contactDirection = this.transform.forward - Vector3.Project(this.transform.forward, contactNormal);
+ contactDirection.Normalize();
+
+ // Adjust the velocity to redirect the spaceship from the collider
+ this.Rigidbody.velocity = -this.Rigidbody.velocity.magnitude * contactDirection * 0.25f;
+ // Adjust the position to remove the spaceship from the collider
+ this.transform.position -= contactDirection;
+ }
+ }
+ }
+ }
+ }
+ #endregion
+
+ #endregion
+
+ public void OnDrawGizmos()
+ {
+ if(BackLeftCorner != null && BackRightCorner != null && FrontLeftCorner != null && FrontRightCorner != null)
+ {
+ // Spaceship Rotation Ajustments
+ RaycastHit backLeftHit;
+ RaycastHit backRightHit;
+ RaycastHit frontLeftHit;
+ RaycastHit frontRightHit;
+
+ // Cast Rays from each of the Spaceships Corners heading towards the Track
+ bool backLeftRay = Physics.Raycast(BackLeftCorner.position + this.transform.up * 5.0f, -this.transform.up,
+ out backLeftHit, 25.0f, 1 << LayerMask.NameToLayer("Tracks"));
+ bool backRightRay = Physics.Raycast(BackRightCorner.position + this.transform.up * 5.0f, -this.transform.up,
+ out backRightHit, 25.0f, 1 << LayerMask.NameToLayer("Tracks"));
+ bool frontLeftRay = Physics.Raycast(FrontLeftCorner.position + this.transform.up * 5.0f, -this.transform.up,
+ out frontLeftHit, 25.0f, 1 << LayerMask.NameToLayer("Tracks"));
+ bool frontRightRay = Physics.Raycast(FrontRightCorner.position + this.transform.up * 5.0f, -this.transform.up,
+ out frontRightHit, 25.0f, 1 << LayerMask.NameToLayer("Tracks"));
+
+ if(backLeftRay && backRightRay && frontLeftRay && frontRightRay)
+ {
+ // If there is a Collision, adjust the Spaceships Rotation
+ if(backLeftHit.collider.tag == "Road" && backRightHit.collider.tag == "Road" &&
+ frontLeftHit.collider.tag == "Road" && frontRightHit.collider.tag == "Road")
+ {
+ this.SpaceshipUp =
+ Vector3.Cross(backRightHit.point - backRightHit.normal, backLeftHit.point - backLeftHit.normal) +
+ Vector3.Cross(backLeftHit.point - backLeftHit.normal, frontLeftHit.point - frontLeftHit.normal) +
+ Vector3.Cross(frontLeftHit.point - frontLeftHit.normal, frontRightHit.point - frontRightHit.normal) +
+ Vector3.Cross(frontRightHit.point - frontRightHit.normal, backRightHit.point - backRightHit.normal);
+ this.SpaceshipUp.Normalize();
+
+ this.SpaceshipRight = this.transform.right;
+ this.SpaceshipRight.Normalize();
+
+ this.SpaceshipForward = Vector3.Cross(SpaceshipRight, SpaceshipUp);
+ this.SpaceshipForward.Normalize();
+ }
+ }
+
+ if(backLeftRay && backRightRay && frontLeftRay && frontRightRay)
+ {
+ Gizmos.color = Color.yellow;
+ Gizmos.DrawLine(BackLeftCorner.position, backLeftHit.point);
+ Gizmos.DrawLine(BackRightCorner.position, backRightHit.point);
+ Gizmos.DrawLine(FrontLeftCorner.position, frontLeftHit.point);
+ Gizmos.DrawLine(FrontRightCorner.position, frontRightHit.point);
+
+ Gizmos.color = Color.cyan;
+ Gizmos.DrawLine(this.transform.position, this.transform.position + this.transform.up * 2.0f);
+
+ Gizmos.color = Color.red;
+ Gizmos.DrawSphere(backLeftHit.point, 1.0f);
+ Gizmos.DrawSphere(backRightHit.point, 1.0f);
+ Gizmos.DrawSphere(frontLeftHit.point, 1.0f);
+ Gizmos.DrawSphere(frontRightHit.point, 1.0f);
+
+ Gizmos.DrawSphere(this.transform.position + this.transform.forward * 5.0f, 1.0f);
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/SpaceShip/SpaceshipController.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/SpaceshipController.cs.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/SpaceShip/SpaceshipController.cs.meta
rename to Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/SpaceshipController.cs.meta
diff --git a/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/SpaceshipRecord.cs b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/SpaceshipRecord.cs
new file mode 100644
index 0000000..f08575b
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/SpaceshipRecord.cs
@@ -0,0 +1,57 @@
+namespace MilkyWay.Objects.Spaceships
+{
+ ///
+ /// Implements a spaceship configuration.
+ ///
+ public sealed class SpaceshipRecord
+ {
+ #region [Attributes]
+ ///
+ /// Gets or sets the spaceship identifier.
+ ///
+ ///
+ /// The spaceship identifier.
+ ///
+ public int SpaceshipID;
+
+ ///
+ /// The spaceships current standing in the race.
+ ///
+ public int CurrentStanding;
+
+ ///
+ /// The spaceships current lap in the race.
+ ///
+ public int CurrentLap;
+ ///
+ /// The spaceships current checkpoint in the race.
+ ///
+ public int CurrentCheckpoint;
+
+ ///
+ /// The spaceships lap time in the current lap.
+ ///
+ public float CurrentLapTime;
+ ///
+ /// The spaceships best lap time in the current race.
+ ///
+ public float BestLapTime;
+ ///
+ /// The spaceships total lap time in the current race.
+ ///
+ public float TotalLapTime;
+ #endregion
+
+ #region [Methods]
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ ///
+ /// The spaceship.
+ public SpaceshipRecord(SpaceshipController spaceship)
+ {
+ this.SpaceshipID = spaceship != null ? spaceship.ID : 0;
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/Race/RaceRecord.cs.meta b/Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/SpaceshipRecord.cs.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/Race/RaceRecord.cs.meta
rename to Milky Way/Assets/Scripts/Controllers/Objects/Spaceships/SpaceshipRecord.cs.meta
diff --git a/Milky Way/Assets/Scripts/Controllers/Tracks.meta b/Milky Way/Assets/Scripts/Controllers/Tracks.meta
new file mode 100644
index 0000000..f46605d
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Tracks.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 2015c1bca3a5f874e94460c27719ed21
+folderAsset: yes
+timeCreated: 1518656209
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Scripts/Controllers/Tracks/CheckpointController.cs b/Milky Way/Assets/Scripts/Controllers/Tracks/CheckpointController.cs
new file mode 100644
index 0000000..ed90897
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Controllers/Tracks/CheckpointController.cs
@@ -0,0 +1,67 @@
+// Unity
+using UnityEngine;
+
+// System
+using System.Text.RegularExpressions;
+
+// MilkyWay
+using MilkyWay.Managers;
+
+namespace MilkyWay.Objects.Spaceships
+{
+ ///
+ /// Implements a checkpoint.
+ ///
+ ///
+ ///
+ public sealed class CheckpointController : MonoBehaviour, IObjectController
+ {
+ #region [Attributes]
+ ///
+ /// The checkpoints identifier.
+ ///
+ public int ID { get; private set; }
+ #endregion
+
+ #region [Methods]
+ ///
+ public void ObjectCreate()
+ {
+ // Extract the checkpoints identifier
+ Regex regex = new Regex(@"([a-zA-Z]+)\s([0-9]+)");
+ Match match = regex.Match(this.name);
+
+ // Parse the checkpoints identifier
+ this.ID = int.Parse(match.Groups[2].Value);
+ }
+
+ ///
+ public void ObjectUpdate()
+ {
+ // Nothing to do here.
+ }
+
+ ///
+ public void ObjectDestroy()
+ {
+ Destroy(this.gameObject);
+ }
+
+ ///
+ /// Called when another collider enters the checkpoints collider.
+ ///
+ ///
+ /// The collider.
+ public void OnTriggerEnter(Collider collider)
+ {
+ if (collider.transform.gameObject.layer == LayerManager.GetLayer(Layer.Spaceships))
+ {
+ SpaceshipController spaceship = collider.transform.GetComponent();
+
+ if (spaceship.Record.CurrentCheckpoint == this.ID - 1)
+ spaceship.Record.CurrentCheckpoint = this.ID;
+ }
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/Race/CheckpointController.cs.meta b/Milky Way/Assets/Scripts/Controllers/Tracks/CheckpointController.cs.meta
similarity index 100%
rename from Milky Way/Assets/Scripts/Race/CheckpointController.cs.meta
rename to Milky Way/Assets/Scripts/Controllers/Tracks/CheckpointController.cs.meta
diff --git a/Milky Way/Assets/Scripts/HoverController.cs b/Milky Way/Assets/Scripts/HoverController.cs
index 8d66a59..9589ee5 100644
--- a/Milky Way/Assets/Scripts/HoverController.cs
+++ b/Milky Way/Assets/Scripts/HoverController.cs
@@ -1,38 +1,36 @@
-using UnityEngine;
+using UnityEngine;
-public class HoverController : MonoBehaviour {
-
+public class HoverController : MonoBehaviour
+{
public float hoverSpeed;
public float hoverDistance;
- public Vector3 hoverPosition
- { get; protected set; }
- public Vector3 hoverDirection
- { get; protected set; }
+ public Vector3 hoverPosition { get; protected set; }
+ public Vector3 hoverDirection { get; protected set; }
// Use this for initialization
- public void Start () {
-
+ public void Start()
+ {
this.hoverPosition = new Vector3(0.0f, 0.0f, 0.0f);
this.hoverDirection = new Vector3(0.0f, -1.0f, 0.0f);
}
-
+
// Update is called once per frame
- public void Update () {
-
+ public void Update()
+ {
}
-
- public void FixedUpdate() {
-
- if(this.hoverPosition.magnitude > hoverDistance) {
+ public void FixedUpdate()
+ {
+ if (this.hoverPosition.magnitude > hoverDistance)
+ {
this.hoverPosition = new Vector3(0.0f, 0.0f, 0.0f);
this.hoverDirection = -this.hoverDirection;
}
this.hoverPosition += this.hoverDirection * this.hoverSpeed;
-
+
// Adjust the Objects Position
this.transform.localPosition += this.hoverDirection * this.hoverSpeed;
}
diff --git a/Milky Way/Assets/Scripts/Item/Item.cs b/Milky Way/Assets/Scripts/Item/Item.cs
deleted file mode 100644
index 00ca1e4..0000000
--- a/Milky Way/Assets/Scripts/Item/Item.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using UnityEngine;
-
-public abstract class Item : MonoBehaviour {
-
- public string itemName
- { get; protected set; }
-
- public float rotationSpeed;
-
- // When the game starts
- public virtual void Awake() {
-
- this.itemName = "Uninitialized Item";
- }
-
- public virtual void FixedUpdate() {
-
- // Items Rotation Adjustments
- Vector3 eulerAngles = this.transform.localRotation.eulerAngles;
-
- eulerAngles.y += rotationSpeed;
-
- this.transform.localRotation = Quaternion.Euler(eulerAngles.x, eulerAngles.y, eulerAngles.z);
- }
-
- public void OnTriggerEnter(Collider collider) {
-
- if(collider.transform.gameObject.layer == LayerMask.NameToLayer("Spaceships")) {
-
- SpaceshipController spaceship = collider.transform.GetComponent();
-
- if(AddItem(spaceship) == true)
- Destroy(gameObject);
- }
- }
-
- public abstract bool AddItem(SpaceshipController spaceship);
-}
diff --git a/Milky Way/Assets/Scripts/Item/PowerUpItem.cs b/Milky Way/Assets/Scripts/Item/PowerUpItem.cs
deleted file mode 100644
index 916ccba..0000000
--- a/Milky Way/Assets/Scripts/Item/PowerUpItem.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using UnityEngine;
-
-public class PowerUpItem: Item {
-
- public string powerUpName;
-
- // When the game starts
- public override void Awake() {
-
- this.itemName = "Power Up Item - " + powerUpName;
- }
-
- public override bool AddItem(SpaceshipController spaceship) {
-
- if(spaceship != null)
- return spaceship.AddPowerUp(powerUpName);
-
- return false;
- }
-}
diff --git a/Milky Way/Assets/Scripts/Item/StarFragmentItem.cs b/Milky Way/Assets/Scripts/Item/StarFragmentItem.cs
deleted file mode 100644
index 4e769cd..0000000
--- a/Milky Way/Assets/Scripts/Item/StarFragmentItem.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using UnityEngine;
-
-public class StarFragmentItem: Item {
-
- public int value;
-
- // When the game starts
- public override void Awake() {
-
- this.itemName = "Star Fragment Item - " + value;
- }
-
- public override bool AddItem(SpaceshipController spaceship) {
-
- if(spaceship != null)
- return spaceship.AddGold(value);
-
- return false;
- }
-}
diff --git a/Milky Way/Assets/Scripts/Managers.meta b/Milky Way/Assets/Scripts/Managers.meta
new file mode 100644
index 0000000..01f4a8f
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Managers.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 65dba8b21f1f2b746b9bde4dea787052
+folderAsset: yes
+timeCreated: 1518539700
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Scripts/Managers/GameManager.cs b/Milky Way/Assets/Scripts/Managers/GameManager.cs
new file mode 100644
index 0000000..081c1c1
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Managers/GameManager.cs
@@ -0,0 +1,278 @@
+// Unity
+using UnityEngine;
+
+// System
+using System;
+using System.Linq;
+using System.Collections.Generic;
+
+// MilkyWay
+using MilkyWay.Objects.Spaceships;
+
+namespace MilkyWay.Managers
+{
+ ///
+ /// The available race modes.
+ ///
+ public enum RaceMode
+ {
+ ///
+ /// The multiplayer arena race mode.
+ /// An arena that allows 1v1 face-offs.
+ ///
+ Arena,
+ ///
+ /// The multiplayer track race mode.
+ /// A track that allows multiplayer racing.
+ ///
+ Track,
+ ///
+ /// The single-player track race mode.
+ /// A track that allows single-player racing to test your times.
+ ///
+ TimeAttack
+ }
+
+ ///
+ /// Manages the entire game.
+ ///
+ public sealed class GameManager : SingletonManager
+ {
+ #region [Constants and Statics]
+ ///
+ /// The name of the item container game-object.
+ ///
+ public const string ItemContainerName = "Items";
+ ///
+ /// The name of the power-up container game-object.
+ ///
+ public const string PowerUpContainerName = "PowerUps";
+ ///
+ /// The name of the iterface container game-object.
+ ///
+ public const string InterfaceContainerName = "Interface";
+ ///
+ /// The name of the spaceship container game-object.
+ ///
+ public const string SpaceshipContainerName = "Spaceships";
+ #endregion
+
+ #region [Attributes]
+ ///
+ /// The currently selected race mode.
+ ///
+ public RaceMode RaceMode;
+ ///
+ /// The current lap total.
+ ///
+ public int LapTotal { get; private set; }
+
+ ///
+ /// The item manager.
+ ///
+ public ItemManager ItemManager { get; private set; }
+ ///
+ /// The power-up manager.
+ ///
+ public PowerUpManager PowerUpManager { get; private set; }
+ ///
+ /// The projectile manager.
+ ///
+ public ProjectileManager ProjectileManager { get; private set; }
+ ///
+ /// The interface manager.
+ ///
+ public InterfaceManager InterfaceManager { get; private set; }
+
+ ///
+ /// The game managers list of spaceship controllers .
+ ///
+ public List SpaceshipList { get; private set; }
+ ///
+ /// The game managers list of checkpoint controllers .
+ ///
+ public List CheckpointList { get; private set; }
+ #endregion
+
+ #region [Methods]
+ ///
+ /// Starts the game by initializing all the other managers (including the player and the cameras).
+ ///
+ public void Start()
+ {
+ switch(RaceMode)
+ {
+ case RaceMode.Arena:
+ this.LapTotal = 0;
+ break;
+
+ case RaceMode.Track:
+ this.LapTotal = 3;
+ break;
+
+ case RaceMode.TimeAttack:
+ this.LapTotal = 3;
+ break;
+
+ default:
+ throw new ArgumentOutOfRangeException();
+ }
+
+ // Find the spaceships in the arena/track
+ this.SpaceshipList = this.transform.GetComponentsInChildren().ToList();
+ // Initialize the spaceships
+ foreach(SpaceshipController spaceship in this.SpaceshipList)
+ spaceship.ObjectCreate();
+ // Find the checkpoints in the arena/track
+ this.CheckpointList = this.transform.GetComponentsInChildren().ToList();
+ // Initialize the checkpoints
+ foreach(CheckpointController checkpoint in this.CheckpointList)
+ checkpoint.ObjectCreate();
+
+ // Find the item manager
+ this.ItemManager = GetComponentInChildren();
+ this.ItemManager.ObjectCreate();
+ // Find the power-up manager
+ this.PowerUpManager = GetComponentInChildren();
+ this.PowerUpManager.ObjectCreate();
+ // Find the projectile manager
+ this.ProjectileManager = GetComponentInChildren();
+ this.ProjectileManager.ObjectCreate();
+ // Find the interface manager
+ this.InterfaceManager = GetComponentInChildren();
+ this.InterfaceManager.ObjectCreate();
+ }
+
+ ///
+ /// Updates the instance.
+ ///
+ public void Update()
+ {
+ switch(RaceMode)
+ {
+ case RaceMode.Track:
+ case RaceMode.TimeAttack:
+
+ // Laps
+ foreach(SpaceshipController spaceship in this.SpaceshipList)
+ {
+ // Check the current checkpoint
+ if(spaceship.Record.CurrentCheckpoint == this.CheckpointList.Count)
+ {
+ // Update the lap
+ spaceship.Record.CurrentLap++;
+ // Update the checkpoint
+ spaceship.Record.CurrentCheckpoint = 0;
+
+ // Update the lap times
+ if(spaceship.Record.CurrentLapTime < spaceship.Record.BestLapTime || spaceship.Record.BestLapTime == 0.0f)
+ {
+ spaceship.Record.BestLapTime = spaceship.Record.CurrentLapTime;
+ spaceship.Record.CurrentLapTime = 0.0f;
+ }
+ }
+
+ // Check the current lap
+ if(spaceship.Record.CurrentLap == this.LapTotal)
+ {
+ Debug.Log("Winrar!");
+ }
+ }
+
+ // Standings
+ List orderedSpaceships = new List();
+
+ // Calculate the standings
+ foreach(SpaceshipController spaceship in this.SpaceshipList)
+ {
+ int currentStanding = 0;
+ int currentLap = spaceship.Record.CurrentLap;
+ int currentCheckpoint = spaceship.Record.CurrentCheckpoint;
+
+ // Compare the current spaceship with the previously ordered ones
+ foreach(SpaceshipController orderedSpaceship in orderedSpaceships)
+ {
+ // The spaceship is ahead on laps, maintain the standing
+ if(currentLap > orderedSpaceship.Record.CurrentLap)
+ {
+ break;
+ }
+
+ // The spaceship is ahead on checkpoints, maintain the standing
+ if(currentLap == orderedSpaceship.Record.CurrentLap &&
+ currentCheckpoint > orderedSpaceship.Record.CurrentCheckpoint)
+ {
+ break;
+ }
+
+ // The spaceship is ahead in distance, maintain the standing
+ if(currentLap == orderedSpaceship.Record.CurrentLap &&
+ currentCheckpoint == orderedSpaceship.Record.CurrentCheckpoint)
+ {
+ // Select the next checkpoint
+ CheckpointController checkpoint;
+ if(currentCheckpoint == this.CheckpointList.Count)
+ checkpoint = this.CheckpointList.FirstOrDefault(existingCheckpoint => existingCheckpoint.ID == 1);
+ else
+ checkpoint = this.CheckpointList.FirstOrDefault(existingCheckpoint => existingCheckpoint.ID == currentCheckpoint + 1);
+
+ if (checkpoint != null)
+ {
+ float distance1 = Vector3.Distance(checkpoint.transform.position, spaceship.transform.position);
+ float distance2 = Vector3.Distance(checkpoint.transform.position, orderedSpaceship.transform.position);
+
+ if(distance1 < distance2)
+ {
+ break;
+ }
+ }
+ }
+
+ currentStanding++;
+ }
+
+ orderedSpaceships.Insert(currentStanding, spaceship);
+ }
+
+ // Update the standings
+ foreach (SpaceshipController spaceship in this.SpaceshipList)
+ spaceship.Record.CurrentStanding = orderedSpaceships.IndexOf(spaceship) + 1;
+
+ break;
+ }
+
+ // Update the item manager
+ this.ItemManager.ObjectUpdate();
+ // Update the power-up manager
+ this.PowerUpManager.ObjectUpdate();
+ // Update the projectile manager
+ this.ProjectileManager.ObjectUpdate();
+ // Update the interface manager
+ this.InterfaceManager.ObjectUpdate();
+ // Update the spaceships
+ foreach(SpaceshipController spaceship in this.SpaceshipList)
+ spaceship.ObjectUpdate();
+ }
+
+ ///
+ /// Destroys this instance.
+ ///
+ public void Destroy()
+ {
+ // Destroy the item manager
+ this.ItemManager.ObjectDestroy();
+ // Destroy the power-up manager
+ this.PowerUpManager.ObjectDestroy();
+ // Destroy the projectile manager
+ this.ProjectileManager.ObjectDestroy();
+ // Destroy the interface manager
+ this.InterfaceManager.ObjectDestroy();
+ // Destroy the spaceships
+ foreach(SpaceshipController spaceship in this.SpaceshipList)
+ spaceship.ObjectDestroy();
+
+ Destroy(this.gameObject);
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Milky Way/Assets/Scripts/Managers/GameManager.cs.meta b/Milky Way/Assets/Scripts/Managers/GameManager.cs.meta
new file mode 100644
index 0000000..cf01185
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Managers/GameManager.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: fc1a0de8bcb399c47a6a6ed32188789f
+timeCreated: 1518559782
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Milky Way/Assets/Scripts/Managers/InterfaceManager.cs b/Milky Way/Assets/Scripts/Managers/InterfaceManager.cs
new file mode 100644
index 0000000..880d23a
--- /dev/null
+++ b/Milky Way/Assets/Scripts/Managers/InterfaceManager.cs
@@ -0,0 +1,309 @@
+// Unity
+using UnityEngine;
+using UnityEngine.UI;
+using UnityEngine.SceneManagement;
+
+// System
+using System;
+using System.Linq;
+
+// MilkyWay
+using MilkyWay.Utility;
+using MilkyWay.Managers;
+using MilkyWay.Objects.PowerUps;
+
+namespace MilkyWay.Objects.Spaceships
+{
+ ///
+ /// Implements the spaceships interface.
+ ///
+ ///
+ ///
+ ///
+ public sealed class InterfaceManager : SingletonManager, IObjectController
+ {
+ #region [Classes]
+ ///
+ /// The players interface controller.
+ ///
+ private sealed class PlayerInterfaceController
+ {
+ #region [Attributes] Standing
+ ///
+ /// The player standings text.
+ ///
+ private readonly Text Standing;
+ #endregion
+
+ #region [Attributes] Laps
+ ///
+ /// The player lap text.
+ ///
+ private readonly Text Lap;
+ ///
+ /// The player lap time text.
+ ///
+ private readonly Text LapTime;
+ ///
+ /// The player best lap time text.
+ ///
+ private readonly Text BestLapTime;
+ #endregion
+
+ #region [Attributes] Health
+ ///
+ /// The players health bar image.
+ ///
+ private readonly Image HealthBar;
+ ///
+ /// The players health bar text.
+ ///
+ private readonly Text HealthText;
+ ///
+ /// The players repair time text.
+ ///
+ private readonly Text RepairTime;
+ #endregion
+
+ #region [Attributes] Items
+ ///
+ /// The players star dust text.
+ ///
+ private readonly Text StarDust;
+ ///
+ /// The players power up images.
+ ///
+ private readonly Image[] PowerUpIcons;
+ ///
+ /// The players power up bar images.
+ ///
+ private readonly Image[] PowerUpBars;
+ #endregion
+
+ #region [Attributes] Spaceship
+ ///
+ /// The players spaceship.
+ ///
+ private readonly SpaceshipController Spaceship;
+ #endregion
+
+ #region [Methods]
+ ///
+ /// Initializes an instance of the class.
+ ///
+ ///
+ public PlayerInterfaceController(SpaceshipController spaceship)
+ {
+ this.Spaceship = spaceship;
+
+ // Retrieve the spaceships panel
+ Transform spaceshipPanel = GameManager.Instance.transform.Find(string.Format("Interface/Canvas/Player {0}", spaceship.ID));
+
+ // Retrieve the standings
+ this.Standing = spaceshipPanel.Find("Panel/Standings/Value/Text").GetComponent();
+
+ // Retrieve the lap
+ this.Lap = spaceshipPanel.Find("Panel/Laps/Value/Text").GetComponent();
+ // Retrieve the lap time
+ this.LapTime = spaceshipPanel.Find("Panel/Lap Time/Value/Text").GetComponentInChildren();
+ // Retrieve the best lap time
+ this.BestLapTime = spaceshipPanel.Find("Panel/Best Lap Time/Value/Text").GetComponentInChildren();
+
+ // Retrieve the health bar
+ this.HealthBar = spaceshipPanel.Find("Panel/Health/Value/Image").GetComponentInChildren();
+ // Retrieve the health text
+ this.HealthText = spaceshipPanel.Find("Panel/Health/Value/Text").GetComponentInChildren();
+ // Retrieve the repair time
+ this.RepairTime = spaceshipPanel.Find("Panel/Repair Time/Value/Text").GetComponentInChildren();
+
+ // Retrieve the power-up icons
+ this.PowerUpIcons = new Image[]
+ {
+ spaceshipPanel.Find("PowerUps/HomingRocket/Icon").GetComponent(),
+ spaceshipPanel.Find("PowerUps/Smokescreen/Icon").GetComponent(),
+ spaceshipPanel.Find("PowerUps/Shield/Icon").GetComponent()
+ };
+ // Retrieve the power-up bars
+ this.PowerUpBars = new Image[]
+ {
+ spaceshipPanel.Find("PowerUps/HomingRocket/Image").GetComponent(),
+ spaceshipPanel.Find("PowerUps/Smokescreen/Image").GetComponent(),
+ spaceshipPanel.Find("PowerUps/Shield/Image").GetComponent()
+ };
+
+ // Retrieve the star dust
+ this.StarDust = spaceshipPanel.Find("Panel/Star Dust/Value/Text").GetComponentInChildren();
+ }
+
+ ///
+ /// Updates this instance.
+ ///
+ public void Update()
+ {
+ // Update the standing
+ switch (this.Spaceship.Record.CurrentStanding)
+ {
+ case 1:
+ this.Standing.text = "1st Place";
+ break;
+ case 2:
+ this.Standing.text = "2nd Place";
+ break;
+ case 3:
+ this.Standing.text = "3rd Place";
+ break;
+ case 4:
+ this.Standing.text = "4th Place";
+ break;
+ }
+
+ // Update the lap
+ this.Lap.text = string.Format("{0}/{1}", Mathf.Clamp(this.Spaceship.Record.CurrentLap + 1, 0, GameManager.Instance.LapTotal), GameManager.Instance.LapTotal);
+ // Update the lap time
+ TimeSpan lapTimeSpan = TimeSpan.FromSeconds(this.Spaceship.Record.CurrentLapTime);
+ this.LapTime.text = string.Format("{0:00}:{1:00}:{2:000}", lapTimeSpan.Minutes, lapTimeSpan.Seconds, lapTimeSpan.Milliseconds);
+ // Update the best lap time
+ TimeSpan bestLapTimeSpan = TimeSpan.FromSeconds(this.Spaceship.Record.BestLapTime);
+ this.BestLapTime.text = string.Format("{0:00}:{1:00}:{2:000}", bestLapTimeSpan.Minutes, bestLapTimeSpan.Seconds, bestLapTimeSpan.Milliseconds);
+
+ if (this.Spaceship.Health != 0.0f)
+ {
+ // Update the health bar
+ this.HealthBar.fillAmount = this.Spaceship.Health / this.Spaceship.MaximumHealth;
+ this.HealthText.text = string.Format("{0}/{1}", this.Spaceship.Health, this.Spaceship.MaximumHealth);
+
+ if (this.HealthBar.fillAmount > 0.5f)
+ this.HealthBar.color = Color.green * 0.75f;
+ else if (this.HealthBar.fillAmount > 0.25f)
+ this.HealthBar.color = Color.yellow * 0.75f;
+ else
+ this.HealthBar.color = Color.red * 0.75f;
+
+ // Enable the health bar
+ this.HealthBar.transform.parent.parent.gameObject.SetActive(true);
+ // Disable the repair time
+ this.RepairTime.transform.parent.parent.gameObject.SetActive(false);
+ }
+ else
+ {
+ // Update the repair time
+ TimeSpan repairTimeSpan = TimeSpan.FromSeconds(this.Spaceship.RepairTimer.Current);
+ this.RepairTime.text = string.Format("{0:00}:{1:00}:{2:000}", repairTimeSpan.Minutes, repairTimeSpan.Seconds, repairTimeSpan.Milliseconds);
+
+ // Enable the repair time
+ this.RepairTime.transform.parent.parent.gameObject.SetActive(true);
+ // Disable the health bar
+ this.HealthBar.transform.parent.parent.gameObject.SetActive(false);
+ }
+
+ // Update the homing-rocket power-up
+ IPowerUp homingRocket = this.Spaceship.PowerUpList.FirstOrDefault(powerUp => powerUp is HomingRocket);
+ UpdatePowerUp(homingRocket, this.PowerUpBars[0], this.PowerUpIcons[0]);
+ // Update the smokescreen power-up
+ IPowerUp smokescreen = this.Spaceship.PowerUpList.FirstOrDefault(powerUp => powerUp is Smokescreen);
+ UpdatePowerUp(smokescreen, this.PowerUpBars[1], this.PowerUpIcons[1]);
+ // Update the shield power-up
+ IPowerUp shield = this.Spaceship.PowerUpList.FirstOrDefault(powerUp => powerUp is Shield);
+ UpdatePowerUp(shield, this.PowerUpBars[2], this.PowerUpIcons[2]);
+
+ // Update the star dust
+ this.StarDust.text = string.Format("{0}", this.Spaceship.StarDust);
+ }
+
+ ///
+ /// Updates a power-ups icon and bar.
+ ///
+ ///
+ /// The power-up.
+ /// The power-up bar.
+ /// The power-up icon.
+ private void UpdatePowerUp(IPowerUp powerUp, Image powerUpBar, Image powerUpIcon)
+ {
+ if(powerUp != null)
+ {
+ Timer powerUpTimer = powerUp.PowerUpController != null ? powerUp.PowerUpController.DurationTimer : null;
+
+ if(powerUp.Active && powerUpTimer != null)
+ {
+ powerUpBar.fillAmount = powerUpTimer.Current / powerUpTimer.Maximum;
+ powerUpBar.color = new Color(0.75f, 0.0f, 0.0f, 1.0f);
+
+ powerUpBar.fillAmount = powerUpTimer.Current / powerUpTimer.Maximum;
+ powerUpIcon.color = new Color(0.75f, 0.0f, 0.0f, 1.0f);
+ }
+ else if(powerUp.Active == false)
+ {
+ powerUpBar.fillAmount = 1.0f;
+ powerUpBar.color = new Color(1.0f, 1.0f, 1.0f, 1.0f);
+
+ powerUpIcon.fillAmount = 1.0f;
+ powerUpIcon.color = new Color(1.0f, 1.0f, 1.0f, 1.0f);
+ }
+ }
+ else
+ {
+ powerUpBar.fillAmount = 1.0f;
+ powerUpBar.color = new Color(0.0f, 0.0f, 0.0f, 1.0f);
+
+ powerUpIcon.fillAmount = 1.0f;
+ powerUpIcon.color = new Color(0.0f, 0.0f, 0.0f, 1.0f);
+ }
+ }
+ #endregion
+ }
+ #endregion
+
+ #region [Attributes]
+ ///
+ /// The return to main menu pop up.
+ ///
+ private GameObject ReturnToMainMenuPopUp;
+ ///
+ /// The players interface controllers.
+ ///
+ private PlayerInterfaceController[] PlayerInterfaces;
+ #endregion
+
+ #region [Methods]
+ ///
+ public void ObjectCreate()
+ {
+ // Create the player interfaces
+ this.PlayerInterfaces = new PlayerInterfaceController[GameManager.Instance.SpaceshipList.Count];
+
+ // Initialize the player interfaces
+ foreach(SpaceshipController spaceship in GameManager.Instance.SpaceshipList)
+ this.PlayerInterfaces[spaceship.ID - 1] = new PlayerInterfaceController(spaceship);
+
+ // Initialize the pop-up
+ this.ReturnToMainMenuPopUp = this.transform.Find("MenuPopUp").gameObject;
+ this.ReturnToMainMenuPopUp.SetActive(false);
+
+ Button yesButton = this.ReturnToMainMenuPopUp.transform.Find("Yes").GetComponent