diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..69f5a4a --- /dev/null +++ b/.gitignore @@ -0,0 +1,33 @@ +/[Ll]ibrary/ +/[Tt]emp/ +/[Oo]bj/ +/[Bb]uild/ +/[Bb]uilds/ +/Assets/AssetStoreTools* + +# Autogenerated VS/MD solution and project files +ExportedObj/ +*.unityproj +*.sln +*.suo +*.tmp +*.user +*.userprefs +*.pidb +*.booproj +*.svd +*.mdb +.idea* + + +# Unity3D generated meta files +*.pidb.meta + +# Unity3D Generated File On Crash Reports +sysinfo.txt + +*.csproj +/Assets/Generated.meta +Assets/Generated +Gen + diff --git a/Assets/Editor.meta b/Assets/Editor.meta new file mode 100644 index 0000000..fb12a58 --- /dev/null +++ b/Assets/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a8646f85a27efd24fa477f5f0e3b1b32 +folderAsset: yes +timeCreated: 1463088726 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Resources.meta b/Assets/Editor/Resources.meta new file mode 100644 index 0000000..6ef3c8d --- /dev/null +++ b/Assets/Editor/Resources.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7921fed9684389f44a04e5290c84c275 +folderAsset: yes +timeCreated: 1468769374 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Resources/ModConfig.asset b/Assets/Editor/Resources/ModConfig.asset new file mode 100644 index 0000000..17d270f --- /dev/null +++ b/Assets/Editor/Resources/ModConfig.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 615501dbe4f3fe94fbf4b564abb10237, type: 3} + m_Name: ModConfig + m_EditorClassIdentifier: + id: mathishard + title: Math Is Hard + version: 1 + outputFolder: build diff --git a/Assets/Editor/Resources/ModConfig.asset.meta b/Assets/Editor/Resources/ModConfig.asset.meta new file mode 100644 index 0000000..43ebe94 --- /dev/null +++ b/Assets/Editor/Resources/ModConfig.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 70a4b56b6fe140a4a9f49b55ff20eca3 +timeCreated: 1468769375 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Scripts.meta b/Assets/Editor/Scripts.meta new file mode 100644 index 0000000..838b9db --- /dev/null +++ b/Assets/Editor/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d8883a6d547836a41a6e19afb9e38ca1 +folderAsset: yes +timeCreated: 1463088735 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Scripts/AssetBundler.cs b/Assets/Editor/Scripts/AssetBundler.cs new file mode 100644 index 0000000..2d75d72 --- /dev/null +++ b/Assets/Editor/Scripts/AssetBundler.cs @@ -0,0 +1,431 @@ +using UnityEngine; +using System.Collections.Generic; +using System.IO; +using UnityEditor; +using System.Linq; +using System; +using System.Reflection; + +/// +/// +/// The AssetBundler does several useful things when preparing your mod: +/// +/// 1. Modifies all non-Editor MonoScript files to reference ASSEMBLY_NAME rather than Assembly-CSharp. +/// - At runtime in the game, this new assembly will be used to resolve the script references. +/// 2. Builds your project as ASSEMBLY_NAME.dll rather than Assembly-CSharp.dll. +/// - Having a name distinct from "Assembly-CSharp.dll" is required in order to load the mod in the game. +/// 3. Copies any managed assemblies from Assets/Plugins to the output folder for inclusion alongside your bundle. +/// 4. Builds the AssetBundle and copies the relevant .bundle file to the final output folder. +/// 5. Restores MonoScript references to Assembly-CSharp so they can be found by the Unity Editor again. +/// +/// +public class AssetBundler +{ + /// + /// Temporary location for building AssetBundles + /// + static string TEMP_BUILD_FOLDER = "Temp/AssetBundles"; + + /// + /// List of managed assemblies to ignore in the build (because they already exist in KTaNE itself) + /// + static List EXCLUDED_ASSEMBLIES = new List { "KMFramework.dll" }; + + /// + /// Location of MSBuild.exe tool + /// + static string MSBUILD_PATH = "C:\\Program Files (x86)\\MSBuild\\14.0\\Bin\\MSBuild.exe"; + + /// + /// Name of the bundle file produced. This relies on the AssetBundle tag used, which is set to mod.bundle by default. + /// + static string BUNDLE_FILENAME = "mod.bundle"; + + + #region Internal bundler Variables + /// + /// The name of the mod's main assembly + /// + private string assemblyName; + + /// + /// Output folder for the final asset bundle file + /// + private string outputFolder; + + /// + /// List of MonoScripts modified during the bundling process that need to be restored after. + /// + private List scriptPathsToRestore = new List(); + #endregion + + [MenuItem("Keep Talking ModKit/Build AssetBundle", priority = 10)] + public static void BuildAllAssetBundles_WithEditorUtility() + { + BuildModBundle(false); + } + + [MenuItem("Keep Talking ModKit/Build AssetBundle (with MSBuild)", priority = 11)] + public static void BuildAllAssetBundles_MSBuild() + { + BuildModBundle(true); + } + + protected static void BuildModBundle(bool useMSBuild) + { + Debug.LogFormat("Creating \"{0}\" AssetBundle...", BUNDLE_FILENAME); + + if (ModConfig.Instance == null + || ModConfig.ID == "" + || ModConfig.OutputFolder == "") + { + Debug.LogError("You must configure your mod from the \"Keep Talking ModKit / Configure Mod\" menu first."); + return; + } + + AssetBundler bundler = new AssetBundler(); + + bundler.assemblyName = ModConfig.ID; + bundler.outputFolder = ModConfig.OutputFolder + "/" + bundler.assemblyName; + + bool success = false; + + try + { + bundler.WarnIfExampleAssetsAreIncluded(); + bundler.WarnIfAssetsAreNotTagged(); + bundler.CheckForAssets(); + + //Delete the cotnents of OUTPUT_FOLDER + bundler.CleanBuildFolder(); + + //Change all non-Editor scripts to reference ASSEMBLY_NAME instead of Assembly-CSharp + bundler.AdjustMonoScripts(); + + //Build the assembly using either MSBuild or Unity EditorUtility methods + if (useMSBuild) + { + bundler.CompileAssemblyWithMSBuild(); + } + else + { + bundler.CompileAssemblyWithEditor(); + } + + //Copy any other non-Editor managed assemblies to the output folder + bundler.CopyManagedAssemblies(); + + //Create the modInfo.json file + bundler.CreateModInfo(); + + //Lastly, create the asset bundle itself and copy it to the output folder + bundler.CreateAssetBundle(); + + success = true; + } + catch (Exception e) + { + Debug.LogErrorFormat("Failed to build AssetBundle: {0}\n{1}", e.Message, e.StackTrace); + } + finally + { + //Restore script references to Assembly-CSharp, as expected by the Unity Editor + bundler.RestoreMonoScripts(); + } + + if (success) + { + Debug.LogFormat("Build complete! Output: {0}", bundler.outputFolder); + } + } + + /// + /// Delete and recreate the OUTPUT_FOLDER to ensure a clean build. + /// + protected void CleanBuildFolder() + { + Debug.LogFormat("Cleaning {0}...", outputFolder); + + if (Directory.Exists(outputFolder)) + { + Directory.Delete(outputFolder, true); + } + + Directory.CreateDirectory(outputFolder); + } + + /// + /// Build the ASSEMBLY_NAME.dll from the project's scripts using MSBuild. + /// + void CompileAssemblyWithMSBuild() + { + Debug.Log("Compiling scripts with MSBuild..."); + + IEnumerable scriptAssetPaths = AssetDatabase.GetAllAssetPaths().Where(assetPath => assetPath.EndsWith(".cs") && !assetPath.StartsWith("Assets/Editor")); + + if (scriptAssetPaths.Count() == 0) + { + Debug.LogFormat("No scripts found to compile."); + return; + } + + if (!File.Exists(MSBUILD_PATH)) + { + throw new Exception("MSBUILD_PATH not set to your MSBuild.exe"); + } + + //modify the csproj (if needed) + var csproj = File.ReadAllText("ktanemods.CSharp.csproj"); + csproj = csproj.Replace("Assembly-CSharp", ""+ assemblyName + ""); + File.WriteAllText("modkithelper.CSharp.csproj", csproj); + + string path = "modkithelper.CSharp.csproj"; + System.Diagnostics.Process p = new System.Diagnostics.Process(); + p.StartInfo.FileName = MSBUILD_PATH; + p.StartInfo.Arguments = path + " /p:Configuration=Release"; + p.StartInfo.UseShellExecute = false; + p.StartInfo.RedirectStandardOutput = false; + p.StartInfo.RedirectStandardError = false; + p.StartInfo.CreateNoWindow = true; + p.Start(); + p.WaitForExit(); + + string source = string.Format("Temp/UnityVS_bin/Release/{0}.dll", assemblyName); + string dest = Path.Combine(outputFolder, assemblyName + ".dll"); + File.Copy(source, dest); + } + + /// + /// Build the ASSEMBLY_NAME.dll from the project's scripts using EditorUtility.CompileCSharp(). + /// + void CompileAssemblyWithEditor() + { + Debug.Log("Compiling scripts with EditorUtility.CompileCSharp..."); + IEnumerable scriptAssetPaths = AssetDatabase.GetAllAssetPaths().Where(assetPath => assetPath.EndsWith(".cs") && !assetPath.StartsWith("Assets/Editor")); + + if (scriptAssetPaths.Count() == 0) + { + Debug.LogFormat("No scripts found to compile."); + return; + } + + string playerDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone); + + if (playerDefines.Length > 0 && !playerDefines.EndsWith(";")) + { + playerDefines += ";"; + } + + string allDefines = playerDefines + "TRACE;UNITY_5_3_OR_NEWER;UNITY_5_3_5;UNITY_5_3;UNITY_5;UNITY_64;ENABLE_NEW_BUGREPORTER;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_FRAME_DEBUGGER;ENABLE_GENERICS;ENABLE_HOME_SCREEN;ENABLE_IMAGEEFFECTS;ENABLE_LIGHT_PROBES_LEGACY;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_PLUGIN_INSPECTOR;ENABLE_SHADOWS;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_SPRITE_POLYGON;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;ENABLE_EDITOR_TESTS_RUNNER;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_TEXTUREID_MAP;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_LOG_MIXED_STACKTRACE;ENABLE_UNITYWEBREQUEST;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN"; + string outputFilename = outputFolder + "/" + assemblyName + ".dll"; + + List managedReferences = AssetDatabase.GetAllAssetPaths() + .Where(path => path.EndsWith(".dll") && path.StartsWith("Assets/Plugins/Managed")) + .Select(path => "Assets/Plugins/Managed/" + Path.GetFileNameWithoutExtension(path)) + .ToList(); + + managedReferences.Add("Library/UnityAssemblies/UnityEngine"); + + var compilerOutput = EditorUtility.CompileCSharp( + scriptAssetPaths.ToArray(), + managedReferences.ToArray(), + allDefines.Split(';'), + outputFilename); + + foreach (var log in compilerOutput) + { + Debug.LogFormat("Compiler: {0}", log); + } + + if (!File.Exists(outputFilename)) + { + throw new Exception("Compilation failed!"); + } + + //Remove unwanted .mdb file + File.Delete(Path.Combine(outputFolder, assemblyName + ".dll.mdb")); + + Debug.Log("Script compilation complete."); + } + + /// + /// Change all non-Editor MonoScripts to reference the ASSEMBLY_NAME assembly, rather than the default Assembly-CSharp. + /// + protected void AdjustMonoScripts() + { + Debug.Log("Adjusting scripts..."); + + IEnumerable assetFolderPaths = AssetDatabase.GetAllAssetPaths().Where(path => path.EndsWith(".cs") && !path.StartsWith("Assets/Editor")); + + scriptPathsToRestore = new List(); + + foreach (var path in assetFolderPaths) + { + MonoScript script = AssetDatabase.LoadAssetAtPath(path); + + if (script != null) + { + scriptPathsToRestore.Add(path); + ChangeMonoScriptAssembly(script, assemblyName); + } + } + } + + /// + /// Restore the MonoScript references to point to Assembly-CSharp, which is expected by the Unity Editor. + /// + protected void RestoreMonoScripts() + { + Debug.Log("Restoring scripts..."); + + foreach (var path in scriptPathsToRestore) + { + MonoScript script = AssetDatabase.LoadAssetAtPath(path); + + if (script != null) + { + RestoreMonoScriptAssembly(script); + AssetDatabase.ImportAsset(path, ImportAssetOptions.ForceUpdate); + } + } + } + + /// + /// Make use of internal Unity functionality to change which assembly a MonoScript points to. + /// + /// We change this to allow Unity to reconnect references to the script when loaded into KTaNE. Normally, a MonoScript + /// points to the Assembly-CSharp.dll assembly. Because we are forced to build the mod assembly with a different name, + /// Unity would not normally be able to reconnect the script. Here we can change the assembly name a MonoScript points to + /// and resolve the problem. + /// + /// WARNING! The Unity Editor expects MonoScripts to resolve to the Assembly-CSharp assembly, so you MUST change it back + /// or else the editor will lose the script reference (and you'll be forced to delete your Library to recover). + /// + /// + /// + protected void ChangeMonoScriptAssembly(MonoScript script, string assemblyName) + { + //MonoScript + //internal extern void Init(string scriptContents, string className, string nameSpace, string assemblyName, bool isEditorScript); + MethodInfo dynMethod = script.GetType().GetMethod("Init", BindingFlags.NonPublic | BindingFlags.Instance); + dynMethod.Invoke(script, new object[] { script.text, script.name, "", assemblyName, false }); + Debug.LogFormat("Changed {0} assembly to {1}", script.name, assemblyName); + } + + protected void RestoreMonoScriptAssembly(MonoScript script) + { + ChangeMonoScriptAssembly(script, "Assembly-CSharp"); + } + + /// + /// Copy all managed non-Editor assemblies to the OUTPUT_FOLDER for inclusion alongside the mod bundle. + /// + protected void CopyManagedAssemblies() + { + IEnumerable assetPaths = AssetDatabase.GetAllAssetPaths().Where(path => path.EndsWith(".dll") && path.StartsWith("Assets/Plugins")); + + //Now find any other managed plugins that should be included, other than the EXCLUDED_ASSEMBLIES list + foreach (string assetPath in assetPaths) + { + var pluginImporter = AssetImporter.GetAtPath(assetPath) as PluginImporter; + + if (pluginImporter != null && !pluginImporter.isNativePlugin && pluginImporter.GetCompatibleWithAnyPlatform()) + { + string assetName = Path.GetFileName(assetPath); + if (!EXCLUDED_ASSEMBLIES.Contains(assetName)) + { + string dest = Path.Combine(outputFolder, Path.GetFileName(assetPath)); + + Debug.LogFormat("Copying {0} to {1}", assetPath, dest); + + File.Copy(assetPath, dest); + } + } + } + } + + /// + /// Build the AssetBundle itself and copy it to the OUTPUT_FOLDER. + /// + protected void CreateAssetBundle() + { + Debug.Log("Building AssetBundle..."); + + //Build all AssetBundles to the TEMP_BUILD_FOLDER + if (!Directory.Exists(TEMP_BUILD_FOLDER)) + { + Directory.CreateDirectory(TEMP_BUILD_FOLDER); + } + + BuildPipeline.BuildAssetBundles(TEMP_BUILD_FOLDER, BuildAssetBundleOptions.DeterministicAssetBundle, BuildTarget.StandaloneWindows); + + //We are only interested in the BUNDLE_FILENAME bundle (and not the extra AssetBundle or the manifest files + //that Unity makes), so just copy that to the final output folder + string srcPath = Path.Combine(TEMP_BUILD_FOLDER, BUNDLE_FILENAME); + string destPath = Path.Combine(outputFolder, BUNDLE_FILENAME); + File.Copy(srcPath, destPath, true); + } + + /// + /// Creates a modInfo.json file and puts it in the OUTPUT_FOLDER. + /// + protected void CreateModInfo() + { + File.WriteAllText(outputFolder + "/modInfo.json", ModConfig.Instance.ToJson()); + } + + /// + /// All assets tagged with "mod.bundle" will be included in the build, including the Example assets. Print out a + /// warning to notify mod authors that they may wish to delete the examples. + /// + protected void WarnIfExampleAssetsAreIncluded() + { + string examplesFolder = "Assets/Examples"; + + if (Directory.Exists(examplesFolder)) + { + int numAssetsInBundle = AssetDatabase.FindAssets("b:" + BUNDLE_FILENAME).Length; + int numExampleAssetsInBundle = AssetDatabase.FindAssets("b:" + BUNDLE_FILENAME, new string[] { examplesFolder }).Length; + + if ((numExampleAssetsInBundle > 0) && (numAssetsInBundle > numExampleAssetsInBundle)) + { + Debug.LogWarningFormat("AssetBundle includes {0} assets under Examples/ tagged with \"mod.bundle\". These will be included in you bundle unless you untag or delete them.", numExampleAssetsInBundle); + } + } + } + + /// + /// Print a warning for all non-Example assets that are not currently tagged to be in this AssetBundle. + /// + protected void WarnIfAssetsAreNotTagged() + { + string[] assetGUIDs = AssetDatabase.FindAssets("t:prefab,t:audioclip"); + + foreach (var assetGUID in assetGUIDs) + { + string path = AssetDatabase.GUIDToAssetPath(assetGUID); + + if (!path.StartsWith("Assets/Examples")) + { + var importer = AssetImporter.GetAtPath(path); + if (!importer.assetBundleName.Equals(BUNDLE_FILENAME)) + { + Debug.LogWarningFormat("Asset \"{0}\" is not tagged for {1} and will not be included in the AssetBundle!", path, BUNDLE_FILENAME); + } + } + } + + } + + /// + /// Verify that there is at least one thing to be included in the asset bundle. + /// + protected void CheckForAssets() + { + string[] assetsInBundle = AssetDatabase.FindAssets(string.Format("t:prefab,t:audioclip,b:", BUNDLE_FILENAME)); + if (assetsInBundle.Length == 0) + { + throw new Exception(string.Format("No assets have been tagged for inclusion in the {0} AssetBundle.", BUNDLE_FILENAME)); + } + } +} diff --git a/Assets/Editor/Scripts/AssetBundler.cs.meta b/Assets/Editor/Scripts/AssetBundler.cs.meta new file mode 100644 index 0000000..572ffee --- /dev/null +++ b/Assets/Editor/Scripts/AssetBundler.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fcfdc1272d406a94c8a13fbcee275a34 +timeCreated: 1462567622 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Scripts/ModConfig.cs b/Assets/Editor/Scripts/ModConfig.cs new file mode 100644 index 0000000..1f04770 --- /dev/null +++ b/Assets/Editor/Scripts/ModConfig.cs @@ -0,0 +1,72 @@ +using UnityEngine; +using System.Collections; +using Newtonsoft.Json; +using System.Collections.Generic; + +#if UNITY_EDITOR +[UnityEditor.InitializeOnLoad] +#endif +public sealed class ModConfig : ScriptableObject +{ + public static string ID + { + get { return Instance.id; } + set { Instance.id = value; } + } + + public static string Title + { + get { return Instance.title; } + set { Instance.title = value; } + } + + public static string Version + { + get { return Instance.version; } + set { Instance.version = value; } + } + + public static string OutputFolder + { + get { return Instance.outputFolder; } + set { Instance.outputFolder = value; } + } + + [SerializeField] + private string id = ""; + [SerializeField] + private string title = ""; + [SerializeField] + private string version = ""; + [SerializeField] + private string outputFolder = "build"; + + + private static ModConfig instance; + public static ModConfig Instance + { + get + { + if (instance == null) + { + instance = Resources.Load("ModConfig"); + } + return instance; + } + + set + { + instance = value; + } + } + + public string ToJson() + { + Dictionary dict = new Dictionary(); + dict.Add("id", id); + dict.Add("title", title); + dict.Add("version", version); + + return JsonConvert.SerializeObject(dict); ; + } +} \ No newline at end of file diff --git a/Assets/Editor/Scripts/ModConfig.cs.meta b/Assets/Editor/Scripts/ModConfig.cs.meta new file mode 100644 index 0000000..c38d10d --- /dev/null +++ b/Assets/Editor/Scripts/ModConfig.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 615501dbe4f3fe94fbf4b564abb10237 +timeCreated: 1465935056 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Scripts/ModKitSettingsEditor.cs b/Assets/Editor/Scripts/ModKitSettingsEditor.cs new file mode 100644 index 0000000..c71e202 --- /dev/null +++ b/Assets/Editor/Scripts/ModKitSettingsEditor.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using UnityEditor; +using UnityEngine; + +[CustomEditor(typeof(ModConfig))] +public class ModKitSettingsEditor : Editor +{ + [MenuItem("Keep Talking ModKit/Configure Mod", priority = 1)] + public static void ConfigureMod() + { + var modConfig = ModConfig.Instance; + if (modConfig == null) + { + modConfig = ScriptableObject.CreateInstance(); + string properPath = Path.Combine(Path.Combine(Application.dataPath, "Editor"), "Resources"); + if (!Directory.Exists(properPath)) + { + AssetDatabase.CreateFolder("Assets/Editor", "Resources"); + } + + string fullPath = Path.Combine( + Path.Combine("Assets", "Editor"), + Path.Combine("Resources", "ModConfig.asset") + ); + AssetDatabase.CreateAsset(modConfig, fullPath); + ModConfig.Instance = modConfig; + } + UnityEditor.Selection.activeObject = modConfig; + } + + public override void OnInspectorGUI() + { + EditorGUILayout.Separator(); + EditorGUILayout.BeginHorizontal(); + + GUIContent idLabel = new GUIContent("Mod ID", "Identifier for the mod. Affects assembly name and output name."); + GUI.changed = false; + ModConfig.ID = EditorGUILayout.TextField(idLabel, ModConfig.ID); + SetDirtyOnGUIChange(); + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.Separator(); + EditorGUILayout.BeginHorizontal(); + GUIContent titleLabel = new GUIContent("Mod Title", "Name of the mod as it appears in game."); + GUI.changed = false; + ModConfig.Title = EditorGUILayout.TextField(titleLabel, ModConfig.Title); + SetDirtyOnGUIChange(); + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.Separator(); + EditorGUILayout.BeginHorizontal(); + GUIContent versionLabel = new GUIContent("Mod Version", "Current version of the mod."); + GUI.changed = false; + ModConfig.Version = EditorGUILayout.TextField(versionLabel, ModConfig.Version); + SetDirtyOnGUIChange(); + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.Separator(); + EditorGUILayout.BeginHorizontal(); + GUIContent outputFolderLabel = new GUIContent("Mod Output Folder", "Folder relative to the project where the built mod bundle will be placed."); + GUI.changed = false; + ModConfig.OutputFolder = EditorGUILayout.TextField(outputFolderLabel, ModConfig.OutputFolder); + SetDirtyOnGUIChange(); + EditorGUILayout.EndHorizontal(); + EditorGUILayout.HelpBox("This folder will be cleaned with each build.", MessageType.Warning); + + GUI.enabled = true; + } + + private void SetDirtyOnGUIChange() + { + if (GUI.changed) + { + EditorUtility.SetDirty(ModConfig.Instance); + GUI.changed = false; + } + } +} diff --git a/Assets/Editor/Scripts/ModKitSettingsEditor.cs.meta b/Assets/Editor/Scripts/ModKitSettingsEditor.cs.meta new file mode 100644 index 0000000..b80b039 --- /dev/null +++ b/Assets/Editor/Scripts/ModKitSettingsEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8afcbda70aa6d484c875bff8902034d6 +timeCreated: 1465935000 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Scripts/WorkshopEditorWindow.cs b/Assets/Editor/Scripts/WorkshopEditorWindow.cs new file mode 100644 index 0000000..ab027bc --- /dev/null +++ b/Assets/Editor/Scripts/WorkshopEditorWindow.cs @@ -0,0 +1,361 @@ +using UnityEditor; +using Steamworks; +using UnityEngine; +using System.IO; +using System.Linq; +using System.Collections.Generic; + +public class WorkshopEditorWindow : EditorWindow +{ + protected static readonly AppId_t KTANE_APP_ID = new AppId_t(341800); + protected static readonly AppId_t EDITOR_APP_ID = new AppId_t(341800); //For now, the same AppID + + protected bool isInitialized; + protected string userName; + + protected WorkshopItem currentWorkshopItem; + protected WorkshopItemEditor workshopItemEditor; + protected string changeNotes; + + protected CallResult onCreateItemCallResultHandler; + protected CallResult onItemUpdateCallResultHandler; + + protected UGCUpdateHandle_t ugcUpdateHandle = UGCUpdateHandle_t.Invalid; + protected string ugcUpdateStatus; + protected string lastUpdateStatus; + protected ulong bytesProcessed; + protected ulong bytesTotal; + + private SteamAPIWarningMessageHook_t m_SteamAPIWarningMessageHook; + private static void SteamAPIDebugTextHook(int nSeverity, System.Text.StringBuilder pchDebugText) + { + Debug.LogWarning(pchDebugText); + } + + [MenuItem("Keep Talking ModKit/Steam Workshop Tool", priority = 20)] + protected static void ShowWindow() + { + WorkshopEditorWindow window = EditorWindow.GetWindow("Workshop"); + window.Show(); + } + + protected void OnGUI() + { + if (!SteamAPI.IsSteamRunning()) + { + EditorGUILayout.HelpBox("Steam is not running. Please start Steam to continue.", MessageType.Error); + } + else if (ModConfig.Instance == null || string.IsNullOrEmpty(ModConfig.ID)) + { + EditorGUILayout.HelpBox("You must configure your ModConfig using \"Keep Talking Mod Kit -> Configure Mod\".", MessageType.Error); + } + else if (!isInitialized) + { + EditorGUILayout.HelpBox("You must log in to Steam to continue.", MessageType.Error); + } + else + { + if (currentWorkshopItem == null) + { + string workshopItemAssetPath = "Assets/Editor/Resources/WorkshopItem.asset"; + + currentWorkshopItem = AssetDatabase.LoadAssetAtPath(workshopItemAssetPath); + + if (currentWorkshopItem == null) + { + currentWorkshopItem = ScriptableObject.CreateInstance(); + + if (ModConfig.Instance != null) + { + currentWorkshopItem.Title = ModConfig.Title; + } + + AssetDatabase.CreateAsset(currentWorkshopItem, workshopItemAssetPath); + } + + if (workshopItemEditor != null && workshopItemEditor.target != currentWorkshopItem) + { + DestroyImmediate(workshopItemEditor); + workshopItemEditor = null; + } + + if (workshopItemEditor == null) + { + workshopItemEditor = (WorkshopItemEditor) Editor.CreateEditor(currentWorkshopItem, typeof(WorkshopItemEditor)); + } + } + + workshopItemEditor.OnInspectorGUI(); + + //Publishing Tools + EditorGUILayout.Separator(); + Color oldBGColor = GUI.backgroundColor; + GUI.backgroundColor = new Color(0.1f, 0.1f, 0.5f, 0.7f); + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + GUI.backgroundColor = oldBGColor; + + EditorGUILayout.LabelField("Publishing Tools", EditorStyles.largeLabel); + EditorGUILayout.Separator(); + EditorGUILayout.LabelField("User:", userName); + EditorGUILayout.LabelField("Content Folder:", GetContentPath()); + + DirectoryInfo dir = new DirectoryInfo(GetContentPath()); + + if (dir.Exists) + { + FileInfo[] files = dir.GetFiles(); + long totalSize = 0; + foreach (var file in files) + { + totalSize += file.Length; + } + + EditorGUILayout.LabelField("File Count:", files.Length.ToString()); + EditorGUILayout.LabelField("Total Size:", FormatFileSize(totalSize)); + } + else + { + EditorGUILayout.HelpBox("Content folder not found", MessageType.Error); + } + + string[] tags = GetTags(); + if (tags == null) + { + EditorGUILayout.LabelField("Tags [0]: (none set)"); + } + else + { + EditorGUILayout.LabelField(string.Format("Tags [{0}]: {1}", tags == null ? "0" : tags.Length.ToString(), string.Join(", ", tags))); + } + + //Change Notes + EditorGUILayout.PrefixLabel("Change Notes:"); + changeNotes = EditorGUILayout.TextArea(changeNotes, GUILayout.MinHeight(64)); + + if (string.IsNullOrEmpty(changeNotes)) + { + EditorGUILayout.HelpBox("Change notes must be entered before publishing to Workshop", MessageType.Warning); + } + + + //Publishing changes + if (currentWorkshopItem.WorkshopPublishedFileID == 0) + { + //Create and Publish + GUI.enabled = (onCreateItemCallResultHandler != null && !onCreateItemCallResultHandler.IsActive() && !string.IsNullOrEmpty(changeNotes)); + if (GUILayout.Button("Create New Workshop Item and Publish to Steam")) + { + Debug.Log("CreateItem"); + var createItemCall = SteamUGC.CreateItem(KTANE_APP_ID, EWorkshopFileType.k_EWorkshopFileTypeCommunity); + onCreateItemCallResultHandler.Set(createItemCall); + } + GUI.enabled = true; + } + else + { + //Publish to Existing Item + GUI.enabled = (onItemUpdateCallResultHandler != null && !onItemUpdateCallResultHandler.IsActive() && !string.IsNullOrEmpty(changeNotes)); + if (GUILayout.Button("Publish Changes to Steam")) + { + PublishWorkshopChanges(); + } + + if (!string.IsNullOrEmpty(ugcUpdateStatus)) + { + EditorGUILayout.LabelField(ugcUpdateStatus); + } + + GUI.enabled = true; + } + EditorGUILayout.EndVertical(); + } + } + + protected string GetContentPath() + { + return Path.GetFullPath(ModConfig.OutputFolder + "/" + ModConfig.ID); + } + + protected string[] GetTags() + { + if (currentWorkshopItem == null || currentWorkshopItem.Tags == null) + { + return null; + } + else + { + var nonEmptyTags = currentWorkshopItem.Tags.Select(t => t.Trim()).Where(t => !string.IsNullOrEmpty(t)); + + return nonEmptyTags.ToArray(); + } + } + + protected void PublishWorkshopChanges() + { + Debug.LogFormat("SubmitItemUpdate for File ID {0}", currentWorkshopItem.WorkshopPublishedFileID); + ugcUpdateHandle = SteamUGC.StartItemUpdate(KTANE_APP_ID, new PublishedFileId_t(currentWorkshopItem.WorkshopPublishedFileID)); + + SteamUGC.SetItemTitle(ugcUpdateHandle, currentWorkshopItem.Title); + SteamUGC.SetItemDescription(ugcUpdateHandle, currentWorkshopItem.Description); + + string[] tags = GetTags(); + if (tags != null && tags.Length > 0) + { + SteamUGC.SetItemTags(ugcUpdateHandle, GetTags()); + } + + if (currentWorkshopItem.PreviewImage != null) + { + string previewImagePath = AssetDatabase.GetAssetPath(currentWorkshopItem.PreviewImage); + previewImagePath = Path.GetFullPath(previewImagePath); + Debug.LogFormat("Setting preview image path to: {0}", previewImagePath); + SteamUGC.SetItemPreview(ugcUpdateHandle, previewImagePath); + } + + //Currently just uploads whatever is in the mod's build directory + string folder = GetContentPath(); + Debug.LogFormat("Uploading contents of {0}", folder); + SteamUGC.SetItemContent(ugcUpdateHandle, folder); + + var updateUGCCall = SteamUGC.SubmitItemUpdate(ugcUpdateHandle, changeNotes); + onItemUpdateCallResultHandler.Set(updateUGCCall); + } + + public void OnEnable() + { + Initialize(); + } + + public void OnDisable() + { + if (isInitialized) + { + SteamAPI.Shutdown(); + } + } + + protected void Initialize() + { + if (!isInitialized) + { + isInitialized = SteamAPI.Init(); + + if (isInitialized) + { + userName = SteamFriends.GetPersonaName(); + + onCreateItemCallResultHandler = CallResult.Create(OnCreateItem); + onItemUpdateCallResultHandler = CallResult.Create(OnSubmitItemUpdate); + + if (m_SteamAPIWarningMessageHook == null) + { + m_SteamAPIWarningMessageHook = new SteamAPIWarningMessageHook_t(SteamAPIDebugTextHook); + SteamClient.SetWarningMessageHook(m_SteamAPIWarningMessageHook); + } + } + } + } + + [ExecuteInEditMode()] + protected void Update() + { + if (isInitialized) + { + SteamAPI.RunCallbacks(); + + //Update the status of an in-progress UGCUpdate + if (ugcUpdateHandle != UGCUpdateHandle_t.Invalid) + { + ulong tempBytesProcessed; + ulong tempBytesTotal; + var itemStatus = SteamUGC.GetItemUpdateProgress(ugcUpdateHandle, out tempBytesProcessed, out tempBytesTotal); + + if (tempBytesProcessed != 0) + { + bytesProcessed = tempBytesProcessed; + } + if (tempBytesTotal != 0) + { + bytesTotal = tempBytesTotal; + } + + if (tempBytesTotal != 0) + { + ugcUpdateStatus = string.Format("Upload Status: {0} ({1} / {2} bytes)", + itemStatus, + bytesProcessed, + bytesTotal); + } + else + { + ugcUpdateStatus = string.Format("Upload Status: {0}", itemStatus); + } + + //Log to console, sparingly + if (ugcUpdateStatus != lastUpdateStatus) + { + Debug.Log(ugcUpdateStatus); + lastUpdateStatus = ugcUpdateStatus; + } + + Repaint(); + } + } + } + + protected void OnCreateItem(CreateItemResult_t result, bool failed) + { + if (result.m_eResult == EResult.k_EResultOK) + { + Debug.LogFormat("OnCreateItem complete: {0}", result.m_eResult); + } + else + { + Debug.LogErrorFormat("OnCreateItem complete: {0}", result.m_eResult); + } + + if (result.m_bUserNeedsToAcceptWorkshopLegalAgreement) + { + Debug.LogError("You must accept the Workshop Legal Agreement before continuing."); + } + + if (result.m_eResult == EResult.k_EResultOK) + { + currentWorkshopItem.WorkshopPublishedFileID = result.m_nPublishedFileId.m_PublishedFileId; + PublishWorkshopChanges(); + } + } + + protected void OnSubmitItemUpdate(SubmitItemUpdateResult_t result, bool failed) + { + if (result.m_eResult == EResult.k_EResultOK) + { + Debug.LogFormat("OnSubmitItemUpdate complete: {0}", result.m_eResult); + } + else + { + Debug.LogErrorFormat("OnSubmitItemUpdate complete: {0}", result.m_eResult); + } + + ugcUpdateHandle = UGCUpdateHandle_t.Invalid; + ugcUpdateStatus = string.Format("Upload Status: {0} ({1})", result.m_eResult, System.DateTime.Now.ToShortTimeString()); + Repaint(); + } + + public static string FormatFileSize(long fileSize) + { + if (fileSize <= 0) + { + return "0"; + } + else + { + string[] sizes = { "B", "KB", "MB", "GB" }; + int order = (int)Mathf.Log(fileSize, 1024); + order = Mathf.Clamp(order, 0, sizes.Length); + float value = fileSize / Mathf.Pow(1024, order); + + return string.Format("{0:0.##} {1}", value, sizes[order]); + } + } +} diff --git a/Assets/Editor/Scripts/WorkshopEditorWindow.cs.meta b/Assets/Editor/Scripts/WorkshopEditorWindow.cs.meta new file mode 100644 index 0000000..e4b6971 --- /dev/null +++ b/Assets/Editor/Scripts/WorkshopEditorWindow.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b53393038c1f8b54aa78c895f3420dca +timeCreated: 1466476353 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Scripts/WorkshopItem.cs b/Assets/Editor/Scripts/WorkshopItem.cs new file mode 100644 index 0000000..19b9266 --- /dev/null +++ b/Assets/Editor/Scripts/WorkshopItem.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; +using UnityEngine; + +public class WorkshopItem : ScriptableObject +{ + public ulong WorkshopPublishedFileID; + public string Title; + + [TextArea(5, 10)] + public string Description; + + public Texture2D PreviewImage; + public List Tags; +} diff --git a/Assets/Editor/Scripts/WorkshopItem.cs.meta b/Assets/Editor/Scripts/WorkshopItem.cs.meta new file mode 100644 index 0000000..8424822 --- /dev/null +++ b/Assets/Editor/Scripts/WorkshopItem.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5cf2299c8864afe4ab42466f546ae20d +timeCreated: 1466476363 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Scripts/WorkshopItemEditor.cs b/Assets/Editor/Scripts/WorkshopItemEditor.cs new file mode 100644 index 0000000..a750bd8 --- /dev/null +++ b/Assets/Editor/Scripts/WorkshopItemEditor.cs @@ -0,0 +1,75 @@ +using System.Collections.Generic; +using System.IO; +using UnityEditor; +using UnityEngine; + +[CustomEditor(typeof(WorkshopItem))] +public class WorkshopItemEditor : Editor +{ + private static string[] tags = { "Module", "Setup Room", "Gameplay Room", "Audio", "Bomb Casing", "Other" }; + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + WorkshopItem item = (WorkshopItem)target; + + //Basic Info + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + EditorGUILayout.PropertyField(serializedObject.FindProperty("WorkshopPublishedFileID"), new GUIContent("Workshop File ID")); + EditorGUILayout.PropertyField(serializedObject.FindProperty("Title")); + EditorGUILayout.PropertyField(serializedObject.FindProperty("Description")); + EditorGUILayout.EndVertical(); + + //Preview Image + EditorGUILayout.BeginHorizontal(EditorStyles.helpBox); + using (new EditorGUILayout.VerticalScope()) + { + EditorGUILayout.LabelField("Preview Image:"); + EditorGUILayout.PropertyField(serializedObject.FindProperty("PreviewImage"), new GUIContent()); + + if (item.PreviewImage != null) + { + FileInfo f = new FileInfo(AssetDatabase.GetAssetPath(item.PreviewImage)); + if (f.Exists) + { + EditorGUILayout.LabelField(string.Format("File Size: {0}", WorkshopEditorWindow.FormatFileSize(f.Length))); + + if (f.Length > 1024 * 1024) + { + EditorGUILayout.HelpBox("Max allowed size is 1MB", MessageType.Error); + } + } + } + } + GUILayout.Label(item.PreviewImage, GUILayout.MaxWidth(128), GUILayout.MaxHeight(128)); + EditorGUILayout.EndHorizontal(); + + //Tags + if (item.Tags == null) + { + item.Tags = new List(); + } + + EditorGUILayout.BeginVertical(EditorStyles.helpBox, GUILayout.MaxWidth(128)); + EditorGUILayout.LabelField("Tags:"); + for(int i = 0; i < tags.Length; i++) + { + bool hasTag = item.Tags.Contains(tags[i]); + + bool toggled = EditorGUILayout.Toggle(tags[i], hasTag); + + if (hasTag && !toggled) + { + item.Tags.Remove(tags[i]); + } + else if (!hasTag && toggled) + { + item.Tags.Add(tags[i]); + } + } + EditorGUILayout.EndVertical(); + + serializedObject.ApplyModifiedProperties(); + } +} diff --git a/Assets/Editor/Scripts/WorkshopItemEditor.cs.meta b/Assets/Editor/Scripts/WorkshopItemEditor.cs.meta new file mode 100644 index 0000000..2c8fcd3 --- /dev/null +++ b/Assets/Editor/Scripts/WorkshopItemEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9584fe5d0755b6e4aba0da704e49d27a +timeCreated: 1467829080 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET.meta b/Assets/Editor/Steamworks.NET.meta new file mode 100644 index 0000000..c2ed618 --- /dev/null +++ b/Assets/Editor/Steamworks.NET.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1abdf78603e43d84cbca8c75bf07d45f +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/CallbackDispatcher.cs b/Assets/Editor/Steamworks.NET/CallbackDispatcher.cs new file mode 100644 index 0000000..1618cd9 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/CallbackDispatcher.cs @@ -0,0 +1,380 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + + +#if UNITY_3_5 || UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5 + #error Unsupported Unity platform. Steamworks.NET requires Unity 4.6 or higher. +#elif UNITY_4_6 || UNITY_5 + #if UNITY_EDITOR_WIN || (UNITY_STANDALONE_WIN && !UNITY_EDITOR) + #define WINDOWS_BUILD + #endif +#elif STEAMWORKS_WIN + #define WINDOWS_BUILD +#elif STEAMWORKS_LIN_OSX + // So that we don't trigger the else. +#else + #error You need to define STEAMWORKS_WIN, or STEAMWORKS_LIN_OSX. Refer to the readme for more details. +#endif + +// Unity 32bit Mono on Windows crashes with ThisCall/Cdecl for some reason, StdCall without the 'this' ptr is the only thing that works..? +#if (UNITY_EDITOR_WIN && !UNITY_EDITOR_64) || (!UNITY_EDITOR && UNITY_STANDALONE_WIN && !UNITY_64) + #define STDCALL +#elif STEAMWORKS_WIN + #define THISCALL +#endif + +// Calling Conventions: +// Unity x86 Windows - StdCall (No this pointer) +// Unity x86 Linux - Cdecl +// Unity x86 OSX - Cdecl +// Unity x64 Windows - Cdecl +// Unity x64 Linux - Cdecl +// Unity x64 OSX - Cdecl +// Microsoft x86 Windows - ThisCall +// Microsoft x64 Windows - ThisCall +// Mono x86 Linux - Cdecl +// Mono x86 OSX - Cdecl +// Mono x64 Linux - Cdecl +// Mono x64 OSX - Cdecl +// Mono on Windows is probably not supported. + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class CallbackDispatcher { + // We catch exceptions inside callbacks and reroute them here. + // For some reason throwing an exception causes RunCallbacks() to break otherwise. + // If you have a custom ExceptionHandler in your engine you can register it here manually until we get something more elegant hooked up. + public static void ExceptionHandler(Exception e) { +#if UNITY_BUILD + UnityEngine.Debug.LogException(e); +#else + Console.WriteLine(e.Message); +#endif + } + } + + public sealed class Callback { + private CCallbackBaseVTable VTable; + private IntPtr m_pVTable = IntPtr.Zero; + private CCallbackBase m_CCallbackBase; + private GCHandle m_pCCallbackBase; + + public delegate void DispatchDelegate(T param); + private event DispatchDelegate m_Func; + + private bool m_bGameServer; + private readonly int m_size = Marshal.SizeOf(typeof(T)); + + /// + /// Creates a new Callback. You must be calling SteamAPI.RunCallbacks() to retrieve the callbacks. + /// Returns a handle to the Callback. This must be assigned to a member variable to prevent the GC from cleaning it up. + /// + public static Callback Create(DispatchDelegate func) { + return new Callback(func, bGameServer: false); + } + + /// + /// Creates a new GameServer Callback. You must be calling GameServer.RunCallbacks() to retrieve the callbacks. + /// Returns a handle to the Callback. This must be assigned to a member variable to prevent the GC from cleaning it up. + /// + public static Callback CreateGameServer(DispatchDelegate func) { + return new Callback(func, bGameServer: true); + } + + public Callback(DispatchDelegate func, bool bGameServer = false) { + m_bGameServer = bGameServer; + BuildCCallbackBase(); + Register(func); + } + + ~Callback() { + Unregister(); + + if (m_pVTable != IntPtr.Zero) { + Marshal.FreeHGlobal(m_pVTable); + } + + if (m_pCCallbackBase.IsAllocated) { + m_pCCallbackBase.Free(); + } + } + + // Manual registration of the callback + public void Register(DispatchDelegate func) { + if (func == null) { + throw new Exception("Callback function must not be null."); + } + + if ((m_CCallbackBase.m_nCallbackFlags & CCallbackBase.k_ECallbackFlagsRegistered) == CCallbackBase.k_ECallbackFlagsRegistered) { + Unregister(); + } + + if (m_bGameServer) { + SetGameserverFlag(); + } + + m_Func = func; + + // k_ECallbackFlagsRegistered is set by SteamAPI_RegisterCallback. + NativeMethods.SteamAPI_RegisterCallback(m_pCCallbackBase.AddrOfPinnedObject(), CallbackIdentities.GetCallbackIdentity(typeof(T))); + } + + public void Unregister() { + // k_ECallbackFlagsRegistered is removed by SteamAPI_UnregisterCallback. + NativeMethods.SteamAPI_UnregisterCallback(m_pCCallbackBase.AddrOfPinnedObject()); + } + + public void SetGameserverFlag() { m_CCallbackBase.m_nCallbackFlags |= CCallbackBase.k_ECallbackFlagsGameServer; } + + private void OnRunCallback( +#if !STDCALL + IntPtr thisptr, +#endif + IntPtr pvParam) { + try { + m_Func((T)Marshal.PtrToStructure(pvParam, typeof(T))); + } + catch (Exception e) { + CallbackDispatcher.ExceptionHandler(e); + } + } + + // Shouldn't get ever get called here, but this is what C++ Steamworks does! + private void OnRunCallResult( +#if !STDCALL + IntPtr thisptr, +#endif + IntPtr pvParam, bool bFailed, ulong hSteamAPICall) { + try { + m_Func((T)Marshal.PtrToStructure(pvParam, typeof(T))); + } + catch (Exception e) { + CallbackDispatcher.ExceptionHandler(e); + } + } + + private int OnGetCallbackSizeBytes( +#if !STDCALL + IntPtr thisptr +#endif + ) { + return m_size; + } + + // Steamworks.NET Specific + private void BuildCCallbackBase() { + VTable = new CCallbackBaseVTable() { + m_RunCallResult = OnRunCallResult, + m_RunCallback = OnRunCallback, + m_GetCallbackSizeBytes = OnGetCallbackSizeBytes + }; + m_pVTable = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(CCallbackBaseVTable))); + Marshal.StructureToPtr(VTable, m_pVTable, false); + + m_CCallbackBase = new CCallbackBase() { + m_vfptr = m_pVTable, + m_nCallbackFlags = 0, + m_iCallback = CallbackIdentities.GetCallbackIdentity(typeof(T)) + }; + m_pCCallbackBase = GCHandle.Alloc(m_CCallbackBase, GCHandleType.Pinned); + } + } + + public sealed class CallResult { + private CCallbackBaseVTable VTable; + private IntPtr m_pVTable = IntPtr.Zero; + private CCallbackBase m_CCallbackBase; + private GCHandle m_pCCallbackBase; + + public delegate void APIDispatchDelegate(T param, bool bIOFailure); + private event APIDispatchDelegate m_Func; + + private SteamAPICall_t m_hAPICall = SteamAPICall_t.Invalid; + public SteamAPICall_t Handle { get { return m_hAPICall; } } + + private readonly int m_size = Marshal.SizeOf(typeof(T)); + + /// + /// Creates a new async CallResult. You must be calling SteamAPI.RunCallbacks() to retrieve the callback. + /// Returns a handle to the CallResult. This must be assigned to a member variable to prevent the GC from cleaning it up. + /// + public static CallResult Create(APIDispatchDelegate func = null) { + return new CallResult(func); + } + + public CallResult(APIDispatchDelegate func = null) { + m_Func = func; + BuildCCallbackBase(); + } + + ~CallResult() { + Cancel(); + + if (m_pVTable != IntPtr.Zero) { + Marshal.FreeHGlobal(m_pVTable); + } + + if (m_pCCallbackBase.IsAllocated) { + m_pCCallbackBase.Free(); + } + } + + public void Set(SteamAPICall_t hAPICall, APIDispatchDelegate func = null) { + // Unlike the official SDK we let the user assign a single function during creation, + // and allow them to skip having to do so every time that they call .Set() + if (func != null) { + m_Func = func; + } + + if (m_Func == null) { + throw new Exception("CallResult function was null, you must either set it in the CallResult Constructor or in Set()"); + } + + if (m_hAPICall != SteamAPICall_t.Invalid) { + NativeMethods.SteamAPI_UnregisterCallResult(m_pCCallbackBase.AddrOfPinnedObject(), (ulong)m_hAPICall); + } + + m_hAPICall = hAPICall; + + if (hAPICall != SteamAPICall_t.Invalid) { + NativeMethods.SteamAPI_RegisterCallResult(m_pCCallbackBase.AddrOfPinnedObject(), (ulong)hAPICall); + } + } + + public bool IsActive() { + return (m_hAPICall != SteamAPICall_t.Invalid); + } + + public void Cancel() { + if (m_hAPICall != SteamAPICall_t.Invalid) { + NativeMethods.SteamAPI_UnregisterCallResult(m_pCCallbackBase.AddrOfPinnedObject(), (ulong)m_hAPICall); + m_hAPICall = SteamAPICall_t.Invalid; + } + } + + public void SetGameserverFlag() { m_CCallbackBase.m_nCallbackFlags |= CCallbackBase.k_ECallbackFlagsGameServer; } + + // Shouldn't get ever get called here, but this is what C++ Steamworks does! + private void OnRunCallback( +#if !STDCALL + IntPtr thisptr, +#endif + IntPtr pvParam) { + m_hAPICall = SteamAPICall_t.Invalid; // Caller unregisters for us + try { + m_Func((T)Marshal.PtrToStructure(pvParam, typeof(T)), false); + } + catch (Exception e) { + CallbackDispatcher.ExceptionHandler(e); + } + } + + + private void OnRunCallResult( +#if !STDCALL + IntPtr thisptr, +#endif + IntPtr pvParam, bool bFailed, ulong hSteamAPICall) { + SteamAPICall_t hAPICall = (SteamAPICall_t)hSteamAPICall; + if (hAPICall == m_hAPICall) { + try { + m_Func((T)Marshal.PtrToStructure(pvParam, typeof(T)), bFailed); + } + catch (Exception e) { + CallbackDispatcher.ExceptionHandler(e); + } + + // The official SDK sets m_hAPICall to invalid before calling the callresult function, + // this doesn't let us access .Handle from within the function though. + if (hAPICall == m_hAPICall) { // Ensure that m_hAPICall has not been changed in m_Func + m_hAPICall = SteamAPICall_t.Invalid; // Caller unregisters for us + } + } + } + + private int OnGetCallbackSizeBytes( +#if !STDCALL + IntPtr thisptr +#endif + ) { + return m_size; + } + + // Steamworks.NET Specific + private void BuildCCallbackBase() { + VTable = new CCallbackBaseVTable() { + m_RunCallback = OnRunCallback, + m_RunCallResult = OnRunCallResult, + m_GetCallbackSizeBytes = OnGetCallbackSizeBytes + }; + m_pVTable = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(CCallbackBaseVTable))); + Marshal.StructureToPtr(VTable, m_pVTable, false); + + m_CCallbackBase = new CCallbackBase() { + m_vfptr = m_pVTable, + m_nCallbackFlags = 0, + m_iCallback = CallbackIdentities.GetCallbackIdentity(typeof(T)) + }; + m_pCCallbackBase = GCHandle.Alloc(m_CCallbackBase, GCHandleType.Pinned); + } + } + + [StructLayout(LayoutKind.Sequential)] + internal class CCallbackBase { + public const byte k_ECallbackFlagsRegistered = 0x01; + public const byte k_ECallbackFlagsGameServer = 0x02; + public IntPtr m_vfptr; + public byte m_nCallbackFlags; + public int m_iCallback; + }; + + [StructLayout(LayoutKind.Sequential)] + internal class CCallbackBaseVTable { +#if STDCALL + private const CallingConvention cc = CallingConvention.StdCall; + + [UnmanagedFunctionPointer(cc)] + public delegate void RunCBDel(IntPtr pvParam); + [UnmanagedFunctionPointer(cc)] + public delegate void RunCRDel(IntPtr pvParam, [MarshalAs(UnmanagedType.I1)] bool bIOFailure, ulong hSteamAPICall); + [UnmanagedFunctionPointer(cc)] + public delegate int GetCallbackSizeBytesDel(); +#else + #if THISCALL + private const CallingConvention cc = CallingConvention.ThisCall; + #else + private const CallingConvention cc = CallingConvention.Cdecl; + #endif + + [UnmanagedFunctionPointer(cc)] + public delegate void RunCBDel(IntPtr thisptr, IntPtr pvParam); + [UnmanagedFunctionPointer(cc)] + public delegate void RunCRDel(IntPtr thisptr, IntPtr pvParam, [MarshalAs(UnmanagedType.I1)] bool bIOFailure, ulong hSteamAPICall); + [UnmanagedFunctionPointer(cc)] + public delegate int GetCallbackSizeBytesDel(IntPtr thisptr); +#endif + + // RunCallback and RunCallResult are swapped in MSVC ABI +#if WINDOWS_BUILD + [NonSerialized] + [MarshalAs(UnmanagedType.FunctionPtr)] + public RunCRDel m_RunCallResult; +#endif + [NonSerialized] + [MarshalAs(UnmanagedType.FunctionPtr)] + public RunCBDel m_RunCallback; +#if !WINDOWS_BUILD + [NonSerialized] + [MarshalAs(UnmanagedType.FunctionPtr)] + public RunCRDel m_RunCallResult; +#endif + [NonSerialized] + [MarshalAs(UnmanagedType.FunctionPtr)] + public GetCallbackSizeBytesDel m_GetCallbackSizeBytes; + } +} diff --git a/Assets/Editor/Steamworks.NET/CallbackDispatcher.cs.meta b/Assets/Editor/Steamworks.NET/CallbackDispatcher.cs.meta new file mode 100644 index 0000000..21d9ace --- /dev/null +++ b/Assets/Editor/Steamworks.NET/CallbackDispatcher.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 04a14f6b19a5ebf4680129c861315b10 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/CallbackIdentity.cs b/Assets/Editor/Steamworks.NET/CallbackIdentity.cs new file mode 100644 index 0000000..2ceb342 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/CallbackIdentity.cs @@ -0,0 +1,28 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + class CallbackIdentities { + public static int GetCallbackIdentity(Type callbackStruct) { + foreach (CallbackIdentityAttribute attribute in callbackStruct.GetCustomAttributes(typeof(CallbackIdentityAttribute), false)) { + return attribute.Identity; + } + + throw new Exception("Callback number not found for struct " + callbackStruct); + } + } + + [AttributeUsage(AttributeTargets.Struct, AllowMultiple = false)] + internal class CallbackIdentityAttribute : System.Attribute { + public int Identity { get; set; } + public CallbackIdentityAttribute(int callbackNum) { + Identity = callbackNum; + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/CallbackIdentity.cs.meta b/Assets/Editor/Steamworks.NET/CallbackIdentity.cs.meta new file mode 100644 index 0000000..a88d843 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/CallbackIdentity.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 083986a54ab9e4e498e84a810a760a49 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/ISteamMatchmakingResponses.cs b/Assets/Editor/Steamworks.NET/ISteamMatchmakingResponses.cs new file mode 100644 index 0000000..e501dd5 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/ISteamMatchmakingResponses.cs @@ -0,0 +1,439 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +// Unity 32bit Mono on Windows crashes with ThisCall for some reason, StdCall without the 'this' ptr is the only thing that works..? +#if (UNITY_EDITOR_WIN && !UNITY_EDITOR_64) || (!UNITY_EDITOR && UNITY_STANDALONE_WIN && !UNITY_64) + #define NOTHISPTR +#endif + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + //----------------------------------------------------------------------------- + // Purpose: Callback interface for receiving responses after a server list refresh + // or an individual server update. + // + // Since you get these callbacks after requesting full list refreshes you will + // usually implement this interface inside an object like CServerBrowser. If that + // object is getting destructed you should use ISteamMatchMakingServers()->CancelQuery() + // to cancel any in-progress queries so you don't get a callback into the destructed + // object and crash. + //----------------------------------------------------------------------------- + public class ISteamMatchmakingServerListResponse { + // Server has responded ok with updated data + public delegate void ServerResponded(HServerListRequest hRequest, int iServer); + // Server has failed to respond + public delegate void ServerFailedToRespond(HServerListRequest hRequest, int iServer); + // A list refresh you had initiated is now 100% completed + public delegate void RefreshComplete(HServerListRequest hRequest, EMatchMakingServerResponse response); + + private VTable m_VTable; + private IntPtr m_pVTable; + private GCHandle m_pGCHandle; + private ServerResponded m_ServerResponded; + private ServerFailedToRespond m_ServerFailedToRespond; + private RefreshComplete m_RefreshComplete; + + public ISteamMatchmakingServerListResponse(ServerResponded onServerResponded, ServerFailedToRespond onServerFailedToRespond, RefreshComplete onRefreshComplete) { + if (onServerResponded == null || onServerFailedToRespond == null || onRefreshComplete == null) { + throw new ArgumentNullException(); + } + m_ServerResponded = onServerResponded; + m_ServerFailedToRespond = onServerFailedToRespond; + m_RefreshComplete = onRefreshComplete; + + m_VTable = new VTable() { + m_VTServerResponded = InternalOnServerResponded, + m_VTServerFailedToRespond = InternalOnServerFailedToRespond, + m_VTRefreshComplete = InternalOnRefreshComplete + }; + m_pVTable = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(VTable))); + Marshal.StructureToPtr(m_VTable, m_pVTable, false); + + m_pGCHandle = GCHandle.Alloc(m_pVTable, GCHandleType.Pinned); + } + + ~ISteamMatchmakingServerListResponse() { + if (m_pVTable != IntPtr.Zero) { + Marshal.FreeHGlobal(m_pVTable); + } + + if (m_pGCHandle.IsAllocated) { + m_pGCHandle.Free(); + } + } + +#if NOTHISPTR + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + private delegate void InternalServerResponded(HServerListRequest hRequest, int iServer); + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + private delegate void InternalServerFailedToRespond(HServerListRequest hRequest, int iServer); + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + private delegate void InternalRefreshComplete(HServerListRequest hRequest, EMatchMakingServerResponse response); + private void InternalOnServerResponded(HServerListRequest hRequest, int iServer) { + m_ServerResponded(hRequest, iServer); + } + private void InternalOnServerFailedToRespond(HServerListRequest hRequest, int iServer) { + m_ServerFailedToRespond(hRequest, iServer); + } + private void InternalOnRefreshComplete(HServerListRequest hRequest, EMatchMakingServerResponse response) { + m_RefreshComplete(hRequest, response); + } +#else + [UnmanagedFunctionPointer(CallingConvention.ThisCall)] + private delegate void InternalServerResponded(IntPtr thisptr, HServerListRequest hRequest, int iServer); + [UnmanagedFunctionPointer(CallingConvention.ThisCall)] + private delegate void InternalServerFailedToRespond(IntPtr thisptr, HServerListRequest hRequest, int iServer); + [UnmanagedFunctionPointer(CallingConvention.ThisCall)] + private delegate void InternalRefreshComplete(IntPtr thisptr, HServerListRequest hRequest, EMatchMakingServerResponse response); + private void InternalOnServerResponded(IntPtr thisptr, HServerListRequest hRequest, int iServer) { + m_ServerResponded(hRequest, iServer); + } + private void InternalOnServerFailedToRespond(IntPtr thisptr, HServerListRequest hRequest, int iServer) { + m_ServerFailedToRespond(hRequest, iServer); + } + private void InternalOnRefreshComplete(IntPtr thisptr, HServerListRequest hRequest, EMatchMakingServerResponse response) { + m_RefreshComplete(hRequest, response); + } +#endif + + [StructLayout(LayoutKind.Sequential)] + private class VTable { + [NonSerialized] + [MarshalAs(UnmanagedType.FunctionPtr)] + public InternalServerResponded m_VTServerResponded; + + [NonSerialized] + [MarshalAs(UnmanagedType.FunctionPtr)] + public InternalServerFailedToRespond m_VTServerFailedToRespond; + + [NonSerialized] + [MarshalAs(UnmanagedType.FunctionPtr)] + public InternalRefreshComplete m_VTRefreshComplete; + } + + public static explicit operator System.IntPtr(ISteamMatchmakingServerListResponse that) { + return that.m_pGCHandle.AddrOfPinnedObject(); + } + }; + + //----------------------------------------------------------------------------- + // Purpose: Callback interface for receiving responses after pinging an individual server + // + // These callbacks all occur in response to querying an individual server + // via the ISteamMatchmakingServers()->PingServer() call below. If you are + // destructing an object that implements this interface then you should call + // ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query + // which is in progress. Failure to cancel in progress queries when destructing + // a callback handler may result in a crash when a callback later occurs. + //----------------------------------------------------------------------------- + public class ISteamMatchmakingPingResponse { + // Server has responded successfully and has updated data + public delegate void ServerResponded(gameserveritem_t server); + + // Server failed to respond to the ping request + public delegate void ServerFailedToRespond(); + + private VTable m_VTable; + private IntPtr m_pVTable; + private GCHandle m_pGCHandle; + private ServerResponded m_ServerResponded; + private ServerFailedToRespond m_ServerFailedToRespond; + + public ISteamMatchmakingPingResponse(ServerResponded onServerResponded, ServerFailedToRespond onServerFailedToRespond) { + if (onServerResponded == null || onServerFailedToRespond == null) { + throw new ArgumentNullException(); + } + m_ServerResponded = onServerResponded; + m_ServerFailedToRespond = onServerFailedToRespond; + + m_VTable = new VTable() { + m_VTServerResponded = InternalOnServerResponded, + m_VTServerFailedToRespond = InternalOnServerFailedToRespond, + }; + m_pVTable = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(VTable))); + Marshal.StructureToPtr(m_VTable, m_pVTable, false); + + m_pGCHandle = GCHandle.Alloc(m_pVTable, GCHandleType.Pinned); + } + + ~ISteamMatchmakingPingResponse() { + if (m_pVTable != IntPtr.Zero) { + Marshal.FreeHGlobal(m_pVTable); + } + + if (m_pGCHandle.IsAllocated) { + m_pGCHandle.Free(); + } + } + +#if NOTHISPTR + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + private delegate void InternalServerResponded(gameserveritem_t server); + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + private delegate void InternalServerFailedToRespond(); + private void InternalOnServerResponded(gameserveritem_t server) { + m_ServerResponded(server); + } + private void InternalOnServerFailedToRespond() { + m_ServerFailedToRespond(); + } +#else + [UnmanagedFunctionPointer(CallingConvention.ThisCall)] + private delegate void InternalServerResponded(IntPtr thisptr, gameserveritem_t server); + [UnmanagedFunctionPointer(CallingConvention.ThisCall)] + private delegate void InternalServerFailedToRespond(IntPtr thisptr); + private void InternalOnServerResponded(IntPtr thisptr, gameserveritem_t server) { + m_ServerResponded(server); + } + private void InternalOnServerFailedToRespond(IntPtr thisptr) { + m_ServerFailedToRespond(); + } +#endif + + [StructLayout(LayoutKind.Sequential)] + private class VTable { + [NonSerialized] + [MarshalAs(UnmanagedType.FunctionPtr)] + public InternalServerResponded m_VTServerResponded; + + [NonSerialized] + [MarshalAs(UnmanagedType.FunctionPtr)] + public InternalServerFailedToRespond m_VTServerFailedToRespond; + } + + public static explicit operator System.IntPtr(ISteamMatchmakingPingResponse that) { + return that.m_pGCHandle.AddrOfPinnedObject(); + } + }; + + //----------------------------------------------------------------------------- + // Purpose: Callback interface for receiving responses after requesting details on + // who is playing on a particular server. + // + // These callbacks all occur in response to querying an individual server + // via the ISteamMatchmakingServers()->PlayerDetails() call below. If you are + // destructing an object that implements this interface then you should call + // ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query + // which is in progress. Failure to cancel in progress queries when destructing + // a callback handler may result in a crash when a callback later occurs. + //----------------------------------------------------------------------------- + public class ISteamMatchmakingPlayersResponse { + // Got data on a new player on the server -- you'll get this callback once per player + // on the server which you have requested player data on. + public delegate void AddPlayerToList(string pchName, int nScore, float flTimePlayed); + + // The server failed to respond to the request for player details + public delegate void PlayersFailedToRespond(); + + // The server has finished responding to the player details request + // (ie, you won't get anymore AddPlayerToList callbacks) + public delegate void PlayersRefreshComplete(); + + private VTable m_VTable; + private IntPtr m_pVTable; + private GCHandle m_pGCHandle; + private AddPlayerToList m_AddPlayerToList; + private PlayersFailedToRespond m_PlayersFailedToRespond; + private PlayersRefreshComplete m_PlayersRefreshComplete; + + public ISteamMatchmakingPlayersResponse(AddPlayerToList onAddPlayerToList, PlayersFailedToRespond onPlayersFailedToRespond, PlayersRefreshComplete onPlayersRefreshComplete) { + if (onAddPlayerToList == null || onPlayersFailedToRespond == null || onPlayersRefreshComplete == null) { + throw new ArgumentNullException(); + } + m_AddPlayerToList = onAddPlayerToList; + m_PlayersFailedToRespond = onPlayersFailedToRespond; + m_PlayersRefreshComplete = onPlayersRefreshComplete; + + m_VTable = new VTable() { + m_VTAddPlayerToList = InternalOnAddPlayerToList, + m_VTPlayersFailedToRespond = InternalOnPlayersFailedToRespond, + m_VTPlayersRefreshComplete = InternalOnPlayersRefreshComplete + }; + m_pVTable = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(VTable))); + Marshal.StructureToPtr(m_VTable, m_pVTable, false); + + m_pGCHandle = GCHandle.Alloc(m_pVTable, GCHandleType.Pinned); + } + + ~ISteamMatchmakingPlayersResponse() { + if (m_pVTable != IntPtr.Zero) { + Marshal.FreeHGlobal(m_pVTable); + } + + if (m_pGCHandle.IsAllocated) { + m_pGCHandle.Free(); + } + } + +#if NOTHISPTR + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + public delegate void InternalAddPlayerToList(IntPtr pchName, int nScore, float flTimePlayed); + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + public delegate void InternalPlayersFailedToRespond(); + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + public delegate void InternalPlayersRefreshComplete(); + private void InternalOnAddPlayerToList(IntPtr pchName, int nScore, float flTimePlayed) { + m_AddPlayerToList(InteropHelp.PtrToStringUTF8(pchName), nScore, flTimePlayed); + } + private void InternalOnPlayersFailedToRespond() { + m_PlayersFailedToRespond(); + } + private void InternalOnPlayersRefreshComplete() { + m_PlayersRefreshComplete(); + } +#else + [UnmanagedFunctionPointer(CallingConvention.ThisCall)] + public delegate void InternalAddPlayerToList(IntPtr thisptr, IntPtr pchName, int nScore, float flTimePlayed); + [UnmanagedFunctionPointer(CallingConvention.ThisCall)] + public delegate void InternalPlayersFailedToRespond(IntPtr thisptr); + [UnmanagedFunctionPointer(CallingConvention.ThisCall)] + public delegate void InternalPlayersRefreshComplete(IntPtr thisptr); + private void InternalOnAddPlayerToList(IntPtr thisptr, IntPtr pchName, int nScore, float flTimePlayed) { + m_AddPlayerToList(InteropHelp.PtrToStringUTF8(pchName), nScore, flTimePlayed); + } + private void InternalOnPlayersFailedToRespond(IntPtr thisptr) { + m_PlayersFailedToRespond(); + } + private void InternalOnPlayersRefreshComplete(IntPtr thisptr) { + m_PlayersRefreshComplete(); + } +#endif + + [StructLayout(LayoutKind.Sequential)] + private class VTable { + [NonSerialized] + [MarshalAs(UnmanagedType.FunctionPtr)] + public InternalAddPlayerToList m_VTAddPlayerToList; + + [NonSerialized] + [MarshalAs(UnmanagedType.FunctionPtr)] + public InternalPlayersFailedToRespond m_VTPlayersFailedToRespond; + + [NonSerialized] + [MarshalAs(UnmanagedType.FunctionPtr)] + public InternalPlayersRefreshComplete m_VTPlayersRefreshComplete; + } + + public static explicit operator System.IntPtr(ISteamMatchmakingPlayersResponse that) { + return that.m_pGCHandle.AddrOfPinnedObject(); + } + }; + + //----------------------------------------------------------------------------- + // Purpose: Callback interface for receiving responses after requesting rules + // details on a particular server. + // + // These callbacks all occur in response to querying an individual server + // via the ISteamMatchmakingServers()->ServerRules() call below. If you are + // destructing an object that implements this interface then you should call + // ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query + // which is in progress. Failure to cancel in progress queries when destructing + // a callback handler may result in a crash when a callback later occurs. + //----------------------------------------------------------------------------- + public class ISteamMatchmakingRulesResponse { + // Got data on a rule on the server -- you'll get one of these per rule defined on + // the server you are querying + public delegate void RulesResponded(string pchRule, string pchValue); + + // The server failed to respond to the request for rule details + public delegate void RulesFailedToRespond(); + + // The server has finished responding to the rule details request + // (ie, you won't get anymore RulesResponded callbacks) + public delegate void RulesRefreshComplete(); + + private VTable m_VTable; + private IntPtr m_pVTable; + private GCHandle m_pGCHandle; + private RulesResponded m_RulesResponded; + private RulesFailedToRespond m_RulesFailedToRespond; + private RulesRefreshComplete m_RulesRefreshComplete; + + public ISteamMatchmakingRulesResponse(RulesResponded onRulesResponded, RulesFailedToRespond onRulesFailedToRespond, RulesRefreshComplete onRulesRefreshComplete) { + if (onRulesResponded == null || onRulesFailedToRespond == null || onRulesRefreshComplete == null) { + throw new ArgumentNullException(); + } + m_RulesResponded = onRulesResponded; + m_RulesFailedToRespond = onRulesFailedToRespond; + m_RulesRefreshComplete = onRulesRefreshComplete; + + m_VTable = new VTable() { + m_VTRulesResponded = InternalOnRulesResponded, + m_VTRulesFailedToRespond = InternalOnRulesFailedToRespond, + m_VTRulesRefreshComplete = InternalOnRulesRefreshComplete + }; + m_pVTable = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(VTable))); + Marshal.StructureToPtr(m_VTable, m_pVTable, false); + + m_pGCHandle = GCHandle.Alloc(m_pVTable, GCHandleType.Pinned); + } + + ~ISteamMatchmakingRulesResponse() { + if (m_pVTable != IntPtr.Zero) { + Marshal.FreeHGlobal(m_pVTable); + } + + if (m_pGCHandle.IsAllocated) { + m_pGCHandle.Free(); + } + } + +#if NOTHISPTR + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + public delegate void InternalRulesResponded(IntPtr pchRule, IntPtr pchValue); + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + public delegate void InternalRulesFailedToRespond(); + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + public delegate void InternalRulesRefreshComplete(); + private void InternalOnRulesResponded(IntPtr pchRule, IntPtr pchValue) { + m_RulesResponded(InteropHelp.PtrToStringUTF8(pchRule), InteropHelp.PtrToStringUTF8(pchValue)); + } + private void InternalOnRulesFailedToRespond() { + m_RulesFailedToRespond(); + } + private void InternalOnRulesRefreshComplete() { + m_RulesRefreshComplete(); + } +#else + [UnmanagedFunctionPointer(CallingConvention.ThisCall)] + public delegate void InternalRulesResponded(IntPtr thisptr, IntPtr pchRule, IntPtr pchValue); + [UnmanagedFunctionPointer(CallingConvention.ThisCall)] + public delegate void InternalRulesFailedToRespond(IntPtr thisptr); + [UnmanagedFunctionPointer(CallingConvention.ThisCall)] + public delegate void InternalRulesRefreshComplete(IntPtr thisptr); + private void InternalOnRulesResponded(IntPtr thisptr, IntPtr pchRule, IntPtr pchValue) { + m_RulesResponded(InteropHelp.PtrToStringUTF8(pchRule), InteropHelp.PtrToStringUTF8(pchValue)); + } + private void InternalOnRulesFailedToRespond(IntPtr thisptr) { + m_RulesFailedToRespond(); + } + private void InternalOnRulesRefreshComplete(IntPtr thisptr) { + m_RulesRefreshComplete(); + } +#endif + + [StructLayout(LayoutKind.Sequential)] + private class VTable { + [NonSerialized] + [MarshalAs(UnmanagedType.FunctionPtr)] + public InternalRulesResponded m_VTRulesResponded; + + [NonSerialized] + [MarshalAs(UnmanagedType.FunctionPtr)] + public InternalRulesFailedToRespond m_VTRulesFailedToRespond; + + [NonSerialized] + [MarshalAs(UnmanagedType.FunctionPtr)] + public InternalRulesRefreshComplete m_VTRulesRefreshComplete; + } + + public static explicit operator System.IntPtr(ISteamMatchmakingRulesResponse that) { + return that.m_pGCHandle.AddrOfPinnedObject(); + } + }; +} diff --git a/Assets/Editor/Steamworks.NET/ISteamMatchmakingResponses.cs.meta b/Assets/Editor/Steamworks.NET/ISteamMatchmakingResponses.cs.meta new file mode 100644 index 0000000..a277aee --- /dev/null +++ b/Assets/Editor/Steamworks.NET/ISteamMatchmakingResponses.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: f25e8267432f24747a9b199201572644 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/InteropHelp.cs b/Assets/Editor/Steamworks.NET/InteropHelp.cs new file mode 100644 index 0000000..405840e --- /dev/null +++ b/Assets/Editor/Steamworks.NET/InteropHelp.cs @@ -0,0 +1,224 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; + +namespace Steamworks { + public class InteropHelp { + public static void TestIfPlatformSupported() { +#if !UNITY_EDITOR && !UNITY_STANDALONE_WIN && !UNITY_STANDALONE_LINUX && !UNITY_STANDALONE_OSX && !STEAMWORKS_WIN && !STEAMWORKS_LIN_OSX + throw new System.InvalidOperationException("Steamworks functions can only be called on platforms that Steam is available on."); +#endif + } + + public static void TestIfAvailableClient() { + TestIfPlatformSupported(); + if (NativeMethods.SteamClient() == System.IntPtr.Zero) { + throw new System.InvalidOperationException("Steamworks is not initialized."); + } + } + + public static void TestIfAvailableGameServer() { + TestIfPlatformSupported(); + if (NativeMethods.SteamClientGameServer() == System.IntPtr.Zero) { + throw new System.InvalidOperationException("Steamworks is not initialized."); + } + } + + // This continues to exist for both 'out string' and strings returned by Steamworks functions. + public static string PtrToStringUTF8(IntPtr nativeUtf8) { + if (nativeUtf8 == IntPtr.Zero) { + return string.Empty; + } + + int len = 0; + + while (Marshal.ReadByte(nativeUtf8, len) != 0) { + ++len; + } + + if (len == 0) { + return string.Empty; + } + + byte[] buffer = new byte[len]; + Marshal.Copy(nativeUtf8, buffer, 0, buffer.Length); + return Encoding.UTF8.GetString(buffer); + } + + // This is for 'const char *' arguments which we need to ensure do not get GC'd while Steam is using them. + // We can't use an ICustomMarshaler because Unity crashes when a string between 96 and 127 characters long is defined/initialized at the top of class scope... + public class UTF8StringHandle : Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid { + public UTF8StringHandle(string str) + : base(true) { + if (str == null) { + SetHandle(IntPtr.Zero); + return; + } + + byte[] strbuf = new byte[Encoding.UTF8.GetByteCount(str) + 1]; + Encoding.UTF8.GetBytes(str, 0, str.Length, strbuf, 0); + IntPtr buffer = Marshal.AllocHGlobal(strbuf.Length); + Marshal.Copy(strbuf, 0, buffer, strbuf.Length); + + SetHandle(buffer); + } + + protected override bool ReleaseHandle() { + if (!IsInvalid) { + Marshal.FreeHGlobal(handle); + } + return true; + } + } + + // TODO - Should be IDisposable + // We can't use an ICustomMarshaler because Unity dies when MarshalManagedToNative() gets called with a generic type. + public class SteamParamStringArray { + // The pointer to each AllocHGlobal() string + IntPtr[] m_Strings; + // The pointer to the condensed version of m_Strings + IntPtr m_ptrStrings; + // The pointer to the StructureToPtr version of SteamParamStringArray_t that will get marshaled + IntPtr m_pSteamParamStringArray; + + public SteamParamStringArray(System.Collections.Generic.IList strings) { + if (strings == null) { + m_pSteamParamStringArray = IntPtr.Zero; + return; + } + + m_Strings = new IntPtr[strings.Count]; + for (int i = 0; i < strings.Count; ++i) { + byte[] strbuf = new byte[Encoding.UTF8.GetByteCount(strings[i]) + 1]; + Encoding.UTF8.GetBytes(strings[i], 0, strings[i].Length, strbuf, 0); + m_Strings[i] = Marshal.AllocHGlobal(strbuf.Length); + Marshal.Copy(strbuf, 0, m_Strings[i], strbuf.Length); + } + + m_ptrStrings = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(IntPtr)) * m_Strings.Length); + SteamParamStringArray_t stringArray = new SteamParamStringArray_t() { + m_ppStrings = m_ptrStrings, + m_nNumStrings = m_Strings.Length + }; + Marshal.Copy(m_Strings, 0, stringArray.m_ppStrings, m_Strings.Length); + + m_pSteamParamStringArray = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(SteamParamStringArray_t))); + Marshal.StructureToPtr(stringArray, m_pSteamParamStringArray, false); + } + + ~SteamParamStringArray() { + foreach (IntPtr ptr in m_Strings) { + Marshal.FreeHGlobal(ptr); + } + + if (m_ptrStrings != IntPtr.Zero) { + Marshal.FreeHGlobal(m_ptrStrings); + } + + if (m_pSteamParamStringArray != IntPtr.Zero) { + Marshal.FreeHGlobal(m_pSteamParamStringArray); + } + } + + public static implicit operator IntPtr(SteamParamStringArray that) { + return that.m_pSteamParamStringArray; + } + } + } + + // TODO - Should be IDisposable + // MatchMaking Key-Value Pair Marshaller + public class MMKVPMarshaller { + private IntPtr m_pNativeArray; + private IntPtr m_pArrayEntries; + + public MMKVPMarshaller(MatchMakingKeyValuePair_t[] filters) { + if (filters == null) { + return; + } + + int sizeOfMMKVP = Marshal.SizeOf(typeof(MatchMakingKeyValuePair_t)); + + m_pNativeArray = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(IntPtr)) * filters.Length); + m_pArrayEntries = Marshal.AllocHGlobal(sizeOfMMKVP * filters.Length); + for (int i = 0; i < filters.Length; ++i) { + Marshal.StructureToPtr(filters[i], new IntPtr(m_pArrayEntries.ToInt64() + (i * sizeOfMMKVP)), false); + } + + Marshal.WriteIntPtr(m_pNativeArray, m_pArrayEntries); + } + + ~MMKVPMarshaller() { + if (m_pArrayEntries != IntPtr.Zero) { + Marshal.FreeHGlobal(m_pArrayEntries); + } + if (m_pNativeArray != IntPtr.Zero) { + Marshal.FreeHGlobal(m_pNativeArray); + } + } + + public static implicit operator IntPtr(MMKVPMarshaller that) { + return that.m_pNativeArray; + } + } + + public class DllCheck { + [DllImport("kernel32.dll")] + public static extern IntPtr GetModuleHandle(string lpModuleName); + + [DllImport("kernel32.dll", CharSet = CharSet.Auto)] + extern static int GetModuleFileName(IntPtr hModule, StringBuilder strFullPath, int nSize); + + /// + /// This is an optional runtime check to ensure that the dlls are the correct version. Returns false only if the steam_api.dll is found and it's the wrong size or version number. + /// + public static bool Test() { + //bool ret = CheckSteamAPIDLL(); + return true; + } + + private static bool CheckSteamAPIDLL() { +#if STEAMWORKS_WIN || (UNITY_EDITOR_WIN && UNITY_STANDALONE) || (!UNITY_EDITOR && UNITY_STANDALONE_WIN) + string fileName; + int fileBytes; + if (IntPtr.Size == 4) { + fileName = "steam_api.dll"; + fileBytes = Version.SteamAPIDLLSize; + } + else { + fileName = "steam_api64.dll"; + fileBytes = Version.SteamAPI64DLLSize; + } + + IntPtr handle = GetModuleHandle(fileName); + if (handle == IntPtr.Zero) { + return true; + } + + StringBuilder filePath = new StringBuilder(256); + GetModuleFileName(handle, filePath, filePath.Capacity); + string file = filePath.ToString(); + + // If we can not find the file we'll just skip it and let the DllNotFoundException take care of it. + if (System.IO.File.Exists(file)) { + System.IO.FileInfo fInfo = new System.IO.FileInfo(file); + if (fInfo.Length != fileBytes) { + return false; + } + + if (System.Diagnostics.FileVersionInfo.GetVersionInfo(file).FileVersion != Version.SteamAPIDLLVersion) { + return false; + } + } +#endif + return true; + } + } +} diff --git a/Assets/Editor/Steamworks.NET/InteropHelp.cs.meta b/Assets/Editor/Steamworks.NET/InteropHelp.cs.meta new file mode 100644 index 0000000..18fa2a2 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/InteropHelp.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 35ab6455cc3f7164f95914ee5cebbe58 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/Packsize.cs b/Assets/Editor/Steamworks.NET/Packsize.cs new file mode 100644 index 0000000..32d58f3 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/Packsize.cs @@ -0,0 +1,62 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +// If we're running in the Unity Editor we need the editors platform. +#if UNITY_EDITOR_WIN + #define VALVE_CALLBACK_PACK_LARGE +#elif UNITY_EDITOR_OSX + #define VALVE_CALLBACK_PACK_SMALL + +// Otherwise we want the target platform. +#elif UNITY_STANDALONE_WIN || STEAMWORKS_WIN + #define VALVE_CALLBACK_PACK_LARGE +#elif UNITY_STANDALONE_LINUX || UNITY_STANDALONE_OSX || STEAMWORKS_LIN_OSX + #define VALVE_CALLBACK_PACK_SMALL + +// We do not want to throw a warning when we're building in Unity but for an unsupported platform. So we'll silently let this slip by. +// It would be nice if Unity itself would define 'UNITY' or something like that... +#elif UNITY_3_5 || UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5 || UNITY_4_6 || UNITY_5 + #define VALVE_CALLBACK_PACK_SMALL + +// But we do want to be explicit on the Standalone build for XNA/Monogame. +#else + #define VALVE_CALLBACK_PACK_LARGE + #warning You need to define STEAMWORKS_WIN, or STEAMWORKS_LIN_OSX. Refer to the readme for more details. +#endif + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class Packsize { +#if VALVE_CALLBACK_PACK_LARGE + public const int value = 8; +#elif VALVE_CALLBACK_PACK_SMALL + public const int value = 4; +#endif + + public static bool Test() { + int sentinelSize = Marshal.SizeOf(typeof(ValvePackingSentinel_t)); + int subscribedFilesSize = Marshal.SizeOf(typeof(RemoteStorageEnumerateUserSubscribedFilesResult_t)); +#if VALVE_CALLBACK_PACK_LARGE + if (sentinelSize != 32 || subscribedFilesSize != (1 + 1 + 1 + 50 + 100) * 4 + 4) + return false; +#elif VALVE_CALLBACK_PACK_SMALL + if (sentinelSize != 24 || subscribedFilesSize != (1 + 1 + 1 + 50 + 100) * 4) + return false; +#endif + return true; + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + struct ValvePackingSentinel_t { + uint m_u32; + ulong m_u64; + ushort m_u16; + double m_d; + }; + } +} diff --git a/Assets/Editor/Steamworks.NET/Packsize.cs.meta b/Assets/Editor/Steamworks.NET/Packsize.cs.meta new file mode 100644 index 0000000..cc4586f --- /dev/null +++ b/Assets/Editor/Steamworks.NET/Packsize.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 24b26fde0e73adb448711d77d2d24814 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/RedistCopy.cs b/Assets/Editor/Steamworks.NET/RedistCopy.cs new file mode 100644 index 0000000..1800927 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/RedistCopy.cs @@ -0,0 +1,74 @@ +// Uncomment this out to disable copying +//#define DISABLEREDISTCOPY + +using UnityEngine; +using UnityEditor; +using UnityEditor.Callbacks; +using System.IO; + +public class RedistCopy { + [PostProcessBuild] + public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject) { +#if !DISABLEREDISTCOPY + if (target != BuildTarget.StandaloneWindows && target != BuildTarget.StandaloneWindows64 && + target != BuildTarget.StandaloneOSXIntel && target != BuildTarget.StandaloneOSXIntel64 && target != BuildTarget.StandaloneOSXUniversal && + target != BuildTarget.StandaloneLinux && target != BuildTarget.StandaloneLinux64 && target != BuildTarget.StandaloneLinuxUniversal) { + return; + } + + string strProjectName = Path.GetFileNameWithoutExtension(pathToBuiltProject); + + if (target == BuildTarget.StandaloneWindows64) { + CopyFile("steam_api64.dll", "steam_api64.dll", "Assets/Plugins/x86_64", pathToBuiltProject); + } + else if (target == BuildTarget.StandaloneWindows) { + CopyFile("steam_api.dll", "steam_api.dll", "Assets/Plugins/x86", pathToBuiltProject); + } + + string controllerCfg = Path.Combine(Application.dataPath, "controller.vdf"); + if (File.Exists(controllerCfg)) { + string dir = "_Data"; + if (target == BuildTarget.StandaloneOSXIntel || target == BuildTarget.StandaloneOSXIntel64 || target == BuildTarget.StandaloneOSXUniversal) { + dir = ".app/Contents"; + } + + string strFileDest = Path.Combine(Path.Combine(Path.GetDirectoryName(pathToBuiltProject), strProjectName + dir), "controller.vdf"); + + File.Copy(controllerCfg, strFileDest); + File.SetAttributes(strFileDest, File.GetAttributes(strFileDest) & ~FileAttributes.ReadOnly); + + if (!File.Exists(strFileDest)) { + Debug.LogWarning("[Steamworks.NET] Could not copy controller.vdf into the built project. File.Copy() Failed. Place controller.vdf from the Steamworks SDK in the output dir manually."); + } + } +#endif + } + + static void CopyFile(string filename, string outputfilename, string pathToFile, string pathToBuiltProject) { + string strCWD = Directory.GetCurrentDirectory(); + string strSource = Path.Combine(Path.Combine(strCWD, pathToFile), filename); + string strFileDest = Path.Combine(Path.GetDirectoryName(pathToBuiltProject), outputfilename); + + if (!File.Exists(strSource)) { + Debug.LogWarning(string.Format("[Steamworks.NET] Could not copy {0} into the project root. {0} could not be found in '{1}'. Place {0} from the redist into the project root manually.", filename, pathToFile)); + return; + } + + if (File.Exists(strFileDest)) { + if (File.GetLastWriteTime(strSource) == File.GetLastWriteTime(strFileDest)) { + FileInfo fInfo = new FileInfo(strSource); + FileInfo fInfo2 = new FileInfo(strFileDest); + if (fInfo.Length == fInfo2.Length) { + return; + } + } + } + + File.Copy(strSource, strFileDest, true); + File.SetAttributes(strFileDest, File.GetAttributes(strFileDest) & ~FileAttributes.ReadOnly); + + if (!File.Exists(strFileDest)) { + Debug.LogWarning(string.Format("[Steamworks.NET] Could not copy {0} into the built project. File.Copy() Failed. Place {0} from the redist folder into the output dir manually.", filename)); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/RedistCopy.cs.meta b/Assets/Editor/Steamworks.NET/RedistCopy.cs.meta new file mode 100644 index 0000000..b60a848 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/RedistCopy.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 90a999286556c1e468b3ed8e6e9599e2 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/RedistInstall.cs b/Assets/Editor/Steamworks.NET/RedistInstall.cs new file mode 100644 index 0000000..a26a7c9 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/RedistInstall.cs @@ -0,0 +1,59 @@ +using UnityEngine; +using UnityEditor; +using System.IO; + +// This copys various files into their required locations when Unity is launched to make installation a breeze. +[InitializeOnLoad] +public class RedistInstall { + static RedistInstall() { + CopyFile("Assets/Plugins/Steamworks.NET/redist", "steam_appid.txt", false); + + // We only need to copy the dll into the project root on <= Unity 5.0 +#if UNITY_EDITOR_WIN && (!UNITY_5 || UNITY_5_0) + #if UNITY_EDITOR_64 + CopyFile("Assets/Plugins/x86_64", "steam_api64.dll", true); + #else + CopyFile("Assets/Plugins/x86", "steam_api.dll", true); + #endif +#endif + } + + static void CopyFile(string path, string filename, bool bCheckDifference) { + string strCWD = Directory.GetCurrentDirectory(); + string strSource = Path.Combine(Path.Combine(strCWD, path), filename); + string strDest = Path.Combine(strCWD, filename); + + if (!File.Exists(strSource)) { + Debug.LogWarning(string.Format("[Steamworks.NET] Could not copy {0} into the project root. {0} could not be found in '{1}'. Place {0} from the Steamworks SDK in the project root manually.", filename, Path.Combine(strCWD, path))); + return; + } + + if (File.Exists(strDest)) { + if (!bCheckDifference) + return; + + if (File.GetLastWriteTime(strSource) == File.GetLastWriteTime(strDest)) { + FileInfo fInfo = new FileInfo(strSource); + FileInfo fInfo2 = new FileInfo(strDest); + if (fInfo.Length == fInfo2.Length) { + return; + } + } + + Debug.Log(string.Format("[Steamworks.NET] {0} in the project root differs from the Steamworks.NET redistributable. Updating.... Please relaunch Unity.", filename)); + } + else { + Debug.Log(string.Format("[Steamworks.NET] {0} is not present in the project root. Copying...", filename)); + } + + File.Copy(strSource, strDest, true); + File.SetAttributes(strDest, File.GetAttributes(strDest) & ~FileAttributes.ReadOnly); + + if (File.Exists(strDest)) { + Debug.Log(string.Format("[Steamworks.NET] Successfully copied {0} into the project root. Please relaunch Unity.", filename)); + } + else { + Debug.LogWarning(string.Format("[Steamworks.NET] Could not copy {0} into the project root. File.Copy() Failed. Place {0} from the Steamworks SDK in the project root manually.", filename)); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/RedistInstall.cs.meta b/Assets/Editor/Steamworks.NET/RedistInstall.cs.meta new file mode 100644 index 0000000..1d9c827 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/RedistInstall.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 37ec8dec9ce9ef646b1065857ec4e379 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/Steam.cs b/Assets/Editor/Steamworks.NET/Steam.cs new file mode 100644 index 0000000..3697750 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/Steam.cs @@ -0,0 +1,216 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +#define VERSION_SAFE_STEAM_API_INTERFACES + +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class Version { + public const string SteamworksNETVersion = "7.0.0"; + public const string SteamworksSDKVersion = "1.34"; + public const string SteamAPIDLLVersion = "02.89.45.04"; + public const int SteamAPIDLLSize = 186560; + public const int SteamAPI64DLLSize = 206760; + } + + public static class SteamAPI { + //----------------------------------------------------------------------------------------------------------------------------------------------------------// + // Steam API setup & shutdown + // + // These functions manage loading, initializing and shutdown of the steamclient.dll + // + //----------------------------------------------------------------------------------------------------------------------------------------------------------// + + // Detects if your executable was launched through the Steam client, and restarts your game through + // the client if necessary. The Steam client will be started if it is not running. + // + // Returns: true if your executable was NOT launched through the Steam client. This function will + // then start your application through the client. Your current process should exit. + // + // false if your executable was started through the Steam client or a steam_appid.txt file + // is present in your game's directory (for development). Your current process should continue. + // + // NOTE: This function should be used only if you are using CEG or not using Steam's DRM. Once applied + // to your executable, Steam's DRM will handle restarting through Steam if necessary. + public static bool RestartAppIfNecessary(AppId_t unOwnAppID) { + InteropHelp.TestIfPlatformSupported(); + return NativeMethods.SteamAPI_RestartAppIfNecessary(unOwnAppID); + } + +#if VERSION_SAFE_STEAM_API_INTERFACES + public static bool InitSafe() { + return Init(); + } + + // [Steamworks.NET] This is for Ease of use, since we don't need to care about the differences between them in C#. + public static bool Init() { + InteropHelp.TestIfPlatformSupported(); + return NativeMethods.SteamAPI_InitSafe(); + } +#else + public static bool Init() { + InteropHelp.TestIfPlatformSupported(); + return NativeMethods.SteamAPI_Init(); + } +#endif + + public static void Shutdown() { + InteropHelp.TestIfPlatformSupported(); + NativeMethods.SteamAPI_Shutdown(); + } + + //----------------------------------------------------------------------------------------------------------------------------------------------------------// + // steam callback helper functions + // + // The following classes/macros are used to be able to easily multiplex callbacks + // from the Steam API into various objects in the app in a thread-safe manner + // + // These functors are triggered via the SteamAPI_RunCallbacks() function, mapping the callback + // to as many functions/objects as are registered to it + //----------------------------------------------------------------------------------------------------------------------------------------------------------// + public static void RunCallbacks() { + InteropHelp.TestIfPlatformSupported(); + NativeMethods.SteamAPI_RunCallbacks(); + } + + // checks if a local Steam client is running + public static bool IsSteamRunning() { + InteropHelp.TestIfPlatformSupported(); + return NativeMethods.SteamAPI_IsSteamRunning(); + } + + // returns the HSteamUser of the last user to dispatch a callback + public static HSteamUser GetHSteamUserCurrent() { + InteropHelp.TestIfPlatformSupported(); + return (HSteamUser)NativeMethods.Steam_GetHSteamUserCurrent(); + } + + // returns the pipe we are communicating to Steam with + public static HSteamPipe GetHSteamPipe() { + InteropHelp.TestIfPlatformSupported(); + return (HSteamPipe)NativeMethods.SteamAPI_GetHSteamPipe(); + } + + public static HSteamUser GetHSteamUser() { + InteropHelp.TestIfPlatformSupported(); + return (HSteamUser)NativeMethods.SteamAPI_GetHSteamUser(); + } + } + + public static class GameServer { + // Initialize ISteamGameServer interface object, and set server properties which may not be changed. + // + // After calling this function, you should set any additional server parameters, and then + // call ISteamGameServer::LogOnAnonymous() or ISteamGameServer::LogOn() + // + // - usSteamPort is the local port used to communicate with the steam servers. + // - usGamePort is the port that clients will connect to for gameplay. + // - usQueryPort is the port that will manage server browser related duties and info + // pings from clients. If you pass MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE for usQueryPort, then it + // will use "GameSocketShare" mode, which means that the game is responsible for sending and receiving + // UDP packets for the master server updater. See references to GameSocketShare in isteamgameserver.h. + // - The version string is usually in the form x.x.x.x, and is used by the master server to detect when the + // server is out of date. (Only servers with the latest version will be listed.) +#if VERSION_SAFE_STEAM_API_INTERFACES + public static bool InitSafe(uint unIP, ushort usSteamPort, ushort usGamePort, ushort usQueryPort, EServerMode eServerMode, string pchVersionString) { + InteropHelp.TestIfPlatformSupported(); + using (var pchVersionString2 = new InteropHelp.UTF8StringHandle(pchVersionString)) { + return NativeMethods.SteamGameServer_InitSafe(unIP, usSteamPort, usGamePort, usQueryPort, eServerMode, pchVersionString2); + } + } + + // [Steamworks.NET] This is for Ease of use, since we don't need to care about the differences between them in C#. + public static bool Init(uint unIP, ushort usSteamPort, ushort usGamePort, ushort usQueryPort, EServerMode eServerMode, string pchVersionString) { + InteropHelp.TestIfPlatformSupported(); + using (var pchVersionString2 = new InteropHelp.UTF8StringHandle(pchVersionString)) { + return NativeMethods.SteamGameServer_InitSafe(unIP, usSteamPort, usGamePort, usQueryPort, eServerMode, pchVersionString2); + } + } +#else + public static bool Init(uint unIP, ushort usSteamPort, ushort usGamePort, ushort usQueryPort, EServerMode eServerMode, string pchVersionString) { + InteropHelp.TestIfPlatformSupported(); + using (var pchVersionString2 = new InteropHelp.UTF8StringHandle(pchVersionString)) { + return NativeMethods.SteamGameServer_Init(unIP, usSteamPort, usGamePort, usQueryPort, eServerMode, pchVersionString2); + ` } + } +#endif + public static void Shutdown() { + InteropHelp.TestIfPlatformSupported(); + NativeMethods.SteamGameServer_Shutdown(); + } + + public static void RunCallbacks() { + InteropHelp.TestIfPlatformSupported(); + NativeMethods.SteamGameServer_RunCallbacks(); + } + + public static bool BSecure() { + InteropHelp.TestIfPlatformSupported(); + return NativeMethods.SteamGameServer_BSecure(); + } + + public static CSteamID GetSteamID() { + InteropHelp.TestIfPlatformSupported(); + return (CSteamID)NativeMethods.SteamGameServer_GetSteamID(); + } + + public static HSteamPipe GetHSteamPipe() { + InteropHelp.TestIfPlatformSupported(); + return (HSteamPipe)NativeMethods.SteamGameServer_GetHSteamPipe(); + } + + public static HSteamUser GetHSteamUser() { + InteropHelp.TestIfPlatformSupported(); + return (HSteamUser)NativeMethods.SteamGameServer_GetHSteamUser(); + } + } + + public static class SteamEncryptedAppTicket { + public static bool BDecryptTicket(byte[] rgubTicketEncrypted, uint cubTicketEncrypted, byte[] rgubTicketDecrypted, ref uint pcubTicketDecrypted, byte[] rgubKey, int cubKey) { + InteropHelp.TestIfPlatformSupported(); + return NativeMethods.BDecryptTicket(rgubTicketEncrypted, cubTicketEncrypted, rgubTicketDecrypted, ref pcubTicketDecrypted, rgubKey, cubKey); + } + + public static bool BIsTicketForApp(byte[] rgubTicketDecrypted, uint cubTicketDecrypted, AppId_t nAppID) { + InteropHelp.TestIfPlatformSupported(); + return NativeMethods.BIsTicketForApp(rgubTicketDecrypted, cubTicketDecrypted, nAppID); + } + + public static uint GetTicketIssueTime(byte[] rgubTicketDecrypted, uint cubTicketDecrypted) { + InteropHelp.TestIfPlatformSupported(); + return NativeMethods.GetTicketIssueTime(rgubTicketDecrypted, cubTicketDecrypted); + } + + public static void GetTicketSteamID(byte[] rgubTicketDecrypted, uint cubTicketDecrypted, out CSteamID psteamID) { + InteropHelp.TestIfPlatformSupported(); + NativeMethods.GetTicketSteamID(rgubTicketDecrypted, cubTicketDecrypted, out psteamID); + } + + public static uint GetTicketAppID(byte[] rgubTicketDecrypted, uint cubTicketDecrypted) { + InteropHelp.TestIfPlatformSupported(); + return NativeMethods.GetTicketAppID(rgubTicketDecrypted, cubTicketDecrypted); + } + + public static bool BUserOwnsAppInTicket(byte[] rgubTicketDecrypted, uint cubTicketDecrypted, AppId_t nAppID) { + InteropHelp.TestIfPlatformSupported(); + return NativeMethods.BUserOwnsAppInTicket(rgubTicketDecrypted, cubTicketDecrypted, nAppID); + } + + public static bool BUserIsVacBanned(byte[] rgubTicketDecrypted, uint cubTicketDecrypted) { + InteropHelp.TestIfPlatformSupported(); + return NativeMethods.BUserIsVacBanned(rgubTicketDecrypted, cubTicketDecrypted); + } + + public static byte[] GetUserVariableData(byte[] rgubTicketDecrypted, uint cubTicketDecrypted, out uint pcubUserData) { + InteropHelp.TestIfPlatformSupported(); + System.IntPtr punSecretData = NativeMethods.GetUserVariableData(rgubTicketDecrypted, cubTicketDecrypted, out pcubUserData); + byte[] ret = new byte[pcubUserData]; + System.Runtime.InteropServices.Marshal.Copy(punSecretData, ret, 0, (int)pcubUserData); + return ret; + } + } +} diff --git a/Assets/Editor/Steamworks.NET/Steam.cs.meta b/Assets/Editor/Steamworks.NET/Steam.cs.meta new file mode 100644 index 0000000..4349a26 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/Steam.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 9ad8b51ab32b56347874e1c180123916 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen.meta b/Assets/Editor/Steamworks.NET/autogen.meta new file mode 100644 index 0000000..9c6d1df --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e042fb7fe0175a94d89b92fdaab1b303 +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/NativeMethods.cs b/Assets/Editor/Steamworks.NET/autogen/NativeMethods.cs new file mode 100644 index 0000000..66ce91c --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/NativeMethods.cs @@ -0,0 +1,2974 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + internal static class NativeMethods { + internal const string NativeLibraryName = "CSteamworks"; +#region steam_api.h + [DllImport("CSteamworks", EntryPoint = "Shutdown", CallingConvention = CallingConvention.Cdecl)] + public static extern void SteamAPI_Shutdown(); + + [DllImport("CSteamworks", EntryPoint = "IsSteamRunning", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool SteamAPI_IsSteamRunning(); + + [DllImport("CSteamworks", EntryPoint = "RestartAppIfNecessary", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool SteamAPI_RestartAppIfNecessary(AppId_t unOwnAppID); + + [DllImport("CSteamworks", EntryPoint = "WriteMiniDump", CallingConvention = CallingConvention.Cdecl)] + public static extern void SteamAPI_WriteMiniDump(uint uStructuredExceptionCode, IntPtr pvExceptionInfo, uint uBuildID); + + [DllImport("CSteamworks", EntryPoint = "SetMiniDumpComment", CallingConvention = CallingConvention.Cdecl)] + public static extern void SteamAPI_SetMiniDumpComment(InteropHelp.UTF8StringHandle pchMsg); + + [DllImport("CSteamworks", EntryPoint = "SteamClient_", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamClient(); + + [DllImport("CSteamworks", EntryPoint = "InitSafe", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool SteamAPI_InitSafe(); + +#if DISABLED + // This depends on how CSteamworks was compiled. By default it's compiled with VERSION_SAFE_STEAM_API_INTERFACES. + [DllImport("CSteamworks", EntryPoint = "Init", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool SteamAPI_Init(); +#endif + [DllImport("CSteamworks", EntryPoint = "RunCallbacks", CallingConvention = CallingConvention.Cdecl)] + public static extern void SteamAPI_RunCallbacks(); + + [DllImport("CSteamworks", EntryPoint = "RegisterCallback", CallingConvention = CallingConvention.Cdecl)] + public static extern void SteamAPI_RegisterCallback(IntPtr pCallback, int iCallback); + + [DllImport("CSteamworks", EntryPoint = "UnregisterCallback", CallingConvention = CallingConvention.Cdecl)] + public static extern void SteamAPI_UnregisterCallback(IntPtr pCallback); + + [DllImport("CSteamworks", EntryPoint = "RegisterCallResult", CallingConvention = CallingConvention.Cdecl)] + public static extern void SteamAPI_RegisterCallResult(IntPtr pCallback, ulong hAPICall); + + [DllImport("CSteamworks", EntryPoint = "UnregisterCallResult", CallingConvention = CallingConvention.Cdecl)] + public static extern void SteamAPI_UnregisterCallResult(IntPtr pCallback, ulong hAPICall); + + [DllImport("CSteamworks", EntryPoint = "Steam_RunCallbacks_", CallingConvention = CallingConvention.Cdecl)] + public static extern void Steam_RunCallbacks(HSteamPipe hSteamPipe, [MarshalAs(UnmanagedType.I1)] bool bGameServerCallbacks); + + [DllImport("CSteamworks", EntryPoint = "Steam_RegisterInterfaceFuncs_", CallingConvention = CallingConvention.Cdecl)] + public static extern void Steam_RegisterInterfaceFuncs(IntPtr hModule); + + [DllImport("CSteamworks", EntryPoint = "Steam_GetHSteamUserCurrent_", CallingConvention = CallingConvention.Cdecl)] + public static extern int Steam_GetHSteamUserCurrent(); + + [DllImport("CSteamworks", EntryPoint = "GetSteamInstallPath", CallingConvention = CallingConvention.Cdecl)] + public static extern int SteamAPI_GetSteamInstallPath(); + + [DllImport("CSteamworks", EntryPoint = "GetHSteamPipe_", CallingConvention = CallingConvention.Cdecl)] + public static extern int SteamAPI_GetHSteamPipe(); + + [DllImport("CSteamworks", EntryPoint = "SetTryCatchCallbacks", CallingConvention = CallingConvention.Cdecl)] + public static extern void SteamAPI_SetTryCatchCallbacks([MarshalAs(UnmanagedType.I1)] bool bTryCatchCallbacks); + + [DllImport("CSteamworks", EntryPoint = "GetHSteamUser_", CallingConvention = CallingConvention.Cdecl)] + public static extern int SteamAPI_GetHSteamUser(); + + [DllImport("CSteamworks", EntryPoint = "UseBreakpadCrashHandler", CallingConvention = CallingConvention.Cdecl)] + public static extern void SteamAPI_UseBreakpadCrashHandler(InteropHelp.UTF8StringHandle pchVersion, InteropHelp.UTF8StringHandle pchDate, InteropHelp.UTF8StringHandle pchTime, [MarshalAs(UnmanagedType.I1)] bool bFullMemoryDumps, IntPtr pvContext, IntPtr m_pfnPreMinidumpCallback); + + // SteamContext Accessors: + [DllImport("CSteamworks", EntryPoint = "SteamUser", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamUser(); + [DllImport("CSteamworks", EntryPoint = "SteamFriends", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamFriends(); + [DllImport("CSteamworks", EntryPoint = "SteamUtils", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamUtils(); + [DllImport("CSteamworks", EntryPoint = "SteamMatchmaking", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamMatchmaking(); + [DllImport("CSteamworks", EntryPoint = "SteamUserStats", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamUserStats(); + [DllImport("CSteamworks", EntryPoint = "SteamApps", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamApps(); + [DllImport("CSteamworks", EntryPoint = "SteamNetworking", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamNetworking(); + [DllImport("CSteamworks", EntryPoint = "SteamMatchmakingServers", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamMatchmakingServers(); + [DllImport("CSteamworks", EntryPoint = "SteamRemoteStorage", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamRemoteStorage(); + [DllImport("CSteamworks", EntryPoint = "SteamScreenshots", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamScreenshots(); + [DllImport("CSteamworks", EntryPoint = "SteamHTTP", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamHTTP(); + [DllImport("CSteamworks", EntryPoint = "SteamUnifiedMessages", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamUnifiedMessages(); + [DllImport("CSteamworks", EntryPoint = "SteamController", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamController(); + [DllImport("CSteamworks", EntryPoint = "SteamUGC", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamUGC(); + [DllImport("CSteamworks", EntryPoint = "SteamAppList", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamAppList(); + [DllImport("CSteamworks", EntryPoint = "SteamMusic", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamMusic(); + [DllImport("CSteamworks", EntryPoint = "SteamMusicRemote", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamMusicRemote(); + [DllImport("CSteamworks", EntryPoint = "SteamHTMLSurface", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamHTMLSurface(); + [DllImport("CSteamworks", EntryPoint = "SteamInventory", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamInventory(); + [DllImport("CSteamworks", EntryPoint = "SteamVideo", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamVideo(); +#endregion +#region steam_gameserver.h + [DllImport("CSteamworks", EntryPoint = "GameServer_InitSafe", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool SteamGameServer_InitSafe(uint unIP, ushort usSteamPort, ushort usGamePort, ushort usQueryPort, EServerMode eServerMode, InteropHelp.UTF8StringHandle pchVersionString); + +#if DISABLED + // This depends on how CSteamworks was compiled. By default it's compiled with VERSION_SAFE_STEAM_API_INTERFACES. + [DllImport("CSteamworks", EntryPoint = "GameServer_Init", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool SteamGameServer_Init(uint unIP, ushort usSteamPort, ushort usGamePort, ushort usQueryPort, EServerMode eServerMode, InteropHelp.UTF8StringHandle pchVersionString); +#endif + + [DllImport("CSteamworks", EntryPoint = "GameServer_Shutdown", CallingConvention = CallingConvention.Cdecl)] + public static extern void SteamGameServer_Shutdown(); + + [DllImport("CSteamworks", EntryPoint = "GameServer_RunCallbacks", CallingConvention = CallingConvention.Cdecl)] + public static extern void SteamGameServer_RunCallbacks(); + + [DllImport("CSteamworks", EntryPoint = "GameServer_BSecure", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool SteamGameServer_BSecure(); + + [DllImport("CSteamworks", EntryPoint = "GameServer_GetSteamID", CallingConvention = CallingConvention.Cdecl)] + public static extern ulong SteamGameServer_GetSteamID(); + + [DllImport("CSteamworks", EntryPoint = "GameServer_GetHSteamPipe", CallingConvention = CallingConvention.Cdecl)] + public static extern int SteamGameServer_GetHSteamPipe(); + + [DllImport("CSteamworks", EntryPoint = "GameServer_GetHSteamUser", CallingConvention = CallingConvention.Cdecl)] + public static extern int SteamGameServer_GetHSteamUser(); + + [DllImport("CSteamworks", EntryPoint = "SteamClientGameServer", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamClientGameServer(); + + // SteamGameServerContext Accessors + [DllImport("CSteamworks", EntryPoint = "SteamGameServer", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamGameServer(); + [DllImport("CSteamworks", EntryPoint = "SteamGameServerUtils", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamGameServerUtils(); + [DllImport("CSteamworks", EntryPoint = "SteamGameServerNetworking", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamGameServerNetworking(); + [DllImport("CSteamworks", EntryPoint = "SteamGameServerStats", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamGameServerStats(); + [DllImport("CSteamworks", EntryPoint = "SteamGameServerHTTP", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamGameServerHTTP(); + [DllImport("CSteamworks", EntryPoint = "SteamGameServerInventory", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamGameServerInventory(); + [DllImport("CSteamworks", EntryPoint = "SteamGameServerUGC", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr SteamGameServerUGC(); +#endregion +#region steamencryptedappticket.h + [DllImport("sdkencryptedappticket", CallingConvention = CallingConvention.Cdecl, EntryPoint = "SteamEncryptedAppTicket_BDecryptTicket")] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool BDecryptTicket([In, Out] byte[] rgubTicketEncrypted, uint cubTicketEncrypted, [In, Out] byte[] rgubTicketDecrypted, ref uint pcubTicketDecrypted, [MarshalAs(UnmanagedType.LPArray, SizeConst=Constants.k_nSteamEncryptedAppTicketSymmetricKeyLen)] byte[] rgubKey, int cubKey); + + [DllImport("sdkencryptedappticket", CallingConvention = CallingConvention.Cdecl, EntryPoint = "SteamEncryptedAppTicket_BIsTicketForApp")] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool BIsTicketForApp([In, Out] byte[] rgubTicketDecrypted, uint cubTicketDecrypted, AppId_t nAppID); + + [DllImport("sdkencryptedappticket", CallingConvention = CallingConvention.Cdecl, EntryPoint = "SteamEncryptedAppTicket_GetTicketIssueTime")] + public static extern uint GetTicketIssueTime([In, Out] byte[] rgubTicketDecrypted, uint cubTicketDecrypted); + + [DllImport("sdkencryptedappticket", CallingConvention = CallingConvention.Cdecl, EntryPoint = "SteamEncryptedAppTicket_GetTicketSteamID")] + public static extern void GetTicketSteamID([In, Out] byte[] rgubTicketDecrypted, uint cubTicketDecrypted, out CSteamID psteamID); + + [DllImport("sdkencryptedappticket", CallingConvention = CallingConvention.Cdecl, EntryPoint = "SteamEncryptedAppTicket_GetTicketAppID")] + public static extern uint GetTicketAppID([In, Out] byte[] rgubTicketDecrypted, uint cubTicketDecrypted); + + [DllImport("sdkencryptedappticket", CallingConvention = CallingConvention.Cdecl, EntryPoint = "SteamEncryptedAppTicket_BUserOwnsAppInTicket")] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool BUserOwnsAppInTicket([In, Out] byte[] rgubTicketDecrypted, uint cubTicketDecrypted, AppId_t nAppID); + + [DllImport("sdkencryptedappticket", CallingConvention = CallingConvention.Cdecl, EntryPoint = "SteamEncryptedAppTicket_BUserIsVacBanned")] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool BUserIsVacBanned([In, Out] byte[] rgubTicketDecrypted, uint cubTicketDecrypted); + + [DllImport("sdkencryptedappticket", CallingConvention = CallingConvention.Cdecl, EntryPoint = "SteamEncryptedAppTicket_GetUserVariableData")] + public static extern IntPtr GetUserVariableData([In, Out] byte[] rgubTicketDecrypted, uint cubTicketDecrypted, out uint pcubUserData); +#endregion +#region SteamAppList + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamAppList_GetNumInstalledApps(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamAppList_GetInstalledApps([In, Out] AppId_t[] pvecAppID, uint unMaxAppIDs); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamAppList_GetAppName(AppId_t nAppID, IntPtr pchName, int cchNameMax); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamAppList_GetAppInstallDir(AppId_t nAppID, IntPtr pchDirectory, int cchNameMax); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamAppList_GetAppBuildId(AppId_t nAppID); +#endregion +#region SteamApps + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamApps_BIsSubscribed(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamApps_BIsLowViolence(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamApps_BIsCybercafe(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamApps_BIsVACBanned(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamApps_GetCurrentGameLanguage(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamApps_GetAvailableGameLanguages(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamApps_BIsSubscribedApp(AppId_t appID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamApps_BIsDlcInstalled(AppId_t appID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamApps_GetEarliestPurchaseUnixTime(AppId_t nAppID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamApps_BIsSubscribedFromFreeWeekend(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamApps_GetDLCCount(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamApps_BGetDLCDataByIndex(int iDLC, out AppId_t pAppID, out bool pbAvailable, IntPtr pchName, int cchNameBufferSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamApps_InstallDLC(AppId_t nAppID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamApps_UninstallDLC(AppId_t nAppID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamApps_RequestAppProofOfPurchaseKey(AppId_t nAppID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamApps_GetCurrentBetaName(IntPtr pchName, int cchNameBufferSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamApps_MarkContentCorrupt([MarshalAs(UnmanagedType.I1)] bool bMissingFilesOnly); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamApps_GetInstalledDepots(AppId_t appID, [In, Out] DepotId_t[] pvecDepots, uint cMaxDepots); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamApps_GetAppInstallDir(AppId_t appID, IntPtr pchFolder, uint cchFolderBufferSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamApps_BIsAppInstalled(AppId_t appID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamApps_GetAppOwner(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamApps_GetLaunchQueryParam(InteropHelp.UTF8StringHandle pchKey); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamApps_GetDlcDownloadProgress(AppId_t nAppID, out ulong punBytesDownloaded, out ulong punBytesTotal); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamApps_GetAppBuildId(); +#if _PS3 + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamApps_RegisterActivationCode(InteropHelp.UTF8StringHandle pchActivationCode); +#endif +#endregion +#region SteamClient + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamClient_CreateSteamPipe(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamClient_BReleaseSteamPipe(HSteamPipe hSteamPipe); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamClient_ConnectToGlobalUser(HSteamPipe hSteamPipe); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamClient_CreateLocalUser(out HSteamPipe phSteamPipe, EAccountType eAccountType); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamClient_ReleaseUser(HSteamPipe hSteamPipe, HSteamUser hUser); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamUser(HSteamUser hSteamUser, HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamGameServer(HSteamUser hSteamUser, HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamClient_SetLocalIPBinding(uint unIP, ushort usPort); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamFriends(HSteamUser hSteamUser, HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamUtils(HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamMatchmaking(HSteamUser hSteamUser, HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamMatchmakingServers(HSteamUser hSteamUser, HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamGenericInterface(HSteamUser hSteamUser, HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamUserStats(HSteamUser hSteamUser, HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamGameServerStats(HSteamUser hSteamuser, HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamApps(HSteamUser hSteamUser, HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamNetworking(HSteamUser hSteamUser, HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamRemoteStorage(HSteamUser hSteamuser, HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamScreenshots(HSteamUser hSteamuser, HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamClient_RunFrame(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamClient_GetIPCCallCount(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamClient_SetWarningMessageHook(SteamAPIWarningMessageHook_t pFunction); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamClient_BShutdownIfAllPipesClosed(); +#if _PS3 + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamPS3OverlayRender(); +#endif + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamHTTP(HSteamUser hSteamuser, HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamUnifiedMessages(HSteamUser hSteamuser, HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamController(HSteamUser hSteamUser, HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamUGC(HSteamUser hSteamUser, HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamAppList(HSteamUser hSteamUser, HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamMusic(HSteamUser hSteamuser, HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamMusicRemote(HSteamUser hSteamuser, HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamHTMLSurface(HSteamUser hSteamuser, HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamClient_Set_SteamAPI_CPostAPIResultInProcess(SteamAPI_PostAPIResultInProcess_t func); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamClient_Remove_SteamAPI_CPostAPIResultInProcess(SteamAPI_PostAPIResultInProcess_t func); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamClient_Set_SteamAPI_CCheckCallbackRegisteredInProcess(SteamAPI_CheckCallbackRegistered_t func); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamInventory(HSteamUser hSteamuser, HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamClient_GetISteamVideo(HSteamUser hSteamuser, HSteamPipe hSteamPipe, InteropHelp.UTF8StringHandle pchVersion); +#endregion +#region SteamController + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamController_Init(InteropHelp.UTF8StringHandle pchAbsolutePathToControllerConfigVDF); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamController_Shutdown(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamController_RunFrame(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamController_GetControllerState(uint unControllerIndex, out SteamControllerState_t pState); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamController_TriggerHapticPulse(uint unControllerIndex, ESteamControllerPad eTargetPad, ushort usDurationMicroSec); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamController_SetOverrideMode(InteropHelp.UTF8StringHandle pchMode); +#endregion +#region SteamFriends + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamFriends_GetPersonaName(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamFriends_SetPersonaName(InteropHelp.UTF8StringHandle pchPersonaName); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern EPersonaState ISteamFriends_GetPersonaState(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamFriends_GetFriendCount(EFriendFlags iFriendFlags); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamFriends_GetFriendByIndex(int iFriend, EFriendFlags iFriendFlags); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern EFriendRelationship ISteamFriends_GetFriendRelationship(CSteamID steamIDFriend); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern EPersonaState ISteamFriends_GetFriendPersonaState(CSteamID steamIDFriend); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamFriends_GetFriendPersonaName(CSteamID steamIDFriend); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamFriends_GetFriendGamePlayed(CSteamID steamIDFriend, out FriendGameInfo_t pFriendGameInfo); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamFriends_GetFriendPersonaNameHistory(CSteamID steamIDFriend, int iPersonaName); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamFriends_GetFriendSteamLevel(CSteamID steamIDFriend); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamFriends_GetPlayerNickname(CSteamID steamIDPlayer); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamFriends_GetFriendsGroupCount(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern short ISteamFriends_GetFriendsGroupIDByIndex(int iFG); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamFriends_GetFriendsGroupName(FriendsGroupID_t friendsGroupID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamFriends_GetFriendsGroupMembersCount(FriendsGroupID_t friendsGroupID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamFriends_GetFriendsGroupMembersList(FriendsGroupID_t friendsGroupID, [In, Out] CSteamID[] pOutSteamIDMembers, int nMembersCount); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamFriends_HasFriend(CSteamID steamIDFriend, EFriendFlags iFriendFlags); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamFriends_GetClanCount(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamFriends_GetClanByIndex(int iClan); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamFriends_GetClanName(CSteamID steamIDClan); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamFriends_GetClanTag(CSteamID steamIDClan); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamFriends_GetClanActivityCounts(CSteamID steamIDClan, out int pnOnline, out int pnInGame, out int pnChatting); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamFriends_DownloadClanActivityCounts([In, Out] CSteamID[] psteamIDClans, int cClansToRequest); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamFriends_GetFriendCountFromSource(CSteamID steamIDSource); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamFriends_GetFriendFromSourceByIndex(CSteamID steamIDSource, int iFriend); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamFriends_IsUserInSource(CSteamID steamIDUser, CSteamID steamIDSource); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamFriends_SetInGameVoiceSpeaking(CSteamID steamIDUser, [MarshalAs(UnmanagedType.I1)] bool bSpeaking); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamFriends_ActivateGameOverlay(InteropHelp.UTF8StringHandle pchDialog); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamFriends_ActivateGameOverlayToUser(InteropHelp.UTF8StringHandle pchDialog, CSteamID steamID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamFriends_ActivateGameOverlayToWebPage(InteropHelp.UTF8StringHandle pchURL); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamFriends_ActivateGameOverlayToStore(AppId_t nAppID, EOverlayToStoreFlag eFlag); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamFriends_SetPlayedWith(CSteamID steamIDUserPlayedWith); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamFriends_ActivateGameOverlayInviteDialog(CSteamID steamIDLobby); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamFriends_GetSmallFriendAvatar(CSteamID steamIDFriend); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamFriends_GetMediumFriendAvatar(CSteamID steamIDFriend); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamFriends_GetLargeFriendAvatar(CSteamID steamIDFriend); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamFriends_RequestUserInformation(CSteamID steamIDUser, [MarshalAs(UnmanagedType.I1)] bool bRequireNameOnly); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamFriends_RequestClanOfficerList(CSteamID steamIDClan); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamFriends_GetClanOwner(CSteamID steamIDClan); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamFriends_GetClanOfficerCount(CSteamID steamIDClan); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamFriends_GetClanOfficerByIndex(CSteamID steamIDClan, int iOfficer); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamFriends_GetUserRestrictions(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamFriends_SetRichPresence(InteropHelp.UTF8StringHandle pchKey, InteropHelp.UTF8StringHandle pchValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamFriends_ClearRichPresence(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamFriends_GetFriendRichPresence(CSteamID steamIDFriend, InteropHelp.UTF8StringHandle pchKey); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamFriends_GetFriendRichPresenceKeyCount(CSteamID steamIDFriend); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamFriends_GetFriendRichPresenceKeyByIndex(CSteamID steamIDFriend, int iKey); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamFriends_RequestFriendRichPresence(CSteamID steamIDFriend); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamFriends_InviteUserToGame(CSteamID steamIDFriend, InteropHelp.UTF8StringHandle pchConnectString); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamFriends_GetCoplayFriendCount(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamFriends_GetCoplayFriend(int iCoplayFriend); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamFriends_GetFriendCoplayTime(CSteamID steamIDFriend); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamFriends_GetFriendCoplayGame(CSteamID steamIDFriend); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamFriends_JoinClanChatRoom(CSteamID steamIDClan); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamFriends_LeaveClanChatRoom(CSteamID steamIDClan); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamFriends_GetClanChatMemberCount(CSteamID steamIDClan); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamFriends_GetChatMemberByIndex(CSteamID steamIDClan, int iUser); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamFriends_SendClanChatMessage(CSteamID steamIDClanChat, InteropHelp.UTF8StringHandle pchText); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamFriends_GetClanChatMessage(CSteamID steamIDClanChat, int iMessage, IntPtr prgchText, int cchTextMax, out EChatEntryType peChatEntryType, out CSteamID psteamidChatter); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamFriends_IsClanChatAdmin(CSteamID steamIDClanChat, CSteamID steamIDUser); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamFriends_IsClanChatWindowOpenInSteam(CSteamID steamIDClanChat); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamFriends_OpenClanChatWindowInSteam(CSteamID steamIDClanChat); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamFriends_CloseClanChatWindowInSteam(CSteamID steamIDClanChat); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamFriends_SetListenForFriendsMessages([MarshalAs(UnmanagedType.I1)] bool bInterceptEnabled); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamFriends_ReplyToFriendMessage(CSteamID steamIDFriend, InteropHelp.UTF8StringHandle pchMsgToSend); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamFriends_GetFriendMessage(CSteamID steamIDFriend, int iMessageID, IntPtr pvData, int cubData, out EChatEntryType peChatEntryType); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamFriends_GetFollowerCount(CSteamID steamID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamFriends_IsFollowing(CSteamID steamID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamFriends_EnumerateFollowingList(uint unStartIndex); +#endregion +#region SteamGameServer + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServer_InitGameServer(uint unIP, ushort usGamePort, ushort usQueryPort, uint unFlags, AppId_t nGameAppId, InteropHelp.UTF8StringHandle pchVersionString); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_SetProduct(InteropHelp.UTF8StringHandle pszProduct); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_SetGameDescription(InteropHelp.UTF8StringHandle pszGameDescription); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_SetModDir(InteropHelp.UTF8StringHandle pszModDir); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_SetDedicatedServer([MarshalAs(UnmanagedType.I1)] bool bDedicated); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_LogOn(InteropHelp.UTF8StringHandle pszToken); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_LogOnAnonymous(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_LogOff(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServer_BLoggedOn(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServer_BSecure(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServer_GetSteamID(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServer_WasRestartRequested(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_SetMaxPlayerCount(int cPlayersMax); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_SetBotPlayerCount(int cBotplayers); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_SetServerName(InteropHelp.UTF8StringHandle pszServerName); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_SetMapName(InteropHelp.UTF8StringHandle pszMapName); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_SetPasswordProtected([MarshalAs(UnmanagedType.I1)] bool bPasswordProtected); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_SetSpectatorPort(ushort unSpectatorPort); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_SetSpectatorServerName(InteropHelp.UTF8StringHandle pszSpectatorServerName); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_ClearAllKeyValues(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_SetKeyValue(InteropHelp.UTF8StringHandle pKey, InteropHelp.UTF8StringHandle pValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_SetGameTags(InteropHelp.UTF8StringHandle pchGameTags); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_SetGameData(InteropHelp.UTF8StringHandle pchGameData); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_SetRegion(InteropHelp.UTF8StringHandle pszRegion); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServer_SendUserConnectAndAuthenticate(uint unIPClient, [In, Out] byte[] pvAuthBlob, uint cubAuthBlobSize, out CSteamID pSteamIDUser); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServer_CreateUnauthenticatedUserConnection(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_SendUserDisconnect(CSteamID steamIDUser); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServer_BUpdateUserData(CSteamID steamIDUser, InteropHelp.UTF8StringHandle pchPlayerName, uint uScore); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamGameServer_GetAuthSessionTicket([In, Out] byte[] pTicket, int cbMaxTicket, out uint pcbTicket); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern EBeginAuthSessionResult ISteamGameServer_BeginAuthSession([In, Out] byte[] pAuthTicket, int cbAuthTicket, CSteamID steamID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_EndAuthSession(CSteamID steamID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_CancelAuthTicket(HAuthTicket hAuthTicket); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern EUserHasLicenseForAppResult ISteamGameServer_UserHasLicenseForApp(CSteamID steamID, AppId_t appID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServer_RequestUserGroupStatus(CSteamID steamIDUser, CSteamID steamIDGroup); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_GetGameplayStats(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServer_GetServerReputation(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamGameServer_GetPublicIP(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServer_HandleIncomingPacket([In, Out] byte[] pData, int cbData, uint srcIP, ushort srcPort); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamGameServer_GetNextOutgoingPacket([In, Out] byte[] pOut, int cbMaxOut, out uint pNetAdr, out ushort pPort); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_EnableHeartbeats([MarshalAs(UnmanagedType.I1)] bool bActive); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_SetHeartbeatInterval(int iHeartbeatInterval); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_ForceHeartbeat(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServer_AssociateWithClan(CSteamID steamIDClan); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServer_ComputeNewPlayerCompatibility(CSteamID steamIDNewPlayer); +#endregion +#region SteamGameServerStats + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServerStats_RequestUserStats(CSteamID steamIDUser); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerStats_GetUserStat(CSteamID steamIDUser, InteropHelp.UTF8StringHandle pchName, out int pData); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerStats_GetUserStat_(CSteamID steamIDUser, InteropHelp.UTF8StringHandle pchName, out float pData); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerStats_GetUserAchievement(CSteamID steamIDUser, InteropHelp.UTF8StringHandle pchName, out bool pbAchieved); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerStats_SetUserStat(CSteamID steamIDUser, InteropHelp.UTF8StringHandle pchName, int nData); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerStats_SetUserStat_(CSteamID steamIDUser, InteropHelp.UTF8StringHandle pchName, float fData); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerStats_UpdateUserAvgRateStat(CSteamID steamIDUser, InteropHelp.UTF8StringHandle pchName, float flCountThisSession, double dSessionLength); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerStats_SetUserAchievement(CSteamID steamIDUser, InteropHelp.UTF8StringHandle pchName); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerStats_ClearUserAchievement(CSteamID steamIDUser, InteropHelp.UTF8StringHandle pchName); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServerStats_StoreUserStats(CSteamID steamIDUser); +#endregion +#region SteamHTMLSurface + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTMLSurface_Init(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTMLSurface_Shutdown(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamHTMLSurface_CreateBrowser(InteropHelp.UTF8StringHandle pchUserAgent, InteropHelp.UTF8StringHandle pchUserCSS); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_RemoveBrowser(HHTMLBrowser unBrowserHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_LoadURL(HHTMLBrowser unBrowserHandle, InteropHelp.UTF8StringHandle pchURL, InteropHelp.UTF8StringHandle pchPostData); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_SetSize(HHTMLBrowser unBrowserHandle, uint unWidth, uint unHeight); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_StopLoad(HHTMLBrowser unBrowserHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_Reload(HHTMLBrowser unBrowserHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_GoBack(HHTMLBrowser unBrowserHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_GoForward(HHTMLBrowser unBrowserHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_AddHeader(HHTMLBrowser unBrowserHandle, InteropHelp.UTF8StringHandle pchKey, InteropHelp.UTF8StringHandle pchValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_ExecuteJavascript(HHTMLBrowser unBrowserHandle, InteropHelp.UTF8StringHandle pchScript); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_MouseUp(HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_MouseDown(HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_MouseDoubleClick(HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_MouseMove(HHTMLBrowser unBrowserHandle, int x, int y); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_MouseWheel(HHTMLBrowser unBrowserHandle, int nDelta); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_KeyDown(HHTMLBrowser unBrowserHandle, uint nNativeKeyCode, EHTMLKeyModifiers eHTMLKeyModifiers); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_KeyUp(HHTMLBrowser unBrowserHandle, uint nNativeKeyCode, EHTMLKeyModifiers eHTMLKeyModifiers); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_KeyChar(HHTMLBrowser unBrowserHandle, uint cUnicodeChar, EHTMLKeyModifiers eHTMLKeyModifiers); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_SetHorizontalScroll(HHTMLBrowser unBrowserHandle, uint nAbsolutePixelScroll); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_SetVerticalScroll(HHTMLBrowser unBrowserHandle, uint nAbsolutePixelScroll); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_SetKeyFocus(HHTMLBrowser unBrowserHandle, [MarshalAs(UnmanagedType.I1)] bool bHasKeyFocus); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_ViewSource(HHTMLBrowser unBrowserHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_CopyToClipboard(HHTMLBrowser unBrowserHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_PasteFromClipboard(HHTMLBrowser unBrowserHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_Find(HHTMLBrowser unBrowserHandle, InteropHelp.UTF8StringHandle pchSearchStr, [MarshalAs(UnmanagedType.I1)] bool bCurrentlyInFind, [MarshalAs(UnmanagedType.I1)] bool bReverse); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_StopFind(HHTMLBrowser unBrowserHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_GetLinkAtPosition(HHTMLBrowser unBrowserHandle, int x, int y); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_SetCookie(InteropHelp.UTF8StringHandle pchHostname, InteropHelp.UTF8StringHandle pchKey, InteropHelp.UTF8StringHandle pchValue, InteropHelp.UTF8StringHandle pchPath, uint nExpires, [MarshalAs(UnmanagedType.I1)] bool bSecure, [MarshalAs(UnmanagedType.I1)] bool bHTTPOnly); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_SetPageScaleFactor(HHTMLBrowser unBrowserHandle, float flZoom, int nPointX, int nPointY); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_SetBackgroundMode(HHTMLBrowser unBrowserHandle, [MarshalAs(UnmanagedType.I1)] bool bBackgroundMode); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_AllowStartRequest(HHTMLBrowser unBrowserHandle, [MarshalAs(UnmanagedType.I1)] bool bAllowed); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_JSDialogResponse(HHTMLBrowser unBrowserHandle, [MarshalAs(UnmanagedType.I1)] bool bResult); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamHTMLSurface_FileLoadDialogResponse(HHTMLBrowser unBrowserHandle, IntPtr pchSelectedFiles); +#endregion +#region SteamHTTP + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamHTTP_CreateHTTPRequest(EHTTPMethod eHTTPRequestMethod, InteropHelp.UTF8StringHandle pchAbsoluteURL); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_SetHTTPRequestContextValue(HTTPRequestHandle hRequest, ulong ulContextValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_SetHTTPRequestNetworkActivityTimeout(HTTPRequestHandle hRequest, uint unTimeoutSeconds); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_SetHTTPRequestHeaderValue(HTTPRequestHandle hRequest, InteropHelp.UTF8StringHandle pchHeaderName, InteropHelp.UTF8StringHandle pchHeaderValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_SetHTTPRequestGetOrPostParameter(HTTPRequestHandle hRequest, InteropHelp.UTF8StringHandle pchParamName, InteropHelp.UTF8StringHandle pchParamValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_SendHTTPRequest(HTTPRequestHandle hRequest, out SteamAPICall_t pCallHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_SendHTTPRequestAndStreamResponse(HTTPRequestHandle hRequest, out SteamAPICall_t pCallHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_DeferHTTPRequest(HTTPRequestHandle hRequest); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_PrioritizeHTTPRequest(HTTPRequestHandle hRequest); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_GetHTTPResponseHeaderSize(HTTPRequestHandle hRequest, InteropHelp.UTF8StringHandle pchHeaderName, out uint unResponseHeaderSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_GetHTTPResponseHeaderValue(HTTPRequestHandle hRequest, InteropHelp.UTF8StringHandle pchHeaderName, [In, Out] byte[] pHeaderValueBuffer, uint unBufferSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_GetHTTPResponseBodySize(HTTPRequestHandle hRequest, out uint unBodySize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_GetHTTPResponseBodyData(HTTPRequestHandle hRequest, [In, Out] byte[] pBodyDataBuffer, uint unBufferSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_GetHTTPStreamingResponseBodyData(HTTPRequestHandle hRequest, uint cOffset, [In, Out] byte[] pBodyDataBuffer, uint unBufferSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_ReleaseHTTPRequest(HTTPRequestHandle hRequest); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_GetHTTPDownloadProgressPct(HTTPRequestHandle hRequest, out float pflPercentOut); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_SetHTTPRequestRawPostBody(HTTPRequestHandle hRequest, InteropHelp.UTF8StringHandle pchContentType, [In, Out] byte[] pubBody, uint unBodyLen); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamHTTP_CreateCookieContainer([MarshalAs(UnmanagedType.I1)] bool bAllowResponsesToModify); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_ReleaseCookieContainer(HTTPCookieContainerHandle hCookieContainer); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_SetCookie(HTTPCookieContainerHandle hCookieContainer, InteropHelp.UTF8StringHandle pchHost, InteropHelp.UTF8StringHandle pchUrl, InteropHelp.UTF8StringHandle pchCookie); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_SetHTTPRequestCookieContainer(HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_SetHTTPRequestUserAgentInfo(HTTPRequestHandle hRequest, InteropHelp.UTF8StringHandle pchUserAgentInfo); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate(HTTPRequestHandle hRequest, [MarshalAs(UnmanagedType.I1)] bool bRequireVerifiedCertificate); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS(HTTPRequestHandle hRequest, uint unMilliseconds); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamHTTP_GetHTTPRequestWasTimedOut(HTTPRequestHandle hRequest, out bool pbWasTimedOut); +#endregion +#region SteamInventory + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern EResult ISteamInventory_GetResultStatus(SteamInventoryResult_t resultHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamInventory_GetResultItems(SteamInventoryResult_t resultHandle, [In, Out] SteamItemDetails_t[] pOutItemsArray, ref uint punOutItemsArraySize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamInventory_GetResultTimestamp(SteamInventoryResult_t resultHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamInventory_CheckResultSteamID(SteamInventoryResult_t resultHandle, CSteamID steamIDExpected); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamInventory_DestroyResult(SteamInventoryResult_t resultHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamInventory_GetAllItems(out SteamInventoryResult_t pResultHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamInventory_GetItemsByID(out SteamInventoryResult_t pResultHandle, [In, Out] SteamItemInstanceID_t[] pInstanceIDs, uint unCountInstanceIDs); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamInventory_SerializeResult(SteamInventoryResult_t resultHandle, [In, Out] byte[] pOutBuffer, out uint punOutBufferSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamInventory_DeserializeResult(out SteamInventoryResult_t pOutResultHandle, [In, Out] byte[] pBuffer, uint unBufferSize, [MarshalAs(UnmanagedType.I1)] bool bRESERVED_MUST_BE_FALSE); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamInventory_GenerateItems(out SteamInventoryResult_t pResultHandle, [In, Out] SteamItemDef_t[] pArrayItemDefs, [In, Out] uint[] punArrayQuantity, uint unArrayLength); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamInventory_GrantPromoItems(out SteamInventoryResult_t pResultHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamInventory_AddPromoItem(out SteamInventoryResult_t pResultHandle, SteamItemDef_t itemDef); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamInventory_AddPromoItems(out SteamInventoryResult_t pResultHandle, [In, Out] SteamItemDef_t[] pArrayItemDefs, uint unArrayLength); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamInventory_ConsumeItem(out SteamInventoryResult_t pResultHandle, SteamItemInstanceID_t itemConsume, uint unQuantity); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamInventory_ExchangeItems(out SteamInventoryResult_t pResultHandle, [In, Out] SteamItemDef_t[] pArrayGenerate, [In, Out] uint[] punArrayGenerateQuantity, uint unArrayGenerateLength, [In, Out] SteamItemInstanceID_t[] pArrayDestroy, [In, Out] uint[] punArrayDestroyQuantity, uint unArrayDestroyLength); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamInventory_TransferItemQuantity(out SteamInventoryResult_t pResultHandle, SteamItemInstanceID_t itemIdSource, uint unQuantity, SteamItemInstanceID_t itemIdDest); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamInventory_SendItemDropHeartbeat(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamInventory_TriggerItemDrop(out SteamInventoryResult_t pResultHandle, SteamItemDef_t dropListDefinition); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamInventory_TradeItems(out SteamInventoryResult_t pResultHandle, CSteamID steamIDTradePartner, [In, Out] SteamItemInstanceID_t[] pArrayGive, [In, Out] uint[] pArrayGiveQuantity, uint nArrayGiveLength, [In, Out] SteamItemInstanceID_t[] pArrayGet, [In, Out] uint[] pArrayGetQuantity, uint nArrayGetLength); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamInventory_LoadItemDefinitions(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamInventory_GetItemDefinitionIDs([In, Out] SteamItemDef_t[] pItemDefIDs, out uint punItemDefIDsArraySize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamInventory_GetItemDefinitionProperty(SteamItemDef_t iDefinition, InteropHelp.UTF8StringHandle pchPropertyName, IntPtr pchValueBuffer, ref uint punValueBufferSize); +#endregion +#region SteamMatchmaking + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamMatchmaking_GetFavoriteGameCount(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMatchmaking_GetFavoriteGame(int iGame, out AppId_t pnAppID, out uint pnIP, out ushort pnConnPort, out ushort pnQueryPort, out uint punFlags, out uint pRTime32LastPlayedOnServer); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamMatchmaking_AddFavoriteGame(AppId_t nAppID, uint nIP, ushort nConnPort, ushort nQueryPort, uint unFlags, uint rTime32LastPlayedOnServer); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMatchmaking_RemoveFavoriteGame(AppId_t nAppID, uint nIP, ushort nConnPort, ushort nQueryPort, uint unFlags); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamMatchmaking_RequestLobbyList(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamMatchmaking_AddRequestLobbyListStringFilter(InteropHelp.UTF8StringHandle pchKeyToMatch, InteropHelp.UTF8StringHandle pchValueToMatch, ELobbyComparison eComparisonType); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamMatchmaking_AddRequestLobbyListNumericalFilter(InteropHelp.UTF8StringHandle pchKeyToMatch, int nValueToMatch, ELobbyComparison eComparisonType); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamMatchmaking_AddRequestLobbyListNearValueFilter(InteropHelp.UTF8StringHandle pchKeyToMatch, int nValueToBeCloseTo); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable(int nSlotsAvailable); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamMatchmaking_AddRequestLobbyListDistanceFilter(ELobbyDistanceFilter eLobbyDistanceFilter); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamMatchmaking_AddRequestLobbyListResultCountFilter(int cMaxResults); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter(CSteamID steamIDLobby); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamMatchmaking_GetLobbyByIndex(int iLobby); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamMatchmaking_CreateLobby(ELobbyType eLobbyType, int cMaxMembers); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamMatchmaking_JoinLobby(CSteamID steamIDLobby); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamMatchmaking_LeaveLobby(CSteamID steamIDLobby); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMatchmaking_InviteUserToLobby(CSteamID steamIDLobby, CSteamID steamIDInvitee); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamMatchmaking_GetNumLobbyMembers(CSteamID steamIDLobby); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamMatchmaking_GetLobbyMemberByIndex(CSteamID steamIDLobby, int iMember); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamMatchmaking_GetLobbyData(CSteamID steamIDLobby, InteropHelp.UTF8StringHandle pchKey); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMatchmaking_SetLobbyData(CSteamID steamIDLobby, InteropHelp.UTF8StringHandle pchKey, InteropHelp.UTF8StringHandle pchValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamMatchmaking_GetLobbyDataCount(CSteamID steamIDLobby); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMatchmaking_GetLobbyDataByIndex(CSteamID steamIDLobby, int iLobbyData, IntPtr pchKey, int cchKeyBufferSize, IntPtr pchValue, int cchValueBufferSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMatchmaking_DeleteLobbyData(CSteamID steamIDLobby, InteropHelp.UTF8StringHandle pchKey); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamMatchmaking_GetLobbyMemberData(CSteamID steamIDLobby, CSteamID steamIDUser, InteropHelp.UTF8StringHandle pchKey); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamMatchmaking_SetLobbyMemberData(CSteamID steamIDLobby, InteropHelp.UTF8StringHandle pchKey, InteropHelp.UTF8StringHandle pchValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMatchmaking_SendLobbyChatMsg(CSteamID steamIDLobby, [In, Out] byte[] pvMsgBody, int cubMsgBody); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamMatchmaking_GetLobbyChatEntry(CSteamID steamIDLobby, int iChatID, out CSteamID pSteamIDUser, [In, Out] byte[] pvData, int cubData, out EChatEntryType peChatEntryType); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMatchmaking_RequestLobbyData(CSteamID steamIDLobby); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamMatchmaking_SetLobbyGameServer(CSteamID steamIDLobby, uint unGameServerIP, ushort unGameServerPort, CSteamID steamIDGameServer); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMatchmaking_GetLobbyGameServer(CSteamID steamIDLobby, out uint punGameServerIP, out ushort punGameServerPort, out CSteamID psteamIDGameServer); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMatchmaking_SetLobbyMemberLimit(CSteamID steamIDLobby, int cMaxMembers); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamMatchmaking_GetLobbyMemberLimit(CSteamID steamIDLobby); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMatchmaking_SetLobbyType(CSteamID steamIDLobby, ELobbyType eLobbyType); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMatchmaking_SetLobbyJoinable(CSteamID steamIDLobby, [MarshalAs(UnmanagedType.I1)] bool bLobbyJoinable); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamMatchmaking_GetLobbyOwner(CSteamID steamIDLobby); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMatchmaking_SetLobbyOwner(CSteamID steamIDLobby, CSteamID steamIDNewOwner); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMatchmaking_SetLinkedLobby(CSteamID steamIDLobby, CSteamID steamIDLobbyDependent); +#if _PS3 + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamMatchmaking_CheckForPSNGameBootInvite(uint iGameBootAttributes); +#endif +#endregion +#region SteamMatchmakingServers + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamMatchmakingServers_RequestInternetServerList(AppId_t iApp, IntPtr ppchFilters, uint nFilters, IntPtr pRequestServersResponse); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamMatchmakingServers_RequestLANServerList(AppId_t iApp, IntPtr pRequestServersResponse); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamMatchmakingServers_RequestFriendsServerList(AppId_t iApp, IntPtr ppchFilters, uint nFilters, IntPtr pRequestServersResponse); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamMatchmakingServers_RequestFavoritesServerList(AppId_t iApp, IntPtr ppchFilters, uint nFilters, IntPtr pRequestServersResponse); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamMatchmakingServers_RequestHistoryServerList(AppId_t iApp, IntPtr ppchFilters, uint nFilters, IntPtr pRequestServersResponse); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamMatchmakingServers_RequestSpectatorServerList(AppId_t iApp, IntPtr ppchFilters, uint nFilters, IntPtr pRequestServersResponse); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamMatchmakingServers_ReleaseRequest(HServerListRequest hServerListRequest); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamMatchmakingServers_GetServerDetails(HServerListRequest hRequest, int iServer); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamMatchmakingServers_CancelQuery(HServerListRequest hRequest); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamMatchmakingServers_RefreshQuery(HServerListRequest hRequest); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMatchmakingServers_IsRefreshing(HServerListRequest hRequest); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamMatchmakingServers_GetServerCount(HServerListRequest hRequest); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamMatchmakingServers_RefreshServer(HServerListRequest hRequest, int iServer); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamMatchmakingServers_PingServer(uint unIP, ushort usPort, IntPtr pRequestServersResponse); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamMatchmakingServers_PlayerDetails(uint unIP, ushort usPort, IntPtr pRequestServersResponse); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamMatchmakingServers_ServerRules(uint unIP, ushort usPort, IntPtr pRequestServersResponse); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamMatchmakingServers_CancelServerQuery(HServerQuery hServerQuery); +#endregion +#region SteamMusic + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusic_BIsEnabled(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusic_BIsPlaying(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern AudioPlayback_Status ISteamMusic_GetPlaybackStatus(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamMusic_Play(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamMusic_Pause(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamMusic_PlayPrevious(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamMusic_PlayNext(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamMusic_SetVolume(float flVolume); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern float ISteamMusic_GetVolume(); +#endregion +#region SteamMusicRemote + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_RegisterSteamMusicRemote(InteropHelp.UTF8StringHandle pchName); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_DeregisterSteamMusicRemote(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_BIsCurrentMusicRemote(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_BActivationSuccess([MarshalAs(UnmanagedType.I1)] bool bValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_SetDisplayName(InteropHelp.UTF8StringHandle pchDisplayName); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_SetPNGIcon_64x64([In, Out] byte[] pvBuffer, uint cbBufferLength); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_EnablePlayPrevious([MarshalAs(UnmanagedType.I1)] bool bValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_EnablePlayNext([MarshalAs(UnmanagedType.I1)] bool bValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_EnableShuffled([MarshalAs(UnmanagedType.I1)] bool bValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_EnableLooped([MarshalAs(UnmanagedType.I1)] bool bValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_EnableQueue([MarshalAs(UnmanagedType.I1)] bool bValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_EnablePlaylists([MarshalAs(UnmanagedType.I1)] bool bValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_UpdatePlaybackStatus(AudioPlayback_Status nStatus); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_UpdateShuffled([MarshalAs(UnmanagedType.I1)] bool bValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_UpdateLooped([MarshalAs(UnmanagedType.I1)] bool bValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_UpdateVolume(float flValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_CurrentEntryWillChange(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_CurrentEntryIsAvailable([MarshalAs(UnmanagedType.I1)] bool bAvailable); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_UpdateCurrentEntryText(InteropHelp.UTF8StringHandle pchText); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds(int nValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_UpdateCurrentEntryCoverArt([In, Out] byte[] pvBuffer, uint cbBufferLength); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_CurrentEntryDidChange(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_QueueWillChange(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_ResetQueueEntries(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_SetQueueEntry(int nID, int nPosition, InteropHelp.UTF8StringHandle pchEntryText); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_SetCurrentQueueEntry(int nID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_QueueDidChange(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_PlaylistWillChange(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_ResetPlaylistEntries(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_SetPlaylistEntry(int nID, int nPosition, InteropHelp.UTF8StringHandle pchEntryText); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_SetCurrentPlaylistEntry(int nID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamMusicRemote_PlaylistDidChange(); +#endregion +#region SteamNetworking + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamNetworking_SendP2PPacket(CSteamID steamIDRemote, [In, Out] byte[] pubData, uint cubData, EP2PSend eP2PSendType, int nChannel); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamNetworking_IsP2PPacketAvailable(out uint pcubMsgSize, int nChannel); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamNetworking_ReadP2PPacket([In, Out] byte[] pubDest, uint cubDest, out uint pcubMsgSize, out CSteamID psteamIDRemote, int nChannel); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamNetworking_AcceptP2PSessionWithUser(CSteamID steamIDRemote); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamNetworking_CloseP2PSessionWithUser(CSteamID steamIDRemote); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamNetworking_CloseP2PChannelWithUser(CSteamID steamIDRemote, int nChannel); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamNetworking_GetP2PSessionState(CSteamID steamIDRemote, out P2PSessionState_t pConnectionState); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamNetworking_AllowP2PPacketRelay([MarshalAs(UnmanagedType.I1)] bool bAllow); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamNetworking_CreateListenSocket(int nVirtualP2PPort, uint nIP, ushort nPort, [MarshalAs(UnmanagedType.I1)] bool bAllowUseOfPacketRelay); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamNetworking_CreateP2PConnectionSocket(CSteamID steamIDTarget, int nVirtualPort, int nTimeoutSec, [MarshalAs(UnmanagedType.I1)] bool bAllowUseOfPacketRelay); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamNetworking_CreateConnectionSocket(uint nIP, ushort nPort, int nTimeoutSec); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamNetworking_DestroySocket(SNetSocket_t hSocket, [MarshalAs(UnmanagedType.I1)] bool bNotifyRemoteEnd); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamNetworking_DestroyListenSocket(SNetListenSocket_t hSocket, [MarshalAs(UnmanagedType.I1)] bool bNotifyRemoteEnd); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamNetworking_SendDataOnSocket(SNetSocket_t hSocket, IntPtr pubData, uint cubData, [MarshalAs(UnmanagedType.I1)] bool bReliable); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamNetworking_IsDataAvailableOnSocket(SNetSocket_t hSocket, out uint pcubMsgSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamNetworking_RetrieveDataFromSocket(SNetSocket_t hSocket, IntPtr pubDest, uint cubDest, out uint pcubMsgSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamNetworking_IsDataAvailable(SNetListenSocket_t hListenSocket, out uint pcubMsgSize, out SNetSocket_t phSocket); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamNetworking_RetrieveData(SNetListenSocket_t hListenSocket, IntPtr pubDest, uint cubDest, out uint pcubMsgSize, out SNetSocket_t phSocket); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamNetworking_GetSocketInfo(SNetSocket_t hSocket, out CSteamID pSteamIDRemote, out int peSocketStatus, out uint punIPRemote, out ushort punPortRemote); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamNetworking_GetListenSocketInfo(SNetListenSocket_t hListenSocket, out uint pnIP, out ushort pnPort); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ESNetSocketConnectionType ISteamNetworking_GetSocketConnectionType(SNetSocket_t hSocket); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamNetworking_GetMaxPacketSize(SNetSocket_t hSocket); +#endregion +#region SteamRemoteStorage + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_FileWrite(InteropHelp.UTF8StringHandle pchFile, [In, Out] byte[] pvData, int cubData); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamRemoteStorage_FileRead(InteropHelp.UTF8StringHandle pchFile, [In, Out] byte[] pvData, int cubDataToRead); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_FileForget(InteropHelp.UTF8StringHandle pchFile); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_FileDelete(InteropHelp.UTF8StringHandle pchFile); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamRemoteStorage_FileShare(InteropHelp.UTF8StringHandle pchFile); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_SetSyncPlatforms(InteropHelp.UTF8StringHandle pchFile, ERemoteStoragePlatform eRemoteStoragePlatform); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamRemoteStorage_FileWriteStreamOpen(InteropHelp.UTF8StringHandle pchFile); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_FileWriteStreamWriteChunk(UGCFileWriteStreamHandle_t writeHandle, [In, Out] byte[] pvData, int cubData); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_FileWriteStreamClose(UGCFileWriteStreamHandle_t writeHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_FileWriteStreamCancel(UGCFileWriteStreamHandle_t writeHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_FileExists(InteropHelp.UTF8StringHandle pchFile); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_FilePersisted(InteropHelp.UTF8StringHandle pchFile); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamRemoteStorage_GetFileSize(InteropHelp.UTF8StringHandle pchFile); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern long ISteamRemoteStorage_GetFileTimestamp(InteropHelp.UTF8StringHandle pchFile); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ERemoteStoragePlatform ISteamRemoteStorage_GetSyncPlatforms(InteropHelp.UTF8StringHandle pchFile); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamRemoteStorage_GetFileCount(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamRemoteStorage_GetFileNameAndSize(int iFile, out int pnFileSizeInBytes); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_GetQuota(out int pnTotalBytes, out int puAvailableBytes); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_IsCloudEnabledForAccount(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_IsCloudEnabledForApp(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamRemoteStorage_SetCloudEnabledForApp([MarshalAs(UnmanagedType.I1)] bool bEnabled); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamRemoteStorage_UGCDownload(UGCHandle_t hContent, uint unPriority); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_GetUGCDownloadProgress(UGCHandle_t hContent, out int pnBytesDownloaded, out int pnBytesExpected); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_GetUGCDetails(UGCHandle_t hContent, out AppId_t pnAppID, out IntPtr ppchName, out int pnFileSizeInBytes, out CSteamID pSteamIDOwner); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamRemoteStorage_UGCRead(UGCHandle_t hContent, [In, Out] byte[] pvData, int cubDataToRead, uint cOffset, EUGCReadAction eAction); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamRemoteStorage_GetCachedUGCCount(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamRemoteStorage_GetCachedUGCHandle(int iCachedContent); +#if _PS3 || _SERVER + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamRemoteStorage_GetFileListFromServer(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_FileFetch(InteropHelp.UTF8StringHandle pchFile); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_FilePersist(InteropHelp.UTF8StringHandle pchFile); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_SynchronizeToClient(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_SynchronizeToServer(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_ResetFileRequestState(); +#endif + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamRemoteStorage_PublishWorkshopFile(InteropHelp.UTF8StringHandle pchFile, InteropHelp.UTF8StringHandle pchPreviewFile, AppId_t nConsumerAppId, InteropHelp.UTF8StringHandle pchTitle, InteropHelp.UTF8StringHandle pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, IntPtr pTags, EWorkshopFileType eWorkshopFileType); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamRemoteStorage_CreatePublishedFileUpdateRequest(PublishedFileId_t unPublishedFileId); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_UpdatePublishedFileFile(PublishedFileUpdateHandle_t updateHandle, InteropHelp.UTF8StringHandle pchFile); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_UpdatePublishedFilePreviewFile(PublishedFileUpdateHandle_t updateHandle, InteropHelp.UTF8StringHandle pchPreviewFile); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_UpdatePublishedFileTitle(PublishedFileUpdateHandle_t updateHandle, InteropHelp.UTF8StringHandle pchTitle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_UpdatePublishedFileDescription(PublishedFileUpdateHandle_t updateHandle, InteropHelp.UTF8StringHandle pchDescription); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_UpdatePublishedFileVisibility(PublishedFileUpdateHandle_t updateHandle, ERemoteStoragePublishedFileVisibility eVisibility); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_UpdatePublishedFileTags(PublishedFileUpdateHandle_t updateHandle, IntPtr pTags); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamRemoteStorage_CommitPublishedFileUpdate(PublishedFileUpdateHandle_t updateHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamRemoteStorage_GetPublishedFileDetails(PublishedFileId_t unPublishedFileId, uint unMaxSecondsOld); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamRemoteStorage_DeletePublishedFile(PublishedFileId_t unPublishedFileId); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamRemoteStorage_EnumerateUserPublishedFiles(uint unStartIndex); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamRemoteStorage_SubscribePublishedFile(PublishedFileId_t unPublishedFileId); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamRemoteStorage_EnumerateUserSubscribedFiles(uint unStartIndex); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamRemoteStorage_UnsubscribePublishedFile(PublishedFileId_t unPublishedFileId); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription(PublishedFileUpdateHandle_t updateHandle, InteropHelp.UTF8StringHandle pchChangeDescription); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamRemoteStorage_GetPublishedItemVoteDetails(PublishedFileId_t unPublishedFileId); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamRemoteStorage_UpdateUserPublishedItemVote(PublishedFileId_t unPublishedFileId, [MarshalAs(UnmanagedType.I1)] bool bVoteUp); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamRemoteStorage_GetUserPublishedItemVoteDetails(PublishedFileId_t unPublishedFileId); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles(CSteamID steamId, uint unStartIndex, IntPtr pRequiredTags, IntPtr pExcludedTags); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamRemoteStorage_PublishVideo(EWorkshopVideoProvider eVideoProvider, InteropHelp.UTF8StringHandle pchVideoAccount, InteropHelp.UTF8StringHandle pchVideoIdentifier, InteropHelp.UTF8StringHandle pchPreviewFile, AppId_t nConsumerAppId, InteropHelp.UTF8StringHandle pchTitle, InteropHelp.UTF8StringHandle pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, IntPtr pTags); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamRemoteStorage_SetUserPublishedFileAction(PublishedFileId_t unPublishedFileId, EWorkshopFileAction eAction); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamRemoteStorage_EnumeratePublishedFilesByUserAction(EWorkshopFileAction eAction, uint unStartIndex); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamRemoteStorage_EnumeratePublishedWorkshopFiles(EWorkshopEnumerationType eEnumerationType, uint unStartIndex, uint unCount, uint unDays, IntPtr pTags, IntPtr pUserTags); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamRemoteStorage_UGCDownloadToLocation(UGCHandle_t hContent, InteropHelp.UTF8StringHandle pchLocation, uint unPriority); +#endregion +#region SteamScreenshots + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamScreenshots_WriteScreenshot([In, Out] byte[] pubRGB, uint cubRGB, int nWidth, int nHeight); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamScreenshots_AddScreenshotToLibrary(InteropHelp.UTF8StringHandle pchFilename, InteropHelp.UTF8StringHandle pchThumbnailFilename, int nWidth, int nHeight); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamScreenshots_TriggerScreenshot(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamScreenshots_HookScreenshots([MarshalAs(UnmanagedType.I1)] bool bHook); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamScreenshots_SetLocation(ScreenshotHandle hScreenshot, InteropHelp.UTF8StringHandle pchLocation); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamScreenshots_TagUser(ScreenshotHandle hScreenshot, CSteamID steamID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamScreenshots_TagPublishedFile(ScreenshotHandle hScreenshot, PublishedFileId_t unPublishedFileID); +#endregion +#region SteamUGC + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUGC_CreateQueryUserUGCRequest(AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint unPage); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUGC_CreateQueryAllUGCRequest(EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint unPage); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUGC_CreateQueryUGCDetailsRequest([In, Out] PublishedFileId_t[] pvecPublishedFileID, uint unNumPublishedFileIDs); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUGC_SendQueryUGCRequest(UGCQueryHandle_t handle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_GetQueryUGCResult(UGCQueryHandle_t handle, uint index, out SteamUGCDetails_t pDetails); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_GetQueryUGCPreviewURL(UGCQueryHandle_t handle, uint index, IntPtr pchURL, uint cchURLSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_GetQueryUGCMetadata(UGCQueryHandle_t handle, uint index, IntPtr pchMetadata, uint cchMetadatasize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_GetQueryUGCChildren(UGCQueryHandle_t handle, uint index, [In, Out] PublishedFileId_t[] pvecPublishedFileID, uint cMaxEntries); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_GetQueryUGCStatistic(UGCQueryHandle_t handle, uint index, EItemStatistic eStatType, out uint pStatValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamUGC_GetQueryUGCNumAdditionalPreviews(UGCQueryHandle_t handle, uint index); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_GetQueryUGCAdditionalPreview(UGCQueryHandle_t handle, uint index, uint previewIndex, IntPtr pchURLOrVideoID, uint cchURLSize, out bool pbIsImage); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamUGC_GetQueryUGCNumKeyValueTags(UGCQueryHandle_t handle, uint index); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_GetQueryUGCKeyValueTag(UGCQueryHandle_t handle, uint index, uint keyValueTagIndex, IntPtr pchKey, uint cchKeySize, IntPtr pchValue, uint cchValueSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_ReleaseQueryUGCRequest(UGCQueryHandle_t handle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_AddRequiredTag(UGCQueryHandle_t handle, InteropHelp.UTF8StringHandle pTagName); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_AddExcludedTag(UGCQueryHandle_t handle, InteropHelp.UTF8StringHandle pTagName); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetReturnKeyValueTags(UGCQueryHandle_t handle, [MarshalAs(UnmanagedType.I1)] bool bReturnKeyValueTags); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetReturnLongDescription(UGCQueryHandle_t handle, [MarshalAs(UnmanagedType.I1)] bool bReturnLongDescription); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetReturnMetadata(UGCQueryHandle_t handle, [MarshalAs(UnmanagedType.I1)] bool bReturnMetadata); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetReturnChildren(UGCQueryHandle_t handle, [MarshalAs(UnmanagedType.I1)] bool bReturnChildren); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetReturnAdditionalPreviews(UGCQueryHandle_t handle, [MarshalAs(UnmanagedType.I1)] bool bReturnAdditionalPreviews); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetReturnTotalOnly(UGCQueryHandle_t handle, [MarshalAs(UnmanagedType.I1)] bool bReturnTotalOnly); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetLanguage(UGCQueryHandle_t handle, InteropHelp.UTF8StringHandle pchLanguage); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetAllowCachedResponse(UGCQueryHandle_t handle, uint unMaxAgeSeconds); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetCloudFileNameFilter(UGCQueryHandle_t handle, InteropHelp.UTF8StringHandle pMatchCloudFileName); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetMatchAnyTag(UGCQueryHandle_t handle, [MarshalAs(UnmanagedType.I1)] bool bMatchAnyTag); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetSearchText(UGCQueryHandle_t handle, InteropHelp.UTF8StringHandle pSearchText); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetRankedByTrendDays(UGCQueryHandle_t handle, uint unDays); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_AddRequiredKeyValueTag(UGCQueryHandle_t handle, InteropHelp.UTF8StringHandle pKey, InteropHelp.UTF8StringHandle pValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUGC_RequestUGCDetails(PublishedFileId_t nPublishedFileID, uint unMaxAgeSeconds); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUGC_CreateItem(AppId_t nConsumerAppId, EWorkshopFileType eFileType); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUGC_StartItemUpdate(AppId_t nConsumerAppId, PublishedFileId_t nPublishedFileID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetItemTitle(UGCUpdateHandle_t handle, InteropHelp.UTF8StringHandle pchTitle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetItemDescription(UGCUpdateHandle_t handle, InteropHelp.UTF8StringHandle pchDescription); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetItemUpdateLanguage(UGCUpdateHandle_t handle, InteropHelp.UTF8StringHandle pchLanguage); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetItemMetadata(UGCUpdateHandle_t handle, InteropHelp.UTF8StringHandle pchMetaData); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetItemVisibility(UGCUpdateHandle_t handle, ERemoteStoragePublishedFileVisibility eVisibility); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetItemTags(UGCUpdateHandle_t updateHandle, IntPtr pTags); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetItemContent(UGCUpdateHandle_t handle, InteropHelp.UTF8StringHandle pszContentFolder); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetItemPreview(UGCUpdateHandle_t handle, InteropHelp.UTF8StringHandle pszPreviewFile); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_RemoveItemKeyValueTags(UGCUpdateHandle_t handle, InteropHelp.UTF8StringHandle pchKey); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_AddItemKeyValueTag(UGCUpdateHandle_t handle, InteropHelp.UTF8StringHandle pchKey, InteropHelp.UTF8StringHandle pchValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUGC_SubmitItemUpdate(UGCUpdateHandle_t handle, InteropHelp.UTF8StringHandle pchChangeNote); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern EItemUpdateStatus ISteamUGC_GetItemUpdateProgress(UGCUpdateHandle_t handle, out ulong punBytesProcessed, out ulong punBytesTotal); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUGC_SetUserItemVote(PublishedFileId_t nPublishedFileID, [MarshalAs(UnmanagedType.I1)] bool bVoteUp); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUGC_GetUserItemVote(PublishedFileId_t nPublishedFileID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUGC_AddItemToFavorites(AppId_t nAppId, PublishedFileId_t nPublishedFileID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUGC_RemoveItemFromFavorites(AppId_t nAppId, PublishedFileId_t nPublishedFileID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUGC_SubscribeItem(PublishedFileId_t nPublishedFileID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUGC_UnsubscribeItem(PublishedFileId_t nPublishedFileID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamUGC_GetNumSubscribedItems(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamUGC_GetSubscribedItems([In, Out] PublishedFileId_t[] pvecPublishedFileID, uint cMaxEntries); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamUGC_GetItemState(PublishedFileId_t nPublishedFileID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_GetItemInstallInfo(PublishedFileId_t nPublishedFileID, out ulong punSizeOnDisk, IntPtr pchFolder, uint cchFolderSize, out uint punTimeStamp); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_GetItemDownloadInfo(PublishedFileId_t nPublishedFileID, out ulong punBytesDownloaded, out ulong punBytesTotal); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_DownloadItem(PublishedFileId_t nPublishedFileID, [MarshalAs(UnmanagedType.I1)] bool bHighPriority); +#endregion +#region SteamUnifiedMessages + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUnifiedMessages_SendMethod(InteropHelp.UTF8StringHandle pchServiceMethod, [In, Out] byte[] pRequestBuffer, uint unRequestBufferSize, ulong unContext); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUnifiedMessages_GetMethodResponseInfo(ClientUnifiedMessageHandle hHandle, out uint punResponseSize, out EResult peResult); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUnifiedMessages_GetMethodResponseData(ClientUnifiedMessageHandle hHandle, [In, Out] byte[] pResponseBuffer, uint unResponseBufferSize, [MarshalAs(UnmanagedType.I1)] bool bAutoRelease); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUnifiedMessages_ReleaseMethod(ClientUnifiedMessageHandle hHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUnifiedMessages_SendNotification(InteropHelp.UTF8StringHandle pchServiceNotification, [In, Out] byte[] pNotificationBuffer, uint unNotificationBufferSize); +#endregion +#region SteamUser + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamUser_GetHSteamUser(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUser_BLoggedOn(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUser_GetSteamID(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamUser_InitiateGameConnection([In, Out] byte[] pAuthBlob, int cbMaxAuthBlob, CSteamID steamIDGameServer, uint unIPServer, ushort usPortServer, [MarshalAs(UnmanagedType.I1)] bool bSecure); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamUser_TerminateGameConnection(uint unIPServer, ushort usPortServer); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamUser_TrackAppUsageEvent(CGameID gameID, int eAppUsageEvent, InteropHelp.UTF8StringHandle pchExtraInfo); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUser_GetUserDataFolder(IntPtr pchBuffer, int cubBuffer); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamUser_StartVoiceRecording(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamUser_StopVoiceRecording(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern EVoiceResult ISteamUser_GetAvailableVoice(out uint pcbCompressed, out uint pcbUncompressed, uint nUncompressedVoiceDesiredSampleRate); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern EVoiceResult ISteamUser_GetVoice([MarshalAs(UnmanagedType.I1)] bool bWantCompressed, [In, Out] byte[] pDestBuffer, uint cbDestBufferSize, out uint nBytesWritten, [MarshalAs(UnmanagedType.I1)] bool bWantUncompressed, [In, Out] byte[] pUncompressedDestBuffer, uint cbUncompressedDestBufferSize, out uint nUncompressBytesWritten, uint nUncompressedVoiceDesiredSampleRate); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern EVoiceResult ISteamUser_DecompressVoice([In, Out] byte[] pCompressed, uint cbCompressed, [In, Out] byte[] pDestBuffer, uint cbDestBufferSize, out uint nBytesWritten, uint nDesiredSampleRate); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamUser_GetVoiceOptimalSampleRate(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamUser_GetAuthSessionTicket([In, Out] byte[] pTicket, int cbMaxTicket, out uint pcbTicket); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern EBeginAuthSessionResult ISteamUser_BeginAuthSession([In, Out] byte[] pAuthTicket, int cbAuthTicket, CSteamID steamID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamUser_EndAuthSession(CSteamID steamID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamUser_CancelAuthTicket(HAuthTicket hAuthTicket); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern EUserHasLicenseForAppResult ISteamUser_UserHasLicenseForApp(CSteamID steamID, AppId_t appID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUser_BIsBehindNAT(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamUser_AdvertiseGame(CSteamID steamIDGameServer, uint unIPServer, ushort usPortServer); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUser_RequestEncryptedAppTicket([In, Out] byte[] pDataToInclude, int cbDataToInclude); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUser_GetEncryptedAppTicket([In, Out] byte[] pTicket, int cbMaxTicket, out uint pcbTicket); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamUser_GetGameBadgeLevel(int nSeries, [MarshalAs(UnmanagedType.I1)] bool bFoil); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamUser_GetPlayerSteamLevel(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUser_RequestStoreAuthURL(InteropHelp.UTF8StringHandle pchRedirectURL); +#if _PS3 + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamUser_LogOn([MarshalAs(UnmanagedType.I1)] bool bInteractive); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamUser_LogOnAndLinkSteamAccountToPSN([MarshalAs(UnmanagedType.I1)] bool bInteractive, InteropHelp.UTF8StringHandle pchUserName, InteropHelp.UTF8StringHandle pchPassword); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamUser_LogOnAndCreateNewSteamAccountIfNeeded([MarshalAs(UnmanagedType.I1)] bool bInteractive); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUser_GetConsoleSteamID(); +#endif +#endregion +#region SteamUserStats + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_RequestCurrentStats(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_GetStat(InteropHelp.UTF8StringHandle pchName, out int pData); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_GetStat_(InteropHelp.UTF8StringHandle pchName, out float pData); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_SetStat(InteropHelp.UTF8StringHandle pchName, int nData); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_SetStat_(InteropHelp.UTF8StringHandle pchName, float fData); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_UpdateAvgRateStat(InteropHelp.UTF8StringHandle pchName, float flCountThisSession, double dSessionLength); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_GetAchievement(InteropHelp.UTF8StringHandle pchName, out bool pbAchieved); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_SetAchievement(InteropHelp.UTF8StringHandle pchName); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_ClearAchievement(InteropHelp.UTF8StringHandle pchName); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_GetAchievementAndUnlockTime(InteropHelp.UTF8StringHandle pchName, out bool pbAchieved, out uint punUnlockTime); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_StoreStats(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamUserStats_GetAchievementIcon(InteropHelp.UTF8StringHandle pchName); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamUserStats_GetAchievementDisplayAttribute(InteropHelp.UTF8StringHandle pchName, InteropHelp.UTF8StringHandle pchKey); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_IndicateAchievementProgress(InteropHelp.UTF8StringHandle pchName, uint nCurProgress, uint nMaxProgress); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamUserStats_GetNumAchievements(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamUserStats_GetAchievementName(uint iAchievement); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUserStats_RequestUserStats(CSteamID steamIDUser); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_GetUserStat(CSteamID steamIDUser, InteropHelp.UTF8StringHandle pchName, out int pData); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_GetUserStat_(CSteamID steamIDUser, InteropHelp.UTF8StringHandle pchName, out float pData); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_GetUserAchievement(CSteamID steamIDUser, InteropHelp.UTF8StringHandle pchName, out bool pbAchieved); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_GetUserAchievementAndUnlockTime(CSteamID steamIDUser, InteropHelp.UTF8StringHandle pchName, out bool pbAchieved, out uint punUnlockTime); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_ResetAllStats([MarshalAs(UnmanagedType.I1)] bool bAchievementsToo); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUserStats_FindOrCreateLeaderboard(InteropHelp.UTF8StringHandle pchLeaderboardName, ELeaderboardSortMethod eLeaderboardSortMethod, ELeaderboardDisplayType eLeaderboardDisplayType); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUserStats_FindLeaderboard(InteropHelp.UTF8StringHandle pchLeaderboardName); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamUserStats_GetLeaderboardName(SteamLeaderboard_t hSteamLeaderboard); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamUserStats_GetLeaderboardEntryCount(SteamLeaderboard_t hSteamLeaderboard); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ELeaderboardSortMethod ISteamUserStats_GetLeaderboardSortMethod(SteamLeaderboard_t hSteamLeaderboard); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ELeaderboardDisplayType ISteamUserStats_GetLeaderboardDisplayType(SteamLeaderboard_t hSteamLeaderboard); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUserStats_DownloadLeaderboardEntries(SteamLeaderboard_t hSteamLeaderboard, ELeaderboardDataRequest eLeaderboardDataRequest, int nRangeStart, int nRangeEnd); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUserStats_DownloadLeaderboardEntriesForUsers(SteamLeaderboard_t hSteamLeaderboard, [In, Out] CSteamID[] prgUsers, int cUsers); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_GetDownloadedLeaderboardEntry(SteamLeaderboardEntries_t hSteamLeaderboardEntries, int index, out LeaderboardEntry_t pLeaderboardEntry, [In, Out] int[] pDetails, int cDetailsMax); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUserStats_UploadLeaderboardScore(SteamLeaderboard_t hSteamLeaderboard, ELeaderboardUploadScoreMethod eLeaderboardUploadScoreMethod, int nScore, [In, Out] int[] pScoreDetails, int cScoreDetailsCount); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUserStats_AttachLeaderboardUGC(SteamLeaderboard_t hSteamLeaderboard, UGCHandle_t hUGC); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUserStats_GetNumberOfCurrentPlayers(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUserStats_RequestGlobalAchievementPercentages(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamUserStats_GetMostAchievedAchievementInfo(IntPtr pchName, uint unNameBufLen, out float pflPercent, out bool pbAchieved); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamUserStats_GetNextMostAchievedAchievementInfo(int iIteratorPrevious, IntPtr pchName, uint unNameBufLen, out float pflPercent, out bool pbAchieved); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_GetAchievementAchievedPercent(InteropHelp.UTF8StringHandle pchName, out float pflPercent); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUserStats_RequestGlobalStats(int nHistoryDays); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_GetGlobalStat(InteropHelp.UTF8StringHandle pchStatName, out long pData); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_GetGlobalStat_(InteropHelp.UTF8StringHandle pchStatName, out double pData); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamUserStats_GetGlobalStatHistory(InteropHelp.UTF8StringHandle pchStatName, [In, Out] long[] pData, uint cubData); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamUserStats_GetGlobalStatHistory_(InteropHelp.UTF8StringHandle pchStatName, [In, Out] double[] pData, uint cubData); +#if _PS3 + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_InstallPS3Trophies(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUserStats_GetTrophySpaceRequiredBeforeInstall(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_SetUserStatsData(IntPtr pvData, uint cubData); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUserStats_GetUserStatsData(IntPtr pvData, uint cubData, out uint pcubWritten); +#endif +#endregion +#region SteamUtils + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamUtils_GetSecondsSinceAppActive(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamUtils_GetSecondsSinceComputerActive(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern EUniverse ISteamUtils_GetConnectedUniverse(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamUtils_GetServerRealTime(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamUtils_GetIPCountry(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUtils_GetImageSize(int iImage, out uint pnWidth, out uint pnHeight); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUtils_GetImageRGBA(int iImage, [In, Out] byte[] pubDest, int nDestBufferSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUtils_GetCSERIPPort(out uint unIP, out ushort usPort); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern byte ISteamUtils_GetCurrentBatteryPower(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamUtils_GetAppID(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamUtils_SetOverlayNotificationPosition(ENotificationPosition eNotificationPosition); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUtils_IsAPICallCompleted(SteamAPICall_t hSteamAPICall, out bool pbFailed); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ESteamAPICallFailure ISteamUtils_GetAPICallFailureReason(SteamAPICall_t hSteamAPICall); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUtils_GetAPICallResult(SteamAPICall_t hSteamAPICall, IntPtr pCallback, int cubCallback, int iCallbackExpected, out bool pbFailed); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamUtils_RunFrame(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamUtils_GetIPCCallCount(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamUtils_SetWarningMessageHook(SteamAPIWarningMessageHook_t pFunction); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUtils_IsOverlayEnabled(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUtils_BOverlayNeedsPresent(); +#if !_PS3 + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUtils_CheckFileSignature(InteropHelp.UTF8StringHandle szFileName); +#endif +#if _PS3 + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamUtils_PostPS3SysutilCallback(ulong status, ulong param, IntPtr userdata); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUtils_BIsReadyToShutdown(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUtils_BIsPSNOnline(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamUtils_SetPSNGameBootInviteStrings(InteropHelp.UTF8StringHandle pchSubject, InteropHelp.UTF8StringHandle pchBody); +#endif + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUtils_ShowGamepadTextInput(EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, InteropHelp.UTF8StringHandle pchDescription, uint unCharMax, InteropHelp.UTF8StringHandle pchExistingText); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamUtils_GetEnteredGamepadTextLength(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUtils_GetEnteredGamepadTextInput(IntPtr pchText, uint cchText); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamUtils_GetSteamUILanguage(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUtils_IsSteamRunningInVR(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamUtils_SetOverlayNotificationInset(int nHorizontalInset, int nVerticalInset); +#endregion +#region SteamVideo + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamVideo_GetVideoURL(AppId_t unVideoAppID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamVideo_IsBroadcasting(out int pnNumViewers); +#endregion +#region SteamGameServerHTTP + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamGameServerHTTP_CreateHTTPRequest(EHTTPMethod eHTTPRequestMethod, InteropHelp.UTF8StringHandle pchAbsoluteURL); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_SetHTTPRequestContextValue(HTTPRequestHandle hRequest, ulong ulContextValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_SetHTTPRequestNetworkActivityTimeout(HTTPRequestHandle hRequest, uint unTimeoutSeconds); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_SetHTTPRequestHeaderValue(HTTPRequestHandle hRequest, InteropHelp.UTF8StringHandle pchHeaderName, InteropHelp.UTF8StringHandle pchHeaderValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_SetHTTPRequestGetOrPostParameter(HTTPRequestHandle hRequest, InteropHelp.UTF8StringHandle pchParamName, InteropHelp.UTF8StringHandle pchParamValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_SendHTTPRequest(HTTPRequestHandle hRequest, out SteamAPICall_t pCallHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_SendHTTPRequestAndStreamResponse(HTTPRequestHandle hRequest, out SteamAPICall_t pCallHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_DeferHTTPRequest(HTTPRequestHandle hRequest); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_PrioritizeHTTPRequest(HTTPRequestHandle hRequest); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_GetHTTPResponseHeaderSize(HTTPRequestHandle hRequest, InteropHelp.UTF8StringHandle pchHeaderName, out uint unResponseHeaderSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_GetHTTPResponseHeaderValue(HTTPRequestHandle hRequest, InteropHelp.UTF8StringHandle pchHeaderName, [In, Out] byte[] pHeaderValueBuffer, uint unBufferSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_GetHTTPResponseBodySize(HTTPRequestHandle hRequest, out uint unBodySize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_GetHTTPResponseBodyData(HTTPRequestHandle hRequest, [In, Out] byte[] pBodyDataBuffer, uint unBufferSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_GetHTTPStreamingResponseBodyData(HTTPRequestHandle hRequest, uint cOffset, [In, Out] byte[] pBodyDataBuffer, uint unBufferSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_ReleaseHTTPRequest(HTTPRequestHandle hRequest); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_GetHTTPDownloadProgressPct(HTTPRequestHandle hRequest, out float pflPercentOut); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_SetHTTPRequestRawPostBody(HTTPRequestHandle hRequest, InteropHelp.UTF8StringHandle pchContentType, [In, Out] byte[] pubBody, uint unBodyLen); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamGameServerHTTP_CreateCookieContainer([MarshalAs(UnmanagedType.I1)] bool bAllowResponsesToModify); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_ReleaseCookieContainer(HTTPCookieContainerHandle hCookieContainer); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_SetCookie(HTTPCookieContainerHandle hCookieContainer, InteropHelp.UTF8StringHandle pchHost, InteropHelp.UTF8StringHandle pchUrl, InteropHelp.UTF8StringHandle pchCookie); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_SetHTTPRequestCookieContainer(HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_SetHTTPRequestUserAgentInfo(HTTPRequestHandle hRequest, InteropHelp.UTF8StringHandle pchUserAgentInfo); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_SetHTTPRequestRequiresVerifiedCertificate(HTTPRequestHandle hRequest, [MarshalAs(UnmanagedType.I1)] bool bRequireVerifiedCertificate); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_SetHTTPRequestAbsoluteTimeoutMS(HTTPRequestHandle hRequest, uint unMilliseconds); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerHTTP_GetHTTPRequestWasTimedOut(HTTPRequestHandle hRequest, out bool pbWasTimedOut); +#endregion +#region SteamGameServerInventory + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern EResult ISteamGameServerInventory_GetResultStatus(SteamInventoryResult_t resultHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerInventory_GetResultItems(SteamInventoryResult_t resultHandle, [In, Out] SteamItemDetails_t[] pOutItemsArray, ref uint punOutItemsArraySize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamGameServerInventory_GetResultTimestamp(SteamInventoryResult_t resultHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerInventory_CheckResultSteamID(SteamInventoryResult_t resultHandle, CSteamID steamIDExpected); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServerInventory_DestroyResult(SteamInventoryResult_t resultHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerInventory_GetAllItems(out SteamInventoryResult_t pResultHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerInventory_GetItemsByID(out SteamInventoryResult_t pResultHandle, [In, Out] SteamItemInstanceID_t[] pInstanceIDs, uint unCountInstanceIDs); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerInventory_SerializeResult(SteamInventoryResult_t resultHandle, [In, Out] byte[] pOutBuffer, out uint punOutBufferSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerInventory_DeserializeResult(out SteamInventoryResult_t pOutResultHandle, [In, Out] byte[] pBuffer, uint unBufferSize, [MarshalAs(UnmanagedType.I1)] bool bRESERVED_MUST_BE_FALSE); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerInventory_GenerateItems(out SteamInventoryResult_t pResultHandle, [In, Out] SteamItemDef_t[] pArrayItemDefs, [In, Out] uint[] punArrayQuantity, uint unArrayLength); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerInventory_GrantPromoItems(out SteamInventoryResult_t pResultHandle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerInventory_AddPromoItem(out SteamInventoryResult_t pResultHandle, SteamItemDef_t itemDef); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerInventory_AddPromoItems(out SteamInventoryResult_t pResultHandle, [In, Out] SteamItemDef_t[] pArrayItemDefs, uint unArrayLength); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerInventory_ConsumeItem(out SteamInventoryResult_t pResultHandle, SteamItemInstanceID_t itemConsume, uint unQuantity); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerInventory_ExchangeItems(out SteamInventoryResult_t pResultHandle, [In, Out] SteamItemDef_t[] pArrayGenerate, [In, Out] uint[] punArrayGenerateQuantity, uint unArrayGenerateLength, [In, Out] SteamItemInstanceID_t[] pArrayDestroy, [In, Out] uint[] punArrayDestroyQuantity, uint unArrayDestroyLength); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerInventory_TransferItemQuantity(out SteamInventoryResult_t pResultHandle, SteamItemInstanceID_t itemIdSource, uint unQuantity, SteamItemInstanceID_t itemIdDest); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServerInventory_SendItemDropHeartbeat(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerInventory_TriggerItemDrop(out SteamInventoryResult_t pResultHandle, SteamItemDef_t dropListDefinition); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerInventory_TradeItems(out SteamInventoryResult_t pResultHandle, CSteamID steamIDTradePartner, [In, Out] SteamItemInstanceID_t[] pArrayGive, [In, Out] uint[] pArrayGiveQuantity, uint nArrayGiveLength, [In, Out] SteamItemInstanceID_t[] pArrayGet, [In, Out] uint[] pArrayGetQuantity, uint nArrayGetLength); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerInventory_LoadItemDefinitions(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerInventory_GetItemDefinitionIDs([In, Out] SteamItemDef_t[] pItemDefIDs, out uint punItemDefIDsArraySize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerInventory_GetItemDefinitionProperty(SteamItemDef_t iDefinition, InteropHelp.UTF8StringHandle pchPropertyName, IntPtr pchValueBuffer, ref uint punValueBufferSize); +#endregion +#region SteamGameServerNetworking + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerNetworking_SendP2PPacket(CSteamID steamIDRemote, [In, Out] byte[] pubData, uint cubData, EP2PSend eP2PSendType, int nChannel); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerNetworking_IsP2PPacketAvailable(out uint pcubMsgSize, int nChannel); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerNetworking_ReadP2PPacket([In, Out] byte[] pubDest, uint cubDest, out uint pcubMsgSize, out CSteamID psteamIDRemote, int nChannel); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerNetworking_AcceptP2PSessionWithUser(CSteamID steamIDRemote); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerNetworking_CloseP2PSessionWithUser(CSteamID steamIDRemote); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerNetworking_CloseP2PChannelWithUser(CSteamID steamIDRemote, int nChannel); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerNetworking_GetP2PSessionState(CSteamID steamIDRemote, out P2PSessionState_t pConnectionState); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerNetworking_AllowP2PPacketRelay([MarshalAs(UnmanagedType.I1)] bool bAllow); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamGameServerNetworking_CreateListenSocket(int nVirtualP2PPort, uint nIP, ushort nPort, [MarshalAs(UnmanagedType.I1)] bool bAllowUseOfPacketRelay); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamGameServerNetworking_CreateP2PConnectionSocket(CSteamID steamIDTarget, int nVirtualPort, int nTimeoutSec, [MarshalAs(UnmanagedType.I1)] bool bAllowUseOfPacketRelay); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamGameServerNetworking_CreateConnectionSocket(uint nIP, ushort nPort, int nTimeoutSec); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerNetworking_DestroySocket(SNetSocket_t hSocket, [MarshalAs(UnmanagedType.I1)] bool bNotifyRemoteEnd); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerNetworking_DestroyListenSocket(SNetListenSocket_t hSocket, [MarshalAs(UnmanagedType.I1)] bool bNotifyRemoteEnd); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerNetworking_SendDataOnSocket(SNetSocket_t hSocket, IntPtr pubData, uint cubData, [MarshalAs(UnmanagedType.I1)] bool bReliable); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerNetworking_IsDataAvailableOnSocket(SNetSocket_t hSocket, out uint pcubMsgSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerNetworking_RetrieveDataFromSocket(SNetSocket_t hSocket, IntPtr pubDest, uint cubDest, out uint pcubMsgSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerNetworking_IsDataAvailable(SNetListenSocket_t hListenSocket, out uint pcubMsgSize, out SNetSocket_t phSocket); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerNetworking_RetrieveData(SNetListenSocket_t hListenSocket, IntPtr pubDest, uint cubDest, out uint pcubMsgSize, out SNetSocket_t phSocket); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerNetworking_GetSocketInfo(SNetSocket_t hSocket, out CSteamID pSteamIDRemote, out int peSocketStatus, out uint punIPRemote, out ushort punPortRemote); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerNetworking_GetListenSocketInfo(SNetListenSocket_t hListenSocket, out uint pnIP, out ushort pnPort); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ESNetSocketConnectionType ISteamGameServerNetworking_GetSocketConnectionType(SNetSocket_t hSocket); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamGameServerNetworking_GetMaxPacketSize(SNetSocket_t hSocket); +#endregion +#region SteamGameServerUGC + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServerUGC_CreateQueryUserUGCRequest(AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint unPage); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServerUGC_CreateQueryAllUGCRequest(EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint unPage); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServerUGC_CreateQueryUGCDetailsRequest([In, Out] PublishedFileId_t[] pvecPublishedFileID, uint unNumPublishedFileIDs); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServerUGC_SendQueryUGCRequest(UGCQueryHandle_t handle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_GetQueryUGCResult(UGCQueryHandle_t handle, uint index, out SteamUGCDetails_t pDetails); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_GetQueryUGCPreviewURL(UGCQueryHandle_t handle, uint index, IntPtr pchURL, uint cchURLSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_GetQueryUGCMetadata(UGCQueryHandle_t handle, uint index, IntPtr pchMetadata, uint cchMetadatasize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_GetQueryUGCChildren(UGCQueryHandle_t handle, uint index, [In, Out] PublishedFileId_t[] pvecPublishedFileID, uint cMaxEntries); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_GetQueryUGCStatistic(UGCQueryHandle_t handle, uint index, EItemStatistic eStatType, out uint pStatValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamGameServerUGC_GetQueryUGCNumAdditionalPreviews(UGCQueryHandle_t handle, uint index); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_GetQueryUGCAdditionalPreview(UGCQueryHandle_t handle, uint index, uint previewIndex, IntPtr pchURLOrVideoID, uint cchURLSize, out bool pbIsImage); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamGameServerUGC_GetQueryUGCNumKeyValueTags(UGCQueryHandle_t handle, uint index); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_GetQueryUGCKeyValueTag(UGCQueryHandle_t handle, uint index, uint keyValueTagIndex, IntPtr pchKey, uint cchKeySize, IntPtr pchValue, uint cchValueSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_ReleaseQueryUGCRequest(UGCQueryHandle_t handle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_AddRequiredTag(UGCQueryHandle_t handle, InteropHelp.UTF8StringHandle pTagName); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_AddExcludedTag(UGCQueryHandle_t handle, InteropHelp.UTF8StringHandle pTagName); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_SetReturnKeyValueTags(UGCQueryHandle_t handle, [MarshalAs(UnmanagedType.I1)] bool bReturnKeyValueTags); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_SetReturnLongDescription(UGCQueryHandle_t handle, [MarshalAs(UnmanagedType.I1)] bool bReturnLongDescription); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_SetReturnMetadata(UGCQueryHandle_t handle, [MarshalAs(UnmanagedType.I1)] bool bReturnMetadata); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_SetReturnChildren(UGCQueryHandle_t handle, [MarshalAs(UnmanagedType.I1)] bool bReturnChildren); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_SetReturnAdditionalPreviews(UGCQueryHandle_t handle, [MarshalAs(UnmanagedType.I1)] bool bReturnAdditionalPreviews); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_SetReturnTotalOnly(UGCQueryHandle_t handle, [MarshalAs(UnmanagedType.I1)] bool bReturnTotalOnly); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_SetLanguage(UGCQueryHandle_t handle, InteropHelp.UTF8StringHandle pchLanguage); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_SetAllowCachedResponse(UGCQueryHandle_t handle, uint unMaxAgeSeconds); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_SetCloudFileNameFilter(UGCQueryHandle_t handle, InteropHelp.UTF8StringHandle pMatchCloudFileName); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_SetMatchAnyTag(UGCQueryHandle_t handle, [MarshalAs(UnmanagedType.I1)] bool bMatchAnyTag); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_SetSearchText(UGCQueryHandle_t handle, InteropHelp.UTF8StringHandle pSearchText); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_SetRankedByTrendDays(UGCQueryHandle_t handle, uint unDays); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_AddRequiredKeyValueTag(UGCQueryHandle_t handle, InteropHelp.UTF8StringHandle pKey, InteropHelp.UTF8StringHandle pValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServerUGC_RequestUGCDetails(PublishedFileId_t nPublishedFileID, uint unMaxAgeSeconds); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServerUGC_CreateItem(AppId_t nConsumerAppId, EWorkshopFileType eFileType); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServerUGC_StartItemUpdate(AppId_t nConsumerAppId, PublishedFileId_t nPublishedFileID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_SetItemTitle(UGCUpdateHandle_t handle, InteropHelp.UTF8StringHandle pchTitle); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_SetItemDescription(UGCUpdateHandle_t handle, InteropHelp.UTF8StringHandle pchDescription); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_SetItemUpdateLanguage(UGCUpdateHandle_t handle, InteropHelp.UTF8StringHandle pchLanguage); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_SetItemMetadata(UGCUpdateHandle_t handle, InteropHelp.UTF8StringHandle pchMetaData); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_SetItemVisibility(UGCUpdateHandle_t handle, ERemoteStoragePublishedFileVisibility eVisibility); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_SetItemTags(UGCUpdateHandle_t updateHandle, IntPtr pTags); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_SetItemContent(UGCUpdateHandle_t handle, InteropHelp.UTF8StringHandle pszContentFolder); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_SetItemPreview(UGCUpdateHandle_t handle, InteropHelp.UTF8StringHandle pszPreviewFile); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_RemoveItemKeyValueTags(UGCUpdateHandle_t handle, InteropHelp.UTF8StringHandle pchKey); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_AddItemKeyValueTag(UGCUpdateHandle_t handle, InteropHelp.UTF8StringHandle pchKey, InteropHelp.UTF8StringHandle pchValue); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServerUGC_SubmitItemUpdate(UGCUpdateHandle_t handle, InteropHelp.UTF8StringHandle pchChangeNote); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern EItemUpdateStatus ISteamGameServerUGC_GetItemUpdateProgress(UGCUpdateHandle_t handle, out ulong punBytesProcessed, out ulong punBytesTotal); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServerUGC_SetUserItemVote(PublishedFileId_t nPublishedFileID, [MarshalAs(UnmanagedType.I1)] bool bVoteUp); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServerUGC_GetUserItemVote(PublishedFileId_t nPublishedFileID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServerUGC_AddItemToFavorites(AppId_t nAppId, PublishedFileId_t nPublishedFileID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServerUGC_RemoveItemFromFavorites(AppId_t nAppId, PublishedFileId_t nPublishedFileID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServerUGC_SubscribeItem(PublishedFileId_t nPublishedFileID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServerUGC_UnsubscribeItem(PublishedFileId_t nPublishedFileID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamGameServerUGC_GetNumSubscribedItems(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamGameServerUGC_GetSubscribedItems([In, Out] PublishedFileId_t[] pvecPublishedFileID, uint cMaxEntries); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamGameServerUGC_GetItemState(PublishedFileId_t nPublishedFileID); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_GetItemInstallInfo(PublishedFileId_t nPublishedFileID, out ulong punSizeOnDisk, IntPtr pchFolder, uint cchFolderSize, out uint punTimeStamp); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_GetItemDownloadInfo(PublishedFileId_t nPublishedFileID, out ulong punBytesDownloaded, out ulong punBytesTotal); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUGC_DownloadItem(PublishedFileId_t nPublishedFileID, [MarshalAs(UnmanagedType.I1)] bool bHighPriority); +#endregion +#region SteamGameServerUtils + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamGameServerUtils_GetSecondsSinceAppActive(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamGameServerUtils_GetSecondsSinceComputerActive(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern EUniverse ISteamGameServerUtils_GetConnectedUniverse(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamGameServerUtils_GetServerRealTime(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamGameServerUtils_GetIPCountry(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUtils_GetImageSize(int iImage, out uint pnWidth, out uint pnHeight); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUtils_GetImageRGBA(int iImage, [In, Out] byte[] pubDest, int nDestBufferSize); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUtils_GetCSERIPPort(out uint unIP, out ushort usPort); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern byte ISteamGameServerUtils_GetCurrentBatteryPower(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamGameServerUtils_GetAppID(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServerUtils_SetOverlayNotificationPosition(ENotificationPosition eNotificationPosition); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUtils_IsAPICallCompleted(SteamAPICall_t hSteamAPICall, out bool pbFailed); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ESteamAPICallFailure ISteamGameServerUtils_GetAPICallFailureReason(SteamAPICall_t hSteamAPICall); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUtils_GetAPICallResult(SteamAPICall_t hSteamAPICall, IntPtr pCallback, int cubCallback, int iCallbackExpected, out bool pbFailed); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServerUtils_RunFrame(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamGameServerUtils_GetIPCCallCount(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServerUtils_SetWarningMessageHook(SteamAPIWarningMessageHook_t pFunction); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUtils_IsOverlayEnabled(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUtils_BOverlayNeedsPresent(); +#if !_PS3 + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServerUtils_CheckFileSignature(InteropHelp.UTF8StringHandle szFileName); +#endif +#if _PS3 + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServerUtils_PostPS3SysutilCallback(ulong status, ulong param, IntPtr userdata); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUtils_BIsReadyToShutdown(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUtils_BIsPSNOnline(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServerUtils_SetPSNGameBootInviteStrings(InteropHelp.UTF8StringHandle pchSubject, InteropHelp.UTF8StringHandle pchBody); +#endif + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUtils_ShowGamepadTextInput(EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, InteropHelp.UTF8StringHandle pchDescription, uint unCharMax, InteropHelp.UTF8StringHandle pchExistingText); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamGameServerUtils_GetEnteredGamepadTextLength(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUtils_GetEnteredGamepadTextInput(IntPtr pchText, uint cchText); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamGameServerUtils_GetSteamUILanguage(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServerUtils_IsSteamRunningInVR(); + + [DllImport(NativeLibraryName, CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServerUtils_SetOverlayNotificationInset(int nHorizontalInset, int nVerticalInset); +#endregion + } +} diff --git a/Assets/Editor/Steamworks.NET/autogen/NativeMethods.cs.meta b/Assets/Editor/Steamworks.NET/autogen/NativeMethods.cs.meta new file mode 100644 index 0000000..8ccedec --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/NativeMethods.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 1ecfbea26a0109e49aaba81f9f8150c6 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/SteamCallbacks.cs b/Assets/Editor/Steamworks.NET/autogen/SteamCallbacks.cs new file mode 100644 index 0000000..83696a1 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/SteamCallbacks.cs @@ -0,0 +1,2088 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + // callbacks + //--------------------------------------------------------------------------------- + // Purpose: Sent when a new app is installed + //--------------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamAppListCallbacks + 1)] + public struct SteamAppInstalled_t { + public const int k_iCallback = Constants.k_iSteamAppListCallbacks + 1; + public AppId_t m_nAppID; // ID of the app that installs + } + + //--------------------------------------------------------------------------------- + // Purpose: Sent when an app is uninstalled + //--------------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamAppListCallbacks + 2)] + public struct SteamAppUninstalled_t { + public const int k_iCallback = Constants.k_iSteamAppListCallbacks + 2; + public AppId_t m_nAppID; // ID of the app that installs + } + + // callbacks + //----------------------------------------------------------------------------- + // Purpose: posted after the user gains ownership of DLC & that DLC is installed + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamAppsCallbacks + 5)] + public struct DlcInstalled_t { + public const int k_iCallback = Constants.k_iSteamAppsCallbacks + 5; + public AppId_t m_nAppID; // AppID of the DLC + } + + //----------------------------------------------------------------------------- + // Purpose: response to RegisterActivationCode() + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamAppsCallbacks + 8)] + public struct RegisterActivationCodeResponse_t { + public const int k_iCallback = Constants.k_iSteamAppsCallbacks + 8; + public ERegisterActivationCodeResult m_eResult; + public uint m_unPackageRegistered; // package that was registered. Only set on success + } + + //----------------------------------------------------------------------------- + // Purpose: response to RegisterActivationCode() + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamAppsCallbacks + 13)] + public struct AppProofOfPurchaseKeyResponse_t { + public const int k_iCallback = Constants.k_iSteamAppsCallbacks + 13; + public EResult m_eResult; + public uint m_nAppID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = Constants.k_cubAppProofOfPurchaseKeyMax)] + public string m_rgchKey; + } + + //--------------------------------------------------------------------------------- + // Purpose: posted after the user gains executes a steam url with query parameters + // such as steam://run///?param1=value1;param2=value2;param3=value3; etc + // while the game is already running. The new params can be queried + // with GetLaunchQueryParam. + //--------------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] + [CallbackIdentity(Constants.k_iSteamAppsCallbacks + 14)] + public struct NewLaunchQueryParameters_t { + public const int k_iCallback = Constants.k_iSteamAppsCallbacks + 14; + } + + // callbacks + //----------------------------------------------------------------------------- + // Purpose: called when a friends' status changes + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamFriendsCallbacks + 4)] + public struct PersonaStateChange_t { + public const int k_iCallback = Constants.k_iSteamFriendsCallbacks + 4; + + public ulong m_ulSteamID; // steamID of the friend who changed + public EPersonaChange m_nChangeFlags; // what's changed + } + + //----------------------------------------------------------------------------- + // Purpose: posted when game overlay activates or deactivates + // the game can use this to be pause or resume single player games + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamFriendsCallbacks + 31)] + public struct GameOverlayActivated_t { + public const int k_iCallback = Constants.k_iSteamFriendsCallbacks + 31; + public byte m_bActive; // true if it's just been activated, false otherwise + } + + //----------------------------------------------------------------------------- + // Purpose: called when the user tries to join a different game server from their friends list + // game client should attempt to connect to specified server when this is received + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamFriendsCallbacks + 32)] + public struct GameServerChangeRequested_t { + public const int k_iCallback = Constants.k_iSteamFriendsCallbacks + 32; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string m_rgchServer; // server address ("127.0.0.1:27015", "tf2.valvesoftware.com") + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string m_rgchPassword; // server password, if any + } + + //----------------------------------------------------------------------------- + // Purpose: called when the user tries to join a lobby from their friends list + // game client should attempt to connect to specified lobby when this is received + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamFriendsCallbacks + 33)] + public struct GameLobbyJoinRequested_t { + public const int k_iCallback = Constants.k_iSteamFriendsCallbacks + 33; + public CSteamID m_steamIDLobby; + + // The friend they did the join via (will be invalid if not directly via a friend) + // + // On PS3, the friend will be invalid if this was triggered by a PSN invite via the XMB, but + // the account type will be console user so you can tell at least that this was from a PSN friend + // rather than a Steam friend. + public CSteamID m_steamIDFriend; + } + + //----------------------------------------------------------------------------- + // Purpose: called when an avatar is loaded in from a previous GetLargeFriendAvatar() call + // if the image wasn't already available + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = 4)] + [CallbackIdentity(Constants.k_iSteamFriendsCallbacks + 34)] + public struct AvatarImageLoaded_t { + public const int k_iCallback = Constants.k_iSteamFriendsCallbacks + 34; + public CSteamID m_steamID; // steamid the avatar has been loaded for + public int m_iImage; // the image index of the now loaded image + public int m_iWide; // width of the loaded image + public int m_iTall; // height of the loaded image + } + + //----------------------------------------------------------------------------- + // Purpose: marks the return of a request officer list call + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamFriendsCallbacks + 35)] + public struct ClanOfficerListResponse_t { + public const int k_iCallback = Constants.k_iSteamFriendsCallbacks + 35; + public CSteamID m_steamIDClan; + public int m_cOfficers; + public byte m_bSuccess; + } + + //----------------------------------------------------------------------------- + // Purpose: callback indicating updated data about friends rich presence information + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = 4)] + [CallbackIdentity(Constants.k_iSteamFriendsCallbacks + 36)] + public struct FriendRichPresenceUpdate_t { + public const int k_iCallback = Constants.k_iSteamFriendsCallbacks + 36; + public CSteamID m_steamIDFriend; // friend who's rich presence has changed + public AppId_t m_nAppID; // the appID of the game (should always be the current game) + } + + //----------------------------------------------------------------------------- + // Purpose: called when the user tries to join a game from their friends list + // rich presence will have been set with the "connect" key which is set here + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamFriendsCallbacks + 37)] + public struct GameRichPresenceJoinRequested_t { + public const int k_iCallback = Constants.k_iSteamFriendsCallbacks + 37; + public CSteamID m_steamIDFriend; // the friend they did the join via (will be invalid if not directly via a friend) + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = Constants.k_cchMaxRichPresenceValueLength)] + public string m_rgchConnect; + } + + //----------------------------------------------------------------------------- + // Purpose: a chat message has been received for a clan chat the game has joined + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = 4)] + [CallbackIdentity(Constants.k_iSteamFriendsCallbacks + 38)] + public struct GameConnectedClanChatMsg_t { + public const int k_iCallback = Constants.k_iSteamFriendsCallbacks + 38; + public CSteamID m_steamIDClanChat; + public CSteamID m_steamIDUser; + public int m_iMessageID; + } + + //----------------------------------------------------------------------------- + // Purpose: a user has joined a clan chat + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamFriendsCallbacks + 39)] + public struct GameConnectedChatJoin_t { + public const int k_iCallback = Constants.k_iSteamFriendsCallbacks + 39; + public CSteamID m_steamIDClanChat; + public CSteamID m_steamIDUser; + } + + //----------------------------------------------------------------------------- + // Purpose: a user has left the chat we're in + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = 1)] + [CallbackIdentity(Constants.k_iSteamFriendsCallbacks + 40)] + public struct GameConnectedChatLeave_t { + public const int k_iCallback = Constants.k_iSteamFriendsCallbacks + 40; + public CSteamID m_steamIDClanChat; + public CSteamID m_steamIDUser; + [MarshalAs(UnmanagedType.I1)] + public bool m_bKicked; // true if admin kicked + [MarshalAs(UnmanagedType.I1)] + public bool m_bDropped; // true if Steam connection dropped + } + + //----------------------------------------------------------------------------- + // Purpose: a DownloadClanActivityCounts() call has finished + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamFriendsCallbacks + 41)] + public struct DownloadClanActivityCountsResult_t { + public const int k_iCallback = Constants.k_iSteamFriendsCallbacks + 41; + [MarshalAs(UnmanagedType.I1)] + public bool m_bSuccess; + } + + //----------------------------------------------------------------------------- + // Purpose: a JoinClanChatRoom() call has finished + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = 4)] + [CallbackIdentity(Constants.k_iSteamFriendsCallbacks + 42)] + public struct JoinClanChatRoomCompletionResult_t { + public const int k_iCallback = Constants.k_iSteamFriendsCallbacks + 42; + public CSteamID m_steamIDClanChat; + public EChatRoomEnterResponse m_eChatRoomEnterResponse; + } + + //----------------------------------------------------------------------------- + // Purpose: a chat message has been received from a user + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = 4)] + [CallbackIdentity(Constants.k_iSteamFriendsCallbacks + 43)] + public struct GameConnectedFriendChatMsg_t { + public const int k_iCallback = Constants.k_iSteamFriendsCallbacks + 43; + public CSteamID m_steamIDUser; + public int m_iMessageID; + } + + [StructLayout(LayoutKind.Sequential, Pack = 4)] + [CallbackIdentity(Constants.k_iSteamFriendsCallbacks + 44)] + public struct FriendsGetFollowerCount_t { + public const int k_iCallback = Constants.k_iSteamFriendsCallbacks + 44; + public EResult m_eResult; + public CSteamID m_steamID; + public int m_nCount; + } + + [StructLayout(LayoutKind.Sequential, Pack = 4)] + [CallbackIdentity(Constants.k_iSteamFriendsCallbacks + 45)] + public struct FriendsIsFollowing_t { + public const int k_iCallback = Constants.k_iSteamFriendsCallbacks + 45; + public EResult m_eResult; + public CSteamID m_steamID; + [MarshalAs(UnmanagedType.I1)] + public bool m_bIsFollowing; + } + + [StructLayout(LayoutKind.Sequential, Pack = 4)] + [CallbackIdentity(Constants.k_iSteamFriendsCallbacks + 46)] + public struct FriendsEnumerateFollowingList_t { + public const int k_iCallback = Constants.k_iSteamFriendsCallbacks + 46; + public EResult m_eResult; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = Constants.k_cEnumerateFollowersMax)] + public CSteamID[] m_rgSteamID; + public int m_nResultsReturned; + public int m_nTotalResultCount; + } + + //----------------------------------------------------------------------------- + // Purpose: reports the result of an attempt to change the user's persona name + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamFriendsCallbacks + 47)] + public struct SetPersonaNameResponse_t { + public const int k_iCallback = Constants.k_iSteamFriendsCallbacks + 47; + + [MarshalAs(UnmanagedType.I1)] + public bool m_bSuccess; // true if name change succeeded completely. + [MarshalAs(UnmanagedType.I1)] + public bool m_bLocalSuccess; // true if name change was retained locally. (We might not have been able to communicate with Steam) + public EResult m_result; // detailed result code + } + + // callbacks + // callback notification - A new message is available for reading from the message queue + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamGameCoordinatorCallbacks + 1)] + public struct GCMessageAvailable_t { + public const int k_iCallback = Constants.k_iSteamGameCoordinatorCallbacks + 1; + public uint m_nMessageSize; + } + + // callback notification - A message failed to make it to the GC. It may be down temporarily + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] + [CallbackIdentity(Constants.k_iSteamGameCoordinatorCallbacks + 2)] + public struct GCMessageFailed_t { + public const int k_iCallback = Constants.k_iSteamGameCoordinatorCallbacks + 2; + } + + // won't enforce authentication of users that connect to the server. + // Useful when you run a server where the clients may not + // be connected to the internet but you want them to play (i.e LANs) + // callbacks + // client has been approved to connect to this game server + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamGameServerCallbacks + 1)] + public struct GSClientApprove_t { + public const int k_iCallback = Constants.k_iSteamGameServerCallbacks + 1; + public CSteamID m_SteamID; // SteamID of approved player + public CSteamID m_OwnerSteamID; // SteamID of original owner for game license + } + + // client has been denied to connection to this game server + [StructLayout(LayoutKind.Sequential, Pack = 4)] + [CallbackIdentity(Constants.k_iSteamGameServerCallbacks + 2)] + public struct GSClientDeny_t { + public const int k_iCallback = Constants.k_iSteamGameServerCallbacks + 2; + public CSteamID m_SteamID; + public EDenyReason m_eDenyReason; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string m_rgchOptionalText; + } + + // request the game server should kick the user + [StructLayout(LayoutKind.Sequential, Pack = 4)] + [CallbackIdentity(Constants.k_iSteamGameServerCallbacks + 3)] + public struct GSClientKick_t { + public const int k_iCallback = Constants.k_iSteamGameServerCallbacks + 3; + public CSteamID m_SteamID; + public EDenyReason m_eDenyReason; + } + + // NOTE: callback values 4 and 5 are skipped because they are used for old deprecated callbacks, + // do not reuse them here. + // client achievement info + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamGameServerCallbacks + 6)] + public struct GSClientAchievementStatus_t { + public const int k_iCallback = Constants.k_iSteamGameServerCallbacks + 6; + public ulong m_SteamID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string m_pchAchievement; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUnlocked; + } + + // received when the game server requests to be displayed as secure (VAC protected) + // m_bSecure is true if the game server should display itself as secure to users, false otherwise + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserCallbacks + 15)] + public struct GSPolicyResponse_t { + public const int k_iCallback = Constants.k_iSteamUserCallbacks + 15; + public byte m_bSecure; + } + + // GS gameplay stats info + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamGameServerCallbacks + 7)] + public struct GSGameplayStats_t { + public const int k_iCallback = Constants.k_iSteamGameServerCallbacks + 7; + public EResult m_eResult; // Result of the call + public int m_nRank; // Overall rank of the server (0-based) + public uint m_unTotalConnects; // Total number of clients who have ever connected to the server + public uint m_unTotalMinutesPlayed; // Total number of minutes ever played on the server + } + + // send as a reply to RequestUserGroupStatus() + [StructLayout(LayoutKind.Sequential, Pack = 1)] + [CallbackIdentity(Constants.k_iSteamGameServerCallbacks + 8)] + public struct GSClientGroupStatus_t { + public const int k_iCallback = Constants.k_iSteamGameServerCallbacks + 8; + public CSteamID m_SteamIDUser; + public CSteamID m_SteamIDGroup; + [MarshalAs(UnmanagedType.I1)] + public bool m_bMember; + [MarshalAs(UnmanagedType.I1)] + public bool m_bOfficer; + } + + // Sent as a reply to GetServerReputation() + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamGameServerCallbacks + 9)] + public struct GSReputation_t { + public const int k_iCallback = Constants.k_iSteamGameServerCallbacks + 9; + public EResult m_eResult; // Result of the call; + public uint m_unReputationScore; // The reputation score for the game server + [MarshalAs(UnmanagedType.I1)] + public bool m_bBanned; // True if the server is banned from the Steam + // master servers + + // The following members are only filled out if m_bBanned is true. They will all + // be set to zero otherwise. Master server bans are by IP so it is possible to be + // banned even when the score is good high if there is a bad server on another port. + // This information can be used to determine which server is bad. + + public uint m_unBannedIP; // The IP of the banned server + public ushort m_usBannedPort; // The port of the banned server + public ulong m_ulBannedGameID; // The game ID the banned server is serving + public uint m_unBanExpires; // Time the ban expires, expressed in the Unix epoch (seconds since 1/1/1970) + } + + // Sent as a reply to AssociateWithClan() + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamGameServerCallbacks + 10)] + public struct AssociateWithClanResult_t { + public const int k_iCallback = Constants.k_iSteamGameServerCallbacks + 10; + public EResult m_eResult; // Result of the call; + } + + // Sent as a reply to ComputeNewPlayerCompatibility() + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamGameServerCallbacks + 11)] + public struct ComputeNewPlayerCompatibilityResult_t { + public const int k_iCallback = Constants.k_iSteamGameServerCallbacks + 11; + public EResult m_eResult; // Result of the call; + public int m_cPlayersThatDontLikeCandidate; + public int m_cPlayersThatCandidateDoesntLike; + public int m_cClanPlayersThatDontLikeCandidate; + public CSteamID m_SteamIDCandidate; + } + + // callbacks + //----------------------------------------------------------------------------- + // Purpose: called when the latests stats and achievements have been received + // from the server + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = 4)] + [CallbackIdentity(Constants.k_iSteamGameServerStatsCallbacks)] + public struct GSStatsReceived_t { + public const int k_iCallback = Constants.k_iSteamGameServerStatsCallbacks; + public EResult m_eResult; // Success / error fetching the stats + public CSteamID m_steamIDUser; // The user for whom the stats are retrieved for + } + + //----------------------------------------------------------------------------- + // Purpose: result of a request to store the user stats for a game + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = 4)] + [CallbackIdentity(Constants.k_iSteamGameServerStatsCallbacks + 1)] + public struct GSStatsStored_t { + public const int k_iCallback = Constants.k_iSteamGameServerStatsCallbacks + 1; + public EResult m_eResult; // success / error + public CSteamID m_steamIDUser; // The user for whom the stats were stored + } + + //----------------------------------------------------------------------------- + // Purpose: Callback indicating that a user's stats have been unloaded. + // Call RequestUserStats again to access stats for this user + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserStatsCallbacks + 8)] + public struct GSStatsUnloaded_t { + public const int k_iCallback = Constants.k_iSteamUserStatsCallbacks + 8; + public CSteamID m_steamIDUser; // User whose stats have been unloaded + } + + // callbacks + //----------------------------------------------------------------------------- + // Purpose: The browser is ready for use + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamHTMLSurfaceCallbacks + 1)] + public struct HTML_BrowserReady_t { + public const int k_iCallback = Constants.k_iSteamHTMLSurfaceCallbacks + 1; + public HHTMLBrowser unBrowserHandle; // this browser is now fully created and ready to navigate to pages + } + + //----------------------------------------------------------------------------- + // Purpose: the browser has a pending paint + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamHTMLSurfaceCallbacks + 2)] + public struct HTML_NeedsPaint_t { + public const int k_iCallback = Constants.k_iSteamHTMLSurfaceCallbacks + 2; + public HHTMLBrowser unBrowserHandle; // the browser that needs the paint + public IntPtr pBGRA; // a pointer to the B8G8R8A8 data for this surface, valid until SteamAPI_RunCallbacks is next called + public uint unWide; // the total width of the pBGRA texture + public uint unTall; // the total height of the pBGRA texture + public uint unUpdateX; // the offset in X for the damage rect for this update + public uint unUpdateY; // the offset in Y for the damage rect for this update + public uint unUpdateWide; // the width of the damage rect for this update + public uint unUpdateTall; // the height of the damage rect for this update + public uint unScrollX; // the page scroll the browser was at when this texture was rendered + public uint unScrollY; // the page scroll the browser was at when this texture was rendered + public float flPageScale; // the page scale factor on this page when rendered + public uint unPageSerial; // incremented on each new page load, you can use this to reject draws while navigating to new pages + } + + //----------------------------------------------------------------------------- + // Purpose: The browser wanted to navigate to a new page + // NOTE - you MUST call AllowStartRequest in response to this callback + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamHTMLSurfaceCallbacks + 3)] + public struct HTML_StartRequest_t { + public const int k_iCallback = Constants.k_iSteamHTMLSurfaceCallbacks + 3; + public HHTMLBrowser unBrowserHandle; // the handle of the surface navigating + public string pchURL; // the url they wish to navigate to + public string pchTarget; // the html link target type (i.e _blank, _self, _parent, _top ) + public string pchPostData; // any posted data for the request + [MarshalAs(UnmanagedType.I1)] + public bool bIsRedirect; // true if this was a http/html redirect from the last load request + } + + //----------------------------------------------------------------------------- + // Purpose: The browser has been requested to close due to user interaction (usually from a javascript window.close() call) + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamHTMLSurfaceCallbacks + 4)] + public struct HTML_CloseBrowser_t { + public const int k_iCallback = Constants.k_iSteamHTMLSurfaceCallbacks + 4; + public HHTMLBrowser unBrowserHandle; // the handle of the surface + } + + //----------------------------------------------------------------------------- + // Purpose: the browser is navigating to a new url + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamHTMLSurfaceCallbacks + 5)] + public struct HTML_URLChanged_t { + public const int k_iCallback = Constants.k_iSteamHTMLSurfaceCallbacks + 5; + public HHTMLBrowser unBrowserHandle; // the handle of the surface navigating + public string pchURL; // the url they wish to navigate to + public string pchPostData; // any posted data for the request + [MarshalAs(UnmanagedType.I1)] + public bool bIsRedirect; // true if this was a http/html redirect from the last load request + public string pchPageTitle; // the title of the page + [MarshalAs(UnmanagedType.I1)] + public bool bNewNavigation; // true if this was from a fresh tab and not a click on an existing page + } + + //----------------------------------------------------------------------------- + // Purpose: A page is finished loading + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamHTMLSurfaceCallbacks + 6)] + public struct HTML_FinishedRequest_t { + public const int k_iCallback = Constants.k_iSteamHTMLSurfaceCallbacks + 6; + public HHTMLBrowser unBrowserHandle; // the handle of the surface + public string pchURL; // + public string pchPageTitle; // + } + + //----------------------------------------------------------------------------- + // Purpose: a request to load this url in a new tab + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamHTMLSurfaceCallbacks + 7)] + public struct HTML_OpenLinkInNewTab_t { + public const int k_iCallback = Constants.k_iSteamHTMLSurfaceCallbacks + 7; + public HHTMLBrowser unBrowserHandle; // the handle of the surface + public string pchURL; // + } + + //----------------------------------------------------------------------------- + // Purpose: the page has a new title now + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamHTMLSurfaceCallbacks + 8)] + public struct HTML_ChangedTitle_t { + public const int k_iCallback = Constants.k_iSteamHTMLSurfaceCallbacks + 8; + public HHTMLBrowser unBrowserHandle; // the handle of the surface + public string pchTitle; // + } + + //----------------------------------------------------------------------------- + // Purpose: results from a search + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamHTMLSurfaceCallbacks + 9)] + public struct HTML_SearchResults_t { + public const int k_iCallback = Constants.k_iSteamHTMLSurfaceCallbacks + 9; + public HHTMLBrowser unBrowserHandle; // the handle of the surface + public uint unResults; // + public uint unCurrentMatch; // + } + + //----------------------------------------------------------------------------- + // Purpose: page history status changed on the ability to go backwards and forward + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamHTMLSurfaceCallbacks + 10)] + public struct HTML_CanGoBackAndForward_t { + public const int k_iCallback = Constants.k_iSteamHTMLSurfaceCallbacks + 10; + public HHTMLBrowser unBrowserHandle; // the handle of the surface + [MarshalAs(UnmanagedType.I1)] + public bool bCanGoBack; // + [MarshalAs(UnmanagedType.I1)] + public bool bCanGoForward; // + } + + //----------------------------------------------------------------------------- + // Purpose: details on the visibility and size of the horizontal scrollbar + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamHTMLSurfaceCallbacks + 11)] + public struct HTML_HorizontalScroll_t { + public const int k_iCallback = Constants.k_iSteamHTMLSurfaceCallbacks + 11; + public HHTMLBrowser unBrowserHandle; // the handle of the surface + public uint unScrollMax; // + public uint unScrollCurrent; // + public float flPageScale; // + [MarshalAs(UnmanagedType.I1)] + public bool bVisible; // + public uint unPageSize; // + } + + //----------------------------------------------------------------------------- + // Purpose: details on the visibility and size of the vertical scrollbar + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamHTMLSurfaceCallbacks + 12)] + public struct HTML_VerticalScroll_t { + public const int k_iCallback = Constants.k_iSteamHTMLSurfaceCallbacks + 12; + public HHTMLBrowser unBrowserHandle; // the handle of the surface + public uint unScrollMax; // + public uint unScrollCurrent; // + public float flPageScale; // + [MarshalAs(UnmanagedType.I1)] + public bool bVisible; // + public uint unPageSize; // + } + + //----------------------------------------------------------------------------- + // Purpose: response to GetLinkAtPosition call + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamHTMLSurfaceCallbacks + 13)] + public struct HTML_LinkAtPosition_t { + public const int k_iCallback = Constants.k_iSteamHTMLSurfaceCallbacks + 13; + public HHTMLBrowser unBrowserHandle; // the handle of the surface + public uint x; // NOTE - Not currently set + public uint y; // NOTE - Not currently set + public string pchURL; // + [MarshalAs(UnmanagedType.I1)] + public bool bInput; // + [MarshalAs(UnmanagedType.I1)] + public bool bLiveLink; // + } + + //----------------------------------------------------------------------------- + // Purpose: show a Javascript alert dialog, call JSDialogResponse + // when the user dismisses this dialog (or right away to ignore it) + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamHTMLSurfaceCallbacks + 14)] + public struct HTML_JSAlert_t { + public const int k_iCallback = Constants.k_iSteamHTMLSurfaceCallbacks + 14; + public HHTMLBrowser unBrowserHandle; // the handle of the surface + public string pchMessage; // + } + + //----------------------------------------------------------------------------- + // Purpose: show a Javascript confirmation dialog, call JSDialogResponse + // when the user dismisses this dialog (or right away to ignore it) + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamHTMLSurfaceCallbacks + 15)] + public struct HTML_JSConfirm_t { + public const int k_iCallback = Constants.k_iSteamHTMLSurfaceCallbacks + 15; + public HHTMLBrowser unBrowserHandle; // the handle of the surface + public string pchMessage; // + } + + //----------------------------------------------------------------------------- + // Purpose: when received show a file open dialog + // then call FileLoadDialogResponse with the file(s) the user selected. + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamHTMLSurfaceCallbacks + 16)] + public struct HTML_FileOpenDialog_t { + public const int k_iCallback = Constants.k_iSteamHTMLSurfaceCallbacks + 16; + public HHTMLBrowser unBrowserHandle; // the handle of the surface + public string pchTitle; // + public string pchInitialFile; // + } + + //----------------------------------------------------------------------------- + // Purpose: a new html window has been created + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamHTMLSurfaceCallbacks + 21)] + public struct HTML_NewWindow_t { + public const int k_iCallback = Constants.k_iSteamHTMLSurfaceCallbacks + 21; + public HHTMLBrowser unBrowserHandle; // the handle of the current surface + public string pchURL; // the page to load + public uint unX; // the x pos into the page to display the popup + public uint unY; // the y pos into the page to display the popup + public uint unWide; // the total width of the pBGRA texture + public uint unTall; // the total height of the pBGRA texture + public HHTMLBrowser unNewWindow_BrowserHandle; // the handle of the new window surface + } + + //----------------------------------------------------------------------------- + // Purpose: change the cursor to display + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamHTMLSurfaceCallbacks + 22)] + public struct HTML_SetCursor_t { + public const int k_iCallback = Constants.k_iSteamHTMLSurfaceCallbacks + 22; + public HHTMLBrowser unBrowserHandle; // the handle of the surface + public uint eMouseCursor; // the EMouseCursor to display + } + + //----------------------------------------------------------------------------- + // Purpose: informational message from the browser + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamHTMLSurfaceCallbacks + 23)] + public struct HTML_StatusText_t { + public const int k_iCallback = Constants.k_iSteamHTMLSurfaceCallbacks + 23; + public HHTMLBrowser unBrowserHandle; // the handle of the surface + public string pchMsg; // the EMouseCursor to display + } + + //----------------------------------------------------------------------------- + // Purpose: show a tooltip + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamHTMLSurfaceCallbacks + 24)] + public struct HTML_ShowToolTip_t { + public const int k_iCallback = Constants.k_iSteamHTMLSurfaceCallbacks + 24; + public HHTMLBrowser unBrowserHandle; // the handle of the surface + public string pchMsg; // the EMouseCursor to display + } + + //----------------------------------------------------------------------------- + // Purpose: update the text of an existing tooltip + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamHTMLSurfaceCallbacks + 25)] + public struct HTML_UpdateToolTip_t { + public const int k_iCallback = Constants.k_iSteamHTMLSurfaceCallbacks + 25; + public HHTMLBrowser unBrowserHandle; // the handle of the surface + public string pchMsg; // the EMouseCursor to display + } + + //----------------------------------------------------------------------------- + // Purpose: hide the tooltip you are showing + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamHTMLSurfaceCallbacks + 26)] + public struct HTML_HideToolTip_t { + public const int k_iCallback = Constants.k_iSteamHTMLSurfaceCallbacks + 26; + public HHTMLBrowser unBrowserHandle; // the handle of the surface + } + + // callbacks + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientHTTPCallbacks + 1)] + public struct HTTPRequestCompleted_t { + public const int k_iCallback = Constants.k_iClientHTTPCallbacks + 1; + + // Handle value for the request that has completed. + public HTTPRequestHandle m_hRequest; + + // Context value that the user defined on the request that this callback is associated with, 0 if + // no context value was set. + public ulong m_ulContextValue; + + // This will be true if we actually got any sort of response from the server (even an error). + // It will be false if we failed due to an internal error or client side network failure. + [MarshalAs(UnmanagedType.I1)] + public bool m_bRequestSuccessful; + + // Will be the HTTP status code value returned by the server, k_EHTTPStatusCode200OK is the normal + // OK response, if you get something else you probably need to treat it as a failure. + public EHTTPStatusCode m_eStatusCode; + + public uint m_unBodySize; // Same as GetHTTPResponseBodySize() + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientHTTPCallbacks + 2)] + public struct HTTPRequestHeadersReceived_t { + public const int k_iCallback = Constants.k_iClientHTTPCallbacks + 2; + + // Handle value for the request that has received headers. + public HTTPRequestHandle m_hRequest; + + // Context value that the user defined on the request that this callback is associated with, 0 if + // no context value was set. + public ulong m_ulContextValue; + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientHTTPCallbacks + 3)] + public struct HTTPRequestDataReceived_t { + public const int k_iCallback = Constants.k_iClientHTTPCallbacks + 3; + + // Handle value for the request that has received data. + public HTTPRequestHandle m_hRequest; + + // Context value that the user defined on the request that this callback is associated with, 0 if + // no context value was set. + public ulong m_ulContextValue; + + + // Offset to provide to GetHTTPStreamingResponseBodyData to get this chunk of data + public uint m_cOffset; + + // Size to provide to GetHTTPStreamingResponseBodyData to get this chunk of data + public uint m_cBytesReceived; + } + + // SteamInventoryResultReady_t callbacks are fired whenever asynchronous + // results transition from "Pending" to "OK" or an error state. There will + // always be exactly one callback per handle. + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientInventoryCallbacks + 0)] + public struct SteamInventoryResultReady_t { + public const int k_iCallback = Constants.k_iClientInventoryCallbacks + 0; + public SteamInventoryResult_t m_handle; + public EResult m_result; + } + + // SteamInventoryFullUpdate_t callbacks are triggered when GetAllItems + // successfully returns a result which is newer / fresher than the last + // known result. (It will not trigger if the inventory hasn't changed, + // or if results from two overlapping calls are reversed in flight and + // the earlier result is already known to be stale/out-of-date.) + // The normal ResultReady callback will still be triggered immediately + // afterwards; this is an additional notification for your convenience. + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientInventoryCallbacks + 1)] + public struct SteamInventoryFullUpdate_t { + public const int k_iCallback = Constants.k_iClientInventoryCallbacks + 1; + public SteamInventoryResult_t m_handle; + } + + // A SteamInventoryDefinitionUpdate_t callback is triggered whenever + // item definitions have been updated, which could be in response to + // LoadItemDefinitions() or any other async request which required + // a definition update in order to process results from the server. + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] + [CallbackIdentity(Constants.k_iClientInventoryCallbacks + 2)] + public struct SteamInventoryDefinitionUpdate_t { + public const int k_iCallback = Constants.k_iClientInventoryCallbacks + 2; + } + + //----------------------------------------------------------------------------- + // Callbacks for ISteamMatchmaking (which go through the regular Steam callback registration system) + //----------------------------------------------------------------------------- + // Purpose: a server was added/removed from the favorites list, you should refresh now + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamMatchmakingCallbacks + 2)] + public struct FavoritesListChanged_t { + public const int k_iCallback = Constants.k_iSteamMatchmakingCallbacks + 2; + public uint m_nIP; // an IP of 0 means reload the whole list, any other value means just one server + public uint m_nQueryPort; + public uint m_nConnPort; + public uint m_nAppID; + public uint m_nFlags; + [MarshalAs(UnmanagedType.I1)] + public bool m_bAdd; // true if this is adding the entry, otherwise it is a remove + public AccountID_t m_unAccountId; + } + + //----------------------------------------------------------------------------- + // Purpose: Someone has invited you to join a Lobby + // normally you don't need to do anything with this, since + // the Steam UI will also display a ' has invited you to the lobby, join?' dialog + // + // if the user outside a game chooses to join, your game will be launched with the parameter "+connect_lobby <64-bit lobby id>", + // or with the callback GameLobbyJoinRequested_t if they're already in-game + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamMatchmakingCallbacks + 3)] + public struct LobbyInvite_t { + public const int k_iCallback = Constants.k_iSteamMatchmakingCallbacks + 3; + + public ulong m_ulSteamIDUser; // Steam ID of the person making the invite + public ulong m_ulSteamIDLobby; // Steam ID of the Lobby + public ulong m_ulGameID; // GameID of the Lobby + } + + //----------------------------------------------------------------------------- + // Purpose: Sent on entering a lobby, or on failing to enter + // m_EChatRoomEnterResponse will be set to k_EChatRoomEnterResponseSuccess on success, + // or a higher value on failure (see enum EChatRoomEnterResponse) + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamMatchmakingCallbacks + 4)] + public struct LobbyEnter_t { + public const int k_iCallback = Constants.k_iSteamMatchmakingCallbacks + 4; + + public ulong m_ulSteamIDLobby; // SteamID of the Lobby you have entered + public uint m_rgfChatPermissions; // Permissions of the current user + [MarshalAs(UnmanagedType.I1)] + public bool m_bLocked; // If true, then only invited users may join + public uint m_EChatRoomEnterResponse; // EChatRoomEnterResponse + } + + //----------------------------------------------------------------------------- + // Purpose: The lobby metadata has changed + // if m_ulSteamIDMember is the steamID of a lobby member, use GetLobbyMemberData() to access per-user details + // if m_ulSteamIDMember == m_ulSteamIDLobby, use GetLobbyData() to access lobby metadata + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamMatchmakingCallbacks + 5)] + public struct LobbyDataUpdate_t { + public const int k_iCallback = Constants.k_iSteamMatchmakingCallbacks + 5; + + public ulong m_ulSteamIDLobby; // steamID of the Lobby + public ulong m_ulSteamIDMember; // steamID of the member whose data changed, or the room itself + public byte m_bSuccess; // true if we lobby data was successfully changed; + // will only be false if RequestLobbyData() was called on a lobby that no longer exists + } + + //----------------------------------------------------------------------------- + // Purpose: The lobby chat room state has changed + // this is usually sent when a user has joined or left the lobby + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamMatchmakingCallbacks + 6)] + public struct LobbyChatUpdate_t { + public const int k_iCallback = Constants.k_iSteamMatchmakingCallbacks + 6; + + public ulong m_ulSteamIDLobby; // Lobby ID + public ulong m_ulSteamIDUserChanged; // user who's status in the lobby just changed - can be recipient + public ulong m_ulSteamIDMakingChange; // Chat member who made the change (different from SteamIDUserChange if kicking, muting, etc.) + // for example, if one user kicks another from the lobby, this will be set to the id of the user who initiated the kick + public uint m_rgfChatMemberStateChange; // bitfield of EChatMemberStateChange values + } + + //----------------------------------------------------------------------------- + // Purpose: A chat message for this lobby has been sent + // use GetLobbyChatEntry( m_iChatID ) to retrieve the contents of this message + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamMatchmakingCallbacks + 7)] + public struct LobbyChatMsg_t { + public const int k_iCallback = Constants.k_iSteamMatchmakingCallbacks + 7; + + public ulong m_ulSteamIDLobby; // the lobby id this is in + public ulong m_ulSteamIDUser; // steamID of the user who has sent this message + public byte m_eChatEntryType; // type of message + public uint m_iChatID; // index of the chat entry to lookup + } + + //----------------------------------------------------------------------------- + // Purpose: A game created a game for all the members of the lobby to join, + // as triggered by a SetLobbyGameServer() + // it's up to the individual clients to take action on this; the usual + // game behavior is to leave the lobby and connect to the specified game server + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamMatchmakingCallbacks + 9)] + public struct LobbyGameCreated_t { + public const int k_iCallback = Constants.k_iSteamMatchmakingCallbacks + 9; + + public ulong m_ulSteamIDLobby; // the lobby we were in + public ulong m_ulSteamIDGameServer; // the new game server that has been created or found for the lobby members + public uint m_unIP; // IP & Port of the game server (if any) + public ushort m_usPort; + } + + //----------------------------------------------------------------------------- + // Purpose: Number of matching lobbies found + // iterate the returned lobbies with GetLobbyByIndex(), from values 0 to m_nLobbiesMatching-1 + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamMatchmakingCallbacks + 10)] + public struct LobbyMatchList_t { + public const int k_iCallback = Constants.k_iSteamMatchmakingCallbacks + 10; + public uint m_nLobbiesMatching; // Number of lobbies that matched search criteria and we have SteamIDs for + } + + //----------------------------------------------------------------------------- + // Purpose: posted if a user is forcefully removed from a lobby + // can occur if a user loses connection to Steam + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamMatchmakingCallbacks + 12)] + public struct LobbyKicked_t { + public const int k_iCallback = Constants.k_iSteamMatchmakingCallbacks + 12; + public ulong m_ulSteamIDLobby; // Lobby + public ulong m_ulSteamIDAdmin; // User who kicked you - possibly the ID of the lobby itself + public byte m_bKickedDueToDisconnect; // true if you were kicked from the lobby due to the user losing connection to Steam (currently always true) + } + + //----------------------------------------------------------------------------- + // Purpose: Result of our request to create a Lobby + // m_eResult == k_EResultOK on success + // at this point, the lobby has been joined and is ready for use + // a LobbyEnter_t callback will also be received (since the local user is joining their own lobby) + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamMatchmakingCallbacks + 13)] + public struct LobbyCreated_t { + public const int k_iCallback = Constants.k_iSteamMatchmakingCallbacks + 13; + + public EResult m_eResult; // k_EResultOK - the lobby was successfully created + // k_EResultNoConnection - your Steam client doesn't have a connection to the back-end + // k_EResultTimeout - you the message to the Steam servers, but it didn't respond + // k_EResultFail - the server responded, but with an unknown internal error + // k_EResultAccessDenied - your game isn't set to allow lobbies, or your client does haven't rights to play the game + // k_EResultLimitExceeded - your game client has created too many lobbies + + public ulong m_ulSteamIDLobby; // chat room, zero if failed + } + + //----------------------------------------------------------------------------- + // Purpose: Result of our request to create a Lobby + // m_eResult == k_EResultOK on success + // at this point, the lobby has been joined and is ready for use + // a LobbyEnter_t callback will also be received (since the local user is joining their own lobby) + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamMatchmakingCallbacks + 16)] + public struct FavoritesListAccountsUpdated_t { + public const int k_iCallback = Constants.k_iSteamMatchmakingCallbacks + 16; + + public EResult m_eResult; + } + + // callbacks + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] + [CallbackIdentity(Constants.k_iSteamMusicCallbacks + 1)] + public struct PlaybackStatusHasChanged_t { + public const int k_iCallback = Constants.k_iSteamMusicCallbacks + 1; + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamMusicCallbacks + 2)] + public struct VolumeHasChanged_t { + public const int k_iCallback = Constants.k_iSteamMusicCallbacks + 2; + public float m_flNewVolume; + } + + // callbacks + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] + [CallbackIdentity(Constants.k_iSteamMusicRemoteCallbacks + 1)] + public struct MusicPlayerRemoteWillActivate_t { + public const int k_iCallback = Constants.k_iSteamMusicRemoteCallbacks + 1; + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] + [CallbackIdentity(Constants.k_iSteamMusicRemoteCallbacks + 2)] + public struct MusicPlayerRemoteWillDeactivate_t { + public const int k_iCallback = Constants.k_iSteamMusicRemoteCallbacks + 2; + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] + [CallbackIdentity(Constants.k_iSteamMusicRemoteCallbacks + 3)] + public struct MusicPlayerRemoteToFront_t { + public const int k_iCallback = Constants.k_iSteamMusicRemoteCallbacks + 3; + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] + [CallbackIdentity(Constants.k_iSteamMusicRemoteCallbacks + 4)] + public struct MusicPlayerWillQuit_t { + public const int k_iCallback = Constants.k_iSteamMusicRemoteCallbacks + 4; + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] + [CallbackIdentity(Constants.k_iSteamMusicRemoteCallbacks + 5)] + public struct MusicPlayerWantsPlay_t { + public const int k_iCallback = Constants.k_iSteamMusicRemoteCallbacks + 5; + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] + [CallbackIdentity(Constants.k_iSteamMusicRemoteCallbacks + 6)] + public struct MusicPlayerWantsPause_t { + public const int k_iCallback = Constants.k_iSteamMusicRemoteCallbacks + 6; + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] + [CallbackIdentity(Constants.k_iSteamMusicRemoteCallbacks + 7)] + public struct MusicPlayerWantsPlayPrevious_t { + public const int k_iCallback = Constants.k_iSteamMusicRemoteCallbacks + 7; + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] + [CallbackIdentity(Constants.k_iSteamMusicRemoteCallbacks + 8)] + public struct MusicPlayerWantsPlayNext_t { + public const int k_iCallback = Constants.k_iSteamMusicRemoteCallbacks + 8; + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamMusicRemoteCallbacks + 9)] + public struct MusicPlayerWantsShuffled_t { + public const int k_iCallback = Constants.k_iSteamMusicRemoteCallbacks + 9; + [MarshalAs(UnmanagedType.I1)] + public bool m_bShuffled; + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamMusicRemoteCallbacks + 10)] + public struct MusicPlayerWantsLooped_t { + public const int k_iCallback = Constants.k_iSteamMusicRemoteCallbacks + 10; + [MarshalAs(UnmanagedType.I1)] + public bool m_bLooped; + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamMusicCallbacks + 11)] + public struct MusicPlayerWantsVolume_t { + public const int k_iCallback = Constants.k_iSteamMusicCallbacks + 11; + public float m_flNewVolume; + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamMusicCallbacks + 12)] + public struct MusicPlayerSelectsQueueEntry_t { + public const int k_iCallback = Constants.k_iSteamMusicCallbacks + 12; + public int nID; + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamMusicCallbacks + 13)] + public struct MusicPlayerSelectsPlaylistEntry_t { + public const int k_iCallback = Constants.k_iSteamMusicCallbacks + 13; + public int nID; + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamMusicRemoteCallbacks + 14)] + public struct MusicPlayerWantsPlayingRepeatStatus_t { + public const int k_iCallback = Constants.k_iSteamMusicRemoteCallbacks + 14; + public int m_nPlayingRepeatStatus; + } + + // callbacks + // callback notification - a user wants to talk to us over the P2P channel via the SendP2PPacket() API + // in response, a call to AcceptP2PPacketsFromUser() needs to be made, if you want to talk with them + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamNetworkingCallbacks + 2)] + public struct P2PSessionRequest_t { + public const int k_iCallback = Constants.k_iSteamNetworkingCallbacks + 2; + public CSteamID m_steamIDRemote; // user who wants to talk to us + } + + // callback notification - packets can't get through to the specified user via the SendP2PPacket() API + // all packets queued packets unsent at this point will be dropped + // further attempts to send will retry making the connection (but will be dropped if we fail again) + [StructLayout(LayoutKind.Sequential, Pack = 1)] + [CallbackIdentity(Constants.k_iSteamNetworkingCallbacks + 3)] + public struct P2PSessionConnectFail_t { + public const int k_iCallback = Constants.k_iSteamNetworkingCallbacks + 3; + public CSteamID m_steamIDRemote; // user we were sending packets to + public byte m_eP2PSessionError; // EP2PSessionError indicating why we're having trouble + } + + // callback notification - status of a socket has changed + // used as part of the CreateListenSocket() / CreateP2PConnectionSocket() + [StructLayout(LayoutKind.Sequential, Pack = 4)] + [CallbackIdentity(Constants.k_iSteamNetworkingCallbacks + 1)] + public struct SocketStatusCallback_t { + public const int k_iCallback = Constants.k_iSteamNetworkingCallbacks + 1; + public SNetSocket_t m_hSocket; // the socket used to send/receive data to the remote host + public SNetListenSocket_t m_hListenSocket; // this is the server socket that we were listening on; NULL if this was an outgoing connection + public CSteamID m_steamIDRemote; // remote steamID we have connected to, if it has one + public int m_eSNetSocketState; // socket state, ESNetSocketState + } + + // callbacks + //----------------------------------------------------------------------------- + // Purpose: sent when the local file cache is fully synced with the server for an app + // That means that an application can be started and has all latest files + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 1)] + public struct RemoteStorageAppSyncedClient_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 1; + public AppId_t m_nAppID; + public EResult m_eResult; + public int m_unNumDownloads; + } + + //----------------------------------------------------------------------------- + // Purpose: sent when the server is fully synced with the local file cache for an app + // That means that we can shutdown Steam and our data is stored on the server + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 2)] + public struct RemoteStorageAppSyncedServer_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 2; + public AppId_t m_nAppID; + public EResult m_eResult; + public int m_unNumUploads; + } + + //----------------------------------------------------------------------------- + // Purpose: Status of up and downloads during a sync session + // + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 3)] + public struct RemoteStorageAppSyncProgress_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 3; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = Constants.k_cchFilenameMax)] + public string m_rgchCurrentFile; // Current file being transferred + public AppId_t m_nAppID; // App this info relates to + public uint m_uBytesTransferredThisChunk; // Bytes transferred this chunk + public double m_dAppPercentComplete; // Percent complete that this app's transfers are + [MarshalAs(UnmanagedType.I1)] + public bool m_bUploading; // if false, downloading + } + + // + // IMPORTANT! k_iClientRemoteStorageCallbacks + 4 is used, see iclientremotestorage.h + // + //----------------------------------------------------------------------------- + // Purpose: Sent after we've determined the list of files that are out of sync + // with the server. + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 5)] + public struct RemoteStorageAppSyncStatusCheck_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 5; + public AppId_t m_nAppID; + public EResult m_eResult; + } + + //----------------------------------------------------------------------------- + // Purpose: Sent after a conflict resolution attempt. + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 6)] + public struct RemoteStorageConflictResolution_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 6; + public AppId_t m_nAppID; + public EResult m_eResult; + } + + //----------------------------------------------------------------------------- + // Purpose: The result of a call to FileShare() + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 7)] + public struct RemoteStorageFileShareResult_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 7; + public EResult m_eResult; // The result of the operation + public UGCHandle_t m_hFile; // The handle that can be shared with users and features + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = Constants.k_cchFilenameMax)] + public string m_rgchFilename; // The name of the file that was shared + } + + // k_iClientRemoteStorageCallbacks + 8 is deprecated! Do not reuse + //----------------------------------------------------------------------------- + // Purpose: The result of a call to PublishFile() + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 9)] + public struct RemoteStoragePublishFileResult_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 9; + public EResult m_eResult; // The result of the operation. + public PublishedFileId_t m_nPublishedFileId; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; + } + + //----------------------------------------------------------------------------- + // Purpose: The result of a call to DeletePublishedFile() + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 11)] + public struct RemoteStorageDeletePublishedFileResult_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 11; + public EResult m_eResult; // The result of the operation. + public PublishedFileId_t m_nPublishedFileId; + } + + //----------------------------------------------------------------------------- + // Purpose: The result of a call to EnumerateUserPublishedFiles() + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 12)] + public struct RemoteStorageEnumerateUserPublishedFilesResult_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 12; + public EResult m_eResult; // The result of the operation. + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = Constants.k_unEnumeratePublishedFilesMaxResults)] + public PublishedFileId_t[] m_rgPublishedFileId; + } + + //----------------------------------------------------------------------------- + // Purpose: The result of a call to SubscribePublishedFile() + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 13)] + public struct RemoteStorageSubscribePublishedFileResult_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 13; + public EResult m_eResult; // The result of the operation. + public PublishedFileId_t m_nPublishedFileId; + } + + //----------------------------------------------------------------------------- + // Purpose: The result of a call to EnumerateSubscribePublishedFiles() + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 14)] + public struct RemoteStorageEnumerateUserSubscribedFilesResult_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 14; + public EResult m_eResult; // The result of the operation. + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = Constants.k_unEnumeratePublishedFilesMaxResults)] + public PublishedFileId_t[] m_rgPublishedFileId; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = Constants.k_unEnumeratePublishedFilesMaxResults)] + public uint[] m_rgRTimeSubscribed; + } + + //----------------------------------------------------------------------------- + // Purpose: The result of a call to UnsubscribePublishedFile() + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 15)] + public struct RemoteStorageUnsubscribePublishedFileResult_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 15; + public EResult m_eResult; // The result of the operation. + public PublishedFileId_t m_nPublishedFileId; + } + + //----------------------------------------------------------------------------- + // Purpose: The result of a call to CommitPublishedFileUpdate() + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 16)] + public struct RemoteStorageUpdatePublishedFileResult_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 16; + public EResult m_eResult; // The result of the operation. + public PublishedFileId_t m_nPublishedFileId; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; + } + + //----------------------------------------------------------------------------- + // Purpose: The result of a call to UGCDownload() + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 17)] + public struct RemoteStorageDownloadUGCResult_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 17; + public EResult m_eResult; // The result of the operation. + public UGCHandle_t m_hFile; // The handle to the file that was attempted to be downloaded. + public AppId_t m_nAppID; // ID of the app that created this file. + public int m_nSizeInBytes; // The size of the file that was downloaded, in bytes. + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = Constants.k_cchFilenameMax)] + public string m_pchFileName; // The name of the file that was downloaded. + public ulong m_ulSteamIDOwner; // Steam ID of the user who created this content. + } + + //----------------------------------------------------------------------------- + // Purpose: The result of a call to GetPublishedFileDetails() + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 18)] + public struct RemoteStorageGetPublishedFileDetailsResult_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 18; + public EResult m_eResult; // The result of the operation. + public PublishedFileId_t m_nPublishedFileId; + public AppId_t m_nCreatorAppID; // ID of the app that created this file. + public AppId_t m_nConsumerAppID; // ID of the app that will consume this file. + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = Constants.k_cchPublishedDocumentTitleMax)] + public string m_rgchTitle; // title of document + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = Constants.k_cchPublishedDocumentDescriptionMax)] + public string m_rgchDescription; // description of document + public UGCHandle_t m_hFile; // The handle of the primary file + public UGCHandle_t m_hPreviewFile; // The handle of the preview file + public ulong m_ulSteamIDOwner; // Steam ID of the user who created this content. + public uint m_rtimeCreated; // time when the published file was created + public uint m_rtimeUpdated; // time when the published file was last updated + public ERemoteStoragePublishedFileVisibility m_eVisibility; + [MarshalAs(UnmanagedType.I1)] + public bool m_bBanned; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = Constants.k_cchTagListMax)] + public string m_rgchTags; // comma separated list of all tags associated with this file + [MarshalAs(UnmanagedType.I1)] + public bool m_bTagsTruncated; // whether the list of tags was too long to be returned in the provided buffer + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = Constants.k_cchFilenameMax)] + public string m_pchFileName; // The name of the primary file + public int m_nFileSize; // Size of the primary file + public int m_nPreviewFileSize; // Size of the preview file + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = Constants.k_cchPublishedFileURLMax)] + public string m_rgchURL; // URL (for a video or a website) + public EWorkshopFileType m_eFileType; // Type of the file + [MarshalAs(UnmanagedType.I1)] + public bool m_bAcceptedForUse; // developer has specifically flagged this item as accepted in the Workshop + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 19)] + public struct RemoteStorageEnumerateWorkshopFilesResult_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 19; + public EResult m_eResult; + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = Constants.k_unEnumeratePublishedFilesMaxResults)] + public PublishedFileId_t[] m_rgPublishedFileId; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = Constants.k_unEnumeratePublishedFilesMaxResults)] + public float[] m_rgScore; + public AppId_t m_nAppId; + public uint m_unStartIndex; + } + + //----------------------------------------------------------------------------- + // Purpose: The result of GetPublishedItemVoteDetails + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 20)] + public struct RemoteStorageGetPublishedItemVoteDetailsResult_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 20; + public EResult m_eResult; + public PublishedFileId_t m_unPublishedFileId; + public int m_nVotesFor; + public int m_nVotesAgainst; + public int m_nReports; + public float m_fScore; + } + + //----------------------------------------------------------------------------- + // Purpose: User subscribed to a file for the app (from within the app or on the web) + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 21)] + public struct RemoteStoragePublishedFileSubscribed_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 21; + public PublishedFileId_t m_nPublishedFileId; // The published file id + public AppId_t m_nAppID; // ID of the app that will consume this file. + } + + //----------------------------------------------------------------------------- + // Purpose: User unsubscribed from a file for the app (from within the app or on the web) + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 22)] + public struct RemoteStoragePublishedFileUnsubscribed_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 22; + public PublishedFileId_t m_nPublishedFileId; // The published file id + public AppId_t m_nAppID; // ID of the app that will consume this file. + } + + //----------------------------------------------------------------------------- + // Purpose: Published file that a user owns was deleted (from within the app or the web) + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 23)] + public struct RemoteStoragePublishedFileDeleted_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 23; + public PublishedFileId_t m_nPublishedFileId; // The published file id + public AppId_t m_nAppID; // ID of the app that will consume this file. + } + + //----------------------------------------------------------------------------- + // Purpose: The result of a call to UpdateUserPublishedItemVote() + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 24)] + public struct RemoteStorageUpdateUserPublishedItemVoteResult_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 24; + public EResult m_eResult; // The result of the operation. + public PublishedFileId_t m_nPublishedFileId; // The published file id + } + + //----------------------------------------------------------------------------- + // Purpose: The result of a call to GetUserPublishedItemVoteDetails() + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 25)] + public struct RemoteStorageUserVoteDetails_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 25; + public EResult m_eResult; // The result of the operation. + public PublishedFileId_t m_nPublishedFileId; // The published file id + public EWorkshopVote m_eVote; // what the user voted + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 26)] + public struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 26; + public EResult m_eResult; // The result of the operation. + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = Constants.k_unEnumeratePublishedFilesMaxResults)] + public PublishedFileId_t[] m_rgPublishedFileId; + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 27)] + public struct RemoteStorageSetUserPublishedFileActionResult_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 27; + public EResult m_eResult; // The result of the operation. + public PublishedFileId_t m_nPublishedFileId; // The published file id + public EWorkshopFileAction m_eAction; // the action that was attempted + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 28)] + public struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 28; + public EResult m_eResult; // The result of the operation. + public EWorkshopFileAction m_eAction; // the action that was filtered on + public int m_nResultsReturned; + public int m_nTotalResultCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = Constants.k_unEnumeratePublishedFilesMaxResults)] + public PublishedFileId_t[] m_rgPublishedFileId; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = Constants.k_unEnumeratePublishedFilesMaxResults)] + public uint[] m_rgRTimeUpdated; + } + + //----------------------------------------------------------------------------- + // Purpose: Called periodically while a PublishWorkshopFile is in progress + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 29)] + public struct RemoteStoragePublishFileProgress_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 29; + public double m_dPercentFile; + [MarshalAs(UnmanagedType.I1)] + public bool m_bPreview; + } + + //----------------------------------------------------------------------------- + // Purpose: Called when the content for a published file is updated + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 30)] + public struct RemoteStoragePublishedFileUpdated_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 30; + public PublishedFileId_t m_nPublishedFileId; // The published file id + public AppId_t m_nAppID; // ID of the app that will consume this file. + public UGCHandle_t m_hFile; // The new content + } + + // callbacks + //----------------------------------------------------------------------------- + // Purpose: Screenshot successfully written or otherwise added to the library + // and can now be tagged + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamScreenshotsCallbacks + 1)] + public struct ScreenshotReady_t { + public const int k_iCallback = Constants.k_iSteamScreenshotsCallbacks + 1; + public ScreenshotHandle m_hLocal; + public EResult m_eResult; + } + + //----------------------------------------------------------------------------- + // Purpose: Screenshot has been requested by the user. Only sent if + // HookScreenshots() has been called, in which case Steam will not take + // the screenshot itself. + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] + [CallbackIdentity(Constants.k_iSteamScreenshotsCallbacks + 2)] + public struct ScreenshotRequested_t { + public const int k_iCallback = Constants.k_iSteamScreenshotsCallbacks + 2; + } + + //----------------------------------------------------------------------------- + // Purpose: Callback for querying UGC + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientUGCCallbacks + 1)] + public struct SteamUGCQueryCompleted_t { + public const int k_iCallback = Constants.k_iClientUGCCallbacks + 1; + public UGCQueryHandle_t m_handle; + public EResult m_eResult; + public uint m_unNumResultsReturned; + public uint m_unTotalMatchingResults; + [MarshalAs(UnmanagedType.I1)] + public bool m_bCachedData; // indicates whether this data was retrieved from the local on-disk cache + } + + //----------------------------------------------------------------------------- + // Purpose: Callback for requesting details on one piece of UGC + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientUGCCallbacks + 2)] + public struct SteamUGCRequestUGCDetailsResult_t { + public const int k_iCallback = Constants.k_iClientUGCCallbacks + 2; + public SteamUGCDetails_t m_details; + [MarshalAs(UnmanagedType.I1)] + public bool m_bCachedData; // indicates whether this data was retrieved from the local on-disk cache + } + + //----------------------------------------------------------------------------- + // Purpose: result for ISteamUGC::CreateItem() + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientUGCCallbacks + 3)] + public struct CreateItemResult_t { + public const int k_iCallback = Constants.k_iClientUGCCallbacks + 3; + public EResult m_eResult; + public PublishedFileId_t m_nPublishedFileId; // new item got this UGC PublishFileID + [MarshalAs(UnmanagedType.I1)] + public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; + } + + //----------------------------------------------------------------------------- + // Purpose: result for ISteamUGC::SubmitItemUpdate() + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientUGCCallbacks + 4)] + public struct SubmitItemUpdateResult_t { + public const int k_iCallback = Constants.k_iClientUGCCallbacks + 4; + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; + } + + //----------------------------------------------------------------------------- + // Purpose: a Workshop item has been installed or updated + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientUGCCallbacks + 5)] + public struct ItemInstalled_t { + public const int k_iCallback = Constants.k_iClientUGCCallbacks + 5; + public AppId_t m_unAppID; + public PublishedFileId_t m_nPublishedFileId; + } + + //----------------------------------------------------------------------------- + // Purpose: result of DownloadItem(), existing item files can be accessed again + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientUGCCallbacks + 6)] + public struct DownloadItemResult_t { + public const int k_iCallback = Constants.k_iClientUGCCallbacks + 6; + public AppId_t m_unAppID; + public PublishedFileId_t m_nPublishedFileId; + public EResult m_eResult; + } + + //----------------------------------------------------------------------------- + // Purpose: result of AddItemToFavorites() or RemoveItemFromFavorites() + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientUGCCallbacks + 7)] + public struct UserFavoriteItemsListChanged_t { + public const int k_iCallback = Constants.k_iClientUGCCallbacks + 7; + public PublishedFileId_t m_nPublishedFileId; + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bWasAddRequest; + } + + //----------------------------------------------------------------------------- + // Purpose: The result of a call to SetUserItemVote() + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientUGCCallbacks + 8)] + public struct SetUserItemVoteResult_t { + public const int k_iCallback = Constants.k_iClientUGCCallbacks + 8; + public PublishedFileId_t m_nPublishedFileId; + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bVoteUp; + } + + //----------------------------------------------------------------------------- + // Purpose: The result of a call to GetUserItemVote() + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientUGCCallbacks + 9)] + public struct GetUserItemVoteResult_t { + public const int k_iCallback = Constants.k_iClientUGCCallbacks + 9; + public PublishedFileId_t m_nPublishedFileId; + public EResult m_eResult; + [MarshalAs(UnmanagedType.I1)] + public bool m_bVotedUp; + [MarshalAs(UnmanagedType.I1)] + public bool m_bVotedDown; + [MarshalAs(UnmanagedType.I1)] + public bool m_bVoteSkipped; + } + + // callbacks + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientUnifiedMessagesCallbacks + 1)] + public struct SteamUnifiedMessagesSendMethodResult_t { + public const int k_iCallback = Constants.k_iClientUnifiedMessagesCallbacks + 1; + public ClientUnifiedMessageHandle m_hHandle; // The handle returned by SendMethod(). + public ulong m_unContext; // Context provided when calling SendMethod(). + public EResult m_eResult; // The result of the method call. + public uint m_unResponseSize; // The size of the response. + } + + // callbacks + //----------------------------------------------------------------------------- + // Purpose: called when a connections to the Steam back-end has been established + // this means the Steam client now has a working connection to the Steam servers + // usually this will have occurred before the game has launched, and should + // only be seen if the user has dropped connection due to a networking issue + // or a Steam server update + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] + [CallbackIdentity(Constants.k_iSteamUserCallbacks + 1)] + public struct SteamServersConnected_t { + public const int k_iCallback = Constants.k_iSteamUserCallbacks + 1; + } + + //----------------------------------------------------------------------------- + // Purpose: called when a connection attempt has failed + // this will occur periodically if the Steam client is not connected, + // and has failed in it's retry to establish a connection + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserCallbacks + 2)] + public struct SteamServerConnectFailure_t { + public const int k_iCallback = Constants.k_iSteamUserCallbacks + 2; + public EResult m_eResult; + } + + //----------------------------------------------------------------------------- + // Purpose: called if the client has lost connection to the Steam servers + // real-time services will be disabled until a matching SteamServersConnected_t has been posted + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserCallbacks + 3)] + public struct SteamServersDisconnected_t { + public const int k_iCallback = Constants.k_iSteamUserCallbacks + 3; + public EResult m_eResult; + } + + //----------------------------------------------------------------------------- + // Purpose: Sent by the Steam server to the client telling it to disconnect from the specified game server, + // which it may be in the process of or already connected to. + // The game client should immediately disconnect upon receiving this message. + // This can usually occur if the user doesn't have rights to play on the game server. + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserCallbacks + 13)] + public struct ClientGameServerDeny_t { + public const int k_iCallback = Constants.k_iSteamUserCallbacks + 13; + + public uint m_uAppID; + public uint m_unGameServerIP; + public ushort m_usGameServerPort; + public ushort m_bSecure; + public uint m_uReason; + } + + //----------------------------------------------------------------------------- + // Purpose: called when the callback system for this client is in an error state (and has flushed pending callbacks) + // When getting this message the client should disconnect from Steam, reset any stored Steam state and reconnect. + // This usually occurs in the rare event the Steam client has some kind of fatal error. + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserCallbacks + 17)] + public struct IPCFailure_t { + public const int k_iCallback = Constants.k_iSteamUserCallbacks + 17; + public byte m_eFailureType; + } + + //----------------------------------------------------------------------------- + // Purpose: Signaled whenever licenses change + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] + [CallbackIdentity(Constants.k_iSteamUserCallbacks + 25)] + public struct LicensesUpdated_t { + public const int k_iCallback = Constants.k_iSteamUserCallbacks + 25; + } + + //----------------------------------------------------------------------------- + // callback for BeginAuthSession + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = 4)] + [CallbackIdentity(Constants.k_iSteamUserCallbacks + 43)] + public struct ValidateAuthTicketResponse_t { + public const int k_iCallback = Constants.k_iSteamUserCallbacks + 43; + public CSteamID m_SteamID; + public EAuthSessionResponse m_eAuthSessionResponse; + public CSteamID m_OwnerSteamID; // different from m_SteamID if borrowed + } + + //----------------------------------------------------------------------------- + // Purpose: called when a user has responded to a microtransaction authorization request + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserCallbacks + 52)] + public struct MicroTxnAuthorizationResponse_t { + public const int k_iCallback = Constants.k_iSteamUserCallbacks + 52; + + public uint m_unAppID; // AppID for this microtransaction + public ulong m_ulOrderID; // OrderID provided for the microtransaction + public byte m_bAuthorized; // if user authorized transaction + } + + //----------------------------------------------------------------------------- + // Purpose: Result from RequestEncryptedAppTicket + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserCallbacks + 54)] + public struct EncryptedAppTicketResponse_t { + public const int k_iCallback = Constants.k_iSteamUserCallbacks + 54; + + public EResult m_eResult; + } + + //----------------------------------------------------------------------------- + // callback for GetAuthSessionTicket + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserCallbacks + 63)] + public struct GetAuthSessionTicketResponse_t { + public const int k_iCallback = Constants.k_iSteamUserCallbacks + 63; + public HAuthTicket m_hAuthTicket; + public EResult m_eResult; + } + + //----------------------------------------------------------------------------- + // Purpose: sent to your game in response to a steam://gamewebcallback/ command + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserCallbacks + 64)] + public struct GameWebCallback_t { + public const int k_iCallback = Constants.k_iSteamUserCallbacks + 64; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_szURL; + } + + //----------------------------------------------------------------------------- + // Purpose: sent to your game in response to ISteamUser::RequestStoreAuthURL + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserCallbacks + 65)] + public struct StoreAuthURLResponse_t { + public const int k_iCallback = Constants.k_iSteamUserCallbacks + 65; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)] + public string m_szURL; + } + + // callbacks + //----------------------------------------------------------------------------- + // Purpose: called when the latests stats and achievements have been received + // from the server + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Explicit, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserStatsCallbacks + 1)] + public struct UserStatsReceived_t { + public const int k_iCallback = Constants.k_iSteamUserStatsCallbacks + 1; + [FieldOffset(0)] + public ulong m_nGameID; // Game these stats are for + [FieldOffset(8)] + public EResult m_eResult; // Success / error fetching the stats + [FieldOffset(12)] + public CSteamID m_steamIDUser; // The user for whom the stats are retrieved for + } + + //----------------------------------------------------------------------------- + // Purpose: result of a request to store the user stats for a game + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserStatsCallbacks + 2)] + public struct UserStatsStored_t { + public const int k_iCallback = Constants.k_iSteamUserStatsCallbacks + 2; + public ulong m_nGameID; // Game these stats are for + public EResult m_eResult; // success / error + } + + //----------------------------------------------------------------------------- + // Purpose: result of a request to store the achievements for a game, or an + // "indicate progress" call. If both m_nCurProgress and m_nMaxProgress + // are zero, that means the achievement has been fully unlocked. + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserStatsCallbacks + 3)] + public struct UserAchievementStored_t { + public const int k_iCallback = Constants.k_iSteamUserStatsCallbacks + 3; + + public ulong m_nGameID; // Game this is for + [MarshalAs(UnmanagedType.I1)] + public bool m_bGroupAchievement; // if this is a "group" achievement + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = Constants.k_cchStatNameMax)] + public string m_rgchAchievementName; // name of the achievement + public uint m_nCurProgress; // current progress towards the achievement + public uint m_nMaxProgress; // "out of" this many + } + + //----------------------------------------------------------------------------- + // Purpose: call result for finding a leaderboard, returned as a result of FindOrCreateLeaderboard() or FindLeaderboard() + // use CCallResult<> to map this async result to a member function + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserStatsCallbacks + 4)] + public struct LeaderboardFindResult_t { + public const int k_iCallback = Constants.k_iSteamUserStatsCallbacks + 4; + public SteamLeaderboard_t m_hSteamLeaderboard; // handle to the leaderboard serarched for, 0 if no leaderboard found + public byte m_bLeaderboardFound; // 0 if no leaderboard found + } + + //----------------------------------------------------------------------------- + // Purpose: call result indicating scores for a leaderboard have been downloaded and are ready to be retrieved, returned as a result of DownloadLeaderboardEntries() + // use CCallResult<> to map this async result to a member function + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserStatsCallbacks + 5)] + public struct LeaderboardScoresDownloaded_t { + public const int k_iCallback = Constants.k_iSteamUserStatsCallbacks + 5; + public SteamLeaderboard_t m_hSteamLeaderboard; + public SteamLeaderboardEntries_t m_hSteamLeaderboardEntries; // the handle to pass into GetDownloadedLeaderboardEntries() + public int m_cEntryCount; // the number of entries downloaded + } + + //----------------------------------------------------------------------------- + // Purpose: call result indicating scores has been uploaded, returned as a result of UploadLeaderboardScore() + // use CCallResult<> to map this async result to a member function + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserStatsCallbacks + 6)] + public struct LeaderboardScoreUploaded_t { + public const int k_iCallback = Constants.k_iSteamUserStatsCallbacks + 6; + public byte m_bSuccess; // 1 if the call was successful + public SteamLeaderboard_t m_hSteamLeaderboard; // the leaderboard handle that was + public int m_nScore; // the score that was attempted to set + public byte m_bScoreChanged; // true if the score in the leaderboard change, false if the existing score was better + public int m_nGlobalRankNew; // the new global rank of the user in this leaderboard + public int m_nGlobalRankPrevious; // the previous global rank of the user in this leaderboard; 0 if the user had no existing entry in the leaderboard + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserStatsCallbacks + 7)] + public struct NumberOfCurrentPlayers_t { + public const int k_iCallback = Constants.k_iSteamUserStatsCallbacks + 7; + public byte m_bSuccess; // 1 if the call was successful + public int m_cPlayers; // Number of players currently playing + } + + //----------------------------------------------------------------------------- + // Purpose: Callback indicating that a user's stats have been unloaded. + // Call RequestUserStats again to access stats for this user + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserStatsCallbacks + 8)] + public struct UserStatsUnloaded_t { + public const int k_iCallback = Constants.k_iSteamUserStatsCallbacks + 8; + public CSteamID m_steamIDUser; // User whose stats have been unloaded + } + + //----------------------------------------------------------------------------- + // Purpose: Callback indicating that an achievement icon has been fetched + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserStatsCallbacks + 9)] + public struct UserAchievementIconFetched_t { + public const int k_iCallback = Constants.k_iSteamUserStatsCallbacks + 9; + + public CGameID m_nGameID; // Game this is for + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = Constants.k_cchStatNameMax)] + public string m_rgchAchievementName; // name of the achievement + [MarshalAs(UnmanagedType.I1)] + public bool m_bAchieved; // Is the icon for the achieved or not achieved version? + public int m_nIconHandle; // Handle to the image, which can be used in SteamUtils()->GetImageRGBA(), 0 means no image is set for the achievement + } + + //----------------------------------------------------------------------------- + // Purpose: Callback indicating that global achievement percentages are fetched + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserStatsCallbacks + 10)] + public struct GlobalAchievementPercentagesReady_t { + public const int k_iCallback = Constants.k_iSteamUserStatsCallbacks + 10; + + public ulong m_nGameID; // Game this is for + public EResult m_eResult; // Result of the operation + } + + //----------------------------------------------------------------------------- + // Purpose: call result indicating UGC has been uploaded, returned as a result of SetLeaderboardUGC() + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserStatsCallbacks + 11)] + public struct LeaderboardUGCSet_t { + public const int k_iCallback = Constants.k_iSteamUserStatsCallbacks + 11; + public EResult m_eResult; // The result of the operation + public SteamLeaderboard_t m_hSteamLeaderboard; // the leaderboard handle that was + } + + //----------------------------------------------------------------------------- + // Purpose: callback indicating global stats have been received. + // Returned as a result of RequestGlobalStats() + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserStatsCallbacks + 12)] + public struct GlobalStatsReceived_t { + public const int k_iCallback = Constants.k_iSteamUserStatsCallbacks + 12; + public ulong m_nGameID; // Game global stats were requested for + public EResult m_eResult; // The result of the request + } + + // callbacks + //----------------------------------------------------------------------------- + // Purpose: The country of the user changed + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] + [CallbackIdentity(Constants.k_iSteamUtilsCallbacks + 1)] + public struct IPCountry_t { + public const int k_iCallback = Constants.k_iSteamUtilsCallbacks + 1; + } + + //----------------------------------------------------------------------------- + // Purpose: Fired when running on a laptop and less than 10 minutes of battery is left, fires then every minute + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUtilsCallbacks + 2)] + public struct LowBatteryPower_t { + public const int k_iCallback = Constants.k_iSteamUtilsCallbacks + 2; + public byte m_nMinutesBatteryLeft; + } + + //----------------------------------------------------------------------------- + // Purpose: called when a SteamAsyncCall_t has completed (or failed) + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUtilsCallbacks + 3)] + public struct SteamAPICallCompleted_t { + public const int k_iCallback = Constants.k_iSteamUtilsCallbacks + 3; + public SteamAPICall_t m_hAsyncCall; + } + + //----------------------------------------------------------------------------- + // called when Steam wants to shutdown + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] + [CallbackIdentity(Constants.k_iSteamUtilsCallbacks + 4)] + public struct SteamShutdown_t { + public const int k_iCallback = Constants.k_iSteamUtilsCallbacks + 4; + } + + //----------------------------------------------------------------------------- + // callback for CheckFileSignature + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUtilsCallbacks + 5)] + public struct CheckFileSignature_t { + public const int k_iCallback = Constants.k_iSteamUtilsCallbacks + 5; + public ECheckFileSignature m_eCheckFileSignature; + } + + // k_iSteamUtilsCallbacks + 13 is taken + //----------------------------------------------------------------------------- + // Big Picture gamepad text input has been closed + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUtilsCallbacks + 14)] + public struct GamepadTextInputDismissed_t { + public const int k_iCallback = Constants.k_iSteamUtilsCallbacks + 14; + [MarshalAs(UnmanagedType.I1)] + public bool m_bSubmitted; // true if user entered & accepted text (Call ISteamUtils::GetEnteredGamepadTextInput() for text), false if canceled input + public uint m_unSubmittedText; + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] + [CallbackIdentity(Constants.k_iClientVideoCallbacks + 4)] + public struct BroadcastUploadStart_t { + public const int k_iCallback = Constants.k_iClientVideoCallbacks + 4; + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientVideoCallbacks + 5)] + public struct BroadcastUploadStop_t { + public const int k_iCallback = Constants.k_iClientVideoCallbacks + 5; + public EBroadcastUploadResult m_eResult; + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientVideoCallbacks + 11)] + public struct GetVideoURLResult_t { + public const int k_iCallback = Constants.k_iClientVideoCallbacks + 11; + public EResult m_eResult; + public AppId_t m_unVideoAppID; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_rgchURL; + } + +} diff --git a/Assets/Editor/Steamworks.NET/autogen/SteamCallbacks.cs.meta b/Assets/Editor/Steamworks.NET/autogen/SteamCallbacks.cs.meta new file mode 100644 index 0000000..9e42537 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/SteamCallbacks.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: bb0c129f6c80a984f9e57c4e3ba5c0f2 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/SteamConstants.cs b/Assets/Editor/Steamworks.NET/autogen/SteamConstants.cs new file mode 100644 index 0000000..4de4a60 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/SteamConstants.cs @@ -0,0 +1,209 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class Constants { + public const string STEAMAPPLIST_INTERFACE_VERSION = "STEAMAPPLIST_INTERFACE_VERSION001"; + public const string STEAMAPPS_INTERFACE_VERSION = "STEAMAPPS_INTERFACE_VERSION007"; + public const string STEAMAPPTICKET_INTERFACE_VERSION = "STEAMAPPTICKET_INTERFACE_VERSION001"; + public const string STEAMCLIENT_INTERFACE_VERSION = "SteamClient017"; + public const string STEAMCONTROLLER_INTERFACE_VERSION = "STEAMCONTROLLER_INTERFACE_VERSION"; + public const string STEAMFRIENDS_INTERFACE_VERSION = "SteamFriends015"; + public const string STEAMGAMECOORDINATOR_INTERFACE_VERSION = "SteamGameCoordinator001"; + public const string STEAMGAMESERVER_INTERFACE_VERSION = "SteamGameServer012"; + public const string STEAMGAMESERVERSTATS_INTERFACE_VERSION = "SteamGameServerStats001"; + public const string STEAMHTMLSURFACE_INTERFACE_VERSION = "STEAMHTMLSURFACE_INTERFACE_VERSION_003"; + public const string STEAMHTTP_INTERFACE_VERSION = "STEAMHTTP_INTERFACE_VERSION002"; + public const string STEAMINVENTORY_INTERFACE_VERSION = "STEAMINVENTORY_INTERFACE_V001"; + public const string STEAMMATCHMAKING_INTERFACE_VERSION = "SteamMatchMaking009"; + public const string STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION = "SteamMatchMakingServers002"; + public const string STEAMMUSIC_INTERFACE_VERSION = "STEAMMUSIC_INTERFACE_VERSION001"; + public const string STEAMMUSICREMOTE_INTERFACE_VERSION = "STEAMMUSICREMOTE_INTERFACE_VERSION001"; + public const string STEAMNETWORKING_INTERFACE_VERSION = "SteamNetworking005"; + public const string STEAMREMOTESTORAGE_INTERFACE_VERSION = "STEAMREMOTESTORAGE_INTERFACE_VERSION012"; + public const string STEAMSCREENSHOTS_INTERFACE_VERSION = "STEAMSCREENSHOTS_INTERFACE_VERSION002"; + public const string STEAMUGC_INTERFACE_VERSION = "STEAMUGC_INTERFACE_VERSION007"; + public const string STEAMUNIFIEDMESSAGES_INTERFACE_VERSION = "STEAMUNIFIEDMESSAGES_INTERFACE_VERSION001"; + public const string STEAMUSER_INTERFACE_VERSION = "SteamUser018"; + public const string STEAMUSERSTATS_INTERFACE_VERSION = "STEAMUSERSTATS_INTERFACE_VERSION011"; + public const string STEAMUTILS_INTERFACE_VERSION = "SteamUtils007"; + public const string STEAMVIDEO_INTERFACE_VERSION = "STEAMVIDEO_INTERFACE_V001"; + public const int k_cubAppProofOfPurchaseKeyMax = 64; // max bytes of a legacy cd key we support + //----------------------------------------------------------------------------- + // Purpose: Base values for callback identifiers, each callback must + // have a unique ID. + //----------------------------------------------------------------------------- + public const int k_iSteamUserCallbacks = 100; + public const int k_iSteamGameServerCallbacks = 200; + public const int k_iSteamFriendsCallbacks = 300; + public const int k_iSteamBillingCallbacks = 400; + public const int k_iSteamMatchmakingCallbacks = 500; + public const int k_iSteamContentServerCallbacks = 600; + public const int k_iSteamUtilsCallbacks = 700; + public const int k_iClientFriendsCallbacks = 800; + public const int k_iClientUserCallbacks = 900; + public const int k_iSteamAppsCallbacks = 1000; + public const int k_iSteamUserStatsCallbacks = 1100; + public const int k_iSteamNetworkingCallbacks = 1200; + public const int k_iClientRemoteStorageCallbacks = 1300; + public const int k_iClientDepotBuilderCallbacks = 1400; + public const int k_iSteamGameServerItemsCallbacks = 1500; + public const int k_iClientUtilsCallbacks = 1600; + public const int k_iSteamGameCoordinatorCallbacks = 1700; + public const int k_iSteamGameServerStatsCallbacks = 1800; + public const int k_iSteam2AsyncCallbacks = 1900; + public const int k_iSteamGameStatsCallbacks = 2000; + public const int k_iClientHTTPCallbacks = 2100; + public const int k_iClientScreenshotsCallbacks = 2200; + public const int k_iSteamScreenshotsCallbacks = 2300; + public const int k_iClientAudioCallbacks = 2400; + public const int k_iClientUnifiedMessagesCallbacks = 2500; + public const int k_iSteamStreamLauncherCallbacks = 2600; + public const int k_iClientControllerCallbacks = 2700; + public const int k_iSteamControllerCallbacks = 2800; + public const int k_iClientParentalSettingsCallbacks = 2900; + public const int k_iClientDeviceAuthCallbacks = 3000; + public const int k_iClientNetworkDeviceManagerCallbacks = 3100; + public const int k_iClientMusicCallbacks = 3200; + public const int k_iClientRemoteClientManagerCallbacks = 3300; + public const int k_iClientUGCCallbacks = 3400; + public const int k_iSteamStreamClientCallbacks = 3500; + public const int k_IClientProductBuilderCallbacks = 3600; + public const int k_iClientShortcutsCallbacks = 3700; + public const int k_iClientRemoteControlManagerCallbacks = 3800; + public const int k_iSteamAppListCallbacks = 3900; + public const int k_iSteamMusicCallbacks = 4000; + public const int k_iSteamMusicRemoteCallbacks = 4100; + public const int k_iClientVRCallbacks = 4200; + public const int k_iClientReservedCallbacks = 4300; + public const int k_iSteamReservedCallbacks = 4400; + public const int k_iSteamHTMLSurfaceCallbacks = 4500; + public const int k_iClientVideoCallbacks = 4600; + public const int k_iClientInventoryCallbacks = 4700; + // maximum length of friend group name (not including terminating nul!) + public const int k_cchMaxFriendsGroupName = 64; + // maximum number of groups a single user is allowed + public const int k_cFriendsGroupLimit = 100; + public const int k_cEnumerateFollowersMax = 50; + // maximum number of characters in a user's name. Two flavors; one for UTF-8 and one for UTF-16. + // The UTF-8 version has to be very generous to accomodate characters that get large when encoded + // in UTF-8. + public const int k_cchPersonaNameMax = 128; + public const int k_cwchPersonaNameMax = 32; + // size limit on chat room or member metadata + public const int k_cubChatMetadataMax = 8192; + // size limits on Rich Presence data + public const int k_cchMaxRichPresenceKeys = 20; + public const int k_cchMaxRichPresenceKeyLength = 64; + public const int k_cchMaxRichPresenceValueLength = 256; + // game server flags + public const int k_unServerFlagNone = 0x00; + public const int k_unServerFlagActive = 0x01; // server has users playing + public const int k_unServerFlagSecure = 0x02; // server wants to be secure + public const int k_unServerFlagDedicated = 0x04; // server is dedicated + public const int k_unServerFlagLinux = 0x08; // linux build + public const int k_unServerFlagPassworded = 0x10; // password protected + public const int k_unServerFlagPrivate = 0x20; // server shouldn't list on master server and + // game server flags + public const int k_unFavoriteFlagNone = 0x00; + public const int k_unFavoriteFlagFavorite = 0x01; // this game favorite entry is for the favorites list + public const int k_unFavoriteFlagHistory = 0x02; // this game favorite entry is for the history list + //----------------------------------------------------------------------------- + // Purpose: Defines the largest allowed file size. Cloud files cannot be written + // in a single chunk over 100MB (and cannot be over 200MB total.) + //----------------------------------------------------------------------------- + public const int k_unMaxCloudFileChunkSize = 100 * 1024 * 1024; + public const int k_cchPublishedDocumentTitleMax = 128 + 1; + public const int k_cchPublishedDocumentDescriptionMax = 8000; + public const int k_cchPublishedDocumentChangeDescriptionMax = 8000; + public const int k_unEnumeratePublishedFilesMaxResults = 50; + public const int k_cchTagListMax = 1024 + 1; + public const int k_cchFilenameMax = 260; + public const int k_cchPublishedFileURLMax = 256; + public const int k_nScreenshotMaxTaggedUsers = 32; + public const int k_nScreenshotMaxTaggedPublishedFiles = 32; + public const int k_cubUFSTagTypeMax = 255; + public const int k_cubUFSTagValueMax = 255; + // Required with of a thumbnail provided to AddScreenshotToLibrary. If you do not provide a thumbnail + // one will be generated. + public const int k_ScreenshotThumbWidth = 200; + public const int kNumUGCResultsPerPage = 50; + public const int k_cchDeveloperMetadataMax = 5000; + // size limit on stat or achievement name (UTF-8 encoded) + public const int k_cchStatNameMax = 128; + // maximum number of bytes for a leaderboard name (UTF-8 encoded) + public const int k_cchLeaderboardNameMax = 128; + // maximum number of details int32's storable for a single leaderboard entry + public const int k_cLeaderboardDetailsMax = 64; + // + // Max size (in bytes of UTF-8 data, not in characters) of server fields, including null terminator. + // WARNING: These cannot be changed easily, without breaking clients using old interfaces. + // + public const int k_cbMaxGameServerGameDir = 32; + public const int k_cbMaxGameServerMapName = 32; + public const int k_cbMaxGameServerGameDescription = 64; + public const int k_cbMaxGameServerName = 64; + public const int k_cbMaxGameServerTags = 128; + public const int k_cbMaxGameServerGameData = 2048; + public const int k_unSteamAccountIDMask = -1; + public const int k_unSteamAccountInstanceMask = 0x000FFFFF; + // we allow 3 simultaneous user account instances right now, 1= desktop, 2 = console, 4 = web, 0 = all + public const int k_unSteamUserDesktopInstance = 1; + public const int k_unSteamUserConsoleInstance = 2; + public const int k_unSteamUserWebInstance = 4; + public const int k_cchGameExtraInfoMax = 64; + public const int k_nSteamEncryptedAppTicketSymmetricKeyLen = 32; + public const int k_cubSaltSize = 8; + public const ulong k_GIDNil = 0xffffffffffffffff; + public const ulong k_TxnIDNil = k_GIDNil; + public const ulong k_TxnIDUnknown = 0; + public const int k_uPackageIdFreeSub = 0x0; + public const int k_uPackageIdInvalid = -1; + public const ulong k_ulAssetClassIdInvalid = 0x0; + public const int k_uPhysicalItemIdInvalid = 0x0; + public const int k_uCellIDInvalid = -1; + public const int k_uPartnerIdInvalid = 0; + // callbacks + public const int MAX_STEAM_CONTROLLERS = 16; + public const int STEAM_RIGHT_TRIGGER_MASK = 0x0000001; + public const int STEAM_LEFT_TRIGGER_MASK = 0x0000002; + public const int STEAM_RIGHT_BUMPER_MASK = 0x0000004; + public const int STEAM_LEFT_BUMPER_MASK = 0x0000008; + public const int STEAM_BUTTON_0_MASK = 0x0000010; + public const int STEAM_BUTTON_1_MASK = 0x0000020; + public const int STEAM_BUTTON_2_MASK = 0x0000040; + public const int STEAM_BUTTON_3_MASK = 0x0000080; + public const int STEAM_TOUCH_0_MASK = 0x0000100; + public const int STEAM_TOUCH_1_MASK = 0x0000200; + public const int STEAM_TOUCH_2_MASK = 0x0000400; + public const int STEAM_TOUCH_3_MASK = 0x0000800; + public const int STEAM_BUTTON_MENU_MASK = 0x0001000; + public const int STEAM_BUTTON_STEAM_MASK = 0x0002000; + public const int STEAM_BUTTON_ESCAPE_MASK = 0x0004000; + public const int STEAM_BUTTON_BACK_LEFT_MASK = 0x0008000; + public const int STEAM_BUTTON_BACK_RIGHT_MASK = 0x0010000; + public const int STEAM_BUTTON_LEFTPAD_CLICKED_MASK = 0x0020000; + public const int STEAM_BUTTON_RIGHTPAD_CLICKED_MASK = 0x0040000; + public const int STEAM_LEFTPAD_FINGERDOWN_MASK = 0x0080000; + public const int STEAM_RIGHTPAD_FINGERDOWN_MASK = 0x0100000; + public const int STEAM_JOYSTICK_BUTTON_MASK = 0x0400000; + public const short MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE = -1; + public const int INVALID_HTTPREQUEST_HANDLE = 0; + // maximum number of characters a lobby metadata key can be + public const byte k_nMaxLobbyKeyLength = 255; + public const int k_SteamMusicNameMaxLength = 255; + public const int k_SteamMusicPNGMaxLength = 65535; + //----------------------------------------------------------------------------- + // Constants used for query ports. + //----------------------------------------------------------------------------- + public const int QUERY_PORT_NOT_INITIALIZED = 0xFFFF; // We haven't asked the GS for this query port's actual value yet. + public const int QUERY_PORT_ERROR = 0xFFFE; // We were unable to get the query port for this server. + } +} diff --git a/Assets/Editor/Steamworks.NET/autogen/SteamConstants.cs.meta b/Assets/Editor/Steamworks.NET/autogen/SteamConstants.cs.meta new file mode 100644 index 0000000..a193867 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/SteamConstants.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 1af651dd81aa1ed449181e6ac6e14a71 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/SteamEnums.cs b/Assets/Editor/Steamworks.NET/autogen/SteamEnums.cs new file mode 100644 index 0000000..d3c8943 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/SteamEnums.cs @@ -0,0 +1,1044 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + //----------------------------------------------------------------------------- + // Purpose: possible results when registering an activation code + //----------------------------------------------------------------------------- + public enum ERegisterActivationCodeResult : int { + k_ERegisterActivationCodeResultOK = 0, + k_ERegisterActivationCodeResultFail = 1, + k_ERegisterActivationCodeResultAlreadyRegistered = 2, + k_ERegisterActivationCodeResultTimeout = 3, + k_ERegisterActivationCodeAlreadyOwned = 4, + } + + public enum ESteamControllerPad : int { + k_ESteamControllerPad_Left, + k_ESteamControllerPad_Right + } + + //----------------------------------------------------------------------------- + // Purpose: set of relationships to other users + //----------------------------------------------------------------------------- + public enum EFriendRelationship : int { + k_EFriendRelationshipNone = 0, + k_EFriendRelationshipBlocked = 1, // this doesn't get stored; the user has just done an Ignore on an friendship invite + k_EFriendRelationshipRequestRecipient = 2, + k_EFriendRelationshipFriend = 3, + k_EFriendRelationshipRequestInitiator = 4, + k_EFriendRelationshipIgnored = 5, // this is stored; the user has explicit blocked this other user from comments/chat/etc + k_EFriendRelationshipIgnoredFriend = 6, + k_EFriendRelationshipSuggested = 7, + + // keep this updated + k_EFriendRelationshipMax = 8, + } + + //----------------------------------------------------------------------------- + // Purpose: list of states a friend can be in + //----------------------------------------------------------------------------- + public enum EPersonaState : int { + k_EPersonaStateOffline = 0, // friend is not currently logged on + k_EPersonaStateOnline = 1, // friend is logged on + k_EPersonaStateBusy = 2, // user is on, but busy + k_EPersonaStateAway = 3, // auto-away feature + k_EPersonaStateSnooze = 4, // auto-away for a long time + k_EPersonaStateLookingToTrade = 5, // Online, trading + k_EPersonaStateLookingToPlay = 6, // Online, wanting to play + k_EPersonaStateMax, + } + + //----------------------------------------------------------------------------- + // Purpose: flags for enumerating friends list, or quickly checking a the relationship between users + //----------------------------------------------------------------------------- + [Flags] + public enum EFriendFlags : int { + k_EFriendFlagNone = 0x00, + k_EFriendFlagBlocked = 0x01, + k_EFriendFlagFriendshipRequested = 0x02, + k_EFriendFlagImmediate = 0x04, // "regular" friend + k_EFriendFlagClanMember = 0x08, + k_EFriendFlagOnGameServer = 0x10, + // k_EFriendFlagHasPlayedWith = 0x20, // not currently used + // k_EFriendFlagFriendOfFriend = 0x40, // not currently used + k_EFriendFlagRequestingFriendship = 0x80, + k_EFriendFlagRequestingInfo = 0x100, + k_EFriendFlagIgnored = 0x200, + k_EFriendFlagIgnoredFriend = 0x400, + k_EFriendFlagSuggested = 0x800, + k_EFriendFlagAll = 0xFFFF, + } + + //----------------------------------------------------------------------------- + // Purpose: user restriction flags + //----------------------------------------------------------------------------- + public enum EUserRestriction : int { + k_nUserRestrictionNone = 0, // no known chat/content restriction + k_nUserRestrictionUnknown = 1, // we don't know yet (user offline) + k_nUserRestrictionAnyChat = 2, // user is not allowed to (or can't) send/recv any chat + k_nUserRestrictionVoiceChat = 4, // user is not allowed to (or can't) send/recv voice chat + k_nUserRestrictionGroupChat = 8, // user is not allowed to (or can't) send/recv group chat + k_nUserRestrictionRating = 16, // user is too young according to rating in current region + k_nUserRestrictionGameInvites = 32, // user cannot send or recv game invites (e.g. mobile) + k_nUserRestrictionTrading = 64, // user cannot participate in trading (console, mobile) + } + + // These values are passed as parameters to the store + public enum EOverlayToStoreFlag : int { + k_EOverlayToStoreFlag_None = 0, + k_EOverlayToStoreFlag_AddToCart = 1, + k_EOverlayToStoreFlag_AddToCartAndShow = 2, + } + + // used in PersonaStateChange_t::m_nChangeFlags to describe what's changed about a user + // these flags describe what the client has learned has changed recently, so on startup you'll see a name, avatar & relationship change for every friend + [Flags] + public enum EPersonaChange : int { + k_EPersonaChangeName = 0x0001, + k_EPersonaChangeStatus = 0x0002, + k_EPersonaChangeComeOnline = 0x0004, + k_EPersonaChangeGoneOffline = 0x0008, + k_EPersonaChangeGamePlayed = 0x0010, + k_EPersonaChangeGameServer = 0x0020, + k_EPersonaChangeAvatar = 0x0040, + k_EPersonaChangeJoinedSource= 0x0080, + k_EPersonaChangeLeftSource = 0x0100, + k_EPersonaChangeRelationshipChanged = 0x0200, + k_EPersonaChangeNameFirstSet = 0x0400, + k_EPersonaChangeFacebookInfo = 0x0800, + k_EPersonaChangeNickname = 0x1000, + k_EPersonaChangeSteamLevel = 0x2000, + } + + // list of possible return values from the ISteamGameCoordinator API + public enum EGCResults : int { + k_EGCResultOK = 0, + k_EGCResultNoMessage = 1, // There is no message in the queue + k_EGCResultBufferTooSmall = 2, // The buffer is too small for the requested message + k_EGCResultNotLoggedOn = 3, // The client is not logged onto Steam + k_EGCResultInvalidMessage = 4, // Something was wrong with the message being sent with SendMessage + } + + public enum EHTMLMouseButton : int { + eHTMLMouseButton_Left = 0, + eHTMLMouseButton_Right = 1, + eHTMLMouseButton_Middle = 2, + } + + public enum EMouseCursor : int { + dc_user = 0, + dc_none, + dc_arrow, + dc_ibeam, + dc_hourglass, + dc_waitarrow, + dc_crosshair, + dc_up, + dc_sizenw, + dc_sizese, + dc_sizene, + dc_sizesw, + dc_sizew, + dc_sizee, + dc_sizen, + dc_sizes, + dc_sizewe, + dc_sizens, + dc_sizeall, + dc_no, + dc_hand, + dc_blank, // don't show any custom cursor, just use your default + dc_middle_pan, + dc_north_pan, + dc_north_east_pan, + dc_east_pan, + dc_south_east_pan, + dc_south_pan, + dc_south_west_pan, + dc_west_pan, + dc_north_west_pan, + dc_alias, + dc_cell, + dc_colresize, + dc_copycur, + dc_verticaltext, + dc_rowresize, + dc_zoomin, + dc_zoomout, + dc_help, + dc_custom, + + dc_last, // custom cursors start from this value and up + } + + [Flags] + public enum EHTMLKeyModifiers : int { + k_eHTMLKeyModifier_None = 0, + k_eHTMLKeyModifier_AltDown = 1 << 0, + k_eHTMLKeyModifier_CtrlDown = 1 << 1, + k_eHTMLKeyModifier_ShiftDown = 1 << 2, + } + + [Flags] + public enum ESteamItemFlags : int { + // Item status flags - these flags are permanently attached to specific item instances + k_ESteamItemNoTrade = 1 << 0, // This item is account-locked and cannot be traded or given away. + + // Action confirmation flags - these flags are set one time only, as part of a result set + k_ESteamItemRemoved = 1 << 8, // The item has been destroyed, traded away, expired, or otherwise invalidated + k_ESteamItemConsumed = 1 << 9, // The item quantity has been decreased by 1 via ConsumeItem API. + + // All other flag bits are currently reserved for internal Steam use at this time. + // Do not assume anything about the state of other flags which are not defined here. + } + + // lobby type description + public enum ELobbyType : int { + k_ELobbyTypePrivate = 0, // only way to join the lobby is to invite to someone else + k_ELobbyTypeFriendsOnly = 1, // shows for friends or invitees, but not in lobby list + k_ELobbyTypePublic = 2, // visible for friends and in lobby list + k_ELobbyTypeInvisible = 3, // returned by search, but not visible to other friends + // useful if you want a user in two lobbies, for example matching groups together + // a user can be in only one regular lobby, and up to two invisible lobbies + } + + // lobby search filter tools + public enum ELobbyComparison : int { + k_ELobbyComparisonEqualToOrLessThan = -2, + k_ELobbyComparisonLessThan = -1, + k_ELobbyComparisonEqual = 0, + k_ELobbyComparisonGreaterThan = 1, + k_ELobbyComparisonEqualToOrGreaterThan = 2, + k_ELobbyComparisonNotEqual = 3, + } + + // lobby search distance. Lobby results are sorted from closest to farthest. + public enum ELobbyDistanceFilter : int { + k_ELobbyDistanceFilterClose, // only lobbies in the same immediate region will be returned + k_ELobbyDistanceFilterDefault, // only lobbies in the same region or near by regions + k_ELobbyDistanceFilterFar, // for games that don't have many latency requirements, will return lobbies about half-way around the globe + k_ELobbyDistanceFilterWorldwide, // no filtering, will match lobbies as far as India to NY (not recommended, expect multiple seconds of latency between the clients) + } + + //----------------------------------------------------------------------------- + // Purpose: Used in ChatInfo messages - fields specific to a chat member - must fit in a uint32 + //----------------------------------------------------------------------------- + [Flags] + public enum EChatMemberStateChange : int { + // Specific to joining / leaving the chatroom + k_EChatMemberStateChangeEntered = 0x0001, // This user has joined or is joining the chat room + k_EChatMemberStateChangeLeft = 0x0002, // This user has left or is leaving the chat room + k_EChatMemberStateChangeDisconnected = 0x0004, // User disconnected without leaving the chat first + k_EChatMemberStateChangeKicked = 0x0008, // User kicked + k_EChatMemberStateChangeBanned = 0x0010, // User kicked and banned + } + + //----------------------------------------------------------------------------- + // Purpose: + //----------------------------------------------------------------------------- + public enum AudioPlayback_Status : int { + AudioPlayback_Undefined = 0, + AudioPlayback_Playing = 1, + AudioPlayback_Paused = 2, + AudioPlayback_Idle = 3 + } + + // list of possible errors returned by SendP2PPacket() API + // these will be posted in the P2PSessionConnectFail_t callback + public enum EP2PSessionError : int { + k_EP2PSessionErrorNone = 0, + k_EP2PSessionErrorNotRunningApp = 1, // target is not running the same game + k_EP2PSessionErrorNoRightsToApp = 2, // local user doesn't own the app that is running + k_EP2PSessionErrorDestinationNotLoggedIn = 3, // target user isn't connected to Steam + k_EP2PSessionErrorTimeout = 4, // target isn't responding, perhaps not calling AcceptP2PSessionWithUser() + // corporate firewalls can also block this (NAT traversal is not firewall traversal) + // make sure that UDP ports 3478, 4379, and 4380 are open in an outbound direction + k_EP2PSessionErrorMax = 5 + } + + // SendP2PPacket() send types + // Typically k_EP2PSendUnreliable is what you want for UDP-like packets, k_EP2PSendReliable for TCP-like packets + public enum EP2PSend : int { + // Basic UDP send. Packets can't be bigger than 1200 bytes (your typical MTU size). Can be lost, or arrive out of order (rare). + // The sending API does have some knowledge of the underlying connection, so if there is no NAT-traversal accomplished or + // there is a recognized adjustment happening on the connection, the packet will be batched until the connection is open again. + k_EP2PSendUnreliable = 0, + + // As above, but if the underlying p2p connection isn't yet established the packet will just be thrown away. Using this on the first + // packet sent to a remote host almost guarantees the packet will be dropped. + // This is only really useful for kinds of data that should never buffer up, i.e. voice payload packets + k_EP2PSendUnreliableNoDelay = 1, + + // Reliable message send. Can send up to 1MB of data in a single message. + // Does fragmentation/re-assembly of messages under the hood, as well as a sliding window for efficient sends of large chunks of data. + k_EP2PSendReliable = 2, + + // As above, but applies the Nagle algorithm to the send - sends will accumulate + // until the current MTU size (typically ~1200 bytes, but can change) or ~200ms has passed (Nagle algorithm). + // Useful if you want to send a set of smaller messages but have the coalesced into a single packet + // Since the reliable stream is all ordered, you can do several small message sends with k_EP2PSendReliableWithBuffering and then + // do a normal k_EP2PSendReliable to force all the buffered data to be sent. + k_EP2PSendReliableWithBuffering = 3, + + } + + // connection progress indicators, used by CreateP2PConnectionSocket() + public enum ESNetSocketState : int { + k_ESNetSocketStateInvalid = 0, + + // communication is valid + k_ESNetSocketStateConnected = 1, + + // states while establishing a connection + k_ESNetSocketStateInitiated = 10, // the connection state machine has started + + // p2p connections + k_ESNetSocketStateLocalCandidatesFound = 11, // we've found our local IP info + k_ESNetSocketStateReceivedRemoteCandidates = 12,// we've received information from the remote machine, via the Steam back-end, about their IP info + + // direct connections + k_ESNetSocketStateChallengeHandshake = 15, // we've received a challenge packet from the server + + // failure states + k_ESNetSocketStateDisconnecting = 21, // the API shut it down, and we're in the process of telling the other end + k_ESNetSocketStateLocalDisconnect = 22, // the API shut it down, and we've completed shutdown + k_ESNetSocketStateTimeoutDuringConnect = 23, // we timed out while trying to creating the connection + k_ESNetSocketStateRemoteEndDisconnected = 24, // the remote end has disconnected from us + k_ESNetSocketStateConnectionBroken = 25, // connection has been broken; either the other end has disappeared or our local network connection has broke + + } + + // describes how the socket is currently connected + public enum ESNetSocketConnectionType : int { + k_ESNetSocketConnectionTypeNotConnected = 0, + k_ESNetSocketConnectionTypeUDP = 1, + k_ESNetSocketConnectionTypeUDPRelay = 2, + } + + // Ways to handle a synchronization conflict + public enum EResolveConflict : int { + k_EResolveConflictKeepClient = 1, // The local version of each file will be used to overwrite the server version + k_EResolveConflictKeepServer = 2, // The server version of each file will be used to overwrite the local version + } + + [Flags] + public enum ERemoteStoragePlatform : int { + k_ERemoteStoragePlatformNone = 0, + k_ERemoteStoragePlatformWindows = (1 << 0), + k_ERemoteStoragePlatformOSX = (1 << 1), + k_ERemoteStoragePlatformPS3 = (1 << 2), + k_ERemoteStoragePlatformLinux = (1 << 3), + k_ERemoteStoragePlatformReserved2 = (1 << 4), + + k_ERemoteStoragePlatformAll = -1 + } + + public enum ERemoteStoragePublishedFileVisibility : int { + k_ERemoteStoragePublishedFileVisibilityPublic = 0, + k_ERemoteStoragePublishedFileVisibilityFriendsOnly = 1, + k_ERemoteStoragePublishedFileVisibilityPrivate = 2, + } + + public enum EWorkshopFileType : int { + k_EWorkshopFileTypeFirst = 0, + + k_EWorkshopFileTypeCommunity = 0, // normal Workshop item that can be subscribed to + k_EWorkshopFileTypeMicrotransaction = 1, // Workshop item that is meant to be voted on for the purpose of selling in-game + k_EWorkshopFileTypeCollection = 2, // a collection of Workshop or Greenlight items + k_EWorkshopFileTypeArt = 3, // artwork + k_EWorkshopFileTypeVideo = 4, // external video + k_EWorkshopFileTypeScreenshot = 5, // screenshot + k_EWorkshopFileTypeGame = 6, // Greenlight game entry + k_EWorkshopFileTypeSoftware = 7, // Greenlight software entry + k_EWorkshopFileTypeConcept = 8, // Greenlight concept + k_EWorkshopFileTypeWebGuide = 9, // Steam web guide + k_EWorkshopFileTypeIntegratedGuide = 10, // application integrated guide + k_EWorkshopFileTypeMerch = 11, // Workshop merchandise meant to be voted on for the purpose of being sold + k_EWorkshopFileTypeControllerBinding = 12, // Steam Controller bindings + k_EWorkshopFileTypeSteamworksAccessInvite = 13, // internal + k_EWorkshopFileTypeSteamVideo = 14, // Steam video + k_EWorkshopFileTypeGameManagedItem = 15, // managed completely by the game, not the user, and not shown on the web + + // Update k_EWorkshopFileTypeMax if you add values. + k_EWorkshopFileTypeMax = 16 + + } + + public enum EWorkshopVote : int { + k_EWorkshopVoteUnvoted = 0, + k_EWorkshopVoteFor = 1, + k_EWorkshopVoteAgainst = 2, + k_EWorkshopVoteLater = 3, + } + + public enum EWorkshopFileAction : int { + k_EWorkshopFileActionPlayed = 0, + k_EWorkshopFileActionCompleted = 1, + } + + public enum EWorkshopEnumerationType : int { + k_EWorkshopEnumerationTypeRankedByVote = 0, + k_EWorkshopEnumerationTypeRecent = 1, + k_EWorkshopEnumerationTypeTrending = 2, + k_EWorkshopEnumerationTypeFavoritesOfFriends = 3, + k_EWorkshopEnumerationTypeVotedByFriends = 4, + k_EWorkshopEnumerationTypeContentByFriends = 5, + k_EWorkshopEnumerationTypeRecentFromFollowedUsers = 6, + } + + public enum EWorkshopVideoProvider : int { + k_EWorkshopVideoProviderNone = 0, + k_EWorkshopVideoProviderYoutube = 1 + } + + public enum EUGCReadAction : int { + // Keeps the file handle open unless the last byte is read. You can use this when reading large files (over 100MB) in sequential chunks. + // If the last byte is read, this will behave the same as k_EUGCRead_Close. Otherwise, it behaves the same as k_EUGCRead_ContinueReading. + // This value maintains the same behavior as before the EUGCReadAction parameter was introduced. + k_EUGCRead_ContinueReadingUntilFinished = 0, + + // Keeps the file handle open. Use this when using UGCRead to seek to different parts of the file. + // When you are done seeking around the file, make a final call with k_EUGCRead_Close to close it. + k_EUGCRead_ContinueReading = 1, + + // Frees the file handle. Use this when you're done reading the content. + // To read the file from Steam again you will need to call UGCDownload again. + k_EUGCRead_Close = 2, + } + + // Matching UGC types for queries + public enum EUGCMatchingUGCType : int { + k_EUGCMatchingUGCType_Items = 0, // both mtx items and ready-to-use items + k_EUGCMatchingUGCType_Items_Mtx = 1, + k_EUGCMatchingUGCType_Items_ReadyToUse = 2, + k_EUGCMatchingUGCType_Collections = 3, + k_EUGCMatchingUGCType_Artwork = 4, + k_EUGCMatchingUGCType_Videos = 5, + k_EUGCMatchingUGCType_Screenshots = 6, + k_EUGCMatchingUGCType_AllGuides = 7, // both web guides and integrated guides + k_EUGCMatchingUGCType_WebGuides = 8, + k_EUGCMatchingUGCType_IntegratedGuides = 9, + k_EUGCMatchingUGCType_UsableInGame = 10, // ready-to-use items and integrated guides + k_EUGCMatchingUGCType_ControllerBindings = 11, + k_EUGCMatchingUGCType_GameManagedItems = 12, // game managed items (not managed by users) + } + + // Different lists of published UGC for a user. + // If the current logged in user is different than the specified user, then some options may not be allowed. + public enum EUserUGCList : int { + k_EUserUGCList_Published, + k_EUserUGCList_VotedOn, + k_EUserUGCList_VotedUp, + k_EUserUGCList_VotedDown, + k_EUserUGCList_WillVoteLater, + k_EUserUGCList_Favorited, + k_EUserUGCList_Subscribed, + k_EUserUGCList_UsedOrPlayed, + k_EUserUGCList_Followed, + } + + // Sort order for user published UGC lists (defaults to creation order descending) + public enum EUserUGCListSortOrder : int { + k_EUserUGCListSortOrder_CreationOrderDesc, + k_EUserUGCListSortOrder_CreationOrderAsc, + k_EUserUGCListSortOrder_TitleAsc, + k_EUserUGCListSortOrder_LastUpdatedDesc, + k_EUserUGCListSortOrder_SubscriptionDateDesc, + k_EUserUGCListSortOrder_VoteScoreDesc, + k_EUserUGCListSortOrder_ForModeration, + } + + // Combination of sorting and filtering for queries across all UGC + public enum EUGCQuery : int { + k_EUGCQuery_RankedByVote = 0, + k_EUGCQuery_RankedByPublicationDate = 1, + k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate = 2, + k_EUGCQuery_RankedByTrend = 3, + k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate = 4, + k_EUGCQuery_CreatedByFriendsRankedByPublicationDate = 5, + k_EUGCQuery_RankedByNumTimesReported = 6, + k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate = 7, + k_EUGCQuery_NotYetRated = 8, + k_EUGCQuery_RankedByTotalVotesAsc = 9, + k_EUGCQuery_RankedByVotesUp = 10, + k_EUGCQuery_RankedByTextSearch = 11, + k_EUGCQuery_RankedByTotalUniqueSubscriptions = 12, + } + + public enum EItemUpdateStatus : int { + k_EItemUpdateStatusInvalid = 0, // The item update handle was invalid, job might be finished, listen too SubmitItemUpdateResult_t + k_EItemUpdateStatusPreparingConfig = 1, // The item update is processing configuration data + k_EItemUpdateStatusPreparingContent = 2, // The item update is reading and processing content files + k_EItemUpdateStatusUploadingContent = 3, // The item update is uploading content changes to Steam + k_EItemUpdateStatusUploadingPreviewFile = 4, // The item update is uploading new preview file image + k_EItemUpdateStatusCommittingChanges = 5 // The item update is committing all changes + } + + [Flags] + public enum EItemState : int { + k_EItemStateNone = 0, // item not tracked on client + k_EItemStateSubscribed = 1, // current user is subscribed to this item. Not just cached. + k_EItemStateLegacyItem = 2, // item was created with ISteamRemoteStorage + k_EItemStateInstalled = 4, // item is installed and usable (but maybe out of date) + k_EItemStateNeedsUpdate = 8, // items needs an update. Either because it's not installed yet or creator updated content + k_EItemStateDownloading = 16, // item update is currently downloading + k_EItemStateDownloadPending = 32, // DownloadItem() was called for this item, content isn't available until DownloadItemResult_t is fired + } + + public enum EItemStatistic : int { + k_EItemStatistic_NumSubscriptions = 0, + k_EItemStatistic_NumFavorites = 1, + k_EItemStatistic_NumFollowers = 2, + k_EItemStatistic_NumUniqueSubscriptions = 3, + k_EItemStatistic_NumUniqueFavorites = 4, + k_EItemStatistic_NumUniqueFollowers = 5, + k_EItemStatistic_NumUniqueWebsiteViews = 6, + k_EItemStatistic_ReportScore = 7, + } + + public enum EFailureType : int { + k_EFailureFlushedCallbackQueue, + k_EFailurePipeFail, + } + + // type of data request, when downloading leaderboard entries + public enum ELeaderboardDataRequest : int { + k_ELeaderboardDataRequestGlobal = 0, + k_ELeaderboardDataRequestGlobalAroundUser = 1, + k_ELeaderboardDataRequestFriends = 2, + k_ELeaderboardDataRequestUsers = 3 + } + + // the sort order of a leaderboard + public enum ELeaderboardSortMethod : int { + k_ELeaderboardSortMethodNone = 0, + k_ELeaderboardSortMethodAscending = 1, // top-score is lowest number + k_ELeaderboardSortMethodDescending = 2, // top-score is highest number + } + + // the display type (used by the Steam Community web site) for a leaderboard + public enum ELeaderboardDisplayType : int { + k_ELeaderboardDisplayTypeNone = 0, + k_ELeaderboardDisplayTypeNumeric = 1, // simple numerical score + k_ELeaderboardDisplayTypeTimeSeconds = 2, // the score represents a time, in seconds + k_ELeaderboardDisplayTypeTimeMilliSeconds = 3, // the score represents a time, in milliseconds + } + + public enum ELeaderboardUploadScoreMethod : int { + k_ELeaderboardUploadScoreMethodNone = 0, + k_ELeaderboardUploadScoreMethodKeepBest = 1, // Leaderboard will keep user's best score + k_ELeaderboardUploadScoreMethodForceUpdate = 2, // Leaderboard will always replace score with specified + } + + // Steam API call failure results + public enum ESteamAPICallFailure : int { + k_ESteamAPICallFailureNone = -1, // no failure + k_ESteamAPICallFailureSteamGone = 0, // the local Steam process has gone away + k_ESteamAPICallFailureNetworkFailure = 1, // the network connection to Steam has been broken, or was already broken + // SteamServersDisconnected_t callback will be sent around the same time + // SteamServersConnected_t will be sent when the client is able to talk to the Steam servers again + k_ESteamAPICallFailureInvalidHandle = 2, // the SteamAPICall_t handle passed in no longer exists + k_ESteamAPICallFailureMismatchedCallback = 3,// GetAPICallResult() was called with the wrong callback type for this API call + } + + // Input modes for the Big Picture gamepad text entry + public enum EGamepadTextInputMode : int { + k_EGamepadTextInputModeNormal = 0, + k_EGamepadTextInputModePassword = 1 + } + + // Controls number of allowed lines for the Big Picture gamepad text entry + public enum EGamepadTextInputLineMode : int { + k_EGamepadTextInputLineModeSingleLine = 0, + k_EGamepadTextInputLineModeMultipleLines = 1 + } + + //----------------------------------------------------------------------------- + // results for CheckFileSignature + //----------------------------------------------------------------------------- + public enum ECheckFileSignature : int { + k_ECheckFileSignatureInvalidSignature = 0, + k_ECheckFileSignatureValidSignature = 1, + k_ECheckFileSignatureFileNotFound = 2, + k_ECheckFileSignatureNoSignaturesFoundForThisApp = 3, + k_ECheckFileSignatureNoSignaturesFoundForThisFile = 4, + } + + public enum EMatchMakingServerResponse : int { + eServerResponded = 0, + eServerFailedToRespond, + eNoServersListedOnMasterServer // for the Internet query type, returned in response callback if no servers of this type match + } + + public enum EServerMode : int { + eServerModeInvalid = 0, // DO NOT USE + eServerModeNoAuthentication = 1, // Don't authenticate user logins and don't list on the server list + eServerModeAuthentication = 2, // Authenticate users, list on the server list, don't run VAC on clients that connect + eServerModeAuthenticationAndSecure = 3, // Authenticate users, list on the server list and VAC protect clients + } + + // General result codes + public enum EResult : int { + k_EResultOK = 1, // success + k_EResultFail = 2, // generic failure + k_EResultNoConnection = 3, // no/failed network connection + // k_EResultNoConnectionRetry = 4, // OBSOLETE - removed + k_EResultInvalidPassword = 5, // password/ticket is invalid + k_EResultLoggedInElsewhere = 6, // same user logged in elsewhere + k_EResultInvalidProtocolVer = 7, // protocol version is incorrect + k_EResultInvalidParam = 8, // a parameter is incorrect + k_EResultFileNotFound = 9, // file was not found + k_EResultBusy = 10, // called method busy - action not taken + k_EResultInvalidState = 11, // called object was in an invalid state + k_EResultInvalidName = 12, // name is invalid + k_EResultInvalidEmail = 13, // email is invalid + k_EResultDuplicateName = 14, // name is not unique + k_EResultAccessDenied = 15, // access is denied + k_EResultTimeout = 16, // operation timed out + k_EResultBanned = 17, // VAC2 banned + k_EResultAccountNotFound = 18, // account not found + k_EResultInvalidSteamID = 19, // steamID is invalid + k_EResultServiceUnavailable = 20, // The requested service is currently unavailable + k_EResultNotLoggedOn = 21, // The user is not logged on + k_EResultPending = 22, // Request is pending (may be in process, or waiting on third party) + k_EResultEncryptionFailure = 23, // Encryption or Decryption failed + k_EResultInsufficientPrivilege = 24, // Insufficient privilege + k_EResultLimitExceeded = 25, // Too much of a good thing + k_EResultRevoked = 26, // Access has been revoked (used for revoked guest passes) + k_EResultExpired = 27, // License/Guest pass the user is trying to access is expired + k_EResultAlreadyRedeemed = 28, // Guest pass has already been redeemed by account, cannot be acked again + k_EResultDuplicateRequest = 29, // The request is a duplicate and the action has already occurred in the past, ignored this time + k_EResultAlreadyOwned = 30, // All the games in this guest pass redemption request are already owned by the user + k_EResultIPNotFound = 31, // IP address not found + k_EResultPersistFailed = 32, // failed to write change to the data store + k_EResultLockingFailed = 33, // failed to acquire access lock for this operation + k_EResultLogonSessionReplaced = 34, + k_EResultConnectFailed = 35, + k_EResultHandshakeFailed = 36, + k_EResultIOFailure = 37, + k_EResultRemoteDisconnect = 38, + k_EResultShoppingCartNotFound = 39, // failed to find the shopping cart requested + k_EResultBlocked = 40, // a user didn't allow it + k_EResultIgnored = 41, // target is ignoring sender + k_EResultNoMatch = 42, // nothing matching the request found + k_EResultAccountDisabled = 43, + k_EResultServiceReadOnly = 44, // this service is not accepting content changes right now + k_EResultAccountNotFeatured = 45, // account doesn't have value, so this feature isn't available + k_EResultAdministratorOK = 46, // allowed to take this action, but only because requester is admin + k_EResultContentVersion = 47, // A Version mismatch in content transmitted within the Steam protocol. + k_EResultTryAnotherCM = 48, // The current CM can't service the user making a request, user should try another. + k_EResultPasswordRequiredToKickSession = 49,// You are already logged in elsewhere, this cached credential login has failed. + k_EResultAlreadyLoggedInElsewhere = 50, // You are already logged in elsewhere, you must wait + k_EResultSuspended = 51, // Long running operation (content download) suspended/paused + k_EResultCancelled = 52, // Operation canceled (typically by user: content download) + k_EResultDataCorruption = 53, // Operation canceled because data is ill formed or unrecoverable + k_EResultDiskFull = 54, // Operation canceled - not enough disk space. + k_EResultRemoteCallFailed = 55, // an remote call or IPC call failed + k_EResultPasswordUnset = 56, // Password could not be verified as it's unset server side + k_EResultExternalAccountUnlinked = 57, // External account (PSN, Facebook...) is not linked to a Steam account + k_EResultPSNTicketInvalid = 58, // PSN ticket was invalid + k_EResultExternalAccountAlreadyLinked = 59, // External account (PSN, Facebook...) is already linked to some other account, must explicitly request to replace/delete the link first + k_EResultRemoteFileConflict = 60, // The sync cannot resume due to a conflict between the local and remote files + k_EResultIllegalPassword = 61, // The requested new password is not legal + k_EResultSameAsPreviousValue = 62, // new value is the same as the old one ( secret question and answer ) + k_EResultAccountLogonDenied = 63, // account login denied due to 2nd factor authentication failure + k_EResultCannotUseOldPassword = 64, // The requested new password is not legal + k_EResultInvalidLoginAuthCode = 65, // account login denied due to auth code invalid + k_EResultAccountLogonDeniedNoMail = 66, // account login denied due to 2nd factor auth failure - and no mail has been sent + k_EResultHardwareNotCapableOfIPT = 67, // + k_EResultIPTInitError = 68, // + k_EResultParentalControlRestricted = 69, // operation failed due to parental control restrictions for current user + k_EResultFacebookQueryError = 70, // Facebook query returned an error + k_EResultExpiredLoginAuthCode = 71, // account login denied due to auth code expired + k_EResultIPLoginRestrictionFailed = 72, + k_EResultAccountLockedDown = 73, + k_EResultAccountLogonDeniedVerifiedEmailRequired = 74, + k_EResultNoMatchingURL = 75, + k_EResultBadResponse = 76, // parse failure, missing field, etc. + k_EResultRequirePasswordReEntry = 77, // The user cannot complete the action until they re-enter their password + k_EResultValueOutOfRange = 78, // the value entered is outside the acceptable range + k_EResultUnexpectedError = 79, // something happened that we didn't expect to ever happen + k_EResultDisabled = 80, // The requested service has been configured to be unavailable + k_EResultInvalidCEGSubmission = 81, // The set of files submitted to the CEG server are not valid ! + k_EResultRestrictedDevice = 82, // The device being used is not allowed to perform this action + k_EResultRegionLocked = 83, // The action could not be complete because it is region restricted + k_EResultRateLimitExceeded = 84, // Temporary rate limit exceeded, try again later, different from k_EResultLimitExceeded which may be permanent + k_EResultAccountLoginDeniedNeedTwoFactor = 85, // Need two-factor code to login + k_EResultItemDeleted = 86, // The thing we're trying to access has been deleted + k_EResultAccountLoginDeniedThrottle = 87, // login attempt failed, try to throttle response to possible attacker + k_EResultTwoFactorCodeMismatch = 88, // two factor code mismatch + k_EResultTwoFactorActivationCodeMismatch = 89, // activation code for two-factor didn't match + k_EResultAccountAssociatedToMultiplePartners = 90, // account has been associated with multiple partners + k_EResultNotModified = 91, // data not modified + k_EResultNoMobileDevice = 92, // the account does not have a mobile device associated with it + k_EResultTimeNotSynced = 93, // the time presented is out of range or tolerance + k_EResultSmsCodeFailed = 94, // SMS code failure (no match, none pending, etc.) + k_EResultAccountLimitExceeded = 95, // Too many accounts access this resource + k_EResultAccountActivityLimitExceeded = 96, // Too many changes to this account + k_EResultPhoneActivityLimitExceeded = 97, // Too many changes to this phone + k_EResultRefundToWallet = 98, // Cannot refund to payment method, must use wallet + k_EResultEmailSendFailure = 99, // Cannot send an email + k_EResultNotSettled = 100, // Can't perform operation till payment has settled + } + + // Error codes for use with the voice functions + public enum EVoiceResult : int { + k_EVoiceResultOK = 0, + k_EVoiceResultNotInitialized = 1, + k_EVoiceResultNotRecording = 2, + k_EVoiceResultNoData = 3, + k_EVoiceResultBufferTooSmall = 4, + k_EVoiceResultDataCorrupted = 5, + k_EVoiceResultRestricted = 6, + k_EVoiceResultUnsupportedCodec = 7, + k_EVoiceResultReceiverOutOfDate = 8, + k_EVoiceResultReceiverDidNotAnswer = 9, + + } + + // Result codes to GSHandleClientDeny/Kick + public enum EDenyReason : int { + k_EDenyInvalid = 0, + k_EDenyInvalidVersion = 1, + k_EDenyGeneric = 2, + k_EDenyNotLoggedOn = 3, + k_EDenyNoLicense = 4, + k_EDenyCheater = 5, + k_EDenyLoggedInElseWhere = 6, + k_EDenyUnknownText = 7, + k_EDenyIncompatibleAnticheat = 8, + k_EDenyMemoryCorruption = 9, + k_EDenyIncompatibleSoftware = 10, + k_EDenySteamConnectionLost = 11, + k_EDenySteamConnectionError = 12, + k_EDenySteamResponseTimedOut = 13, + k_EDenySteamValidationStalled = 14, + k_EDenySteamOwnerLeftGuestUser = 15, + } + + // results from BeginAuthSession + public enum EBeginAuthSessionResult : int { + k_EBeginAuthSessionResultOK = 0, // Ticket is valid for this game and this steamID. + k_EBeginAuthSessionResultInvalidTicket = 1, // Ticket is not valid. + k_EBeginAuthSessionResultDuplicateRequest = 2, // A ticket has already been submitted for this steamID + k_EBeginAuthSessionResultInvalidVersion = 3, // Ticket is from an incompatible interface version + k_EBeginAuthSessionResultGameMismatch = 4, // Ticket is not for this game + k_EBeginAuthSessionResultExpiredTicket = 5, // Ticket has expired + } + + // Callback values for callback ValidateAuthTicketResponse_t which is a response to BeginAuthSession + public enum EAuthSessionResponse : int { + k_EAuthSessionResponseOK = 0, // Steam has verified the user is online, the ticket is valid and ticket has not been reused. + k_EAuthSessionResponseUserNotConnectedToSteam = 1, // The user in question is not connected to steam + k_EAuthSessionResponseNoLicenseOrExpired = 2, // The license has expired. + k_EAuthSessionResponseVACBanned = 3, // The user is VAC banned for this game. + k_EAuthSessionResponseLoggedInElseWhere = 4, // The user account has logged in elsewhere and the session containing the game instance has been disconnected. + k_EAuthSessionResponseVACCheckTimedOut = 5, // VAC has been unable to perform anti-cheat checks on this user + k_EAuthSessionResponseAuthTicketCanceled = 6, // The ticket has been canceled by the issuer + k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed = 7, // This ticket has already been used, it is not valid. + k_EAuthSessionResponseAuthTicketInvalid = 8, // This ticket is not from a user instance currently connected to steam. + k_EAuthSessionResponsePublisherIssuedBan = 9, // The user is banned for this game. The ban came via the web api and not VAC + } + + // results from UserHasLicenseForApp + public enum EUserHasLicenseForAppResult : int { + k_EUserHasLicenseResultHasLicense = 0, // User has a license for specified app + k_EUserHasLicenseResultDoesNotHaveLicense = 1, // User does not have a license for the specified app + k_EUserHasLicenseResultNoAuth = 2, // User has not been authenticated + } + + // Steam account types + public enum EAccountType : int { + k_EAccountTypeInvalid = 0, + k_EAccountTypeIndividual = 1, // single user account + k_EAccountTypeMultiseat = 2, // multiseat (e.g. cybercafe) account + k_EAccountTypeGameServer = 3, // game server account + k_EAccountTypeAnonGameServer = 4, // anonymous game server account + k_EAccountTypePending = 5, // pending + k_EAccountTypeContentServer = 6, // content server + k_EAccountTypeClan = 7, + k_EAccountTypeChat = 8, + k_EAccountTypeConsoleUser = 9, // Fake SteamID for local PSN account on PS3 or Live account on 360, etc. + k_EAccountTypeAnonUser = 10, + + // Max of 16 items in this field + k_EAccountTypeMax + } + + //----------------------------------------------------------------------------- + // Purpose: + //----------------------------------------------------------------------------- + public enum EAppReleaseState : int { + k_EAppReleaseState_Unknown = 0, // unknown, required appinfo or license info is missing + k_EAppReleaseState_Unavailable = 1, // even if user 'just' owns it, can see game at all + k_EAppReleaseState_Prerelease = 2, // can be purchased and is visible in games list, nothing else. Common appInfo section released + k_EAppReleaseState_PreloadOnly = 3, // owners can preload app, not play it. AppInfo fully released. + k_EAppReleaseState_Released = 4, // owners can download and play app. + } + + //----------------------------------------------------------------------------- + // Purpose: + //----------------------------------------------------------------------------- + [Flags] + public enum EAppOwnershipFlags : int { + k_EAppOwnershipFlags_None = 0x0000, // unknown + k_EAppOwnershipFlags_OwnsLicense = 0x0001, // owns license for this game + k_EAppOwnershipFlags_FreeLicense = 0x0002, // not paid for game + k_EAppOwnershipFlags_RegionRestricted = 0x0004, // owns app, but not allowed to play in current region + k_EAppOwnershipFlags_LowViolence = 0x0008, // only low violence version + k_EAppOwnershipFlags_InvalidPlatform = 0x0010, // app not supported on current platform + k_EAppOwnershipFlags_SharedLicense = 0x0020, // license was granted by authorized local device + k_EAppOwnershipFlags_FreeWeekend = 0x0040, // owned by a free weekend licenses + k_EAppOwnershipFlags_RetailLicense = 0x0080, // has a retail license for game, (CD-Key etc) + k_EAppOwnershipFlags_LicenseLocked = 0x0100, // shared license is locked (in use) by other user + k_EAppOwnershipFlags_LicensePending = 0x0200, // owns app, but transaction is still pending. Can't install or play + k_EAppOwnershipFlags_LicenseExpired = 0x0400, // doesn't own app anymore since license expired + k_EAppOwnershipFlags_LicensePermanent = 0x0800, // permanent license, not borrowed, or guest or freeweekend etc + k_EAppOwnershipFlags_LicenseRecurring = 0x1000, // Recurring license, user is charged periodically + k_EAppOwnershipFlags_LicenseCanceled = 0x2000, // Mark as canceled, but might be still active if recurring + k_EAppOwnershipFlags_AutoGrant = 0x4000, // Ownership is based on any kind of autogrant license + } + + //----------------------------------------------------------------------------- + // Purpose: designed as flags to allow filters masks + //----------------------------------------------------------------------------- + [Flags] + public enum EAppType : int { + k_EAppType_Invalid = 0x000, // unknown / invalid + k_EAppType_Game = 0x001, // playable game, default type + k_EAppType_Application = 0x002, // software application + k_EAppType_Tool = 0x004, // SDKs, editors & dedicated servers + k_EAppType_Demo = 0x008, // game demo + k_EAppType_Media_DEPRECATED = 0x010, // legacy - was used for game trailers, which are now just videos on the web + k_EAppType_DLC = 0x020, // down loadable content + k_EAppType_Guide = 0x040, // game guide, PDF etc + k_EAppType_Driver = 0x080, // hardware driver updater (ATI, Razor etc) + k_EAppType_Config = 0x100, // hidden app used to config Steam features (backpack, sales, etc) + k_EAppType_Hardware = 0x200, // a hardware device (Steam Machine, Steam Controller, Steam Link, etc.) + // 0x400 is up for grabs here + k_EAppType_Video = 0x800, // A video component of either a Film or TVSeries (may be the feature, an episode, preview, making-of, etc) + k_EAppType_Plugin = 0x1000, // Plug-in types for other Apps + k_EAppType_Music = 0x2000, // Music files + + k_EAppType_Shortcut = 0x40000000, // just a shortcut, client side only + k_EAppType_DepotOnly = -2147483647, // placeholder since depots and apps share the same namespace + } + + //----------------------------------------------------------------------------- + // types of user game stats fields + // WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN DATABASE + //----------------------------------------------------------------------------- + public enum ESteamUserStatType : int { + k_ESteamUserStatTypeINVALID = 0, + k_ESteamUserStatTypeINT = 1, + k_ESteamUserStatTypeFLOAT = 2, + // Read as FLOAT, set with count / session length + k_ESteamUserStatTypeAVGRATE = 3, + k_ESteamUserStatTypeACHIEVEMENTS = 4, + k_ESteamUserStatTypeGROUPACHIEVEMENTS = 5, + + // max, for sanity checks + k_ESteamUserStatTypeMAX + } + + //----------------------------------------------------------------------------- + // Purpose: Chat Entry Types (previously was only friend-to-friend message types) + //----------------------------------------------------------------------------- + public enum EChatEntryType : int { + k_EChatEntryTypeInvalid = 0, + k_EChatEntryTypeChatMsg = 1, // Normal text message from another user + k_EChatEntryTypeTyping = 2, // Another user is typing (not used in multi-user chat) + k_EChatEntryTypeInviteGame = 3, // Invite from other user into that users current game + k_EChatEntryTypeEmote = 4, // text emote message (deprecated, should be treated as ChatMsg) + //k_EChatEntryTypeLobbyGameStart = 5, // lobby game is starting (dead - listen for LobbyGameCreated_t callback instead) + k_EChatEntryTypeLeftConversation = 6, // user has left the conversation ( closed chat window ) + // Above are previous FriendMsgType entries, now merged into more generic chat entry types + k_EChatEntryTypeEntered = 7, // user has entered the conversation (used in multi-user chat and group chat) + k_EChatEntryTypeWasKicked = 8, // user was kicked (data: 64-bit steamid of actor performing the kick) + k_EChatEntryTypeWasBanned = 9, // user was banned (data: 64-bit steamid of actor performing the ban) + k_EChatEntryTypeDisconnected = 10, // user disconnected + k_EChatEntryTypeHistoricalChat = 11, // a chat message from user's chat history or offilne message + k_EChatEntryTypeReserved1 = 12, + k_EChatEntryTypeReserved2 = 13, + k_EChatEntryTypeLinkBlocked = 14, // a link was removed by the chat filter. + } + + //----------------------------------------------------------------------------- + // Purpose: Chat Room Enter Responses + //----------------------------------------------------------------------------- + public enum EChatRoomEnterResponse : int { + k_EChatRoomEnterResponseSuccess = 1, // Success + k_EChatRoomEnterResponseDoesntExist = 2, // Chat doesn't exist (probably closed) + k_EChatRoomEnterResponseNotAllowed = 3, // General Denied - You don't have the permissions needed to join the chat + k_EChatRoomEnterResponseFull = 4, // Chat room has reached its maximum size + k_EChatRoomEnterResponseError = 5, // Unexpected Error + k_EChatRoomEnterResponseBanned = 6, // You are banned from this chat room and may not join + k_EChatRoomEnterResponseLimited = 7, // Joining this chat is not allowed because you are a limited user (no value on account) + k_EChatRoomEnterResponseClanDisabled = 8, // Attempt to join a clan chat when the clan is locked or disabled + k_EChatRoomEnterResponseCommunityBan = 9, // Attempt to join a chat when the user has a community lock on their account + k_EChatRoomEnterResponseMemberBlockedYou = 10, // Join failed - some member in the chat has blocked you from joining + k_EChatRoomEnterResponseYouBlockedMember = 11, // Join failed - you have blocked some member already in the chat + // k_EChatRoomEnterResponseNoRankingDataLobby = 12, // No longer used + // k_EChatRoomEnterResponseNoRankingDataUser = 13, // No longer used + // k_EChatRoomEnterResponseRankOutOfRange = 14, // No longer used + } + + // Special flags for Chat accounts - they go in the top 8 bits + // of the steam ID's "instance", leaving 12 for the actual instances + [Flags] + public enum EChatSteamIDInstanceFlags : int { + k_EChatAccountInstanceMask = 0x00000FFF, // top 8 bits are flags + + k_EChatInstanceFlagClan = ( Constants.k_unSteamAccountInstanceMask + 1 ) >> 1, // top bit + k_EChatInstanceFlagLobby = ( Constants.k_unSteamAccountInstanceMask + 1 ) >> 2, // next one down, etc + k_EChatInstanceFlagMMSLobby = ( Constants.k_unSteamAccountInstanceMask + 1 ) >> 3, // next one down, etc + + // Max of 8 flags + } + + //----------------------------------------------------------------------------- + // Purpose: Marketing message flags that change how a client should handle them + //----------------------------------------------------------------------------- + [Flags] + public enum EMarketingMessageFlags : int { + k_EMarketingMessageFlagsNone = 0, + k_EMarketingMessageFlagsHighPriority = 1 << 0, + k_EMarketingMessageFlagsPlatformWindows = 1 << 1, + k_EMarketingMessageFlagsPlatformMac = 1 << 2, + k_EMarketingMessageFlagsPlatformLinux = 1 << 3, + + //aggregate flags + k_EMarketingMessageFlagsPlatformRestrictions = + k_EMarketingMessageFlagsPlatformWindows | + k_EMarketingMessageFlagsPlatformMac | + k_EMarketingMessageFlagsPlatformLinux, + } + + //----------------------------------------------------------------------------- + // Purpose: Possible positions to tell the overlay to show notifications in + //----------------------------------------------------------------------------- + public enum ENotificationPosition : int { + k_EPositionTopLeft = 0, + k_EPositionTopRight = 1, + k_EPositionBottomLeft = 2, + k_EPositionBottomRight = 3, + } + + //----------------------------------------------------------------------------- + // Purpose: Broadcast upload result details + //----------------------------------------------------------------------------- + public enum EBroadcastUploadResult : int { + k_EBroadcastUploadResultNone = 0, // broadcast state unknown + k_EBroadcastUploadResultOK = 1, // broadcast was good, no problems + k_EBroadcastUploadResultInitFailed = 2, // broadcast init failed + k_EBroadcastUploadResultFrameFailed = 3, // broadcast frame upload failed + k_EBroadcastUploadResultTimeout = 4, // broadcast upload timed out + k_EBroadcastUploadResultBandwidthExceeded = 5, // broadcast send too much data + k_EBroadcastUploadResultLowFPS = 6, // broadcast FPS too low + k_EBroadcastUploadResultMissingKeyFrames = 7, // broadcast sending not enough key frames + k_EBroadcastUploadResultNoConnection = 8, // broadcast client failed to connect to relay + k_EBroadcastUploadResultRelayFailed = 9, // relay dropped the upload + k_EBroadcastUploadResultSettingsChanged = 10, // the client changed broadcast settings + k_EBroadcastUploadResultMissingAudio = 11, // client failed to send audio data + k_EBroadcastUploadResultTooFarBehind = 12, // clients was too slow uploading + } + + // HTTP related types + // This enum is used in client API methods, do not re-number existing values. + public enum EHTTPMethod : int { + k_EHTTPMethodInvalid = 0, + k_EHTTPMethodGET, + k_EHTTPMethodHEAD, + k_EHTTPMethodPOST, + k_EHTTPMethodPUT, + k_EHTTPMethodDELETE, + k_EHTTPMethodOPTIONS, + + // The remaining HTTP methods are not yet supported, per rfc2616 section 5.1.1 only GET and HEAD are required for + // a compliant general purpose server. We'll likely add more as we find uses for them. + + // k_EHTTPMethodTRACE, + // k_EHTTPMethodCONNECT + } + + // HTTP Status codes that the server can send in response to a request, see rfc2616 section 10.3 for descriptions + // of each of these. + public enum EHTTPStatusCode : int { + // Invalid status code (this isn't defined in HTTP, used to indicate unset in our code) + k_EHTTPStatusCodeInvalid = 0, + + // Informational codes + k_EHTTPStatusCode100Continue = 100, + k_EHTTPStatusCode101SwitchingProtocols = 101, + + // Success codes + k_EHTTPStatusCode200OK = 200, + k_EHTTPStatusCode201Created = 201, + k_EHTTPStatusCode202Accepted = 202, + k_EHTTPStatusCode203NonAuthoritative = 203, + k_EHTTPStatusCode204NoContent = 204, + k_EHTTPStatusCode205ResetContent = 205, + k_EHTTPStatusCode206PartialContent = 206, + + // Redirection codes + k_EHTTPStatusCode300MultipleChoices = 300, + k_EHTTPStatusCode301MovedPermanently = 301, + k_EHTTPStatusCode302Found = 302, + k_EHTTPStatusCode303SeeOther = 303, + k_EHTTPStatusCode304NotModified = 304, + k_EHTTPStatusCode305UseProxy = 305, + //k_EHTTPStatusCode306Unused = 306, (used in old HTTP spec, now unused in 1.1) + k_EHTTPStatusCode307TemporaryRedirect = 307, + + // Error codes + k_EHTTPStatusCode400BadRequest = 400, + k_EHTTPStatusCode401Unauthorized = 401, // You probably want 403 or something else. 401 implies you're sending a WWW-Authenticate header and the client can sent an Authorization header in response. + k_EHTTPStatusCode402PaymentRequired = 402, // This is reserved for future HTTP specs, not really supported by clients + k_EHTTPStatusCode403Forbidden = 403, + k_EHTTPStatusCode404NotFound = 404, + k_EHTTPStatusCode405MethodNotAllowed = 405, + k_EHTTPStatusCode406NotAcceptable = 406, + k_EHTTPStatusCode407ProxyAuthRequired = 407, + k_EHTTPStatusCode408RequestTimeout = 408, + k_EHTTPStatusCode409Conflict = 409, + k_EHTTPStatusCode410Gone = 410, + k_EHTTPStatusCode411LengthRequired = 411, + k_EHTTPStatusCode412PreconditionFailed = 412, + k_EHTTPStatusCode413RequestEntityTooLarge = 413, + k_EHTTPStatusCode414RequestURITooLong = 414, + k_EHTTPStatusCode415UnsupportedMediaType = 415, + k_EHTTPStatusCode416RequestedRangeNotSatisfiable = 416, + k_EHTTPStatusCode417ExpectationFailed = 417, + k_EHTTPStatusCode4xxUnknown = 418, // 418 is reserved, so we'll use it to mean unknown + k_EHTTPStatusCode429TooManyRequests = 429, + + // Server error codes + k_EHTTPStatusCode500InternalServerError = 500, + k_EHTTPStatusCode501NotImplemented = 501, + k_EHTTPStatusCode502BadGateway = 502, + k_EHTTPStatusCode503ServiceUnavailable = 503, + k_EHTTPStatusCode504GatewayTimeout = 504, + k_EHTTPStatusCode505HTTPVersionNotSupported = 505, + k_EHTTPStatusCode5xxUnknown = 599, + } + + // Steam universes. Each universe is a self-contained Steam instance. + public enum EUniverse : int { + k_EUniverseInvalid = 0, + k_EUniversePublic = 1, + k_EUniverseBeta = 2, + k_EUniverseInternal = 3, + k_EUniverseDev = 4, + // k_EUniverseRC = 5, // no such universe anymore + k_EUniverseMax + } + +} diff --git a/Assets/Editor/Steamworks.NET/autogen/SteamEnums.cs.meta b/Assets/Editor/Steamworks.NET/autogen/SteamEnums.cs.meta new file mode 100644 index 0000000..35a9ef6 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/SteamEnums.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: d358cb24c7839d24eb92f19e5ebe83da +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/SteamStructs.cs b/Assets/Editor/Steamworks.NET/autogen/SteamStructs.cs new file mode 100644 index 0000000..4babad8 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/SteamStructs.cs @@ -0,0 +1,159 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct SteamControllerState_t { + // If packet num matches that on your prior call, then the controller state hasn't been changed since + // your last call and there is no need to process it + public uint unPacketNum; + + // bit flags for each of the buttons + public ulong ulButtons; + + // Left pad coordinates + public short sLeftPadX; + public short sLeftPadY; + + // Right pad coordinates + public short sRightPadX; + public short sRightPadY; + + } + + // friend game played information + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + public struct FriendGameInfo_t { + public CGameID m_gameID; + public uint m_unGameIP; + public ushort m_usGamePort; + public ushort m_usQueryPort; + public CSteamID m_steamIDLobby; + } + + //----------------------------------------------------------------------------- + // Purpose: information about user sessions + //----------------------------------------------------------------------------- + public struct FriendSessionStateInfo_t { + public uint m_uiOnlineSessionInstances; + public byte m_uiPublishedToFriendsSessionInstance; + } + + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + public struct SteamItemDetails_t { + public SteamItemInstanceID_t m_itemId; + public SteamItemDef_t m_iDefinition; + public ushort m_unQuantity; + public ushort m_unFlags; // see ESteamItemFlags + } + + // connection state to a specified user, returned by GetP2PSessionState() + // this is under-the-hood info about what's going on with a SendP2PPacket(), shouldn't be needed except for debuggin + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + public struct P2PSessionState_t { + public byte m_bConnectionActive; // true if we've got an active open connection + public byte m_bConnecting; // true if we're currently trying to establish a connection + public byte m_eP2PSessionError; // last error recorded (see enum above) + public byte m_bUsingRelay; // true if it's going through a relay server (TURN) + public int m_nBytesQueuedForSend; + public int m_nPacketsQueuedForSend; + public uint m_nRemoteIP; // potential IP:Port of remote host. Could be TURN server. + public ushort m_nRemotePort; // Only exists for compatibility with older authentication api's + } + + //----------------------------------------------------------------------------- + // Purpose: Structure that contains an array of const char * strings and the number of those strings + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + public struct SteamParamStringArray_t { + public IntPtr m_ppStrings; + public int m_nNumStrings; + } + + // Details for a single published file/UGC + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + public struct SteamUGCDetails_t { + public PublishedFileId_t m_nPublishedFileId; + public EResult m_eResult; // The result of the operation. + public EWorkshopFileType m_eFileType; // Type of the file + public AppId_t m_nCreatorAppID; // ID of the app that created this file. + public AppId_t m_nConsumerAppID; // ID of the app that will consume this file. + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = Constants.k_cchPublishedDocumentTitleMax)] + public string m_rgchTitle; // title of document + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = Constants.k_cchPublishedDocumentDescriptionMax)] + public string m_rgchDescription; // description of document + public ulong m_ulSteamIDOwner; // Steam ID of the user who created this content. + public uint m_rtimeCreated; // time when the published file was created + public uint m_rtimeUpdated; // time when the published file was last updated + public uint m_rtimeAddedToUserList; // time when the user added the published file to their list (not always applicable) + public ERemoteStoragePublishedFileVisibility m_eVisibility; // visibility + [MarshalAs(UnmanagedType.I1)] + public bool m_bBanned; // whether the file was banned + [MarshalAs(UnmanagedType.I1)] + public bool m_bAcceptedForUse; // developer has specifically flagged this item as accepted in the Workshop + [MarshalAs(UnmanagedType.I1)] + public bool m_bTagsTruncated; // whether the list of tags was too long to be returned in the provided buffer + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = Constants.k_cchTagListMax)] + public string m_rgchTags; // comma separated list of all tags associated with this file + // file/url information + public UGCHandle_t m_hFile; // The handle of the primary file + public UGCHandle_t m_hPreviewFile; // The handle of the preview file + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = Constants.k_cchFilenameMax)] + public string m_pchFileName; // The cloud filename of the primary file + public int m_nFileSize; // Size of the primary file + public int m_nPreviewFileSize; // Size of the preview file + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = Constants.k_cchPublishedFileURLMax)] + public string m_rgchURL; // URL (for a video or a website) + // voting information + public uint m_unVotesUp; // number of votes up + public uint m_unVotesDown; // number of votes down + public float m_flScore; // calculated score + // collection details + public uint m_unNumChildren; + } + + // structure that contains client callback data + // see callbacks documentation for more details + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + public struct CallbackMsg_t { + public int m_hSteamUser; + public int m_iCallback; + public IntPtr m_pubParam; + public int m_cubParam; + } + + // a single entry in a leaderboard, as returned by GetDownloadedLeaderboardEntry() + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + public struct LeaderboardEntry_t { + public CSteamID m_steamIDUser; // user with the entry - use SteamFriends()->GetFriendPersonaName() & SteamFriends()->GetFriendAvatar() to get more info + public int m_nGlobalRank; // [1..N], where N is the number of users with an entry in the leaderboard + public int m_nScore; // score as set in the leaderboard + public int m_cDetails; // number of int32 details available for this entry + public UGCHandle_t m_hUGC; // handle for UGC attached to the entry + } + + /// Store key/value pair used in matchmaking queries. + /// + /// Actually, the name Key/Value is a bit misleading. The "key" is better + /// understood as "filter operation code" and the "value" is the operand to this + /// filter operation. The meaning of the operand depends upon the filter. + [StructLayout(LayoutKind.Sequential)] + public struct MatchMakingKeyValuePair_t { + MatchMakingKeyValuePair_t(string strKey, string strValue) { + m_szKey = strKey; + m_szValue = strValue; + } + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_szKey; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string m_szValue; + } + +} diff --git a/Assets/Editor/Steamworks.NET/autogen/SteamStructs.cs.meta b/Assets/Editor/Steamworks.NET/autogen/SteamStructs.cs.meta new file mode 100644 index 0000000..f3efe66 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/SteamStructs.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 444219f60dc8b8e49ad10abe3c7f0f4e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamapplist.cs b/Assets/Editor/Steamworks.NET/autogen/isteamapplist.cs new file mode 100644 index 0000000..a9a8abe --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamapplist.cs @@ -0,0 +1,55 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamAppList { + public static uint GetNumInstalledApps() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamAppList_GetNumInstalledApps(); + } + + public static uint GetInstalledApps(AppId_t[] pvecAppID, uint unMaxAppIDs) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamAppList_GetInstalledApps(pvecAppID, unMaxAppIDs); + } + + /// + /// returns -1 if no name was found + /// + public static int GetAppName(AppId_t nAppID, out string pchName, int cchNameMax) { + InteropHelp.TestIfAvailableClient(); + IntPtr pchName2 = Marshal.AllocHGlobal(cchNameMax); + int ret = NativeMethods.ISteamAppList_GetAppName(nAppID, pchName2, cchNameMax); + pchName = ret != -1 ? InteropHelp.PtrToStringUTF8(pchName2) : null; + Marshal.FreeHGlobal(pchName2); + return ret; + } + + /// + /// returns -1 if no dir was found + /// + public static int GetAppInstallDir(AppId_t nAppID, out string pchDirectory, int cchNameMax) { + InteropHelp.TestIfAvailableClient(); + IntPtr pchDirectory2 = Marshal.AllocHGlobal(cchNameMax); + int ret = NativeMethods.ISteamAppList_GetAppInstallDir(nAppID, pchDirectory2, cchNameMax); + pchDirectory = ret != -1 ? InteropHelp.PtrToStringUTF8(pchDirectory2) : null; + Marshal.FreeHGlobal(pchDirectory2); + return ret; + } + + /// + /// return the buildid of this app, may change at any time based on backend updates to the game + /// + public static int GetAppBuildId(AppId_t nAppID) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamAppList_GetAppBuildId(nAppID); + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamapplist.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamapplist.cs.meta new file mode 100644 index 0000000..48d8fe5 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamapplist.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 58db1b59dabddf8428aecd47afa4b0e7 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamapps.cs b/Assets/Editor/Steamworks.NET/autogen/isteamapps.cs new file mode 100644 index 0000000..f3a1371 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamapps.cs @@ -0,0 +1,218 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamApps { + public static bool BIsSubscribed() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamApps_BIsSubscribed(); + } + + public static bool BIsLowViolence() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamApps_BIsLowViolence(); + } + + public static bool BIsCybercafe() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamApps_BIsCybercafe(); + } + + public static bool BIsVACBanned() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamApps_BIsVACBanned(); + } + + public static string GetCurrentGameLanguage() { + InteropHelp.TestIfAvailableClient(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamApps_GetCurrentGameLanguage()); + } + + public static string GetAvailableGameLanguages() { + InteropHelp.TestIfAvailableClient(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamApps_GetAvailableGameLanguages()); + } + + /// + /// only use this member if you need to check ownership of another game related to yours, a demo for example + /// + public static bool BIsSubscribedApp(AppId_t appID) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamApps_BIsSubscribedApp(appID); + } + + /// + /// Takes AppID of DLC and checks if the user owns the DLC & if the DLC is installed + /// + public static bool BIsDlcInstalled(AppId_t appID) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamApps_BIsDlcInstalled(appID); + } + + /// + /// returns the Unix time of the purchase of the app + /// + public static uint GetEarliestPurchaseUnixTime(AppId_t nAppID) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamApps_GetEarliestPurchaseUnixTime(nAppID); + } + + /// + /// Checks if the user is subscribed to the current app through a free weekend + /// This function will return false for users who have a retail or other type of license + /// Before using, please ask your Valve technical contact how to package and secure your free weekened + /// + public static bool BIsSubscribedFromFreeWeekend() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamApps_BIsSubscribedFromFreeWeekend(); + } + + /// + /// Returns the number of DLC pieces for the running app + /// + public static int GetDLCCount() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamApps_GetDLCCount(); + } + + /// + /// Returns metadata for DLC by index, of range [0, GetDLCCount()] + /// + public static bool BGetDLCDataByIndex(int iDLC, out AppId_t pAppID, out bool pbAvailable, out string pchName, int cchNameBufferSize) { + InteropHelp.TestIfAvailableClient(); + IntPtr pchName2 = Marshal.AllocHGlobal(cchNameBufferSize); + bool ret = NativeMethods.ISteamApps_BGetDLCDataByIndex(iDLC, out pAppID, out pbAvailable, pchName2, cchNameBufferSize); + pchName = ret ? InteropHelp.PtrToStringUTF8(pchName2) : null; + Marshal.FreeHGlobal(pchName2); + return ret; + } + + /// + /// Install/Uninstall control for optional DLC + /// + public static void InstallDLC(AppId_t nAppID) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamApps_InstallDLC(nAppID); + } + + public static void UninstallDLC(AppId_t nAppID) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamApps_UninstallDLC(nAppID); + } + + /// + /// Request cd-key for yourself or owned DLC. If you are interested in this + /// data then make sure you provide us with a list of valid keys to be distributed + /// to users when they purchase the game, before the game ships. + /// You'll receive an AppProofOfPurchaseKeyResponse_t callback when + /// the key is available (which may be immediately). + /// + public static void RequestAppProofOfPurchaseKey(AppId_t nAppID) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamApps_RequestAppProofOfPurchaseKey(nAppID); + } + + /// + /// returns current beta branch name, 'public' is the default branch + /// + public static bool GetCurrentBetaName(out string pchName, int cchNameBufferSize) { + InteropHelp.TestIfAvailableClient(); + IntPtr pchName2 = Marshal.AllocHGlobal(cchNameBufferSize); + bool ret = NativeMethods.ISteamApps_GetCurrentBetaName(pchName2, cchNameBufferSize); + pchName = ret ? InteropHelp.PtrToStringUTF8(pchName2) : null; + Marshal.FreeHGlobal(pchName2); + return ret; + } + + /// + /// signal Steam that game files seems corrupt or missing + /// + public static bool MarkContentCorrupt(bool bMissingFilesOnly) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamApps_MarkContentCorrupt(bMissingFilesOnly); + } + + /// + /// return installed depots in mount order + /// + public static uint GetInstalledDepots(AppId_t appID, DepotId_t[] pvecDepots, uint cMaxDepots) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamApps_GetInstalledDepots(appID, pvecDepots, cMaxDepots); + } + + /// + /// returns current app install folder for AppID, returns folder name length + /// + public static uint GetAppInstallDir(AppId_t appID, out string pchFolder, uint cchFolderBufferSize) { + InteropHelp.TestIfAvailableClient(); + IntPtr pchFolder2 = Marshal.AllocHGlobal((int)cchFolderBufferSize); + uint ret = NativeMethods.ISteamApps_GetAppInstallDir(appID, pchFolder2, cchFolderBufferSize); + pchFolder = ret != 0 ? InteropHelp.PtrToStringUTF8(pchFolder2) : null; + Marshal.FreeHGlobal(pchFolder2); + return ret; + } + + /// + /// returns true if that app is installed (not necessarily owned) + /// + public static bool BIsAppInstalled(AppId_t appID) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamApps_BIsAppInstalled(appID); + } + + /// + /// returns the SteamID of the original owner. If different from current user, it's borrowed + /// + public static CSteamID GetAppOwner() { + InteropHelp.TestIfAvailableClient(); + return (CSteamID)NativeMethods.ISteamApps_GetAppOwner(); + } + + /// + /// Returns the associated launch param if the game is run via steam://run/<appid>//?param1=value1;param2=value2;param3=value3 etc. + /// Parameter names starting with the character '@' are reserved for internal use and will always return and empty string. + /// Parameter names starting with an underscore '_' are reserved for steam features -- they can be queried by the game, + /// but it is advised that you not param names beginning with an underscore for your own features. + /// + public static string GetLaunchQueryParam(string pchKey) { + InteropHelp.TestIfAvailableClient(); + using (var pchKey2 = new InteropHelp.UTF8StringHandle(pchKey)) { + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamApps_GetLaunchQueryParam(pchKey2)); + } + } + + /// + /// get download progress for optional DLC + /// + public static bool GetDlcDownloadProgress(AppId_t nAppID, out ulong punBytesDownloaded, out ulong punBytesTotal) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamApps_GetDlcDownloadProgress(nAppID, out punBytesDownloaded, out punBytesTotal); + } + + /// + /// return the buildid of this app, may change at any time based on backend updates to the game + /// + public static int GetAppBuildId() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamApps_GetAppBuildId(); + } +#if _PS3 + /// + /// Result returned in a RegisterActivationCodeResponse_t callresult + /// + public static SteamAPICall_t RegisterActivationCode(string pchActivationCode) { + InteropHelp.TestIfAvailableClient(); + using (var pchActivationCode2 = new InteropHelp.UTF8StringHandle(pchActivationCode)) { + return (SteamAPICall_t)NativeMethods.ISteamApps_RegisterActivationCode(pchActivationCode2); + } + } +#endif + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamapps.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamapps.cs.meta new file mode 100644 index 0000000..846458a --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamapps.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: eaed8001c02299e44a461eb704bd8f38 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamclient.cs b/Assets/Editor/Steamworks.NET/autogen/isteamclient.cs new file mode 100644 index 0000000..9f816e8 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamclient.cs @@ -0,0 +1,355 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamClient { + /// + /// Creates a communication pipe to the Steam client + /// + public static HSteamPipe CreateSteamPipe() { + InteropHelp.TestIfAvailableClient(); + return (HSteamPipe)NativeMethods.ISteamClient_CreateSteamPipe(); + } + + /// + /// Releases a previously created communications pipe + /// + public static bool BReleaseSteamPipe(HSteamPipe hSteamPipe) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamClient_BReleaseSteamPipe(hSteamPipe); + } + + /// + /// connects to an existing global user, failing if none exists + /// used by the game to coordinate with the steamUI + /// + public static HSteamUser ConnectToGlobalUser(HSteamPipe hSteamPipe) { + InteropHelp.TestIfAvailableClient(); + return (HSteamUser)NativeMethods.ISteamClient_ConnectToGlobalUser(hSteamPipe); + } + + /// + /// used by game servers, create a steam user that won't be shared with anyone else + /// + public static HSteamUser CreateLocalUser(out HSteamPipe phSteamPipe, EAccountType eAccountType) { + InteropHelp.TestIfAvailableClient(); + return (HSteamUser)NativeMethods.ISteamClient_CreateLocalUser(out phSteamPipe, eAccountType); + } + + /// + /// removes an allocated user + /// + public static void ReleaseUser(HSteamPipe hSteamPipe, HSteamUser hUser) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamClient_ReleaseUser(hSteamPipe, hUser); + } + + /// + /// retrieves the ISteamUser interface associated with the handle + /// + public static IntPtr GetISteamUser(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamUser(hSteamUser, hSteamPipe, pchVersion2); + } + } + + /// + /// retrieves the ISteamGameServer interface associated with the handle + /// + public static IntPtr GetISteamGameServer(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamGameServer(hSteamUser, hSteamPipe, pchVersion2); + } + } + + /// + /// set the local IP and Port to bind to + /// this must be set before CreateLocalUser() + /// + public static void SetLocalIPBinding(uint unIP, ushort usPort) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamClient_SetLocalIPBinding(unIP, usPort); + } + + /// + /// returns the ISteamFriends interface + /// + public static IntPtr GetISteamFriends(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamFriends(hSteamUser, hSteamPipe, pchVersion2); + } + } + + /// + /// returns the ISteamUtils interface + /// + public static IntPtr GetISteamUtils(HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamUtils(hSteamPipe, pchVersion2); + } + } + + /// + /// returns the ISteamMatchmaking interface + /// + public static IntPtr GetISteamMatchmaking(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamMatchmaking(hSteamUser, hSteamPipe, pchVersion2); + } + } + + /// + /// returns the ISteamMatchmakingServers interface + /// + public static IntPtr GetISteamMatchmakingServers(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamMatchmakingServers(hSteamUser, hSteamPipe, pchVersion2); + } + } + + /// + /// returns the a generic interface + /// + public static IntPtr GetISteamGenericInterface(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamGenericInterface(hSteamUser, hSteamPipe, pchVersion2); + } + } + + /// + /// returns the ISteamUserStats interface + /// + public static IntPtr GetISteamUserStats(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamUserStats(hSteamUser, hSteamPipe, pchVersion2); + } + } + + /// + /// returns the ISteamGameServerStats interface + /// + public static IntPtr GetISteamGameServerStats(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamGameServerStats(hSteamuser, hSteamPipe, pchVersion2); + } + } + + /// + /// returns apps interface + /// + public static IntPtr GetISteamApps(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamApps(hSteamUser, hSteamPipe, pchVersion2); + } + } + + /// + /// networking + /// + public static IntPtr GetISteamNetworking(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamNetworking(hSteamUser, hSteamPipe, pchVersion2); + } + } + + /// + /// remote storage + /// + public static IntPtr GetISteamRemoteStorage(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamRemoteStorage(hSteamuser, hSteamPipe, pchVersion2); + } + } + + /// + /// user screenshots + /// + public static IntPtr GetISteamScreenshots(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamScreenshots(hSteamuser, hSteamPipe, pchVersion2); + } + } + + /// + /// this needs to be called every frame to process matchmaking results + /// redundant if you're already calling SteamAPI_RunCallbacks() + /// + public static void RunFrame() { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamClient_RunFrame(); + } + + /// + /// returns the number of IPC calls made since the last time this function was called + /// Used for perf debugging so you can understand how many IPC calls your game makes per frame + /// Every IPC call is at minimum a thread context switch if not a process one so you want to rate + /// control how often you do them. + /// + public static uint GetIPCCallCount() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamClient_GetIPCCallCount(); + } + + /// + /// API warning handling + /// 'int' is the severity; 0 for msg, 1 for warning + /// 'const char *' is the text of the message + /// callbacks will occur directly after the API function is called that generated the warning or message + /// + public static void SetWarningMessageHook(SteamAPIWarningMessageHook_t pFunction) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamClient_SetWarningMessageHook(pFunction); + } + + /// + /// Trigger global shutdown for the DLL + /// + public static bool BShutdownIfAllPipesClosed() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamClient_BShutdownIfAllPipesClosed(); + } +#if _PS3 + public static IntPtr GetISteamPS3OverlayRender() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamClient_GetISteamPS3OverlayRender(); + } +#endif + /// + /// Expose HTTP interface + /// + public static IntPtr GetISteamHTTP(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamHTTP(hSteamuser, hSteamPipe, pchVersion2); + } + } + + /// + /// Exposes the ISteamUnifiedMessages interface + /// + public static IntPtr GetISteamUnifiedMessages(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamUnifiedMessages(hSteamuser, hSteamPipe, pchVersion2); + } + } + + /// + /// Exposes the ISteamController interface + /// + public static IntPtr GetISteamController(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamController(hSteamUser, hSteamPipe, pchVersion2); + } + } + + /// + /// Exposes the ISteamUGC interface + /// + public static IntPtr GetISteamUGC(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamUGC(hSteamUser, hSteamPipe, pchVersion2); + } + } + + /// + /// returns app list interface, only available on specially registered apps + /// + public static IntPtr GetISteamAppList(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamAppList(hSteamUser, hSteamPipe, pchVersion2); + } + } + + /// + /// Music Player + /// + public static IntPtr GetISteamMusic(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamMusic(hSteamuser, hSteamPipe, pchVersion2); + } + } + + /// + /// Music Player Remote + /// + public static IntPtr GetISteamMusicRemote(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamMusicRemote(hSteamuser, hSteamPipe, pchVersion2); + } + } + + /// + /// html page display + /// + public static IntPtr GetISteamHTMLSurface(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamHTMLSurface(hSteamuser, hSteamPipe, pchVersion2); + } + } + + /// + /// Helper functions for internal Steam usage + /// + public static void Set_SteamAPI_CPostAPIResultInProcess(SteamAPI_PostAPIResultInProcess_t func) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamClient_Set_SteamAPI_CPostAPIResultInProcess(func); + } + + public static void Remove_SteamAPI_CPostAPIResultInProcess(SteamAPI_PostAPIResultInProcess_t func) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamClient_Remove_SteamAPI_CPostAPIResultInProcess(func); + } + + public static void Set_SteamAPI_CCheckCallbackRegisteredInProcess(SteamAPI_CheckCallbackRegistered_t func) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamClient_Set_SteamAPI_CCheckCallbackRegisteredInProcess(func); + } + + /// + /// inventory + /// + public static IntPtr GetISteamInventory(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamInventory(hSteamuser, hSteamPipe, pchVersion2); + } + } + + /// + /// Video + /// + public static IntPtr GetISteamVideo(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { + InteropHelp.TestIfAvailableClient(); + using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { + return NativeMethods.ISteamClient_GetISteamVideo(hSteamuser, hSteamPipe, pchVersion2); + } + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamclient.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamclient.cs.meta new file mode 100644 index 0000000..139779a --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamclient.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 8ebddbe63eefa7f40ab9908dc5a5ace9 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamcontroller.cs b/Assets/Editor/Steamworks.NET/autogen/isteamcontroller.cs new file mode 100644 index 0000000..f474f70 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamcontroller.cs @@ -0,0 +1,64 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamController { + /// + /// Native controller support API + /// Must call init and shutdown when starting/ending use of the interface + /// + public static bool Init(string pchAbsolutePathToControllerConfigVDF) { + InteropHelp.TestIfAvailableClient(); + using (var pchAbsolutePathToControllerConfigVDF2 = new InteropHelp.UTF8StringHandle(pchAbsolutePathToControllerConfigVDF)) { + return NativeMethods.ISteamController_Init(pchAbsolutePathToControllerConfigVDF2); + } + } + + public static bool Shutdown() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamController_Shutdown(); + } + + /// + /// Pump callback/callresult events, SteamAPI_RunCallbacks will do this for you, + /// normally never need to call directly. + /// + public static void RunFrame() { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamController_RunFrame(); + } + + /// + /// Get the state of the specified controller, returns false if that controller is not connected + /// + public static bool GetControllerState(uint unControllerIndex, out SteamControllerState_t pState) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamController_GetControllerState(unControllerIndex, out pState); + } + + /// + /// Trigger a haptic pulse on the controller + /// + public static void TriggerHapticPulse(uint unControllerIndex, ESteamControllerPad eTargetPad, ushort usDurationMicroSec) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamController_TriggerHapticPulse(unControllerIndex, eTargetPad, usDurationMicroSec); + } + + /// + /// Set the override mode which is used to choose to use different base/legacy bindings from your config file + /// + public static void SetOverrideMode(string pchMode) { + InteropHelp.TestIfAvailableClient(); + using (var pchMode2 = new InteropHelp.UTF8StringHandle(pchMode)) { + NativeMethods.ISteamController_SetOverrideMode(pchMode2); + } + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamcontroller.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamcontroller.cs.meta new file mode 100644 index 0000000..0c9953c --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamcontroller.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: d4b5a08be9ef89f409199e1e35d837c2 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamfriends.cs b/Assets/Editor/Steamworks.NET/autogen/isteamfriends.cs new file mode 100644 index 0000000..b01acb5 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamfriends.cs @@ -0,0 +1,596 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamFriends { + /// + /// returns the local players name - guaranteed to not be NULL. + /// this is the same name as on the users community profile page + /// this is stored in UTF-8 format + /// like all the other interface functions that return a char *, it's important that this pointer is not saved + /// off; it will eventually be free'd or re-allocated + /// + public static string GetPersonaName() { + InteropHelp.TestIfAvailableClient(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamFriends_GetPersonaName()); + } + + /// + /// Sets the player name, stores it on the server and publishes the changes to all friends who are online. + /// Changes take place locally immediately, and a PersonaStateChange_t is posted, presuming success. + /// The final results are available through the return value SteamAPICall_t, using SetPersonaNameResponse_t. + /// If the name change fails to happen on the server, then an additional global PersonaStateChange_t will be posted + /// to change the name back, in addition to the SetPersonaNameResponse_t callback. + /// + public static SteamAPICall_t SetPersonaName(string pchPersonaName) { + InteropHelp.TestIfAvailableClient(); + using (var pchPersonaName2 = new InteropHelp.UTF8StringHandle(pchPersonaName)) { + return (SteamAPICall_t)NativeMethods.ISteamFriends_SetPersonaName(pchPersonaName2); + } + } + + /// + /// gets the status of the current user + /// + public static EPersonaState GetPersonaState() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_GetPersonaState(); + } + + /// + /// friend iteration + /// takes a set of k_EFriendFlags, and returns the number of users the client knows about who meet that criteria + /// then GetFriendByIndex() can then be used to return the id's of each of those users + /// + public static int GetFriendCount(EFriendFlags iFriendFlags) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_GetFriendCount(iFriendFlags); + } + + /// + /// returns the steamID of a user + /// iFriend is a index of range [0, GetFriendCount()) + /// iFriendsFlags must be the same value as used in GetFriendCount() + /// the returned CSteamID can then be used by all the functions below to access details about the user + /// + public static CSteamID GetFriendByIndex(int iFriend, EFriendFlags iFriendFlags) { + InteropHelp.TestIfAvailableClient(); + return (CSteamID)NativeMethods.ISteamFriends_GetFriendByIndex(iFriend, iFriendFlags); + } + + /// + /// returns a relationship to a user + /// + public static EFriendRelationship GetFriendRelationship(CSteamID steamIDFriend) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_GetFriendRelationship(steamIDFriend); + } + + /// + /// returns the current status of the specified user + /// this will only be known by the local user if steamIDFriend is in their friends list; on the same game server; in a chat room or lobby; or in a small group with the local user + /// + public static EPersonaState GetFriendPersonaState(CSteamID steamIDFriend) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_GetFriendPersonaState(steamIDFriend); + } + + /// + /// returns the name another user - guaranteed to not be NULL. + /// same rules as GetFriendPersonaState() apply as to whether or not the user knowns the name of the other user + /// note that on first joining a lobby, chat room or game server the local user will not known the name of the other users automatically; that information will arrive asyncronously + /// + public static string GetFriendPersonaName(CSteamID steamIDFriend) { + InteropHelp.TestIfAvailableClient(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamFriends_GetFriendPersonaName(steamIDFriend)); + } + + /// + /// returns true if the friend is actually in a game, and fills in pFriendGameInfo with an extra details + /// + public static bool GetFriendGamePlayed(CSteamID steamIDFriend, out FriendGameInfo_t pFriendGameInfo) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_GetFriendGamePlayed(steamIDFriend, out pFriendGameInfo); + } + + /// + /// accesses old friends names - returns an empty string when their are no more items in the history + /// + public static string GetFriendPersonaNameHistory(CSteamID steamIDFriend, int iPersonaName) { + InteropHelp.TestIfAvailableClient(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamFriends_GetFriendPersonaNameHistory(steamIDFriend, iPersonaName)); + } + + /// + /// friends steam level + /// + public static int GetFriendSteamLevel(CSteamID steamIDFriend) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_GetFriendSteamLevel(steamIDFriend); + } + + /// + /// Returns nickname the current user has set for the specified player. Returns NULL if the no nickname has been set for that player. + /// + public static string GetPlayerNickname(CSteamID steamIDPlayer) { + InteropHelp.TestIfAvailableClient(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamFriends_GetPlayerNickname(steamIDPlayer)); + } + + /// + /// friend grouping (tag) apis + /// returns the number of friends groups + /// + public static int GetFriendsGroupCount() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_GetFriendsGroupCount(); + } + + /// + /// returns the friends group ID for the given index (invalid indices return k_FriendsGroupID_Invalid) + /// + public static FriendsGroupID_t GetFriendsGroupIDByIndex(int iFG) { + InteropHelp.TestIfAvailableClient(); + return (FriendsGroupID_t)NativeMethods.ISteamFriends_GetFriendsGroupIDByIndex(iFG); + } + + /// + /// returns the name for the given friends group (NULL in the case of invalid friends group IDs) + /// + public static string GetFriendsGroupName(FriendsGroupID_t friendsGroupID) { + InteropHelp.TestIfAvailableClient(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamFriends_GetFriendsGroupName(friendsGroupID)); + } + + /// + /// returns the number of members in a given friends group + /// + public static int GetFriendsGroupMembersCount(FriendsGroupID_t friendsGroupID) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_GetFriendsGroupMembersCount(friendsGroupID); + } + + /// + /// gets up to nMembersCount members of the given friends group, if fewer exist than requested those positions' SteamIDs will be invalid + /// + public static void GetFriendsGroupMembersList(FriendsGroupID_t friendsGroupID, CSteamID[] pOutSteamIDMembers, int nMembersCount) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamFriends_GetFriendsGroupMembersList(friendsGroupID, pOutSteamIDMembers, nMembersCount); + } + + /// + /// returns true if the specified user meets any of the criteria specified in iFriendFlags + /// iFriendFlags can be the union (binary or, |) of one or more k_EFriendFlags values + /// + public static bool HasFriend(CSteamID steamIDFriend, EFriendFlags iFriendFlags) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_HasFriend(steamIDFriend, iFriendFlags); + } + + /// + /// clan (group) iteration and access functions + /// + public static int GetClanCount() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_GetClanCount(); + } + + public static CSteamID GetClanByIndex(int iClan) { + InteropHelp.TestIfAvailableClient(); + return (CSteamID)NativeMethods.ISteamFriends_GetClanByIndex(iClan); + } + + public static string GetClanName(CSteamID steamIDClan) { + InteropHelp.TestIfAvailableClient(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamFriends_GetClanName(steamIDClan)); + } + + public static string GetClanTag(CSteamID steamIDClan) { + InteropHelp.TestIfAvailableClient(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamFriends_GetClanTag(steamIDClan)); + } + + /// + /// returns the most recent information we have about what's happening in a clan + /// + public static bool GetClanActivityCounts(CSteamID steamIDClan, out int pnOnline, out int pnInGame, out int pnChatting) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_GetClanActivityCounts(steamIDClan, out pnOnline, out pnInGame, out pnChatting); + } + + /// + /// for clans a user is a member of, they will have reasonably up-to-date information, but for others you'll have to download the info to have the latest + /// + public static SteamAPICall_t DownloadClanActivityCounts(CSteamID[] psteamIDClans, int cClansToRequest) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamFriends_DownloadClanActivityCounts(psteamIDClans, cClansToRequest); + } + + /// + /// iterators for getting users in a chat room, lobby, game server or clan + /// note that large clans that cannot be iterated by the local user + /// note that the current user must be in a lobby to retrieve CSteamIDs of other users in that lobby + /// steamIDSource can be the steamID of a group, game server, lobby or chat room + /// + public static int GetFriendCountFromSource(CSteamID steamIDSource) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_GetFriendCountFromSource(steamIDSource); + } + + public static CSteamID GetFriendFromSourceByIndex(CSteamID steamIDSource, int iFriend) { + InteropHelp.TestIfAvailableClient(); + return (CSteamID)NativeMethods.ISteamFriends_GetFriendFromSourceByIndex(steamIDSource, iFriend); + } + + /// + /// returns true if the local user can see that steamIDUser is a member or in steamIDSource + /// + public static bool IsUserInSource(CSteamID steamIDUser, CSteamID steamIDSource) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_IsUserInSource(steamIDUser, steamIDSource); + } + + /// + /// User is in a game pressing the talk button (will suppress the microphone for all voice comms from the Steam friends UI) + /// + public static void SetInGameVoiceSpeaking(CSteamID steamIDUser, bool bSpeaking) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamFriends_SetInGameVoiceSpeaking(steamIDUser, bSpeaking); + } + + /// + /// activates the game overlay, with an optional dialog to open + /// valid options are "Friends", "Community", "Players", "Settings", "OfficialGameGroup", "Stats", "Achievements" + /// + public static void ActivateGameOverlay(string pchDialog) { + InteropHelp.TestIfAvailableClient(); + using (var pchDialog2 = new InteropHelp.UTF8StringHandle(pchDialog)) { + NativeMethods.ISteamFriends_ActivateGameOverlay(pchDialog2); + } + } + + /// + /// activates game overlay to a specific place + /// valid options are + /// "steamid" - opens the overlay web browser to the specified user or groups profile + /// "chat" - opens a chat window to the specified user, or joins the group chat + /// "jointrade" - opens a window to a Steam Trading session that was started with the ISteamEconomy/StartTrade Web API + /// "stats" - opens the overlay web browser to the specified user's stats + /// "achievements" - opens the overlay web browser to the specified user's achievements + /// "friendadd" - opens the overlay in minimal mode prompting the user to add the target user as a friend + /// "friendremove" - opens the overlay in minimal mode prompting the user to remove the target friend + /// "friendrequestaccept" - opens the overlay in minimal mode prompting the user to accept an incoming friend invite + /// "friendrequestignore" - opens the overlay in minimal mode prompting the user to ignore an incoming friend invite + /// + public static void ActivateGameOverlayToUser(string pchDialog, CSteamID steamID) { + InteropHelp.TestIfAvailableClient(); + using (var pchDialog2 = new InteropHelp.UTF8StringHandle(pchDialog)) { + NativeMethods.ISteamFriends_ActivateGameOverlayToUser(pchDialog2, steamID); + } + } + + /// + /// activates game overlay web browser directly to the specified URL + /// full address with protocol type is required, e.g. http://www.steamgames.com/ + /// + public static void ActivateGameOverlayToWebPage(string pchURL) { + InteropHelp.TestIfAvailableClient(); + using (var pchURL2 = new InteropHelp.UTF8StringHandle(pchURL)) { + NativeMethods.ISteamFriends_ActivateGameOverlayToWebPage(pchURL2); + } + } + + /// + /// activates game overlay to store page for app + /// + public static void ActivateGameOverlayToStore(AppId_t nAppID, EOverlayToStoreFlag eFlag) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamFriends_ActivateGameOverlayToStore(nAppID, eFlag); + } + + /// + /// Mark a target user as 'played with'. This is a client-side only feature that requires that the calling user is + /// in game + /// + public static void SetPlayedWith(CSteamID steamIDUserPlayedWith) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamFriends_SetPlayedWith(steamIDUserPlayedWith); + } + + /// + /// activates game overlay to open the invite dialog. Invitations will be sent for the provided lobby. + /// + public static void ActivateGameOverlayInviteDialog(CSteamID steamIDLobby) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamFriends_ActivateGameOverlayInviteDialog(steamIDLobby); + } + + /// + /// gets the small (32x32) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set + /// + public static int GetSmallFriendAvatar(CSteamID steamIDFriend) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_GetSmallFriendAvatar(steamIDFriend); + } + + /// + /// gets the medium (64x64) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set + /// + public static int GetMediumFriendAvatar(CSteamID steamIDFriend) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_GetMediumFriendAvatar(steamIDFriend); + } + + /// + /// gets the large (184x184) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set + /// returns -1 if this image has yet to be loaded, in this case wait for a AvatarImageLoaded_t callback and then call this again + /// + public static int GetLargeFriendAvatar(CSteamID steamIDFriend) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_GetLargeFriendAvatar(steamIDFriend); + } + + /// + /// requests information about a user - persona name & avatar + /// if bRequireNameOnly is set, then the avatar of a user isn't downloaded + /// - it's a lot slower to download avatars and churns the local cache, so if you don't need avatars, don't request them + /// if returns true, it means that data is being requested, and a PersonaStateChanged_t callback will be posted when it's retrieved + /// if returns false, it means that we already have all the details about that user, and functions can be called immediately + /// + public static bool RequestUserInformation(CSteamID steamIDUser, bool bRequireNameOnly) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_RequestUserInformation(steamIDUser, bRequireNameOnly); + } + + /// + /// requests information about a clan officer list + /// when complete, data is returned in ClanOfficerListResponse_t call result + /// this makes available the calls below + /// you can only ask about clans that a user is a member of + /// note that this won't download avatars automatically; if you get an officer, + /// and no avatar image is available, call RequestUserInformation( steamID, false ) to download the avatar + /// + public static SteamAPICall_t RequestClanOfficerList(CSteamID steamIDClan) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamFriends_RequestClanOfficerList(steamIDClan); + } + + /// + /// iteration of clan officers - can only be done when a RequestClanOfficerList() call has completed + /// returns the steamID of the clan owner + /// + public static CSteamID GetClanOwner(CSteamID steamIDClan) { + InteropHelp.TestIfAvailableClient(); + return (CSteamID)NativeMethods.ISteamFriends_GetClanOwner(steamIDClan); + } + + /// + /// returns the number of officers in a clan (including the owner) + /// + public static int GetClanOfficerCount(CSteamID steamIDClan) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_GetClanOfficerCount(steamIDClan); + } + + /// + /// returns the steamID of a clan officer, by index, of range [0,GetClanOfficerCount) + /// + public static CSteamID GetClanOfficerByIndex(CSteamID steamIDClan, int iOfficer) { + InteropHelp.TestIfAvailableClient(); + return (CSteamID)NativeMethods.ISteamFriends_GetClanOfficerByIndex(steamIDClan, iOfficer); + } + + /// + /// if current user is chat restricted, he can't send or receive any text/voice chat messages. + /// the user can't see custom avatars. But the user can be online and send/recv game invites. + /// a chat restricted user can't add friends or join any groups. + /// + public static uint GetUserRestrictions() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_GetUserRestrictions(); + } + + /// + /// Rich Presence data is automatically shared between friends who are in the same game + /// Each user has a set of Key/Value pairs + /// Up to 20 different keys can be set + /// There are two magic keys: + /// "status" - a UTF-8 string that will show up in the 'view game info' dialog in the Steam friends list + /// "connect" - a UTF-8 string that contains the command-line for how a friend can connect to a game + /// GetFriendRichPresence() returns an empty string "" if no value is set + /// SetRichPresence() to a NULL or an empty string deletes the key + /// You can iterate the current set of keys for a friend with GetFriendRichPresenceKeyCount() + /// and GetFriendRichPresenceKeyByIndex() (typically only used for debugging) + /// + public static bool SetRichPresence(string pchKey, string pchValue) { + InteropHelp.TestIfAvailableClient(); + using (var pchKey2 = new InteropHelp.UTF8StringHandle(pchKey)) + using (var pchValue2 = new InteropHelp.UTF8StringHandle(pchValue)) { + return NativeMethods.ISteamFriends_SetRichPresence(pchKey2, pchValue2); + } + } + + public static void ClearRichPresence() { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamFriends_ClearRichPresence(); + } + + public static string GetFriendRichPresence(CSteamID steamIDFriend, string pchKey) { + InteropHelp.TestIfAvailableClient(); + using (var pchKey2 = new InteropHelp.UTF8StringHandle(pchKey)) { + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamFriends_GetFriendRichPresence(steamIDFriend, pchKey2)); + } + } + + public static int GetFriendRichPresenceKeyCount(CSteamID steamIDFriend) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_GetFriendRichPresenceKeyCount(steamIDFriend); + } + + public static string GetFriendRichPresenceKeyByIndex(CSteamID steamIDFriend, int iKey) { + InteropHelp.TestIfAvailableClient(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamFriends_GetFriendRichPresenceKeyByIndex(steamIDFriend, iKey)); + } + + /// + /// Requests rich presence for a specific user. + /// + public static void RequestFriendRichPresence(CSteamID steamIDFriend) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamFriends_RequestFriendRichPresence(steamIDFriend); + } + + /// + /// rich invite support + /// if the target accepts the invite, the pchConnectString gets added to the command-line for launching the game + /// if the game is already running, a GameRichPresenceJoinRequested_t callback is posted containing the connect string + /// invites can only be sent to friends + /// + public static bool InviteUserToGame(CSteamID steamIDFriend, string pchConnectString) { + InteropHelp.TestIfAvailableClient(); + using (var pchConnectString2 = new InteropHelp.UTF8StringHandle(pchConnectString)) { + return NativeMethods.ISteamFriends_InviteUserToGame(steamIDFriend, pchConnectString2); + } + } + + /// + /// recently-played-with friends iteration + /// this iterates the entire list of users recently played with, across games + /// GetFriendCoplayTime() returns as a unix time + /// + public static int GetCoplayFriendCount() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_GetCoplayFriendCount(); + } + + public static CSteamID GetCoplayFriend(int iCoplayFriend) { + InteropHelp.TestIfAvailableClient(); + return (CSteamID)NativeMethods.ISteamFriends_GetCoplayFriend(iCoplayFriend); + } + + public static int GetFriendCoplayTime(CSteamID steamIDFriend) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_GetFriendCoplayTime(steamIDFriend); + } + + public static AppId_t GetFriendCoplayGame(CSteamID steamIDFriend) { + InteropHelp.TestIfAvailableClient(); + return (AppId_t)NativeMethods.ISteamFriends_GetFriendCoplayGame(steamIDFriend); + } + + /// + /// chat interface for games + /// this allows in-game access to group (clan) chats from in the game + /// the behavior is somewhat sophisticated, because the user may or may not be already in the group chat from outside the game or in the overlay + /// use ActivateGameOverlayToUser( "chat", steamIDClan ) to open the in-game overlay version of the chat + /// + public static SteamAPICall_t JoinClanChatRoom(CSteamID steamIDClan) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamFriends_JoinClanChatRoom(steamIDClan); + } + + public static bool LeaveClanChatRoom(CSteamID steamIDClan) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_LeaveClanChatRoom(steamIDClan); + } + + public static int GetClanChatMemberCount(CSteamID steamIDClan) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_GetClanChatMemberCount(steamIDClan); + } + + public static CSteamID GetChatMemberByIndex(CSteamID steamIDClan, int iUser) { + InteropHelp.TestIfAvailableClient(); + return (CSteamID)NativeMethods.ISteamFriends_GetChatMemberByIndex(steamIDClan, iUser); + } + + public static bool SendClanChatMessage(CSteamID steamIDClanChat, string pchText) { + InteropHelp.TestIfAvailableClient(); + using (var pchText2 = new InteropHelp.UTF8StringHandle(pchText)) { + return NativeMethods.ISteamFriends_SendClanChatMessage(steamIDClanChat, pchText2); + } + } + + public static int GetClanChatMessage(CSteamID steamIDClanChat, int iMessage, out string prgchText, int cchTextMax, out EChatEntryType peChatEntryType, out CSteamID psteamidChatter) { + InteropHelp.TestIfAvailableClient(); + IntPtr prgchText2 = Marshal.AllocHGlobal(cchTextMax); + int ret = NativeMethods.ISteamFriends_GetClanChatMessage(steamIDClanChat, iMessage, prgchText2, cchTextMax, out peChatEntryType, out psteamidChatter); + prgchText = ret != 0 ? InteropHelp.PtrToStringUTF8(prgchText2) : null; + Marshal.FreeHGlobal(prgchText2); + return ret; + } + + public static bool IsClanChatAdmin(CSteamID steamIDClanChat, CSteamID steamIDUser) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_IsClanChatAdmin(steamIDClanChat, steamIDUser); + } + + /// + /// interact with the Steam (game overlay / desktop) + /// + public static bool IsClanChatWindowOpenInSteam(CSteamID steamIDClanChat) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_IsClanChatWindowOpenInSteam(steamIDClanChat); + } + + public static bool OpenClanChatWindowInSteam(CSteamID steamIDClanChat) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_OpenClanChatWindowInSteam(steamIDClanChat); + } + + public static bool CloseClanChatWindowInSteam(CSteamID steamIDClanChat) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_CloseClanChatWindowInSteam(steamIDClanChat); + } + + /// + /// peer-to-peer chat interception + /// this is so you can show P2P chats inline in the game + /// + public static bool SetListenForFriendsMessages(bool bInterceptEnabled) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_SetListenForFriendsMessages(bInterceptEnabled); + } + + public static bool ReplyToFriendMessage(CSteamID steamIDFriend, string pchMsgToSend) { + InteropHelp.TestIfAvailableClient(); + using (var pchMsgToSend2 = new InteropHelp.UTF8StringHandle(pchMsgToSend)) { + return NativeMethods.ISteamFriends_ReplyToFriendMessage(steamIDFriend, pchMsgToSend2); + } + } + + public static int GetFriendMessage(CSteamID steamIDFriend, int iMessageID, out string pvData, int cubData, out EChatEntryType peChatEntryType) { + InteropHelp.TestIfAvailableClient(); + IntPtr pvData2 = Marshal.AllocHGlobal(cubData); + int ret = NativeMethods.ISteamFriends_GetFriendMessage(steamIDFriend, iMessageID, pvData2, cubData, out peChatEntryType); + pvData = ret != 0 ? InteropHelp.PtrToStringUTF8(pvData2) : null; + Marshal.FreeHGlobal(pvData2); + return ret; + } + + /// + /// following apis + /// + public static SteamAPICall_t GetFollowerCount(CSteamID steamID) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamFriends_GetFollowerCount(steamID); + } + + public static SteamAPICall_t IsFollowing(CSteamID steamID) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamFriends_IsFollowing(steamID); + } + + public static SteamAPICall_t EnumerateFollowingList(uint unStartIndex) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamFriends_EnumerateFollowingList(unStartIndex); + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamfriends.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamfriends.cs.meta new file mode 100644 index 0000000..94524e3 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamfriends.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 349575987a7f3244e865e3955075aa0b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamgameserver.cs b/Assets/Editor/Steamworks.NET/autogen/isteamgameserver.cs new file mode 100644 index 0000000..6a7b2e8 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamgameserver.cs @@ -0,0 +1,457 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamGameServer { + /// + /// Basic server data. These properties, if set, must be set before before calling LogOn. They + /// may not be changed after logged in. + /// / This is called by SteamGameServer_Init, and you will usually not need to call it directly + /// + public static bool InitGameServer(uint unIP, ushort usGamePort, ushort usQueryPort, uint unFlags, AppId_t nGameAppId, string pchVersionString) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchVersionString2 = new InteropHelp.UTF8StringHandle(pchVersionString)) { + return NativeMethods.ISteamGameServer_InitGameServer(unIP, usGamePort, usQueryPort, unFlags, nGameAppId, pchVersionString2); + } + } + + /// + /// / Game product identifier. This is currently used by the master server for version checking purposes. + /// / It's a required field, but will eventually will go away, and the AppID will be used for this purpose. + /// + public static void SetProduct(string pszProduct) { + InteropHelp.TestIfAvailableGameServer(); + using (var pszProduct2 = new InteropHelp.UTF8StringHandle(pszProduct)) { + NativeMethods.ISteamGameServer_SetProduct(pszProduct2); + } + } + + /// + /// / Description of the game. This is a required field and is displayed in the steam server browser....for now. + /// / This is a required field, but it will go away eventually, as the data should be determined from the AppID. + /// + public static void SetGameDescription(string pszGameDescription) { + InteropHelp.TestIfAvailableGameServer(); + using (var pszGameDescription2 = new InteropHelp.UTF8StringHandle(pszGameDescription)) { + NativeMethods.ISteamGameServer_SetGameDescription(pszGameDescription2); + } + } + + /// + /// / If your game is a "mod," pass the string that identifies it. The default is an empty string, meaning + /// / this application is the original game, not a mod. + /// / + /// / @see k_cbMaxGameServerGameDir + /// + public static void SetModDir(string pszModDir) { + InteropHelp.TestIfAvailableGameServer(); + using (var pszModDir2 = new InteropHelp.UTF8StringHandle(pszModDir)) { + NativeMethods.ISteamGameServer_SetModDir(pszModDir2); + } + } + + /// + /// / Is this is a dedicated server? The default value is false. + /// + public static void SetDedicatedServer(bool bDedicated) { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamGameServer_SetDedicatedServer(bDedicated); + } + + /// + /// Login + /// / Begin process to login to a persistent game server account + /// / + /// / You need to register for callbacks to determine the result of this operation. + /// / @see SteamServersConnected_t + /// / @see SteamServerConnectFailure_t + /// / @see SteamServersDisconnected_t + /// + public static void LogOn(string pszToken) { + InteropHelp.TestIfAvailableGameServer(); + using (var pszToken2 = new InteropHelp.UTF8StringHandle(pszToken)) { + NativeMethods.ISteamGameServer_LogOn(pszToken2); + } + } + + /// + /// / Login to a generic, anonymous account. + /// / + /// / Note: in previous versions of the SDK, this was automatically called within SteamGameServer_Init, + /// / but this is no longer the case. + /// + public static void LogOnAnonymous() { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamGameServer_LogOnAnonymous(); + } + + /// + /// / Begin process of logging game server out of steam + /// + public static void LogOff() { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamGameServer_LogOff(); + } + + /// + /// status functions + /// + public static bool BLoggedOn() { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServer_BLoggedOn(); + } + + public static bool BSecure() { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServer_BSecure(); + } + + public static CSteamID GetSteamID() { + InteropHelp.TestIfAvailableGameServer(); + return (CSteamID)NativeMethods.ISteamGameServer_GetSteamID(); + } + + /// + /// / Returns true if the master server has requested a restart. + /// / Only returns true once per request. + /// + public static bool WasRestartRequested() { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServer_WasRestartRequested(); + } + + /// + /// Server state. These properties may be changed at any time. + /// / Max player count that will be reported to server browser and client queries + /// + public static void SetMaxPlayerCount(int cPlayersMax) { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamGameServer_SetMaxPlayerCount(cPlayersMax); + } + + /// + /// / Number of bots. Default value is zero + /// + public static void SetBotPlayerCount(int cBotplayers) { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamGameServer_SetBotPlayerCount(cBotplayers); + } + + /// + /// / Set the name of server as it will appear in the server browser + /// / + /// / @see k_cbMaxGameServerName + /// + public static void SetServerName(string pszServerName) { + InteropHelp.TestIfAvailableGameServer(); + using (var pszServerName2 = new InteropHelp.UTF8StringHandle(pszServerName)) { + NativeMethods.ISteamGameServer_SetServerName(pszServerName2); + } + } + + /// + /// / Set name of map to report in the server browser + /// / + /// / @see k_cbMaxGameServerName + /// + public static void SetMapName(string pszMapName) { + InteropHelp.TestIfAvailableGameServer(); + using (var pszMapName2 = new InteropHelp.UTF8StringHandle(pszMapName)) { + NativeMethods.ISteamGameServer_SetMapName(pszMapName2); + } + } + + /// + /// / Let people know if your server will require a password + /// + public static void SetPasswordProtected(bool bPasswordProtected) { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamGameServer_SetPasswordProtected(bPasswordProtected); + } + + /// + /// / Spectator server. The default value is zero, meaning the service + /// / is not used. + /// + public static void SetSpectatorPort(ushort unSpectatorPort) { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamGameServer_SetSpectatorPort(unSpectatorPort); + } + + /// + /// / Name of the spectator server. (Only used if spectator port is nonzero.) + /// / + /// / @see k_cbMaxGameServerMapName + /// + public static void SetSpectatorServerName(string pszSpectatorServerName) { + InteropHelp.TestIfAvailableGameServer(); + using (var pszSpectatorServerName2 = new InteropHelp.UTF8StringHandle(pszSpectatorServerName)) { + NativeMethods.ISteamGameServer_SetSpectatorServerName(pszSpectatorServerName2); + } + } + + /// + /// / Call this to clear the whole list of key/values that are sent in rules queries. + /// + public static void ClearAllKeyValues() { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamGameServer_ClearAllKeyValues(); + } + + /// + /// / Call this to add/update a key/value pair. + /// + public static void SetKeyValue(string pKey, string pValue) { + InteropHelp.TestIfAvailableGameServer(); + using (var pKey2 = new InteropHelp.UTF8StringHandle(pKey)) + using (var pValue2 = new InteropHelp.UTF8StringHandle(pValue)) { + NativeMethods.ISteamGameServer_SetKeyValue(pKey2, pValue2); + } + } + + /// + /// / Sets a string defining the "gametags" for this server, this is optional, but if it is set + /// / it allows users to filter in the matchmaking/server-browser interfaces based on the value + /// / + /// / @see k_cbMaxGameServerTags + /// + public static void SetGameTags(string pchGameTags) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchGameTags2 = new InteropHelp.UTF8StringHandle(pchGameTags)) { + NativeMethods.ISteamGameServer_SetGameTags(pchGameTags2); + } + } + + /// + /// / Sets a string defining the "gamedata" for this server, this is optional, but if it is set + /// / it allows users to filter in the matchmaking/server-browser interfaces based on the value + /// / don't set this unless it actually changes, its only uploaded to the master once (when + /// / acknowledged) + /// / + /// / @see k_cbMaxGameServerGameData + /// + public static void SetGameData(string pchGameData) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchGameData2 = new InteropHelp.UTF8StringHandle(pchGameData)) { + NativeMethods.ISteamGameServer_SetGameData(pchGameData2); + } + } + + /// + /// / Region identifier. This is an optional field, the default value is empty, meaning the "world" region + /// + public static void SetRegion(string pszRegion) { + InteropHelp.TestIfAvailableGameServer(); + using (var pszRegion2 = new InteropHelp.UTF8StringHandle(pszRegion)) { + NativeMethods.ISteamGameServer_SetRegion(pszRegion2); + } + } + + /// + /// Player list management / authentication + /// Handles receiving a new connection from a Steam user. This call will ask the Steam + /// servers to validate the users identity, app ownership, and VAC status. If the Steam servers + /// are off-line, then it will validate the cached ticket itself which will validate app ownership + /// and identity. The AuthBlob here should be acquired on the game client using SteamUser()->InitiateGameConnection() + /// and must then be sent up to the game server for authentication. + /// Return Value: returns true if the users ticket passes basic checks. pSteamIDUser will contain the Steam ID of this user. pSteamIDUser must NOT be NULL + /// If the call succeeds then you should expect a GSClientApprove_t or GSClientDeny_t callback which will tell you whether authentication + /// for the user has succeeded or failed (the steamid in the callback will match the one returned by this call) + /// + public static bool SendUserConnectAndAuthenticate(uint unIPClient, byte[] pvAuthBlob, uint cubAuthBlobSize, out CSteamID pSteamIDUser) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServer_SendUserConnectAndAuthenticate(unIPClient, pvAuthBlob, cubAuthBlobSize, out pSteamIDUser); + } + + /// + /// Creates a fake user (ie, a bot) which will be listed as playing on the server, but skips validation. + /// Return Value: Returns a SteamID for the user to be tracked with, you should call HandleUserDisconnect() + /// when this user leaves the server just like you would for a real user. + /// + public static CSteamID CreateUnauthenticatedUserConnection() { + InteropHelp.TestIfAvailableGameServer(); + return (CSteamID)NativeMethods.ISteamGameServer_CreateUnauthenticatedUserConnection(); + } + + /// + /// Should be called whenever a user leaves our game server, this lets Steam internally + /// track which users are currently on which servers for the purposes of preventing a single + /// account being logged into multiple servers, showing who is currently on a server, etc. + /// + public static void SendUserDisconnect(CSteamID steamIDUser) { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamGameServer_SendUserDisconnect(steamIDUser); + } + + /// + /// Update the data to be displayed in the server browser and matchmaking interfaces for a user + /// currently connected to the server. For regular users you must call this after you receive a + /// GSUserValidationSuccess callback. + /// Return Value: true if successful, false if failure (ie, steamIDUser wasn't for an active player) + /// + public static bool BUpdateUserData(CSteamID steamIDUser, string pchPlayerName, uint uScore) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchPlayerName2 = new InteropHelp.UTF8StringHandle(pchPlayerName)) { + return NativeMethods.ISteamGameServer_BUpdateUserData(steamIDUser, pchPlayerName2, uScore); + } + } + + /// + /// New auth system APIs - do not mix with the old auth system APIs. + /// ---------------------------------------------------------------- + /// Retrieve ticket to be sent to the entity who wishes to authenticate you ( using BeginAuthSession API ). + /// pcbTicket retrieves the length of the actual ticket. + /// + public static HAuthTicket GetAuthSessionTicket(byte[] pTicket, int cbMaxTicket, out uint pcbTicket) { + InteropHelp.TestIfAvailableGameServer(); + return (HAuthTicket)NativeMethods.ISteamGameServer_GetAuthSessionTicket(pTicket, cbMaxTicket, out pcbTicket); + } + + /// + /// Authenticate ticket ( from GetAuthSessionTicket ) from entity steamID to be sure it is valid and isnt reused + /// Registers for callbacks if the entity goes offline or cancels the ticket ( see ValidateAuthTicketResponse_t callback and EAuthSessionResponse ) + /// + public static EBeginAuthSessionResult BeginAuthSession(byte[] pAuthTicket, int cbAuthTicket, CSteamID steamID) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServer_BeginAuthSession(pAuthTicket, cbAuthTicket, steamID); + } + + /// + /// Stop tracking started by BeginAuthSession - called when no longer playing game with this entity + /// + public static void EndAuthSession(CSteamID steamID) { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamGameServer_EndAuthSession(steamID); + } + + /// + /// Cancel auth ticket from GetAuthSessionTicket, called when no longer playing game with the entity you gave the ticket to + /// + public static void CancelAuthTicket(HAuthTicket hAuthTicket) { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamGameServer_CancelAuthTicket(hAuthTicket); + } + + /// + /// After receiving a user's authentication data, and passing it to SendUserConnectAndAuthenticate, use this function + /// to determine if the user owns downloadable content specified by the provided AppID. + /// + public static EUserHasLicenseForAppResult UserHasLicenseForApp(CSteamID steamID, AppId_t appID) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServer_UserHasLicenseForApp(steamID, appID); + } + + /// + /// Ask if a user in in the specified group, results returns async by GSUserGroupStatus_t + /// returns false if we're not connected to the steam servers and thus cannot ask + /// + public static bool RequestUserGroupStatus(CSteamID steamIDUser, CSteamID steamIDGroup) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServer_RequestUserGroupStatus(steamIDUser, steamIDGroup); + } + + /// + /// these two functions s are deprecated, and will not return results + /// they will be removed in a future version of the SDK + /// + public static void GetGameplayStats() { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamGameServer_GetGameplayStats(); + } + + public static SteamAPICall_t GetServerReputation() { + InteropHelp.TestIfAvailableGameServer(); + return (SteamAPICall_t)NativeMethods.ISteamGameServer_GetServerReputation(); + } + + /// + /// Returns the public IP of the server according to Steam, useful when the server is + /// behind NAT and you want to advertise its IP in a lobby for other clients to directly + /// connect to + /// + public static uint GetPublicIP() { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServer_GetPublicIP(); + } + + /// + /// These are in GameSocketShare mode, where instead of ISteamGameServer creating its own + /// socket to talk to the master server on, it lets the game use its socket to forward messages + /// back and forth. This prevents us from requiring server ops to open up yet another port + /// in their firewalls. + /// the IP address and port should be in host order, i.e 127.0.0.1 == 0x7f000001 + /// These are used when you've elected to multiplex the game server's UDP socket + /// rather than having the master server updater use its own sockets. + /// Source games use this to simplify the job of the server admins, so they + /// don't have to open up more ports on their firewalls. + /// Call this when a packet that starts with 0xFFFFFFFF comes in. That means + /// it's for us. + /// + public static bool HandleIncomingPacket(byte[] pData, int cbData, uint srcIP, ushort srcPort) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServer_HandleIncomingPacket(pData, cbData, srcIP, srcPort); + } + + /// + /// AFTER calling HandleIncomingPacket for any packets that came in that frame, call this. + /// This gets a packet that the master server updater needs to send out on UDP. + /// It returns the length of the packet it wants to send, or 0 if there are no more packets to send. + /// Call this each frame until it returns 0. + /// + public static int GetNextOutgoingPacket(byte[] pOut, int cbMaxOut, out uint pNetAdr, out ushort pPort) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServer_GetNextOutgoingPacket(pOut, cbMaxOut, out pNetAdr, out pPort); + } + + /// + /// Control heartbeats / advertisement with master server + /// Call this as often as you like to tell the master server updater whether or not + /// you want it to be active (default: off). + /// + public static void EnableHeartbeats(bool bActive) { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamGameServer_EnableHeartbeats(bActive); + } + + /// + /// You usually don't need to modify this. + /// Pass -1 to use the default value for iHeartbeatInterval. + /// Some mods change this. + /// + public static void SetHeartbeatInterval(int iHeartbeatInterval) { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamGameServer_SetHeartbeatInterval(iHeartbeatInterval); + } + + /// + /// Force a heartbeat to steam at the next opportunity + /// + public static void ForceHeartbeat() { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamGameServer_ForceHeartbeat(); + } + + /// + /// associate this game server with this clan for the purposes of computing player compat + /// + public static SteamAPICall_t AssociateWithClan(CSteamID steamIDClan) { + InteropHelp.TestIfAvailableGameServer(); + return (SteamAPICall_t)NativeMethods.ISteamGameServer_AssociateWithClan(steamIDClan); + } + + /// + /// ask if any of the current players dont want to play with this new player - or vice versa + /// + public static SteamAPICall_t ComputeNewPlayerCompatibility(CSteamID steamIDNewPlayer) { + InteropHelp.TestIfAvailableGameServer(); + return (SteamAPICall_t)NativeMethods.ISteamGameServer_ComputeNewPlayerCompatibility(steamIDNewPlayer); + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamgameserver.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamgameserver.cs.meta new file mode 100644 index 0000000..25f6b0a --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamgameserver.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 8527fac438eb30147a9271e9c8cc2bc1 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamgameserverhttp.cs b/Assets/Editor/Steamworks.NET/autogen/isteamgameserverhttp.cs new file mode 100644 index 0000000..f18d95a --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamgameserverhttp.cs @@ -0,0 +1,268 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamGameServerHTTP { + /// + /// Initializes a new HTTP request, returning a handle to use in further operations on it. Requires + /// the method (GET or POST) and the absolute URL for the request. Both http and https are supported, + /// so this string must start with http:// or https:// and should look like http://store.steampowered.com/app/250/ + /// or such. + /// + public static HTTPRequestHandle CreateHTTPRequest(EHTTPMethod eHTTPRequestMethod, string pchAbsoluteURL) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchAbsoluteURL2 = new InteropHelp.UTF8StringHandle(pchAbsoluteURL)) { + return (HTTPRequestHandle)NativeMethods.ISteamGameServerHTTP_CreateHTTPRequest(eHTTPRequestMethod, pchAbsoluteURL2); + } + } + + /// + /// Set a context value for the request, which will be returned in the HTTPRequestCompleted_t callback after + /// sending the request. This is just so the caller can easily keep track of which callbacks go with which request data. + /// + public static bool SetHTTPRequestContextValue(HTTPRequestHandle hRequest, ulong ulContextValue) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerHTTP_SetHTTPRequestContextValue(hRequest, ulContextValue); + } + + /// + /// Set a timeout in seconds for the HTTP request, must be called prior to sending the request. Default + /// timeout is 60 seconds if you don't call this. Returns false if the handle is invalid, or the request + /// has already been sent. + /// + public static bool SetHTTPRequestNetworkActivityTimeout(HTTPRequestHandle hRequest, uint unTimeoutSeconds) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerHTTP_SetHTTPRequestNetworkActivityTimeout(hRequest, unTimeoutSeconds); + } + + /// + /// Set a request header value for the request, must be called prior to sending the request. Will + /// return false if the handle is invalid or the request is already sent. + /// + public static bool SetHTTPRequestHeaderValue(HTTPRequestHandle hRequest, string pchHeaderName, string pchHeaderValue) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchHeaderName2 = new InteropHelp.UTF8StringHandle(pchHeaderName)) + using (var pchHeaderValue2 = new InteropHelp.UTF8StringHandle(pchHeaderValue)) { + return NativeMethods.ISteamGameServerHTTP_SetHTTPRequestHeaderValue(hRequest, pchHeaderName2, pchHeaderValue2); + } + } + + /// + /// Set a GET or POST parameter value on the request, which is set will depend on the EHTTPMethod specified + /// when creating the request. Must be called prior to sending the request. Will return false if the + /// handle is invalid or the request is already sent. + /// + public static bool SetHTTPRequestGetOrPostParameter(HTTPRequestHandle hRequest, string pchParamName, string pchParamValue) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchParamName2 = new InteropHelp.UTF8StringHandle(pchParamName)) + using (var pchParamValue2 = new InteropHelp.UTF8StringHandle(pchParamValue)) { + return NativeMethods.ISteamGameServerHTTP_SetHTTPRequestGetOrPostParameter(hRequest, pchParamName2, pchParamValue2); + } + } + + /// + /// Sends the HTTP request, will return false on a bad handle, otherwise use SteamCallHandle to wait on + /// asynchronous response via callback. + /// Note: If the user is in offline mode in Steam, then this will add a only-if-cached cache-control + /// header and only do a local cache lookup rather than sending any actual remote request. + /// + public static bool SendHTTPRequest(HTTPRequestHandle hRequest, out SteamAPICall_t pCallHandle) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerHTTP_SendHTTPRequest(hRequest, out pCallHandle); + } + + /// + /// Sends the HTTP request, will return false on a bad handle, otherwise use SteamCallHandle to wait on + /// asynchronous response via callback for completion, and listen for HTTPRequestHeadersReceived_t and + /// HTTPRequestDataReceived_t callbacks while streaming. + /// + public static bool SendHTTPRequestAndStreamResponse(HTTPRequestHandle hRequest, out SteamAPICall_t pCallHandle) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerHTTP_SendHTTPRequestAndStreamResponse(hRequest, out pCallHandle); + } + + /// + /// Defers a request you have sent, the actual HTTP client code may have many requests queued, and this will move + /// the specified request to the tail of the queue. Returns false on invalid handle, or if the request is not yet sent. + /// + public static bool DeferHTTPRequest(HTTPRequestHandle hRequest) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerHTTP_DeferHTTPRequest(hRequest); + } + + /// + /// Prioritizes a request you have sent, the actual HTTP client code may have many requests queued, and this will move + /// the specified request to the head of the queue. Returns false on invalid handle, or if the request is not yet sent. + /// + public static bool PrioritizeHTTPRequest(HTTPRequestHandle hRequest) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerHTTP_PrioritizeHTTPRequest(hRequest); + } + + /// + /// Checks if a response header is present in a HTTP response given a handle from HTTPRequestCompleted_t, also + /// returns the size of the header value if present so the caller and allocate a correctly sized buffer for + /// GetHTTPResponseHeaderValue. + /// + public static bool GetHTTPResponseHeaderSize(HTTPRequestHandle hRequest, string pchHeaderName, out uint unResponseHeaderSize) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchHeaderName2 = new InteropHelp.UTF8StringHandle(pchHeaderName)) { + return NativeMethods.ISteamGameServerHTTP_GetHTTPResponseHeaderSize(hRequest, pchHeaderName2, out unResponseHeaderSize); + } + } + + /// + /// Gets header values from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the + /// header is not present or if your buffer is too small to contain it's value. You should first call + /// BGetHTTPResponseHeaderSize to check for the presence of the header and to find out the size buffer needed. + /// + public static bool GetHTTPResponseHeaderValue(HTTPRequestHandle hRequest, string pchHeaderName, byte[] pHeaderValueBuffer, uint unBufferSize) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchHeaderName2 = new InteropHelp.UTF8StringHandle(pchHeaderName)) { + return NativeMethods.ISteamGameServerHTTP_GetHTTPResponseHeaderValue(hRequest, pchHeaderName2, pHeaderValueBuffer, unBufferSize); + } + } + + /// + /// Gets the size of the body data from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the + /// handle is invalid. + /// + public static bool GetHTTPResponseBodySize(HTTPRequestHandle hRequest, out uint unBodySize) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerHTTP_GetHTTPResponseBodySize(hRequest, out unBodySize); + } + + /// + /// Gets the body data from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the + /// handle is invalid or is to a streaming response, or if the provided buffer is not the correct size. Use BGetHTTPResponseBodySize first to find out + /// the correct buffer size to use. + /// + public static bool GetHTTPResponseBodyData(HTTPRequestHandle hRequest, byte[] pBodyDataBuffer, uint unBufferSize) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerHTTP_GetHTTPResponseBodyData(hRequest, pBodyDataBuffer, unBufferSize); + } + + /// + /// Gets the body data from a streaming HTTP response given a handle from HTTPRequestDataReceived_t. Will return false if the + /// handle is invalid or is to a non-streaming response (meaning it wasn't sent with SendHTTPRequestAndStreamResponse), or if the buffer size and offset + /// do not match the size and offset sent in HTTPRequestDataReceived_t. + /// + public static bool GetHTTPStreamingResponseBodyData(HTTPRequestHandle hRequest, uint cOffset, byte[] pBodyDataBuffer, uint unBufferSize) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerHTTP_GetHTTPStreamingResponseBodyData(hRequest, cOffset, pBodyDataBuffer, unBufferSize); + } + + /// + /// Releases an HTTP response handle, should always be called to free resources after receiving a HTTPRequestCompleted_t + /// callback and finishing using the response. + /// + public static bool ReleaseHTTPRequest(HTTPRequestHandle hRequest) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerHTTP_ReleaseHTTPRequest(hRequest); + } + + /// + /// Gets progress on downloading the body for the request. This will be zero unless a response header has already been + /// received which included a content-length field. For responses that contain no content-length it will report + /// zero for the duration of the request as the size is unknown until the connection closes. + /// + public static bool GetHTTPDownloadProgressPct(HTTPRequestHandle hRequest, out float pflPercentOut) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerHTTP_GetHTTPDownloadProgressPct(hRequest, out pflPercentOut); + } + + /// + /// Sets the body for an HTTP Post request. Will fail and return false on a GET request, and will fail if POST params + /// have already been set for the request. Setting this raw body makes it the only contents for the post, the pchContentType + /// parameter will set the content-type header for the request so the server may know how to interpret the body. + /// + public static bool SetHTTPRequestRawPostBody(HTTPRequestHandle hRequest, string pchContentType, byte[] pubBody, uint unBodyLen) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchContentType2 = new InteropHelp.UTF8StringHandle(pchContentType)) { + return NativeMethods.ISteamGameServerHTTP_SetHTTPRequestRawPostBody(hRequest, pchContentType2, pubBody, unBodyLen); + } + } + + /// + /// Creates a cookie container handle which you must later free with ReleaseCookieContainer(). If bAllowResponsesToModify=true + /// than any response to your requests using this cookie container may add new cookies which may be transmitted with + /// future requests. If bAllowResponsesToModify=false than only cookies you explicitly set will be sent. This API is just for + /// during process lifetime, after steam restarts no cookies are persisted and you have no way to access the cookie container across + /// repeat executions of your process. + /// + public static HTTPCookieContainerHandle CreateCookieContainer(bool bAllowResponsesToModify) { + InteropHelp.TestIfAvailableGameServer(); + return (HTTPCookieContainerHandle)NativeMethods.ISteamGameServerHTTP_CreateCookieContainer(bAllowResponsesToModify); + } + + /// + /// Release a cookie container you are finished using, freeing it's memory + /// + public static bool ReleaseCookieContainer(HTTPCookieContainerHandle hCookieContainer) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerHTTP_ReleaseCookieContainer(hCookieContainer); + } + + /// + /// Adds a cookie to the specified cookie container that will be used with future requests. + /// + public static bool SetCookie(HTTPCookieContainerHandle hCookieContainer, string pchHost, string pchUrl, string pchCookie) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchHost2 = new InteropHelp.UTF8StringHandle(pchHost)) + using (var pchUrl2 = new InteropHelp.UTF8StringHandle(pchUrl)) + using (var pchCookie2 = new InteropHelp.UTF8StringHandle(pchCookie)) { + return NativeMethods.ISteamGameServerHTTP_SetCookie(hCookieContainer, pchHost2, pchUrl2, pchCookie2); + } + } + + /// + /// Set the cookie container to use for a HTTP request + /// + public static bool SetHTTPRequestCookieContainer(HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerHTTP_SetHTTPRequestCookieContainer(hRequest, hCookieContainer); + } + + /// + /// Set the extra user agent info for a request, this doesn't clobber the normal user agent, it just adds the extra info on the end + /// + public static bool SetHTTPRequestUserAgentInfo(HTTPRequestHandle hRequest, string pchUserAgentInfo) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchUserAgentInfo2 = new InteropHelp.UTF8StringHandle(pchUserAgentInfo)) { + return NativeMethods.ISteamGameServerHTTP_SetHTTPRequestUserAgentInfo(hRequest, pchUserAgentInfo2); + } + } + + /// + /// Set that https request should require verified SSL certificate via machines certificate trust store + /// + public static bool SetHTTPRequestRequiresVerifiedCertificate(HTTPRequestHandle hRequest, bool bRequireVerifiedCertificate) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerHTTP_SetHTTPRequestRequiresVerifiedCertificate(hRequest, bRequireVerifiedCertificate); + } + + /// + /// Set an absolute timeout on the HTTP request, this is just a total time timeout different than the network activity timeout + /// which can bump everytime we get more data + /// + public static bool SetHTTPRequestAbsoluteTimeoutMS(HTTPRequestHandle hRequest, uint unMilliseconds) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerHTTP_SetHTTPRequestAbsoluteTimeoutMS(hRequest, unMilliseconds); + } + + /// + /// Check if the reason the request failed was because we timed it out (rather than some harder failure) + /// + public static bool GetHTTPRequestWasTimedOut(HTTPRequestHandle hRequest, out bool pbWasTimedOut) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerHTTP_GetHTTPRequestWasTimedOut(hRequest, out pbWasTimedOut); + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamgameserverhttp.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamgameserverhttp.cs.meta new file mode 100644 index 0000000..151e18d --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamgameserverhttp.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: e9bace0ba69272542b30dc78c35b4faf +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamgameserverinventory.cs b/Assets/Editor/Steamworks.NET/autogen/isteamgameserverinventory.cs new file mode 100644 index 0000000..faeb60e --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamgameserverinventory.cs @@ -0,0 +1,321 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamGameServerInventory { + /// + /// INVENTORY ASYNC RESULT MANAGEMENT + /// Asynchronous inventory queries always output a result handle which can be used with + /// GetResultStatus, GetResultItems, etc. A SteamInventoryResultReady_t callback will + /// be triggered when the asynchronous result becomes ready (or fails). + /// Find out the status of an asynchronous inventory result handle. Possible values: + /// k_EResultPending - still in progress + /// k_EResultOK - done, result ready + /// k_EResultExpired - done, result ready, maybe out of date (see DeserializeResult) + /// k_EResultInvalidParam - ERROR: invalid API call parameters + /// k_EResultServiceUnavailable - ERROR: service temporarily down, you may retry later + /// k_EResultLimitExceeded - ERROR: operation would exceed per-user inventory limits + /// k_EResultFail - ERROR: unknown / generic error + /// + public static EResult GetResultStatus(SteamInventoryResult_t resultHandle) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerInventory_GetResultStatus(resultHandle); + } + + /// + /// Copies the contents of a result set into a flat array. The specific + /// contents of the result set depend on which query which was used. + /// + public static bool GetResultItems(SteamInventoryResult_t resultHandle, SteamItemDetails_t[] pOutItemsArray, ref uint punOutItemsArraySize) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerInventory_GetResultItems(resultHandle, pOutItemsArray, ref punOutItemsArraySize); + } + + /// + /// Returns the server time at which the result was generated. Compare against + /// the value of IClientUtils::GetServerRealTime() to determine age. + /// + public static uint GetResultTimestamp(SteamInventoryResult_t resultHandle) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerInventory_GetResultTimestamp(resultHandle); + } + + /// + /// Returns true if the result belongs to the target steam ID, false if the + /// result does not. This is important when using DeserializeResult, to verify + /// that a remote player is not pretending to have a different user's inventory. + /// + public static bool CheckResultSteamID(SteamInventoryResult_t resultHandle, CSteamID steamIDExpected) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerInventory_CheckResultSteamID(resultHandle, steamIDExpected); + } + + /// + /// Destroys a result handle and frees all associated memory. + /// + public static void DestroyResult(SteamInventoryResult_t resultHandle) { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamGameServerInventory_DestroyResult(resultHandle); + } + + /// + /// INVENTORY ASYNC QUERY + /// Captures the entire state of the current user's Steam inventory. + /// You must call DestroyResult on this handle when you are done with it. + /// Returns false and sets *pResultHandle to zero if inventory is unavailable. + /// Note: calls to this function are subject to rate limits and may return + /// cached results if called too frequently. It is suggested that you call + /// this function only when you are about to display the user's full inventory, + /// or if you expect that the inventory may have changed. + /// + public static bool GetAllItems(out SteamInventoryResult_t pResultHandle) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerInventory_GetAllItems(out pResultHandle); + } + + /// + /// Captures the state of a subset of the current user's Steam inventory, + /// identified by an array of item instance IDs. The results from this call + /// can be serialized and passed to other players to "prove" that the current + /// user owns specific items, without exposing the user's entire inventory. + /// For example, you could call GetItemsByID with the IDs of the user's + /// currently equipped cosmetic items and serialize this to a buffer, and + /// then transmit this buffer to other players upon joining a game. + /// + public static bool GetItemsByID(out SteamInventoryResult_t pResultHandle, SteamItemInstanceID_t[] pInstanceIDs, uint unCountInstanceIDs) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerInventory_GetItemsByID(out pResultHandle, pInstanceIDs, unCountInstanceIDs); + } + + /// + /// RESULT SERIALIZATION AND AUTHENTICATION + /// Serialized result sets contain a short signature which can't be forged + /// or replayed across different game sessions. A result set can be serialized + /// on the local client, transmitted to other players via your game networking, + /// and deserialized by the remote players. This is a secure way of preventing + /// hackers from lying about posessing rare/high-value items. + /// Serializes a result set with signature bytes to an output buffer. Pass + /// NULL as an output buffer to get the required size via punOutBufferSize. + /// The size of a serialized result depends on the number items which are being + /// serialized. When securely transmitting items to other players, it is + /// recommended to use "GetItemsByID" first to create a minimal result set. + /// Results have a built-in timestamp which will be considered "expired" after + /// an hour has elapsed. See DeserializeResult for expiration handling. + /// + public static bool SerializeResult(SteamInventoryResult_t resultHandle, byte[] pOutBuffer, out uint punOutBufferSize) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerInventory_SerializeResult(resultHandle, pOutBuffer, out punOutBufferSize); + } + + /// + /// Deserializes a result set and verifies the signature bytes. Returns false + /// if bRequireFullOnlineVerify is set but Steam is running in Offline mode. + /// Otherwise returns true and then delivers error codes via GetResultStatus. + /// The bRESERVED_MUST_BE_FALSE flag is reserved for future use and should not + /// be set to true by your game at this time. + /// DeserializeResult has a potential soft-failure mode where the handle status + /// is set to k_EResultExpired. GetResultItems() still succeeds in this mode. + /// The "expired" result could indicate that the data may be out of date - not + /// just due to timed expiration (one hour), but also because one of the items + /// in the result set may have been traded or consumed since the result set was + /// generated. You could compare the timestamp from GetResultTimestamp() to + /// ISteamUtils::GetServerRealTime() to determine how old the data is. You could + /// simply ignore the "expired" result code and continue as normal, or you + /// could challenge the player with expired data to send an updated result set. + /// + public static bool DeserializeResult(out SteamInventoryResult_t pOutResultHandle, byte[] pBuffer, uint unBufferSize, bool bRESERVED_MUST_BE_FALSE = false) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerInventory_DeserializeResult(out pOutResultHandle, pBuffer, unBufferSize, bRESERVED_MUST_BE_FALSE); + } + + /// + /// INVENTORY ASYNC MODIFICATION + /// GenerateItems() creates one or more items and then generates a SteamInventoryCallback_t + /// notification with a matching nCallbackContext parameter. This API is insecure, and could + /// be abused by hacked clients. It is, however, very useful as a development cheat or as + /// a means of prototyping item-related features for your game. The use of GenerateItems can + /// be restricted to certain item definitions or fully blocked via the Steamworks website. + /// If punArrayQuantity is not NULL, it should be the same length as pArrayItems and should + /// describe the quantity of each item to generate. + /// + public static bool GenerateItems(out SteamInventoryResult_t pResultHandle, SteamItemDef_t[] pArrayItemDefs, uint[] punArrayQuantity, uint unArrayLength) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerInventory_GenerateItems(out pResultHandle, pArrayItemDefs, punArrayQuantity, unArrayLength); + } + + /// + /// GrantPromoItems() checks the list of promotional items for which the user may be eligible + /// and grants the items (one time only). On success, the result set will include items which + /// were granted, if any. If no items were granted because the user isn't eligible for any + /// promotions, this is still considered a success. + /// + public static bool GrantPromoItems(out SteamInventoryResult_t pResultHandle) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerInventory_GrantPromoItems(out pResultHandle); + } + + /// + /// AddPromoItem() / AddPromoItems() are restricted versions of GrantPromoItems(). Instead of + /// scanning for all eligible promotional items, the check is restricted to a single item + /// definition or set of item definitions. This can be useful if your game has custom UI for + /// showing a specific promo item to the user. + /// + public static bool AddPromoItem(out SteamInventoryResult_t pResultHandle, SteamItemDef_t itemDef) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerInventory_AddPromoItem(out pResultHandle, itemDef); + } + + public static bool AddPromoItems(out SteamInventoryResult_t pResultHandle, SteamItemDef_t[] pArrayItemDefs, uint unArrayLength) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerInventory_AddPromoItems(out pResultHandle, pArrayItemDefs, unArrayLength); + } + + /// + /// ConsumeItem() removes items from the inventory, permanently. They cannot be recovered. + /// Not for the faint of heart - if your game implements item removal at all, a high-friction + /// UI confirmation process is highly recommended. Similar to GenerateItems, punArrayQuantity + /// can be NULL or else an array of the same length as pArrayItems which describe the quantity + /// of each item to destroy. ConsumeItem can be restricted to certain item definitions or + /// fully blocked via the Steamworks website to minimize support/abuse issues such as the + /// clasic "my brother borrowed my laptop and deleted all of my rare items". + /// + public static bool ConsumeItem(out SteamInventoryResult_t pResultHandle, SteamItemInstanceID_t itemConsume, uint unQuantity) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerInventory_ConsumeItem(out pResultHandle, itemConsume, unQuantity); + } + + /// + /// ExchangeItems() is an atomic combination of GenerateItems and DestroyItems. It can be + /// used to implement crafting recipes or transmutations, or items which unpack themselves + /// into other items. Like GenerateItems, this is a flexible and dangerous API which is + /// meant for rapid prototyping. You can configure restrictions on ExchangeItems via the + /// Steamworks website, such as limiting it to a whitelist of input/output combinations + /// corresponding to recipes. + /// (Note: although GenerateItems may be hard or impossible to use securely in your game, + /// ExchangeItems is perfectly reasonable to use once the whitelists are set accordingly.) + /// + public static bool ExchangeItems(out SteamInventoryResult_t pResultHandle, SteamItemDef_t[] pArrayGenerate, uint[] punArrayGenerateQuantity, uint unArrayGenerateLength, SteamItemInstanceID_t[] pArrayDestroy, uint[] punArrayDestroyQuantity, uint unArrayDestroyLength) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerInventory_ExchangeItems(out pResultHandle, pArrayGenerate, punArrayGenerateQuantity, unArrayGenerateLength, pArrayDestroy, punArrayDestroyQuantity, unArrayDestroyLength); + } + + /// + /// TransferItemQuantity() is intended for use with items which are "stackable" (can have + /// quantity greater than one). It can be used to split a stack into two, or to transfer + /// quantity from one stack into another stack of identical items. To split one stack into + /// two, pass k_SteamItemInstanceIDInvalid for itemIdDest and a new item will be generated. + /// + public static bool TransferItemQuantity(out SteamInventoryResult_t pResultHandle, SteamItemInstanceID_t itemIdSource, uint unQuantity, SteamItemInstanceID_t itemIdDest) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerInventory_TransferItemQuantity(out pResultHandle, itemIdSource, unQuantity, itemIdDest); + } + + /// + /// TIMED DROPS AND PLAYTIME CREDIT + /// Applications which use timed-drop mechanics should call SendItemDropHeartbeat() when + /// active gameplay begins, and at least once every two minutes afterwards. The backend + /// performs its own time calculations, so the precise timing of the heartbeat is not + /// critical as long as you send at least one heartbeat every two minutes. Calling the + /// function more often than that is not harmful, it will simply have no effect. Note: + /// players may be able to spoof this message by hacking their client, so you should not + /// attempt to use this as a mechanism to restrict playtime credits. It is simply meant + /// to distinguish between being in any kind of gameplay situation vs the main menu or + /// a pre-game launcher window. (If you are stingy with handing out playtime credit, it + /// will only encourage players to run bots or use mouse/kb event simulators.) + /// Playtime credit accumulation can be capped on a daily or weekly basis through your + /// Steamworks configuration. + /// + public static void SendItemDropHeartbeat() { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamGameServerInventory_SendItemDropHeartbeat(); + } + + /// + /// Playtime credit must be consumed and turned into item drops by your game. Only item + /// definitions which are marked as "playtime item generators" can be spawned. The call + /// will return an empty result set if there is not enough playtime credit for a drop. + /// Your game should call TriggerItemDrop at an appropriate time for the user to receive + /// new items, such as between rounds or while the player is dead. Note that players who + /// hack their clients could modify the value of "dropListDefinition", so do not use it + /// to directly control rarity. It is primarily useful during testing and development, + /// where you may wish to perform experiments with different types of drops. + /// + public static bool TriggerItemDrop(out SteamInventoryResult_t pResultHandle, SteamItemDef_t dropListDefinition) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerInventory_TriggerItemDrop(out pResultHandle, dropListDefinition); + } + + /// + /// IN-GAME TRADING + /// TradeItems() implements limited in-game trading of items, if you prefer not to use + /// the overlay or an in-game web browser to perform Steam Trading through the website. + /// You should implement a UI where both players can see and agree to a trade, and then + /// each client should call TradeItems simultaneously (+/- 5 seconds) with matching + /// (but reversed) parameters. The result is the same as if both players performed a + /// Steam Trading transaction through the web. Each player will get an inventory result + /// confirming the removal or quantity changes of the items given away, and the new + /// item instance id numbers and quantities of the received items. + /// (Note: new item instance IDs are generated whenever an item changes ownership.) + /// + public static bool TradeItems(out SteamInventoryResult_t pResultHandle, CSteamID steamIDTradePartner, SteamItemInstanceID_t[] pArrayGive, uint[] pArrayGiveQuantity, uint nArrayGiveLength, SteamItemInstanceID_t[] pArrayGet, uint[] pArrayGetQuantity, uint nArrayGetLength) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerInventory_TradeItems(out pResultHandle, steamIDTradePartner, pArrayGive, pArrayGiveQuantity, nArrayGiveLength, pArrayGet, pArrayGetQuantity, nArrayGetLength); + } + + /// + /// ITEM DEFINITIONS + /// Item definitions are a mapping of "definition IDs" (integers between 1 and 1000000) + /// to a set of string properties. Some of these properties are required to display items + /// on the Steam community web site. Other properties can be defined by applications. + /// Use of these functions is optional; there is no reason to call LoadItemDefinitions + /// if your game hardcodes the numeric definition IDs (eg, purple face mask = 20, blue + /// weapon mod = 55) and does not allow for adding new item types without a client patch. + /// LoadItemDefinitions triggers the automatic load and refresh of item definitions. + /// Every time new item definitions are available (eg, from the dynamic addition of new + /// item types while players are still in-game), a SteamInventoryDefinitionUpdate_t + /// callback will be fired. + /// + public static bool LoadItemDefinitions() { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerInventory_LoadItemDefinitions(); + } + + /// + /// GetItemDefinitionIDs returns the set of all defined item definition IDs (which are + /// defined via Steamworks configuration, and not necessarily contiguous integers). + /// If pItemDefIDs is null, the call will return true and *punItemDefIDsArraySize will + /// contain the total size necessary for a subsequent call. Otherwise, the call will + /// return false if and only if there is not enough space in the output array. + /// + public static bool GetItemDefinitionIDs(SteamItemDef_t[] pItemDefIDs, out uint punItemDefIDsArraySize) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerInventory_GetItemDefinitionIDs(pItemDefIDs, out punItemDefIDsArraySize); + } + + /// + /// GetItemDefinitionProperty returns a string property from a given item definition. + /// Note that some properties (for example, "name") may be localized and will depend + /// on the current Steam language settings (see ISteamApps::GetCurrentGameLanguage). + /// Property names are always composed of ASCII letters, numbers, and/or underscores. + /// Pass a NULL pointer for pchPropertyName to get a comma - separated list of available + /// property names. + /// + public static bool GetItemDefinitionProperty(SteamItemDef_t iDefinition, string pchPropertyName, out string pchValueBuffer, ref uint punValueBufferSize) { + InteropHelp.TestIfAvailableGameServer(); + IntPtr pchValueBuffer2 = Marshal.AllocHGlobal((int)punValueBufferSize); + using (var pchPropertyName2 = new InteropHelp.UTF8StringHandle(pchPropertyName)) { + bool ret = NativeMethods.ISteamGameServerInventory_GetItemDefinitionProperty(iDefinition, pchPropertyName2, pchValueBuffer2, ref punValueBufferSize); + pchValueBuffer = ret ? InteropHelp.PtrToStringUTF8(pchValueBuffer2) : null; + Marshal.FreeHGlobal(pchValueBuffer2); + return ret; + } + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamgameserverinventory.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamgameserverinventory.cs.meta new file mode 100644 index 0000000..17e98e9 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamgameserverinventory.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 4c31662b8b2fbd94ab47dc00568f6d7a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamgameservernetworking.cs b/Assets/Editor/Steamworks.NET/autogen/isteamgameservernetworking.cs new file mode 100644 index 0000000..d3fdf2d --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamgameservernetworking.cs @@ -0,0 +1,248 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamGameServerNetworking { + /// + /// ////////////////////////////////////////////////////////////////////////////////////////// + /// Session-less connection functions + /// automatically establishes NAT-traversing or Relay server connections + /// Sends a P2P packet to the specified user + /// UDP-like, unreliable and a max packet size of 1200 bytes + /// the first packet send may be delayed as the NAT-traversal code runs + /// if we can't get through to the user, an error will be posted via the callback P2PSessionConnectFail_t + /// see EP2PSend enum above for the descriptions of the different ways of sending packets + /// nChannel is a routing number you can use to help route message to different systems - you'll have to call ReadP2PPacket() + /// with the same channel number in order to retrieve the data on the other end + /// using different channels to talk to the same user will still use the same underlying p2p connection, saving on resources + /// + public static bool SendP2PPacket(CSteamID steamIDRemote, byte[] pubData, uint cubData, EP2PSend eP2PSendType, int nChannel = 0) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerNetworking_SendP2PPacket(steamIDRemote, pubData, cubData, eP2PSendType, nChannel); + } + + /// + /// returns true if any data is available for read, and the amount of data that will need to be read + /// + public static bool IsP2PPacketAvailable(out uint pcubMsgSize, int nChannel = 0) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerNetworking_IsP2PPacketAvailable(out pcubMsgSize, nChannel); + } + + /// + /// reads in a packet that has been sent from another user via SendP2PPacket() + /// returns the size of the message and the steamID of the user who sent it in the last two parameters + /// if the buffer passed in is too small, the message will be truncated + /// this call is not blocking, and will return false if no data is available + /// + public static bool ReadP2PPacket(byte[] pubDest, uint cubDest, out uint pcubMsgSize, out CSteamID psteamIDRemote, int nChannel = 0) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerNetworking_ReadP2PPacket(pubDest, cubDest, out pcubMsgSize, out psteamIDRemote, nChannel); + } + + /// + /// AcceptP2PSessionWithUser() should only be called in response to a P2PSessionRequest_t callback + /// P2PSessionRequest_t will be posted if another user tries to send you a packet that you haven't talked to yet + /// if you don't want to talk to the user, just ignore the request + /// if the user continues to send you packets, another P2PSessionRequest_t will be posted periodically + /// this may be called multiple times for a single user + /// (if you've called SendP2PPacket() on the other user, this implicitly accepts the session request) + /// + public static bool AcceptP2PSessionWithUser(CSteamID steamIDRemote) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerNetworking_AcceptP2PSessionWithUser(steamIDRemote); + } + + /// + /// call CloseP2PSessionWithUser() when you're done talking to a user, will free up resources under-the-hood + /// if the remote user tries to send data to you again, another P2PSessionRequest_t callback will be posted + /// + public static bool CloseP2PSessionWithUser(CSteamID steamIDRemote) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerNetworking_CloseP2PSessionWithUser(steamIDRemote); + } + + /// + /// call CloseP2PChannelWithUser() when you're done talking to a user on a specific channel. Once all channels + /// open channels to a user have been closed, the open session to the user will be closed and new data from this + /// user will trigger a P2PSessionRequest_t callback + /// + public static bool CloseP2PChannelWithUser(CSteamID steamIDRemote, int nChannel) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerNetworking_CloseP2PChannelWithUser(steamIDRemote, nChannel); + } + + /// + /// fills out P2PSessionState_t structure with details about the underlying connection to the user + /// should only needed for debugging purposes + /// returns false if no connection exists to the specified user + /// + public static bool GetP2PSessionState(CSteamID steamIDRemote, out P2PSessionState_t pConnectionState) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerNetworking_GetP2PSessionState(steamIDRemote, out pConnectionState); + } + + /// + /// Allow P2P connections to fall back to being relayed through the Steam servers if a direct connection + /// or NAT-traversal cannot be established. Only applies to connections created after setting this value, + /// or to existing connections that need to automatically reconnect after this value is set. + /// P2P packet relay is allowed by default + /// + public static bool AllowP2PPacketRelay(bool bAllow) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerNetworking_AllowP2PPacketRelay(bAllow); + } + + /// + /// ////////////////////////////////////////////////////////////////////////////////////////// + /// LISTEN / CONNECT style interface functions + /// This is an older set of functions designed around the Berkeley TCP sockets model + /// it's preferential that you use the above P2P functions, they're more robust + /// and these older functions will be removed eventually + /// ////////////////////////////////////////////////////////////////////////////////////////// + /// creates a socket and listens others to connect + /// will trigger a SocketStatusCallback_t callback on another client connecting + /// nVirtualP2PPort is the unique ID that the client will connect to, in case you have multiple ports + /// this can usually just be 0 unless you want multiple sets of connections + /// unIP is the local IP address to bind to + /// pass in 0 if you just want the default local IP + /// unPort is the port to use + /// pass in 0 if you don't want users to be able to connect via IP/Port, but expect to be always peer-to-peer connections only + /// + public static SNetListenSocket_t CreateListenSocket(int nVirtualP2PPort, uint nIP, ushort nPort, bool bAllowUseOfPacketRelay) { + InteropHelp.TestIfAvailableGameServer(); + return (SNetListenSocket_t)NativeMethods.ISteamGameServerNetworking_CreateListenSocket(nVirtualP2PPort, nIP, nPort, bAllowUseOfPacketRelay); + } + + /// + /// creates a socket and begin connection to a remote destination + /// can connect via a known steamID (client or game server), or directly to an IP + /// on success will trigger a SocketStatusCallback_t callback + /// on failure or timeout will trigger a SocketStatusCallback_t callback with a failure code in m_eSNetSocketState + /// + public static SNetSocket_t CreateP2PConnectionSocket(CSteamID steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay) { + InteropHelp.TestIfAvailableGameServer(); + return (SNetSocket_t)NativeMethods.ISteamGameServerNetworking_CreateP2PConnectionSocket(steamIDTarget, nVirtualPort, nTimeoutSec, bAllowUseOfPacketRelay); + } + + public static SNetSocket_t CreateConnectionSocket(uint nIP, ushort nPort, int nTimeoutSec) { + InteropHelp.TestIfAvailableGameServer(); + return (SNetSocket_t)NativeMethods.ISteamGameServerNetworking_CreateConnectionSocket(nIP, nPort, nTimeoutSec); + } + + /// + /// disconnects the connection to the socket, if any, and invalidates the handle + /// any unread data on the socket will be thrown away + /// if bNotifyRemoteEnd is set, socket will not be completely destroyed until the remote end acknowledges the disconnect + /// + public static bool DestroySocket(SNetSocket_t hSocket, bool bNotifyRemoteEnd) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerNetworking_DestroySocket(hSocket, bNotifyRemoteEnd); + } + + /// + /// destroying a listen socket will automatically kill all the regular sockets generated from it + /// + public static bool DestroyListenSocket(SNetListenSocket_t hSocket, bool bNotifyRemoteEnd) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerNetworking_DestroyListenSocket(hSocket, bNotifyRemoteEnd); + } + + /// + /// sending data + /// must be a handle to a connected socket + /// data is all sent via UDP, and thus send sizes are limited to 1200 bytes; after this, many routers will start dropping packets + /// use the reliable flag with caution; although the resend rate is pretty aggressive, + /// it can still cause stalls in receiving data (like TCP) + /// + public static bool SendDataOnSocket(SNetSocket_t hSocket, IntPtr pubData, uint cubData, bool bReliable) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerNetworking_SendDataOnSocket(hSocket, pubData, cubData, bReliable); + } + + /// + /// receiving data + /// returns false if there is no data remaining + /// fills out *pcubMsgSize with the size of the next message, in bytes + /// + public static bool IsDataAvailableOnSocket(SNetSocket_t hSocket, out uint pcubMsgSize) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerNetworking_IsDataAvailableOnSocket(hSocket, out pcubMsgSize); + } + + /// + /// fills in pubDest with the contents of the message + /// messages are always complete, of the same size as was sent (i.e. packetized, not streaming) + /// if *pcubMsgSize < cubDest, only partial data is written + /// returns false if no data is available + /// + public static bool RetrieveDataFromSocket(SNetSocket_t hSocket, IntPtr pubDest, uint cubDest, out uint pcubMsgSize) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerNetworking_RetrieveDataFromSocket(hSocket, pubDest, cubDest, out pcubMsgSize); + } + + /// + /// checks for data from any socket that has been connected off this listen socket + /// returns false if there is no data remaining + /// fills out *pcubMsgSize with the size of the next message, in bytes + /// fills out *phSocket with the socket that data is available on + /// + public static bool IsDataAvailable(SNetListenSocket_t hListenSocket, out uint pcubMsgSize, out SNetSocket_t phSocket) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerNetworking_IsDataAvailable(hListenSocket, out pcubMsgSize, out phSocket); + } + + /// + /// retrieves data from any socket that has been connected off this listen socket + /// fills in pubDest with the contents of the message + /// messages are always complete, of the same size as was sent (i.e. packetized, not streaming) + /// if *pcubMsgSize < cubDest, only partial data is written + /// returns false if no data is available + /// fills out *phSocket with the socket that data is available on + /// + public static bool RetrieveData(SNetListenSocket_t hListenSocket, IntPtr pubDest, uint cubDest, out uint pcubMsgSize, out SNetSocket_t phSocket) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerNetworking_RetrieveData(hListenSocket, pubDest, cubDest, out pcubMsgSize, out phSocket); + } + + /// + /// returns information about the specified socket, filling out the contents of the pointers + /// + public static bool GetSocketInfo(SNetSocket_t hSocket, out CSteamID pSteamIDRemote, out int peSocketStatus, out uint punIPRemote, out ushort punPortRemote) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerNetworking_GetSocketInfo(hSocket, out pSteamIDRemote, out peSocketStatus, out punIPRemote, out punPortRemote); + } + + /// + /// returns which local port the listen socket is bound to + /// *pnIP and *pnPort will be 0 if the socket is set to listen for P2P connections only + /// + public static bool GetListenSocketInfo(SNetListenSocket_t hListenSocket, out uint pnIP, out ushort pnPort) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerNetworking_GetListenSocketInfo(hListenSocket, out pnIP, out pnPort); + } + + /// + /// returns true to describe how the socket ended up connecting + /// + public static ESNetSocketConnectionType GetSocketConnectionType(SNetSocket_t hSocket) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerNetworking_GetSocketConnectionType(hSocket); + } + + /// + /// max packet size, in bytes + /// + public static int GetMaxPacketSize(SNetSocket_t hSocket) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerNetworking_GetMaxPacketSize(hSocket); + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamgameservernetworking.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamgameservernetworking.cs.meta new file mode 100644 index 0000000..435b9f0 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamgameservernetworking.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: bde3f17733684b24aa6d22c8310cf66c +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamgameserverstats.cs b/Assets/Editor/Steamworks.NET/autogen/isteamgameserverstats.cs new file mode 100644 index 0000000..aa45752 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamgameserverstats.cs @@ -0,0 +1,102 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamGameServerStats { + /// + /// downloads stats for the user + /// returns a GSStatsReceived_t callback when completed + /// if the user has no stats, GSStatsReceived_t.m_eResult will be set to k_EResultFail + /// these stats will only be auto-updated for clients playing on the server. For other + /// users you'll need to call RequestUserStats() again to refresh any data + /// + public static SteamAPICall_t RequestUserStats(CSteamID steamIDUser) { + InteropHelp.TestIfAvailableGameServer(); + return (SteamAPICall_t)NativeMethods.ISteamGameServerStats_RequestUserStats(steamIDUser); + } + + /// + /// requests stat information for a user, usable after a successful call to RequestUserStats() + /// + public static bool GetUserStat(CSteamID steamIDUser, string pchName, out int pData) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamGameServerStats_GetUserStat(steamIDUser, pchName2, out pData); + } + } + + public static bool GetUserStat(CSteamID steamIDUser, string pchName, out float pData) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamGameServerStats_GetUserStat_(steamIDUser, pchName2, out pData); + } + } + + public static bool GetUserAchievement(CSteamID steamIDUser, string pchName, out bool pbAchieved) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamGameServerStats_GetUserAchievement(steamIDUser, pchName2, out pbAchieved); + } + } + + /// + /// Set / update stats and achievements. + /// Note: These updates will work only on stats game servers are allowed to edit and only for + /// game servers that have been declared as officially controlled by the game creators. + /// Set the IP range of your official servers on the Steamworks page + /// + public static bool SetUserStat(CSteamID steamIDUser, string pchName, int nData) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamGameServerStats_SetUserStat(steamIDUser, pchName2, nData); + } + } + + public static bool SetUserStat(CSteamID steamIDUser, string pchName, float fData) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamGameServerStats_SetUserStat_(steamIDUser, pchName2, fData); + } + } + + public static bool UpdateUserAvgRateStat(CSteamID steamIDUser, string pchName, float flCountThisSession, double dSessionLength) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamGameServerStats_UpdateUserAvgRateStat(steamIDUser, pchName2, flCountThisSession, dSessionLength); + } + } + + public static bool SetUserAchievement(CSteamID steamIDUser, string pchName) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamGameServerStats_SetUserAchievement(steamIDUser, pchName2); + } + } + + public static bool ClearUserAchievement(CSteamID steamIDUser, string pchName) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamGameServerStats_ClearUserAchievement(steamIDUser, pchName2); + } + } + + /// + /// Store the current data on the server, will get a GSStatsStored_t callback when set. + /// If the callback has a result of k_EResultInvalidParam, one or more stats + /// uploaded has been rejected, either because they broke constraints + /// or were out of date. In this case the server sends back updated values. + /// The stats should be re-iterated to keep in sync. + /// + public static SteamAPICall_t StoreUserStats(CSteamID steamIDUser) { + InteropHelp.TestIfAvailableGameServer(); + return (SteamAPICall_t)NativeMethods.ISteamGameServerStats_StoreUserStats(steamIDUser); + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamgameserverstats.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamgameserverstats.cs.meta new file mode 100644 index 0000000..6787c6b --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamgameserverstats.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b47300d53ac5ed349a085479c69e8a90 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamgameserverugc.cs b/Assets/Editor/Steamworks.NET/autogen/isteamgameserverugc.cs new file mode 100644 index 0000000..6522357 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamgameserverugc.cs @@ -0,0 +1,448 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamGameServerUGC { + /// + /// Query UGC associated with a user. Creator app id or consumer app id must be valid and be set to the current running app. unPage should start at 1. + /// + public static UGCQueryHandle_t CreateQueryUserUGCRequest(AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint unPage) { + InteropHelp.TestIfAvailableGameServer(); + return (UGCQueryHandle_t)NativeMethods.ISteamGameServerUGC_CreateQueryUserUGCRequest(unAccountID, eListType, eMatchingUGCType, eSortOrder, nCreatorAppID, nConsumerAppID, unPage); + } + + /// + /// Query for all matching UGC. Creator app id or consumer app id must be valid and be set to the current running app. unPage should start at 1. + /// + public static UGCQueryHandle_t CreateQueryAllUGCRequest(EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint unPage) { + InteropHelp.TestIfAvailableGameServer(); + return (UGCQueryHandle_t)NativeMethods.ISteamGameServerUGC_CreateQueryAllUGCRequest(eQueryType, eMatchingeMatchingUGCTypeFileType, nCreatorAppID, nConsumerAppID, unPage); + } + + /// + /// Query for the details of the given published file ids (the RequestUGCDetails call is deprecated and replaced with this) + /// + public static UGCQueryHandle_t CreateQueryUGCDetailsRequest(PublishedFileId_t[] pvecPublishedFileID, uint unNumPublishedFileIDs) { + InteropHelp.TestIfAvailableGameServer(); + return (UGCQueryHandle_t)NativeMethods.ISteamGameServerUGC_CreateQueryUGCDetailsRequest(pvecPublishedFileID, unNumPublishedFileIDs); + } + + /// + /// Send the query to Steam + /// + public static SteamAPICall_t SendQueryUGCRequest(UGCQueryHandle_t handle) { + InteropHelp.TestIfAvailableGameServer(); + return (SteamAPICall_t)NativeMethods.ISteamGameServerUGC_SendQueryUGCRequest(handle); + } + + /// + /// Retrieve an individual result after receiving the callback for querying UGC + /// + public static bool GetQueryUGCResult(UGCQueryHandle_t handle, uint index, out SteamUGCDetails_t pDetails) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_GetQueryUGCResult(handle, index, out pDetails); + } + + public static bool GetQueryUGCPreviewURL(UGCQueryHandle_t handle, uint index, out string pchURL, uint cchURLSize) { + InteropHelp.TestIfAvailableGameServer(); + IntPtr pchURL2 = Marshal.AllocHGlobal((int)cchURLSize); + bool ret = NativeMethods.ISteamGameServerUGC_GetQueryUGCPreviewURL(handle, index, pchURL2, cchURLSize); + pchURL = ret ? InteropHelp.PtrToStringUTF8(pchURL2) : null; + Marshal.FreeHGlobal(pchURL2); + return ret; + } + + public static bool GetQueryUGCMetadata(UGCQueryHandle_t handle, uint index, out string pchMetadata, uint cchMetadatasize) { + InteropHelp.TestIfAvailableGameServer(); + IntPtr pchMetadata2 = Marshal.AllocHGlobal((int)cchMetadatasize); + bool ret = NativeMethods.ISteamGameServerUGC_GetQueryUGCMetadata(handle, index, pchMetadata2, cchMetadatasize); + pchMetadata = ret ? InteropHelp.PtrToStringUTF8(pchMetadata2) : null; + Marshal.FreeHGlobal(pchMetadata2); + return ret; + } + + public static bool GetQueryUGCChildren(UGCQueryHandle_t handle, uint index, PublishedFileId_t[] pvecPublishedFileID, uint cMaxEntries) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_GetQueryUGCChildren(handle, index, pvecPublishedFileID, cMaxEntries); + } + + public static bool GetQueryUGCStatistic(UGCQueryHandle_t handle, uint index, EItemStatistic eStatType, out uint pStatValue) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_GetQueryUGCStatistic(handle, index, eStatType, out pStatValue); + } + + public static uint GetQueryUGCNumAdditionalPreviews(UGCQueryHandle_t handle, uint index) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_GetQueryUGCNumAdditionalPreviews(handle, index); + } + + public static bool GetQueryUGCAdditionalPreview(UGCQueryHandle_t handle, uint index, uint previewIndex, out string pchURLOrVideoID, uint cchURLSize, out bool pbIsImage) { + InteropHelp.TestIfAvailableGameServer(); + IntPtr pchURLOrVideoID2 = Marshal.AllocHGlobal((int)cchURLSize); + bool ret = NativeMethods.ISteamGameServerUGC_GetQueryUGCAdditionalPreview(handle, index, previewIndex, pchURLOrVideoID2, cchURLSize, out pbIsImage); + pchURLOrVideoID = ret ? InteropHelp.PtrToStringUTF8(pchURLOrVideoID2) : null; + Marshal.FreeHGlobal(pchURLOrVideoID2); + return ret; + } + + public static uint GetQueryUGCNumKeyValueTags(UGCQueryHandle_t handle, uint index) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_GetQueryUGCNumKeyValueTags(handle, index); + } + + public static bool GetQueryUGCKeyValueTag(UGCQueryHandle_t handle, uint index, uint keyValueTagIndex, out string pchKey, uint cchKeySize, out string pchValue, uint cchValueSize) { + InteropHelp.TestIfAvailableGameServer(); + IntPtr pchKey2 = Marshal.AllocHGlobal((int)cchKeySize); + IntPtr pchValue2 = Marshal.AllocHGlobal((int)cchValueSize); + bool ret = NativeMethods.ISteamGameServerUGC_GetQueryUGCKeyValueTag(handle, index, keyValueTagIndex, pchKey2, cchKeySize, pchValue2, cchValueSize); + pchKey = ret ? InteropHelp.PtrToStringUTF8(pchKey2) : null; + Marshal.FreeHGlobal(pchKey2); + pchValue = ret ? InteropHelp.PtrToStringUTF8(pchValue2) : null; + Marshal.FreeHGlobal(pchValue2); + return ret; + } + + /// + /// Release the request to free up memory, after retrieving results + /// + public static bool ReleaseQueryUGCRequest(UGCQueryHandle_t handle) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_ReleaseQueryUGCRequest(handle); + } + + /// + /// Options to set for querying UGC + /// + public static bool AddRequiredTag(UGCQueryHandle_t handle, string pTagName) { + InteropHelp.TestIfAvailableGameServer(); + using (var pTagName2 = new InteropHelp.UTF8StringHandle(pTagName)) { + return NativeMethods.ISteamGameServerUGC_AddRequiredTag(handle, pTagName2); + } + } + + public static bool AddExcludedTag(UGCQueryHandle_t handle, string pTagName) { + InteropHelp.TestIfAvailableGameServer(); + using (var pTagName2 = new InteropHelp.UTF8StringHandle(pTagName)) { + return NativeMethods.ISteamGameServerUGC_AddExcludedTag(handle, pTagName2); + } + } + + public static bool SetReturnKeyValueTags(UGCQueryHandle_t handle, bool bReturnKeyValueTags) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_SetReturnKeyValueTags(handle, bReturnKeyValueTags); + } + + public static bool SetReturnLongDescription(UGCQueryHandle_t handle, bool bReturnLongDescription) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_SetReturnLongDescription(handle, bReturnLongDescription); + } + + public static bool SetReturnMetadata(UGCQueryHandle_t handle, bool bReturnMetadata) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_SetReturnMetadata(handle, bReturnMetadata); + } + + public static bool SetReturnChildren(UGCQueryHandle_t handle, bool bReturnChildren) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_SetReturnChildren(handle, bReturnChildren); + } + + public static bool SetReturnAdditionalPreviews(UGCQueryHandle_t handle, bool bReturnAdditionalPreviews) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_SetReturnAdditionalPreviews(handle, bReturnAdditionalPreviews); + } + + public static bool SetReturnTotalOnly(UGCQueryHandle_t handle, bool bReturnTotalOnly) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_SetReturnTotalOnly(handle, bReturnTotalOnly); + } + + public static bool SetLanguage(UGCQueryHandle_t handle, string pchLanguage) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchLanguage2 = new InteropHelp.UTF8StringHandle(pchLanguage)) { + return NativeMethods.ISteamGameServerUGC_SetLanguage(handle, pchLanguage2); + } + } + + public static bool SetAllowCachedResponse(UGCQueryHandle_t handle, uint unMaxAgeSeconds) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_SetAllowCachedResponse(handle, unMaxAgeSeconds); + } + + /// + /// Options only for querying user UGC + /// + public static bool SetCloudFileNameFilter(UGCQueryHandle_t handle, string pMatchCloudFileName) { + InteropHelp.TestIfAvailableGameServer(); + using (var pMatchCloudFileName2 = new InteropHelp.UTF8StringHandle(pMatchCloudFileName)) { + return NativeMethods.ISteamGameServerUGC_SetCloudFileNameFilter(handle, pMatchCloudFileName2); + } + } + + /// + /// Options only for querying all UGC + /// + public static bool SetMatchAnyTag(UGCQueryHandle_t handle, bool bMatchAnyTag) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_SetMatchAnyTag(handle, bMatchAnyTag); + } + + public static bool SetSearchText(UGCQueryHandle_t handle, string pSearchText) { + InteropHelp.TestIfAvailableGameServer(); + using (var pSearchText2 = new InteropHelp.UTF8StringHandle(pSearchText)) { + return NativeMethods.ISteamGameServerUGC_SetSearchText(handle, pSearchText2); + } + } + + public static bool SetRankedByTrendDays(UGCQueryHandle_t handle, uint unDays) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_SetRankedByTrendDays(handle, unDays); + } + + public static bool AddRequiredKeyValueTag(UGCQueryHandle_t handle, string pKey, string pValue) { + InteropHelp.TestIfAvailableGameServer(); + using (var pKey2 = new InteropHelp.UTF8StringHandle(pKey)) + using (var pValue2 = new InteropHelp.UTF8StringHandle(pValue)) { + return NativeMethods.ISteamGameServerUGC_AddRequiredKeyValueTag(handle, pKey2, pValue2); + } + } + + /// + /// DEPRECATED - Use CreateQueryUGCDetailsRequest call above instead! + /// + public static SteamAPICall_t RequestUGCDetails(PublishedFileId_t nPublishedFileID, uint unMaxAgeSeconds) { + InteropHelp.TestIfAvailableGameServer(); + return (SteamAPICall_t)NativeMethods.ISteamGameServerUGC_RequestUGCDetails(nPublishedFileID, unMaxAgeSeconds); + } + + /// + /// Steam Workshop Creator API + /// create new item for this app with no content attached yet + /// + public static SteamAPICall_t CreateItem(AppId_t nConsumerAppId, EWorkshopFileType eFileType) { + InteropHelp.TestIfAvailableGameServer(); + return (SteamAPICall_t)NativeMethods.ISteamGameServerUGC_CreateItem(nConsumerAppId, eFileType); + } + + /// + /// start an UGC item update. Set changed properties before commiting update with CommitItemUpdate() + /// + public static UGCUpdateHandle_t StartItemUpdate(AppId_t nConsumerAppId, PublishedFileId_t nPublishedFileID) { + InteropHelp.TestIfAvailableGameServer(); + return (UGCUpdateHandle_t)NativeMethods.ISteamGameServerUGC_StartItemUpdate(nConsumerAppId, nPublishedFileID); + } + + /// + /// change the title of an UGC item + /// + public static bool SetItemTitle(UGCUpdateHandle_t handle, string pchTitle) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchTitle2 = new InteropHelp.UTF8StringHandle(pchTitle)) { + return NativeMethods.ISteamGameServerUGC_SetItemTitle(handle, pchTitle2); + } + } + + /// + /// change the description of an UGC item + /// + public static bool SetItemDescription(UGCUpdateHandle_t handle, string pchDescription) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchDescription2 = new InteropHelp.UTF8StringHandle(pchDescription)) { + return NativeMethods.ISteamGameServerUGC_SetItemDescription(handle, pchDescription2); + } + } + + /// + /// specify the language of the title or description that will be set + /// + public static bool SetItemUpdateLanguage(UGCUpdateHandle_t handle, string pchLanguage) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchLanguage2 = new InteropHelp.UTF8StringHandle(pchLanguage)) { + return NativeMethods.ISteamGameServerUGC_SetItemUpdateLanguage(handle, pchLanguage2); + } + } + + /// + /// change the metadata of an UGC item (max = k_cchDeveloperMetadataMax) + /// + public static bool SetItemMetadata(UGCUpdateHandle_t handle, string pchMetaData) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchMetaData2 = new InteropHelp.UTF8StringHandle(pchMetaData)) { + return NativeMethods.ISteamGameServerUGC_SetItemMetadata(handle, pchMetaData2); + } + } + + /// + /// change the visibility of an UGC item + /// + public static bool SetItemVisibility(UGCUpdateHandle_t handle, ERemoteStoragePublishedFileVisibility eVisibility) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_SetItemVisibility(handle, eVisibility); + } + + /// + /// change the tags of an UGC item + /// + public static bool SetItemTags(UGCUpdateHandle_t updateHandle, System.Collections.Generic.IList pTags) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_SetItemTags(updateHandle, new InteropHelp.SteamParamStringArray(pTags)); + } + + /// + /// update item content from this local folder + /// + public static bool SetItemContent(UGCUpdateHandle_t handle, string pszContentFolder) { + InteropHelp.TestIfAvailableGameServer(); + using (var pszContentFolder2 = new InteropHelp.UTF8StringHandle(pszContentFolder)) { + return NativeMethods.ISteamGameServerUGC_SetItemContent(handle, pszContentFolder2); + } + } + + /// + /// change preview image file for this item. pszPreviewFile points to local image file, which must be under 1MB in size + /// + public static bool SetItemPreview(UGCUpdateHandle_t handle, string pszPreviewFile) { + InteropHelp.TestIfAvailableGameServer(); + using (var pszPreviewFile2 = new InteropHelp.UTF8StringHandle(pszPreviewFile)) { + return NativeMethods.ISteamGameServerUGC_SetItemPreview(handle, pszPreviewFile2); + } + } + + /// + /// remove any existing key-value tags with the specified key + /// + public static bool RemoveItemKeyValueTags(UGCUpdateHandle_t handle, string pchKey) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchKey2 = new InteropHelp.UTF8StringHandle(pchKey)) { + return NativeMethods.ISteamGameServerUGC_RemoveItemKeyValueTags(handle, pchKey2); + } + } + + /// + /// add new key-value tags for the item. Note that there can be multiple values for a tag. + /// + public static bool AddItemKeyValueTag(UGCUpdateHandle_t handle, string pchKey, string pchValue) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchKey2 = new InteropHelp.UTF8StringHandle(pchKey)) + using (var pchValue2 = new InteropHelp.UTF8StringHandle(pchValue)) { + return NativeMethods.ISteamGameServerUGC_AddItemKeyValueTag(handle, pchKey2, pchValue2); + } + } + + /// + /// commit update process started with StartItemUpdate() + /// + public static SteamAPICall_t SubmitItemUpdate(UGCUpdateHandle_t handle, string pchChangeNote) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchChangeNote2 = new InteropHelp.UTF8StringHandle(pchChangeNote)) { + return (SteamAPICall_t)NativeMethods.ISteamGameServerUGC_SubmitItemUpdate(handle, pchChangeNote2); + } + } + + public static EItemUpdateStatus GetItemUpdateProgress(UGCUpdateHandle_t handle, out ulong punBytesProcessed, out ulong punBytesTotal) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_GetItemUpdateProgress(handle, out punBytesProcessed, out punBytesTotal); + } + + /// + /// Steam Workshop Consumer API + /// + public static SteamAPICall_t SetUserItemVote(PublishedFileId_t nPublishedFileID, bool bVoteUp) { + InteropHelp.TestIfAvailableGameServer(); + return (SteamAPICall_t)NativeMethods.ISteamGameServerUGC_SetUserItemVote(nPublishedFileID, bVoteUp); + } + + public static SteamAPICall_t GetUserItemVote(PublishedFileId_t nPublishedFileID) { + InteropHelp.TestIfAvailableGameServer(); + return (SteamAPICall_t)NativeMethods.ISteamGameServerUGC_GetUserItemVote(nPublishedFileID); + } + + public static SteamAPICall_t AddItemToFavorites(AppId_t nAppId, PublishedFileId_t nPublishedFileID) { + InteropHelp.TestIfAvailableGameServer(); + return (SteamAPICall_t)NativeMethods.ISteamGameServerUGC_AddItemToFavorites(nAppId, nPublishedFileID); + } + + public static SteamAPICall_t RemoveItemFromFavorites(AppId_t nAppId, PublishedFileId_t nPublishedFileID) { + InteropHelp.TestIfAvailableGameServer(); + return (SteamAPICall_t)NativeMethods.ISteamGameServerUGC_RemoveItemFromFavorites(nAppId, nPublishedFileID); + } + + /// + /// subscribe to this item, will be installed ASAP + /// + public static SteamAPICall_t SubscribeItem(PublishedFileId_t nPublishedFileID) { + InteropHelp.TestIfAvailableGameServer(); + return (SteamAPICall_t)NativeMethods.ISteamGameServerUGC_SubscribeItem(nPublishedFileID); + } + + /// + /// unsubscribe from this item, will be uninstalled after game quits + /// + public static SteamAPICall_t UnsubscribeItem(PublishedFileId_t nPublishedFileID) { + InteropHelp.TestIfAvailableGameServer(); + return (SteamAPICall_t)NativeMethods.ISteamGameServerUGC_UnsubscribeItem(nPublishedFileID); + } + + /// + /// number of subscribed items + /// + public static uint GetNumSubscribedItems() { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_GetNumSubscribedItems(); + } + + /// + /// all subscribed item PublishFileIDs + /// + public static uint GetSubscribedItems(PublishedFileId_t[] pvecPublishedFileID, uint cMaxEntries) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_GetSubscribedItems(pvecPublishedFileID, cMaxEntries); + } + + /// + /// get EItemState flags about item on this client + /// + public static uint GetItemState(PublishedFileId_t nPublishedFileID) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_GetItemState(nPublishedFileID); + } + + /// + /// get info about currently installed content on disc for items that have k_EItemStateInstalled set + /// if k_EItemStateLegacyItem is set, pchFolder contains the path to the legacy file itself (not a folder) + /// + public static bool GetItemInstallInfo(PublishedFileId_t nPublishedFileID, out ulong punSizeOnDisk, out string pchFolder, uint cchFolderSize, out uint punTimeStamp) { + InteropHelp.TestIfAvailableGameServer(); + IntPtr pchFolder2 = Marshal.AllocHGlobal((int)cchFolderSize); + bool ret = NativeMethods.ISteamGameServerUGC_GetItemInstallInfo(nPublishedFileID, out punSizeOnDisk, pchFolder2, cchFolderSize, out punTimeStamp); + pchFolder = ret ? InteropHelp.PtrToStringUTF8(pchFolder2) : null; + Marshal.FreeHGlobal(pchFolder2); + return ret; + } + + /// + /// get info about pending update for items that have k_EItemStateNeedsUpdate set. punBytesTotal will be valid after download started once + /// + public static bool GetItemDownloadInfo(PublishedFileId_t nPublishedFileID, out ulong punBytesDownloaded, out ulong punBytesTotal) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_GetItemDownloadInfo(nPublishedFileID, out punBytesDownloaded, out punBytesTotal); + } + + /// + /// download new or update already installed item. If function returns true, wait for DownloadItemResult_t. If the item is already installed, + /// then files on disk should not be used until callback received. If item is not subscribed to, it will be cached for some time. + /// If bHighPriority is set, any other item download will be suspended and this item downloaded ASAP. + /// + public static bool DownloadItem(PublishedFileId_t nPublishedFileID, bool bHighPriority) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUGC_DownloadItem(nPublishedFileID, bHighPriority); + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamgameserverugc.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamgameserverugc.cs.meta new file mode 100644 index 0000000..7e94dc6 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamgameserverugc.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 49327dbee45c3ba448f5f2dde0726ce6 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamgameserverutils.cs b/Assets/Editor/Steamworks.NET/autogen/isteamgameserverutils.cs new file mode 100644 index 0000000..762039f --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamgameserverutils.cs @@ -0,0 +1,273 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamGameServerUtils { + /// + /// return the number of seconds since the user + /// + public static uint GetSecondsSinceAppActive() { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUtils_GetSecondsSinceAppActive(); + } + + public static uint GetSecondsSinceComputerActive() { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUtils_GetSecondsSinceComputerActive(); + } + + /// + /// the universe this client is connecting to + /// + public static EUniverse GetConnectedUniverse() { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUtils_GetConnectedUniverse(); + } + + /// + /// Steam server time - in PST, number of seconds since January 1, 1970 (i.e unix time) + /// + public static uint GetServerRealTime() { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUtils_GetServerRealTime(); + } + + /// + /// returns the 2 digit ISO 3166-1-alpha-2 format country code this client is running in (as looked up via an IP-to-location database) + /// e.g "US" or "UK". + /// + public static string GetIPCountry() { + InteropHelp.TestIfAvailableGameServer(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamGameServerUtils_GetIPCountry()); + } + + /// + /// returns true if the image exists, and valid sizes were filled out + /// + public static bool GetImageSize(int iImage, out uint pnWidth, out uint pnHeight) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUtils_GetImageSize(iImage, out pnWidth, out pnHeight); + } + + /// + /// returns true if the image exists, and the buffer was successfully filled out + /// results are returned in RGBA format + /// the destination buffer size should be 4 * height * width * sizeof(char) + /// + public static bool GetImageRGBA(int iImage, byte[] pubDest, int nDestBufferSize) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUtils_GetImageRGBA(iImage, pubDest, nDestBufferSize); + } + + /// + /// returns the IP of the reporting server for valve - currently only used in Source engine games + /// + public static bool GetCSERIPPort(out uint unIP, out ushort usPort) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUtils_GetCSERIPPort(out unIP, out usPort); + } + + /// + /// return the amount of battery power left in the current system in % [0..100], 255 for being on AC power + /// + public static byte GetCurrentBatteryPower() { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUtils_GetCurrentBatteryPower(); + } + + /// + /// returns the appID of the current process + /// + public static AppId_t GetAppID() { + InteropHelp.TestIfAvailableGameServer(); + return (AppId_t)NativeMethods.ISteamGameServerUtils_GetAppID(); + } + + /// + /// Sets the position where the overlay instance for the currently calling game should show notifications. + /// This position is per-game and if this function is called from outside of a game context it will do nothing. + /// + public static void SetOverlayNotificationPosition(ENotificationPosition eNotificationPosition) { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamGameServerUtils_SetOverlayNotificationPosition(eNotificationPosition); + } + + /// + /// API asynchronous call results + /// can be used directly, but more commonly used via the callback dispatch API (see steam_api.h) + /// + public static bool IsAPICallCompleted(SteamAPICall_t hSteamAPICall, out bool pbFailed) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUtils_IsAPICallCompleted(hSteamAPICall, out pbFailed); + } + + public static ESteamAPICallFailure GetAPICallFailureReason(SteamAPICall_t hSteamAPICall) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUtils_GetAPICallFailureReason(hSteamAPICall); + } + + public static bool GetAPICallResult(SteamAPICall_t hSteamAPICall, IntPtr pCallback, int cubCallback, int iCallbackExpected, out bool pbFailed) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUtils_GetAPICallResult(hSteamAPICall, pCallback, cubCallback, iCallbackExpected, out pbFailed); + } + + /// + /// this needs to be called every frame to process matchmaking results + /// redundant if you're already calling SteamAPI_RunCallbacks() + /// + public static void RunFrame() { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamGameServerUtils_RunFrame(); + } + + /// + /// returns the number of IPC calls made since the last time this function was called + /// Used for perf debugging so you can understand how many IPC calls your game makes per frame + /// Every IPC call is at minimum a thread context switch if not a process one so you want to rate + /// control how often you do them. + /// + public static uint GetIPCCallCount() { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUtils_GetIPCCallCount(); + } + + /// + /// API warning handling + /// 'int' is the severity; 0 for msg, 1 for warning + /// 'const char *' is the text of the message + /// callbacks will occur directly after the API function is called that generated the warning or message + /// + public static void SetWarningMessageHook(SteamAPIWarningMessageHook_t pFunction) { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamGameServerUtils_SetWarningMessageHook(pFunction); + } + + /// + /// Returns true if the overlay is running & the user can access it. The overlay process could take a few seconds to + /// start & hook the game process, so this function will initially return false while the overlay is loading. + /// + public static bool IsOverlayEnabled() { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUtils_IsOverlayEnabled(); + } + + /// + /// Normally this call is unneeded if your game has a constantly running frame loop that calls the + /// D3D Present API, or OGL SwapBuffers API every frame. + /// However, if you have a game that only refreshes the screen on an event driven basis then that can break + /// the overlay, as it uses your Present/SwapBuffers calls to drive it's internal frame loop and it may also + /// need to Present() to the screen any time an even needing a notification happens or when the overlay is + /// brought up over the game by a user. You can use this API to ask the overlay if it currently need a present + /// in that case, and then you can check for this periodically (roughly 33hz is desirable) and make sure you + /// refresh the screen with Present or SwapBuffers to allow the overlay to do it's work. + /// + public static bool BOverlayNeedsPresent() { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUtils_BOverlayNeedsPresent(); + } +#if !_PS3 + /// + /// Asynchronous call to check if an executable file has been signed using the public key set on the signing tab + /// of the partner site, for example to refuse to load modified executable files. + /// The result is returned in CheckFileSignature_t. + /// k_ECheckFileSignatureNoSignaturesFoundForThisApp - This app has not been configured on the signing tab of the partner site to enable this function. + /// k_ECheckFileSignatureNoSignaturesFoundForThisFile - This file is not listed on the signing tab for the partner site. + /// k_ECheckFileSignatureFileNotFound - The file does not exist on disk. + /// k_ECheckFileSignatureInvalidSignature - The file exists, and the signing tab has been set for this file, but the file is either not signed or the signature does not match. + /// k_ECheckFileSignatureValidSignature - The file is signed and the signature is valid. + /// + public static SteamAPICall_t CheckFileSignature(string szFileName) { + InteropHelp.TestIfAvailableGameServer(); + using (var szFileName2 = new InteropHelp.UTF8StringHandle(szFileName)) { + return (SteamAPICall_t)NativeMethods.ISteamGameServerUtils_CheckFileSignature(szFileName2); + } + } +#endif +#if _PS3 + public static void PostPS3SysutilCallback(ulong status, ulong param, IntPtr userdata) { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamGameServerUtils_PostPS3SysutilCallback(status, param, userdata); + } + + public static bool BIsReadyToShutdown() { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUtils_BIsReadyToShutdown(); + } + + public static bool BIsPSNOnline() { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUtils_BIsPSNOnline(); + } + + /// + /// Call this with localized strings for the language the game is running in, otherwise default english + /// strings will be used by Steam. + /// + public static void SetPSNGameBootInviteStrings(string pchSubject, string pchBody) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchSubject2 = new InteropHelp.UTF8StringHandle(pchSubject)) + using (var pchBody2 = new InteropHelp.UTF8StringHandle(pchBody)) { + NativeMethods.ISteamGameServerUtils_SetPSNGameBootInviteStrings(pchSubject2, pchBody2); + } + } +#endif + /// + /// Activates the Big Picture text input dialog which only supports gamepad input + /// + public static bool ShowGamepadTextInput(EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, string pchDescription, uint unCharMax, string pchExistingText) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchDescription2 = new InteropHelp.UTF8StringHandle(pchDescription)) + using (var pchExistingText2 = new InteropHelp.UTF8StringHandle(pchExistingText)) { + return NativeMethods.ISteamGameServerUtils_ShowGamepadTextInput(eInputMode, eLineInputMode, pchDescription2, unCharMax, pchExistingText2); + } + } + + /// + /// Returns previously entered text & length + /// + public static uint GetEnteredGamepadTextLength() { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUtils_GetEnteredGamepadTextLength(); + } + + public static bool GetEnteredGamepadTextInput(out string pchText, uint cchText) { + InteropHelp.TestIfAvailableGameServer(); + IntPtr pchText2 = Marshal.AllocHGlobal((int)cchText); + bool ret = NativeMethods.ISteamGameServerUtils_GetEnteredGamepadTextInput(pchText2, cchText); + pchText = ret ? InteropHelp.PtrToStringUTF8(pchText2) : null; + Marshal.FreeHGlobal(pchText2); + return ret; + } + + /// + /// returns the language the steam client is running in, you probably want ISteamApps::GetCurrentGameLanguage instead, this is for very special usage cases + /// + public static string GetSteamUILanguage() { + InteropHelp.TestIfAvailableGameServer(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamGameServerUtils_GetSteamUILanguage()); + } + + /// + /// returns true if Steam itself is running in VR mode + /// + public static bool IsSteamRunningInVR() { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamGameServerUtils_IsSteamRunningInVR(); + } + + /// + /// Sets the inset of the overlay notification from the corner specified by SetOverlayNotificationPosition. + /// + public static void SetOverlayNotificationInset(int nHorizontalInset, int nVerticalInset) { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamGameServerUtils_SetOverlayNotificationInset(nHorizontalInset, nVerticalInset); + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamgameserverutils.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamgameserverutils.cs.meta new file mode 100644 index 0000000..04f716e --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamgameserverutils.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 63b481ca9b9c2d641b2d84ae29efaa7e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamhtmlsurface.cs b/Assets/Editor/Steamworks.NET/autogen/isteamhtmlsurface.cs new file mode 100644 index 0000000..80412e6 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamhtmlsurface.cs @@ -0,0 +1,310 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamHTMLSurface { + /// + /// Must call init and shutdown when starting/ending use of the interface + /// + public static bool Init() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamHTMLSurface_Init(); + } + + public static bool Shutdown() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamHTMLSurface_Shutdown(); + } + + /// + /// Create a browser object for display of a html page, when creation is complete the call handle + /// will return a HTML_BrowserReady_t callback for the HHTMLBrowser of your new browser. + /// The user agent string is a substring to be added to the general user agent string so you can + /// identify your client on web servers. + /// The userCSS string lets you apply a CSS style sheet to every displayed page, leave null if + /// you do not require this functionality. + /// + public static SteamAPICall_t CreateBrowser(string pchUserAgent, string pchUserCSS) { + InteropHelp.TestIfAvailableClient(); + using (var pchUserAgent2 = new InteropHelp.UTF8StringHandle(pchUserAgent)) + using (var pchUserCSS2 = new InteropHelp.UTF8StringHandle(pchUserCSS)) { + return (SteamAPICall_t)NativeMethods.ISteamHTMLSurface_CreateBrowser(pchUserAgent2, pchUserCSS2); + } + } + + /// + /// Call this when you are done with a html surface, this lets us free the resources being used by it + /// + public static void RemoveBrowser(HHTMLBrowser unBrowserHandle) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_RemoveBrowser(unBrowserHandle); + } + + /// + /// Navigate to this URL, results in a HTML_StartRequest_t as the request commences + /// + public static void LoadURL(HHTMLBrowser unBrowserHandle, string pchURL, string pchPostData) { + InteropHelp.TestIfAvailableClient(); + using (var pchURL2 = new InteropHelp.UTF8StringHandle(pchURL)) + using (var pchPostData2 = new InteropHelp.UTF8StringHandle(pchPostData)) { + NativeMethods.ISteamHTMLSurface_LoadURL(unBrowserHandle, pchURL2, pchPostData2); + } + } + + /// + /// Tells the surface the size in pixels to display the surface + /// + public static void SetSize(HHTMLBrowser unBrowserHandle, uint unWidth, uint unHeight) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_SetSize(unBrowserHandle, unWidth, unHeight); + } + + /// + /// Stop the load of the current html page + /// + public static void StopLoad(HHTMLBrowser unBrowserHandle) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_StopLoad(unBrowserHandle); + } + + /// + /// Reload (most likely from local cache) the current page + /// + public static void Reload(HHTMLBrowser unBrowserHandle) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_Reload(unBrowserHandle); + } + + /// + /// navigate back in the page history + /// + public static void GoBack(HHTMLBrowser unBrowserHandle) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_GoBack(unBrowserHandle); + } + + /// + /// navigate forward in the page history + /// + public static void GoForward(HHTMLBrowser unBrowserHandle) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_GoForward(unBrowserHandle); + } + + /// + /// add this header to any url requests from this browser + /// + public static void AddHeader(HHTMLBrowser unBrowserHandle, string pchKey, string pchValue) { + InteropHelp.TestIfAvailableClient(); + using (var pchKey2 = new InteropHelp.UTF8StringHandle(pchKey)) + using (var pchValue2 = new InteropHelp.UTF8StringHandle(pchValue)) { + NativeMethods.ISteamHTMLSurface_AddHeader(unBrowserHandle, pchKey2, pchValue2); + } + } + + /// + /// run this javascript script in the currently loaded page + /// + public static void ExecuteJavascript(HHTMLBrowser unBrowserHandle, string pchScript) { + InteropHelp.TestIfAvailableClient(); + using (var pchScript2 = new InteropHelp.UTF8StringHandle(pchScript)) { + NativeMethods.ISteamHTMLSurface_ExecuteJavascript(unBrowserHandle, pchScript2); + } + } + + /// + /// Mouse click and mouse movement commands + /// + public static void MouseUp(HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_MouseUp(unBrowserHandle, eMouseButton); + } + + public static void MouseDown(HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_MouseDown(unBrowserHandle, eMouseButton); + } + + public static void MouseDoubleClick(HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_MouseDoubleClick(unBrowserHandle, eMouseButton); + } + + /// + /// x and y are relative to the HTML bounds + /// + public static void MouseMove(HHTMLBrowser unBrowserHandle, int x, int y) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_MouseMove(unBrowserHandle, x, y); + } + + /// + /// nDelta is pixels of scroll + /// + public static void MouseWheel(HHTMLBrowser unBrowserHandle, int nDelta) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_MouseWheel(unBrowserHandle, nDelta); + } + + /// + /// keyboard interactions, native keycode is the virtual key code value from your OS + /// + public static void KeyDown(HHTMLBrowser unBrowserHandle, uint nNativeKeyCode, EHTMLKeyModifiers eHTMLKeyModifiers) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_KeyDown(unBrowserHandle, nNativeKeyCode, eHTMLKeyModifiers); + } + + public static void KeyUp(HHTMLBrowser unBrowserHandle, uint nNativeKeyCode, EHTMLKeyModifiers eHTMLKeyModifiers) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_KeyUp(unBrowserHandle, nNativeKeyCode, eHTMLKeyModifiers); + } + + /// + /// cUnicodeChar is the unicode character point for this keypress (and potentially multiple chars per press) + /// + public static void KeyChar(HHTMLBrowser unBrowserHandle, uint cUnicodeChar, EHTMLKeyModifiers eHTMLKeyModifiers) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_KeyChar(unBrowserHandle, cUnicodeChar, eHTMLKeyModifiers); + } + + /// + /// programmatically scroll this many pixels on the page + /// + public static void SetHorizontalScroll(HHTMLBrowser unBrowserHandle, uint nAbsolutePixelScroll) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_SetHorizontalScroll(unBrowserHandle, nAbsolutePixelScroll); + } + + public static void SetVerticalScroll(HHTMLBrowser unBrowserHandle, uint nAbsolutePixelScroll) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_SetVerticalScroll(unBrowserHandle, nAbsolutePixelScroll); + } + + /// + /// tell the html control if it has key focus currently, controls showing the I-beam cursor in text controls amongst other things + /// + public static void SetKeyFocus(HHTMLBrowser unBrowserHandle, bool bHasKeyFocus) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_SetKeyFocus(unBrowserHandle, bHasKeyFocus); + } + + /// + /// open the current pages html code in the local editor of choice, used for debugging + /// + public static void ViewSource(HHTMLBrowser unBrowserHandle) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_ViewSource(unBrowserHandle); + } + + /// + /// copy the currently selected text on the html page to the local clipboard + /// + public static void CopyToClipboard(HHTMLBrowser unBrowserHandle) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_CopyToClipboard(unBrowserHandle); + } + + /// + /// paste from the local clipboard to the current html page + /// + public static void PasteFromClipboard(HHTMLBrowser unBrowserHandle) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_PasteFromClipboard(unBrowserHandle); + } + + /// + /// find this string in the browser, if bCurrentlyInFind is true then instead cycle to the next matching element + /// + public static void Find(HHTMLBrowser unBrowserHandle, string pchSearchStr, bool bCurrentlyInFind, bool bReverse) { + InteropHelp.TestIfAvailableClient(); + using (var pchSearchStr2 = new InteropHelp.UTF8StringHandle(pchSearchStr)) { + NativeMethods.ISteamHTMLSurface_Find(unBrowserHandle, pchSearchStr2, bCurrentlyInFind, bReverse); + } + } + + /// + /// cancel a currently running find + /// + public static void StopFind(HHTMLBrowser unBrowserHandle) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_StopFind(unBrowserHandle); + } + + /// + /// return details about the link at position x,y on the current page + /// + public static void GetLinkAtPosition(HHTMLBrowser unBrowserHandle, int x, int y) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_GetLinkAtPosition(unBrowserHandle, x, y); + } + + /// + /// set a webcookie for the hostname in question + /// + public static void SetCookie(string pchHostname, string pchKey, string pchValue, string pchPath = "/", uint nExpires = 0, bool bSecure = false, bool bHTTPOnly = false) { + InteropHelp.TestIfAvailableClient(); + using (var pchHostname2 = new InteropHelp.UTF8StringHandle(pchHostname)) + using (var pchKey2 = new InteropHelp.UTF8StringHandle(pchKey)) + using (var pchValue2 = new InteropHelp.UTF8StringHandle(pchValue)) + using (var pchPath2 = new InteropHelp.UTF8StringHandle(pchPath)) { + NativeMethods.ISteamHTMLSurface_SetCookie(pchHostname2, pchKey2, pchValue2, pchPath2, nExpires, bSecure, bHTTPOnly); + } + } + + /// + /// Zoom the current page by flZoom ( from 0.0 to 2.0, so to zoom to 120% use 1.2 ), zooming around point X,Y in the page (use 0,0 if you don't care) + /// + public static void SetPageScaleFactor(HHTMLBrowser unBrowserHandle, float flZoom, int nPointX, int nPointY) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_SetPageScaleFactor(unBrowserHandle, flZoom, nPointX, nPointY); + } + + /// + /// Enable/disable low-resource background mode, where javascript and repaint timers are throttled, resources are + /// more aggressively purged from memory, and audio/video elements are paused. When background mode is enabled, + /// all HTML5 video and audio objects will execute ".pause()" and gain the property "._steam_background_paused = 1". + /// When background mode is disabled, any video or audio objects with that property will resume with ".play()". + /// + public static void SetBackgroundMode(HHTMLBrowser unBrowserHandle, bool bBackgroundMode) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_SetBackgroundMode(unBrowserHandle, bBackgroundMode); + } + + /// + /// CALLBACKS + /// These set of functions are used as responses to callback requests + /// You MUST call this in response to a HTML_StartRequest_t callback + /// Set bAllowed to true to allow this navigation, false to cancel it and stay + /// on the current page. You can use this feature to limit the valid pages + /// allowed in your HTML surface. + /// + public static void AllowStartRequest(HHTMLBrowser unBrowserHandle, bool bAllowed) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_AllowStartRequest(unBrowserHandle, bAllowed); + } + + /// + /// You MUST call this in response to a HTML_JSAlert_t or HTML_JSConfirm_t callback + /// Set bResult to true for the OK option of a confirm, use false otherwise + /// + public static void JSDialogResponse(HHTMLBrowser unBrowserHandle, bool bResult) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_JSDialogResponse(unBrowserHandle, bResult); + } + + /// + /// You MUST call this in response to a HTML_FileOpenDialog_t callback + /// + public static void FileLoadDialogResponse(HHTMLBrowser unBrowserHandle, IntPtr pchSelectedFiles) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamHTMLSurface_FileLoadDialogResponse(unBrowserHandle, pchSelectedFiles); + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamhtmlsurface.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamhtmlsurface.cs.meta new file mode 100644 index 0000000..4168ca0 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamhtmlsurface.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: ef270addbf3b47b4a8e5acd1faf47834 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamhttp.cs b/Assets/Editor/Steamworks.NET/autogen/isteamhttp.cs new file mode 100644 index 0000000..bcaf4e0 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamhttp.cs @@ -0,0 +1,268 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamHTTP { + /// + /// Initializes a new HTTP request, returning a handle to use in further operations on it. Requires + /// the method (GET or POST) and the absolute URL for the request. Both http and https are supported, + /// so this string must start with http:// or https:// and should look like http://store.steampowered.com/app/250/ + /// or such. + /// + public static HTTPRequestHandle CreateHTTPRequest(EHTTPMethod eHTTPRequestMethod, string pchAbsoluteURL) { + InteropHelp.TestIfAvailableClient(); + using (var pchAbsoluteURL2 = new InteropHelp.UTF8StringHandle(pchAbsoluteURL)) { + return (HTTPRequestHandle)NativeMethods.ISteamHTTP_CreateHTTPRequest(eHTTPRequestMethod, pchAbsoluteURL2); + } + } + + /// + /// Set a context value for the request, which will be returned in the HTTPRequestCompleted_t callback after + /// sending the request. This is just so the caller can easily keep track of which callbacks go with which request data. + /// + public static bool SetHTTPRequestContextValue(HTTPRequestHandle hRequest, ulong ulContextValue) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamHTTP_SetHTTPRequestContextValue(hRequest, ulContextValue); + } + + /// + /// Set a timeout in seconds for the HTTP request, must be called prior to sending the request. Default + /// timeout is 60 seconds if you don't call this. Returns false if the handle is invalid, or the request + /// has already been sent. + /// + public static bool SetHTTPRequestNetworkActivityTimeout(HTTPRequestHandle hRequest, uint unTimeoutSeconds) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamHTTP_SetHTTPRequestNetworkActivityTimeout(hRequest, unTimeoutSeconds); + } + + /// + /// Set a request header value for the request, must be called prior to sending the request. Will + /// return false if the handle is invalid or the request is already sent. + /// + public static bool SetHTTPRequestHeaderValue(HTTPRequestHandle hRequest, string pchHeaderName, string pchHeaderValue) { + InteropHelp.TestIfAvailableClient(); + using (var pchHeaderName2 = new InteropHelp.UTF8StringHandle(pchHeaderName)) + using (var pchHeaderValue2 = new InteropHelp.UTF8StringHandle(pchHeaderValue)) { + return NativeMethods.ISteamHTTP_SetHTTPRequestHeaderValue(hRequest, pchHeaderName2, pchHeaderValue2); + } + } + + /// + /// Set a GET or POST parameter value on the request, which is set will depend on the EHTTPMethod specified + /// when creating the request. Must be called prior to sending the request. Will return false if the + /// handle is invalid or the request is already sent. + /// + public static bool SetHTTPRequestGetOrPostParameter(HTTPRequestHandle hRequest, string pchParamName, string pchParamValue) { + InteropHelp.TestIfAvailableClient(); + using (var pchParamName2 = new InteropHelp.UTF8StringHandle(pchParamName)) + using (var pchParamValue2 = new InteropHelp.UTF8StringHandle(pchParamValue)) { + return NativeMethods.ISteamHTTP_SetHTTPRequestGetOrPostParameter(hRequest, pchParamName2, pchParamValue2); + } + } + + /// + /// Sends the HTTP request, will return false on a bad handle, otherwise use SteamCallHandle to wait on + /// asynchronous response via callback. + /// Note: If the user is in offline mode in Steam, then this will add a only-if-cached cache-control + /// header and only do a local cache lookup rather than sending any actual remote request. + /// + public static bool SendHTTPRequest(HTTPRequestHandle hRequest, out SteamAPICall_t pCallHandle) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamHTTP_SendHTTPRequest(hRequest, out pCallHandle); + } + + /// + /// Sends the HTTP request, will return false on a bad handle, otherwise use SteamCallHandle to wait on + /// asynchronous response via callback for completion, and listen for HTTPRequestHeadersReceived_t and + /// HTTPRequestDataReceived_t callbacks while streaming. + /// + public static bool SendHTTPRequestAndStreamResponse(HTTPRequestHandle hRequest, out SteamAPICall_t pCallHandle) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamHTTP_SendHTTPRequestAndStreamResponse(hRequest, out pCallHandle); + } + + /// + /// Defers a request you have sent, the actual HTTP client code may have many requests queued, and this will move + /// the specified request to the tail of the queue. Returns false on invalid handle, or if the request is not yet sent. + /// + public static bool DeferHTTPRequest(HTTPRequestHandle hRequest) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamHTTP_DeferHTTPRequest(hRequest); + } + + /// + /// Prioritizes a request you have sent, the actual HTTP client code may have many requests queued, and this will move + /// the specified request to the head of the queue. Returns false on invalid handle, or if the request is not yet sent. + /// + public static bool PrioritizeHTTPRequest(HTTPRequestHandle hRequest) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamHTTP_PrioritizeHTTPRequest(hRequest); + } + + /// + /// Checks if a response header is present in a HTTP response given a handle from HTTPRequestCompleted_t, also + /// returns the size of the header value if present so the caller and allocate a correctly sized buffer for + /// GetHTTPResponseHeaderValue. + /// + public static bool GetHTTPResponseHeaderSize(HTTPRequestHandle hRequest, string pchHeaderName, out uint unResponseHeaderSize) { + InteropHelp.TestIfAvailableClient(); + using (var pchHeaderName2 = new InteropHelp.UTF8StringHandle(pchHeaderName)) { + return NativeMethods.ISteamHTTP_GetHTTPResponseHeaderSize(hRequest, pchHeaderName2, out unResponseHeaderSize); + } + } + + /// + /// Gets header values from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the + /// header is not present or if your buffer is too small to contain it's value. You should first call + /// BGetHTTPResponseHeaderSize to check for the presence of the header and to find out the size buffer needed. + /// + public static bool GetHTTPResponseHeaderValue(HTTPRequestHandle hRequest, string pchHeaderName, byte[] pHeaderValueBuffer, uint unBufferSize) { + InteropHelp.TestIfAvailableClient(); + using (var pchHeaderName2 = new InteropHelp.UTF8StringHandle(pchHeaderName)) { + return NativeMethods.ISteamHTTP_GetHTTPResponseHeaderValue(hRequest, pchHeaderName2, pHeaderValueBuffer, unBufferSize); + } + } + + /// + /// Gets the size of the body data from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the + /// handle is invalid. + /// + public static bool GetHTTPResponseBodySize(HTTPRequestHandle hRequest, out uint unBodySize) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamHTTP_GetHTTPResponseBodySize(hRequest, out unBodySize); + } + + /// + /// Gets the body data from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the + /// handle is invalid or is to a streaming response, or if the provided buffer is not the correct size. Use BGetHTTPResponseBodySize first to find out + /// the correct buffer size to use. + /// + public static bool GetHTTPResponseBodyData(HTTPRequestHandle hRequest, byte[] pBodyDataBuffer, uint unBufferSize) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamHTTP_GetHTTPResponseBodyData(hRequest, pBodyDataBuffer, unBufferSize); + } + + /// + /// Gets the body data from a streaming HTTP response given a handle from HTTPRequestDataReceived_t. Will return false if the + /// handle is invalid or is to a non-streaming response (meaning it wasn't sent with SendHTTPRequestAndStreamResponse), or if the buffer size and offset + /// do not match the size and offset sent in HTTPRequestDataReceived_t. + /// + public static bool GetHTTPStreamingResponseBodyData(HTTPRequestHandle hRequest, uint cOffset, byte[] pBodyDataBuffer, uint unBufferSize) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamHTTP_GetHTTPStreamingResponseBodyData(hRequest, cOffset, pBodyDataBuffer, unBufferSize); + } + + /// + /// Releases an HTTP response handle, should always be called to free resources after receiving a HTTPRequestCompleted_t + /// callback and finishing using the response. + /// + public static bool ReleaseHTTPRequest(HTTPRequestHandle hRequest) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamHTTP_ReleaseHTTPRequest(hRequest); + } + + /// + /// Gets progress on downloading the body for the request. This will be zero unless a response header has already been + /// received which included a content-length field. For responses that contain no content-length it will report + /// zero for the duration of the request as the size is unknown until the connection closes. + /// + public static bool GetHTTPDownloadProgressPct(HTTPRequestHandle hRequest, out float pflPercentOut) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamHTTP_GetHTTPDownloadProgressPct(hRequest, out pflPercentOut); + } + + /// + /// Sets the body for an HTTP Post request. Will fail and return false on a GET request, and will fail if POST params + /// have already been set for the request. Setting this raw body makes it the only contents for the post, the pchContentType + /// parameter will set the content-type header for the request so the server may know how to interpret the body. + /// + public static bool SetHTTPRequestRawPostBody(HTTPRequestHandle hRequest, string pchContentType, byte[] pubBody, uint unBodyLen) { + InteropHelp.TestIfAvailableClient(); + using (var pchContentType2 = new InteropHelp.UTF8StringHandle(pchContentType)) { + return NativeMethods.ISteamHTTP_SetHTTPRequestRawPostBody(hRequest, pchContentType2, pubBody, unBodyLen); + } + } + + /// + /// Creates a cookie container handle which you must later free with ReleaseCookieContainer(). If bAllowResponsesToModify=true + /// than any response to your requests using this cookie container may add new cookies which may be transmitted with + /// future requests. If bAllowResponsesToModify=false than only cookies you explicitly set will be sent. This API is just for + /// during process lifetime, after steam restarts no cookies are persisted and you have no way to access the cookie container across + /// repeat executions of your process. + /// + public static HTTPCookieContainerHandle CreateCookieContainer(bool bAllowResponsesToModify) { + InteropHelp.TestIfAvailableClient(); + return (HTTPCookieContainerHandle)NativeMethods.ISteamHTTP_CreateCookieContainer(bAllowResponsesToModify); + } + + /// + /// Release a cookie container you are finished using, freeing it's memory + /// + public static bool ReleaseCookieContainer(HTTPCookieContainerHandle hCookieContainer) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamHTTP_ReleaseCookieContainer(hCookieContainer); + } + + /// + /// Adds a cookie to the specified cookie container that will be used with future requests. + /// + public static bool SetCookie(HTTPCookieContainerHandle hCookieContainer, string pchHost, string pchUrl, string pchCookie) { + InteropHelp.TestIfAvailableClient(); + using (var pchHost2 = new InteropHelp.UTF8StringHandle(pchHost)) + using (var pchUrl2 = new InteropHelp.UTF8StringHandle(pchUrl)) + using (var pchCookie2 = new InteropHelp.UTF8StringHandle(pchCookie)) { + return NativeMethods.ISteamHTTP_SetCookie(hCookieContainer, pchHost2, pchUrl2, pchCookie2); + } + } + + /// + /// Set the cookie container to use for a HTTP request + /// + public static bool SetHTTPRequestCookieContainer(HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamHTTP_SetHTTPRequestCookieContainer(hRequest, hCookieContainer); + } + + /// + /// Set the extra user agent info for a request, this doesn't clobber the normal user agent, it just adds the extra info on the end + /// + public static bool SetHTTPRequestUserAgentInfo(HTTPRequestHandle hRequest, string pchUserAgentInfo) { + InteropHelp.TestIfAvailableClient(); + using (var pchUserAgentInfo2 = new InteropHelp.UTF8StringHandle(pchUserAgentInfo)) { + return NativeMethods.ISteamHTTP_SetHTTPRequestUserAgentInfo(hRequest, pchUserAgentInfo2); + } + } + + /// + /// Set that https request should require verified SSL certificate via machines certificate trust store + /// + public static bool SetHTTPRequestRequiresVerifiedCertificate(HTTPRequestHandle hRequest, bool bRequireVerifiedCertificate) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate(hRequest, bRequireVerifiedCertificate); + } + + /// + /// Set an absolute timeout on the HTTP request, this is just a total time timeout different than the network activity timeout + /// which can bump everytime we get more data + /// + public static bool SetHTTPRequestAbsoluteTimeoutMS(HTTPRequestHandle hRequest, uint unMilliseconds) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS(hRequest, unMilliseconds); + } + + /// + /// Check if the reason the request failed was because we timed it out (rather than some harder failure) + /// + public static bool GetHTTPRequestWasTimedOut(HTTPRequestHandle hRequest, out bool pbWasTimedOut) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamHTTP_GetHTTPRequestWasTimedOut(hRequest, out pbWasTimedOut); + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamhttp.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamhttp.cs.meta new file mode 100644 index 0000000..d18d002 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamhttp.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 7b7467d26e754134e9310381e90945e2 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteaminventory.cs b/Assets/Editor/Steamworks.NET/autogen/isteaminventory.cs new file mode 100644 index 0000000..30bdf60 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteaminventory.cs @@ -0,0 +1,321 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamInventory { + /// + /// INVENTORY ASYNC RESULT MANAGEMENT + /// Asynchronous inventory queries always output a result handle which can be used with + /// GetResultStatus, GetResultItems, etc. A SteamInventoryResultReady_t callback will + /// be triggered when the asynchronous result becomes ready (or fails). + /// Find out the status of an asynchronous inventory result handle. Possible values: + /// k_EResultPending - still in progress + /// k_EResultOK - done, result ready + /// k_EResultExpired - done, result ready, maybe out of date (see DeserializeResult) + /// k_EResultInvalidParam - ERROR: invalid API call parameters + /// k_EResultServiceUnavailable - ERROR: service temporarily down, you may retry later + /// k_EResultLimitExceeded - ERROR: operation would exceed per-user inventory limits + /// k_EResultFail - ERROR: unknown / generic error + /// + public static EResult GetResultStatus(SteamInventoryResult_t resultHandle) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamInventory_GetResultStatus(resultHandle); + } + + /// + /// Copies the contents of a result set into a flat array. The specific + /// contents of the result set depend on which query which was used. + /// + public static bool GetResultItems(SteamInventoryResult_t resultHandle, SteamItemDetails_t[] pOutItemsArray, ref uint punOutItemsArraySize) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamInventory_GetResultItems(resultHandle, pOutItemsArray, ref punOutItemsArraySize); + } + + /// + /// Returns the server time at which the result was generated. Compare against + /// the value of IClientUtils::GetServerRealTime() to determine age. + /// + public static uint GetResultTimestamp(SteamInventoryResult_t resultHandle) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamInventory_GetResultTimestamp(resultHandle); + } + + /// + /// Returns true if the result belongs to the target steam ID, false if the + /// result does not. This is important when using DeserializeResult, to verify + /// that a remote player is not pretending to have a different user's inventory. + /// + public static bool CheckResultSteamID(SteamInventoryResult_t resultHandle, CSteamID steamIDExpected) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamInventory_CheckResultSteamID(resultHandle, steamIDExpected); + } + + /// + /// Destroys a result handle and frees all associated memory. + /// + public static void DestroyResult(SteamInventoryResult_t resultHandle) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamInventory_DestroyResult(resultHandle); + } + + /// + /// INVENTORY ASYNC QUERY + /// Captures the entire state of the current user's Steam inventory. + /// You must call DestroyResult on this handle when you are done with it. + /// Returns false and sets *pResultHandle to zero if inventory is unavailable. + /// Note: calls to this function are subject to rate limits and may return + /// cached results if called too frequently. It is suggested that you call + /// this function only when you are about to display the user's full inventory, + /// or if you expect that the inventory may have changed. + /// + public static bool GetAllItems(out SteamInventoryResult_t pResultHandle) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamInventory_GetAllItems(out pResultHandle); + } + + /// + /// Captures the state of a subset of the current user's Steam inventory, + /// identified by an array of item instance IDs. The results from this call + /// can be serialized and passed to other players to "prove" that the current + /// user owns specific items, without exposing the user's entire inventory. + /// For example, you could call GetItemsByID with the IDs of the user's + /// currently equipped cosmetic items and serialize this to a buffer, and + /// then transmit this buffer to other players upon joining a game. + /// + public static bool GetItemsByID(out SteamInventoryResult_t pResultHandle, SteamItemInstanceID_t[] pInstanceIDs, uint unCountInstanceIDs) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamInventory_GetItemsByID(out pResultHandle, pInstanceIDs, unCountInstanceIDs); + } + + /// + /// RESULT SERIALIZATION AND AUTHENTICATION + /// Serialized result sets contain a short signature which can't be forged + /// or replayed across different game sessions. A result set can be serialized + /// on the local client, transmitted to other players via your game networking, + /// and deserialized by the remote players. This is a secure way of preventing + /// hackers from lying about posessing rare/high-value items. + /// Serializes a result set with signature bytes to an output buffer. Pass + /// NULL as an output buffer to get the required size via punOutBufferSize. + /// The size of a serialized result depends on the number items which are being + /// serialized. When securely transmitting items to other players, it is + /// recommended to use "GetItemsByID" first to create a minimal result set. + /// Results have a built-in timestamp which will be considered "expired" after + /// an hour has elapsed. See DeserializeResult for expiration handling. + /// + public static bool SerializeResult(SteamInventoryResult_t resultHandle, byte[] pOutBuffer, out uint punOutBufferSize) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamInventory_SerializeResult(resultHandle, pOutBuffer, out punOutBufferSize); + } + + /// + /// Deserializes a result set and verifies the signature bytes. Returns false + /// if bRequireFullOnlineVerify is set but Steam is running in Offline mode. + /// Otherwise returns true and then delivers error codes via GetResultStatus. + /// The bRESERVED_MUST_BE_FALSE flag is reserved for future use and should not + /// be set to true by your game at this time. + /// DeserializeResult has a potential soft-failure mode where the handle status + /// is set to k_EResultExpired. GetResultItems() still succeeds in this mode. + /// The "expired" result could indicate that the data may be out of date - not + /// just due to timed expiration (one hour), but also because one of the items + /// in the result set may have been traded or consumed since the result set was + /// generated. You could compare the timestamp from GetResultTimestamp() to + /// ISteamUtils::GetServerRealTime() to determine how old the data is. You could + /// simply ignore the "expired" result code and continue as normal, or you + /// could challenge the player with expired data to send an updated result set. + /// + public static bool DeserializeResult(out SteamInventoryResult_t pOutResultHandle, byte[] pBuffer, uint unBufferSize, bool bRESERVED_MUST_BE_FALSE = false) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamInventory_DeserializeResult(out pOutResultHandle, pBuffer, unBufferSize, bRESERVED_MUST_BE_FALSE); + } + + /// + /// INVENTORY ASYNC MODIFICATION + /// GenerateItems() creates one or more items and then generates a SteamInventoryCallback_t + /// notification with a matching nCallbackContext parameter. This API is insecure, and could + /// be abused by hacked clients. It is, however, very useful as a development cheat or as + /// a means of prototyping item-related features for your game. The use of GenerateItems can + /// be restricted to certain item definitions or fully blocked via the Steamworks website. + /// If punArrayQuantity is not NULL, it should be the same length as pArrayItems and should + /// describe the quantity of each item to generate. + /// + public static bool GenerateItems(out SteamInventoryResult_t pResultHandle, SteamItemDef_t[] pArrayItemDefs, uint[] punArrayQuantity, uint unArrayLength) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamInventory_GenerateItems(out pResultHandle, pArrayItemDefs, punArrayQuantity, unArrayLength); + } + + /// + /// GrantPromoItems() checks the list of promotional items for which the user may be eligible + /// and grants the items (one time only). On success, the result set will include items which + /// were granted, if any. If no items were granted because the user isn't eligible for any + /// promotions, this is still considered a success. + /// + public static bool GrantPromoItems(out SteamInventoryResult_t pResultHandle) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamInventory_GrantPromoItems(out pResultHandle); + } + + /// + /// AddPromoItem() / AddPromoItems() are restricted versions of GrantPromoItems(). Instead of + /// scanning for all eligible promotional items, the check is restricted to a single item + /// definition or set of item definitions. This can be useful if your game has custom UI for + /// showing a specific promo item to the user. + /// + public static bool AddPromoItem(out SteamInventoryResult_t pResultHandle, SteamItemDef_t itemDef) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamInventory_AddPromoItem(out pResultHandle, itemDef); + } + + public static bool AddPromoItems(out SteamInventoryResult_t pResultHandle, SteamItemDef_t[] pArrayItemDefs, uint unArrayLength) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamInventory_AddPromoItems(out pResultHandle, pArrayItemDefs, unArrayLength); + } + + /// + /// ConsumeItem() removes items from the inventory, permanently. They cannot be recovered. + /// Not for the faint of heart - if your game implements item removal at all, a high-friction + /// UI confirmation process is highly recommended. Similar to GenerateItems, punArrayQuantity + /// can be NULL or else an array of the same length as pArrayItems which describe the quantity + /// of each item to destroy. ConsumeItem can be restricted to certain item definitions or + /// fully blocked via the Steamworks website to minimize support/abuse issues such as the + /// clasic "my brother borrowed my laptop and deleted all of my rare items". + /// + public static bool ConsumeItem(out SteamInventoryResult_t pResultHandle, SteamItemInstanceID_t itemConsume, uint unQuantity) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamInventory_ConsumeItem(out pResultHandle, itemConsume, unQuantity); + } + + /// + /// ExchangeItems() is an atomic combination of GenerateItems and DestroyItems. It can be + /// used to implement crafting recipes or transmutations, or items which unpack themselves + /// into other items. Like GenerateItems, this is a flexible and dangerous API which is + /// meant for rapid prototyping. You can configure restrictions on ExchangeItems via the + /// Steamworks website, such as limiting it to a whitelist of input/output combinations + /// corresponding to recipes. + /// (Note: although GenerateItems may be hard or impossible to use securely in your game, + /// ExchangeItems is perfectly reasonable to use once the whitelists are set accordingly.) + /// + public static bool ExchangeItems(out SteamInventoryResult_t pResultHandle, SteamItemDef_t[] pArrayGenerate, uint[] punArrayGenerateQuantity, uint unArrayGenerateLength, SteamItemInstanceID_t[] pArrayDestroy, uint[] punArrayDestroyQuantity, uint unArrayDestroyLength) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamInventory_ExchangeItems(out pResultHandle, pArrayGenerate, punArrayGenerateQuantity, unArrayGenerateLength, pArrayDestroy, punArrayDestroyQuantity, unArrayDestroyLength); + } + + /// + /// TransferItemQuantity() is intended for use with items which are "stackable" (can have + /// quantity greater than one). It can be used to split a stack into two, or to transfer + /// quantity from one stack into another stack of identical items. To split one stack into + /// two, pass k_SteamItemInstanceIDInvalid for itemIdDest and a new item will be generated. + /// + public static bool TransferItemQuantity(out SteamInventoryResult_t pResultHandle, SteamItemInstanceID_t itemIdSource, uint unQuantity, SteamItemInstanceID_t itemIdDest) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamInventory_TransferItemQuantity(out pResultHandle, itemIdSource, unQuantity, itemIdDest); + } + + /// + /// TIMED DROPS AND PLAYTIME CREDIT + /// Applications which use timed-drop mechanics should call SendItemDropHeartbeat() when + /// active gameplay begins, and at least once every two minutes afterwards. The backend + /// performs its own time calculations, so the precise timing of the heartbeat is not + /// critical as long as you send at least one heartbeat every two minutes. Calling the + /// function more often than that is not harmful, it will simply have no effect. Note: + /// players may be able to spoof this message by hacking their client, so you should not + /// attempt to use this as a mechanism to restrict playtime credits. It is simply meant + /// to distinguish between being in any kind of gameplay situation vs the main menu or + /// a pre-game launcher window. (If you are stingy with handing out playtime credit, it + /// will only encourage players to run bots or use mouse/kb event simulators.) + /// Playtime credit accumulation can be capped on a daily or weekly basis through your + /// Steamworks configuration. + /// + public static void SendItemDropHeartbeat() { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamInventory_SendItemDropHeartbeat(); + } + + /// + /// Playtime credit must be consumed and turned into item drops by your game. Only item + /// definitions which are marked as "playtime item generators" can be spawned. The call + /// will return an empty result set if there is not enough playtime credit for a drop. + /// Your game should call TriggerItemDrop at an appropriate time for the user to receive + /// new items, such as between rounds or while the player is dead. Note that players who + /// hack their clients could modify the value of "dropListDefinition", so do not use it + /// to directly control rarity. It is primarily useful during testing and development, + /// where you may wish to perform experiments with different types of drops. + /// + public static bool TriggerItemDrop(out SteamInventoryResult_t pResultHandle, SteamItemDef_t dropListDefinition) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamInventory_TriggerItemDrop(out pResultHandle, dropListDefinition); + } + + /// + /// IN-GAME TRADING + /// TradeItems() implements limited in-game trading of items, if you prefer not to use + /// the overlay or an in-game web browser to perform Steam Trading through the website. + /// You should implement a UI where both players can see and agree to a trade, and then + /// each client should call TradeItems simultaneously (+/- 5 seconds) with matching + /// (but reversed) parameters. The result is the same as if both players performed a + /// Steam Trading transaction through the web. Each player will get an inventory result + /// confirming the removal or quantity changes of the items given away, and the new + /// item instance id numbers and quantities of the received items. + /// (Note: new item instance IDs are generated whenever an item changes ownership.) + /// + public static bool TradeItems(out SteamInventoryResult_t pResultHandle, CSteamID steamIDTradePartner, SteamItemInstanceID_t[] pArrayGive, uint[] pArrayGiveQuantity, uint nArrayGiveLength, SteamItemInstanceID_t[] pArrayGet, uint[] pArrayGetQuantity, uint nArrayGetLength) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamInventory_TradeItems(out pResultHandle, steamIDTradePartner, pArrayGive, pArrayGiveQuantity, nArrayGiveLength, pArrayGet, pArrayGetQuantity, nArrayGetLength); + } + + /// + /// ITEM DEFINITIONS + /// Item definitions are a mapping of "definition IDs" (integers between 1 and 1000000) + /// to a set of string properties. Some of these properties are required to display items + /// on the Steam community web site. Other properties can be defined by applications. + /// Use of these functions is optional; there is no reason to call LoadItemDefinitions + /// if your game hardcodes the numeric definition IDs (eg, purple face mask = 20, blue + /// weapon mod = 55) and does not allow for adding new item types without a client patch. + /// LoadItemDefinitions triggers the automatic load and refresh of item definitions. + /// Every time new item definitions are available (eg, from the dynamic addition of new + /// item types while players are still in-game), a SteamInventoryDefinitionUpdate_t + /// callback will be fired. + /// + public static bool LoadItemDefinitions() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamInventory_LoadItemDefinitions(); + } + + /// + /// GetItemDefinitionIDs returns the set of all defined item definition IDs (which are + /// defined via Steamworks configuration, and not necessarily contiguous integers). + /// If pItemDefIDs is null, the call will return true and *punItemDefIDsArraySize will + /// contain the total size necessary for a subsequent call. Otherwise, the call will + /// return false if and only if there is not enough space in the output array. + /// + public static bool GetItemDefinitionIDs(SteamItemDef_t[] pItemDefIDs, out uint punItemDefIDsArraySize) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamInventory_GetItemDefinitionIDs(pItemDefIDs, out punItemDefIDsArraySize); + } + + /// + /// GetItemDefinitionProperty returns a string property from a given item definition. + /// Note that some properties (for example, "name") may be localized and will depend + /// on the current Steam language settings (see ISteamApps::GetCurrentGameLanguage). + /// Property names are always composed of ASCII letters, numbers, and/or underscores. + /// Pass a NULL pointer for pchPropertyName to get a comma - separated list of available + /// property names. + /// + public static bool GetItemDefinitionProperty(SteamItemDef_t iDefinition, string pchPropertyName, out string pchValueBuffer, ref uint punValueBufferSize) { + InteropHelp.TestIfAvailableClient(); + IntPtr pchValueBuffer2 = Marshal.AllocHGlobal((int)punValueBufferSize); + using (var pchPropertyName2 = new InteropHelp.UTF8StringHandle(pchPropertyName)) { + bool ret = NativeMethods.ISteamInventory_GetItemDefinitionProperty(iDefinition, pchPropertyName2, pchValueBuffer2, ref punValueBufferSize); + pchValueBuffer = ret ? InteropHelp.PtrToStringUTF8(pchValueBuffer2) : null; + Marshal.FreeHGlobal(pchValueBuffer2); + return ret; + } + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteaminventory.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteaminventory.cs.meta new file mode 100644 index 0000000..70219b5 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteaminventory.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 421743b9be54f704095ef958c1dc779a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteammatchmaking.cs b/Assets/Editor/Steamworks.NET/autogen/isteammatchmaking.cs new file mode 100644 index 0000000..1549080 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteammatchmaking.cs @@ -0,0 +1,633 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamMatchmaking { + /// + /// game server favorites storage + /// saves basic details about a multiplayer game server locally + /// returns the number of favorites servers the user has stored + /// + public static int GetFavoriteGameCount() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMatchmaking_GetFavoriteGameCount(); + } + + /// + /// returns the details of the game server + /// iGame is of range [0,GetFavoriteGameCount()) + /// *pnIP, *pnConnPort are filled in the with IP:port of the game server + /// *punFlags specify whether the game server was stored as an explicit favorite or in the history of connections + /// *pRTime32LastPlayedOnServer is filled in the with the Unix time the favorite was added + /// + public static bool GetFavoriteGame(int iGame, out AppId_t pnAppID, out uint pnIP, out ushort pnConnPort, out ushort pnQueryPort, out uint punFlags, out uint pRTime32LastPlayedOnServer) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMatchmaking_GetFavoriteGame(iGame, out pnAppID, out pnIP, out pnConnPort, out pnQueryPort, out punFlags, out pRTime32LastPlayedOnServer); + } + + /// + /// adds the game server to the local list; updates the time played of the server if it already exists in the list + /// + public static int AddFavoriteGame(AppId_t nAppID, uint nIP, ushort nConnPort, ushort nQueryPort, uint unFlags, uint rTime32LastPlayedOnServer) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMatchmaking_AddFavoriteGame(nAppID, nIP, nConnPort, nQueryPort, unFlags, rTime32LastPlayedOnServer); + } + + /// + /// removes the game server from the local storage; returns true if one was removed + /// + public static bool RemoveFavoriteGame(AppId_t nAppID, uint nIP, ushort nConnPort, ushort nQueryPort, uint unFlags) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMatchmaking_RemoveFavoriteGame(nAppID, nIP, nConnPort, nQueryPort, unFlags); + } + + /// + /// ///// + /// Game lobby functions + /// Get a list of relevant lobbies + /// this is an asynchronous request + /// results will be returned by LobbyMatchList_t callback & call result, with the number of lobbies found + /// this will never return lobbies that are full + /// to add more filter, the filter calls below need to be call before each and every RequestLobbyList() call + /// use the CCallResult<> object in steam_api.h to match the SteamAPICall_t call result to a function in an object, e.g. + /// class CMyLobbyListManager + /// { + /// CCallResult<CMyLobbyListManager, LobbyMatchList_t> m_CallResultLobbyMatchList; + /// void FindLobbies() + /// { + /// // SteamMatchmaking()->AddRequestLobbyListFilter*() functions would be called here, before RequestLobbyList() + /// SteamAPICall_t hSteamAPICall = SteamMatchmaking()->RequestLobbyList(); + /// m_CallResultLobbyMatchList.Set( hSteamAPICall, this, &CMyLobbyListManager::OnLobbyMatchList ); + /// } + /// void OnLobbyMatchList( LobbyMatchList_t *pLobbyMatchList, bool bIOFailure ) + /// { + /// // lobby list has be retrieved from Steam back-end, use results + /// } + /// } + /// + public static SteamAPICall_t RequestLobbyList() { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamMatchmaking_RequestLobbyList(); + } + + /// + /// filters for lobbies + /// this needs to be called before RequestLobbyList() to take effect + /// these are cleared on each call to RequestLobbyList() + /// + public static void AddRequestLobbyListStringFilter(string pchKeyToMatch, string pchValueToMatch, ELobbyComparison eComparisonType) { + InteropHelp.TestIfAvailableClient(); + using (var pchKeyToMatch2 = new InteropHelp.UTF8StringHandle(pchKeyToMatch)) + using (var pchValueToMatch2 = new InteropHelp.UTF8StringHandle(pchValueToMatch)) { + NativeMethods.ISteamMatchmaking_AddRequestLobbyListStringFilter(pchKeyToMatch2, pchValueToMatch2, eComparisonType); + } + } + + /// + /// numerical comparison + /// + public static void AddRequestLobbyListNumericalFilter(string pchKeyToMatch, int nValueToMatch, ELobbyComparison eComparisonType) { + InteropHelp.TestIfAvailableClient(); + using (var pchKeyToMatch2 = new InteropHelp.UTF8StringHandle(pchKeyToMatch)) { + NativeMethods.ISteamMatchmaking_AddRequestLobbyListNumericalFilter(pchKeyToMatch2, nValueToMatch, eComparisonType); + } + } + + /// + /// returns results closest to the specified value. Multiple near filters can be added, with early filters taking precedence + /// + public static void AddRequestLobbyListNearValueFilter(string pchKeyToMatch, int nValueToBeCloseTo) { + InteropHelp.TestIfAvailableClient(); + using (var pchKeyToMatch2 = new InteropHelp.UTF8StringHandle(pchKeyToMatch)) { + NativeMethods.ISteamMatchmaking_AddRequestLobbyListNearValueFilter(pchKeyToMatch2, nValueToBeCloseTo); + } + } + + /// + /// returns only lobbies with the specified number of slots available + /// + public static void AddRequestLobbyListFilterSlotsAvailable(int nSlotsAvailable) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable(nSlotsAvailable); + } + + /// + /// sets the distance for which we should search for lobbies (based on users IP address to location map on the Steam backed) + /// + public static void AddRequestLobbyListDistanceFilter(ELobbyDistanceFilter eLobbyDistanceFilter) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamMatchmaking_AddRequestLobbyListDistanceFilter(eLobbyDistanceFilter); + } + + /// + /// sets how many results to return, the lower the count the faster it is to download the lobby results & details to the client + /// + public static void AddRequestLobbyListResultCountFilter(int cMaxResults) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamMatchmaking_AddRequestLobbyListResultCountFilter(cMaxResults); + } + + public static void AddRequestLobbyListCompatibleMembersFilter(CSteamID steamIDLobby) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter(steamIDLobby); + } + + /// + /// returns the CSteamID of a lobby, as retrieved by a RequestLobbyList call + /// should only be called after a LobbyMatchList_t callback is received + /// iLobby is of the range [0, LobbyMatchList_t::m_nLobbiesMatching) + /// the returned CSteamID::IsValid() will be false if iLobby is out of range + /// + public static CSteamID GetLobbyByIndex(int iLobby) { + InteropHelp.TestIfAvailableClient(); + return (CSteamID)NativeMethods.ISteamMatchmaking_GetLobbyByIndex(iLobby); + } + + /// + /// Create a lobby on the Steam servers. + /// If private, then the lobby will not be returned by any RequestLobbyList() call; the CSteamID + /// of the lobby will need to be communicated via game channels or via InviteUserToLobby() + /// this is an asynchronous request + /// results will be returned by LobbyCreated_t callback and call result; lobby is joined & ready to use at this point + /// a LobbyEnter_t callback will also be received (since the local user is joining their own lobby) + /// + public static SteamAPICall_t CreateLobby(ELobbyType eLobbyType, int cMaxMembers) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamMatchmaking_CreateLobby(eLobbyType, cMaxMembers); + } + + /// + /// Joins an existing lobby + /// this is an asynchronous request + /// results will be returned by LobbyEnter_t callback & call result, check m_EChatRoomEnterResponse to see if was successful + /// lobby metadata is available to use immediately on this call completing + /// + public static SteamAPICall_t JoinLobby(CSteamID steamIDLobby) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamMatchmaking_JoinLobby(steamIDLobby); + } + + /// + /// Leave a lobby; this will take effect immediately on the client side + /// other users in the lobby will be notified by a LobbyChatUpdate_t callback + /// + public static void LeaveLobby(CSteamID steamIDLobby) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamMatchmaking_LeaveLobby(steamIDLobby); + } + + /// + /// Invite another user to the lobby + /// the target user will receive a LobbyInvite_t callback + /// will return true if the invite is successfully sent, whether or not the target responds + /// returns false if the local user is not connected to the Steam servers + /// if the other user clicks the join link, a GameLobbyJoinRequested_t will be posted if the user is in-game, + /// or if the game isn't running yet the game will be launched with the parameter +connect_lobby <64-bit lobby id> + /// + public static bool InviteUserToLobby(CSteamID steamIDLobby, CSteamID steamIDInvitee) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMatchmaking_InviteUserToLobby(steamIDLobby, steamIDInvitee); + } + + /// + /// Lobby iteration, for viewing details of users in a lobby + /// only accessible if the lobby user is a member of the specified lobby + /// persona information for other lobby members (name, avatar, etc.) will be asynchronously received + /// and accessible via ISteamFriends interface + /// returns the number of users in the specified lobby + /// + public static int GetNumLobbyMembers(CSteamID steamIDLobby) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMatchmaking_GetNumLobbyMembers(steamIDLobby); + } + + /// + /// returns the CSteamID of a user in the lobby + /// iMember is of range [0,GetNumLobbyMembers()) + /// note that the current user must be in a lobby to retrieve CSteamIDs of other users in that lobby + /// + public static CSteamID GetLobbyMemberByIndex(CSteamID steamIDLobby, int iMember) { + InteropHelp.TestIfAvailableClient(); + return (CSteamID)NativeMethods.ISteamMatchmaking_GetLobbyMemberByIndex(steamIDLobby, iMember); + } + + /// + /// Get data associated with this lobby + /// takes a simple key, and returns the string associated with it + /// "" will be returned if no value is set, or if steamIDLobby is invalid + /// + public static string GetLobbyData(CSteamID steamIDLobby, string pchKey) { + InteropHelp.TestIfAvailableClient(); + using (var pchKey2 = new InteropHelp.UTF8StringHandle(pchKey)) { + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamMatchmaking_GetLobbyData(steamIDLobby, pchKey2)); + } + } + + /// + /// Sets a key/value pair in the lobby metadata + /// each user in the lobby will be broadcast this new value, and any new users joining will receive any existing data + /// this can be used to set lobby names, map, etc. + /// to reset a key, just set it to "" + /// other users in the lobby will receive notification of the lobby data change via a LobbyDataUpdate_t callback + /// + public static bool SetLobbyData(CSteamID steamIDLobby, string pchKey, string pchValue) { + InteropHelp.TestIfAvailableClient(); + using (var pchKey2 = new InteropHelp.UTF8StringHandle(pchKey)) + using (var pchValue2 = new InteropHelp.UTF8StringHandle(pchValue)) { + return NativeMethods.ISteamMatchmaking_SetLobbyData(steamIDLobby, pchKey2, pchValue2); + } + } + + /// + /// returns the number of metadata keys set on the specified lobby + /// + public static int GetLobbyDataCount(CSteamID steamIDLobby) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMatchmaking_GetLobbyDataCount(steamIDLobby); + } + + /// + /// returns a lobby metadata key/values pair by index, of range [0, GetLobbyDataCount()) + /// + public static bool GetLobbyDataByIndex(CSteamID steamIDLobby, int iLobbyData, out string pchKey, int cchKeyBufferSize, out string pchValue, int cchValueBufferSize) { + InteropHelp.TestIfAvailableClient(); + IntPtr pchKey2 = Marshal.AllocHGlobal(cchKeyBufferSize); + IntPtr pchValue2 = Marshal.AllocHGlobal(cchValueBufferSize); + bool ret = NativeMethods.ISteamMatchmaking_GetLobbyDataByIndex(steamIDLobby, iLobbyData, pchKey2, cchKeyBufferSize, pchValue2, cchValueBufferSize); + pchKey = ret ? InteropHelp.PtrToStringUTF8(pchKey2) : null; + Marshal.FreeHGlobal(pchKey2); + pchValue = ret ? InteropHelp.PtrToStringUTF8(pchValue2) : null; + Marshal.FreeHGlobal(pchValue2); + return ret; + } + + /// + /// removes a metadata key from the lobby + /// + public static bool DeleteLobbyData(CSteamID steamIDLobby, string pchKey) { + InteropHelp.TestIfAvailableClient(); + using (var pchKey2 = new InteropHelp.UTF8StringHandle(pchKey)) { + return NativeMethods.ISteamMatchmaking_DeleteLobbyData(steamIDLobby, pchKey2); + } + } + + /// + /// Gets per-user metadata for someone in this lobby + /// + public static string GetLobbyMemberData(CSteamID steamIDLobby, CSteamID steamIDUser, string pchKey) { + InteropHelp.TestIfAvailableClient(); + using (var pchKey2 = new InteropHelp.UTF8StringHandle(pchKey)) { + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamMatchmaking_GetLobbyMemberData(steamIDLobby, steamIDUser, pchKey2)); + } + } + + /// + /// Sets per-user metadata (for the local user implicitly) + /// + public static void SetLobbyMemberData(CSteamID steamIDLobby, string pchKey, string pchValue) { + InteropHelp.TestIfAvailableClient(); + using (var pchKey2 = new InteropHelp.UTF8StringHandle(pchKey)) + using (var pchValue2 = new InteropHelp.UTF8StringHandle(pchValue)) { + NativeMethods.ISteamMatchmaking_SetLobbyMemberData(steamIDLobby, pchKey2, pchValue2); + } + } + + /// + /// Broadcasts a chat message to the all the users in the lobby + /// users in the lobby (including the local user) will receive a LobbyChatMsg_t callback + /// returns true if the message is successfully sent + /// pvMsgBody can be binary or text data, up to 4k + /// if pvMsgBody is text, cubMsgBody should be strlen( text ) + 1, to include the null terminator + /// + public static bool SendLobbyChatMsg(CSteamID steamIDLobby, byte[] pvMsgBody, int cubMsgBody) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMatchmaking_SendLobbyChatMsg(steamIDLobby, pvMsgBody, cubMsgBody); + } + + /// + /// Get a chat message as specified in a LobbyChatMsg_t callback + /// iChatID is the LobbyChatMsg_t::m_iChatID value in the callback + /// *pSteamIDUser is filled in with the CSteamID of the member + /// *pvData is filled in with the message itself + /// return value is the number of bytes written into the buffer + /// + public static int GetLobbyChatEntry(CSteamID steamIDLobby, int iChatID, out CSteamID pSteamIDUser, byte[] pvData, int cubData, out EChatEntryType peChatEntryType) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMatchmaking_GetLobbyChatEntry(steamIDLobby, iChatID, out pSteamIDUser, pvData, cubData, out peChatEntryType); + } + + /// + /// Refreshes metadata for a lobby you're not necessarily in right now + /// you never do this for lobbies you're a member of, only if your + /// this will send down all the metadata associated with a lobby + /// this is an asynchronous call + /// returns false if the local user is not connected to the Steam servers + /// results will be returned by a LobbyDataUpdate_t callback + /// if the specified lobby doesn't exist, LobbyDataUpdate_t::m_bSuccess will be set to false + /// + public static bool RequestLobbyData(CSteamID steamIDLobby) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMatchmaking_RequestLobbyData(steamIDLobby); + } + + /// + /// sets the game server associated with the lobby + /// usually at this point, the users will join the specified game server + /// either the IP/Port or the steamID of the game server has to be valid, depending on how you want the clients to be able to connect + /// + public static void SetLobbyGameServer(CSteamID steamIDLobby, uint unGameServerIP, ushort unGameServerPort, CSteamID steamIDGameServer) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamMatchmaking_SetLobbyGameServer(steamIDLobby, unGameServerIP, unGameServerPort, steamIDGameServer); + } + + /// + /// returns the details of a game server set in a lobby - returns false if there is no game server set, or that lobby doesn't exist + /// + public static bool GetLobbyGameServer(CSteamID steamIDLobby, out uint punGameServerIP, out ushort punGameServerPort, out CSteamID psteamIDGameServer) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMatchmaking_GetLobbyGameServer(steamIDLobby, out punGameServerIP, out punGameServerPort, out psteamIDGameServer); + } + + /// + /// set the limit on the # of users who can join the lobby + /// + public static bool SetLobbyMemberLimit(CSteamID steamIDLobby, int cMaxMembers) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMatchmaking_SetLobbyMemberLimit(steamIDLobby, cMaxMembers); + } + + /// + /// returns the current limit on the # of users who can join the lobby; returns 0 if no limit is defined + /// + public static int GetLobbyMemberLimit(CSteamID steamIDLobby) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMatchmaking_GetLobbyMemberLimit(steamIDLobby); + } + + /// + /// updates which type of lobby it is + /// only lobbies that are k_ELobbyTypePublic or k_ELobbyTypeInvisible, and are set to joinable, will be returned by RequestLobbyList() calls + /// + public static bool SetLobbyType(CSteamID steamIDLobby, ELobbyType eLobbyType) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMatchmaking_SetLobbyType(steamIDLobby, eLobbyType); + } + + /// + /// sets whether or not a lobby is joinable - defaults to true for a new lobby + /// if set to false, no user can join, even if they are a friend or have been invited + /// + public static bool SetLobbyJoinable(CSteamID steamIDLobby, bool bLobbyJoinable) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMatchmaking_SetLobbyJoinable(steamIDLobby, bLobbyJoinable); + } + + /// + /// returns the current lobby owner + /// you must be a member of the lobby to access this + /// there always one lobby owner - if the current owner leaves, another user will become the owner + /// it is possible (bur rare) to join a lobby just as the owner is leaving, thus entering a lobby with self as the owner + /// + public static CSteamID GetLobbyOwner(CSteamID steamIDLobby) { + InteropHelp.TestIfAvailableClient(); + return (CSteamID)NativeMethods.ISteamMatchmaking_GetLobbyOwner(steamIDLobby); + } + + /// + /// changes who the lobby owner is + /// you must be the lobby owner for this to succeed, and steamIDNewOwner must be in the lobby + /// after completion, the local user will no longer be the owner + /// + public static bool SetLobbyOwner(CSteamID steamIDLobby, CSteamID steamIDNewOwner) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMatchmaking_SetLobbyOwner(steamIDLobby, steamIDNewOwner); + } + + /// + /// link two lobbies for the purposes of checking player compatibility + /// you must be the lobby owner of both lobbies + /// + public static bool SetLinkedLobby(CSteamID steamIDLobby, CSteamID steamIDLobbyDependent) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMatchmaking_SetLinkedLobby(steamIDLobby, steamIDLobbyDependent); + } +#if _PS3 + /// + /// changes who the lobby owner is + /// you must be the lobby owner for this to succeed, and steamIDNewOwner must be in the lobby + /// after completion, the local user will no longer be the owner + /// + public static void CheckForPSNGameBootInvite(uint iGameBootAttributes) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamMatchmaking_CheckForPSNGameBootInvite(iGameBootAttributes); + } +#endif + } + public static class SteamMatchmakingServers { + /// + /// Request a new list of servers of a particular type. These calls each correspond to one of the EMatchMakingType values. + /// Each call allocates a new asynchronous request object. + /// Request object must be released by calling ReleaseRequest( hServerListRequest ) + /// + public static HServerListRequest RequestInternetServerList(AppId_t iApp, MatchMakingKeyValuePair_t[] ppchFilters, uint nFilters, ISteamMatchmakingServerListResponse pRequestServersResponse) { + InteropHelp.TestIfAvailableClient(); + return (HServerListRequest)NativeMethods.ISteamMatchmakingServers_RequestInternetServerList(iApp, new MMKVPMarshaller(ppchFilters), nFilters, (IntPtr)pRequestServersResponse); + } + + public static HServerListRequest RequestLANServerList(AppId_t iApp, ISteamMatchmakingServerListResponse pRequestServersResponse) { + InteropHelp.TestIfAvailableClient(); + return (HServerListRequest)NativeMethods.ISteamMatchmakingServers_RequestLANServerList(iApp, (IntPtr)pRequestServersResponse); + } + + public static HServerListRequest RequestFriendsServerList(AppId_t iApp, MatchMakingKeyValuePair_t[] ppchFilters, uint nFilters, ISteamMatchmakingServerListResponse pRequestServersResponse) { + InteropHelp.TestIfAvailableClient(); + return (HServerListRequest)NativeMethods.ISteamMatchmakingServers_RequestFriendsServerList(iApp, new MMKVPMarshaller(ppchFilters), nFilters, (IntPtr)pRequestServersResponse); + } + + public static HServerListRequest RequestFavoritesServerList(AppId_t iApp, MatchMakingKeyValuePair_t[] ppchFilters, uint nFilters, ISteamMatchmakingServerListResponse pRequestServersResponse) { + InteropHelp.TestIfAvailableClient(); + return (HServerListRequest)NativeMethods.ISteamMatchmakingServers_RequestFavoritesServerList(iApp, new MMKVPMarshaller(ppchFilters), nFilters, (IntPtr)pRequestServersResponse); + } + + public static HServerListRequest RequestHistoryServerList(AppId_t iApp, MatchMakingKeyValuePair_t[] ppchFilters, uint nFilters, ISteamMatchmakingServerListResponse pRequestServersResponse) { + InteropHelp.TestIfAvailableClient(); + return (HServerListRequest)NativeMethods.ISteamMatchmakingServers_RequestHistoryServerList(iApp, new MMKVPMarshaller(ppchFilters), nFilters, (IntPtr)pRequestServersResponse); + } + + public static HServerListRequest RequestSpectatorServerList(AppId_t iApp, MatchMakingKeyValuePair_t[] ppchFilters, uint nFilters, ISteamMatchmakingServerListResponse pRequestServersResponse) { + InteropHelp.TestIfAvailableClient(); + return (HServerListRequest)NativeMethods.ISteamMatchmakingServers_RequestSpectatorServerList(iApp, new MMKVPMarshaller(ppchFilters), nFilters, (IntPtr)pRequestServersResponse); + } + + /// + /// Releases the asynchronous request object and cancels any pending query on it if there's a pending query in progress. + /// RefreshComplete callback is not posted when request is released. + /// + public static void ReleaseRequest(HServerListRequest hServerListRequest) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamMatchmakingServers_ReleaseRequest(hServerListRequest); + } + + /// + /// the filter operation codes that go in the key part of MatchMakingKeyValuePair_t should be one of these: + /// "map" + /// - Server passes the filter if the server is playing the specified map. + /// "gamedataand" + /// - Server passes the filter if the server's game data (ISteamGameServer::SetGameData) contains all of the + /// specified strings. The value field is a comma-delimited list of strings to match. + /// "gamedataor" + /// - Server passes the filter if the server's game data (ISteamGameServer::SetGameData) contains at least one of the + /// specified strings. The value field is a comma-delimited list of strings to match. + /// "gamedatanor" + /// - Server passes the filter if the server's game data (ISteamGameServer::SetGameData) does not contain any + /// of the specified strings. The value field is a comma-delimited list of strings to check. + /// "gametagsand" + /// - Server passes the filter if the server's game tags (ISteamGameServer::SetGameTags) contains all + /// of the specified strings. The value field is a comma-delimited list of strings to check. + /// "gametagsnor" + /// - Server passes the filter if the server's game tags (ISteamGameServer::SetGameTags) does not contain any + /// of the specified strings. The value field is a comma-delimited list of strings to check. + /// "and" (x1 && x2 && ... && xn) + /// "or" (x1 || x2 || ... || xn) + /// "nand" !(x1 && x2 && ... && xn) + /// "nor" !(x1 || x2 || ... || xn) + /// - Performs Boolean operation on the following filters. The operand to this filter specifies + /// the "size" of the Boolean inputs to the operation, in Key/value pairs. (The keyvalue + /// pairs must immediately follow, i.e. this is a prefix logical operator notation.) + /// In the simplest case where Boolean expressions are not nested, this is simply + /// the number of operands. + /// For example, to match servers on a particular map or with a particular tag, would would + /// use these filters. + /// ( server.map == "cp_dustbowl" || server.gametags.contains("payload") ) + /// "or", "2" + /// "map", "cp_dustbowl" + /// "gametagsand", "payload" + /// If logical inputs are nested, then the operand specifies the size of the entire + /// "length" of its operands, not the number of immediate children. + /// ( server.map == "cp_dustbowl" || ( server.gametags.contains("payload") && !server.gametags.contains("payloadrace") ) ) + /// "or", "4" + /// "map", "cp_dustbowl" + /// "and", "2" + /// "gametagsand", "payload" + /// "gametagsnor", "payloadrace" + /// Unary NOT can be achieved using either "nand" or "nor" with a single operand. + /// "addr" + /// - Server passes the filter if the server's query address matches the specified IP or IP:port. + /// "gameaddr" + /// - Server passes the filter if the server's game address matches the specified IP or IP:port. + /// The following filter operations ignore the "value" part of MatchMakingKeyValuePair_t + /// "dedicated" + /// - Server passes the filter if it passed true to SetDedicatedServer. + /// "secure" + /// - Server passes the filter if the server is VAC-enabled. + /// "notfull" + /// - Server passes the filter if the player count is less than the reported max player count. + /// "hasplayers" + /// - Server passes the filter if the player count is greater than zero. + /// "noplayers" + /// - Server passes the filter if it doesn't have any players. + /// "linux" + /// - Server passes the filter if it's a linux server + /// Get details on a given server in the list, you can get the valid range of index + /// values by calling GetServerCount(). You will also receive index values in + /// ISteamMatchmakingServerListResponse::ServerResponded() callbacks + /// + public static gameserveritem_t GetServerDetails(HServerListRequest hRequest, int iServer) { + InteropHelp.TestIfAvailableClient(); + return (gameserveritem_t)Marshal.PtrToStructure(NativeMethods.ISteamMatchmakingServers_GetServerDetails(hRequest, iServer), typeof(gameserveritem_t)); + } + + /// + /// Cancel an request which is operation on the given list type. You should call this to cancel + /// any in-progress requests before destructing a callback object that may have been passed + /// to one of the above list request calls. Not doing so may result in a crash when a callback + /// occurs on the destructed object. + /// Canceling a query does not release the allocated request handle. + /// The request handle must be released using ReleaseRequest( hRequest ) + /// + public static void CancelQuery(HServerListRequest hRequest) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamMatchmakingServers_CancelQuery(hRequest); + } + + /// + /// Ping every server in your list again but don't update the list of servers + /// Query callback installed when the server list was requested will be used + /// again to post notifications and RefreshComplete, so the callback must remain + /// valid until another RefreshComplete is called on it or the request + /// is released with ReleaseRequest( hRequest ) + /// + public static void RefreshQuery(HServerListRequest hRequest) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamMatchmakingServers_RefreshQuery(hRequest); + } + + /// + /// Returns true if the list is currently refreshing its server list + /// + public static bool IsRefreshing(HServerListRequest hRequest) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMatchmakingServers_IsRefreshing(hRequest); + } + + /// + /// How many servers in the given list, GetServerDetails above takes 0... GetServerCount() - 1 + /// + public static int GetServerCount(HServerListRequest hRequest) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMatchmakingServers_GetServerCount(hRequest); + } + + /// + /// Refresh a single server inside of a query (rather than all the servers ) + /// + public static void RefreshServer(HServerListRequest hRequest, int iServer) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamMatchmakingServers_RefreshServer(hRequest, iServer); + } + + /// + /// ----------------------------------------------------------------------------- + /// Queries to individual servers directly via IP/Port + /// ----------------------------------------------------------------------------- + /// Request updated ping time and other details from a single server + /// + public static HServerQuery PingServer(uint unIP, ushort usPort, ISteamMatchmakingPingResponse pRequestServersResponse) { + InteropHelp.TestIfAvailableClient(); + return (HServerQuery)NativeMethods.ISteamMatchmakingServers_PingServer(unIP, usPort, (IntPtr)pRequestServersResponse); + } + + /// + /// Request the list of players currently playing on a server + /// + public static HServerQuery PlayerDetails(uint unIP, ushort usPort, ISteamMatchmakingPlayersResponse pRequestServersResponse) { + InteropHelp.TestIfAvailableClient(); + return (HServerQuery)NativeMethods.ISteamMatchmakingServers_PlayerDetails(unIP, usPort, (IntPtr)pRequestServersResponse); + } + + /// + /// Request the list of rules that the server is running (See ISteamGameServer::SetKeyValue() to set the rules server side) + /// + public static HServerQuery ServerRules(uint unIP, ushort usPort, ISteamMatchmakingRulesResponse pRequestServersResponse) { + InteropHelp.TestIfAvailableClient(); + return (HServerQuery)NativeMethods.ISteamMatchmakingServers_ServerRules(unIP, usPort, (IntPtr)pRequestServersResponse); + } + + /// + /// Cancel an outstanding Ping/Players/Rules query from above. You should call this to cancel + /// any in-progress requests before destructing a callback object that may have been passed + /// to one of the above calls to avoid crashing when callbacks occur. + /// + public static void CancelServerQuery(HServerQuery hServerQuery) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamMatchmakingServers_CancelServerQuery(hServerQuery); + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteammatchmaking.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteammatchmaking.cs.meta new file mode 100644 index 0000000..cd76907 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteammatchmaking.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b817d6e4453cca74db6d07b3c4b118e3 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteammusic.cs b/Assets/Editor/Steamworks.NET/autogen/isteammusic.cs new file mode 100644 index 0000000..aec1091 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteammusic.cs @@ -0,0 +1,61 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamMusic { + public static bool BIsEnabled() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusic_BIsEnabled(); + } + + public static bool BIsPlaying() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusic_BIsPlaying(); + } + + public static AudioPlayback_Status GetPlaybackStatus() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusic_GetPlaybackStatus(); + } + + public static void Play() { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamMusic_Play(); + } + + public static void Pause() { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamMusic_Pause(); + } + + public static void PlayPrevious() { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamMusic_PlayPrevious(); + } + + public static void PlayNext() { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamMusic_PlayNext(); + } + + /// + /// volume is between 0.0 and 1.0 + /// + public static void SetVolume(float flVolume) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamMusic_SetVolume(flVolume); + } + + public static float GetVolume() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusic_GetVolume(); + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteammusic.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteammusic.cs.meta new file mode 100644 index 0000000..db370d9 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteammusic.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: ce3a6a597c82f1c4099d8b3aa4622b05 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteammusicremote.cs b/Assets/Editor/Steamworks.NET/autogen/isteammusicremote.cs new file mode 100644 index 0000000..2c750df --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteammusicremote.cs @@ -0,0 +1,204 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamMusicRemote { + /// + /// Service Definition + /// + public static bool RegisterSteamMusicRemote(string pchName) { + InteropHelp.TestIfAvailableClient(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamMusicRemote_RegisterSteamMusicRemote(pchName2); + } + } + + public static bool DeregisterSteamMusicRemote() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_DeregisterSteamMusicRemote(); + } + + public static bool BIsCurrentMusicRemote() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_BIsCurrentMusicRemote(); + } + + public static bool BActivationSuccess(bool bValue) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_BActivationSuccess(bValue); + } + + public static bool SetDisplayName(string pchDisplayName) { + InteropHelp.TestIfAvailableClient(); + using (var pchDisplayName2 = new InteropHelp.UTF8StringHandle(pchDisplayName)) { + return NativeMethods.ISteamMusicRemote_SetDisplayName(pchDisplayName2); + } + } + + public static bool SetPNGIcon_64x64(byte[] pvBuffer, uint cbBufferLength) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_SetPNGIcon_64x64(pvBuffer, cbBufferLength); + } + + /// + /// Abilities for the user interface + /// + public static bool EnablePlayPrevious(bool bValue) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_EnablePlayPrevious(bValue); + } + + public static bool EnablePlayNext(bool bValue) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_EnablePlayNext(bValue); + } + + public static bool EnableShuffled(bool bValue) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_EnableShuffled(bValue); + } + + public static bool EnableLooped(bool bValue) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_EnableLooped(bValue); + } + + public static bool EnableQueue(bool bValue) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_EnableQueue(bValue); + } + + public static bool EnablePlaylists(bool bValue) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_EnablePlaylists(bValue); + } + + /// + /// Status + /// + public static bool UpdatePlaybackStatus(AudioPlayback_Status nStatus) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_UpdatePlaybackStatus(nStatus); + } + + public static bool UpdateShuffled(bool bValue) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_UpdateShuffled(bValue); + } + + public static bool UpdateLooped(bool bValue) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_UpdateLooped(bValue); + } + + /// + /// volume is between 0.0 and 1.0 + /// + public static bool UpdateVolume(float flValue) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_UpdateVolume(flValue); + } + + /// + /// Current Entry + /// + public static bool CurrentEntryWillChange() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_CurrentEntryWillChange(); + } + + public static bool CurrentEntryIsAvailable(bool bAvailable) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_CurrentEntryIsAvailable(bAvailable); + } + + public static bool UpdateCurrentEntryText(string pchText) { + InteropHelp.TestIfAvailableClient(); + using (var pchText2 = new InteropHelp.UTF8StringHandle(pchText)) { + return NativeMethods.ISteamMusicRemote_UpdateCurrentEntryText(pchText2); + } + } + + public static bool UpdateCurrentEntryElapsedSeconds(int nValue) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds(nValue); + } + + public static bool UpdateCurrentEntryCoverArt(byte[] pvBuffer, uint cbBufferLength) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_UpdateCurrentEntryCoverArt(pvBuffer, cbBufferLength); + } + + public static bool CurrentEntryDidChange() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_CurrentEntryDidChange(); + } + + /// + /// Queue + /// + public static bool QueueWillChange() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_QueueWillChange(); + } + + public static bool ResetQueueEntries() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_ResetQueueEntries(); + } + + public static bool SetQueueEntry(int nID, int nPosition, string pchEntryText) { + InteropHelp.TestIfAvailableClient(); + using (var pchEntryText2 = new InteropHelp.UTF8StringHandle(pchEntryText)) { + return NativeMethods.ISteamMusicRemote_SetQueueEntry(nID, nPosition, pchEntryText2); + } + } + + public static bool SetCurrentQueueEntry(int nID) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_SetCurrentQueueEntry(nID); + } + + public static bool QueueDidChange() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_QueueDidChange(); + } + + /// + /// Playlist + /// + public static bool PlaylistWillChange() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_PlaylistWillChange(); + } + + public static bool ResetPlaylistEntries() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_ResetPlaylistEntries(); + } + + public static bool SetPlaylistEntry(int nID, int nPosition, string pchEntryText) { + InteropHelp.TestIfAvailableClient(); + using (var pchEntryText2 = new InteropHelp.UTF8StringHandle(pchEntryText)) { + return NativeMethods.ISteamMusicRemote_SetPlaylistEntry(nID, nPosition, pchEntryText2); + } + } + + public static bool SetCurrentPlaylistEntry(int nID) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_SetCurrentPlaylistEntry(nID); + } + + public static bool PlaylistDidChange() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamMusicRemote_PlaylistDidChange(); + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteammusicremote.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteammusicremote.cs.meta new file mode 100644 index 0000000..040f010 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteammusicremote.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: a1d909ba5ab1f254cb602b4ec60d75e0 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamnetworking.cs b/Assets/Editor/Steamworks.NET/autogen/isteamnetworking.cs new file mode 100644 index 0000000..443ca5f --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamnetworking.cs @@ -0,0 +1,248 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamNetworking { + /// + /// ////////////////////////////////////////////////////////////////////////////////////////// + /// Session-less connection functions + /// automatically establishes NAT-traversing or Relay server connections + /// Sends a P2P packet to the specified user + /// UDP-like, unreliable and a max packet size of 1200 bytes + /// the first packet send may be delayed as the NAT-traversal code runs + /// if we can't get through to the user, an error will be posted via the callback P2PSessionConnectFail_t + /// see EP2PSend enum above for the descriptions of the different ways of sending packets + /// nChannel is a routing number you can use to help route message to different systems - you'll have to call ReadP2PPacket() + /// with the same channel number in order to retrieve the data on the other end + /// using different channels to talk to the same user will still use the same underlying p2p connection, saving on resources + /// + public static bool SendP2PPacket(CSteamID steamIDRemote, byte[] pubData, uint cubData, EP2PSend eP2PSendType, int nChannel = 0) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworking_SendP2PPacket(steamIDRemote, pubData, cubData, eP2PSendType, nChannel); + } + + /// + /// returns true if any data is available for read, and the amount of data that will need to be read + /// + public static bool IsP2PPacketAvailable(out uint pcubMsgSize, int nChannel = 0) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworking_IsP2PPacketAvailable(out pcubMsgSize, nChannel); + } + + /// + /// reads in a packet that has been sent from another user via SendP2PPacket() + /// returns the size of the message and the steamID of the user who sent it in the last two parameters + /// if the buffer passed in is too small, the message will be truncated + /// this call is not blocking, and will return false if no data is available + /// + public static bool ReadP2PPacket(byte[] pubDest, uint cubDest, out uint pcubMsgSize, out CSteamID psteamIDRemote, int nChannel = 0) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworking_ReadP2PPacket(pubDest, cubDest, out pcubMsgSize, out psteamIDRemote, nChannel); + } + + /// + /// AcceptP2PSessionWithUser() should only be called in response to a P2PSessionRequest_t callback + /// P2PSessionRequest_t will be posted if another user tries to send you a packet that you haven't talked to yet + /// if you don't want to talk to the user, just ignore the request + /// if the user continues to send you packets, another P2PSessionRequest_t will be posted periodically + /// this may be called multiple times for a single user + /// (if you've called SendP2PPacket() on the other user, this implicitly accepts the session request) + /// + public static bool AcceptP2PSessionWithUser(CSteamID steamIDRemote) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworking_AcceptP2PSessionWithUser(steamIDRemote); + } + + /// + /// call CloseP2PSessionWithUser() when you're done talking to a user, will free up resources under-the-hood + /// if the remote user tries to send data to you again, another P2PSessionRequest_t callback will be posted + /// + public static bool CloseP2PSessionWithUser(CSteamID steamIDRemote) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworking_CloseP2PSessionWithUser(steamIDRemote); + } + + /// + /// call CloseP2PChannelWithUser() when you're done talking to a user on a specific channel. Once all channels + /// open channels to a user have been closed, the open session to the user will be closed and new data from this + /// user will trigger a P2PSessionRequest_t callback + /// + public static bool CloseP2PChannelWithUser(CSteamID steamIDRemote, int nChannel) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworking_CloseP2PChannelWithUser(steamIDRemote, nChannel); + } + + /// + /// fills out P2PSessionState_t structure with details about the underlying connection to the user + /// should only needed for debugging purposes + /// returns false if no connection exists to the specified user + /// + public static bool GetP2PSessionState(CSteamID steamIDRemote, out P2PSessionState_t pConnectionState) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworking_GetP2PSessionState(steamIDRemote, out pConnectionState); + } + + /// + /// Allow P2P connections to fall back to being relayed through the Steam servers if a direct connection + /// or NAT-traversal cannot be established. Only applies to connections created after setting this value, + /// or to existing connections that need to automatically reconnect after this value is set. + /// P2P packet relay is allowed by default + /// + public static bool AllowP2PPacketRelay(bool bAllow) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworking_AllowP2PPacketRelay(bAllow); + } + + /// + /// ////////////////////////////////////////////////////////////////////////////////////////// + /// LISTEN / CONNECT style interface functions + /// This is an older set of functions designed around the Berkeley TCP sockets model + /// it's preferential that you use the above P2P functions, they're more robust + /// and these older functions will be removed eventually + /// ////////////////////////////////////////////////////////////////////////////////////////// + /// creates a socket and listens others to connect + /// will trigger a SocketStatusCallback_t callback on another client connecting + /// nVirtualP2PPort is the unique ID that the client will connect to, in case you have multiple ports + /// this can usually just be 0 unless you want multiple sets of connections + /// unIP is the local IP address to bind to + /// pass in 0 if you just want the default local IP + /// unPort is the port to use + /// pass in 0 if you don't want users to be able to connect via IP/Port, but expect to be always peer-to-peer connections only + /// + public static SNetListenSocket_t CreateListenSocket(int nVirtualP2PPort, uint nIP, ushort nPort, bool bAllowUseOfPacketRelay) { + InteropHelp.TestIfAvailableClient(); + return (SNetListenSocket_t)NativeMethods.ISteamNetworking_CreateListenSocket(nVirtualP2PPort, nIP, nPort, bAllowUseOfPacketRelay); + } + + /// + /// creates a socket and begin connection to a remote destination + /// can connect via a known steamID (client or game server), or directly to an IP + /// on success will trigger a SocketStatusCallback_t callback + /// on failure or timeout will trigger a SocketStatusCallback_t callback with a failure code in m_eSNetSocketState + /// + public static SNetSocket_t CreateP2PConnectionSocket(CSteamID steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay) { + InteropHelp.TestIfAvailableClient(); + return (SNetSocket_t)NativeMethods.ISteamNetworking_CreateP2PConnectionSocket(steamIDTarget, nVirtualPort, nTimeoutSec, bAllowUseOfPacketRelay); + } + + public static SNetSocket_t CreateConnectionSocket(uint nIP, ushort nPort, int nTimeoutSec) { + InteropHelp.TestIfAvailableClient(); + return (SNetSocket_t)NativeMethods.ISteamNetworking_CreateConnectionSocket(nIP, nPort, nTimeoutSec); + } + + /// + /// disconnects the connection to the socket, if any, and invalidates the handle + /// any unread data on the socket will be thrown away + /// if bNotifyRemoteEnd is set, socket will not be completely destroyed until the remote end acknowledges the disconnect + /// + public static bool DestroySocket(SNetSocket_t hSocket, bool bNotifyRemoteEnd) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworking_DestroySocket(hSocket, bNotifyRemoteEnd); + } + + /// + /// destroying a listen socket will automatically kill all the regular sockets generated from it + /// + public static bool DestroyListenSocket(SNetListenSocket_t hSocket, bool bNotifyRemoteEnd) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworking_DestroyListenSocket(hSocket, bNotifyRemoteEnd); + } + + /// + /// sending data + /// must be a handle to a connected socket + /// data is all sent via UDP, and thus send sizes are limited to 1200 bytes; after this, many routers will start dropping packets + /// use the reliable flag with caution; although the resend rate is pretty aggressive, + /// it can still cause stalls in receiving data (like TCP) + /// + public static bool SendDataOnSocket(SNetSocket_t hSocket, IntPtr pubData, uint cubData, bool bReliable) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworking_SendDataOnSocket(hSocket, pubData, cubData, bReliable); + } + + /// + /// receiving data + /// returns false if there is no data remaining + /// fills out *pcubMsgSize with the size of the next message, in bytes + /// + public static bool IsDataAvailableOnSocket(SNetSocket_t hSocket, out uint pcubMsgSize) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworking_IsDataAvailableOnSocket(hSocket, out pcubMsgSize); + } + + /// + /// fills in pubDest with the contents of the message + /// messages are always complete, of the same size as was sent (i.e. packetized, not streaming) + /// if *pcubMsgSize < cubDest, only partial data is written + /// returns false if no data is available + /// + public static bool RetrieveDataFromSocket(SNetSocket_t hSocket, IntPtr pubDest, uint cubDest, out uint pcubMsgSize) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworking_RetrieveDataFromSocket(hSocket, pubDest, cubDest, out pcubMsgSize); + } + + /// + /// checks for data from any socket that has been connected off this listen socket + /// returns false if there is no data remaining + /// fills out *pcubMsgSize with the size of the next message, in bytes + /// fills out *phSocket with the socket that data is available on + /// + public static bool IsDataAvailable(SNetListenSocket_t hListenSocket, out uint pcubMsgSize, out SNetSocket_t phSocket) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworking_IsDataAvailable(hListenSocket, out pcubMsgSize, out phSocket); + } + + /// + /// retrieves data from any socket that has been connected off this listen socket + /// fills in pubDest with the contents of the message + /// messages are always complete, of the same size as was sent (i.e. packetized, not streaming) + /// if *pcubMsgSize < cubDest, only partial data is written + /// returns false if no data is available + /// fills out *phSocket with the socket that data is available on + /// + public static bool RetrieveData(SNetListenSocket_t hListenSocket, IntPtr pubDest, uint cubDest, out uint pcubMsgSize, out SNetSocket_t phSocket) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworking_RetrieveData(hListenSocket, pubDest, cubDest, out pcubMsgSize, out phSocket); + } + + /// + /// returns information about the specified socket, filling out the contents of the pointers + /// + public static bool GetSocketInfo(SNetSocket_t hSocket, out CSteamID pSteamIDRemote, out int peSocketStatus, out uint punIPRemote, out ushort punPortRemote) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworking_GetSocketInfo(hSocket, out pSteamIDRemote, out peSocketStatus, out punIPRemote, out punPortRemote); + } + + /// + /// returns which local port the listen socket is bound to + /// *pnIP and *pnPort will be 0 if the socket is set to listen for P2P connections only + /// + public static bool GetListenSocketInfo(SNetListenSocket_t hListenSocket, out uint pnIP, out ushort pnPort) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworking_GetListenSocketInfo(hListenSocket, out pnIP, out pnPort); + } + + /// + /// returns true to describe how the socket ended up connecting + /// + public static ESNetSocketConnectionType GetSocketConnectionType(SNetSocket_t hSocket) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworking_GetSocketConnectionType(hSocket); + } + + /// + /// max packet size, in bytes + /// + public static int GetMaxPacketSize(SNetSocket_t hSocket) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworking_GetMaxPacketSize(hSocket); + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamnetworking.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamnetworking.cs.meta new file mode 100644 index 0000000..554c650 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamnetworking.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 8b88722ad0c891f4291b5ce2d74cc811 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamremotestorage.cs b/Assets/Editor/Steamworks.NET/autogen/isteamremotestorage.cs new file mode 100644 index 0000000..f1118d4 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamremotestorage.cs @@ -0,0 +1,434 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamRemoteStorage { + /// + /// NOTE + /// Filenames are case-insensitive, and will be converted to lowercase automatically. + /// So "foo.bar" and "Foo.bar" are the same file, and if you write "Foo.bar" then + /// iterate the files, the filename returned will be "foo.bar". + /// file operations + /// + public static bool FileWrite(string pchFile, byte[] pvData, int cubData) { + InteropHelp.TestIfAvailableClient(); + using (var pchFile2 = new InteropHelp.UTF8StringHandle(pchFile)) { + return NativeMethods.ISteamRemoteStorage_FileWrite(pchFile2, pvData, cubData); + } + } + + public static int FileRead(string pchFile, byte[] pvData, int cubDataToRead) { + InteropHelp.TestIfAvailableClient(); + using (var pchFile2 = new InteropHelp.UTF8StringHandle(pchFile)) { + return NativeMethods.ISteamRemoteStorage_FileRead(pchFile2, pvData, cubDataToRead); + } + } + + public static bool FileForget(string pchFile) { + InteropHelp.TestIfAvailableClient(); + using (var pchFile2 = new InteropHelp.UTF8StringHandle(pchFile)) { + return NativeMethods.ISteamRemoteStorage_FileForget(pchFile2); + } + } + + public static bool FileDelete(string pchFile) { + InteropHelp.TestIfAvailableClient(); + using (var pchFile2 = new InteropHelp.UTF8StringHandle(pchFile)) { + return NativeMethods.ISteamRemoteStorage_FileDelete(pchFile2); + } + } + + public static SteamAPICall_t FileShare(string pchFile) { + InteropHelp.TestIfAvailableClient(); + using (var pchFile2 = new InteropHelp.UTF8StringHandle(pchFile)) { + return (SteamAPICall_t)NativeMethods.ISteamRemoteStorage_FileShare(pchFile2); + } + } + + public static bool SetSyncPlatforms(string pchFile, ERemoteStoragePlatform eRemoteStoragePlatform) { + InteropHelp.TestIfAvailableClient(); + using (var pchFile2 = new InteropHelp.UTF8StringHandle(pchFile)) { + return NativeMethods.ISteamRemoteStorage_SetSyncPlatforms(pchFile2, eRemoteStoragePlatform); + } + } + + /// + /// file operations that cause network IO + /// + public static UGCFileWriteStreamHandle_t FileWriteStreamOpen(string pchFile) { + InteropHelp.TestIfAvailableClient(); + using (var pchFile2 = new InteropHelp.UTF8StringHandle(pchFile)) { + return (UGCFileWriteStreamHandle_t)NativeMethods.ISteamRemoteStorage_FileWriteStreamOpen(pchFile2); + } + } + + public static bool FileWriteStreamWriteChunk(UGCFileWriteStreamHandle_t writeHandle, byte[] pvData, int cubData) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamRemoteStorage_FileWriteStreamWriteChunk(writeHandle, pvData, cubData); + } + + public static bool FileWriteStreamClose(UGCFileWriteStreamHandle_t writeHandle) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamRemoteStorage_FileWriteStreamClose(writeHandle); + } + + public static bool FileWriteStreamCancel(UGCFileWriteStreamHandle_t writeHandle) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamRemoteStorage_FileWriteStreamCancel(writeHandle); + } + + /// + /// file information + /// + public static bool FileExists(string pchFile) { + InteropHelp.TestIfAvailableClient(); + using (var pchFile2 = new InteropHelp.UTF8StringHandle(pchFile)) { + return NativeMethods.ISteamRemoteStorage_FileExists(pchFile2); + } + } + + public static bool FilePersisted(string pchFile) { + InteropHelp.TestIfAvailableClient(); + using (var pchFile2 = new InteropHelp.UTF8StringHandle(pchFile)) { + return NativeMethods.ISteamRemoteStorage_FilePersisted(pchFile2); + } + } + + public static int GetFileSize(string pchFile) { + InteropHelp.TestIfAvailableClient(); + using (var pchFile2 = new InteropHelp.UTF8StringHandle(pchFile)) { + return NativeMethods.ISteamRemoteStorage_GetFileSize(pchFile2); + } + } + + public static long GetFileTimestamp(string pchFile) { + InteropHelp.TestIfAvailableClient(); + using (var pchFile2 = new InteropHelp.UTF8StringHandle(pchFile)) { + return NativeMethods.ISteamRemoteStorage_GetFileTimestamp(pchFile2); + } + } + + public static ERemoteStoragePlatform GetSyncPlatforms(string pchFile) { + InteropHelp.TestIfAvailableClient(); + using (var pchFile2 = new InteropHelp.UTF8StringHandle(pchFile)) { + return NativeMethods.ISteamRemoteStorage_GetSyncPlatforms(pchFile2); + } + } + + /// + /// iteration + /// + public static int GetFileCount() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamRemoteStorage_GetFileCount(); + } + + public static string GetFileNameAndSize(int iFile, out int pnFileSizeInBytes) { + InteropHelp.TestIfAvailableClient(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamRemoteStorage_GetFileNameAndSize(iFile, out pnFileSizeInBytes)); + } + + /// + /// configuration management + /// + public static bool GetQuota(out int pnTotalBytes, out int puAvailableBytes) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamRemoteStorage_GetQuota(out pnTotalBytes, out puAvailableBytes); + } + + public static bool IsCloudEnabledForAccount() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamRemoteStorage_IsCloudEnabledForAccount(); + } + + public static bool IsCloudEnabledForApp() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamRemoteStorage_IsCloudEnabledForApp(); + } + + public static void SetCloudEnabledForApp(bool bEnabled) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamRemoteStorage_SetCloudEnabledForApp(bEnabled); + } + + /// + /// user generated content + /// Downloads a UGC file. A priority value of 0 will download the file immediately, + /// otherwise it will wait to download the file until all downloads with a lower priority + /// value are completed. Downloads with equal priority will occur simultaneously. + /// + public static SteamAPICall_t UGCDownload(UGCHandle_t hContent, uint unPriority) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamRemoteStorage_UGCDownload(hContent, unPriority); + } + + /// + /// Gets the amount of data downloaded so far for a piece of content. pnBytesExpected can be 0 if function returns false + /// or if the transfer hasn't started yet, so be careful to check for that before dividing to get a percentage + /// + public static bool GetUGCDownloadProgress(UGCHandle_t hContent, out int pnBytesDownloaded, out int pnBytesExpected) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamRemoteStorage_GetUGCDownloadProgress(hContent, out pnBytesDownloaded, out pnBytesExpected); + } + + /// + /// Gets metadata for a file after it has been downloaded. This is the same metadata given in the RemoteStorageDownloadUGCResult_t call result + /// + public static bool GetUGCDetails(UGCHandle_t hContent, out AppId_t pnAppID, out string ppchName, out int pnFileSizeInBytes, out CSteamID pSteamIDOwner) { + InteropHelp.TestIfAvailableClient(); + IntPtr ppchName2; + bool ret = NativeMethods.ISteamRemoteStorage_GetUGCDetails(hContent, out pnAppID, out ppchName2, out pnFileSizeInBytes, out pSteamIDOwner); + ppchName = ret ? InteropHelp.PtrToStringUTF8(ppchName2) : null; + return ret; + } + + /// + /// After download, gets the content of the file. + /// Small files can be read all at once by calling this function with an offset of 0 and cubDataToRead equal to the size of the file. + /// Larger files can be read in chunks to reduce memory usage (since both sides of the IPC client and the game itself must allocate + /// enough memory for each chunk). Once the last byte is read, the file is implicitly closed and further calls to UGCRead will fail + /// unless UGCDownload is called again. + /// For especially large files (anything over 100MB) it is a requirement that the file is read in chunks. + /// + public static int UGCRead(UGCHandle_t hContent, byte[] pvData, int cubDataToRead, uint cOffset, EUGCReadAction eAction) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamRemoteStorage_UGCRead(hContent, pvData, cubDataToRead, cOffset, eAction); + } + + /// + /// Functions to iterate through UGC that has finished downloading but has not yet been read via UGCRead() + /// + public static int GetCachedUGCCount() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamRemoteStorage_GetCachedUGCCount(); + } + + public static UGCHandle_t GetCachedUGCHandle(int iCachedContent) { + InteropHelp.TestIfAvailableClient(); + return (UGCHandle_t)NativeMethods.ISteamRemoteStorage_GetCachedUGCHandle(iCachedContent); + } +#if _PS3 || _SERVER + /// + /// The following functions are only necessary on the Playstation 3. On PC & Mac, the Steam client will handle these operations for you + /// On Playstation 3, the game controls which files are stored in the cloud, via FilePersist, FileFetch, and FileForget. + /// Connect to Steam and get a list of files in the Cloud - results in a RemoteStorageAppSyncStatusCheck_t callback + /// + public static void GetFileListFromServer() { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamRemoteStorage_GetFileListFromServer(); + } + + /// + /// Indicate this file should be downloaded in the next sync + /// + public static bool FileFetch(string pchFile) { + InteropHelp.TestIfAvailableClient(); + using (var pchFile2 = new InteropHelp.UTF8StringHandle(pchFile)) { + return NativeMethods.ISteamRemoteStorage_FileFetch(pchFile2); + } + } + + /// + /// Indicate this file should be persisted in the next sync + /// + public static bool FilePersist(string pchFile) { + InteropHelp.TestIfAvailableClient(); + using (var pchFile2 = new InteropHelp.UTF8StringHandle(pchFile)) { + return NativeMethods.ISteamRemoteStorage_FilePersist(pchFile2); + } + } + + /// + /// Pull any requested files down from the Cloud - results in a RemoteStorageAppSyncedClient_t callback + /// + public static bool SynchronizeToClient() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamRemoteStorage_SynchronizeToClient(); + } + + /// + /// Upload any requested files to the Cloud - results in a RemoteStorageAppSyncedServer_t callback + /// + public static bool SynchronizeToServer() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamRemoteStorage_SynchronizeToServer(); + } + + /// + /// Reset any fetch/persist/etc requests + /// + public static bool ResetFileRequestState() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamRemoteStorage_ResetFileRequestState(); + } +#endif + /// + /// publishing UGC + /// + public static SteamAPICall_t PublishWorkshopFile(string pchFile, string pchPreviewFile, AppId_t nConsumerAppId, string pchTitle, string pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, System.Collections.Generic.IList pTags, EWorkshopFileType eWorkshopFileType) { + InteropHelp.TestIfAvailableClient(); + using (var pchFile2 = new InteropHelp.UTF8StringHandle(pchFile)) + using (var pchPreviewFile2 = new InteropHelp.UTF8StringHandle(pchPreviewFile)) + using (var pchTitle2 = new InteropHelp.UTF8StringHandle(pchTitle)) + using (var pchDescription2 = new InteropHelp.UTF8StringHandle(pchDescription)) { + return (SteamAPICall_t)NativeMethods.ISteamRemoteStorage_PublishWorkshopFile(pchFile2, pchPreviewFile2, nConsumerAppId, pchTitle2, pchDescription2, eVisibility, new InteropHelp.SteamParamStringArray(pTags), eWorkshopFileType); + } + } + + public static PublishedFileUpdateHandle_t CreatePublishedFileUpdateRequest(PublishedFileId_t unPublishedFileId) { + InteropHelp.TestIfAvailableClient(); + return (PublishedFileUpdateHandle_t)NativeMethods.ISteamRemoteStorage_CreatePublishedFileUpdateRequest(unPublishedFileId); + } + + public static bool UpdatePublishedFileFile(PublishedFileUpdateHandle_t updateHandle, string pchFile) { + InteropHelp.TestIfAvailableClient(); + using (var pchFile2 = new InteropHelp.UTF8StringHandle(pchFile)) { + return NativeMethods.ISteamRemoteStorage_UpdatePublishedFileFile(updateHandle, pchFile2); + } + } + + public static bool UpdatePublishedFilePreviewFile(PublishedFileUpdateHandle_t updateHandle, string pchPreviewFile) { + InteropHelp.TestIfAvailableClient(); + using (var pchPreviewFile2 = new InteropHelp.UTF8StringHandle(pchPreviewFile)) { + return NativeMethods.ISteamRemoteStorage_UpdatePublishedFilePreviewFile(updateHandle, pchPreviewFile2); + } + } + + public static bool UpdatePublishedFileTitle(PublishedFileUpdateHandle_t updateHandle, string pchTitle) { + InteropHelp.TestIfAvailableClient(); + using (var pchTitle2 = new InteropHelp.UTF8StringHandle(pchTitle)) { + return NativeMethods.ISteamRemoteStorage_UpdatePublishedFileTitle(updateHandle, pchTitle2); + } + } + + public static bool UpdatePublishedFileDescription(PublishedFileUpdateHandle_t updateHandle, string pchDescription) { + InteropHelp.TestIfAvailableClient(); + using (var pchDescription2 = new InteropHelp.UTF8StringHandle(pchDescription)) { + return NativeMethods.ISteamRemoteStorage_UpdatePublishedFileDescription(updateHandle, pchDescription2); + } + } + + public static bool UpdatePublishedFileVisibility(PublishedFileUpdateHandle_t updateHandle, ERemoteStoragePublishedFileVisibility eVisibility) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamRemoteStorage_UpdatePublishedFileVisibility(updateHandle, eVisibility); + } + + public static bool UpdatePublishedFileTags(PublishedFileUpdateHandle_t updateHandle, System.Collections.Generic.IList pTags) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamRemoteStorage_UpdatePublishedFileTags(updateHandle, new InteropHelp.SteamParamStringArray(pTags)); + } + + public static SteamAPICall_t CommitPublishedFileUpdate(PublishedFileUpdateHandle_t updateHandle) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamRemoteStorage_CommitPublishedFileUpdate(updateHandle); + } + + /// + /// Gets published file details for the given publishedfileid. If unMaxSecondsOld is greater than 0, + /// cached data may be returned, depending on how long ago it was cached. A value of 0 will force a refresh. + /// A value of k_WorkshopForceLoadPublishedFileDetailsFromCache will use cached data if it exists, no matter how old it is. + /// + public static SteamAPICall_t GetPublishedFileDetails(PublishedFileId_t unPublishedFileId, uint unMaxSecondsOld) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamRemoteStorage_GetPublishedFileDetails(unPublishedFileId, unMaxSecondsOld); + } + + public static SteamAPICall_t DeletePublishedFile(PublishedFileId_t unPublishedFileId) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamRemoteStorage_DeletePublishedFile(unPublishedFileId); + } + + /// + /// enumerate the files that the current user published with this app + /// + public static SteamAPICall_t EnumerateUserPublishedFiles(uint unStartIndex) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamRemoteStorage_EnumerateUserPublishedFiles(unStartIndex); + } + + public static SteamAPICall_t SubscribePublishedFile(PublishedFileId_t unPublishedFileId) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamRemoteStorage_SubscribePublishedFile(unPublishedFileId); + } + + public static SteamAPICall_t EnumerateUserSubscribedFiles(uint unStartIndex) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamRemoteStorage_EnumerateUserSubscribedFiles(unStartIndex); + } + + public static SteamAPICall_t UnsubscribePublishedFile(PublishedFileId_t unPublishedFileId) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamRemoteStorage_UnsubscribePublishedFile(unPublishedFileId); + } + + public static bool UpdatePublishedFileSetChangeDescription(PublishedFileUpdateHandle_t updateHandle, string pchChangeDescription) { + InteropHelp.TestIfAvailableClient(); + using (var pchChangeDescription2 = new InteropHelp.UTF8StringHandle(pchChangeDescription)) { + return NativeMethods.ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription(updateHandle, pchChangeDescription2); + } + } + + public static SteamAPICall_t GetPublishedItemVoteDetails(PublishedFileId_t unPublishedFileId) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamRemoteStorage_GetPublishedItemVoteDetails(unPublishedFileId); + } + + public static SteamAPICall_t UpdateUserPublishedItemVote(PublishedFileId_t unPublishedFileId, bool bVoteUp) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamRemoteStorage_UpdateUserPublishedItemVote(unPublishedFileId, bVoteUp); + } + + public static SteamAPICall_t GetUserPublishedItemVoteDetails(PublishedFileId_t unPublishedFileId) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamRemoteStorage_GetUserPublishedItemVoteDetails(unPublishedFileId); + } + + public static SteamAPICall_t EnumerateUserSharedWorkshopFiles(CSteamID steamId, uint unStartIndex, System.Collections.Generic.IList pRequiredTags, System.Collections.Generic.IList pExcludedTags) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles(steamId, unStartIndex, new InteropHelp.SteamParamStringArray(pRequiredTags), new InteropHelp.SteamParamStringArray(pExcludedTags)); + } + + public static SteamAPICall_t PublishVideo(EWorkshopVideoProvider eVideoProvider, string pchVideoAccount, string pchVideoIdentifier, string pchPreviewFile, AppId_t nConsumerAppId, string pchTitle, string pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, System.Collections.Generic.IList pTags) { + InteropHelp.TestIfAvailableClient(); + using (var pchVideoAccount2 = new InteropHelp.UTF8StringHandle(pchVideoAccount)) + using (var pchVideoIdentifier2 = new InteropHelp.UTF8StringHandle(pchVideoIdentifier)) + using (var pchPreviewFile2 = new InteropHelp.UTF8StringHandle(pchPreviewFile)) + using (var pchTitle2 = new InteropHelp.UTF8StringHandle(pchTitle)) + using (var pchDescription2 = new InteropHelp.UTF8StringHandle(pchDescription)) { + return (SteamAPICall_t)NativeMethods.ISteamRemoteStorage_PublishVideo(eVideoProvider, pchVideoAccount2, pchVideoIdentifier2, pchPreviewFile2, nConsumerAppId, pchTitle2, pchDescription2, eVisibility, new InteropHelp.SteamParamStringArray(pTags)); + } + } + + public static SteamAPICall_t SetUserPublishedFileAction(PublishedFileId_t unPublishedFileId, EWorkshopFileAction eAction) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamRemoteStorage_SetUserPublishedFileAction(unPublishedFileId, eAction); + } + + public static SteamAPICall_t EnumeratePublishedFilesByUserAction(EWorkshopFileAction eAction, uint unStartIndex) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamRemoteStorage_EnumeratePublishedFilesByUserAction(eAction, unStartIndex); + } + + /// + /// this method enumerates the public view of workshop files + /// + public static SteamAPICall_t EnumeratePublishedWorkshopFiles(EWorkshopEnumerationType eEnumerationType, uint unStartIndex, uint unCount, uint unDays, System.Collections.Generic.IList pTags, System.Collections.Generic.IList pUserTags) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamRemoteStorage_EnumeratePublishedWorkshopFiles(eEnumerationType, unStartIndex, unCount, unDays, new InteropHelp.SteamParamStringArray(pTags), new InteropHelp.SteamParamStringArray(pUserTags)); + } + + public static SteamAPICall_t UGCDownloadToLocation(UGCHandle_t hContent, string pchLocation, uint unPriority) { + InteropHelp.TestIfAvailableClient(); + using (var pchLocation2 = new InteropHelp.UTF8StringHandle(pchLocation)) { + return (SteamAPICall_t)NativeMethods.ISteamRemoteStorage_UGCDownloadToLocation(hContent, pchLocation2, unPriority); + } + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamremotestorage.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamremotestorage.cs.meta new file mode 100644 index 0000000..124286c --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamremotestorage.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 3d44e849fdf45f546b4daf89fc81a172 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamscreenshots.cs b/Assets/Editor/Steamworks.NET/autogen/isteamscreenshots.cs new file mode 100644 index 0000000..6a0cf2b --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamscreenshots.cs @@ -0,0 +1,80 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamScreenshots { + /// + /// Writes a screenshot to the user's screenshot library given the raw image data, which must be in RGB format. + /// The return value is a handle that is valid for the duration of the game process and can be used to apply tags. + /// + public static ScreenshotHandle WriteScreenshot(byte[] pubRGB, uint cubRGB, int nWidth, int nHeight) { + InteropHelp.TestIfAvailableClient(); + return (ScreenshotHandle)NativeMethods.ISteamScreenshots_WriteScreenshot(pubRGB, cubRGB, nWidth, nHeight); + } + + /// + /// Adds a screenshot to the user's screenshot library from disk. If a thumbnail is provided, it must be 200 pixels wide and the same aspect ratio + /// as the screenshot, otherwise a thumbnail will be generated if the user uploads the screenshot. The screenshots must be in either JPEG or TGA format. + /// The return value is a handle that is valid for the duration of the game process and can be used to apply tags. + /// JPEG, TGA, and PNG formats are supported. + /// + public static ScreenshotHandle AddScreenshotToLibrary(string pchFilename, string pchThumbnailFilename, int nWidth, int nHeight) { + InteropHelp.TestIfAvailableClient(); + using (var pchFilename2 = new InteropHelp.UTF8StringHandle(pchFilename)) + using (var pchThumbnailFilename2 = new InteropHelp.UTF8StringHandle(pchThumbnailFilename)) { + return (ScreenshotHandle)NativeMethods.ISteamScreenshots_AddScreenshotToLibrary(pchFilename2, pchThumbnailFilename2, nWidth, nHeight); + } + } + + /// + /// Causes the Steam overlay to take a screenshot. If screenshots are being hooked by the game then a ScreenshotRequested_t callback is sent back to the game instead. + /// + public static void TriggerScreenshot() { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamScreenshots_TriggerScreenshot(); + } + + /// + /// Toggles whether the overlay handles screenshots when the user presses the screenshot hotkey, or the game handles them. If the game is hooking screenshots, + /// then the ScreenshotRequested_t callback will be sent if the user presses the hotkey, and the game is expected to call WriteScreenshot or AddScreenshotToLibrary + /// in response. + /// + public static void HookScreenshots(bool bHook) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamScreenshots_HookScreenshots(bHook); + } + + /// + /// Sets metadata about a screenshot's location (for example, the name of the map) + /// + public static bool SetLocation(ScreenshotHandle hScreenshot, string pchLocation) { + InteropHelp.TestIfAvailableClient(); + using (var pchLocation2 = new InteropHelp.UTF8StringHandle(pchLocation)) { + return NativeMethods.ISteamScreenshots_SetLocation(hScreenshot, pchLocation2); + } + } + + /// + /// Tags a user as being visible in the screenshot + /// + public static bool TagUser(ScreenshotHandle hScreenshot, CSteamID steamID) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamScreenshots_TagUser(hScreenshot, steamID); + } + + /// + /// Tags a published file as being visible in the screenshot + /// + public static bool TagPublishedFile(ScreenshotHandle hScreenshot, PublishedFileId_t unPublishedFileID) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamScreenshots_TagPublishedFile(hScreenshot, unPublishedFileID); + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamscreenshots.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamscreenshots.cs.meta new file mode 100644 index 0000000..95621ac --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamscreenshots.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 2096b22b27414334cb11cb2d9057840b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamugc.cs b/Assets/Editor/Steamworks.NET/autogen/isteamugc.cs new file mode 100644 index 0000000..43eb989 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamugc.cs @@ -0,0 +1,448 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamUGC { + /// + /// Query UGC associated with a user. Creator app id or consumer app id must be valid and be set to the current running app. unPage should start at 1. + /// + public static UGCQueryHandle_t CreateQueryUserUGCRequest(AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint unPage) { + InteropHelp.TestIfAvailableClient(); + return (UGCQueryHandle_t)NativeMethods.ISteamUGC_CreateQueryUserUGCRequest(unAccountID, eListType, eMatchingUGCType, eSortOrder, nCreatorAppID, nConsumerAppID, unPage); + } + + /// + /// Query for all matching UGC. Creator app id or consumer app id must be valid and be set to the current running app. unPage should start at 1. + /// + public static UGCQueryHandle_t CreateQueryAllUGCRequest(EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint unPage) { + InteropHelp.TestIfAvailableClient(); + return (UGCQueryHandle_t)NativeMethods.ISteamUGC_CreateQueryAllUGCRequest(eQueryType, eMatchingeMatchingUGCTypeFileType, nCreatorAppID, nConsumerAppID, unPage); + } + + /// + /// Query for the details of the given published file ids (the RequestUGCDetails call is deprecated and replaced with this) + /// + public static UGCQueryHandle_t CreateQueryUGCDetailsRequest(PublishedFileId_t[] pvecPublishedFileID, uint unNumPublishedFileIDs) { + InteropHelp.TestIfAvailableClient(); + return (UGCQueryHandle_t)NativeMethods.ISteamUGC_CreateQueryUGCDetailsRequest(pvecPublishedFileID, unNumPublishedFileIDs); + } + + /// + /// Send the query to Steam + /// + public static SteamAPICall_t SendQueryUGCRequest(UGCQueryHandle_t handle) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamUGC_SendQueryUGCRequest(handle); + } + + /// + /// Retrieve an individual result after receiving the callback for querying UGC + /// + public static bool GetQueryUGCResult(UGCQueryHandle_t handle, uint index, out SteamUGCDetails_t pDetails) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_GetQueryUGCResult(handle, index, out pDetails); + } + + public static bool GetQueryUGCPreviewURL(UGCQueryHandle_t handle, uint index, out string pchURL, uint cchURLSize) { + InteropHelp.TestIfAvailableClient(); + IntPtr pchURL2 = Marshal.AllocHGlobal((int)cchURLSize); + bool ret = NativeMethods.ISteamUGC_GetQueryUGCPreviewURL(handle, index, pchURL2, cchURLSize); + pchURL = ret ? InteropHelp.PtrToStringUTF8(pchURL2) : null; + Marshal.FreeHGlobal(pchURL2); + return ret; + } + + public static bool GetQueryUGCMetadata(UGCQueryHandle_t handle, uint index, out string pchMetadata, uint cchMetadatasize) { + InteropHelp.TestIfAvailableClient(); + IntPtr pchMetadata2 = Marshal.AllocHGlobal((int)cchMetadatasize); + bool ret = NativeMethods.ISteamUGC_GetQueryUGCMetadata(handle, index, pchMetadata2, cchMetadatasize); + pchMetadata = ret ? InteropHelp.PtrToStringUTF8(pchMetadata2) : null; + Marshal.FreeHGlobal(pchMetadata2); + return ret; + } + + public static bool GetQueryUGCChildren(UGCQueryHandle_t handle, uint index, PublishedFileId_t[] pvecPublishedFileID, uint cMaxEntries) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_GetQueryUGCChildren(handle, index, pvecPublishedFileID, cMaxEntries); + } + + public static bool GetQueryUGCStatistic(UGCQueryHandle_t handle, uint index, EItemStatistic eStatType, out uint pStatValue) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_GetQueryUGCStatistic(handle, index, eStatType, out pStatValue); + } + + public static uint GetQueryUGCNumAdditionalPreviews(UGCQueryHandle_t handle, uint index) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_GetQueryUGCNumAdditionalPreviews(handle, index); + } + + public static bool GetQueryUGCAdditionalPreview(UGCQueryHandle_t handle, uint index, uint previewIndex, out string pchURLOrVideoID, uint cchURLSize, out bool pbIsImage) { + InteropHelp.TestIfAvailableClient(); + IntPtr pchURLOrVideoID2 = Marshal.AllocHGlobal((int)cchURLSize); + bool ret = NativeMethods.ISteamUGC_GetQueryUGCAdditionalPreview(handle, index, previewIndex, pchURLOrVideoID2, cchURLSize, out pbIsImage); + pchURLOrVideoID = ret ? InteropHelp.PtrToStringUTF8(pchURLOrVideoID2) : null; + Marshal.FreeHGlobal(pchURLOrVideoID2); + return ret; + } + + public static uint GetQueryUGCNumKeyValueTags(UGCQueryHandle_t handle, uint index) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_GetQueryUGCNumKeyValueTags(handle, index); + } + + public static bool GetQueryUGCKeyValueTag(UGCQueryHandle_t handle, uint index, uint keyValueTagIndex, out string pchKey, uint cchKeySize, out string pchValue, uint cchValueSize) { + InteropHelp.TestIfAvailableClient(); + IntPtr pchKey2 = Marshal.AllocHGlobal((int)cchKeySize); + IntPtr pchValue2 = Marshal.AllocHGlobal((int)cchValueSize); + bool ret = NativeMethods.ISteamUGC_GetQueryUGCKeyValueTag(handle, index, keyValueTagIndex, pchKey2, cchKeySize, pchValue2, cchValueSize); + pchKey = ret ? InteropHelp.PtrToStringUTF8(pchKey2) : null; + Marshal.FreeHGlobal(pchKey2); + pchValue = ret ? InteropHelp.PtrToStringUTF8(pchValue2) : null; + Marshal.FreeHGlobal(pchValue2); + return ret; + } + + /// + /// Release the request to free up memory, after retrieving results + /// + public static bool ReleaseQueryUGCRequest(UGCQueryHandle_t handle) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_ReleaseQueryUGCRequest(handle); + } + + /// + /// Options to set for querying UGC + /// + public static bool AddRequiredTag(UGCQueryHandle_t handle, string pTagName) { + InteropHelp.TestIfAvailableClient(); + using (var pTagName2 = new InteropHelp.UTF8StringHandle(pTagName)) { + return NativeMethods.ISteamUGC_AddRequiredTag(handle, pTagName2); + } + } + + public static bool AddExcludedTag(UGCQueryHandle_t handle, string pTagName) { + InteropHelp.TestIfAvailableClient(); + using (var pTagName2 = new InteropHelp.UTF8StringHandle(pTagName)) { + return NativeMethods.ISteamUGC_AddExcludedTag(handle, pTagName2); + } + } + + public static bool SetReturnKeyValueTags(UGCQueryHandle_t handle, bool bReturnKeyValueTags) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_SetReturnKeyValueTags(handle, bReturnKeyValueTags); + } + + public static bool SetReturnLongDescription(UGCQueryHandle_t handle, bool bReturnLongDescription) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_SetReturnLongDescription(handle, bReturnLongDescription); + } + + public static bool SetReturnMetadata(UGCQueryHandle_t handle, bool bReturnMetadata) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_SetReturnMetadata(handle, bReturnMetadata); + } + + public static bool SetReturnChildren(UGCQueryHandle_t handle, bool bReturnChildren) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_SetReturnChildren(handle, bReturnChildren); + } + + public static bool SetReturnAdditionalPreviews(UGCQueryHandle_t handle, bool bReturnAdditionalPreviews) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_SetReturnAdditionalPreviews(handle, bReturnAdditionalPreviews); + } + + public static bool SetReturnTotalOnly(UGCQueryHandle_t handle, bool bReturnTotalOnly) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_SetReturnTotalOnly(handle, bReturnTotalOnly); + } + + public static bool SetLanguage(UGCQueryHandle_t handle, string pchLanguage) { + InteropHelp.TestIfAvailableClient(); + using (var pchLanguage2 = new InteropHelp.UTF8StringHandle(pchLanguage)) { + return NativeMethods.ISteamUGC_SetLanguage(handle, pchLanguage2); + } + } + + public static bool SetAllowCachedResponse(UGCQueryHandle_t handle, uint unMaxAgeSeconds) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_SetAllowCachedResponse(handle, unMaxAgeSeconds); + } + + /// + /// Options only for querying user UGC + /// + public static bool SetCloudFileNameFilter(UGCQueryHandle_t handle, string pMatchCloudFileName) { + InteropHelp.TestIfAvailableClient(); + using (var pMatchCloudFileName2 = new InteropHelp.UTF8StringHandle(pMatchCloudFileName)) { + return NativeMethods.ISteamUGC_SetCloudFileNameFilter(handle, pMatchCloudFileName2); + } + } + + /// + /// Options only for querying all UGC + /// + public static bool SetMatchAnyTag(UGCQueryHandle_t handle, bool bMatchAnyTag) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_SetMatchAnyTag(handle, bMatchAnyTag); + } + + public static bool SetSearchText(UGCQueryHandle_t handle, string pSearchText) { + InteropHelp.TestIfAvailableClient(); + using (var pSearchText2 = new InteropHelp.UTF8StringHandle(pSearchText)) { + return NativeMethods.ISteamUGC_SetSearchText(handle, pSearchText2); + } + } + + public static bool SetRankedByTrendDays(UGCQueryHandle_t handle, uint unDays) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_SetRankedByTrendDays(handle, unDays); + } + + public static bool AddRequiredKeyValueTag(UGCQueryHandle_t handle, string pKey, string pValue) { + InteropHelp.TestIfAvailableClient(); + using (var pKey2 = new InteropHelp.UTF8StringHandle(pKey)) + using (var pValue2 = new InteropHelp.UTF8StringHandle(pValue)) { + return NativeMethods.ISteamUGC_AddRequiredKeyValueTag(handle, pKey2, pValue2); + } + } + + /// + /// DEPRECATED - Use CreateQueryUGCDetailsRequest call above instead! + /// + public static SteamAPICall_t RequestUGCDetails(PublishedFileId_t nPublishedFileID, uint unMaxAgeSeconds) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamUGC_RequestUGCDetails(nPublishedFileID, unMaxAgeSeconds); + } + + /// + /// Steam Workshop Creator API + /// create new item for this app with no content attached yet + /// + public static SteamAPICall_t CreateItem(AppId_t nConsumerAppId, EWorkshopFileType eFileType) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamUGC_CreateItem(nConsumerAppId, eFileType); + } + + /// + /// start an UGC item update. Set changed properties before commiting update with CommitItemUpdate() + /// + public static UGCUpdateHandle_t StartItemUpdate(AppId_t nConsumerAppId, PublishedFileId_t nPublishedFileID) { + InteropHelp.TestIfAvailableClient(); + return (UGCUpdateHandle_t)NativeMethods.ISteamUGC_StartItemUpdate(nConsumerAppId, nPublishedFileID); + } + + /// + /// change the title of an UGC item + /// + public static bool SetItemTitle(UGCUpdateHandle_t handle, string pchTitle) { + InteropHelp.TestIfAvailableClient(); + using (var pchTitle2 = new InteropHelp.UTF8StringHandle(pchTitle)) { + return NativeMethods.ISteamUGC_SetItemTitle(handle, pchTitle2); + } + } + + /// + /// change the description of an UGC item + /// + public static bool SetItemDescription(UGCUpdateHandle_t handle, string pchDescription) { + InteropHelp.TestIfAvailableClient(); + using (var pchDescription2 = new InteropHelp.UTF8StringHandle(pchDescription)) { + return NativeMethods.ISteamUGC_SetItemDescription(handle, pchDescription2); + } + } + + /// + /// specify the language of the title or description that will be set + /// + public static bool SetItemUpdateLanguage(UGCUpdateHandle_t handle, string pchLanguage) { + InteropHelp.TestIfAvailableClient(); + using (var pchLanguage2 = new InteropHelp.UTF8StringHandle(pchLanguage)) { + return NativeMethods.ISteamUGC_SetItemUpdateLanguage(handle, pchLanguage2); + } + } + + /// + /// change the metadata of an UGC item (max = k_cchDeveloperMetadataMax) + /// + public static bool SetItemMetadata(UGCUpdateHandle_t handle, string pchMetaData) { + InteropHelp.TestIfAvailableClient(); + using (var pchMetaData2 = new InteropHelp.UTF8StringHandle(pchMetaData)) { + return NativeMethods.ISteamUGC_SetItemMetadata(handle, pchMetaData2); + } + } + + /// + /// change the visibility of an UGC item + /// + public static bool SetItemVisibility(UGCUpdateHandle_t handle, ERemoteStoragePublishedFileVisibility eVisibility) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_SetItemVisibility(handle, eVisibility); + } + + /// + /// change the tags of an UGC item + /// + public static bool SetItemTags(UGCUpdateHandle_t updateHandle, System.Collections.Generic.IList pTags) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_SetItemTags(updateHandle, new InteropHelp.SteamParamStringArray(pTags)); + } + + /// + /// update item content from this local folder + /// + public static bool SetItemContent(UGCUpdateHandle_t handle, string pszContentFolder) { + InteropHelp.TestIfAvailableClient(); + using (var pszContentFolder2 = new InteropHelp.UTF8StringHandle(pszContentFolder)) { + return NativeMethods.ISteamUGC_SetItemContent(handle, pszContentFolder2); + } + } + + /// + /// change preview image file for this item. pszPreviewFile points to local image file, which must be under 1MB in size + /// + public static bool SetItemPreview(UGCUpdateHandle_t handle, string pszPreviewFile) { + InteropHelp.TestIfAvailableClient(); + using (var pszPreviewFile2 = new InteropHelp.UTF8StringHandle(pszPreviewFile)) { + return NativeMethods.ISteamUGC_SetItemPreview(handle, pszPreviewFile2); + } + } + + /// + /// remove any existing key-value tags with the specified key + /// + public static bool RemoveItemKeyValueTags(UGCUpdateHandle_t handle, string pchKey) { + InteropHelp.TestIfAvailableClient(); + using (var pchKey2 = new InteropHelp.UTF8StringHandle(pchKey)) { + return NativeMethods.ISteamUGC_RemoveItemKeyValueTags(handle, pchKey2); + } + } + + /// + /// add new key-value tags for the item. Note that there can be multiple values for a tag. + /// + public static bool AddItemKeyValueTag(UGCUpdateHandle_t handle, string pchKey, string pchValue) { + InteropHelp.TestIfAvailableClient(); + using (var pchKey2 = new InteropHelp.UTF8StringHandle(pchKey)) + using (var pchValue2 = new InteropHelp.UTF8StringHandle(pchValue)) { + return NativeMethods.ISteamUGC_AddItemKeyValueTag(handle, pchKey2, pchValue2); + } + } + + /// + /// commit update process started with StartItemUpdate() + /// + public static SteamAPICall_t SubmitItemUpdate(UGCUpdateHandle_t handle, string pchChangeNote) { + InteropHelp.TestIfAvailableClient(); + using (var pchChangeNote2 = new InteropHelp.UTF8StringHandle(pchChangeNote)) { + return (SteamAPICall_t)NativeMethods.ISteamUGC_SubmitItemUpdate(handle, pchChangeNote2); + } + } + + public static EItemUpdateStatus GetItemUpdateProgress(UGCUpdateHandle_t handle, out ulong punBytesProcessed, out ulong punBytesTotal) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_GetItemUpdateProgress(handle, out punBytesProcessed, out punBytesTotal); + } + + /// + /// Steam Workshop Consumer API + /// + public static SteamAPICall_t SetUserItemVote(PublishedFileId_t nPublishedFileID, bool bVoteUp) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamUGC_SetUserItemVote(nPublishedFileID, bVoteUp); + } + + public static SteamAPICall_t GetUserItemVote(PublishedFileId_t nPublishedFileID) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamUGC_GetUserItemVote(nPublishedFileID); + } + + public static SteamAPICall_t AddItemToFavorites(AppId_t nAppId, PublishedFileId_t nPublishedFileID) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamUGC_AddItemToFavorites(nAppId, nPublishedFileID); + } + + public static SteamAPICall_t RemoveItemFromFavorites(AppId_t nAppId, PublishedFileId_t nPublishedFileID) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamUGC_RemoveItemFromFavorites(nAppId, nPublishedFileID); + } + + /// + /// subscribe to this item, will be installed ASAP + /// + public static SteamAPICall_t SubscribeItem(PublishedFileId_t nPublishedFileID) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamUGC_SubscribeItem(nPublishedFileID); + } + + /// + /// unsubscribe from this item, will be uninstalled after game quits + /// + public static SteamAPICall_t UnsubscribeItem(PublishedFileId_t nPublishedFileID) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamUGC_UnsubscribeItem(nPublishedFileID); + } + + /// + /// number of subscribed items + /// + public static uint GetNumSubscribedItems() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_GetNumSubscribedItems(); + } + + /// + /// all subscribed item PublishFileIDs + /// + public static uint GetSubscribedItems(PublishedFileId_t[] pvecPublishedFileID, uint cMaxEntries) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_GetSubscribedItems(pvecPublishedFileID, cMaxEntries); + } + + /// + /// get EItemState flags about item on this client + /// + public static uint GetItemState(PublishedFileId_t nPublishedFileID) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_GetItemState(nPublishedFileID); + } + + /// + /// get info about currently installed content on disc for items that have k_EItemStateInstalled set + /// if k_EItemStateLegacyItem is set, pchFolder contains the path to the legacy file itself (not a folder) + /// + public static bool GetItemInstallInfo(PublishedFileId_t nPublishedFileID, out ulong punSizeOnDisk, out string pchFolder, uint cchFolderSize, out uint punTimeStamp) { + InteropHelp.TestIfAvailableClient(); + IntPtr pchFolder2 = Marshal.AllocHGlobal((int)cchFolderSize); + bool ret = NativeMethods.ISteamUGC_GetItemInstallInfo(nPublishedFileID, out punSizeOnDisk, pchFolder2, cchFolderSize, out punTimeStamp); + pchFolder = ret ? InteropHelp.PtrToStringUTF8(pchFolder2) : null; + Marshal.FreeHGlobal(pchFolder2); + return ret; + } + + /// + /// get info about pending update for items that have k_EItemStateNeedsUpdate set. punBytesTotal will be valid after download started once + /// + public static bool GetItemDownloadInfo(PublishedFileId_t nPublishedFileID, out ulong punBytesDownloaded, out ulong punBytesTotal) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_GetItemDownloadInfo(nPublishedFileID, out punBytesDownloaded, out punBytesTotal); + } + + /// + /// download new or update already installed item. If function returns true, wait for DownloadItemResult_t. If the item is already installed, + /// then files on disk should not be used until callback received. If item is not subscribed to, it will be cached for some time. + /// If bHighPriority is set, any other item download will be suspended and this item downloaded ASAP. + /// + public static bool DownloadItem(PublishedFileId_t nPublishedFileID, bool bHighPriority) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_DownloadItem(nPublishedFileID, bHighPriority); + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamugc.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamugc.cs.meta new file mode 100644 index 0000000..b0619da --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamugc.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 272f656ebe9675844abd06a8dd90f938 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamunifiedmessages.cs b/Assets/Editor/Steamworks.NET/autogen/isteamunifiedmessages.cs new file mode 100644 index 0000000..8ad4b68 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamunifiedmessages.cs @@ -0,0 +1,59 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamUnifiedMessages { + /// + /// Sends a service method (in binary serialized form) using the Steam Client. + /// Returns a unified message handle (k_InvalidUnifiedMessageHandle if could not send the message). + /// + public static ClientUnifiedMessageHandle SendMethod(string pchServiceMethod, byte[] pRequestBuffer, uint unRequestBufferSize, ulong unContext) { + InteropHelp.TestIfAvailableClient(); + using (var pchServiceMethod2 = new InteropHelp.UTF8StringHandle(pchServiceMethod)) { + return (ClientUnifiedMessageHandle)NativeMethods.ISteamUnifiedMessages_SendMethod(pchServiceMethod2, pRequestBuffer, unRequestBufferSize, unContext); + } + } + + /// + /// Gets the size of the response and the EResult. Returns false if the response is not ready yet. + /// + public static bool GetMethodResponseInfo(ClientUnifiedMessageHandle hHandle, out uint punResponseSize, out EResult peResult) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUnifiedMessages_GetMethodResponseInfo(hHandle, out punResponseSize, out peResult); + } + + /// + /// Gets a response in binary serialized form (and optionally release the corresponding allocated memory). + /// + public static bool GetMethodResponseData(ClientUnifiedMessageHandle hHandle, byte[] pResponseBuffer, uint unResponseBufferSize, bool bAutoRelease) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUnifiedMessages_GetMethodResponseData(hHandle, pResponseBuffer, unResponseBufferSize, bAutoRelease); + } + + /// + /// Releases the message and its corresponding allocated memory. + /// + public static bool ReleaseMethod(ClientUnifiedMessageHandle hHandle) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUnifiedMessages_ReleaseMethod(hHandle); + } + + /// + /// Sends a service notification (in binary serialized form) using the Steam Client. + /// Returns true if the notification was sent successfully. + /// + public static bool SendNotification(string pchServiceNotification, byte[] pNotificationBuffer, uint unNotificationBufferSize) { + InteropHelp.TestIfAvailableClient(); + using (var pchServiceNotification2 = new InteropHelp.UTF8StringHandle(pchServiceNotification)) { + return NativeMethods.ISteamUnifiedMessages_SendNotification(pchServiceNotification2, pNotificationBuffer, unNotificationBufferSize); + } + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamunifiedmessages.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamunifiedmessages.cs.meta new file mode 100644 index 0000000..3dbab9a --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamunifiedmessages.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 2a23edbf92120a54db7e072a70d1ef60 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamuser.cs b/Assets/Editor/Steamworks.NET/autogen/isteamuser.cs new file mode 100644 index 0000000..6d15ac7 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamuser.cs @@ -0,0 +1,334 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamUser { + /// + /// returns the HSteamUser this interface represents + /// this is only used internally by the API, and by a few select interfaces that support multi-user + /// + public static HSteamUser GetHSteamUser() { + InteropHelp.TestIfAvailableClient(); + return (HSteamUser)NativeMethods.ISteamUser_GetHSteamUser(); + } + + /// + /// returns true if the Steam client current has a live connection to the Steam servers. + /// If false, it means there is no active connection due to either a networking issue on the local machine, or the Steam server is down/busy. + /// The Steam client will automatically be trying to recreate the connection as often as possible. + /// + public static bool BLoggedOn() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUser_BLoggedOn(); + } + + /// + /// returns the CSteamID of the account currently logged into the Steam client + /// a CSteamID is a unique identifier for an account, and used to differentiate users in all parts of the Steamworks API + /// + public static CSteamID GetSteamID() { + InteropHelp.TestIfAvailableClient(); + return (CSteamID)NativeMethods.ISteamUser_GetSteamID(); + } + + /// + /// Multiplayer Authentication functions + /// InitiateGameConnection() starts the state machine for authenticating the game client with the game server + /// It is the client portion of a three-way handshake between the client, the game server, and the steam servers + /// Parameters: + /// void *pAuthBlob - a pointer to empty memory that will be filled in with the authentication token. + /// int cbMaxAuthBlob - the number of bytes of allocated memory in pBlob. Should be at least 2048 bytes. + /// CSteamID steamIDGameServer - the steamID of the game server, received from the game server by the client + /// CGameID gameID - the ID of the current game. For games without mods, this is just CGameID( <appID> ) + /// uint32 unIPServer, uint16 usPortServer - the IP address of the game server + /// bool bSecure - whether or not the client thinks that the game server is reporting itself as secure (i.e. VAC is running) + /// return value - returns the number of bytes written to pBlob. If the return is 0, then the buffer passed in was too small, and the call has failed + /// The contents of pBlob should then be sent to the game server, for it to use to complete the authentication process. + /// + public static int InitiateGameConnection(byte[] pAuthBlob, int cbMaxAuthBlob, CSteamID steamIDGameServer, uint unIPServer, ushort usPortServer, bool bSecure) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUser_InitiateGameConnection(pAuthBlob, cbMaxAuthBlob, steamIDGameServer, unIPServer, usPortServer, bSecure); + } + + /// + /// notify of disconnect + /// needs to occur when the game client leaves the specified game server, needs to match with the InitiateGameConnection() call + /// + public static void TerminateGameConnection(uint unIPServer, ushort usPortServer) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamUser_TerminateGameConnection(unIPServer, usPortServer); + } + + /// + /// Legacy functions + /// used by only a few games to track usage events + /// + public static void TrackAppUsageEvent(CGameID gameID, int eAppUsageEvent, string pchExtraInfo = "") { + InteropHelp.TestIfAvailableClient(); + using (var pchExtraInfo2 = new InteropHelp.UTF8StringHandle(pchExtraInfo)) { + NativeMethods.ISteamUser_TrackAppUsageEvent(gameID, eAppUsageEvent, pchExtraInfo2); + } + } + + /// + /// get the local storage folder for current Steam account to write application data, e.g. save games, configs etc. + /// this will usually be something like "C:\Progam Files\Steam\userdata\<SteamID>\<AppID>\local" + /// + public static bool GetUserDataFolder(out string pchBuffer, int cubBuffer) { + InteropHelp.TestIfAvailableClient(); + IntPtr pchBuffer2 = Marshal.AllocHGlobal(cubBuffer); + bool ret = NativeMethods.ISteamUser_GetUserDataFolder(pchBuffer2, cubBuffer); + pchBuffer = ret ? InteropHelp.PtrToStringUTF8(pchBuffer2) : null; + Marshal.FreeHGlobal(pchBuffer2); + return ret; + } + + /// + /// Starts voice recording. Once started, use GetVoice() to get the data + /// + public static void StartVoiceRecording() { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamUser_StartVoiceRecording(); + } + + /// + /// Stops voice recording. Because people often release push-to-talk keys early, the system will keep recording for + /// a little bit after this function is called. GetVoice() should continue to be called until it returns + /// k_eVoiceResultNotRecording + /// + public static void StopVoiceRecording() { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamUser_StopVoiceRecording(); + } + + /// + /// Determine the amount of captured audio data that is available in bytes. + /// This provides both the compressed and uncompressed data. Please note that the uncompressed + /// data is not the raw feed from the microphone: data may only be available if audible + /// levels of speech are detected. + /// nUncompressedVoiceDesiredSampleRate is necessary to know the number of bytes to return in pcbUncompressed - can be set to 0 if you don't need uncompressed (the usual case) + /// If you're upgrading from an older Steamworks API, you'll want to pass in 11025 to nUncompressedVoiceDesiredSampleRate + /// + public static EVoiceResult GetAvailableVoice(out uint pcbCompressed, out uint pcbUncompressed, uint nUncompressedVoiceDesiredSampleRate) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUser_GetAvailableVoice(out pcbCompressed, out pcbUncompressed, nUncompressedVoiceDesiredSampleRate); + } + + /// + /// Gets the latest voice data from the microphone. Compressed data is an arbitrary format, and is meant to be handed back to + /// DecompressVoice() for playback later as a binary blob. Uncompressed data is 16-bit, signed integer, 11025Hz PCM format. + /// Please note that the uncompressed data is not the raw feed from the microphone: data may only be available if audible + /// levels of speech are detected, and may have passed through denoising filters, etc. + /// This function should be called as often as possible once recording has started; once per frame at least. + /// nBytesWritten is set to the number of bytes written to pDestBuffer. + /// nUncompressedBytesWritten is set to the number of bytes written to pUncompressedDestBuffer. + /// You must grab both compressed and uncompressed here at the same time, if you want both. + /// Matching data that is not read during this call will be thrown away. + /// GetAvailableVoice() can be used to determine how much data is actually available. + /// If you're upgrading from an older Steamworks API, you'll want to pass in 11025 to nUncompressedVoiceDesiredSampleRate + /// + public static EVoiceResult GetVoice(bool bWantCompressed, byte[] pDestBuffer, uint cbDestBufferSize, out uint nBytesWritten, bool bWantUncompressed, byte[] pUncompressedDestBuffer, uint cbUncompressedDestBufferSize, out uint nUncompressBytesWritten, uint nUncompressedVoiceDesiredSampleRate) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUser_GetVoice(bWantCompressed, pDestBuffer, cbDestBufferSize, out nBytesWritten, bWantUncompressed, pUncompressedDestBuffer, cbUncompressedDestBufferSize, out nUncompressBytesWritten, nUncompressedVoiceDesiredSampleRate); + } + + /// + /// Decompresses a chunk of compressed data produced by GetVoice(). + /// nBytesWritten is set to the number of bytes written to pDestBuffer unless the return value is k_EVoiceResultBufferTooSmall. + /// In that case, nBytesWritten is set to the size of the buffer required to decompress the given + /// data. The suggested buffer size for the destination buffer is 22 kilobytes. + /// The output format of the data is 16-bit signed at the requested samples per second. + /// If you're upgrading from an older Steamworks API, you'll want to pass in 11025 to nDesiredSampleRate + /// + public static EVoiceResult DecompressVoice(byte[] pCompressed, uint cbCompressed, byte[] pDestBuffer, uint cbDestBufferSize, out uint nBytesWritten, uint nDesiredSampleRate) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUser_DecompressVoice(pCompressed, cbCompressed, pDestBuffer, cbDestBufferSize, out nBytesWritten, nDesiredSampleRate); + } + + /// + /// This returns the frequency of the voice data as it's stored internally; calling DecompressVoice() with this size will yield the best results + /// + public static uint GetVoiceOptimalSampleRate() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUser_GetVoiceOptimalSampleRate(); + } + + /// + /// Retrieve ticket to be sent to the entity who wishes to authenticate you. + /// pcbTicket retrieves the length of the actual ticket. + /// + public static HAuthTicket GetAuthSessionTicket(byte[] pTicket, int cbMaxTicket, out uint pcbTicket) { + InteropHelp.TestIfAvailableClient(); + return (HAuthTicket)NativeMethods.ISteamUser_GetAuthSessionTicket(pTicket, cbMaxTicket, out pcbTicket); + } + + /// + /// Authenticate ticket from entity steamID to be sure it is valid and isnt reused + /// Registers for callbacks if the entity goes offline or cancels the ticket ( see ValidateAuthTicketResponse_t callback and EAuthSessionResponse ) + /// + public static EBeginAuthSessionResult BeginAuthSession(byte[] pAuthTicket, int cbAuthTicket, CSteamID steamID) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUser_BeginAuthSession(pAuthTicket, cbAuthTicket, steamID); + } + + /// + /// Stop tracking started by BeginAuthSession - called when no longer playing game with this entity + /// + public static void EndAuthSession(CSteamID steamID) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamUser_EndAuthSession(steamID); + } + + /// + /// Cancel auth ticket from GetAuthSessionTicket, called when no longer playing game with the entity you gave the ticket to + /// + public static void CancelAuthTicket(HAuthTicket hAuthTicket) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamUser_CancelAuthTicket(hAuthTicket); + } + + /// + /// After receiving a user's authentication data, and passing it to BeginAuthSession, use this function + /// to determine if the user owns downloadable content specified by the provided AppID. + /// + public static EUserHasLicenseForAppResult UserHasLicenseForApp(CSteamID steamID, AppId_t appID) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUser_UserHasLicenseForApp(steamID, appID); + } + + /// + /// returns true if this users looks like they are behind a NAT device. Only valid once the user has connected to steam + /// (i.e a SteamServersConnected_t has been issued) and may not catch all forms of NAT. + /// + public static bool BIsBehindNAT() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUser_BIsBehindNAT(); + } + + /// + /// set data to be replicated to friends so that they can join your game + /// CSteamID steamIDGameServer - the steamID of the game server, received from the game server by the client + /// uint32 unIPServer, uint16 usPortServer - the IP address of the game server + /// + public static void AdvertiseGame(CSteamID steamIDGameServer, uint unIPServer, ushort usPortServer) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamUser_AdvertiseGame(steamIDGameServer, unIPServer, usPortServer); + } + + /// + /// Requests a ticket encrypted with an app specific shared key + /// pDataToInclude, cbDataToInclude will be encrypted into the ticket + /// ( This is asynchronous, you must wait for the ticket to be completed by the server ) + /// + public static SteamAPICall_t RequestEncryptedAppTicket(byte[] pDataToInclude, int cbDataToInclude) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamUser_RequestEncryptedAppTicket(pDataToInclude, cbDataToInclude); + } + + /// + /// retrieve a finished ticket + /// + public static bool GetEncryptedAppTicket(byte[] pTicket, int cbMaxTicket, out uint pcbTicket) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUser_GetEncryptedAppTicket(pTicket, cbMaxTicket, out pcbTicket); + } + + /// + /// Trading Card badges data access + /// if you only have one set of cards, the series will be 1 + /// the user has can have two different badges for a series; the regular (max level 5) and the foil (max level 1) + /// + public static int GetGameBadgeLevel(int nSeries, bool bFoil) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUser_GetGameBadgeLevel(nSeries, bFoil); + } + + /// + /// gets the Steam Level of the user, as shown on their profile + /// + public static int GetPlayerSteamLevel() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUser_GetPlayerSteamLevel(); + } + + /// + /// Requests a URL which authenticates an in-game browser for store check-out, + /// and then redirects to the specified URL. As long as the in-game browser + /// accepts and handles session cookies, Steam microtransaction checkout pages + /// will automatically recognize the user instead of presenting a login page. + /// The result of this API call will be a StoreAuthURLResponse_t callback. + /// NOTE: The URL has a very short lifetime to prevent history-snooping attacks, + /// so you should only call this API when you are about to launch the browser, + /// or else immediately navigate to the result URL using a hidden browser window. + /// NOTE 2: The resulting authorization cookie has an expiration time of one day, + /// so it would be a good idea to request and visit a new auth URL every 12 hours. + /// + public static SteamAPICall_t RequestStoreAuthURL(string pchRedirectURL) { + InteropHelp.TestIfAvailableClient(); + using (var pchRedirectURL2 = new InteropHelp.UTF8StringHandle(pchRedirectURL)) { + return (SteamAPICall_t)NativeMethods.ISteamUser_RequestStoreAuthURL(pchRedirectURL2); + } + } +#if _PS3 + /// + /// Initiates PS3 Logon request using just PSN ticket. + /// PARAMS: bInteractive - If set tells Steam to go ahead and show the PS3 NetStart dialog if needed to + /// prompt the user for network setup/PSN logon before initiating the Steam side of the logon. + /// Listen for SteamServersConnected_t or SteamServerConnectFailure_t for status. SteamServerConnectFailure_t + /// may return with EResult k_EResultExternalAccountUnlinked if the PSN account is unknown to Steam. You should + /// then call LogOnAndLinkSteamAccountToPSN() after prompting the user for credentials to establish a link. + /// Future calls to LogOn() after the one time link call should succeed as long as the user is connected to PSN. + /// + public static void LogOn(bool bInteractive) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamUser_LogOn(bInteractive); + } + + /// + /// Initiates a request to logon with a specific steam username/password and create a PSN account link at + /// the same time. Should call this only if LogOn() has failed and indicated the PSN account is unlinked. + /// PARAMS: bInteractive - If set tells Steam to go ahead and show the PS3 NetStart dialog if needed to + /// prompt the user for network setup/PSN logon before initiating the Steam side of the logon. pchUserName + /// should be the users Steam username, and pchPassword should be the users Steam password. + /// Listen for SteamServersConnected_t or SteamServerConnectFailure_t for status. SteamServerConnectFailure_t + /// may return with EResult k_EResultOtherAccountAlreadyLinked if already linked to another account. + /// + public static void LogOnAndLinkSteamAccountToPSN(bool bInteractive, string pchUserName, string pchPassword) { + InteropHelp.TestIfAvailableClient(); + using (var pchUserName2 = new InteropHelp.UTF8StringHandle(pchUserName)) + using (var pchPassword2 = new InteropHelp.UTF8StringHandle(pchPassword)) { + NativeMethods.ISteamUser_LogOnAndLinkSteamAccountToPSN(bInteractive, pchUserName2, pchPassword2); + } + } + + /// + /// Final logon option for PS3, this logs into an existing account if already linked, but if not already linked + /// creates a new account using the info in the PSN ticket to generate a unique account name. The new account is + /// then linked to the PSN ticket. This is the faster option for new users who don't have an existing Steam account + /// to get into multiplayer. + /// PARAMS: bInteractive - If set tells Steam to go ahead and show the PS3 NetStart dialog if needed to + /// prompt the user for network setup/PSN logon before initiating the Steam side of the logon. + /// + public static void LogOnAndCreateNewSteamAccountIfNeeded(bool bInteractive) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamUser_LogOnAndCreateNewSteamAccountIfNeeded(bInteractive); + } + + /// + /// Returns a special SteamID that represents the user's PSN information. Can be used to query the user's PSN avatar, + /// online name, etc. through the standard Steamworks interfaces. + /// + public static CSteamID GetConsoleSteamID() { + InteropHelp.TestIfAvailableClient(); + return (CSteamID)NativeMethods.ISteamUser_GetConsoleSteamID(); + } +#endif + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamuser.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamuser.cs.meta new file mode 100644 index 0000000..0264d5c --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamuser.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 9ded3e4249f78914d8454f4b29f11af4 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamuserstats.cs b/Assets/Editor/Steamworks.NET/autogen/isteamuserstats.cs new file mode 100644 index 0000000..b6e0e05 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamuserstats.cs @@ -0,0 +1,486 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamUserStats { + /// + /// Ask the server to send down this user's data and achievements for this game + /// + public static bool RequestCurrentStats() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUserStats_RequestCurrentStats(); + } + + /// + /// Data accessors + /// + public static bool GetStat(string pchName, out int pData) { + InteropHelp.TestIfAvailableClient(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamUserStats_GetStat(pchName2, out pData); + } + } + + public static bool GetStat(string pchName, out float pData) { + InteropHelp.TestIfAvailableClient(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamUserStats_GetStat_(pchName2, out pData); + } + } + + /// + /// Set / update data + /// + public static bool SetStat(string pchName, int nData) { + InteropHelp.TestIfAvailableClient(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamUserStats_SetStat(pchName2, nData); + } + } + + public static bool SetStat(string pchName, float fData) { + InteropHelp.TestIfAvailableClient(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamUserStats_SetStat_(pchName2, fData); + } + } + + public static bool UpdateAvgRateStat(string pchName, float flCountThisSession, double dSessionLength) { + InteropHelp.TestIfAvailableClient(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamUserStats_UpdateAvgRateStat(pchName2, flCountThisSession, dSessionLength); + } + } + + /// + /// Achievement flag accessors + /// + public static bool GetAchievement(string pchName, out bool pbAchieved) { + InteropHelp.TestIfAvailableClient(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamUserStats_GetAchievement(pchName2, out pbAchieved); + } + } + + public static bool SetAchievement(string pchName) { + InteropHelp.TestIfAvailableClient(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamUserStats_SetAchievement(pchName2); + } + } + + public static bool ClearAchievement(string pchName) { + InteropHelp.TestIfAvailableClient(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamUserStats_ClearAchievement(pchName2); + } + } + + /// + /// Get the achievement status, and the time it was unlocked if unlocked. + /// If the return value is true, but the unlock time is zero, that means it was unlocked before Steam + /// began tracking achievement unlock times (December 2009). Time is seconds since January 1, 1970. + /// + public static bool GetAchievementAndUnlockTime(string pchName, out bool pbAchieved, out uint punUnlockTime) { + InteropHelp.TestIfAvailableClient(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamUserStats_GetAchievementAndUnlockTime(pchName2, out pbAchieved, out punUnlockTime); + } + } + + /// + /// Store the current data on the server, will get a callback when set + /// And one callback for every new achievement + /// If the callback has a result of k_EResultInvalidParam, one or more stats + /// uploaded has been rejected, either because they broke constraints + /// or were out of date. In this case the server sends back updated values. + /// The stats should be re-iterated to keep in sync. + /// + public static bool StoreStats() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUserStats_StoreStats(); + } + + /// + /// Achievement / GroupAchievement metadata + /// Gets the icon of the achievement, which is a handle to be used in ISteamUtils::GetImageRGBA(), or 0 if none set. + /// A return value of 0 may indicate we are still fetching data, and you can wait for the UserAchievementIconFetched_t callback + /// which will notify you when the bits are ready. If the callback still returns zero, then there is no image set for the + /// specified achievement. + /// + public static int GetAchievementIcon(string pchName) { + InteropHelp.TestIfAvailableClient(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamUserStats_GetAchievementIcon(pchName2); + } + } + + /// + /// Get general attributes for an achievement. Accepts the following keys: + /// - "name" and "desc" for retrieving the localized achievement name and description (returned in UTF8) + /// - "hidden" for retrieving if an achievement is hidden (returns "0" when not hidden, "1" when hidden) + /// + public static string GetAchievementDisplayAttribute(string pchName, string pchKey) { + InteropHelp.TestIfAvailableClient(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) + using (var pchKey2 = new InteropHelp.UTF8StringHandle(pchKey)) { + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamUserStats_GetAchievementDisplayAttribute(pchName2, pchKey2)); + } + } + + /// + /// Achievement progress - triggers an AchievementProgress callback, that is all. + /// Calling this w/ N out of N progress will NOT set the achievement, the game must still do that. + /// + public static bool IndicateAchievementProgress(string pchName, uint nCurProgress, uint nMaxProgress) { + InteropHelp.TestIfAvailableClient(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamUserStats_IndicateAchievementProgress(pchName2, nCurProgress, nMaxProgress); + } + } + + /// + /// Used for iterating achievements. In general games should not need these functions because they should have a + /// list of existing achievements compiled into them + /// + public static uint GetNumAchievements() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUserStats_GetNumAchievements(); + } + + /// + /// Get achievement name iAchievement in [0,GetNumAchievements) + /// + public static string GetAchievementName(uint iAchievement) { + InteropHelp.TestIfAvailableClient(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamUserStats_GetAchievementName(iAchievement)); + } + + /// + /// Friends stats & achievements + /// downloads stats for the user + /// returns a UserStatsReceived_t received when completed + /// if the other user has no stats, UserStatsReceived_t.m_eResult will be set to k_EResultFail + /// these stats won't be auto-updated; you'll need to call RequestUserStats() again to refresh any data + /// + public static SteamAPICall_t RequestUserStats(CSteamID steamIDUser) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamUserStats_RequestUserStats(steamIDUser); + } + + /// + /// requests stat information for a user, usable after a successful call to RequestUserStats() + /// + public static bool GetUserStat(CSteamID steamIDUser, string pchName, out int pData) { + InteropHelp.TestIfAvailableClient(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamUserStats_GetUserStat(steamIDUser, pchName2, out pData); + } + } + + public static bool GetUserStat(CSteamID steamIDUser, string pchName, out float pData) { + InteropHelp.TestIfAvailableClient(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamUserStats_GetUserStat_(steamIDUser, pchName2, out pData); + } + } + + public static bool GetUserAchievement(CSteamID steamIDUser, string pchName, out bool pbAchieved) { + InteropHelp.TestIfAvailableClient(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamUserStats_GetUserAchievement(steamIDUser, pchName2, out pbAchieved); + } + } + + /// + /// See notes for GetAchievementAndUnlockTime above + /// + public static bool GetUserAchievementAndUnlockTime(CSteamID steamIDUser, string pchName, out bool pbAchieved, out uint punUnlockTime) { + InteropHelp.TestIfAvailableClient(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamUserStats_GetUserAchievementAndUnlockTime(steamIDUser, pchName2, out pbAchieved, out punUnlockTime); + } + } + + /// + /// Reset stats + /// + public static bool ResetAllStats(bool bAchievementsToo) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUserStats_ResetAllStats(bAchievementsToo); + } + + /// + /// Leaderboard functions + /// asks the Steam back-end for a leaderboard by name, and will create it if it's not yet + /// This call is asynchronous, with the result returned in LeaderboardFindResult_t + /// + public static SteamAPICall_t FindOrCreateLeaderboard(string pchLeaderboardName, ELeaderboardSortMethod eLeaderboardSortMethod, ELeaderboardDisplayType eLeaderboardDisplayType) { + InteropHelp.TestIfAvailableClient(); + using (var pchLeaderboardName2 = new InteropHelp.UTF8StringHandle(pchLeaderboardName)) { + return (SteamAPICall_t)NativeMethods.ISteamUserStats_FindOrCreateLeaderboard(pchLeaderboardName2, eLeaderboardSortMethod, eLeaderboardDisplayType); + } + } + + /// + /// as above, but won't create the leaderboard if it's not found + /// This call is asynchronous, with the result returned in LeaderboardFindResult_t + /// + public static SteamAPICall_t FindLeaderboard(string pchLeaderboardName) { + InteropHelp.TestIfAvailableClient(); + using (var pchLeaderboardName2 = new InteropHelp.UTF8StringHandle(pchLeaderboardName)) { + return (SteamAPICall_t)NativeMethods.ISteamUserStats_FindLeaderboard(pchLeaderboardName2); + } + } + + /// + /// returns the name of a leaderboard + /// + public static string GetLeaderboardName(SteamLeaderboard_t hSteamLeaderboard) { + InteropHelp.TestIfAvailableClient(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamUserStats_GetLeaderboardName(hSteamLeaderboard)); + } + + /// + /// returns the total number of entries in a leaderboard, as of the last request + /// + public static int GetLeaderboardEntryCount(SteamLeaderboard_t hSteamLeaderboard) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUserStats_GetLeaderboardEntryCount(hSteamLeaderboard); + } + + /// + /// returns the sort method of the leaderboard + /// + public static ELeaderboardSortMethod GetLeaderboardSortMethod(SteamLeaderboard_t hSteamLeaderboard) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUserStats_GetLeaderboardSortMethod(hSteamLeaderboard); + } + + /// + /// returns the display type of the leaderboard + /// + public static ELeaderboardDisplayType GetLeaderboardDisplayType(SteamLeaderboard_t hSteamLeaderboard) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUserStats_GetLeaderboardDisplayType(hSteamLeaderboard); + } + + /// + /// Asks the Steam back-end for a set of rows in the leaderboard. + /// This call is asynchronous, with the result returned in LeaderboardScoresDownloaded_t + /// LeaderboardScoresDownloaded_t will contain a handle to pull the results from GetDownloadedLeaderboardEntries() (below) + /// You can ask for more entries than exist, and it will return as many as do exist. + /// k_ELeaderboardDataRequestGlobal requests rows in the leaderboard from the full table, with nRangeStart & nRangeEnd in the range [1, TotalEntries] + /// k_ELeaderboardDataRequestGlobalAroundUser requests rows around the current user, nRangeStart being negate + /// e.g. DownloadLeaderboardEntries( hLeaderboard, k_ELeaderboardDataRequestGlobalAroundUser, -3, 3 ) will return 7 rows, 3 before the user, 3 after + /// k_ELeaderboardDataRequestFriends requests all the rows for friends of the current user + /// + public static SteamAPICall_t DownloadLeaderboardEntries(SteamLeaderboard_t hSteamLeaderboard, ELeaderboardDataRequest eLeaderboardDataRequest, int nRangeStart, int nRangeEnd) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamUserStats_DownloadLeaderboardEntries(hSteamLeaderboard, eLeaderboardDataRequest, nRangeStart, nRangeEnd); + } + + /// + /// as above, but downloads leaderboard entries for an arbitrary set of users - ELeaderboardDataRequest is k_ELeaderboardDataRequestUsers + /// if a user doesn't have a leaderboard entry, they won't be included in the result + /// a max of 100 users can be downloaded at a time, with only one outstanding call at a time + /// + public static SteamAPICall_t DownloadLeaderboardEntriesForUsers(SteamLeaderboard_t hSteamLeaderboard, CSteamID[] prgUsers, int cUsers) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamUserStats_DownloadLeaderboardEntriesForUsers(hSteamLeaderboard, prgUsers, cUsers); + } + + /// + /// Returns data about a single leaderboard entry + /// use a for loop from 0 to LeaderboardScoresDownloaded_t::m_cEntryCount to get all the downloaded entries + /// e.g. + /// void OnLeaderboardScoresDownloaded( LeaderboardScoresDownloaded_t *pLeaderboardScoresDownloaded ) + /// { + /// for ( int index = 0; index < pLeaderboardScoresDownloaded->m_cEntryCount; index++ ) + /// { + /// LeaderboardEntry_t leaderboardEntry; + /// int32 details[3]; // we know this is how many we've stored previously + /// GetDownloadedLeaderboardEntry( pLeaderboardScoresDownloaded->m_hSteamLeaderboardEntries, index, &leaderboardEntry, details, 3 ); + /// assert( leaderboardEntry.m_cDetails == 3 ); + /// ... + /// } + /// once you've accessed all the entries, the data will be free'd, and the SteamLeaderboardEntries_t handle will become invalid + /// + public static bool GetDownloadedLeaderboardEntry(SteamLeaderboardEntries_t hSteamLeaderboardEntries, int index, out LeaderboardEntry_t pLeaderboardEntry, int[] pDetails, int cDetailsMax) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUserStats_GetDownloadedLeaderboardEntry(hSteamLeaderboardEntries, index, out pLeaderboardEntry, pDetails, cDetailsMax); + } + + /// + /// Uploads a user score to the Steam back-end. + /// This call is asynchronous, with the result returned in LeaderboardScoreUploaded_t + /// Details are extra game-defined information regarding how the user got that score + /// pScoreDetails points to an array of int32's, cScoreDetailsCount is the number of int32's in the list + /// + public static SteamAPICall_t UploadLeaderboardScore(SteamLeaderboard_t hSteamLeaderboard, ELeaderboardUploadScoreMethod eLeaderboardUploadScoreMethod, int nScore, int[] pScoreDetails, int cScoreDetailsCount) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamUserStats_UploadLeaderboardScore(hSteamLeaderboard, eLeaderboardUploadScoreMethod, nScore, pScoreDetails, cScoreDetailsCount); + } + + /// + /// Attaches a piece of user generated content the user's entry on a leaderboard. + /// hContent is a handle to a piece of user generated content that was shared using ISteamUserRemoteStorage::FileShare(). + /// This call is asynchronous, with the result returned in LeaderboardUGCSet_t. + /// + public static SteamAPICall_t AttachLeaderboardUGC(SteamLeaderboard_t hSteamLeaderboard, UGCHandle_t hUGC) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamUserStats_AttachLeaderboardUGC(hSteamLeaderboard, hUGC); + } + + /// + /// Retrieves the number of players currently playing your game (online + offline) + /// This call is asynchronous, with the result returned in NumberOfCurrentPlayers_t + /// + public static SteamAPICall_t GetNumberOfCurrentPlayers() { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamUserStats_GetNumberOfCurrentPlayers(); + } + + /// + /// Requests that Steam fetch data on the percentage of players who have received each achievement + /// for the game globally. + /// This call is asynchronous, with the result returned in GlobalAchievementPercentagesReady_t. + /// + public static SteamAPICall_t RequestGlobalAchievementPercentages() { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamUserStats_RequestGlobalAchievementPercentages(); + } + + /// + /// Get the info on the most achieved achievement for the game, returns an iterator index you can use to fetch + /// the next most achieved afterwards. Will return -1 if there is no data on achievement + /// percentages (ie, you haven't called RequestGlobalAchievementPercentages and waited on the callback). + /// + public static int GetMostAchievedAchievementInfo(out string pchName, uint unNameBufLen, out float pflPercent, out bool pbAchieved) { + InteropHelp.TestIfAvailableClient(); + IntPtr pchName2 = Marshal.AllocHGlobal((int)unNameBufLen); + int ret = NativeMethods.ISteamUserStats_GetMostAchievedAchievementInfo(pchName2, unNameBufLen, out pflPercent, out pbAchieved); + pchName = ret != -1 ? InteropHelp.PtrToStringUTF8(pchName2) : null; + Marshal.FreeHGlobal(pchName2); + return ret; + } + + /// + /// Get the info on the next most achieved achievement for the game. Call this after GetMostAchievedAchievementInfo or another + /// GetNextMostAchievedAchievementInfo call passing the iterator from the previous call. Returns -1 after the last + /// achievement has been iterated. + /// + public static int GetNextMostAchievedAchievementInfo(int iIteratorPrevious, out string pchName, uint unNameBufLen, out float pflPercent, out bool pbAchieved) { + InteropHelp.TestIfAvailableClient(); + IntPtr pchName2 = Marshal.AllocHGlobal((int)unNameBufLen); + int ret = NativeMethods.ISteamUserStats_GetNextMostAchievedAchievementInfo(iIteratorPrevious, pchName2, unNameBufLen, out pflPercent, out pbAchieved); + pchName = ret != -1 ? InteropHelp.PtrToStringUTF8(pchName2) : null; + Marshal.FreeHGlobal(pchName2); + return ret; + } + + /// + /// Returns the percentage of users who have achieved the specified achievement. + /// + public static bool GetAchievementAchievedPercent(string pchName, out float pflPercent) { + InteropHelp.TestIfAvailableClient(); + using (var pchName2 = new InteropHelp.UTF8StringHandle(pchName)) { + return NativeMethods.ISteamUserStats_GetAchievementAchievedPercent(pchName2, out pflPercent); + } + } + + /// + /// Requests global stats data, which is available for stats marked as "aggregated". + /// This call is asynchronous, with the results returned in GlobalStatsReceived_t. + /// nHistoryDays specifies how many days of day-by-day history to retrieve in addition + /// to the overall totals. The limit is 60. + /// + public static SteamAPICall_t RequestGlobalStats(int nHistoryDays) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamUserStats_RequestGlobalStats(nHistoryDays); + } + + /// + /// Gets the lifetime totals for an aggregated stat + /// + public static bool GetGlobalStat(string pchStatName, out long pData) { + InteropHelp.TestIfAvailableClient(); + using (var pchStatName2 = new InteropHelp.UTF8StringHandle(pchStatName)) { + return NativeMethods.ISteamUserStats_GetGlobalStat(pchStatName2, out pData); + } + } + + public static bool GetGlobalStat(string pchStatName, out double pData) { + InteropHelp.TestIfAvailableClient(); + using (var pchStatName2 = new InteropHelp.UTF8StringHandle(pchStatName)) { + return NativeMethods.ISteamUserStats_GetGlobalStat_(pchStatName2, out pData); + } + } + + /// + /// Gets history for an aggregated stat. pData will be filled with daily values, starting with today. + /// So when called, pData[0] will be today, pData[1] will be yesterday, and pData[2] will be two days ago, + /// etc. cubData is the size in bytes of the pubData buffer. Returns the number of + /// elements actually set. + /// + public static int GetGlobalStatHistory(string pchStatName, long[] pData, uint cubData) { + InteropHelp.TestIfAvailableClient(); + using (var pchStatName2 = new InteropHelp.UTF8StringHandle(pchStatName)) { + return NativeMethods.ISteamUserStats_GetGlobalStatHistory(pchStatName2, pData, cubData); + } + } + + public static int GetGlobalStatHistory(string pchStatName, double[] pData, uint cubData) { + InteropHelp.TestIfAvailableClient(); + using (var pchStatName2 = new InteropHelp.UTF8StringHandle(pchStatName)) { + return NativeMethods.ISteamUserStats_GetGlobalStatHistory_(pchStatName2, pData, cubData); + } + } +#if _PS3 + /// + /// Call to kick off installation of the PS3 trophies. This call is asynchronous, and the results will be returned in a PS3TrophiesInstalled_t + /// callback. + /// + public static bool InstallPS3Trophies() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUserStats_InstallPS3Trophies(); + } + + /// + /// Returns the amount of space required at boot to install trophies. This value can be used when comparing the amount of space needed + /// by the game to the available space value passed to the game at boot. The value is set during InstallPS3Trophies(). + /// + public static ulong GetTrophySpaceRequiredBeforeInstall() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUserStats_GetTrophySpaceRequiredBeforeInstall(); + } + + /// + /// On PS3, user stats & achievement progress through Steam must be stored with the user's saved game data. + /// At startup, before calling RequestCurrentStats(), you must pass the user's stats data to Steam via this method. + /// If you do not have any user data, call this function with pvData = NULL and cubData = 0 + /// + public static bool SetUserStatsData(IntPtr pvData, uint cubData) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUserStats_SetUserStatsData(pvData, cubData); + } + + /// + /// Call to get the user's current stats data. You should retrieve this data after receiving successful UserStatsReceived_t & UserStatsStored_t + /// callbacks, and store the data with the user's save game data. You can call this method with pvData = NULL and cubData = 0 to get the required + /// buffer size. + /// + public static bool GetUserStatsData(IntPtr pvData, uint cubData, out uint pcubWritten) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUserStats_GetUserStatsData(pvData, cubData, out pcubWritten); + } +#endif + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamuserstats.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamuserstats.cs.meta new file mode 100644 index 0000000..3a3dc0f --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamuserstats.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 13e9787c38dee4842844ccfdf9a078d3 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamutils.cs b/Assets/Editor/Steamworks.NET/autogen/isteamutils.cs new file mode 100644 index 0000000..6447ff0 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamutils.cs @@ -0,0 +1,273 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamUtils { + /// + /// return the number of seconds since the user + /// + public static uint GetSecondsSinceAppActive() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUtils_GetSecondsSinceAppActive(); + } + + public static uint GetSecondsSinceComputerActive() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUtils_GetSecondsSinceComputerActive(); + } + + /// + /// the universe this client is connecting to + /// + public static EUniverse GetConnectedUniverse() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUtils_GetConnectedUniverse(); + } + + /// + /// Steam server time - in PST, number of seconds since January 1, 1970 (i.e unix time) + /// + public static uint GetServerRealTime() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUtils_GetServerRealTime(); + } + + /// + /// returns the 2 digit ISO 3166-1-alpha-2 format country code this client is running in (as looked up via an IP-to-location database) + /// e.g "US" or "UK". + /// + public static string GetIPCountry() { + InteropHelp.TestIfAvailableClient(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamUtils_GetIPCountry()); + } + + /// + /// returns true if the image exists, and valid sizes were filled out + /// + public static bool GetImageSize(int iImage, out uint pnWidth, out uint pnHeight) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUtils_GetImageSize(iImage, out pnWidth, out pnHeight); + } + + /// + /// returns true if the image exists, and the buffer was successfully filled out + /// results are returned in RGBA format + /// the destination buffer size should be 4 * height * width * sizeof(char) + /// + public static bool GetImageRGBA(int iImage, byte[] pubDest, int nDestBufferSize) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUtils_GetImageRGBA(iImage, pubDest, nDestBufferSize); + } + + /// + /// returns the IP of the reporting server for valve - currently only used in Source engine games + /// + public static bool GetCSERIPPort(out uint unIP, out ushort usPort) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUtils_GetCSERIPPort(out unIP, out usPort); + } + + /// + /// return the amount of battery power left in the current system in % [0..100], 255 for being on AC power + /// + public static byte GetCurrentBatteryPower() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUtils_GetCurrentBatteryPower(); + } + + /// + /// returns the appID of the current process + /// + public static AppId_t GetAppID() { + InteropHelp.TestIfAvailableClient(); + return (AppId_t)NativeMethods.ISteamUtils_GetAppID(); + } + + /// + /// Sets the position where the overlay instance for the currently calling game should show notifications. + /// This position is per-game and if this function is called from outside of a game context it will do nothing. + /// + public static void SetOverlayNotificationPosition(ENotificationPosition eNotificationPosition) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamUtils_SetOverlayNotificationPosition(eNotificationPosition); + } + + /// + /// API asynchronous call results + /// can be used directly, but more commonly used via the callback dispatch API (see steam_api.h) + /// + public static bool IsAPICallCompleted(SteamAPICall_t hSteamAPICall, out bool pbFailed) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUtils_IsAPICallCompleted(hSteamAPICall, out pbFailed); + } + + public static ESteamAPICallFailure GetAPICallFailureReason(SteamAPICall_t hSteamAPICall) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUtils_GetAPICallFailureReason(hSteamAPICall); + } + + public static bool GetAPICallResult(SteamAPICall_t hSteamAPICall, IntPtr pCallback, int cubCallback, int iCallbackExpected, out bool pbFailed) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUtils_GetAPICallResult(hSteamAPICall, pCallback, cubCallback, iCallbackExpected, out pbFailed); + } + + /// + /// this needs to be called every frame to process matchmaking results + /// redundant if you're already calling SteamAPI_RunCallbacks() + /// + public static void RunFrame() { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamUtils_RunFrame(); + } + + /// + /// returns the number of IPC calls made since the last time this function was called + /// Used for perf debugging so you can understand how many IPC calls your game makes per frame + /// Every IPC call is at minimum a thread context switch if not a process one so you want to rate + /// control how often you do them. + /// + public static uint GetIPCCallCount() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUtils_GetIPCCallCount(); + } + + /// + /// API warning handling + /// 'int' is the severity; 0 for msg, 1 for warning + /// 'const char *' is the text of the message + /// callbacks will occur directly after the API function is called that generated the warning or message + /// + public static void SetWarningMessageHook(SteamAPIWarningMessageHook_t pFunction) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamUtils_SetWarningMessageHook(pFunction); + } + + /// + /// Returns true if the overlay is running & the user can access it. The overlay process could take a few seconds to + /// start & hook the game process, so this function will initially return false while the overlay is loading. + /// + public static bool IsOverlayEnabled() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUtils_IsOverlayEnabled(); + } + + /// + /// Normally this call is unneeded if your game has a constantly running frame loop that calls the + /// D3D Present API, or OGL SwapBuffers API every frame. + /// However, if you have a game that only refreshes the screen on an event driven basis then that can break + /// the overlay, as it uses your Present/SwapBuffers calls to drive it's internal frame loop and it may also + /// need to Present() to the screen any time an even needing a notification happens or when the overlay is + /// brought up over the game by a user. You can use this API to ask the overlay if it currently need a present + /// in that case, and then you can check for this periodically (roughly 33hz is desirable) and make sure you + /// refresh the screen with Present or SwapBuffers to allow the overlay to do it's work. + /// + public static bool BOverlayNeedsPresent() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUtils_BOverlayNeedsPresent(); + } +#if !_PS3 + /// + /// Asynchronous call to check if an executable file has been signed using the public key set on the signing tab + /// of the partner site, for example to refuse to load modified executable files. + /// The result is returned in CheckFileSignature_t. + /// k_ECheckFileSignatureNoSignaturesFoundForThisApp - This app has not been configured on the signing tab of the partner site to enable this function. + /// k_ECheckFileSignatureNoSignaturesFoundForThisFile - This file is not listed on the signing tab for the partner site. + /// k_ECheckFileSignatureFileNotFound - The file does not exist on disk. + /// k_ECheckFileSignatureInvalidSignature - The file exists, and the signing tab has been set for this file, but the file is either not signed or the signature does not match. + /// k_ECheckFileSignatureValidSignature - The file is signed and the signature is valid. + /// + public static SteamAPICall_t CheckFileSignature(string szFileName) { + InteropHelp.TestIfAvailableClient(); + using (var szFileName2 = new InteropHelp.UTF8StringHandle(szFileName)) { + return (SteamAPICall_t)NativeMethods.ISteamUtils_CheckFileSignature(szFileName2); + } + } +#endif +#if _PS3 + public static void PostPS3SysutilCallback(ulong status, ulong param, IntPtr userdata) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamUtils_PostPS3SysutilCallback(status, param, userdata); + } + + public static bool BIsReadyToShutdown() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUtils_BIsReadyToShutdown(); + } + + public static bool BIsPSNOnline() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUtils_BIsPSNOnline(); + } + + /// + /// Call this with localized strings for the language the game is running in, otherwise default english + /// strings will be used by Steam. + /// + public static void SetPSNGameBootInviteStrings(string pchSubject, string pchBody) { + InteropHelp.TestIfAvailableClient(); + using (var pchSubject2 = new InteropHelp.UTF8StringHandle(pchSubject)) + using (var pchBody2 = new InteropHelp.UTF8StringHandle(pchBody)) { + NativeMethods.ISteamUtils_SetPSNGameBootInviteStrings(pchSubject2, pchBody2); + } + } +#endif + /// + /// Activates the Big Picture text input dialog which only supports gamepad input + /// + public static bool ShowGamepadTextInput(EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, string pchDescription, uint unCharMax, string pchExistingText) { + InteropHelp.TestIfAvailableClient(); + using (var pchDescription2 = new InteropHelp.UTF8StringHandle(pchDescription)) + using (var pchExistingText2 = new InteropHelp.UTF8StringHandle(pchExistingText)) { + return NativeMethods.ISteamUtils_ShowGamepadTextInput(eInputMode, eLineInputMode, pchDescription2, unCharMax, pchExistingText2); + } + } + + /// + /// Returns previously entered text & length + /// + public static uint GetEnteredGamepadTextLength() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUtils_GetEnteredGamepadTextLength(); + } + + public static bool GetEnteredGamepadTextInput(out string pchText, uint cchText) { + InteropHelp.TestIfAvailableClient(); + IntPtr pchText2 = Marshal.AllocHGlobal((int)cchText); + bool ret = NativeMethods.ISteamUtils_GetEnteredGamepadTextInput(pchText2, cchText); + pchText = ret ? InteropHelp.PtrToStringUTF8(pchText2) : null; + Marshal.FreeHGlobal(pchText2); + return ret; + } + + /// + /// returns the language the steam client is running in, you probably want ISteamApps::GetCurrentGameLanguage instead, this is for very special usage cases + /// + public static string GetSteamUILanguage() { + InteropHelp.TestIfAvailableClient(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamUtils_GetSteamUILanguage()); + } + + /// + /// returns true if Steam itself is running in VR mode + /// + public static bool IsSteamRunningInVR() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUtils_IsSteamRunningInVR(); + } + + /// + /// Sets the inset of the overlay notification from the corner specified by SetOverlayNotificationPosition. + /// + public static void SetOverlayNotificationInset(int nHorizontalInset, int nVerticalInset) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamUtils_SetOverlayNotificationInset(nHorizontalInset, nVerticalInset); + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamutils.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamutils.cs.meta new file mode 100644 index 0000000..85814a5 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamutils.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 002e0b83e3eab1f4dbdfad840de78ab7 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamvideo.cs b/Assets/Editor/Steamworks.NET/autogen/isteamvideo.cs new file mode 100644 index 0000000..6213da7 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamvideo.cs @@ -0,0 +1,29 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +using System; +using System.Runtime.InteropServices; + +namespace Steamworks { + public static class SteamVideo { + /// + /// Get a URL suitable for streaming the given Video app ID's video + /// + public static void GetVideoURL(AppId_t unVideoAppID) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamVideo_GetVideoURL(unVideoAppID); + } + + /// + /// returns true if user is uploading a live broadcast + /// + public static bool IsBroadcasting(out int pnNumViewers) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamVideo_IsBroadcasting(out pnNumViewers); + } + } +} \ No newline at end of file diff --git a/Assets/Editor/Steamworks.NET/autogen/isteamvideo.cs.meta b/Assets/Editor/Steamworks.NET/autogen/isteamvideo.cs.meta new file mode 100644 index 0000000..3cd833e --- /dev/null +++ b/Assets/Editor/Steamworks.NET/autogen/isteamvideo.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 7d48e6f02e6055a48aa8cf58e0b75449 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types.meta b/Assets/Editor/Steamworks.NET/types.meta new file mode 100644 index 0000000..5e6d723 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 977ca1a08f4b8db47900686ca79f4353 +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/MatchmakingTypes.meta b/Assets/Editor/Steamworks.NET/types/MatchmakingTypes.meta new file mode 100644 index 0000000..43ba6d0 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/MatchmakingTypes.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: cd761572174a9f240b8bdca5d0366261 +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/MatchmakingTypes/gameserveritem_t.cs b/Assets/Editor/Steamworks.NET/types/MatchmakingTypes/gameserveritem_t.cs new file mode 100644 index 0000000..d8ddcf4 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/MatchmakingTypes/gameserveritem_t.cs @@ -0,0 +1,94 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +using System.Runtime.InteropServices; +using System.Text; + +namespace Steamworks { + //----------------------------------------------------------------------------- + // Purpose: Data describing a single server + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Size = 372, Pack = 4)] + public class gameserveritem_t { + public string GetGameDir() { + return Encoding.UTF8.GetString(m_szGameDir, 0, System.Array.IndexOf(m_szGameDir, 0)); + } + + public void SetGameDir(string dir) { + m_szGameDir = Encoding.UTF8.GetBytes(dir + '\0'); + } + + public string GetMap() { + return Encoding.UTF8.GetString(m_szMap, 0, System.Array.IndexOf(m_szMap, 0)); + } + + public void SetMap(string map) { + m_szMap = Encoding.UTF8.GetBytes(map + '\0'); + } + + public string GetGameDescription() { + return Encoding.UTF8.GetString(m_szGameDescription, 0, System.Array.IndexOf(m_szGameDescription, 0)); + } + + public void SetGameDescription(string desc) { + m_szGameDescription = Encoding.UTF8.GetBytes(desc + '\0'); + } + + public string GetServerName() { + // Use the IP address as the name if nothing is set yet. + if (m_szServerName[0] == 0) + return m_NetAdr.GetConnectionAddressString(); + else + return Encoding.UTF8.GetString(m_szServerName, 0, System.Array.IndexOf(m_szServerName, 0)); + } + + public void SetServerName(string name) { + m_szServerName = Encoding.UTF8.GetBytes(name + '\0'); + } + + public string GetGameTags() { + return Encoding.UTF8.GetString(m_szGameTags, 0, System.Array.IndexOf(m_szGameTags, 0)); + } + + public void SetGameTags(string tags) { + m_szGameTags = Encoding.UTF8.GetBytes(tags + '\0'); + } + + public servernetadr_t m_NetAdr; ///< IP/Query Port/Connection Port for this server + public int m_nPing; ///< current ping time in milliseconds + [MarshalAs(UnmanagedType.I1)] + public bool m_bHadSuccessfulResponse; ///< server has responded successfully in the past + [MarshalAs(UnmanagedType.I1)] + public bool m_bDoNotRefresh; ///< server is marked as not responding and should no longer be refreshed + [MarshalAs(UnmanagedType.ByValArray, SizeConst = Constants.k_cbMaxGameServerGameDir)] + private byte[] m_szGameDir; ///< current game directory + [MarshalAs(UnmanagedType.ByValArray, SizeConst = Constants.k_cbMaxGameServerMapName)] + private byte[] m_szMap; ///< current map + [MarshalAs(UnmanagedType.ByValArray, SizeConst = Constants.k_cbMaxGameServerGameDescription)] + private byte[] m_szGameDescription; ///< game description + public uint m_nAppID; ///< Steam App ID of this server + public int m_nPlayers; ///< total number of players currently on the server. INCLUDES BOTS!! + public int m_nMaxPlayers; ///< Maximum players that can join this server + public int m_nBotPlayers; ///< Number of bots (i.e simulated players) on this server + [MarshalAs(UnmanagedType.I1)] + public bool m_bPassword; ///< true if this server needs a password to join + [MarshalAs(UnmanagedType.I1)] + public bool m_bSecure; ///< Is this server protected by VAC + public uint m_ulTimeLastPlayed; ///< time (in unix time) when this server was last played on (for favorite/history servers) + public int m_nServerVersion; ///< server version as reported to Steam + + // Game server name + [MarshalAs(UnmanagedType.ByValArray, SizeConst = Constants.k_cbMaxGameServerName)] + private byte[] m_szServerName; + + // the tags this server exposes + [MarshalAs(UnmanagedType.ByValArray, SizeConst = Constants.k_cbMaxGameServerTags)] + private byte[] m_szGameTags; + + // steamID of the game server - invalid if it's doesn't have one (old server, or not connected to Steam) + public CSteamID m_steamID; + } +} diff --git a/Assets/Editor/Steamworks.NET/types/MatchmakingTypes/gameserveritem_t.cs.meta b/Assets/Editor/Steamworks.NET/types/MatchmakingTypes/gameserveritem_t.cs.meta new file mode 100644 index 0000000..62419a3 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/MatchmakingTypes/gameserveritem_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b30bb27544428ca4fb0eab8a9acf9cc8 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/MatchmakingTypes/servernetadr_t.cs b/Assets/Editor/Steamworks.NET/types/MatchmakingTypes/servernetadr_t.cs new file mode 100644 index 0000000..22750cc --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/MatchmakingTypes/servernetadr_t.cs @@ -0,0 +1,104 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + // servernetadr_t is all the addressing info the serverbrowser needs to know about a game server, + // namely: its IP, its connection port, and its query port. + //[StructLayout(LayoutKind.Sequential)] + public struct servernetadr_t { + private ushort m_usConnectionPort; // (in HOST byte order) + private ushort m_usQueryPort; + private uint m_unIP; + + public void Init(uint ip, ushort usQueryPort, ushort usConnectionPort) { + m_unIP = ip; + m_usQueryPort = usQueryPort; + m_usConnectionPort = usConnectionPort; + } + +#if NETADR_H + public netadr_t GetIPAndQueryPort() { + return netadr_t( m_unIP, m_usQueryPort ); + } +#endif + + // Access the query port. + public ushort GetQueryPort() { + return m_usQueryPort; + } + + public void SetQueryPort(ushort usPort) { + m_usQueryPort = usPort; + } + + // Access the connection port. + public ushort GetConnectionPort() { + return m_usConnectionPort; + } + + public void SetConnectionPort(ushort usPort) { + m_usConnectionPort = usPort; + } + + // Access the IP + public uint GetIP() { + return m_unIP; + } + + public void SetIP(uint unIP) { + m_unIP = unIP; + } + + // This gets the 'a.b.c.d:port' string with the connection port (instead of the query port). + public string GetConnectionAddressString() { + return ToString(m_unIP, m_usConnectionPort); + } + + public string GetQueryAddressString() { + return ToString(m_unIP, m_usQueryPort); + } + + public static string ToString(uint unIP, ushort usPort) { +#if VALVE_BIG_ENDIAN + return string.Format("{0}.{1}.{2}.{3}:{4}", unIP & 0xFFul, (unIP >> 8) & 0xFFul, (unIP >> 16) & 0xFFul, (unIP >> 24) & 0xFFul, usPort); +#else + return string.Format("{0}.{1}.{2}.{3}:{4}", (unIP >> 24) & 0xFFul, (unIP >> 16) & 0xFFul, (unIP >> 8) & 0xFFul, unIP & 0xFFul, usPort); +#endif + } + + public static bool operator <(servernetadr_t x, servernetadr_t y) { + return (x.m_unIP < y.m_unIP) || (x.m_unIP == y.m_unIP && x.m_usQueryPort < y.m_usQueryPort); + } + + public static bool operator >(servernetadr_t x, servernetadr_t y) { + return (x.m_unIP > y.m_unIP) || (x.m_unIP == y.m_unIP && x.m_usQueryPort > y.m_usQueryPort); + } + + public override bool Equals(object other) { + return other is servernetadr_t && this == (servernetadr_t)other; + } + + public override int GetHashCode() { + return m_unIP.GetHashCode() + m_usQueryPort.GetHashCode() + m_usConnectionPort.GetHashCode(); + } + + public static bool operator ==(servernetadr_t x, servernetadr_t y) { + return (x.m_unIP == y.m_unIP) && (x.m_usQueryPort == y.m_usQueryPort) && (x.m_usConnectionPort == y.m_usConnectionPort); + } + + public static bool operator !=(servernetadr_t x, servernetadr_t y) { + return !(x == y); + } + + public bool Equals(servernetadr_t other) { + return (m_unIP == other.m_unIP) && (m_usQueryPort == other.m_usQueryPort) && (m_usConnectionPort == other.m_usConnectionPort); + } + + public int CompareTo(servernetadr_t other) { + return m_unIP.CompareTo(other.m_unIP) + m_usQueryPort.CompareTo(other.m_usQueryPort) + m_usConnectionPort.CompareTo(other.m_usConnectionPort); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/MatchmakingTypes/servernetadr_t.cs.meta b/Assets/Editor/Steamworks.NET/types/MatchmakingTypes/servernetadr_t.cs.meta new file mode 100644 index 0000000..9aec828 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/MatchmakingTypes/servernetadr_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 15332a231acb43948842abbf8bb4b2ef +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamClient.meta b/Assets/Editor/Steamworks.NET/types/SteamClient.meta new file mode 100644 index 0000000..97dd918 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamClient.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fd9b20cc1c86c8d49bfa74d2eeaa7a54 +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamClient/HSteamPipe.cs b/Assets/Editor/Steamworks.NET/types/SteamClient/HSteamPipe.cs new file mode 100644 index 0000000..e2086b0 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamClient/HSteamPipe.cs @@ -0,0 +1,51 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct HSteamPipe : System.IEquatable, System.IComparable { + public int m_HSteamPipe; + + public HSteamPipe(int value) { + m_HSteamPipe = value; + } + + public override string ToString() { + return m_HSteamPipe.ToString(); + } + + public override bool Equals(object other) { + return other is HSteamPipe && this == (HSteamPipe)other; + } + + public override int GetHashCode() { + return m_HSteamPipe.GetHashCode(); + } + + public static bool operator ==(HSteamPipe x, HSteamPipe y) { + return x.m_HSteamPipe == y.m_HSteamPipe; + } + + public static bool operator !=(HSteamPipe x, HSteamPipe y) { + return !(x == y); + } + + public static explicit operator HSteamPipe(int value) { + return new HSteamPipe(value); + } + + public static explicit operator int(HSteamPipe that) { + return that.m_HSteamPipe; + } + + public bool Equals(HSteamPipe other) { + return m_HSteamPipe == other.m_HSteamPipe; + } + + public int CompareTo(HSteamPipe other) { + return m_HSteamPipe.CompareTo(other.m_HSteamPipe); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamClient/HSteamPipe.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamClient/HSteamPipe.cs.meta new file mode 100644 index 0000000..3b5b67a --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamClient/HSteamPipe.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 75c03671f60997d489d3df45a581d55d +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamClient/HSteamUser.cs b/Assets/Editor/Steamworks.NET/types/SteamClient/HSteamUser.cs new file mode 100644 index 0000000..da30a35 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamClient/HSteamUser.cs @@ -0,0 +1,51 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct HSteamUser : System.IEquatable, System.IComparable { + public int m_HSteamUser; + + public HSteamUser(int value) { + m_HSteamUser = value; + } + + public override string ToString() { + return m_HSteamUser.ToString(); + } + + public override bool Equals(object other) { + return other is HSteamUser && this == (HSteamUser)other; + } + + public override int GetHashCode() { + return m_HSteamUser.GetHashCode(); + } + + public static bool operator ==(HSteamUser x, HSteamUser y) { + return x.m_HSteamUser == y.m_HSteamUser; + } + + public static bool operator !=(HSteamUser x, HSteamUser y) { + return !(x == y); + } + + public static explicit operator HSteamUser(int value) { + return new HSteamUser(value); + } + + public static explicit operator int(HSteamUser that) { + return that.m_HSteamUser; + } + + public bool Equals(HSteamUser other) { + return m_HSteamUser == other.m_HSteamUser; + } + + public int CompareTo(HSteamUser other) { + return m_HSteamUser.CompareTo(other.m_HSteamUser); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamClient/HSteamUser.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamClient/HSteamUser.cs.meta new file mode 100644 index 0000000..f0c9cf3 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamClient/HSteamUser.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 63a71901f4608d4429dfcd82880ea995 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamClient/SteamAPIWarningMessageHook_t.cs b/Assets/Editor/Steamworks.NET/types/SteamClient/SteamAPIWarningMessageHook_t.cs new file mode 100644 index 0000000..0eec6a8 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamClient/SteamAPIWarningMessageHook_t.cs @@ -0,0 +1,10 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + [System.Runtime.InteropServices.UnmanagedFunctionPointer(System.Runtime.InteropServices.CallingConvention.Cdecl)] + public delegate void SteamAPIWarningMessageHook_t(int nSeverity, System.Text.StringBuilder pchDebugText); +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamClient/SteamAPIWarningMessageHook_t.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamClient/SteamAPIWarningMessageHook_t.cs.meta new file mode 100644 index 0000000..3507636 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamClient/SteamAPIWarningMessageHook_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 0a82e6a4b70ec954aaf1ee0d23b75fc0 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamClient/SteamAPI_CheckCallbackRegistered_t.cs b/Assets/Editor/Steamworks.NET/types/SteamClient/SteamAPI_CheckCallbackRegistered_t.cs new file mode 100644 index 0000000..95e23be --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamClient/SteamAPI_CheckCallbackRegistered_t.cs @@ -0,0 +1,10 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + [System.Runtime.InteropServices.UnmanagedFunctionPointer(System.Runtime.InteropServices.CallingConvention.StdCall)] // TODO: This is probably wrong, will likely crash on some platform. + public delegate void SteamAPI_CheckCallbackRegistered_t(int iCallbackNum); +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamClient/SteamAPI_CheckCallbackRegistered_t.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamClient/SteamAPI_CheckCallbackRegistered_t.cs.meta new file mode 100644 index 0000000..ef612ef --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamClient/SteamAPI_CheckCallbackRegistered_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 861bc5356efdea24da10dfb866c8fe13 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamClient/SteamAPI_PostAPIResultInProcess_t.cs b/Assets/Editor/Steamworks.NET/types/SteamClient/SteamAPI_PostAPIResultInProcess_t.cs new file mode 100644 index 0000000..39e6f97 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamClient/SteamAPI_PostAPIResultInProcess_t.cs @@ -0,0 +1,10 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + [System.Runtime.InteropServices.UnmanagedFunctionPointer(System.Runtime.InteropServices.CallingConvention.StdCall)] // TODO: This is probably wrong, will likely crash on some platform. + public delegate void SteamAPI_PostAPIResultInProcess_t(SteamAPICall_t callHandle, System.IntPtr pUnknown, uint unCallbackSize, int iCallbackNum); +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamClient/SteamAPI_PostAPIResultInProcess_t.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamClient/SteamAPI_PostAPIResultInProcess_t.cs.meta new file mode 100644 index 0000000..3b71a5b --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamClient/SteamAPI_PostAPIResultInProcess_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: dc50858bc6ac8994c9036af9f78ac28b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamClientPublic.meta b/Assets/Editor/Steamworks.NET/types/SteamClientPublic.meta new file mode 100644 index 0000000..68bbe4d --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamClientPublic.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b117ab23e87789b49b7b940a7b4b3f0b +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamClientPublic/CGameID.cs b/Assets/Editor/Steamworks.NET/types/SteamClientPublic/CGameID.cs new file mode 100644 index 0000000..83ff29c --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamClientPublic/CGameID.cs @@ -0,0 +1,141 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct CGameID : System.IEquatable, System.IComparable { + public ulong m_GameID; + + public enum EGameIDType { + k_EGameIDTypeApp = 0, + k_EGameIDTypeGameMod = 1, + k_EGameIDTypeShortcut = 2, + k_EGameIDTypeP2P = 3, + }; + + public CGameID(ulong GameID) { + m_GameID = GameID; + } + + public CGameID(AppId_t nAppID) { + m_GameID = 0; + SetAppID(nAppID); + } + + public CGameID(AppId_t nAppID, uint nModID) { + m_GameID = 0; + SetAppID(nAppID); + SetType(EGameIDType.k_EGameIDTypeGameMod); + SetModID(nModID); + } + + public bool IsSteamApp() { + return Type() == EGameIDType.k_EGameIDTypeApp; + } + + public bool IsMod() { + return Type() == EGameIDType.k_EGameIDTypeGameMod; + } + + public bool IsShortcut() { + return Type() == EGameIDType.k_EGameIDTypeShortcut; + } + + public bool IsP2PFile() { + return Type() == EGameIDType.k_EGameIDTypeP2P; + } + + public AppId_t AppID() { + return new AppId_t((uint)(m_GameID & 0xFFFFFFul)); + } + + public EGameIDType Type() { + return (EGameIDType)((m_GameID >> 24) & 0xFFul); + } + + public uint ModID() { + return (uint)((m_GameID >> 32) & 0xFFFFFFFFul); + } + + public bool IsValid() { + // Each type has it's own invalid fixed point: + switch (Type()) { + case EGameIDType.k_EGameIDTypeApp: + return AppID() != AppId_t.Invalid; + + case EGameIDType.k_EGameIDTypeGameMod: + return AppID() != AppId_t.Invalid && (ModID() & 0x80000000) != 0; + + case EGameIDType.k_EGameIDTypeShortcut: + return (ModID() & 0x80000000) != 0; + + case EGameIDType.k_EGameIDTypeP2P: + return AppID() == AppId_t.Invalid && (ModID() & 0x80000000) != 0; + + default: + return false; + } + } + + public void Reset() { + m_GameID = 0; + } + + public void Set(ulong GameID) { + m_GameID = GameID; + } + + #region Private Setters for internal use + private void SetAppID(AppId_t other) { + m_GameID = (m_GameID & ~(0xFFFFFFul << (ushort)0)) | (((ulong)(other) & 0xFFFFFFul) << (ushort)0); + } + + private void SetType(EGameIDType other) { + m_GameID = (m_GameID & ~(0xFFul << (ushort)24)) | (((ulong)(other) & 0xFFul) << (ushort)24); + } + + private void SetModID(uint other) { + m_GameID = (m_GameID & ~(0xFFFFFFFFul << (ushort)32)) | (((ulong)(other) & 0xFFFFFFFFul) << (ushort)32); + } + #endregion + + #region Overrides + public override string ToString() { + return m_GameID.ToString(); + } + + public override bool Equals(object other) { + return other is CGameID && this == (CGameID)other; + } + + public override int GetHashCode() { + return m_GameID.GetHashCode(); + } + + public static bool operator ==(CGameID x, CGameID y) { + return x.m_GameID == y.m_GameID; + } + + public static bool operator !=(CGameID x, CGameID y) { + return !(x == y); + } + + public static explicit operator CGameID(ulong value) { + return new CGameID(value); + } + public static explicit operator ulong(CGameID that) { + return that.m_GameID; + } + + public bool Equals(CGameID other) { + return m_GameID == other.m_GameID; + } + + public int CompareTo(CGameID other) { + return m_GameID.CompareTo(other.m_GameID); + } + #endregion + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamClientPublic/CGameID.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamClientPublic/CGameID.cs.meta new file mode 100644 index 0000000..a6e8d0a --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamClientPublic/CGameID.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: f3ca933b3a524bc4ba4850496840eb1a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamClientPublic/CSteamID.cs b/Assets/Editor/Steamworks.NET/types/SteamClientPublic/CSteamID.cs new file mode 100644 index 0000000..5955e01 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamClientPublic/CSteamID.cs @@ -0,0 +1,265 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct CSteamID : System.IEquatable, System.IComparable { + public static readonly CSteamID Nil = new CSteamID(); + public static readonly CSteamID OutofDateGS = new CSteamID(new AccountID_t(0), 0, EUniverse.k_EUniverseInvalid, EAccountType.k_EAccountTypeInvalid); + public static readonly CSteamID LanModeGS = new CSteamID(new AccountID_t(0), 0, EUniverse.k_EUniversePublic, EAccountType.k_EAccountTypeInvalid); + public static readonly CSteamID NotInitYetGS = new CSteamID(new AccountID_t(1), 0, EUniverse.k_EUniverseInvalid, EAccountType.k_EAccountTypeInvalid); + public static readonly CSteamID NonSteamGS = new CSteamID(new AccountID_t(2), 0, EUniverse.k_EUniverseInvalid, EAccountType.k_EAccountTypeInvalid); + public ulong m_SteamID; + + public CSteamID(AccountID_t unAccountID, EUniverse eUniverse, EAccountType eAccountType) { + m_SteamID = 0; + Set(unAccountID, eUniverse, eAccountType); + } + + public CSteamID(AccountID_t unAccountID, uint unAccountInstance, EUniverse eUniverse, EAccountType eAccountType) { + m_SteamID = 0; +#if _SERVER && Assert + Assert( ! ( ( EAccountType.k_EAccountTypeIndividual == eAccountType ) && ( unAccountInstance > k_unSteamUserWebInstance ) ) ); // enforce that for individual accounts, instance is always 1 +#endif // _SERVER + InstancedSet(unAccountID, unAccountInstance, eUniverse, eAccountType); + } + + public CSteamID(ulong ulSteamID) { + m_SteamID = ulSteamID; + } + + public void Set(AccountID_t unAccountID, EUniverse eUniverse, EAccountType eAccountType) { + SetAccountID(unAccountID); + SetEUniverse(eUniverse); + SetEAccountType(eAccountType); + + if (eAccountType == EAccountType.k_EAccountTypeClan || eAccountType == EAccountType.k_EAccountTypeGameServer) { + SetAccountInstance(0); + } + else { + // by default we pick the desktop instance + SetAccountInstance(Constants.k_unSteamUserDesktopInstance); + } + } + + public void InstancedSet(AccountID_t unAccountID, uint unInstance, EUniverse eUniverse, EAccountType eAccountType) { + SetAccountID(unAccountID); + SetEUniverse(eUniverse); + SetEAccountType(eAccountType); + SetAccountInstance(unInstance); + } + + public void Clear() { + m_SteamID = 0; + } + + public void CreateBlankAnonLogon(EUniverse eUniverse) { + SetAccountID(new AccountID_t(0)); + SetEUniverse(eUniverse); + SetEAccountType(EAccountType.k_EAccountTypeAnonGameServer); + SetAccountInstance(0); + } + + public void CreateBlankAnonUserLogon(EUniverse eUniverse) { + SetAccountID(new AccountID_t(0)); + SetEUniverse(eUniverse); + SetEAccountType(EAccountType.k_EAccountTypeAnonUser); + SetAccountInstance(0); + } + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous game server login that will be filled in? + //----------------------------------------------------------------------------- + public bool BBlankAnonAccount() { + return GetAccountID() == new AccountID_t(0) && BAnonAccount() && GetUnAccountInstance() == 0; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a game server account id? (Either persistent or anonymous) + //----------------------------------------------------------------------------- + public bool BGameServerAccount() { + return GetEAccountType() == EAccountType.k_EAccountTypeGameServer || GetEAccountType() == EAccountType.k_EAccountTypeAnonGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a persistent (not anonymous) game server account id? + //----------------------------------------------------------------------------- + public bool BPersistentGameServerAccount() { + return GetEAccountType() == EAccountType.k_EAccountTypeGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous game server account id? + //----------------------------------------------------------------------------- + public bool BAnonGameServerAccount() { + return GetEAccountType() == EAccountType.k_EAccountTypeAnonGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a content server account id? + //----------------------------------------------------------------------------- + public bool BContentServerAccount() { + return GetEAccountType() == EAccountType.k_EAccountTypeContentServer; + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this a clan account id? + //----------------------------------------------------------------------------- + public bool BClanAccount() { + return GetEAccountType() == EAccountType.k_EAccountTypeClan; + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this a chat account id? + //----------------------------------------------------------------------------- + public bool BChatAccount() { + return GetEAccountType() == EAccountType.k_EAccountTypeChat; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a chat account id? + //----------------------------------------------------------------------------- + public bool IsLobby() { + return (GetEAccountType() == EAccountType.k_EAccountTypeChat) + && (GetUnAccountInstance() & (int)EChatSteamIDInstanceFlags.k_EChatInstanceFlagLobby) != 0; + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this an individual user account id? + //----------------------------------------------------------------------------- + public bool BIndividualAccount() { + return GetEAccountType() == EAccountType.k_EAccountTypeIndividual || GetEAccountType() == EAccountType.k_EAccountTypeConsoleUser; + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous account? + //----------------------------------------------------------------------------- + public bool BAnonAccount() { + return GetEAccountType() == EAccountType.k_EAccountTypeAnonUser || GetEAccountType() == EAccountType.k_EAccountTypeAnonGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous user account? ( used to create an account or reset a password ) + //----------------------------------------------------------------------------- + public bool BAnonUserAccount() { + return GetEAccountType() == EAccountType.k_EAccountTypeAnonUser; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a faked up Steam ID for a PSN friend account? + //----------------------------------------------------------------------------- + public bool BConsoleUserAccount() { + return GetEAccountType() == EAccountType.k_EAccountTypeConsoleUser; + } + + public void SetAccountID(AccountID_t other) { + m_SteamID = (m_SteamID & ~(0xFFFFFFFFul << (ushort)0)) | (((ulong)(other) & 0xFFFFFFFFul) << (ushort)0); + } + + public void SetAccountInstance(uint other) { + m_SteamID = (m_SteamID & ~(0xFFFFFul << (ushort)32)) | (((ulong)(other) & 0xFFFFFul) << (ushort)32); + } + + // This is a non standard/custom function not found in C++ Steamworks + public void SetEAccountType(EAccountType other) { + m_SteamID = (m_SteamID & ~(0xFul << (ushort)52)) | (((ulong)(other) & 0xFul) << (ushort)52); + } + + public void SetEUniverse(EUniverse other) { + m_SteamID = (m_SteamID & ~(0xFFul << (ushort)56)) | (((ulong)(other) & 0xFFul) << (ushort)56); + } + + public void ClearIndividualInstance() { + if (BIndividualAccount()) + SetAccountInstance(0); + } + + public bool HasNoIndividualInstance() { + return BIndividualAccount() && (GetUnAccountInstance() == 0); + } + + public AccountID_t GetAccountID() { + return new AccountID_t((uint)(m_SteamID & 0xFFFFFFFFul)); + } + + public uint GetUnAccountInstance() { + return (uint)((m_SteamID >> 32) & 0xFFFFFul); + } + + public EAccountType GetEAccountType() { + return (EAccountType)((m_SteamID >> 52) & 0xFul); + } + + public EUniverse GetEUniverse() { + return (EUniverse)((m_SteamID >> 56) & 0xFFul); + } + + public bool IsValid() { + if (GetEAccountType() <= EAccountType.k_EAccountTypeInvalid || GetEAccountType() >= EAccountType.k_EAccountTypeMax) + return false; + + if (GetEUniverse() <= EUniverse.k_EUniverseInvalid || GetEUniverse() >= EUniverse.k_EUniverseMax) + return false; + + if (GetEAccountType() == EAccountType.k_EAccountTypeIndividual) { + if (GetAccountID() == new AccountID_t(0) || GetUnAccountInstance() > Constants.k_unSteamUserWebInstance) + return false; + } + + if (GetEAccountType() == EAccountType.k_EAccountTypeClan) { + if (GetAccountID() == new AccountID_t(0) || GetUnAccountInstance() != 0) + return false; + } + + if (GetEAccountType() == EAccountType.k_EAccountTypeGameServer) { + if (GetAccountID() == new AccountID_t(0)) + return false; + // Any limit on instances? We use them for local users and bots + } + return true; + } + + #region Overrides + public override string ToString() { + return m_SteamID.ToString(); + } + + public override bool Equals(object other) { + return other is CSteamID && this == (CSteamID)other; + } + + public override int GetHashCode() { + return m_SteamID.GetHashCode(); + } + + public static bool operator ==(CSteamID x, CSteamID y) { + return x.m_SteamID == y.m_SteamID; + } + + public static bool operator !=(CSteamID x, CSteamID y) { + return !(x == y); + } + + public static explicit operator CSteamID(ulong value) { + return new CSteamID(value); + } + public static explicit operator ulong(CSteamID that) { + return that.m_SteamID; + } + + public bool Equals(CSteamID other) { + return m_SteamID == other.m_SteamID; + } + + public int CompareTo(CSteamID other) { + return m_SteamID.CompareTo(other.m_SteamID); + } + #endregion + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamClientPublic/CSteamID.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamClientPublic/CSteamID.cs.meta new file mode 100644 index 0000000..6f27ee6 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamClientPublic/CSteamID.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: cd1d6cfad7eb87f4f8c7d4ca3a7c5e3b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamClientPublic/HAuthTicket.cs b/Assets/Editor/Steamworks.NET/types/SteamClientPublic/HAuthTicket.cs new file mode 100644 index 0000000..0a92e76 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamClientPublic/HAuthTicket.cs @@ -0,0 +1,52 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct HAuthTicket : System.IEquatable, System.IComparable { + public static readonly HAuthTicket Invalid = new HAuthTicket(0); + public uint m_HAuthTicket; + + public HAuthTicket(uint value) { + m_HAuthTicket = value; + } + + public override string ToString() { + return m_HAuthTicket.ToString(); + } + + public override bool Equals(object other) { + return other is HAuthTicket && this == (HAuthTicket)other; + } + + public override int GetHashCode() { + return m_HAuthTicket.GetHashCode(); + } + + public static bool operator ==(HAuthTicket x, HAuthTicket y) { + return x.m_HAuthTicket == y.m_HAuthTicket; + } + + public static bool operator !=(HAuthTicket x, HAuthTicket y) { + return !(x == y); + } + + public static explicit operator HAuthTicket(uint value) { + return new HAuthTicket(value); + } + + public static explicit operator uint(HAuthTicket that) { + return that.m_HAuthTicket; + } + + public bool Equals(HAuthTicket other) { + return m_HAuthTicket == other.m_HAuthTicket; + } + + public int CompareTo(HAuthTicket other) { + return m_HAuthTicket.CompareTo(other.m_HAuthTicket); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamClientPublic/HAuthTicket.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamClientPublic/HAuthTicket.cs.meta new file mode 100644 index 0000000..20c091e --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamClientPublic/HAuthTicket.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 1685339e538bf2440b64091ad5b9afb0 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamFriends.meta b/Assets/Editor/Steamworks.NET/types/SteamFriends.meta new file mode 100644 index 0000000..40597de --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamFriends.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f7d099fe23c862244896323129fcb7e9 +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamFriends/FriendsGroupID_t.cs b/Assets/Editor/Steamworks.NET/types/SteamFriends/FriendsGroupID_t.cs new file mode 100644 index 0000000..a34d5f7 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamFriends/FriendsGroupID_t.cs @@ -0,0 +1,52 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct FriendsGroupID_t : System.IEquatable, System.IComparable { + public static readonly FriendsGroupID_t Invalid = new FriendsGroupID_t(-1); + public short m_FriendsGroupID; + + public FriendsGroupID_t(short value) { + m_FriendsGroupID = value; + } + + public override string ToString() { + return m_FriendsGroupID.ToString(); + } + + public override bool Equals(object other) { + return other is FriendsGroupID_t && this == (FriendsGroupID_t)other; + } + + public override int GetHashCode() { + return m_FriendsGroupID.GetHashCode(); + } + + public static bool operator ==(FriendsGroupID_t x, FriendsGroupID_t y) { + return x.m_FriendsGroupID == y.m_FriendsGroupID; + } + + public static bool operator !=(FriendsGroupID_t x, FriendsGroupID_t y) { + return !(x == y); + } + + public static explicit operator FriendsGroupID_t(short value) { + return new FriendsGroupID_t(value); + } + + public static explicit operator short(FriendsGroupID_t that) { + return that.m_FriendsGroupID; + } + + public bool Equals(FriendsGroupID_t other) { + return m_FriendsGroupID == other.m_FriendsGroupID; + } + + public int CompareTo(FriendsGroupID_t other) { + return m_FriendsGroupID.CompareTo(other.m_FriendsGroupID); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamFriends/FriendsGroupID_t.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamFriends/FriendsGroupID_t.cs.meta new file mode 100644 index 0000000..088968b --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamFriends/FriendsGroupID_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 200c2b61ed971664883218a605c3d968 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamHTMLSurface.meta b/Assets/Editor/Steamworks.NET/types/SteamHTMLSurface.meta new file mode 100644 index 0000000..27f9a80 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamHTMLSurface.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ccf2e2991e7738e42a06c84de653b4d5 +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamHTMLSurface/HHTMLBrowser.cs b/Assets/Editor/Steamworks.NET/types/SteamHTMLSurface/HHTMLBrowser.cs new file mode 100644 index 0000000..f155167 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamHTMLSurface/HHTMLBrowser.cs @@ -0,0 +1,52 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct HHTMLBrowser : System.IEquatable, System.IComparable { + public static readonly HHTMLBrowser Invalid = new HHTMLBrowser(0); + public uint m_HHTMLBrowser; + + public HHTMLBrowser(uint value) { + m_HHTMLBrowser = value; + } + + public override string ToString() { + return m_HHTMLBrowser.ToString(); + } + + public override bool Equals(object other) { + return other is HHTMLBrowser && this == (HHTMLBrowser)other; + } + + public override int GetHashCode() { + return m_HHTMLBrowser.GetHashCode(); + } + + public static bool operator ==(HHTMLBrowser x, HHTMLBrowser y) { + return x.m_HHTMLBrowser == y.m_HHTMLBrowser; + } + + public static bool operator !=(HHTMLBrowser x, HHTMLBrowser y) { + return !(x == y); + } + + public static explicit operator HHTMLBrowser(uint value) { + return new HHTMLBrowser(value); + } + + public static explicit operator uint(HHTMLBrowser that) { + return that.m_HHTMLBrowser; + } + + public bool Equals(HHTMLBrowser other) { + return m_HHTMLBrowser == other.m_HHTMLBrowser; + } + + public int CompareTo(HHTMLBrowser other) { + return m_HHTMLBrowser.CompareTo(other.m_HHTMLBrowser); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamHTMLSurface/HHTMLBrowser.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamHTMLSurface/HHTMLBrowser.cs.meta new file mode 100644 index 0000000..547c500 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamHTMLSurface/HHTMLBrowser.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 3e1966511819cbf42994e387cbfca77e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamHTTP.meta b/Assets/Editor/Steamworks.NET/types/SteamHTTP.meta new file mode 100644 index 0000000..507f5a3 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamHTTP.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5b6f7144e8ef9c24aafe9807d84198fa +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamHTTP/HTTPCookieContainerHandle.cs b/Assets/Editor/Steamworks.NET/types/SteamHTTP/HTTPCookieContainerHandle.cs new file mode 100644 index 0000000..9a8ccd2 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamHTTP/HTTPCookieContainerHandle.cs @@ -0,0 +1,52 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct HTTPCookieContainerHandle : System.IEquatable, System.IComparable { + public static readonly HTTPCookieContainerHandle Invalid = new HTTPCookieContainerHandle(0); + public uint m_HTTPCookieContainerHandle; + + public HTTPCookieContainerHandle(uint value) { + m_HTTPCookieContainerHandle = value; + } + + public override string ToString() { + return m_HTTPCookieContainerHandle.ToString(); + } + + public override bool Equals(object other) { + return other is HTTPCookieContainerHandle && this == (HTTPCookieContainerHandle)other; + } + + public override int GetHashCode() { + return m_HTTPCookieContainerHandle.GetHashCode(); + } + + public static bool operator ==(HTTPCookieContainerHandle x, HTTPCookieContainerHandle y) { + return x.m_HTTPCookieContainerHandle == y.m_HTTPCookieContainerHandle; + } + + public static bool operator !=(HTTPCookieContainerHandle x, HTTPCookieContainerHandle y) { + return !(x == y); + } + + public static explicit operator HTTPCookieContainerHandle(uint value) { + return new HTTPCookieContainerHandle(value); + } + + public static explicit operator uint(HTTPCookieContainerHandle that) { + return that.m_HTTPCookieContainerHandle; + } + + public bool Equals(HTTPCookieContainerHandle other) { + return m_HTTPCookieContainerHandle == other.m_HTTPCookieContainerHandle; + } + + public int CompareTo(HTTPCookieContainerHandle other) { + return m_HTTPCookieContainerHandle.CompareTo(other.m_HTTPCookieContainerHandle); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamHTTP/HTTPCookieContainerHandle.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamHTTP/HTTPCookieContainerHandle.cs.meta new file mode 100644 index 0000000..5cb522f --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamHTTP/HTTPCookieContainerHandle.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 58a562124a80bad4aa3d496bb5e3d7b9 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamHTTP/HTTPRequestHandle.cs b/Assets/Editor/Steamworks.NET/types/SteamHTTP/HTTPRequestHandle.cs new file mode 100644 index 0000000..1f23508 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamHTTP/HTTPRequestHandle.cs @@ -0,0 +1,52 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct HTTPRequestHandle : System.IEquatable, System.IComparable { + public static readonly HTTPRequestHandle Invalid = new HTTPRequestHandle(0); + public uint m_HTTPRequestHandle; + + public HTTPRequestHandle(uint value) { + m_HTTPRequestHandle = value; + } + + public override string ToString() { + return m_HTTPRequestHandle.ToString(); + } + + public override bool Equals(object other) { + return other is HTTPRequestHandle && this == (HTTPRequestHandle)other; + } + + public override int GetHashCode() { + return m_HTTPRequestHandle.GetHashCode(); + } + + public static bool operator ==(HTTPRequestHandle x, HTTPRequestHandle y) { + return x.m_HTTPRequestHandle == y.m_HTTPRequestHandle; + } + + public static bool operator !=(HTTPRequestHandle x, HTTPRequestHandle y) { + return !(x == y); + } + + public static explicit operator HTTPRequestHandle(uint value) { + return new HTTPRequestHandle(value); + } + + public static explicit operator uint(HTTPRequestHandle that) { + return that.m_HTTPRequestHandle; + } + + public bool Equals(HTTPRequestHandle other) { + return m_HTTPRequestHandle == other.m_HTTPRequestHandle; + } + + public int CompareTo(HTTPRequestHandle other) { + return m_HTTPRequestHandle.CompareTo(other.m_HTTPRequestHandle); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamHTTP/HTTPRequestHandle.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamHTTP/HTTPRequestHandle.cs.meta new file mode 100644 index 0000000..16f3284 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamHTTP/HTTPRequestHandle.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: c9edd009723fb97438dd53013aff534c +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamInventory.meta b/Assets/Editor/Steamworks.NET/types/SteamInventory.meta new file mode 100644 index 0000000..472f871 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamInventory.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7ffc4b3de4bf97a47a776953f4ddaabf +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamInventory/SteamInventoryResult_t.cs b/Assets/Editor/Steamworks.NET/types/SteamInventory/SteamInventoryResult_t.cs new file mode 100644 index 0000000..946a44f --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamInventory/SteamInventoryResult_t.cs @@ -0,0 +1,52 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct SteamInventoryResult_t : System.IEquatable, System.IComparable { + public static readonly SteamInventoryResult_t Invalid = new SteamInventoryResult_t(-1); + public int m_SteamInventoryResult; + + public SteamInventoryResult_t(int value) { + m_SteamInventoryResult = value; + } + + public override string ToString() { + return m_SteamInventoryResult.ToString(); + } + + public override bool Equals(object other) { + return other is SteamInventoryResult_t && this == (SteamInventoryResult_t)other; + } + + public override int GetHashCode() { + return m_SteamInventoryResult.GetHashCode(); + } + + public static bool operator ==(SteamInventoryResult_t x, SteamInventoryResult_t y) { + return x.m_SteamInventoryResult == y.m_SteamInventoryResult; + } + + public static bool operator !=(SteamInventoryResult_t x, SteamInventoryResult_t y) { + return !(x == y); + } + + public static explicit operator SteamInventoryResult_t(int value) { + return new SteamInventoryResult_t(value); + } + + public static explicit operator int(SteamInventoryResult_t that) { + return that.m_SteamInventoryResult; + } + + public bool Equals(SteamInventoryResult_t other) { + return m_SteamInventoryResult == other.m_SteamInventoryResult; + } + + public int CompareTo(SteamInventoryResult_t other) { + return m_SteamInventoryResult.CompareTo(other.m_SteamInventoryResult); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamInventory/SteamInventoryResult_t.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamInventory/SteamInventoryResult_t.cs.meta new file mode 100644 index 0000000..c8c54e9 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamInventory/SteamInventoryResult_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 73ac96bbfbe7a7f45aa90848c7575523 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamInventory/SteamItemDef_t.cs b/Assets/Editor/Steamworks.NET/types/SteamInventory/SteamItemDef_t.cs new file mode 100644 index 0000000..15ca489 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamInventory/SteamItemDef_t.cs @@ -0,0 +1,51 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct SteamItemDef_t : System.IEquatable, System.IComparable { + public int m_SteamItemDef; + + public SteamItemDef_t(int value) { + m_SteamItemDef = value; + } + + public override string ToString() { + return m_SteamItemDef.ToString(); + } + + public override bool Equals(object other) { + return other is SteamItemDef_t && this == (SteamItemDef_t)other; + } + + public override int GetHashCode() { + return m_SteamItemDef.GetHashCode(); + } + + public static bool operator ==(SteamItemDef_t x, SteamItemDef_t y) { + return x.m_SteamItemDef == y.m_SteamItemDef; + } + + public static bool operator !=(SteamItemDef_t x, SteamItemDef_t y) { + return !(x == y); + } + + public static explicit operator SteamItemDef_t(int value) { + return new SteamItemDef_t(value); + } + + public static explicit operator int(SteamItemDef_t that) { + return that.m_SteamItemDef; + } + + public bool Equals(SteamItemDef_t other) { + return m_SteamItemDef == other.m_SteamItemDef; + } + + public int CompareTo(SteamItemDef_t other) { + return m_SteamItemDef.CompareTo(other.m_SteamItemDef); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamInventory/SteamItemDef_t.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamInventory/SteamItemDef_t.cs.meta new file mode 100644 index 0000000..cda3877 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamInventory/SteamItemDef_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 6f99d4f5557e12745ae5073ff02c166a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamInventory/SteamItemInstanceID_t.cs b/Assets/Editor/Steamworks.NET/types/SteamInventory/SteamItemInstanceID_t.cs new file mode 100644 index 0000000..fa7dfa2 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamInventory/SteamItemInstanceID_t.cs @@ -0,0 +1,52 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct SteamItemInstanceID_t : System.IEquatable, System.IComparable { + public static readonly SteamItemInstanceID_t Invalid = new SteamItemInstanceID_t(0xFFFFFFFFFFFFFFFF); + public ulong m_SteamItemInstanceID; + + public SteamItemInstanceID_t(ulong value) { + m_SteamItemInstanceID = value; + } + + public override string ToString() { + return m_SteamItemInstanceID.ToString(); + } + + public override bool Equals(object other) { + return other is SteamItemInstanceID_t && this == (SteamItemInstanceID_t)other; + } + + public override int GetHashCode() { + return m_SteamItemInstanceID.GetHashCode(); + } + + public static bool operator ==(SteamItemInstanceID_t x, SteamItemInstanceID_t y) { + return x.m_SteamItemInstanceID == y.m_SteamItemInstanceID; + } + + public static bool operator !=(SteamItemInstanceID_t x, SteamItemInstanceID_t y) { + return !(x == y); + } + + public static explicit operator SteamItemInstanceID_t(ulong value) { + return new SteamItemInstanceID_t(value); + } + + public static explicit operator ulong(SteamItemInstanceID_t that) { + return that.m_SteamItemInstanceID; + } + + public bool Equals(SteamItemInstanceID_t other) { + return m_SteamItemInstanceID == other.m_SteamItemInstanceID; + } + + public int CompareTo(SteamItemInstanceID_t other) { + return m_SteamItemInstanceID.CompareTo(other.m_SteamItemInstanceID); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamInventory/SteamItemInstanceID_t.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamInventory/SteamItemInstanceID_t.cs.meta new file mode 100644 index 0000000..442aeaa --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamInventory/SteamItemInstanceID_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 571600bf2753f4d4080237b34824f61a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamMatchmaking.meta b/Assets/Editor/Steamworks.NET/types/SteamMatchmaking.meta new file mode 100644 index 0000000..5d51dee --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamMatchmaking.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 816cbb0d1043c7d409edbf144beff7f3 +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamMatchmaking/HServerListRequest.cs b/Assets/Editor/Steamworks.NET/types/SteamMatchmaking/HServerListRequest.cs new file mode 100644 index 0000000..1c507bb --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamMatchmaking/HServerListRequest.cs @@ -0,0 +1,48 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct HServerListRequest : System.IEquatable { + public static readonly HServerListRequest Invalid = new HServerListRequest(System.IntPtr.Zero); + public System.IntPtr m_HServerListRequest; + + public HServerListRequest(System.IntPtr value) { + m_HServerListRequest = value; + } + + public override string ToString() { + return m_HServerListRequest.ToString(); + } + + public override bool Equals(object other) { + return other is HServerListRequest && this == (HServerListRequest)other; + } + + public override int GetHashCode() { + return m_HServerListRequest.GetHashCode(); + } + + public static bool operator ==(HServerListRequest x, HServerListRequest y) { + return x.m_HServerListRequest == y.m_HServerListRequest; + } + + public static bool operator !=(HServerListRequest x, HServerListRequest y) { + return !(x == y); + } + + public static explicit operator HServerListRequest(System.IntPtr value) { + return new HServerListRequest(value); + } + + public static explicit operator System.IntPtr(HServerListRequest that) { + return that.m_HServerListRequest; + } + + public bool Equals(HServerListRequest other) { + return m_HServerListRequest == other.m_HServerListRequest; + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamMatchmaking/HServerListRequest.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamMatchmaking/HServerListRequest.cs.meta new file mode 100644 index 0000000..a3d9bcf --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamMatchmaking/HServerListRequest.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 98e250075b5a85747b6d035f33607ef6 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamMatchmaking/HServerQuery.cs b/Assets/Editor/Steamworks.NET/types/SteamMatchmaking/HServerQuery.cs new file mode 100644 index 0000000..000d4b6 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamMatchmaking/HServerQuery.cs @@ -0,0 +1,52 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct HServerQuery : System.IEquatable, System.IComparable { + public static readonly HServerQuery Invalid = new HServerQuery(-1); + public int m_HServerQuery; + + public HServerQuery(int value) { + m_HServerQuery = value; + } + + public override string ToString() { + return m_HServerQuery.ToString(); + } + + public override bool Equals(object other) { + return other is HServerQuery && this == (HServerQuery)other; + } + + public override int GetHashCode() { + return m_HServerQuery.GetHashCode(); + } + + public static bool operator ==(HServerQuery x, HServerQuery y) { + return x.m_HServerQuery == y.m_HServerQuery; + } + + public static bool operator !=(HServerQuery x, HServerQuery y) { + return !(x == y); + } + + public static explicit operator HServerQuery(int value) { + return new HServerQuery(value); + } + + public static explicit operator int(HServerQuery that) { + return that.m_HServerQuery; + } + + public bool Equals(HServerQuery other) { + return m_HServerQuery == other.m_HServerQuery; + } + + public int CompareTo(HServerQuery other) { + return m_HServerQuery.CompareTo(other.m_HServerQuery); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamMatchmaking/HServerQuery.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamMatchmaking/HServerQuery.cs.meta new file mode 100644 index 0000000..c5282f0 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamMatchmaking/HServerQuery.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 8829612b3228614468043b2d29a4ee1d +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamNetworking.meta b/Assets/Editor/Steamworks.NET/types/SteamNetworking.meta new file mode 100644 index 0000000..f253292 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamNetworking.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 06d4f1c070b521243a47ffa2157a227d +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamNetworking/SNetListenSocket_t.cs b/Assets/Editor/Steamworks.NET/types/SteamNetworking/SNetListenSocket_t.cs new file mode 100644 index 0000000..c671873 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamNetworking/SNetListenSocket_t.cs @@ -0,0 +1,51 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct SNetListenSocket_t : System.IEquatable, System.IComparable { + public uint m_SNetListenSocket; + + public SNetListenSocket_t(uint value) { + m_SNetListenSocket = value; + } + + public override string ToString() { + return m_SNetListenSocket.ToString(); + } + + public override bool Equals(object other) { + return other is SNetListenSocket_t && this == (SNetListenSocket_t)other; + } + + public override int GetHashCode() { + return m_SNetListenSocket.GetHashCode(); + } + + public static bool operator ==(SNetListenSocket_t x, SNetListenSocket_t y) { + return x.m_SNetListenSocket == y.m_SNetListenSocket; + } + + public static bool operator !=(SNetListenSocket_t x, SNetListenSocket_t y) { + return !(x == y); + } + + public static explicit operator SNetListenSocket_t(uint value) { + return new SNetListenSocket_t(value); + } + + public static explicit operator uint(SNetListenSocket_t that) { + return that.m_SNetListenSocket; + } + + public bool Equals(SNetListenSocket_t other) { + return m_SNetListenSocket == other.m_SNetListenSocket; + } + + public int CompareTo(SNetListenSocket_t other) { + return m_SNetListenSocket.CompareTo(other.m_SNetListenSocket); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamNetworking/SNetListenSocket_t.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamNetworking/SNetListenSocket_t.cs.meta new file mode 100644 index 0000000..400d5ce --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamNetworking/SNetListenSocket_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: f0606b21fdf0b06429dfd9c0398f1f36 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamNetworking/SNetSocket_t.cs b/Assets/Editor/Steamworks.NET/types/SteamNetworking/SNetSocket_t.cs new file mode 100644 index 0000000..983f4a1 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamNetworking/SNetSocket_t.cs @@ -0,0 +1,51 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct SNetSocket_t : System.IEquatable, System.IComparable { + public uint m_SNetSocket; + + public SNetSocket_t(uint value) { + m_SNetSocket = value; + } + + public override string ToString() { + return m_SNetSocket.ToString(); + } + + public override bool Equals(object other) { + return other is SNetSocket_t && this == (SNetSocket_t)other; + } + + public override int GetHashCode() { + return m_SNetSocket.GetHashCode(); + } + + public static bool operator ==(SNetSocket_t x, SNetSocket_t y) { + return x.m_SNetSocket == y.m_SNetSocket; + } + + public static bool operator !=(SNetSocket_t x, SNetSocket_t y) { + return !(x == y); + } + + public static explicit operator SNetSocket_t(uint value) { + return new SNetSocket_t(value); + } + + public static explicit operator uint(SNetSocket_t that) { + return that.m_SNetSocket; + } + + public bool Equals(SNetSocket_t other) { + return m_SNetSocket == other.m_SNetSocket; + } + + public int CompareTo(SNetSocket_t other) { + return m_SNetSocket.CompareTo(other.m_SNetSocket); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamNetworking/SNetSocket_t.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamNetworking/SNetSocket_t.cs.meta new file mode 100644 index 0000000..19aa953 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamNetworking/SNetSocket_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: aa25fe75de3b6954aa77a7bbfe080ab8 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage.meta b/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage.meta new file mode 100644 index 0000000..d403083 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1fadecc55a4263a4cb2147f777462e08 +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/PublishedFileId_t.cs b/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/PublishedFileId_t.cs new file mode 100644 index 0000000..e8efa69 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/PublishedFileId_t.cs @@ -0,0 +1,52 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct PublishedFileId_t : System.IEquatable, System.IComparable { + public static readonly PublishedFileId_t Invalid = new PublishedFileId_t(0); + public ulong m_PublishedFileId; + + public PublishedFileId_t(ulong value) { + m_PublishedFileId = value; + } + + public override string ToString() { + return m_PublishedFileId.ToString(); + } + + public override bool Equals(object other) { + return other is PublishedFileId_t && this == (PublishedFileId_t)other; + } + + public override int GetHashCode() { + return m_PublishedFileId.GetHashCode(); + } + + public static bool operator ==(PublishedFileId_t x, PublishedFileId_t y) { + return x.m_PublishedFileId == y.m_PublishedFileId; + } + + public static bool operator !=(PublishedFileId_t x, PublishedFileId_t y) { + return !(x == y); + } + + public static explicit operator PublishedFileId_t(ulong value) { + return new PublishedFileId_t(value); + } + + public static explicit operator ulong(PublishedFileId_t that) { + return that.m_PublishedFileId; + } + + public bool Equals(PublishedFileId_t other) { + return m_PublishedFileId == other.m_PublishedFileId; + } + + public int CompareTo(PublishedFileId_t other) { + return m_PublishedFileId.CompareTo(other.m_PublishedFileId); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/PublishedFileId_t.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/PublishedFileId_t.cs.meta new file mode 100644 index 0000000..78d7736 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/PublishedFileId_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 0778bb1050c34c5499664d3a3bc3a1d9 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/PublishedFileUpdateHandle_t.cs b/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/PublishedFileUpdateHandle_t.cs new file mode 100644 index 0000000..02ed1de --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/PublishedFileUpdateHandle_t.cs @@ -0,0 +1,52 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct PublishedFileUpdateHandle_t : System.IEquatable, System.IComparable { + public static readonly PublishedFileUpdateHandle_t Invalid = new PublishedFileUpdateHandle_t(0xffffffffffffffff); + public ulong m_PublishedFileUpdateHandle; + + public PublishedFileUpdateHandle_t(ulong value) { + m_PublishedFileUpdateHandle = value; + } + + public override string ToString() { + return m_PublishedFileUpdateHandle.ToString(); + } + + public override bool Equals(object other) { + return other is PublishedFileUpdateHandle_t && this == (PublishedFileUpdateHandle_t)other; + } + + public override int GetHashCode() { + return m_PublishedFileUpdateHandle.GetHashCode(); + } + + public static bool operator ==(PublishedFileUpdateHandle_t x, PublishedFileUpdateHandle_t y) { + return x.m_PublishedFileUpdateHandle == y.m_PublishedFileUpdateHandle; + } + + public static bool operator !=(PublishedFileUpdateHandle_t x, PublishedFileUpdateHandle_t y) { + return !(x == y); + } + + public static explicit operator PublishedFileUpdateHandle_t(ulong value) { + return new PublishedFileUpdateHandle_t(value); + } + + public static explicit operator ulong(PublishedFileUpdateHandle_t that) { + return that.m_PublishedFileUpdateHandle; + } + + public bool Equals(PublishedFileUpdateHandle_t other) { + return m_PublishedFileUpdateHandle == other.m_PublishedFileUpdateHandle; + } + + public int CompareTo(PublishedFileUpdateHandle_t other) { + return m_PublishedFileUpdateHandle.CompareTo(other.m_PublishedFileUpdateHandle); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/PublishedFileUpdateHandle_t.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/PublishedFileUpdateHandle_t.cs.meta new file mode 100644 index 0000000..6a8878b --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/PublishedFileUpdateHandle_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 1c8610a536f27df40aeb40848ea46dbe +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/UGCFileWriteStreamHandle_t.cs b/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/UGCFileWriteStreamHandle_t.cs new file mode 100644 index 0000000..d575f3f --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/UGCFileWriteStreamHandle_t.cs @@ -0,0 +1,52 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct UGCFileWriteStreamHandle_t : System.IEquatable, System.IComparable { + public static readonly UGCFileWriteStreamHandle_t Invalid = new UGCFileWriteStreamHandle_t(0xffffffffffffffff); + public ulong m_UGCFileWriteStreamHandle; + + public UGCFileWriteStreamHandle_t(ulong value) { + m_UGCFileWriteStreamHandle = value; + } + + public override string ToString() { + return m_UGCFileWriteStreamHandle.ToString(); + } + + public override bool Equals(object other) { + return other is UGCFileWriteStreamHandle_t && this == (UGCFileWriteStreamHandle_t)other; + } + + public override int GetHashCode() { + return m_UGCFileWriteStreamHandle.GetHashCode(); + } + + public static bool operator ==(UGCFileWriteStreamHandle_t x, UGCFileWriteStreamHandle_t y) { + return x.m_UGCFileWriteStreamHandle == y.m_UGCFileWriteStreamHandle; + } + + public static bool operator !=(UGCFileWriteStreamHandle_t x, UGCFileWriteStreamHandle_t y) { + return !(x == y); + } + + public static explicit operator UGCFileWriteStreamHandle_t(ulong value) { + return new UGCFileWriteStreamHandle_t(value); + } + + public static explicit operator ulong(UGCFileWriteStreamHandle_t that) { + return that.m_UGCFileWriteStreamHandle; + } + + public bool Equals(UGCFileWriteStreamHandle_t other) { + return m_UGCFileWriteStreamHandle == other.m_UGCFileWriteStreamHandle; + } + + public int CompareTo(UGCFileWriteStreamHandle_t other) { + return m_UGCFileWriteStreamHandle.CompareTo(other.m_UGCFileWriteStreamHandle); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/UGCFileWriteStreamHandle_t.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/UGCFileWriteStreamHandle_t.cs.meta new file mode 100644 index 0000000..731ad19 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/UGCFileWriteStreamHandle_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 9de8902ac5c5e9243b150e58b5d8e397 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/UGCHandle_t.cs b/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/UGCHandle_t.cs new file mode 100644 index 0000000..85902a5 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/UGCHandle_t.cs @@ -0,0 +1,52 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct UGCHandle_t : System.IEquatable, System.IComparable { + public static readonly UGCHandle_t Invalid = new UGCHandle_t(0xffffffffffffffff); + public ulong m_UGCHandle; + + public UGCHandle_t(ulong value) { + m_UGCHandle = value; + } + + public override string ToString() { + return m_UGCHandle.ToString(); + } + + public override bool Equals(object other) { + return other is UGCHandle_t && this == (UGCHandle_t)other; + } + + public override int GetHashCode() { + return m_UGCHandle.GetHashCode(); + } + + public static bool operator ==(UGCHandle_t x, UGCHandle_t y) { + return x.m_UGCHandle == y.m_UGCHandle; + } + + public static bool operator !=(UGCHandle_t x, UGCHandle_t y) { + return !(x == y); + } + + public static explicit operator UGCHandle_t(ulong value) { + return new UGCHandle_t(value); + } + + public static explicit operator ulong(UGCHandle_t that) { + return that.m_UGCHandle; + } + + public bool Equals(UGCHandle_t other) { + return m_UGCHandle == other.m_UGCHandle; + } + + public int CompareTo(UGCHandle_t other) { + return m_UGCHandle.CompareTo(other.m_UGCHandle); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/UGCHandle_t.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/UGCHandle_t.cs.meta new file mode 100644 index 0000000..adcbc15 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamRemoteStorage/UGCHandle_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 76b66d73b31662b4d92989591168c4d6 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamScreenshots.meta b/Assets/Editor/Steamworks.NET/types/SteamScreenshots.meta new file mode 100644 index 0000000..4240d79 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamScreenshots.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0b68cdbebca6391499367acb0b3249d6 +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamScreenshots/ScreenshotHandle.cs b/Assets/Editor/Steamworks.NET/types/SteamScreenshots/ScreenshotHandle.cs new file mode 100644 index 0000000..acb07a9 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamScreenshots/ScreenshotHandle.cs @@ -0,0 +1,52 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct ScreenshotHandle : System.IEquatable, System.IComparable { + public static readonly ScreenshotHandle Invalid = new ScreenshotHandle(0); + public uint m_ScreenshotHandle; + + public ScreenshotHandle(uint value) { + m_ScreenshotHandle = value; + } + + public override string ToString() { + return m_ScreenshotHandle.ToString(); + } + + public override bool Equals(object other) { + return other is ScreenshotHandle && this == (ScreenshotHandle)other; + } + + public override int GetHashCode() { + return m_ScreenshotHandle.GetHashCode(); + } + + public static bool operator ==(ScreenshotHandle x, ScreenshotHandle y) { + return x.m_ScreenshotHandle == y.m_ScreenshotHandle; + } + + public static bool operator !=(ScreenshotHandle x, ScreenshotHandle y) { + return !(x == y); + } + + public static explicit operator ScreenshotHandle(uint value) { + return new ScreenshotHandle(value); + } + + public static explicit operator uint(ScreenshotHandle that) { + return that.m_ScreenshotHandle; + } + + public bool Equals(ScreenshotHandle other) { + return m_ScreenshotHandle == other.m_ScreenshotHandle; + } + + public int CompareTo(ScreenshotHandle other) { + return m_ScreenshotHandle.CompareTo(other.m_ScreenshotHandle); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamScreenshots/ScreenshotHandle.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamScreenshots/ScreenshotHandle.cs.meta new file mode 100644 index 0000000..48a4dd4 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamScreenshots/ScreenshotHandle.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 1e963a0db85f8364fb9c5136b40e1693 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamTypes.meta b/Assets/Editor/Steamworks.NET/types/SteamTypes.meta new file mode 100644 index 0000000..59af246 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamTypes.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ed018236b077f714bbc2296ff055ce8e +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamTypes/AccountID_t.cs b/Assets/Editor/Steamworks.NET/types/SteamTypes/AccountID_t.cs new file mode 100644 index 0000000..729e2bb --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamTypes/AccountID_t.cs @@ -0,0 +1,51 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct AccountID_t : System.IEquatable, System.IComparable { + public uint m_AccountID; + + public AccountID_t(uint value) { + m_AccountID = value; + } + + public override string ToString() { + return m_AccountID.ToString(); + } + + public override bool Equals(object other) { + return other is AccountID_t && this == (AccountID_t)other; + } + + public override int GetHashCode() { + return m_AccountID.GetHashCode(); + } + + public static bool operator ==(AccountID_t x, AccountID_t y) { + return x.m_AccountID == y.m_AccountID; + } + + public static bool operator !=(AccountID_t x, AccountID_t y) { + return !(x == y); + } + + public static explicit operator AccountID_t(uint value) { + return new AccountID_t(value); + } + + public static explicit operator uint(AccountID_t that) { + return that.m_AccountID; + } + + public bool Equals(AccountID_t other) { + return m_AccountID == other.m_AccountID; + } + + public int CompareTo(AccountID_t other) { + return m_AccountID.CompareTo(other.m_AccountID); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamTypes/AccountID_t.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamTypes/AccountID_t.cs.meta new file mode 100644 index 0000000..ac9a899 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamTypes/AccountID_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 4b164be70eff468448af827f31060fbf +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamTypes/AppId_t.cs b/Assets/Editor/Steamworks.NET/types/SteamTypes/AppId_t.cs new file mode 100644 index 0000000..14df33b --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamTypes/AppId_t.cs @@ -0,0 +1,52 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct AppId_t : System.IEquatable, System.IComparable { + public static readonly AppId_t Invalid = new AppId_t(0x0); + public uint m_AppId; + + public AppId_t(uint value) { + m_AppId = value; + } + + public override string ToString() { + return m_AppId.ToString(); + } + + public override bool Equals(object other) { + return other is AppId_t && this == (AppId_t)other; + } + + public override int GetHashCode() { + return m_AppId.GetHashCode(); + } + + public static bool operator ==(AppId_t x, AppId_t y) { + return x.m_AppId == y.m_AppId; + } + + public static bool operator !=(AppId_t x, AppId_t y) { + return !(x == y); + } + + public static explicit operator AppId_t(uint value) { + return new AppId_t(value); + } + + public static explicit operator uint(AppId_t that) { + return that.m_AppId; + } + + public bool Equals(AppId_t other) { + return m_AppId == other.m_AppId; + } + + public int CompareTo(AppId_t other) { + return m_AppId.CompareTo(other.m_AppId); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamTypes/AppId_t.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamTypes/AppId_t.cs.meta new file mode 100644 index 0000000..2be77b8 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamTypes/AppId_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 9ec36edf9bcadae4795a546ce6adba87 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamTypes/DepotId_t.cs b/Assets/Editor/Steamworks.NET/types/SteamTypes/DepotId_t.cs new file mode 100644 index 0000000..6e22cee --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamTypes/DepotId_t.cs @@ -0,0 +1,52 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct DepotId_t : System.IEquatable, System.IComparable { + public static readonly DepotId_t Invalid = new DepotId_t(0x0); + public uint m_DepotId; + + public DepotId_t(uint value) { + m_DepotId = value; + } + + public override string ToString() { + return m_DepotId.ToString(); + } + + public override bool Equals(object other) { + return other is DepotId_t && this == (DepotId_t)other; + } + + public override int GetHashCode() { + return m_DepotId.GetHashCode(); + } + + public static bool operator ==(DepotId_t x, DepotId_t y) { + return x.m_DepotId == y.m_DepotId; + } + + public static bool operator !=(DepotId_t x, DepotId_t y) { + return !(x == y); + } + + public static explicit operator DepotId_t(uint value) { + return new DepotId_t(value); + } + + public static explicit operator uint(DepotId_t that) { + return that.m_DepotId; + } + + public bool Equals(DepotId_t other) { + return m_DepotId == other.m_DepotId; + } + + public int CompareTo(DepotId_t other) { + return m_DepotId.CompareTo(other.m_DepotId); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamTypes/DepotId_t.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamTypes/DepotId_t.cs.meta new file mode 100644 index 0000000..dfad74b --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamTypes/DepotId_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 8ad39d6e31d8fea45b52c216fb922f78 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamTypes/ManifestId_t.cs b/Assets/Editor/Steamworks.NET/types/SteamTypes/ManifestId_t.cs new file mode 100644 index 0000000..d94ccc1 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamTypes/ManifestId_t.cs @@ -0,0 +1,52 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct ManifestId_t : System.IEquatable, System.IComparable { + public static readonly ManifestId_t Invalid = new ManifestId_t(0x0); + public ulong m_ManifestId; + + public ManifestId_t(ulong value) { + m_ManifestId = value; + } + + public override string ToString() { + return m_ManifestId.ToString(); + } + + public override bool Equals(object other) { + return other is ManifestId_t && this == (ManifestId_t)other; + } + + public override int GetHashCode() { + return m_ManifestId.GetHashCode(); + } + + public static bool operator ==(ManifestId_t x, ManifestId_t y) { + return x.m_ManifestId == y.m_ManifestId; + } + + public static bool operator !=(ManifestId_t x, ManifestId_t y) { + return !(x == y); + } + + public static explicit operator ManifestId_t(ulong value) { + return new ManifestId_t(value); + } + + public static explicit operator ulong(ManifestId_t that) { + return that.m_ManifestId; + } + + public bool Equals(ManifestId_t other) { + return m_ManifestId == other.m_ManifestId; + } + + public int CompareTo(ManifestId_t other) { + return m_ManifestId.CompareTo(other.m_ManifestId); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamTypes/ManifestId_t.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamTypes/ManifestId_t.cs.meta new file mode 100644 index 0000000..f0fbbd8 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamTypes/ManifestId_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 5531adad6e9dc7e4b99c1f0987524b3e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamTypes/SteamAPICall_t.cs b/Assets/Editor/Steamworks.NET/types/SteamTypes/SteamAPICall_t.cs new file mode 100644 index 0000000..75c5c70 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamTypes/SteamAPICall_t.cs @@ -0,0 +1,52 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct SteamAPICall_t : System.IEquatable, System.IComparable { + public static readonly SteamAPICall_t Invalid = new SteamAPICall_t(0x0); + public ulong m_SteamAPICall; + + public SteamAPICall_t(ulong value) { + m_SteamAPICall = value; + } + + public override string ToString() { + return m_SteamAPICall.ToString(); + } + + public override bool Equals(object other) { + return other is SteamAPICall_t && this == (SteamAPICall_t)other; + } + + public override int GetHashCode() { + return m_SteamAPICall.GetHashCode(); + } + + public static bool operator ==(SteamAPICall_t x, SteamAPICall_t y) { + return x.m_SteamAPICall == y.m_SteamAPICall; + } + + public static bool operator !=(SteamAPICall_t x, SteamAPICall_t y) { + return !(x == y); + } + + public static explicit operator SteamAPICall_t(ulong value) { + return new SteamAPICall_t(value); + } + + public static explicit operator ulong(SteamAPICall_t that) { + return that.m_SteamAPICall; + } + + public bool Equals(SteamAPICall_t other) { + return m_SteamAPICall == other.m_SteamAPICall; + } + + public int CompareTo(SteamAPICall_t other) { + return m_SteamAPICall.CompareTo(other.m_SteamAPICall); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamTypes/SteamAPICall_t.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamTypes/SteamAPICall_t.cs.meta new file mode 100644 index 0000000..f879516 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamTypes/SteamAPICall_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: cd4f20a8f86503e4cb5f196c02879916 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamUGC.meta b/Assets/Editor/Steamworks.NET/types/SteamUGC.meta new file mode 100644 index 0000000..940e6e0 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamUGC.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5ec2a53c2e660ca48af0b22728d7b005 +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamUGC/UGCQueryHandle_t.cs b/Assets/Editor/Steamworks.NET/types/SteamUGC/UGCQueryHandle_t.cs new file mode 100644 index 0000000..8a490c8 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamUGC/UGCQueryHandle_t.cs @@ -0,0 +1,52 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct UGCQueryHandle_t : System.IEquatable, System.IComparable { + public static readonly UGCQueryHandle_t Invalid = new UGCQueryHandle_t(0xffffffffffffffff); + public ulong m_UGCQueryHandle; + + public UGCQueryHandle_t(ulong value) { + m_UGCQueryHandle = value; + } + + public override string ToString() { + return m_UGCQueryHandle.ToString(); + } + + public override bool Equals(object other) { + return other is UGCQueryHandle_t && this == (UGCQueryHandle_t)other; + } + + public override int GetHashCode() { + return m_UGCQueryHandle.GetHashCode(); + } + + public static bool operator ==(UGCQueryHandle_t x, UGCQueryHandle_t y) { + return x.m_UGCQueryHandle == y.m_UGCQueryHandle; + } + + public static bool operator !=(UGCQueryHandle_t x, UGCQueryHandle_t y) { + return !(x == y); + } + + public static explicit operator UGCQueryHandle_t(ulong value) { + return new UGCQueryHandle_t(value); + } + + public static explicit operator ulong(UGCQueryHandle_t that) { + return that.m_UGCQueryHandle; + } + + public bool Equals(UGCQueryHandle_t other) { + return m_UGCQueryHandle == other.m_UGCQueryHandle; + } + + public int CompareTo(UGCQueryHandle_t other) { + return m_UGCQueryHandle.CompareTo(other.m_UGCQueryHandle); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamUGC/UGCQueryHandle_t.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamUGC/UGCQueryHandle_t.cs.meta new file mode 100644 index 0000000..ea1ea12 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamUGC/UGCQueryHandle_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: ee79f62a129c57047bb2cced70d177a9 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamUGC/UGCUpdateHandle_t.cs b/Assets/Editor/Steamworks.NET/types/SteamUGC/UGCUpdateHandle_t.cs new file mode 100644 index 0000000..9049eb6 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamUGC/UGCUpdateHandle_t.cs @@ -0,0 +1,52 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct UGCUpdateHandle_t : System.IEquatable, System.IComparable { + public static readonly UGCUpdateHandle_t Invalid = new UGCUpdateHandle_t(0xffffffffffffffff); + public ulong m_UGCUpdateHandle; + + public UGCUpdateHandle_t(ulong value) { + m_UGCUpdateHandle = value; + } + + public override string ToString() { + return m_UGCUpdateHandle.ToString(); + } + + public override bool Equals(object other) { + return other is UGCUpdateHandle_t && this == (UGCUpdateHandle_t)other; + } + + public override int GetHashCode() { + return m_UGCUpdateHandle.GetHashCode(); + } + + public static bool operator ==(UGCUpdateHandle_t x, UGCUpdateHandle_t y) { + return x.m_UGCUpdateHandle == y.m_UGCUpdateHandle; + } + + public static bool operator !=(UGCUpdateHandle_t x, UGCUpdateHandle_t y) { + return !(x == y); + } + + public static explicit operator UGCUpdateHandle_t(ulong value) { + return new UGCUpdateHandle_t(value); + } + + public static explicit operator ulong(UGCUpdateHandle_t that) { + return that.m_UGCUpdateHandle; + } + + public bool Equals(UGCUpdateHandle_t other) { + return m_UGCUpdateHandle == other.m_UGCUpdateHandle; + } + + public int CompareTo(UGCUpdateHandle_t other) { + return m_UGCUpdateHandle.CompareTo(other.m_UGCUpdateHandle); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamUGC/UGCUpdateHandle_t.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamUGC/UGCUpdateHandle_t.cs.meta new file mode 100644 index 0000000..4ede43e --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamUGC/UGCUpdateHandle_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 8b2b808e859c4634b9b42ab1f549af71 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamUnifiedMessages.meta b/Assets/Editor/Steamworks.NET/types/SteamUnifiedMessages.meta new file mode 100644 index 0000000..8a06471 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamUnifiedMessages.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 94bca27441a472045bf4ad7be6fb0724 +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamUnifiedMessages/ClientUnifiedMessageHandle.cs b/Assets/Editor/Steamworks.NET/types/SteamUnifiedMessages/ClientUnifiedMessageHandle.cs new file mode 100644 index 0000000..11b465a --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamUnifiedMessages/ClientUnifiedMessageHandle.cs @@ -0,0 +1,52 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct ClientUnifiedMessageHandle : System.IEquatable, System.IComparable { + public static readonly ClientUnifiedMessageHandle Invalid = new ClientUnifiedMessageHandle(0); + public ulong m_ClientUnifiedMessageHandle; + + public ClientUnifiedMessageHandle(ulong value) { + m_ClientUnifiedMessageHandle = value; + } + + public override string ToString() { + return m_ClientUnifiedMessageHandle.ToString(); + } + + public override bool Equals(object other) { + return other is ClientUnifiedMessageHandle && this == (ClientUnifiedMessageHandle)other; + } + + public override int GetHashCode() { + return m_ClientUnifiedMessageHandle.GetHashCode(); + } + + public static bool operator ==(ClientUnifiedMessageHandle x, ClientUnifiedMessageHandle y) { + return x.m_ClientUnifiedMessageHandle == y.m_ClientUnifiedMessageHandle; + } + + public static bool operator !=(ClientUnifiedMessageHandle x, ClientUnifiedMessageHandle y) { + return !(x == y); + } + + public static explicit operator ClientUnifiedMessageHandle(ulong value) { + return new ClientUnifiedMessageHandle(value); + } + + public static explicit operator ulong(ClientUnifiedMessageHandle that) { + return that.m_ClientUnifiedMessageHandle; + } + + public bool Equals(ClientUnifiedMessageHandle other) { + return m_ClientUnifiedMessageHandle == other.m_ClientUnifiedMessageHandle; + } + + public int CompareTo(ClientUnifiedMessageHandle other) { + return m_ClientUnifiedMessageHandle.CompareTo(other.m_ClientUnifiedMessageHandle); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamUnifiedMessages/ClientUnifiedMessageHandle.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamUnifiedMessages/ClientUnifiedMessageHandle.cs.meta new file mode 100644 index 0000000..a933b01 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamUnifiedMessages/ClientUnifiedMessageHandle.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 4da463d1297c3f843b0856e262bf4f74 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamUserStats.meta b/Assets/Editor/Steamworks.NET/types/SteamUserStats.meta new file mode 100644 index 0000000..f1521c4 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamUserStats.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8e05b95eec9f1fd48be17ad8ecaf8179 +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamUserStats/SteamLeaderboardEntries_t.cs b/Assets/Editor/Steamworks.NET/types/SteamUserStats/SteamLeaderboardEntries_t.cs new file mode 100644 index 0000000..6ac58dd --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamUserStats/SteamLeaderboardEntries_t.cs @@ -0,0 +1,51 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct SteamLeaderboardEntries_t : System.IEquatable, System.IComparable { + public ulong m_SteamLeaderboardEntries; + + public SteamLeaderboardEntries_t(ulong value) { + m_SteamLeaderboardEntries = value; + } + + public override string ToString() { + return m_SteamLeaderboardEntries.ToString(); + } + + public override bool Equals(object other) { + return other is SteamLeaderboardEntries_t && this == (SteamLeaderboardEntries_t)other; + } + + public override int GetHashCode() { + return m_SteamLeaderboardEntries.GetHashCode(); + } + + public static bool operator ==(SteamLeaderboardEntries_t x, SteamLeaderboardEntries_t y) { + return x.m_SteamLeaderboardEntries == y.m_SteamLeaderboardEntries; + } + + public static bool operator !=(SteamLeaderboardEntries_t x, SteamLeaderboardEntries_t y) { + return !(x == y); + } + + public static explicit operator SteamLeaderboardEntries_t(ulong value) { + return new SteamLeaderboardEntries_t(value); + } + + public static explicit operator ulong(SteamLeaderboardEntries_t that) { + return that.m_SteamLeaderboardEntries; + } + + public bool Equals(SteamLeaderboardEntries_t other) { + return m_SteamLeaderboardEntries == other.m_SteamLeaderboardEntries; + } + + public int CompareTo(SteamLeaderboardEntries_t other) { + return m_SteamLeaderboardEntries.CompareTo(other.m_SteamLeaderboardEntries); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamUserStats/SteamLeaderboardEntries_t.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamUserStats/SteamLeaderboardEntries_t.cs.meta new file mode 100644 index 0000000..5941074 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamUserStats/SteamLeaderboardEntries_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: f46d9e61fc8b94e40a66438300c90b55 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Steamworks.NET/types/SteamUserStats/SteamLeaderboard_t.cs b/Assets/Editor/Steamworks.NET/types/SteamUserStats/SteamLeaderboard_t.cs new file mode 100644 index 0000000..57f71a7 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamUserStats/SteamLeaderboard_t.cs @@ -0,0 +1,51 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2015 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// Changes to this file will be reverted when you update Steamworks.NET + +namespace Steamworks { + public struct SteamLeaderboard_t : System.IEquatable, System.IComparable { + public ulong m_SteamLeaderboard; + + public SteamLeaderboard_t(ulong value) { + m_SteamLeaderboard = value; + } + + public override string ToString() { + return m_SteamLeaderboard.ToString(); + } + + public override bool Equals(object other) { + return other is SteamLeaderboard_t && this == (SteamLeaderboard_t)other; + } + + public override int GetHashCode() { + return m_SteamLeaderboard.GetHashCode(); + } + + public static bool operator ==(SteamLeaderboard_t x, SteamLeaderboard_t y) { + return x.m_SteamLeaderboard == y.m_SteamLeaderboard; + } + + public static bool operator !=(SteamLeaderboard_t x, SteamLeaderboard_t y) { + return !(x == y); + } + + public static explicit operator SteamLeaderboard_t(ulong value) { + return new SteamLeaderboard_t(value); + } + + public static explicit operator ulong(SteamLeaderboard_t that) { + return that.m_SteamLeaderboard; + } + + public bool Equals(SteamLeaderboard_t other) { + return m_SteamLeaderboard == other.m_SteamLeaderboard; + } + + public int CompareTo(SteamLeaderboard_t other) { + return m_SteamLeaderboard.CompareTo(other.m_SteamLeaderboard); + } + } +} diff --git a/Assets/Editor/Steamworks.NET/types/SteamUserStats/SteamLeaderboard_t.cs.meta b/Assets/Editor/Steamworks.NET/types/SteamUserStats/SteamLeaderboard_t.cs.meta new file mode 100644 index 0000000..45cc638 --- /dev/null +++ b/Assets/Editor/Steamworks.NET/types/SteamUserStats/SteamLeaderboard_t.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 3972a90ddb5559843a701a4f9f6f75ec +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples.meta b/Assets/Examples.meta new file mode 100644 index 0000000..022d0e5 --- /dev/null +++ b/Assets/Examples.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 259763ea70b72d142a982ae28b3f6d38 +folderAsset: yes +timeCreated: 1465939696 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/1.1 Module.meta b/Assets/Examples/1.1 Module.meta new file mode 100644 index 0000000..da070c6 --- /dev/null +++ b/Assets/Examples/1.1 Module.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 353b7d7fdee7d8f4f9dd189361531a46 +folderAsset: yes +timeCreated: 1466168030 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/1.1 Module/ExampleModule.cs b/Assets/Examples/1.1 Module/ExampleModule.cs new file mode 100644 index 0000000..e397a4d --- /dev/null +++ b/Assets/Examples/1.1 Module/ExampleModule.cs @@ -0,0 +1,41 @@ +using UnityEngine; + +public class ExampleModule : MonoBehaviour +{ + public KMSelectable[] buttons; + + int correctIndex; + + void Start() + { + Init(); + } + + void Init() + { + correctIndex = Random.Range(0, 4); + + for(int i = 0; i < buttons.Length; i++) + { + string label = i == correctIndex ? "O" : "X"; + + TextMesh buttonText = buttons[i].GetComponentInChildren(); + buttonText.text = label; + int j = i; + buttons[i].OnInteract += delegate () { OnPress(j == correctIndex); return false; }; + } + } + + void OnPress(bool correctButton) + { + Debug.Log("Pressed " + correctButton + " button"); + if(correctButton) + { + GetComponent().HandlePass(); + } + else + { + GetComponent().HandleStrike(); + } + } +} diff --git a/Assets/Examples/1.1 Module/ExampleModule.cs.meta b/Assets/Examples/1.1 Module/ExampleModule.cs.meta new file mode 100644 index 0000000..a27853b --- /dev/null +++ b/Assets/Examples/1.1 Module/ExampleModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 955dc0c1ac588b34e979be8884e43be9 +timeCreated: 1464538449 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/1.1 Module/ExampleModule.prefab b/Assets/Examples/1.1 Module/ExampleModule.prefab new file mode 100644 index 0000000..c0ff07f --- /dev/null +++ b/Assets/Examples/1.1 Module/ExampleModule.prefab @@ -0,0 +1,2204 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100002 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400002} + - 114: {fileID: 11417016} + - 114: {fileID: 11434540} + - 114: {fileID: 11482148} + - 114: {fileID: 11424162} + m_Layer: 0 + m_Name: ExampleModule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!1 &100004 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400004} + - 33: {fileID: 3300002} + - 114: {fileID: 11411180} + m_Layer: 0 + m_Name: Button4Highlight + m_TagString: Interactive + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100006 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400006} + - 33: {fileID: 3300004} + - 114: {fileID: 11477336} + m_Layer: 0 + m_Name: Button3Highlight + m_TagString: Interactive + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100008 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400008} + - 114: {fileID: 11421786} + m_Layer: 0 + m_Name: Button3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100018 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400018} + - 114: {fileID: 11407772} + m_Layer: 0 + m_Name: Button2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100020 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400042} + - 33: {fileID: 3300020} + - 23: {fileID: 2300018} + m_Layer: 0 + m_Name: LED_Wrong + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100022 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400022} + - 33: {fileID: 3300012} + - 114: {fileID: 11460346} + m_Layer: 0 + m_Name: Button2Highlight + m_TagString: Interactive + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100024 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400024} + - 114: {fileID: 11478104} + m_Layer: 0 + m_Name: Button4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100030 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400030} + - 33: {fileID: 3300014} + - 114: {fileID: 11425582} + m_Layer: 0 + m_Name: Button1Highlight + m_TagString: Interactive + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100032 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400032} + - 114: {fileID: 11448482} + m_Layer: 0 + m_Name: Button1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100042 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400000} + - 114: {fileID: 11419252} + m_Layer: 0 + m_Name: StatusLightParent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100044 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400044} + - 33: {fileID: 3300022} + - 23: {fileID: 2300020} + m_Layer: 0 + m_Name: key + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100046 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400046} + - 33: {fileID: 3300024} + - 23: {fileID: 2300022} + m_Layer: 0 + m_Name: LED_Wrong + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100048 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400048} + - 33: {fileID: 3300026} + - 23: {fileID: 2300024} + m_Layer: 0 + m_Name: key + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100050 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400050} + - 33: {fileID: 3300028} + - 23: {fileID: 2300026} + m_Layer: 0 + m_Name: LED_Wrong + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100052 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400052} + - 33: {fileID: 3300030} + - 23: {fileID: 2300028} + m_Layer: 0 + m_Name: key + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100054 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400054} + - 33: {fileID: 3300032} + - 23: {fileID: 2300030} + m_Layer: 0 + m_Name: LED_Wrong + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100056 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400056} + - 33: {fileID: 3300034} + - 23: {fileID: 2300032} + m_Layer: 0 + m_Name: key + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100060 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400060} + m_Layer: 0 + m_Name: Key_TR + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100062 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400062} + m_Layer: 0 + m_Name: Key_TL + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100064 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400064} + m_Layer: 0 + m_Name: Key_BR + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100066 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400066} + m_Layer: 0 + m_Name: Key_BL + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100068 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400068} + - 33: {fileID: 3300036} + - 23: {fileID: 2300034} + m_Layer: 0 + m_Name: LED_Correct + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100070 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400070} + - 33: {fileID: 3300038} + - 23: {fileID: 2300036} + m_Layer: 0 + m_Name: LED_Correct + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100072 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400072} + - 33: {fileID: 3300040} + - 23: {fileID: 2300038} + m_Layer: 0 + m_Name: LED_Correct + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100074 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400074} + - 33: {fileID: 3300042} + - 23: {fileID: 2300040} + m_Layer: 0 + m_Name: LED_Correct + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100076 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400076} + - 33: {fileID: 3300044} + - 23: {fileID: 2300042} + m_Layer: 0 + m_Name: LED_Off + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100078 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400078} + - 33: {fileID: 3300046} + - 23: {fileID: 2300044} + m_Layer: 0 + m_Name: LED_Off + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100080 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400080} + - 33: {fileID: 3300048} + - 23: {fileID: 2300046} + m_Layer: 0 + m_Name: LED_Off + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100082 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400082} + - 33: {fileID: 3300050} + - 23: {fileID: 2300048} + m_Layer: 0 + m_Name: LED_Off + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &121694 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 421694} + - 33: {fileID: 3321694} + - 114: {fileID: 11471256} + m_Layer: 0 + m_Name: Component_Highlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &139942 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 419842} + - 23: {fileID: 2336166} + - 102: {fileID: 10289726} + m_Layer: 0 + m_Name: ButtonText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &147448 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 405968} + - 23: {fileID: 2395582} + - 102: {fileID: 10222334} + m_Layer: 0 + m_Name: ButtonText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &163710 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 487170} + - 23: {fileID: 2329570} + - 102: {fileID: 10274792} + m_Layer: 0 + m_Name: ButtonText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &179160 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400862} + - 23: {fileID: 2347072} + - 102: {fileID: 10287516} + m_Layer: 0 + m_Name: ButtonText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &194656 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 494656} + - 33: {fileID: 3394656} + - 23: {fileID: 2394656} + m_Layer: 0 + m_Name: RecessedInner + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &194658 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 494658} + - 33: {fileID: 3394658} + - 23: {fileID: 2394658} + m_Layer: 0 + m_Name: PuzzleBackground + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &194660 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 494660} + m_Layer: 0 + m_Name: Model + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &400000 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100042} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.075167, y: 0.01986, z: 0.076057} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 400002} + m_RootOrder: 1 +--- !u!4 &400002 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 494660} + - {fileID: 400000} + - {fileID: 421694} + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!4 &400004 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.01805842, y: 0.013, z: 0.049052533} + m_LocalScale: {x: 0.06, y: 0.0025, z: 0.06} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 400024} + m_RootOrder: 1 +--- !u!4 &400006 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.04834008, y: 0.013, z: 0.049052533} + m_LocalScale: {x: 0.06, y: 0.0025, z: 0.06} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 400008} + m_RootOrder: 1 +--- !u!4 &400008 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100008} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 400066} + - {fileID: 400006} + - {fileID: 405968} + m_Father: {fileID: 494660} + m_RootOrder: 2 +--- !u!4 &400018 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100018} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 400060} + - {fileID: 400022} + - {fileID: 400862} + m_Father: {fileID: 494660} + m_RootOrder: 1 +--- !u!4 &400022 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100022} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.01805842, y: 0.013, z: -0.01457344} + m_LocalScale: {x: 0.06, y: 0.0025, z: 0.06} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 400018} + m_RootOrder: 1 +--- !u!4 &400024 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100024} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 400064} + - {fileID: 400004} + - {fileID: 419842} + m_Father: {fileID: 494660} + m_RootOrder: 3 +--- !u!4 &400030 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100030} + m_LocalRotation: {x: 0, y: -1, z: 0, w: -0.00000004371139} + m_LocalPosition: {x: 0.048340082, y: 0.013, z: -0.014572787} + m_LocalScale: {x: 0.06, y: 0.0025, z: 0.06} + m_LocalEulerAnglesHint: {x: 0, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 400032} + m_RootOrder: 1 +--- !u!4 &400032 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100032} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 400062} + - {fileID: 400030} + - {fileID: 487170} + m_Father: {fileID: 494660} + m_RootOrder: 0 +--- !u!4 &400042 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100020} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.00037108726, z: -0.022983344} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 400060} + m_RootOrder: 3 +--- !u!4 &400044 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100044} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: -0.012278119, z: 1.7763568e-15} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 400060} + m_RootOrder: 0 +--- !u!4 &400046 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100046} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.021482525, z: -0.022983344} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 400062} + m_RootOrder: 3 +--- !u!4 &400048 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100048} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.00883332, z: 1.7763568e-15} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 400062} + m_RootOrder: 0 +--- !u!4 &400050 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100050} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.021482525, z: -0.022983344} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 400064} + m_RootOrder: 3 +--- !u!4 &400052 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100052} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.00883332, z: 1.7763568e-15} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 400064} + m_RootOrder: 0 +--- !u!4 &400054 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100054} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.021482525, z: -0.022983344} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 400066} + m_RootOrder: 3 +--- !u!4 &400056 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100056} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.00883332, z: 1.7763568e-15} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 400066} + m_RootOrder: 0 +--- !u!4 &400060 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100060} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.01805842, y: 0.020949246, z: -0.01457344} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 400044} + - {fileID: 400076} + - {fileID: 400068} + - {fileID: 400042} + m_Father: {fileID: 400018} + m_RootOrder: 0 +--- !u!4 &400062 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100062} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.04834008, y: -0.00016232287, z: -0.01457344} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 400048} + - {fileID: 400080} + - {fileID: 400074} + - {fileID: 400046} + m_Father: {fileID: 400032} + m_RootOrder: 0 +--- !u!4 &400064 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100064} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.01805842, y: -0.00016232287, z: 0.049052533} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 400052} + - {fileID: 400082} + - {fileID: 400072} + - {fileID: 400050} + m_Father: {fileID: 400024} + m_RootOrder: 0 +--- !u!4 &400066 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100066} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.04834008, y: -0.00016232287, z: 0.049052533} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 400056} + - {fileID: 400078} + - {fileID: 400070} + - {fileID: 400054} + m_Father: {fileID: 400008} + m_RootOrder: 0 +--- !u!4 &400068 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100068} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.00037108726, z: -0.022983344} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 400060} + m_RootOrder: 2 +--- !u!4 &400070 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100070} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.021482525, z: -0.022983344} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 400066} + m_RootOrder: 2 +--- !u!4 &400072 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100072} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.021482525, z: -0.022983344} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 400064} + m_RootOrder: 2 +--- !u!4 &400074 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100074} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.021482525, z: -0.022983344} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 400062} + m_RootOrder: 2 +--- !u!4 &400076 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100076} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.00037108726, z: -0.022983344} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 400060} + m_RootOrder: 1 +--- !u!4 &400078 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100078} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.021482525, z: -0.022983344} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 400066} + m_RootOrder: 1 +--- !u!4 &400080 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100080} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.021482525, z: -0.022983344} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 400062} + m_RootOrder: 1 +--- !u!4 &400082 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100082} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.021482525, z: -0.022983344} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 400064} + m_RootOrder: 1 +--- !u!4 &400862 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179160} + m_LocalRotation: {x: -0.000000115202326, y: 0.7071067, z: -0.7071068, w: -0.000000115202305} + m_LocalPosition: {x: -0.01805842, y: 0.0215, z: -0.00457344} + m_LocalScale: {x: 0.01, y: 0.009999998, z: 0.009999998} + m_LocalEulerAnglesHint: {x: 89.980194, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 400018} + m_RootOrder: 2 +--- !u!4 &405968 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 147448} + m_LocalRotation: {x: -0.000000115202326, y: 0.7071067, z: -0.7071068, w: -0.000000115202305} + m_LocalPosition: {x: 0.04834008, y: 0.0215, z: 0.059052534} + m_LocalScale: {x: 0.01, y: 0.009999998, z: 0.009999998} + m_LocalEulerAnglesHint: {x: 89.980194, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 400008} + m_RootOrder: 2 +--- !u!4 &419842 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139942} + m_LocalRotation: {x: -0.000000115202326, y: 0.7071067, z: -0.7071068, w: -0.000000115202305} + m_LocalPosition: {x: -0.01805842, y: 0.0215, z: 0.059052534} + m_LocalScale: {x: 0.01, y: 0.009999998, z: 0.009999998} + m_LocalEulerAnglesHint: {x: 89.980194, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 400024} + m_RootOrder: 2 +--- !u!4 &421694 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 121694} + m_LocalRotation: {x: 0, y: -0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 400002} + m_RootOrder: 2 +--- !u!4 &487170 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 163710} + m_LocalRotation: {x: -0.000000115202326, y: 0.7071067, z: -0.7071068, w: -0.000000115202305} + m_LocalPosition: {x: 0.04834008, y: 0.0215, z: -0.00457344} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_LocalEulerAnglesHint: {x: 89.980194, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 400032} + m_RootOrder: 2 +--- !u!4 &494656 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 194656} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.004, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 494660} + m_RootOrder: 5 +--- !u!4 &494658 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 194658} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.004, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 494660} + m_RootOrder: 4 +--- !u!4 &494660 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 194660} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.00000004371139} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: -180, z: 0} + m_Children: + - {fileID: 400032} + - {fileID: 400018} + - {fileID: 400008} + - {fileID: 400024} + - {fileID: 494658} + - {fileID: 494656} + m_Father: {fileID: 400002} + m_RootOrder: 0 +--- !u!23 &2300018 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100020} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 1515b0918013c15468573c8cce654ecb, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2300020 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100044} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 9af52e38fb41bfb42a724d7599f1fe37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2300022 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100046} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 1515b0918013c15468573c8cce654ecb, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2300024 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100048} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 9af52e38fb41bfb42a724d7599f1fe37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2300026 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100050} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 1515b0918013c15468573c8cce654ecb, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2300028 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100052} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 9af52e38fb41bfb42a724d7599f1fe37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2300030 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100054} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 1515b0918013c15468573c8cce654ecb, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2300032 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100056} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 9af52e38fb41bfb42a724d7599f1fe37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2300034 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100068} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 8c2541a39c73b5a4588c4e95ade4cdda, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2300036 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100070} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 8c2541a39c73b5a4588c4e95ade4cdda, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2300038 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100072} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 8c2541a39c73b5a4588c4e95ade4cdda, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2300040 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100074} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 8c2541a39c73b5a4588c4e95ade4cdda, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2300042 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100076} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 935bb5c8b474db049908d1d19deb7993, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2300044 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100078} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 935bb5c8b474db049908d1d19deb7993, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2300046 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100080} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 935bb5c8b474db049908d1d19deb7993, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2300048 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100082} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 935bb5c8b474db049908d1d19deb7993, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2329570 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 163710} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: ea7383a11cc28a24cbea15073b68bf56, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2336166 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139942} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: ea7383a11cc28a24cbea15073b68bf56, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2347072 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179160} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: ea7383a11cc28a24cbea15073b68bf56, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2394656 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 194656} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 1df94179db39acc41a994f772ef8891a, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2394658 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 194658} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 26cdee844cb231740941635a5e5962c7, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2395582 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 147448} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: ea7383a11cc28a24cbea15073b68bf56, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &3300002 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3300004 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3300012 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100022} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3300014 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100030} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3300020 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100020} + m_Mesh: {fileID: 4300006, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3300022 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100044} + m_Mesh: {fileID: 4300004, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3300024 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100046} + m_Mesh: {fileID: 4300002, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3300026 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100048} + m_Mesh: {fileID: 4300000, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3300028 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100050} + m_Mesh: {fileID: 4300010, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3300030 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100052} + m_Mesh: {fileID: 4300008, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3300032 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100054} + m_Mesh: {fileID: 4300014, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3300034 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100056} + m_Mesh: {fileID: 4300012, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3300036 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100068} + m_Mesh: {fileID: 4300006, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3300038 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100070} + m_Mesh: {fileID: 4300014, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3300040 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100072} + m_Mesh: {fileID: 4300010, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3300042 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100074} + m_Mesh: {fileID: 4300002, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3300044 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100076} + m_Mesh: {fileID: 4300006, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3300046 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100078} + m_Mesh: {fileID: 4300014, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3300048 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100080} + m_Mesh: {fileID: 4300002, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3300050 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100082} + m_Mesh: {fileID: 4300010, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3321694 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 121694} + m_Mesh: {fileID: 4300000, guid: 5ab6c3be308beaa47b558e81d501cf7c, type: 3} +--- !u!33 &3394656 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 194656} + m_Mesh: {fileID: 4300020, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3394658 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 194658} + m_Mesh: {fileID: 4300016, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!102 &10222334 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 147448} + m_Text: X + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 40 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!102 &10274792 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 163710} + m_Text: X + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 40 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!102 &10287516 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179160} + m_Text: X + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 40 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!102 &10289726 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139942} + m_Text: X + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 40 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!114 &11407772 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100018} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 11417016} + Children: [] + IsPassThrough: 0 + ChildRowLength: 0 + Highlight: {fileID: 11460346} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!114 &11411180 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 0, y: 0, z: 0} + OutlineAmount: 0 +--- !u!114 &11417016 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 0} + Children: + - {fileID: 11448482} + - {fileID: 11407772} + - {fileID: 11421786} + - {fileID: 11478104} + IsPassThrough: 0 + ChildRowLength: 2 + Highlight: {fileID: 11471256} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!114 &11419252 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100042} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -381104716, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11421786 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100008} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 11417016} + Children: [] + IsPassThrough: 0 + ChildRowLength: 0 + Highlight: {fileID: 11477336} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!114 &11424162 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 955dc0c1ac588b34e979be8884e43be9, type: 3} + m_Name: + m_EditorClassIdentifier: + buttons: + - {fileID: 11448482} + - {fileID: 11407772} + - {fileID: 11421786} + - {fileID: 11478104} +--- !u!114 &11425582 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100030} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 0, y: 0, z: 0} + OutlineAmount: 0 +--- !u!114 &11434540 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -119419473, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + ModuleType: exampleModule1 + ModuleDisplayName: +--- !u!114 &11448482 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100032} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 11417016} + Children: [] + IsPassThrough: 0 + ChildRowLength: 0 + Highlight: {fileID: 11425582} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!114 &11460346 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100022} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 0, y: 0, z: 0} + OutlineAmount: 0 +--- !u!114 &11471256 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 121694} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 1, y: 1, z: 1} + OutlineAmount: 0 +--- !u!114 &11477336 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 0, y: 0, z: 0} + OutlineAmount: 0 +--- !u!114 &11478104 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100024} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 11417016} + Children: [] + IsPassThrough: 0 + ChildRowLength: 0 + Highlight: {fileID: 11411180} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!114 &11482148 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1675560866, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 100002} + m_IsPrefabParent: 1 diff --git a/Assets/Examples/1.1 Module/ExampleModule.prefab.meta b/Assets/Examples/1.1 Module/ExampleModule.prefab.meta new file mode 100644 index 0000000..2d6dd9c --- /dev/null +++ b/Assets/Examples/1.1 Module/ExampleModule.prefab.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 857b932e96426ad48a7fadaae993e27e +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/1.10 NeedyModule.meta b/Assets/Examples/1.10 NeedyModule.meta new file mode 100644 index 0000000..191e0ed --- /dev/null +++ b/Assets/Examples/1.10 NeedyModule.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5df5779287bb4444ba2ce852dee8d858 +folderAsset: yes +timeCreated: 1468271897 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/1.10 NeedyModule/ExampleNeedyModule.cs b/Assets/Examples/1.10 NeedyModule/ExampleNeedyModule.cs new file mode 100644 index 0000000..63022ae --- /dev/null +++ b/Assets/Examples/1.10 NeedyModule/ExampleNeedyModule.cs @@ -0,0 +1,39 @@ +using UnityEngine; +using System.Collections; + +public class ExampleNeedyModule : MonoBehaviour +{ + public KMSelectable Button; + + float timeRemaining; + + void Awake() + { + GetComponent().OnNeedyActivation += OnNeedyActivation; + GetComponent().OnNeedyDeactivation += OnNeedyDeactivation; + Button.OnInteract += Solve; + GetComponent().OnTimerExpired += OnTimerExpired; + } + + protected bool Solve() + { + GetComponent().OnPass(); + + return false; + } + + protected void OnNeedyActivation() + { + + } + + protected void OnNeedyDeactivation() + { + + } + + protected void OnTimerExpired() + { + GetComponent().OnStrike(); + } +} diff --git a/Assets/Examples/1.10 NeedyModule/ExampleNeedyModule.cs.meta b/Assets/Examples/1.10 NeedyModule/ExampleNeedyModule.cs.meta new file mode 100644 index 0000000..bbedfb1 --- /dev/null +++ b/Assets/Examples/1.10 NeedyModule/ExampleNeedyModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 53e66dfed13c8864a9abc54f943cb9be +timeCreated: 1468339679 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/1.10 NeedyModule/NeedyModule.prefab b/Assets/Examples/1.10 NeedyModule/NeedyModule.prefab new file mode 100644 index 0000000..bdafb0d --- /dev/null +++ b/Assets/Examples/1.10 NeedyModule/NeedyModule.prefab @@ -0,0 +1,455 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &106774 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 488726} + - 33: {fileID: 3322404} + - 23: {fileID: 2322432} + - 114: {fileID: 11492840} + m_Layer: 0 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &108928 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 477712} + - 33: {fileID: 3363774} + - 114: {fileID: 11408776} + m_Layer: 0 + m_Name: Highlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &128408 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 425598} + - 23: {fileID: 2374378} + - 102: {fileID: 10249064} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &168938 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 485632} + - 33: {fileID: 3390490} + - 23: {fileID: 2324884} + m_Layer: 0 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &172616 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 470904} + - 114: {fileID: 11429724} + - 114: {fileID: 11453646} + - 114: {fileID: 11420980} + - 95: {fileID: 9598622} + m_Layer: 0 + m_Name: NeedyModule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!1 &190168 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 403024} + - 33: {fileID: 3316564} + - 114: {fileID: 11459210} + m_Layer: 0 + m_Name: Component_Highlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195122 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 482190} + m_Layer: 0 + m_Name: Component_Needy_Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &403024 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 190168} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 470904} + m_RootOrder: 1 +--- !u!4 &425598 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 128408} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0.50799996, z: 0} + m_LocalScale: {x: 0.050000004, y: 0.10000002, z: 1} + m_Children: [] + m_Father: {fileID: 488726} + m_RootOrder: 0 +--- !u!4 &470904 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 172616} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 482190} + - {fileID: 403024} + - {fileID: 488726} + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!4 &477712 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 108928} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.279, z: 0} + m_LocalScale: {x: 1.2, y: 0.5, z: 1.2} + m_Children: [] + m_Father: {fileID: 488726} + m_RootOrder: 1 +--- !u!4 &482190 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195122} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.00000004371139} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 485632} + m_Father: {fileID: 470904} + m_RootOrder: 0 +--- !u!4 &485632 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168938} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 482190} + m_RootOrder: 0 +--- !u!4 &488726 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106774} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.0146, z: -0.0357} + m_LocalScale: {x: 0.1, y: 0.05, z: 0.05} + m_Children: + - {fileID: 425598} + - {fileID: 477712} + m_Father: {fileID: 470904} + m_RootOrder: 2 +--- !u!23 &2322432 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106774} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2324884 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168938} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 71fd4b9053b24e5488cc0d45bfc80547, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2374378 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 128408} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: ea7383a11cc28a24cbea15073b68bf56, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &3316564 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 190168} + m_Mesh: {fileID: 4300000, guid: 5ab6c3be308beaa47b558e81d501cf7c, type: 3} +--- !u!33 &3322404 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106774} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3363774 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 108928} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3390490 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168938} + m_Mesh: {fileID: 4300002, guid: de2ecf7201de1d347bce8844cca92160, type: 3} +--- !u!95 &9598622 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 172616} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 7d8a5a6893042e5498484574468a6877, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 +--- !u!102 &10249064 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 128408} + m_Text: Push + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 40 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!114 &11408776 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 108928} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 1, y: 1, z: 1} + OutlineAmount: 0 +--- !u!114 &11420980 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 172616} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 0} + Children: + - {fileID: 11492840} + IsPassThrough: 0 + ChildRowLength: 1 + Highlight: {fileID: 11459210} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!114 &11429724 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 172616} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 53e66dfed13c8864a9abc54f943cb9be, type: 3} + m_Name: + m_EditorClassIdentifier: + Button: {fileID: 11492840} +--- !u!114 &11453646 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 172616} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1718998123, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + ModuleType: ExampleNeedy + ModuleDisplayName: Example Needy Module +--- !u!114 &11459210 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 190168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 1, y: 1, z: 1} + OutlineAmount: 0 +--- !u!114 &11492840 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106774} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 11420980} + Children: [] + IsPassThrough: 0 + ChildRowLength: 0 + Highlight: {fileID: 11408776} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 172616} + m_IsPrefabParent: 1 diff --git a/Assets/Examples/1.10 NeedyModule/NeedyModule.prefab.meta b/Assets/Examples/1.10 NeedyModule/NeedyModule.prefab.meta new file mode 100644 index 0000000..919bb11 --- /dev/null +++ b/Assets/Examples/1.10 NeedyModule/NeedyModule.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 08be6b75bcf9b2e44b0036218319f321 +timeCreated: 1468336864 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets.meta b/Assets/Examples/Assets.meta new file mode 100644 index 0000000..3b92b8a --- /dev/null +++ b/Assets/Examples/Assets.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 027bd19ee57bdf94581c33dfab847573 +folderAsset: yes +timeCreated: 1466168304 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Animations.meta b/Assets/Examples/Assets/Animations.meta new file mode 100644 index 0000000..0303f7a --- /dev/null +++ b/Assets/Examples/Assets/Animations.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0a8d7a09a675b0f40a869248958530d3 +folderAsset: yes +timeCreated: 1464991617 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Animations/Camera.meta b/Assets/Examples/Assets/Animations/Camera.meta new file mode 100644 index 0000000..099f749 --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5a6cc404961244049ae60b6cf1223b51 +folderAsset: yes +timeCreated: 1464991617 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Animations/Camera/FacilityRoom.meta b/Assets/Examples/Assets/Animations/Camera/FacilityRoom.meta new file mode 100644 index 0000000..3b837ce --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/FacilityRoom.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5b822aff22313394f983a0ac35c40dfd +folderAsset: yes +timeCreated: 1464991617 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Animations/Camera/FacilityRoom/AlarmClock.anim b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/AlarmClock.anim new file mode 100644 index 0000000..92c41e8 --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/AlarmClock.anim @@ -0,0 +1,755 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: AlarmClock + serializedVersion: 4 + m_AnimationType: 2 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .181291059, y: .00236467342, z: -.000436445844, w: .983426571} + inSlope: {x: -.0593161546, y: -.0248093363, z: .00469486415, w: .0109612932} + outSlope: {x: -.0593161546, y: -.0248093363, z: .00469486415, w: .0109612932} + tangentMode: -3472285 + - time: .0166666675 + value: {x: .180302456, y: .00195118447, z: -.0003581981, w: .983609259} + inSlope: {x: -.114581279, y: -.117354415, z: .0214473158, w: .020940898} + outSlope: {x: -.114581279, y: -.117354415, z: .0214473158, w: .020940898} + tangentMode: 2688099 + - time: .0333333351 + value: {x: .177471682, y: -.00154714053, z: .000278464722, w: .984124601} + inSlope: {x: -.219210654, y: -.292595744, z: .051842127, w: .0384467803} + outSlope: {x: -.219210654, y: -.292595744, z: .051842127, w: .0384467803} + tangentMode: 139 + - time: .0500000045 + value: {x: .172995433, y: -.00780200819, z: .00136987306, w: .984890819} + inSlope: {x: -.31212464, y: -.448208034, z: .075454846, w: .0503700972} + outSlope: {x: -.31212464, y: -.448208034, z: .075454846, w: .0503700972} + tangentMode: -1166972894 + - time: .0666666701 + value: {x: .167067528, y: -.0164874084, z: .00279362639, w: .985803604} + inSlope: {x: -.393400967, y: -.584242642, z: .0914758891, w: .0557541884} + outSlope: {x: -.393400967, y: -.584242642, z: .0914758891, w: .0557541884} + tangentMode: -1161410524 + - time: .0833333358 + value: {x: .159882069, y: -.0272767618, z: .00441906927, w: .986749291} + inSlope: {x: -.462952882, y: -.700596571, z: .099685058, w: .0543183126} + outSlope: {x: -.462952882, y: -.700596571, z: .099685058, w: .0543183126} + tangentMode: -1103518627 + - time: .100000001 + value: {x: .151635766, y: -.0398406275, z: .00611646147, w: .987614214} + inSlope: {x: -.520567656, y: -.797052741, z: .100374036, w: .0463503636} + outSlope: {x: -.520567656, y: -.797052741, z: .100374036, w: .0463503636} + tangentMode: -1103588674 + - time: .116666667 + value: {x: .142529815, y: -.0538451858, z: .0077648703, w: .988294303} + inSlope: {x: -.565956295, y: -.873331666, z: .0942696184, w: .0326371156} + outSlope: {x: -.565956295, y: -.873331666, z: .0942696184, w: .0326371156} + tangentMode: -1103819575 + - time: .13333334 + value: {x: .132770553, y: -.0689516887, z: .00925878249, w: .988702118} + inSlope: {x: -.598816037, y: -.929145336, z: .082454972, w: .0143659068} + outSlope: {x: -.598816037, y: -.929145336, z: .082454972, w: .0143659068} + tangentMode: -1104269710 + - time: .150000006 + value: {x: .122569278, y: -.0848167017, z: .0105133699, w: .988773167} + inSlope: {x: -.618873477, y: -.964244843, z: .066287756, w: -.00696480367} + outSlope: {x: -.618873477, y: -.964244843, z: .066287756, w: -.00696480367} + tangentMode: -1105008925 + - time: .166666672 + value: {x: .112141438, y: -.10109318, z: .0114683742, w: .988469958} + inSlope: {x: -.625925481, y: -.978460073, z: .0473144799, w: -.0296384133} + outSlope: {x: -.625925481, y: -.978460073, z: .0473144799, w: -.0296384133} + tangentMode: -1106088437 + - time: .183333337 + value: {x: .101705097, y: -.117432036, z: .0120905191, w: .98778522} + inSlope: {x: -.619871259, y: -.971726179, z: .0271821246, w: -.0518274382} + outSlope: {x: -.619871259, y: -.971726179, z: .0271821246, w: -.0518274382} + tangentMode: -1107735549 + - time: .200000003 + value: {x: .091479063, y: -.133484051, z: .0123744449, w: .986742377} + inSlope: {x: -.600720525, y: -.944094479, z: .0075474577, w: -.0716936663} + outSlope: {x: -.600720525, y: -.944094479, z: .0075474577, w: -.0716936663} + tangentMode: -1111185721 + - time: .216666669 + value: {x: .0816810802, y: -.14890185, z: .012342101, w: .985395432} + inSlope: {x: -.568588138, y: -.89572376, z: -.0100140003, w: -.0874775723} + outSlope: {x: -.568588138, y: -.89572376, z: -.0100140003, w: -.0874775723} + tangentMode: -1115015360 + - time: .233333334 + value: {x: .0725261271, y: -.163341507, z: .0120406449, w: .983826458} + inSlope: {x: -.523676991, y: -.826856732, z: -.0240975264, w: -.0976073816} + outSlope: {x: -.523676991, y: -.826856732, z: -.0240975264, w: -.0976073816} + tangentMode: -1122167402 + - time: .25 + value: {x: .0642251819, y: -.176463738, z: .0115388501, w: .982141852} + inSlope: {x: -.466242641, y: -.737786472, z: -.0335563496, w: -.100806318} + outSlope: {x: -.466242641, y: -.737786472, z: -.0335563496, w: -.100806318} + tangentMode: -1137402497 + - time: .266666681 + value: {x: .0569847003, y: -.187934399, z: .0109220995, w: .980466247} + inSlope: {x: -.396547079, y: -.628803134, z: -.0375852585, w: -.0961660594} + outSlope: {x: -.396547079, y: -.628803134, z: -.0375852585, w: -.0961660594} + tangentMode: 1011526011 + - time: .283333361 + value: {x: .0510069355, y: -.19742386, z: .0102860071, w: .978936315} + inSlope: {x: -.314809918, y: -.500145733, z: -.0358010903, w: -.0832467601} + outSlope: {x: -.314809918, y: -.500145733, z: -.0358010903, w: -.0832467601} + tangentMode: 1022956482 + - time: .300000042 + value: {x: .0464910269, y: -.204605937, z: .00972872879, w: .977691352} + inSlope: {x: -.221159458, y: -.351946205, z: -.0283210594, w: -.0621771291} + outSlope: {x: -.221159458, y: -.351946205, z: -.0283210594, w: -.0621771291} + tangentMode: 1026448738 + - time: .316666722 + value: {x: .0436349474, y: -.209155411, z: .00934197102, w: .976863742} + inSlope: {x: -.115590252, y: -.184180155, z: -.0158408489, w: -.0337207355} + outSlope: {x: -.115590252, y: -.184180155, z: -.0158408489, w: -.0337207355} + tangentMode: 1028239656 + - time: .333333343 + value: {x: .0426380187, y: -.210745275, z: .00920070056, w: .976567328} + inSlope: {x: -.0598158836, y: -.0953921303, z: -.0084762508, w: -.0177848823} + outSlope: {x: -.0598158836, y: -.0953921303, z: -.0084762508, w: -.0177848823} + tangentMode: 1028838354 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_CompressedRotationCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .129999995, y: 1.34000003, z: -1.44000006} + inSlope: {x: 0, y: 0, z: .5400002} + outSlope: {x: 0, y: 0, z: .5400002} + tangentMode: 0 + - time: .333333343 + value: {x: .129999995, y: 1.34000003, z: -1.25999999} + inSlope: {x: 0, y: 0, z: .5400002} + outSlope: {x: 0, y: 0, z: .5400002} + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - path: 0 + attribute: 1 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + - path: 0 + attribute: 2 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_StartTime: 0 + m_StopTime: .333333343 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -1.44000006 + inSlope: .5400002 + outSlope: .5400002 + tangentMode: 10 + - time: .333333343 + value: -1.25999999 + inSlope: .5400002 + outSlope: .5400002 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1.34000003 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + - time: .333333343 + value: 1.34000003 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .129999995 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + - time: .333333343 + value: .129999995 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .181291059 + inSlope: -.0593161546 + outSlope: -.0593161546 + tangentMode: 0 + - time: .0166666675 + value: .180302456 + inSlope: -.114581279 + outSlope: -.114581279 + tangentMode: 0 + - time: .0333333351 + value: .177471682 + inSlope: -.219210654 + outSlope: -.219210654 + tangentMode: 0 + - time: .0500000045 + value: .172995433 + inSlope: -.31212464 + outSlope: -.31212464 + tangentMode: 0 + - time: .0666666701 + value: .167067528 + inSlope: -.393400967 + outSlope: -.393400967 + tangentMode: 0 + - time: .0833333358 + value: .159882069 + inSlope: -.462952882 + outSlope: -.462952882 + tangentMode: 0 + - time: .100000001 + value: .151635766 + inSlope: -.520567656 + outSlope: -.520567656 + tangentMode: 0 + - time: .116666667 + value: .142529815 + inSlope: -.565956295 + outSlope: -.565956295 + tangentMode: 0 + - time: .13333334 + value: .132770553 + inSlope: -.598816037 + outSlope: -.598816037 + tangentMode: 0 + - time: .150000006 + value: .122569278 + inSlope: -.618873477 + outSlope: -.618873477 + tangentMode: 0 + - time: .166666672 + value: .112141438 + inSlope: -.625925481 + outSlope: -.625925481 + tangentMode: 0 + - time: .183333337 + value: .101705097 + inSlope: -.619871259 + outSlope: -.619871259 + tangentMode: 0 + - time: .200000003 + value: .091479063 + inSlope: -.600720525 + outSlope: -.600720525 + tangentMode: 0 + - time: .216666669 + value: .0816810802 + inSlope: -.568588138 + outSlope: -.568588138 + tangentMode: 0 + - time: .233333334 + value: .0725261271 + inSlope: -.523676991 + outSlope: -.523676991 + tangentMode: 0 + - time: .25 + value: .0642251819 + inSlope: -.466242641 + outSlope: -.466242641 + tangentMode: 0 + - time: .266666681 + value: .0569847003 + inSlope: -.396547079 + outSlope: -.396547079 + tangentMode: 0 + - time: .283333361 + value: .0510069355 + inSlope: -.314809918 + outSlope: -.314809918 + tangentMode: 0 + - time: .300000042 + value: .0464910269 + inSlope: -.221159458 + outSlope: -.221159458 + tangentMode: 0 + - time: .316666722 + value: .0436349474 + inSlope: -.115590252 + outSlope: -.115590252 + tangentMode: 0 + - time: .333333343 + value: .0426380187 + inSlope: -.0598158836 + outSlope: -.0598158836 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .00236467342 + inSlope: -.0248093363 + outSlope: -.0248093363 + tangentMode: 0 + - time: .0166666675 + value: .00195118447 + inSlope: -.117354415 + outSlope: -.117354415 + tangentMode: 0 + - time: .0333333351 + value: -.00154714053 + inSlope: -.292595744 + outSlope: -.292595744 + tangentMode: 0 + - time: .0500000045 + value: -.00780200819 + inSlope: -.448208034 + outSlope: -.448208034 + tangentMode: 0 + - time: .0666666701 + value: -.0164874084 + inSlope: -.584242642 + outSlope: -.584242642 + tangentMode: 0 + - time: .0833333358 + value: -.0272767618 + inSlope: -.700596571 + outSlope: -.700596571 + tangentMode: 0 + - time: .100000001 + value: -.0398406275 + inSlope: -.797052741 + outSlope: -.797052741 + tangentMode: 0 + - time: .116666667 + value: -.0538451858 + inSlope: -.873331666 + outSlope: -.873331666 + tangentMode: 0 + - time: .13333334 + value: -.0689516887 + inSlope: -.929145336 + outSlope: -.929145336 + tangentMode: 0 + - time: .150000006 + value: -.0848167017 + inSlope: -.964244843 + outSlope: -.964244843 + tangentMode: 0 + - time: .166666672 + value: -.10109318 + inSlope: -.978460073 + outSlope: -.978460073 + tangentMode: 0 + - time: .183333337 + value: -.117432036 + inSlope: -.971726179 + outSlope: -.971726179 + tangentMode: 0 + - time: .200000003 + value: -.133484051 + inSlope: -.944094479 + outSlope: -.944094479 + tangentMode: 0 + - time: .216666669 + value: -.14890185 + inSlope: -.89572376 + outSlope: -.89572376 + tangentMode: 0 + - time: .233333334 + value: -.163341507 + inSlope: -.826856732 + outSlope: -.826856732 + tangentMode: 0 + - time: .25 + value: -.176463738 + inSlope: -.737786472 + outSlope: -.737786472 + tangentMode: 0 + - time: .266666681 + value: -.187934399 + inSlope: -.628803134 + outSlope: -.628803134 + tangentMode: 0 + - time: .283333361 + value: -.19742386 + inSlope: -.500145733 + outSlope: -.500145733 + tangentMode: 0 + - time: .300000042 + value: -.204605937 + inSlope: -.351946205 + outSlope: -.351946205 + tangentMode: 0 + - time: .316666722 + value: -.209155411 + inSlope: -.184180155 + outSlope: -.184180155 + tangentMode: 0 + - time: .333333343 + value: -.210745275 + inSlope: -.0953921303 + outSlope: -.0953921303 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -.000436445844 + inSlope: .00469486415 + outSlope: .00469486415 + tangentMode: 0 + - time: .0166666675 + value: -.0003581981 + inSlope: .0214473158 + outSlope: .0214473158 + tangentMode: 0 + - time: .0333333351 + value: .000278464722 + inSlope: .051842127 + outSlope: .051842127 + tangentMode: 0 + - time: .0500000045 + value: .00136987306 + inSlope: .075454846 + outSlope: .075454846 + tangentMode: 0 + - time: .0666666701 + value: .00279362639 + inSlope: .0914758891 + outSlope: .0914758891 + tangentMode: 0 + - time: .0833333358 + value: .00441906927 + inSlope: .099685058 + outSlope: .099685058 + tangentMode: 0 + - time: .100000001 + value: .00611646147 + inSlope: .100374036 + outSlope: .100374036 + tangentMode: 0 + - time: .116666667 + value: .0077648703 + inSlope: .0942696184 + outSlope: .0942696184 + tangentMode: 0 + - time: .13333334 + value: .00925878249 + inSlope: .082454972 + outSlope: .082454972 + tangentMode: 0 + - time: .150000006 + value: .0105133699 + inSlope: .066287756 + outSlope: .066287756 + tangentMode: 0 + - time: .166666672 + value: .0114683742 + inSlope: .0473144799 + outSlope: .0473144799 + tangentMode: 0 + - time: .183333337 + value: .0120905191 + inSlope: .0271821246 + outSlope: .0271821246 + tangentMode: 0 + - time: .200000003 + value: .0123744449 + inSlope: .0075474577 + outSlope: .0075474577 + tangentMode: 0 + - time: .216666669 + value: .012342101 + inSlope: -.0100140003 + outSlope: -.0100140003 + tangentMode: 0 + - time: .233333334 + value: .0120406449 + inSlope: -.0240975264 + outSlope: -.0240975264 + tangentMode: 0 + - time: .25 + value: .0115388501 + inSlope: -.0335563496 + outSlope: -.0335563496 + tangentMode: 0 + - time: .266666681 + value: .0109220995 + inSlope: -.0375852585 + outSlope: -.0375852585 + tangentMode: 0 + - time: .283333361 + value: .0102860071 + inSlope: -.0358010903 + outSlope: -.0358010903 + tangentMode: 0 + - time: .300000042 + value: .00972872879 + inSlope: -.0283210594 + outSlope: -.0283210594 + tangentMode: 0 + - time: .316666722 + value: .00934197102 + inSlope: -.0158408489 + outSlope: -.0158408489 + tangentMode: 0 + - time: .333333343 + value: .00920070056 + inSlope: -.0084762508 + outSlope: -.0084762508 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .983426571 + inSlope: .0109612932 + outSlope: .0109612932 + tangentMode: 0 + - time: .0166666675 + value: .983609259 + inSlope: .020940898 + outSlope: .020940898 + tangentMode: 0 + - time: .0333333351 + value: .984124601 + inSlope: .0384467803 + outSlope: .0384467803 + tangentMode: 0 + - time: .0500000045 + value: .984890819 + inSlope: .0503700972 + outSlope: .0503700972 + tangentMode: 0 + - time: .0666666701 + value: .985803604 + inSlope: .0557541884 + outSlope: .0557541884 + tangentMode: 0 + - time: .0833333358 + value: .986749291 + inSlope: .0543183126 + outSlope: .0543183126 + tangentMode: 0 + - time: .100000001 + value: .987614214 + inSlope: .0463503636 + outSlope: .0463503636 + tangentMode: 0 + - time: .116666667 + value: .988294303 + inSlope: .0326371156 + outSlope: .0326371156 + tangentMode: 0 + - time: .13333334 + value: .988702118 + inSlope: .0143659068 + outSlope: .0143659068 + tangentMode: 0 + - time: .150000006 + value: .988773167 + inSlope: -.00696480367 + outSlope: -.00696480367 + tangentMode: 0 + - time: .166666672 + value: .988469958 + inSlope: -.0296384133 + outSlope: -.0296384133 + tangentMode: 0 + - time: .183333337 + value: .98778522 + inSlope: -.0518274382 + outSlope: -.0518274382 + tangentMode: 0 + - time: .200000003 + value: .986742377 + inSlope: -.0716936663 + outSlope: -.0716936663 + tangentMode: 0 + - time: .216666669 + value: .985395432 + inSlope: -.0874775723 + outSlope: -.0874775723 + tangentMode: 0 + - time: .233333334 + value: .983826458 + inSlope: -.0976073816 + outSlope: -.0976073816 + tangentMode: 0 + - time: .25 + value: .982141852 + inSlope: -.100806318 + outSlope: -.100806318 + tangentMode: 0 + - time: .266666681 + value: .980466247 + inSlope: -.0961660594 + outSlope: -.0961660594 + tangentMode: 0 + - time: .283333361 + value: .978936315 + inSlope: -.0832467601 + outSlope: -.0832467601 + tangentMode: 0 + - time: .300000042 + value: .977691352 + inSlope: -.0621771291 + outSlope: -.0621771291 + tangentMode: 0 + - time: .316666722 + value: .976863742 + inSlope: -.0337207355 + outSlope: -.0337207355 + tangentMode: 0 + - time: .333333343 + value: .976567328 + inSlope: -.0177848823 + outSlope: -.0177848823 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.w + path: + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 20.8899994 + inSlope: 1.01720543e-05 + outSlope: 1.01720543e-05 + tangentMode: 0 + - time: .333333343 + value: 5.00000334 + inSlope: -0 + outSlope: -0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .275525987 + inSlope: 8.66611767 + outSlope: 8.66611767 + tangentMode: 0 + - time: .333333343 + value: -24.3556023 + inSlope: .000114283212 + outSlope: .000114283212 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -6.35692413e-05 + inSlope: -3.61922503e-05 + outSlope: -3.61922503e-05 + tangentMode: 10 + - time: .333333343 + value: -7.56333247e-05 + inSlope: -3.61922503e-05 + outSlope: -3.61922503e-05 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.z + path: + classID: 4 + script: {fileID: 0} + m_Events: [] diff --git a/Assets/Examples/Assets/Animations/Camera/FacilityRoom/AlarmClock.anim.meta b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/AlarmClock.anim.meta new file mode 100644 index 0000000..06272cd --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/AlarmClock.anim.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: d7781535e03447b4788fb640211243d1 +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Animations/Camera/FacilityRoom/Bomb.anim b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/Bomb.anim new file mode 100644 index 0000000..e14c735 --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/Bomb.anim @@ -0,0 +1,1005 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Bomb + serializedVersion: 4 + m_AnimationType: 2 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .181291059, y: .00236467342, z: -.000436445844, w: .983426571} + inSlope: {x: -.0278493743, y: .10031499, z: -.0183747709, w: .0047886367} + outSlope: {x: -.0278493743, y: .10031499, z: -.0183747709, w: .0047886367} + tangentMode: 0 + - time: .0166666675 + value: {x: .180826902, y: .00403658999, z: -.000742692035, w: .983506382} + inSlope: {x: -.0508721136, y: .0935481042, z: -.0169525202, w: .0089460602} + outSlope: {x: -.0508721136, y: .0935481042, z: -.0169525202, w: .0089460602} + tangentMode: 1065353216 + - time: .0333333351 + value: {x: .179595321, y: .00548294373, z: -.00100152986, w: .983724773} + inSlope: {x: -.0952796489, y: .0803836137, z: -.0141078308, w: .0169050675} + outSlope: {x: -.0952796489, y: .0803836137, z: -.0141078308, w: .0169050675} + tangentMode: 0 + - time: .0500000045 + value: {x: .177650914, y: .00671604415, z: -.00121295312, w: .984069884} + inSlope: {x: -.136423409, y: .0679508299, z: -.0112973209, w: .0241112709} + outSlope: {x: -.136423409, y: .0679508299, z: -.0112973209, w: .0241112709} + tangentMode: 0 + - time: .0666666701 + value: {x: .175047874, y: .00774797145, z: -.00137810723, w: .984528482} + inSlope: {x: -.174318567, y: .056237027, z: -.00858414825, w: .0304895677} + outSlope: {x: -.174318567, y: .056237027, z: -.00858414825, w: .0304895677} + tangentMode: 0 + - time: .0833333358 + value: {x: .171840295, y: .00859061163, z: -.00149909139, w: .985086203} + inSlope: {x: -.208969578, y: .0452319384, z: -.00601998437, w: .0359934606} + outSlope: {x: -.208969578, y: .0452319384, z: -.00601998437, w: .0359934606} + tangentMode: 0 + - time: .100000001 + value: {x: .168082222, y: .00925570261, z: -.00157877337, w: .985728264} + inSlope: {x: -.240379602, y: .0349276997, z: -.0036457791, w: .0405961312} + outSlope: {x: -.240379602, y: .0349276997, z: -.0036457791, w: .0405961312} + tangentMode: 0 + - time: .116666667 + value: {x: .163827643, y: .00975486822, z: -.00162061735, w: .986439407} + inSlope: {x: -.268548965, y: .0253189318, z: -.00149266678, w: .0442886278} + outSlope: {x: -.268548965, y: .0253189318, z: -.00149266678, w: .0442886278} + tangentMode: 0 + - time: .13333334 + value: {x: .159130588, y: .0100996671, z: -.00162852893, w: .987204552} + inSlope: {x: -.293473423, y: .016402347, z: .000417303672, w: .0470817015} + outSlope: {x: -.293473423, y: .016402347, z: .000417303672, w: .0470817015} + tangentMode: 0 + - time: .150000006 + value: {x: .154045194, y: .0103016132, z: -.00160670723, w: .988008797} + inSlope: {x: -.315145731, y: .00817665923, z: .00207041763, w: .0490003861} + outSlope: {x: -.315145731, y: .00817665923, z: .00207041763, w: .0490003861} + tangentMode: 0 + - time: .166666672 + value: {x: .148625731, y: .0103722224, z: -.00155951502, w: .988837898} + inSlope: {x: -.333554626, y: .000642500934, z: .00346041331, w: .0500839986} + outSlope: {x: -.333554626, y: .000642500934, z: .00346041331, w: .0500839986} + tangentMode: 0 + - time: .183333337 + value: {x: .142926708, y: .0103230299, z: -.00149136013, w: .989678264} + inSlope: {x: -.348689884, y: -.0061984458, z: .00458787708, w: .0503879823} + outSlope: {x: -.348689884, y: -.0061984458, z: .00458787708, w: .0503879823} + tangentMode: 0 + - time: .200000003 + value: {x: .137002736, y: .0101656076, z: -.0014065858, w: .990517497} + inSlope: {x: -.36054033, y: -.012342996, z: .00545935752, w: .049973134} + outSlope: {x: -.36054033, y: -.012342996, z: .00545935752, w: .049973134} + tangentMode: 0 + - time: .216666669 + value: {x: .130908698, y: .00991159678, z: -.00130938157, w: .991344035} + inSlope: {x: -.369093239, y: -.0177873224, z: .00608661724, w: .0489038266} + outSlope: {x: -.369093239, y: -.0177873224, z: .00608661724, w: .0489038266} + tangentMode: 0 + - time: .233333334 + value: {x: .12469963, y: .00957269687, z: -.00120369857, w: .992147624} + inSlope: {x: -.374335378, y: -.0225271769, z: .00648588594, w: .0472623147} + outSlope: {x: -.374335378, y: -.0225271769, z: .00648588594, w: .0472623147} + tangentMode: 0 + - time: .25 + value: {x: .118430853, y: .00916069094, z: -.00109318539, w: .992919445} + inSlope: {x: -.376253664, y: -.0265577137, z: .00667703524, w: .0451290458} + outSlope: {x: -.376253664, y: -.0265577137, z: .00667703524, w: .0451290458} + tangentMode: 0 + - time: .266666681 + value: {x: .112157837, y: .00868743937, z: -.000981130637, w: .993651927} + inSlope: {x: -.374839306, y: -.0298745297, z: .00668288767, w: .0425862893} + outSlope: {x: -.374839306, y: -.0298745297, z: .00668288767, w: .0425862893} + tangentMode: 0 + - time: .283333361 + value: {x: .105936199, y: .00816487242, z: -.000870422286, w: .994338989} + inSlope: {x: -.370081723, y: -.032473281, z: .00652829744, w: .0397199057} + outSlope: {x: -.370081723, y: -.032473281, z: .00652829744, w: .0397199057} + tangentMode: 1065353215 + - time: .300000042 + value: {x: .0998217687, y: .00760499574, z: -.00076352054, w: .994975924} + inSlope: {x: -.361972302, y: -.0343498476, z: .00623940164, w: .0366139114} + outSlope: {x: -.361972302, y: -.0343498476, z: .00623940164, w: .0366139114} + tangentMode: 1065353216 + - time: .316666722 + value: {x: .0938704461, y: .0070198765, z: -.000662442064, w: .995559454} + inSlope: {x: -.350505173, y: -.0355009064, z: .00584283657, w: .0333434045} + outSlope: {x: -.350505173, y: -.0355009064, z: .00584283657, w: .0333434045} + tangentMode: 0 + - time: .333333403 + value: {x: .0881382525, y: .0064216312, z: -.000568759162, w: .996087372} + inSlope: {x: -.335674822, y: -.0359235629, z: .00536487205, w: .0299852826} + outSlope: {x: -.335674822, y: -.0359235629, z: .00536487205, w: .0299852826} + tangentMode: 0 + - time: .350000083 + value: {x: .0826812759, y: .00582242338, z: -.00048361285, w: .996558964} + inSlope: {x: -.317477614, y: -.035615541, z: .00483061373, w: .0266057029} + outSlope: {x: -.317477614, y: -.035615541, z: .00483061373, w: .0266057029} + tangentMode: 0 + - time: .366666764 + value: {x: .0775556564, y: .00523444545, z: -.000407738582, w: .99697423} + inSlope: {x: -.295912892, y: -.0345753655, z: .00426319567, w: .0232583098} + outSlope: {x: -.295912892, y: -.0345753655, z: .00426319567, w: .0232583098} + tangentMode: 0 + - time: .383333445 + value: {x: .0728175044, y: .0046699103, z: -.000341506209, w: .997334242} + inSlope: {x: -.270979553, y: -.0328020193, z: .00368292909, w: .0199985337} + outSlope: {x: -.270979553, y: -.0328020193, z: .00368292909, w: .0199985337} + tangentMode: 0 + - time: .400000125 + value: {x: .0685229972, y: .00414104387, z: -.000284974172, w: .997640848} + inSlope: {x: -.242677808, y: -.0302950852, z: .0031064963, w: .0168585628} + outSlope: {x: -.242677808, y: -.0302950852, z: .0031064963, w: .0168585628} + tangentMode: 0 + - time: .416666806 + value: {x: .0647282377, y: .00366007327, z: -.00023795625, w: .997896194} + inSlope: {x: -.211010545, y: -.0270547085, z: .0025461372, w: .013849128} + outSlope: {x: -.211010545, y: -.0270547085, z: .0025461372, w: .013849128} + tangentMode: 0 + - time: .433333486 + value: {x: .0614893064, y: .00323921954, z: -.000200102862, w: .998102486} + inSlope: {x: -.175980031, y: -.0230813529, z: .00200881017, w: .0109720137} + outSlope: {x: -.175980031, y: -.0230813529, z: .00200881017, w: .0109720137} + tangentMode: 0 + - time: .450000167 + value: {x: .0588622317, y: .00289069419, z: -.00017099586, w: .998261929} + inSlope: {x: -.137589827, y: -.0183758326, z: .00149538787, w: .00821291655} + outSlope: {x: -.137589827, y: -.0183758326, z: .00149538787, w: .00821291655} + tangentMode: 0 + - time: .466666847 + value: {x: .0569029748, y: .00262669125, z: -.000150256557, w: .99837625} + inSlope: {x: -.0958439708, y: -.0129392315, z: .000999847543, w: .00553249847} + outSlope: {x: -.0958439708, y: -.0129392315, z: .000999847543, w: .00553249847} + tangentMode: 0 + - time: .483333528 + value: {x: .0556674302, y: .00245938613, z: -.000137667579, w: .998446345} + inSlope: {x: -.0507469662, y: -.00677290838, z: .000508450961, w: .00286460621} + outSlope: {x: -.0507469662, y: -.00677290838, z: .000508450961, w: .00286460621} + tangentMode: 0 + - time: .5 + value: {x: .0552114137, y: .00240092818, z: -.000133308233, w: .998471737} + inSlope: {x: -.027361311, y: -.00350751821, z: .000261563837, w: .00152351253} + outSlope: {x: -.027361311, y: -.00350751821, z: .000261563837, w: .00152351253} + tangentMode: 119562044 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_CompressedRotationCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .129999995, y: 1.34000003, z: -1.44000006} + inSlope: {x: -.00238735019, y: -.00454775151, z: 0} + outSlope: {x: -.00238735019, y: -.00454775151, z: 0} + tangentMode: 176 + - time: .5 + value: {x: .0900000036, y: 1.16999996, z: -1.01999998} + inSlope: {x: -.000273888698, y: -0, z: .00833031442} + outSlope: {x: -.000273888698, y: -0, z: .00833031442} + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - path: 0 + attribute: 1 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + - path: 0 + attribute: 2 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_StartTime: 0 + m_StopTime: .5 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -1.44000006 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: .5 + value: -1.01999998 + inSlope: .00833031442 + outSlope: .00833031442 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1.34000003 + inSlope: -.00454775151 + outSlope: -.00454775151 + tangentMode: 0 + - time: .5 + value: 1.16999996 + inSlope: -0 + outSlope: -0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .129999995 + inSlope: -.00238735019 + outSlope: -.00238735019 + tangentMode: 0 + - time: .5 + value: .0900000036 + inSlope: -.000273888698 + outSlope: -.000273888698 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .181291059 + inSlope: -.0278493743 + outSlope: -.0278493743 + tangentMode: 0 + - time: .0166666675 + value: .180826902 + inSlope: -.0508721136 + outSlope: -.0508721136 + tangentMode: 0 + - time: .0333333351 + value: .179595321 + inSlope: -.0952796489 + outSlope: -.0952796489 + tangentMode: 0 + - time: .0500000045 + value: .177650914 + inSlope: -.136423409 + outSlope: -.136423409 + tangentMode: 0 + - time: .0666666701 + value: .175047874 + inSlope: -.174318567 + outSlope: -.174318567 + tangentMode: 0 + - time: .0833333358 + value: .171840295 + inSlope: -.208969578 + outSlope: -.208969578 + tangentMode: 0 + - time: .100000001 + value: .168082222 + inSlope: -.240379602 + outSlope: -.240379602 + tangentMode: 0 + - time: .116666667 + value: .163827643 + inSlope: -.268548965 + outSlope: -.268548965 + tangentMode: 0 + - time: .13333334 + value: .159130588 + inSlope: -.293473423 + outSlope: -.293473423 + tangentMode: 0 + - time: .150000006 + value: .154045194 + inSlope: -.315145731 + outSlope: -.315145731 + tangentMode: 0 + - time: .166666672 + value: .148625731 + inSlope: -.333554626 + outSlope: -.333554626 + tangentMode: 0 + - time: .183333337 + value: .142926708 + inSlope: -.348689884 + outSlope: -.348689884 + tangentMode: 0 + - time: .200000003 + value: .137002736 + inSlope: -.36054033 + outSlope: -.36054033 + tangentMode: 0 + - time: .216666669 + value: .130908698 + inSlope: -.369093239 + outSlope: -.369093239 + tangentMode: 0 + - time: .233333334 + value: .12469963 + inSlope: -.374335378 + outSlope: -.374335378 + tangentMode: 0 + - time: .25 + value: .118430853 + inSlope: -.376253664 + outSlope: -.376253664 + tangentMode: 0 + - time: .266666681 + value: .112157837 + inSlope: -.374839306 + outSlope: -.374839306 + tangentMode: 0 + - time: .283333361 + value: .105936199 + inSlope: -.370081723 + outSlope: -.370081723 + tangentMode: 0 + - time: .300000042 + value: .0998217687 + inSlope: -.361972302 + outSlope: -.361972302 + tangentMode: 0 + - time: .316666722 + value: .0938704461 + inSlope: -.350505173 + outSlope: -.350505173 + tangentMode: 0 + - time: .333333403 + value: .0881382525 + inSlope: -.335674822 + outSlope: -.335674822 + tangentMode: 0 + - time: .350000083 + value: .0826812759 + inSlope: -.317477614 + outSlope: -.317477614 + tangentMode: 0 + - time: .366666764 + value: .0775556564 + inSlope: -.295912892 + outSlope: -.295912892 + tangentMode: 0 + - time: .383333445 + value: .0728175044 + inSlope: -.270979553 + outSlope: -.270979553 + tangentMode: 0 + - time: .400000125 + value: .0685229972 + inSlope: -.242677808 + outSlope: -.242677808 + tangentMode: 0 + - time: .416666806 + value: .0647282377 + inSlope: -.211010545 + outSlope: -.211010545 + tangentMode: 0 + - time: .433333486 + value: .0614893064 + inSlope: -.175980031 + outSlope: -.175980031 + tangentMode: 0 + - time: .450000167 + value: .0588622317 + inSlope: -.137589827 + outSlope: -.137589827 + tangentMode: 0 + - time: .466666847 + value: .0569029748 + inSlope: -.0958439708 + outSlope: -.0958439708 + tangentMode: 0 + - time: .483333528 + value: .0556674302 + inSlope: -.0507469662 + outSlope: -.0507469662 + tangentMode: 0 + - time: .5 + value: .0552114137 + inSlope: -.027361311 + outSlope: -.027361311 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .00236467342 + inSlope: .10031499 + outSlope: .10031499 + tangentMode: 0 + - time: .0166666675 + value: .00403658999 + inSlope: .0935481042 + outSlope: .0935481042 + tangentMode: 0 + - time: .0333333351 + value: .00548294373 + inSlope: .0803836137 + outSlope: .0803836137 + tangentMode: 0 + - time: .0500000045 + value: .00671604415 + inSlope: .0679508299 + outSlope: .0679508299 + tangentMode: 0 + - time: .0666666701 + value: .00774797145 + inSlope: .056237027 + outSlope: .056237027 + tangentMode: 0 + - time: .0833333358 + value: .00859061163 + inSlope: .0452319384 + outSlope: .0452319384 + tangentMode: 0 + - time: .100000001 + value: .00925570261 + inSlope: .0349276997 + outSlope: .0349276997 + tangentMode: 0 + - time: .116666667 + value: .00975486822 + inSlope: .0253189318 + outSlope: .0253189318 + tangentMode: 0 + - time: .13333334 + value: .0100996671 + inSlope: .016402347 + outSlope: .016402347 + tangentMode: 0 + - time: .150000006 + value: .0103016132 + inSlope: .00817665923 + outSlope: .00817665923 + tangentMode: 0 + - time: .166666672 + value: .0103722224 + inSlope: .000642500934 + outSlope: .000642500934 + tangentMode: 0 + - time: .183333337 + value: .0103230299 + inSlope: -.0061984458 + outSlope: -.0061984458 + tangentMode: 0 + - time: .200000003 + value: .0101656076 + inSlope: -.012342996 + outSlope: -.012342996 + tangentMode: 0 + - time: .216666669 + value: .00991159678 + inSlope: -.0177873224 + outSlope: -.0177873224 + tangentMode: 0 + - time: .233333334 + value: .00957269687 + inSlope: -.0225271769 + outSlope: -.0225271769 + tangentMode: 0 + - time: .25 + value: .00916069094 + inSlope: -.0265577137 + outSlope: -.0265577137 + tangentMode: 0 + - time: .266666681 + value: .00868743937 + inSlope: -.0298745297 + outSlope: -.0298745297 + tangentMode: 0 + - time: .283333361 + value: .00816487242 + inSlope: -.032473281 + outSlope: -.032473281 + tangentMode: 0 + - time: .300000042 + value: .00760499574 + inSlope: -.0343498476 + outSlope: -.0343498476 + tangentMode: 0 + - time: .316666722 + value: .0070198765 + inSlope: -.0355009064 + outSlope: -.0355009064 + tangentMode: 0 + - time: .333333403 + value: .0064216312 + inSlope: -.0359235629 + outSlope: -.0359235629 + tangentMode: 0 + - time: .350000083 + value: .00582242338 + inSlope: -.035615541 + outSlope: -.035615541 + tangentMode: 0 + - time: .366666764 + value: .00523444545 + inSlope: -.0345753655 + outSlope: -.0345753655 + tangentMode: 0 + - time: .383333445 + value: .0046699103 + inSlope: -.0328020193 + outSlope: -.0328020193 + tangentMode: 0 + - time: .400000125 + value: .00414104387 + inSlope: -.0302950852 + outSlope: -.0302950852 + tangentMode: 0 + - time: .416666806 + value: .00366007327 + inSlope: -.0270547085 + outSlope: -.0270547085 + tangentMode: 0 + - time: .433333486 + value: .00323921954 + inSlope: -.0230813529 + outSlope: -.0230813529 + tangentMode: 0 + - time: .450000167 + value: .00289069419 + inSlope: -.0183758326 + outSlope: -.0183758326 + tangentMode: 0 + - time: .466666847 + value: .00262669125 + inSlope: -.0129392315 + outSlope: -.0129392315 + tangentMode: 0 + - time: .483333528 + value: .00245938613 + inSlope: -.00677290838 + outSlope: -.00677290838 + tangentMode: 0 + - time: .5 + value: .00240092818 + inSlope: -.00350751821 + outSlope: -.00350751821 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -.000436445844 + inSlope: -.0183747709 + outSlope: -.0183747709 + tangentMode: 0 + - time: .0166666675 + value: -.000742692035 + inSlope: -.0169525202 + outSlope: -.0169525202 + tangentMode: 0 + - time: .0333333351 + value: -.00100152986 + inSlope: -.0141078308 + outSlope: -.0141078308 + tangentMode: 0 + - time: .0500000045 + value: -.00121295312 + inSlope: -.0112973209 + outSlope: -.0112973209 + tangentMode: 0 + - time: .0666666701 + value: -.00137810723 + inSlope: -.00858414825 + outSlope: -.00858414825 + tangentMode: 0 + - time: .0833333358 + value: -.00149909139 + inSlope: -.00601998437 + outSlope: -.00601998437 + tangentMode: 0 + - time: .100000001 + value: -.00157877337 + inSlope: -.0036457791 + outSlope: -.0036457791 + tangentMode: 0 + - time: .116666667 + value: -.00162061735 + inSlope: -.00149266678 + outSlope: -.00149266678 + tangentMode: 0 + - time: .13333334 + value: -.00162852893 + inSlope: .000417303672 + outSlope: .000417303672 + tangentMode: 0 + - time: .150000006 + value: -.00160670723 + inSlope: .00207041763 + outSlope: .00207041763 + tangentMode: 0 + - time: .166666672 + value: -.00155951502 + inSlope: .00346041331 + outSlope: .00346041331 + tangentMode: 0 + - time: .183333337 + value: -.00149136013 + inSlope: .00458787708 + outSlope: .00458787708 + tangentMode: 0 + - time: .200000003 + value: -.0014065858 + inSlope: .00545935752 + outSlope: .00545935752 + tangentMode: 0 + - time: .216666669 + value: -.00130938157 + inSlope: .00608661724 + outSlope: .00608661724 + tangentMode: 0 + - time: .233333334 + value: -.00120369857 + inSlope: .00648588594 + outSlope: .00648588594 + tangentMode: 0 + - time: .25 + value: -.00109318539 + inSlope: .00667703524 + outSlope: .00667703524 + tangentMode: 0 + - time: .266666681 + value: -.000981130637 + inSlope: .00668288767 + outSlope: .00668288767 + tangentMode: 0 + - time: .283333361 + value: -.000870422286 + inSlope: .00652829744 + outSlope: .00652829744 + tangentMode: 0 + - time: .300000042 + value: -.00076352054 + inSlope: .00623940164 + outSlope: .00623940164 + tangentMode: 0 + - time: .316666722 + value: -.000662442064 + inSlope: .00584283657 + outSlope: .00584283657 + tangentMode: 0 + - time: .333333403 + value: -.000568759162 + inSlope: .00536487205 + outSlope: .00536487205 + tangentMode: 0 + - time: .350000083 + value: -.00048361285 + inSlope: .00483061373 + outSlope: .00483061373 + tangentMode: 0 + - time: .366666764 + value: -.000407738582 + inSlope: .00426319567 + outSlope: .00426319567 + tangentMode: 0 + - time: .383333445 + value: -.000341506209 + inSlope: .00368292909 + outSlope: .00368292909 + tangentMode: 0 + - time: .400000125 + value: -.000284974172 + inSlope: .0031064963 + outSlope: .0031064963 + tangentMode: 0 + - time: .416666806 + value: -.00023795625 + inSlope: .0025461372 + outSlope: .0025461372 + tangentMode: 0 + - time: .433333486 + value: -.000200102862 + inSlope: .00200881017 + outSlope: .00200881017 + tangentMode: 0 + - time: .450000167 + value: -.00017099586 + inSlope: .00149538787 + outSlope: .00149538787 + tangentMode: 0 + - time: .466666847 + value: -.000150256557 + inSlope: .000999847543 + outSlope: .000999847543 + tangentMode: 0 + - time: .483333528 + value: -.000137667579 + inSlope: .000508450961 + outSlope: .000508450961 + tangentMode: 0 + - time: .5 + value: -.000133308233 + inSlope: .000261563837 + outSlope: .000261563837 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .983426571 + inSlope: .0047886367 + outSlope: .0047886367 + tangentMode: 0 + - time: .0166666675 + value: .983506382 + inSlope: .0089460602 + outSlope: .0089460602 + tangentMode: 0 + - time: .0333333351 + value: .983724773 + inSlope: .0169050675 + outSlope: .0169050675 + tangentMode: 0 + - time: .0500000045 + value: .984069884 + inSlope: .0241112709 + outSlope: .0241112709 + tangentMode: 0 + - time: .0666666701 + value: .984528482 + inSlope: .0304895677 + outSlope: .0304895677 + tangentMode: 0 + - time: .0833333358 + value: .985086203 + inSlope: .0359934606 + outSlope: .0359934606 + tangentMode: 0 + - time: .100000001 + value: .985728264 + inSlope: .0405961312 + outSlope: .0405961312 + tangentMode: 0 + - time: .116666667 + value: .986439407 + inSlope: .0442886278 + outSlope: .0442886278 + tangentMode: 0 + - time: .13333334 + value: .987204552 + inSlope: .0470817015 + outSlope: .0470817015 + tangentMode: 0 + - time: .150000006 + value: .988008797 + inSlope: .0490003861 + outSlope: .0490003861 + tangentMode: 0 + - time: .166666672 + value: .988837898 + inSlope: .0500839986 + outSlope: .0500839986 + tangentMode: 0 + - time: .183333337 + value: .989678264 + inSlope: .0503879823 + outSlope: .0503879823 + tangentMode: 0 + - time: .200000003 + value: .990517497 + inSlope: .049973134 + outSlope: .049973134 + tangentMode: 0 + - time: .216666669 + value: .991344035 + inSlope: .0489038266 + outSlope: .0489038266 + tangentMode: 0 + - time: .233333334 + value: .992147624 + inSlope: .0472623147 + outSlope: .0472623147 + tangentMode: 0 + - time: .25 + value: .992919445 + inSlope: .0451290458 + outSlope: .0451290458 + tangentMode: 0 + - time: .266666681 + value: .993651927 + inSlope: .0425862893 + outSlope: .0425862893 + tangentMode: 0 + - time: .283333361 + value: .994338989 + inSlope: .0397199057 + outSlope: .0397199057 + tangentMode: 0 + - time: .300000042 + value: .994975924 + inSlope: .0366139114 + outSlope: .0366139114 + tangentMode: 0 + - time: .316666722 + value: .995559454 + inSlope: .0333434045 + outSlope: .0333434045 + tangentMode: 0 + - time: .333333403 + value: .996087372 + inSlope: .0299852826 + outSlope: .0299852826 + tangentMode: 0 + - time: .350000083 + value: .996558964 + inSlope: .0266057029 + outSlope: .0266057029 + tangentMode: 0 + - time: .366666764 + value: .99697423 + inSlope: .0232583098 + outSlope: .0232583098 + tangentMode: 0 + - time: .383333445 + value: .997334242 + inSlope: .0199985337 + outSlope: .0199985337 + tangentMode: 0 + - time: .400000125 + value: .997640848 + inSlope: .0168585628 + outSlope: .0168585628 + tangentMode: 0 + - time: .416666806 + value: .997896194 + inSlope: .013849128 + outSlope: .013849128 + tangentMode: 0 + - time: .433333486 + value: .998102486 + inSlope: .0109720137 + outSlope: .0109720137 + tangentMode: 0 + - time: .450000167 + value: .998261929 + inSlope: .00821291655 + outSlope: .00821291655 + tangentMode: 0 + - time: .466666847 + value: .99837625 + inSlope: .00553249847 + outSlope: .00553249847 + tangentMode: 0 + - time: .483333528 + value: .998446345 + inSlope: .00286460621 + outSlope: .00286460621 + tangentMode: 0 + - time: .5 + value: .998471737 + inSlope: .00152351253 + outSlope: .00152351253 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.w + path: + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 20.8899994 + inSlope: -.429435194 + outSlope: -.429435194 + tangentMode: 0 + - time: .5 + value: 6.32999897 + inSlope: -.328417897 + outSlope: -.328417897 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .275525987 + inSlope: 12.5064259 + outSlope: 12.5064259 + tangentMode: 0 + - time: .5 + value: .275543213 + inSlope: -0 + outSlope: -0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -6.35692413e-05 + inSlope: 1.2665696e-06 + outSlope: 1.2665696e-06 + tangentMode: 0 + - time: .5 + value: -6.29359565e-05 + inSlope: 1.2665696e-06 + outSlope: 1.2665696e-06 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.z + path: + classID: 4 + script: {fileID: 0} + m_Events: [] diff --git a/Assets/Examples/Assets/Animations/Camera/FacilityRoom/Bomb.anim.meta b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/Bomb.anim.meta new file mode 100644 index 0000000..f068c26 --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/Bomb.anim.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 32cdd6073f163484882e7811b45a2e06 +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Animations/Camera/FacilityRoom/Default.anim b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/Default.anim new file mode 100644 index 0000000..9768a5b --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/Default.anim @@ -0,0 +1,220 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Default + serializedVersion: 4 + m_AnimationType: 2 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .181291059, y: .00236467342, z: -.000436445844, w: .983426571} + inSlope: {x: 0, y: 0, z: 0, w: 0} + outSlope: {x: 0, y: 0, z: 0, w: 0} + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_CompressedRotationCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .129999995, y: 1.34000003, z: -1.44000006} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - path: 0 + attribute: 1 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + - path: 0 + attribute: 2 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_StartTime: 0 + m_StopTime: 0 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -1.44000006 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1.34000003 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .129999995 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .181291059 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .00236467342 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -.000436445844 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .983426571 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.w + path: + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 20.8899994 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .275525987 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -6.35692413e-05 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.z + path: + classID: 4 + script: {fileID: 0} + m_Events: [] diff --git a/Assets/Examples/Assets/Animations/Camera/FacilityRoom/Default.anim.meta b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/Default.anim.meta new file mode 100644 index 0000000..81d6d27 --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/Default.anim.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 5d24d3c2ed7fc5548aa31c9178778312 +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Animations/Camera/FacilityRoom/DefaultAlarmClock.anim b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/DefaultAlarmClock.anim new file mode 100644 index 0000000..d02b154 --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/DefaultAlarmClock.anim @@ -0,0 +1,755 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: DefaultAlarmClock + serializedVersion: 4 + m_AnimationType: 2 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .0426739715, y: -.206895232, z: .00903260615, w: .97739023} + inSlope: {x: .0572897457, y: .09010344, z: .00795319676, w: .0164008141} + outSlope: {x: .0572897457, y: .09010344, z: .00795319676, w: .0164008141} + tangentMode: 122932860 + - time: .0166666675 + value: {x: .0436288007, y: -.205393508, z: .00916515943, w: .977663577} + inSlope: {x: .113299184, y: .174107999, z: .0154076135, w: .0310099106} + outSlope: {x: .113299184, y: .174107999, z: .0154076135, w: .0310099106} + tangentMode: 122726000 + - time: .0333333351 + value: {x: .0464506112, y: -.201091632, z: .00954619329, w: .978423893} + inSlope: {x: .219305664, y: .333014995, z: .0281329043, w: .0571328327} + outSlope: {x: .219305664, y: .333014995, z: .0281329043, w: .0571328327} + tangentMode: 123376112 + - time: .0500000045 + value: {x: .05093899, y: -.194293007, z: .010102923, w: .979568005} + inSlope: {x: .313328058, y: .47377333, z: .03600768, w: .0765287876} + outSlope: {x: .313328058, y: .47377333, z: .03600768, w: .0765287876} + tangentMode: 121991520 + - time: .0666666701 + value: {x: .0568948798, y: -.185299188, z: .0107464492, w: .980974853} + inSlope: {x: .39537698, y: .596405327, z: .0383558422, w: .0884664133} + outSlope: {x: .39537698, y: .596405327, z: .0383558422, w: .0884664133} + tangentMode: 121991520 + - time: .0833333358 + value: {x: .0641182214, y: -.174412832, z: .011381451, w: .982516885} + inSlope: {x: .465338588, y: .700796008, z: .035046082, w: .0928133801} + outSlope: {x: .465338588, y: .700796008, z: .035046082, w: .0928133801} + tangentMode: 121226344 + - time: .100000001 + value: {x: .0724061653, y: -.161939323, z: .0119146518, w: .984068632} + inSlope: {x: .523011327, y: .786735296, z: .0264192596, w: .0899326876} + outSlope: {x: .523011327, y: .786735296, z: .0264192596, w: .0899326876} + tangentMode: 121230176 + - time: .116666667 + value: {x: .0815519318, y: -.148188323, z: .0122620929, w: .985514641} + inSlope: {x: .56815213, y: .853959322, z: .0132158026, w: .0806325525} + outSlope: {x: .56815213, y: .853959322, z: .0132158026, w: .0806325525} + tangentMode: 121230176 + - time: .13333334 + value: {x: .0913445726, y: -.133474007, z: .0123551786, w: .986756384} + inSlope: {x: .600521922, y: .902204394, z: -.00349936238, w: .066073522} + outSlope: {x: .600521922, y: .902204394, z: -.00349936238, w: .066073522} + tangentMode: 121230176 + - time: .150000006 + value: {x: .101569332, y: -.118114837, z: .0121454475, w: .987717092} + inSlope: {x: .619925618, y: .931247115, z: -.0224144403, w: .0476753749} + outSlope: {x: .619925618, y: .931247115, z: -.0224144403, w: .0476753749} + tangentMode: 123376112 + - time: .166666672 + value: {x: .112008758, y: -.102432437, z: .0116080306, w: .988345563} + inSlope: {x: .626244903, y: .940939307, z: -.0420510918, w: .0270402469} + outSlope: {x: .626244903, y: .940939307, z: -.0420510918, w: .0270402469} + tangentMode: 123376112 + - time: .183333337 + value: {x: .12244416, y: -.0867501944, z: .0107437447, w: .988618433} + inSlope: {x: .619458675, y: .931229711, z: -.060847424, w: .00586509798} + outSlope: {x: .619458675, y: .931229711, z: -.060847424, w: .00586509798} + tangentMode: 123376112 + - time: .200000003 + value: {x: .132657379, y: -.0713914484, z: .00957978331, w: .988541067} + inSlope: {x: .59964788, y: .902171254, z: -.0772425383, w: -.0141513357} + outSlope: {x: .59964788, y: .902171254, z: -.0772425383, w: -.0141513357} + tangentMode: 123376112 + - time: .216666669 + value: {x: .142432421, y: -.056677822, z: .00816899352, w: .988146722} + inSlope: {x: .566986859, y: .85391283, z: -.08976008, w: -.0314140357} + outSlope: {x: .566986859, y: .85391283, z: -.08976008, w: -.0314140357} + tangentMode: 122794472 + - time: .233333334 + value: {x: .151556939, y: -.0429276899, z: .00658778101, w: .987493932} + inSlope: {x: .521722317, y: .786680043, z: -.0970908329, w: -.0444996394} + outSlope: {x: .521722317, y: .786680043, z: -.0970908329, w: -.0444996394} + tangentMode: 119562044 + - time: .25 + value: {x: .159823164, y: -.0304551553, z: .00493263267, w: .986663401} + inSlope: {x: .464134634, y: .700738192, z: -.0981729329, w: -.0522494093} + outSlope: {x: .464134634, y: .700738192, z: -.0981729329, w: -.0522494093} + tangentMode: 119562044 + - time: .266666681 + value: {x: .167028099, y: -.0195697416, z: .00331534888, w: .985752285} + inSlope: {x: .394496292, y: .596349716, z: -.0922679305, w: -.0538605005} + outSlope: {x: .394496292, y: .596349716, z: -.0922679305, w: -.0538605005} + tangentMode: 119562044 + - time: .283333361 + value: {x: .172973052, y: -.0105768135, z: .00185703253, w: .98486805} + inSlope: {x: .313023359, y: .473727435, z: -.0790347904, w: -.0489645787} + outSlope: {x: .313023359, y: .473727435, z: -.0790347904, w: -.0489645787} + tangentMode: 119562044 + - time: .300000042 + value: {x: .17746222, y: -.00377881387, z: .000680853729, w: .984120131} + inSlope: {x: .219826505, y: .332985878, z: -.0586016923, w: -.037699312} + outSlope: {x: .219826505, y: .332985878, z: -.0586016923, w: -.037699312} + tangentMode: 119562044 + - time: .316666722 + value: {x: .180300608, y: .000522724178, z: -9.63587809e-05, w: .983611405} + inSlope: {x: .114869632, y: .17410174, z: -.0316376537, w: -.0207853336} + outSlope: {x: .114869632, y: .17410174, z: -.0316376537, w: -.0207853336} + tangentMode: 119562044 + - time: .333333343 + value: {x: .181291208, y: .00202457677, z: -.000373734714, w: .983427286} + inSlope: {x: .0594361275, y: .0901114047, z: -.0166426003, w: -.0110471556} + outSlope: {x: .0594361275, y: .0901114047, z: -.0166426003, w: -.0110471556} + tangentMode: 119562044 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_CompressedRotationCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .129999995, y: 1.34000003, z: -1.25999999} + inSlope: {x: .00285970373, y: .0033543075, z: -.0434425101} + outSlope: {x: .00285970373, y: .0033543075, z: -.0434425101} + tangentMode: 1107296256 + - time: .333333343 + value: {x: .129999995, y: 1.34000003, z: -1.44000006} + inSlope: {x: -.000120099023, y: -.00413980568, z: 3.96068617e-06} + outSlope: {x: -.000120099023, y: -.00413980568, z: 3.96068617e-06} + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - path: 0 + attribute: 1 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + - path: 0 + attribute: 2 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_StartTime: 0 + m_StopTime: .333333343 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -1.25999999 + inSlope: -.0434425101 + outSlope: -.0434425101 + tangentMode: 0 + - time: .333333343 + value: -1.44000006 + inSlope: 3.96068617e-06 + outSlope: 3.96068617e-06 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1.34000003 + inSlope: .0033543075 + outSlope: .0033543075 + tangentMode: 0 + - time: .333333343 + value: 1.34000003 + inSlope: -.00413980568 + outSlope: -.00413980568 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .129999995 + inSlope: .00285970373 + outSlope: .00285970373 + tangentMode: 0 + - time: .333333343 + value: .129999995 + inSlope: -.000120099023 + outSlope: -.000120099023 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .0426739715 + inSlope: .0572897457 + outSlope: .0572897457 + tangentMode: 0 + - time: .0166666675 + value: .0436288007 + inSlope: .113299184 + outSlope: .113299184 + tangentMode: 0 + - time: .0333333351 + value: .0464506112 + inSlope: .219305664 + outSlope: .219305664 + tangentMode: 0 + - time: .0500000045 + value: .05093899 + inSlope: .313328058 + outSlope: .313328058 + tangentMode: 0 + - time: .0666666701 + value: .0568948798 + inSlope: .39537698 + outSlope: .39537698 + tangentMode: 0 + - time: .0833333358 + value: .0641182214 + inSlope: .465338588 + outSlope: .465338588 + tangentMode: 0 + - time: .100000001 + value: .0724061653 + inSlope: .523011327 + outSlope: .523011327 + tangentMode: 0 + - time: .116666667 + value: .0815519318 + inSlope: .56815213 + outSlope: .56815213 + tangentMode: 0 + - time: .13333334 + value: .0913445726 + inSlope: .600521922 + outSlope: .600521922 + tangentMode: 0 + - time: .150000006 + value: .101569332 + inSlope: .619925618 + outSlope: .619925618 + tangentMode: 0 + - time: .166666672 + value: .112008758 + inSlope: .626244903 + outSlope: .626244903 + tangentMode: 0 + - time: .183333337 + value: .12244416 + inSlope: .619458675 + outSlope: .619458675 + tangentMode: 0 + - time: .200000003 + value: .132657379 + inSlope: .59964788 + outSlope: .59964788 + tangentMode: 0 + - time: .216666669 + value: .142432421 + inSlope: .566986859 + outSlope: .566986859 + tangentMode: 0 + - time: .233333334 + value: .151556939 + inSlope: .521722317 + outSlope: .521722317 + tangentMode: 0 + - time: .25 + value: .159823164 + inSlope: .464134634 + outSlope: .464134634 + tangentMode: 0 + - time: .266666681 + value: .167028099 + inSlope: .394496292 + outSlope: .394496292 + tangentMode: 0 + - time: .283333361 + value: .172973052 + inSlope: .313023359 + outSlope: .313023359 + tangentMode: 0 + - time: .300000042 + value: .17746222 + inSlope: .219826505 + outSlope: .219826505 + tangentMode: 0 + - time: .316666722 + value: .180300608 + inSlope: .114869632 + outSlope: .114869632 + tangentMode: 0 + - time: .333333343 + value: .181291208 + inSlope: .0594361275 + outSlope: .0594361275 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -.206895232 + inSlope: .09010344 + outSlope: .09010344 + tangentMode: 0 + - time: .0166666675 + value: -.205393508 + inSlope: .174107999 + outSlope: .174107999 + tangentMode: 0 + - time: .0333333351 + value: -.201091632 + inSlope: .333014995 + outSlope: .333014995 + tangentMode: 0 + - time: .0500000045 + value: -.194293007 + inSlope: .47377333 + outSlope: .47377333 + tangentMode: 0 + - time: .0666666701 + value: -.185299188 + inSlope: .596405327 + outSlope: .596405327 + tangentMode: 0 + - time: .0833333358 + value: -.174412832 + inSlope: .700796008 + outSlope: .700796008 + tangentMode: 0 + - time: .100000001 + value: -.161939323 + inSlope: .786735296 + outSlope: .786735296 + tangentMode: 0 + - time: .116666667 + value: -.148188323 + inSlope: .853959322 + outSlope: .853959322 + tangentMode: 0 + - time: .13333334 + value: -.133474007 + inSlope: .902204394 + outSlope: .902204394 + tangentMode: 0 + - time: .150000006 + value: -.118114837 + inSlope: .931247115 + outSlope: .931247115 + tangentMode: 0 + - time: .166666672 + value: -.102432437 + inSlope: .940939307 + outSlope: .940939307 + tangentMode: 0 + - time: .183333337 + value: -.0867501944 + inSlope: .931229711 + outSlope: .931229711 + tangentMode: 0 + - time: .200000003 + value: -.0713914484 + inSlope: .902171254 + outSlope: .902171254 + tangentMode: 0 + - time: .216666669 + value: -.056677822 + inSlope: .85391283 + outSlope: .85391283 + tangentMode: 0 + - time: .233333334 + value: -.0429276899 + inSlope: .786680043 + outSlope: .786680043 + tangentMode: 0 + - time: .25 + value: -.0304551553 + inSlope: .700738192 + outSlope: .700738192 + tangentMode: 0 + - time: .266666681 + value: -.0195697416 + inSlope: .596349716 + outSlope: .596349716 + tangentMode: 0 + - time: .283333361 + value: -.0105768135 + inSlope: .473727435 + outSlope: .473727435 + tangentMode: 0 + - time: .300000042 + value: -.00377881387 + inSlope: .332985878 + outSlope: .332985878 + tangentMode: 0 + - time: .316666722 + value: .000522724178 + inSlope: .17410174 + outSlope: .17410174 + tangentMode: 0 + - time: .333333343 + value: .00202457677 + inSlope: .0901114047 + outSlope: .0901114047 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .00903260615 + inSlope: .00795319676 + outSlope: .00795319676 + tangentMode: 0 + - time: .0166666675 + value: .00916515943 + inSlope: .0154076135 + outSlope: .0154076135 + tangentMode: 0 + - time: .0333333351 + value: .00954619329 + inSlope: .0281329043 + outSlope: .0281329043 + tangentMode: 0 + - time: .0500000045 + value: .010102923 + inSlope: .03600768 + outSlope: .03600768 + tangentMode: 0 + - time: .0666666701 + value: .0107464492 + inSlope: .0383558422 + outSlope: .0383558422 + tangentMode: 0 + - time: .0833333358 + value: .011381451 + inSlope: .035046082 + outSlope: .035046082 + tangentMode: 0 + - time: .100000001 + value: .0119146518 + inSlope: .0264192596 + outSlope: .0264192596 + tangentMode: 0 + - time: .116666667 + value: .0122620929 + inSlope: .0132158026 + outSlope: .0132158026 + tangentMode: 0 + - time: .13333334 + value: .0123551786 + inSlope: -.00349936238 + outSlope: -.00349936238 + tangentMode: 0 + - time: .150000006 + value: .0121454475 + inSlope: -.0224144403 + outSlope: -.0224144403 + tangentMode: 0 + - time: .166666672 + value: .0116080306 + inSlope: -.0420510918 + outSlope: -.0420510918 + tangentMode: 0 + - time: .183333337 + value: .0107437447 + inSlope: -.060847424 + outSlope: -.060847424 + tangentMode: 0 + - time: .200000003 + value: .00957978331 + inSlope: -.0772425383 + outSlope: -.0772425383 + tangentMode: 0 + - time: .216666669 + value: .00816899352 + inSlope: -.08976008 + outSlope: -.08976008 + tangentMode: 0 + - time: .233333334 + value: .00658778101 + inSlope: -.0970908329 + outSlope: -.0970908329 + tangentMode: 0 + - time: .25 + value: .00493263267 + inSlope: -.0981729329 + outSlope: -.0981729329 + tangentMode: 0 + - time: .266666681 + value: .00331534888 + inSlope: -.0922679305 + outSlope: -.0922679305 + tangentMode: 0 + - time: .283333361 + value: .00185703253 + inSlope: -.0790347904 + outSlope: -.0790347904 + tangentMode: 0 + - time: .300000042 + value: .000680853729 + inSlope: -.0586016923 + outSlope: -.0586016923 + tangentMode: 0 + - time: .316666722 + value: -9.63587809e-05 + inSlope: -.0316376537 + outSlope: -.0316376537 + tangentMode: 0 + - time: .333333343 + value: -.000373734714 + inSlope: -.0166426003 + outSlope: -.0166426003 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .97739023 + inSlope: .0164008141 + outSlope: .0164008141 + tangentMode: 0 + - time: .0166666675 + value: .977663577 + inSlope: .0310099106 + outSlope: .0310099106 + tangentMode: 0 + - time: .0333333351 + value: .978423893 + inSlope: .0571328327 + outSlope: .0571328327 + tangentMode: 0 + - time: .0500000045 + value: .979568005 + inSlope: .0765287876 + outSlope: .0765287876 + tangentMode: 0 + - time: .0666666701 + value: .980974853 + inSlope: .0884664133 + outSlope: .0884664133 + tangentMode: 0 + - time: .0833333358 + value: .982516885 + inSlope: .0928133801 + outSlope: .0928133801 + tangentMode: 0 + - time: .100000001 + value: .984068632 + inSlope: .0899326876 + outSlope: .0899326876 + tangentMode: 0 + - time: .116666667 + value: .985514641 + inSlope: .0806325525 + outSlope: .0806325525 + tangentMode: 0 + - time: .13333334 + value: .986756384 + inSlope: .066073522 + outSlope: .066073522 + tangentMode: 0 + - time: .150000006 + value: .987717092 + inSlope: .0476753749 + outSlope: .0476753749 + tangentMode: 0 + - time: .166666672 + value: .988345563 + inSlope: .0270402469 + outSlope: .0270402469 + tangentMode: 0 + - time: .183333337 + value: .988618433 + inSlope: .00586509798 + outSlope: .00586509798 + tangentMode: 0 + - time: .200000003 + value: .988541067 + inSlope: -.0141513357 + outSlope: -.0141513357 + tangentMode: 0 + - time: .216666669 + value: .988146722 + inSlope: -.0314140357 + outSlope: -.0314140357 + tangentMode: 0 + - time: .233333334 + value: .987493932 + inSlope: -.0444996394 + outSlope: -.0444996394 + tangentMode: 0 + - time: .25 + value: .986663401 + inSlope: -.0522494093 + outSlope: -.0522494093 + tangentMode: 0 + - time: .266666681 + value: .985752285 + inSlope: -.0538605005 + outSlope: -.0538605005 + tangentMode: 0 + - time: .283333361 + value: .98486805 + inSlope: -.0489645787 + outSlope: -.0489645787 + tangentMode: 0 + - time: .300000042 + value: .984120131 + inSlope: -.037699312 + outSlope: -.037699312 + tangentMode: 0 + - time: .316666722 + value: .983611405 + inSlope: -.0207853336 + outSlope: -.0207853336 + tangentMode: 0 + - time: .333333343 + value: .983427286 + inSlope: -.0110471556 + outSlope: -.0110471556 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.w + path: + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 5.0000062 + inSlope: -.325761378 + outSlope: -.325761378 + tangentMode: 0 + - time: .333333343 + value: 20.8900013 + inSlope: 9.70926885e-06 + outSlope: 9.70926885e-06 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -23.9040222 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: .333333343 + value: .235897377 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -7.58475871e-05 + inSlope: .000240336507 + outSlope: .000240336507 + tangentMode: 0 + - time: .333333343 + value: -6.16880061e-05 + inSlope: .000240336507 + outSlope: .000240336507 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.z + path: + classID: 4 + script: {fileID: 0} + m_Events: [] diff --git a/Assets/Examples/Assets/Animations/Camera/FacilityRoom/DefaultAlarmClock.anim.meta b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/DefaultAlarmClock.anim.meta new file mode 100644 index 0000000..2c6f5e5 --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/DefaultAlarmClock.anim.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 9784e1495ec7105428dffd708bc794d1 +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Animations/Camera/FacilityRoom/DefaultBomb.anim b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/DefaultBomb.anim new file mode 100644 index 0000000..9520360 --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/DefaultBomb.anim @@ -0,0 +1,755 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: DefaultBomb + serializedVersion: 4 + m_AnimationType: 2 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .0552114137, y: .00240092794, z: -.000133308204, w: .998471737} + inSlope: {x: .052623596, y: -7.1804966e-06, z: -.00012474542, w: -.00293254829} + outSlope: {x: .052623596, y: -7.1804966e-06, z: -.00012474542, w: -.00293254829} + tangentMode: 0 + - time: .0166666675 + value: {x: .0560884736, y: .00240080827, z: -.000135387294, w: .998422861} + inSlope: {x: .104257792, y: -1.44517971e-05, z: -.000249182165, w: -.00594735099} + outSlope: {x: .104257792, y: -1.44517971e-05, z: -.000249182165, w: -.00594735099} + tangentMode: 0 + - time: .0333333351 + value: {x: .0586866736, y: .00240044622, z: -.000141614277, w: .998273492} + inSlope: {x: .201774389, y: -2.90921853e-05, z: -.000484194956, w: -.0120162945} + outSlope: {x: .201774389, y: -2.90921853e-05, z: -.000484194956, w: -.0120162945} + tangentMode: 1093664768 + - time: .0500000045 + value: {x: .0628142878, y: .00239983853, z: -.000151527129, w: .998022318} + inSlope: {x: .287776887, y: -4.42494638e-05, z: -.000691457186, w: -.0183051825} + outSlope: {x: .287776887, y: -4.42494638e-05, z: -.000691457186, w: -.0183051825} + tangentMode: 1093664768 + - time: .0666666701 + value: {x: .0682792366, y: .00239897124, z: -.000164662852, w: .997663319} + inSlope: {x: .362245083, y: -6.03706649e-05, z: -.000870918622, w: -.0250017662} + outSlope: {x: .362245083, y: -6.03706649e-05, z: -.000870918622, w: -.0250017662} + tangentMode: 1093664768 + - time: .0833333358 + value: {x: .0748891234, y: .00239782617, z: -.000180557749, w: .997188926} + inSlope: {x: .425164133, y: -7.75465815e-05, z: -.00102254376, w: -.0321346559} + outSlope: {x: .425164133, y: -7.75465815e-05, z: -.00102254376, w: -.0321346559} + tangentMode: 1093664768 + - time: .100000001 + value: {x: .0824513733, y: .00239638635, z: -.000198747643, w: .996592164} + inSlope: {x: .47652486, y: -9.55327487e-05, z: -.00114631001, w: -.0396090783} + outSlope: {x: .47652486, y: -9.55327487e-05, z: -.00114631001, w: -.0396090783} + tangentMode: 1093664768 + - time: .116666667 + value: {x: .0907732844, y: .00239464175, z: -.00021876808, w: .995868623} + inSlope: {x: .51632762, y: -.000113798291, z: -.00124222017, w: -.0472140238} + outSlope: {x: .51632762, y: -.000113798291, z: -.00124222017, w: -.0472140238} + tangentMode: 1102053376 + - time: .13333334 + value: {x: .0996622965, y: .00239259307, z: -.000240154986, w: .995018363} + inSlope: {x: .544582903, y: -.000131665714, z: -.00131029903, w: -.0546491072} + outSlope: {x: .544582903, y: -.000131665714, z: -.00131029903, w: -.0546491072} + tangentMode: 1102053376 + - time: .150000006 + value: {x: .10892605, y: .00239025289, z: -.000262444722, w: .994046986} + inSlope: {x: .561310649, y: -.000148268897, z: -.00135059492, w: -.0615602806} + outSlope: {x: .561310649, y: -.000148268897, z: -.00135059492, w: -.0615602806} + tangentMode: 1102053376 + - time: .166666672 + value: {x: .118372649, y: .00238765078, z: -.000285174814, w: .992966354} + inSlope: {x: .566545367, y: -.000162629891, z: -.00136319525, w: -.0675398186} + outSlope: {x: .566545367, y: -.000162629891, z: -.00136319525, w: -.0675398186} + tangentMode: 1107558400 + - time: .183333337 + value: {x: .127810895, y: .0023848319, z: -.000307884562, w: .991795659} + inSlope: {x: .560334563, y: -.000173721943, z: -.00134821353, w: -.0721567944} + outSlope: {x: .560334563, y: -.000173721943, z: -.00134821353, w: -.0721567944} + tangentMode: 1107558400 + - time: .200000003 + value: {x: .137050465, y: .00238186005, z: -.000330115261, w: .990561128} + inSlope: {x: .542731166, y: -.00018049033, z: -.00130577921, w: -.0749838427} + outSlope: {x: .542731166, y: -.00018049033, z: -.00130577921, w: -.0749838427} + tangentMode: 1107558400 + - time: .216666669 + value: {x: .145901933, y: .00237881555, z: -.000351410534, w: .989296198} + inSlope: {x: .513798654, y: -.000182020027, z: -.0012360462, w: -.0756222084} + outSlope: {x: .513798654, y: -.000182020027, z: -.0012360462, w: -.0756222084} + tangentMode: 1107558400 + - time: .233333334 + value: {x: .154177085, y: .00237579271, z: -.000371316797, w: .988040388} + inSlope: {x: .47360304, y: -.000177444905, z: -.00113917328, w: -.07371784} + outSlope: {x: .47360304, y: -.000177444905, z: -.00113917328, w: -.07371784} + tangentMode: 1107558400 + - time: .25 + value: {x: .1616887, y: .00237290072, z: -.000389382971, w: .986838937} + inSlope: {x: .422201902, y: -.000166024489, z: -.00101530389, w: -.0689703003} + outSlope: {x: .422201902, y: -.000166024489, z: -.00101530389, w: -.0689703003} + tangentMode: 1107558400 + - time: .266666681 + value: {x: .168250486, y: .00237025856, z: -.000405160274, w: .985741377} + inSlope: {x: .35964638, y: -.000147297862, z: -.00086456025, w: -.0611739829} + outSlope: {x: .35964638, y: -.000147297862, z: -.00086456025, w: -.0611739829} + tangentMode: 1110441984 + - time: .283333361 + value: {x: .173676923, y: .00236799079, z: -.000418201671, w: .984799802} + inSlope: {x: .285969287, y: -.00012103458, z: -.000687020365, w: -.050235942} + outSlope: {x: .285969287, y: -.00012103458, z: -.000687020365, w: -.050235942} + tangentMode: 1110441984 + - time: .300000042 + value: {x: .177782804, y: .00236622407, z: -.000428060972, w: .984066844} + inSlope: {x: .201177567, y: -8.72974488e-05, z: -.000482702046, w: -.0361865461} + outSlope: {x: .201177567, y: -8.72974488e-05, z: -.000482702046, w: -.0361865461} + tangentMode: 1110441984 + - time: .316666722 + value: {x: .180382848, y: .00236508087, z: -.000434291753, w: .983593583} + inSlope: {x: .105247654, y: -4.65195662e-05, z: -.000251546153, w: -.0192081947} + outSlope: {x: .105247654, y: -4.65195662e-05, z: -.000251546153, w: -.0192081947} + tangentMode: 1110441984 + - time: .333333343 + value: {x: .181291059, y: .00236467342, z: -.000436445844, w: .983426571} + inSlope: {x: .0544928014, y: -2.44472849e-05, z: -.000129245804, w: -.0100207608} + outSlope: {x: .0544928014, y: -2.44472849e-05, z: -.000129245804, w: -.0100207608} + tangentMode: 1110441984 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_CompressedRotationCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .0900000036, y: 1.16999996, z: -1.01999998} + inSlope: {x: .00285970373, y: .0033543075, z: -.0434425101} + outSlope: {x: .00285970373, y: .0033543075, z: -.0434425101} + tangentMode: 123304212 + - time: .333333343 + value: {x: .129999995, y: 1.34000003, z: -1.44000006} + inSlope: {x: -.000120099023, y: -.00413980568, z: 3.96068617e-06} + outSlope: {x: -.000120099023, y: -.00413980568, z: 3.96068617e-06} + tangentMode: 1065353217 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - path: 0 + attribute: 1 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + - path: 0 + attribute: 2 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_StartTime: 0 + m_StopTime: .333333343 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -1.01999998 + inSlope: -.0434425101 + outSlope: -.0434425101 + tangentMode: 0 + - time: .333333343 + value: -1.44000006 + inSlope: 3.96068617e-06 + outSlope: 3.96068617e-06 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1.16999996 + inSlope: .0033543075 + outSlope: .0033543075 + tangentMode: 0 + - time: .333333343 + value: 1.34000003 + inSlope: -.00413980568 + outSlope: -.00413980568 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .0900000036 + inSlope: .00285970373 + outSlope: .00285970373 + tangentMode: 0 + - time: .333333343 + value: .129999995 + inSlope: -.000120099023 + outSlope: -.000120099023 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .0552114137 + inSlope: .052623596 + outSlope: .052623596 + tangentMode: 0 + - time: .0166666675 + value: .0560884736 + inSlope: .104257792 + outSlope: .104257792 + tangentMode: 0 + - time: .0333333351 + value: .0586866736 + inSlope: .201774389 + outSlope: .201774389 + tangentMode: 0 + - time: .0500000045 + value: .0628142878 + inSlope: .287776887 + outSlope: .287776887 + tangentMode: 0 + - time: .0666666701 + value: .0682792366 + inSlope: .362245083 + outSlope: .362245083 + tangentMode: 0 + - time: .0833333358 + value: .0748891234 + inSlope: .425164133 + outSlope: .425164133 + tangentMode: 0 + - time: .100000001 + value: .0824513733 + inSlope: .47652486 + outSlope: .47652486 + tangentMode: 0 + - time: .116666667 + value: .0907732844 + inSlope: .51632762 + outSlope: .51632762 + tangentMode: 0 + - time: .13333334 + value: .0996622965 + inSlope: .544582903 + outSlope: .544582903 + tangentMode: 0 + - time: .150000006 + value: .10892605 + inSlope: .561310649 + outSlope: .561310649 + tangentMode: 0 + - time: .166666672 + value: .118372649 + inSlope: .566545367 + outSlope: .566545367 + tangentMode: 0 + - time: .183333337 + value: .127810895 + inSlope: .560334563 + outSlope: .560334563 + tangentMode: 0 + - time: .200000003 + value: .137050465 + inSlope: .542731166 + outSlope: .542731166 + tangentMode: 0 + - time: .216666669 + value: .145901933 + inSlope: .513798654 + outSlope: .513798654 + tangentMode: 0 + - time: .233333334 + value: .154177085 + inSlope: .47360304 + outSlope: .47360304 + tangentMode: 0 + - time: .25 + value: .1616887 + inSlope: .422201902 + outSlope: .422201902 + tangentMode: 0 + - time: .266666681 + value: .168250486 + inSlope: .35964638 + outSlope: .35964638 + tangentMode: 0 + - time: .283333361 + value: .173676923 + inSlope: .285969287 + outSlope: .285969287 + tangentMode: 0 + - time: .300000042 + value: .177782804 + inSlope: .201177567 + outSlope: .201177567 + tangentMode: 0 + - time: .316666722 + value: .180382848 + inSlope: .105247654 + outSlope: .105247654 + tangentMode: 0 + - time: .333333343 + value: .181291059 + inSlope: .0544928014 + outSlope: .0544928014 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .00240092794 + inSlope: -7.1804966e-06 + outSlope: -7.1804966e-06 + tangentMode: 0 + - time: .0166666675 + value: .00240080827 + inSlope: -1.44517971e-05 + outSlope: -1.44517971e-05 + tangentMode: 0 + - time: .0333333351 + value: .00240044622 + inSlope: -2.90921853e-05 + outSlope: -2.90921853e-05 + tangentMode: 0 + - time: .0500000045 + value: .00239983853 + inSlope: -4.42494638e-05 + outSlope: -4.42494638e-05 + tangentMode: 0 + - time: .0666666701 + value: .00239897124 + inSlope: -6.03706649e-05 + outSlope: -6.03706649e-05 + tangentMode: 0 + - time: .0833333358 + value: .00239782617 + inSlope: -7.75465815e-05 + outSlope: -7.75465815e-05 + tangentMode: 0 + - time: .100000001 + value: .00239638635 + inSlope: -9.55327487e-05 + outSlope: -9.55327487e-05 + tangentMode: 0 + - time: .116666667 + value: .00239464175 + inSlope: -.000113798291 + outSlope: -.000113798291 + tangentMode: 0 + - time: .13333334 + value: .00239259307 + inSlope: -.000131665714 + outSlope: -.000131665714 + tangentMode: 0 + - time: .150000006 + value: .00239025289 + inSlope: -.000148268897 + outSlope: -.000148268897 + tangentMode: 0 + - time: .166666672 + value: .00238765078 + inSlope: -.000162629891 + outSlope: -.000162629891 + tangentMode: 0 + - time: .183333337 + value: .0023848319 + inSlope: -.000173721943 + outSlope: -.000173721943 + tangentMode: 0 + - time: .200000003 + value: .00238186005 + inSlope: -.00018049033 + outSlope: -.00018049033 + tangentMode: 0 + - time: .216666669 + value: .00237881555 + inSlope: -.000182020027 + outSlope: -.000182020027 + tangentMode: 0 + - time: .233333334 + value: .00237579271 + inSlope: -.000177444905 + outSlope: -.000177444905 + tangentMode: 0 + - time: .25 + value: .00237290072 + inSlope: -.000166024489 + outSlope: -.000166024489 + tangentMode: 0 + - time: .266666681 + value: .00237025856 + inSlope: -.000147297862 + outSlope: -.000147297862 + tangentMode: 0 + - time: .283333361 + value: .00236799079 + inSlope: -.00012103458 + outSlope: -.00012103458 + tangentMode: 0 + - time: .300000042 + value: .00236622407 + inSlope: -8.72974488e-05 + outSlope: -8.72974488e-05 + tangentMode: 0 + - time: .316666722 + value: .00236508087 + inSlope: -4.65195662e-05 + outSlope: -4.65195662e-05 + tangentMode: 0 + - time: .333333343 + value: .00236467342 + inSlope: -2.44472849e-05 + outSlope: -2.44472849e-05 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -.000133308204 + inSlope: -.00012474542 + outSlope: -.00012474542 + tangentMode: 0 + - time: .0166666675 + value: -.000135387294 + inSlope: -.000249182165 + outSlope: -.000249182165 + tangentMode: 0 + - time: .0333333351 + value: -.000141614277 + inSlope: -.000484194956 + outSlope: -.000484194956 + tangentMode: 0 + - time: .0500000045 + value: -.000151527129 + inSlope: -.000691457186 + outSlope: -.000691457186 + tangentMode: 0 + - time: .0666666701 + value: -.000164662852 + inSlope: -.000870918622 + outSlope: -.000870918622 + tangentMode: 0 + - time: .0833333358 + value: -.000180557749 + inSlope: -.00102254376 + outSlope: -.00102254376 + tangentMode: 0 + - time: .100000001 + value: -.000198747643 + inSlope: -.00114631001 + outSlope: -.00114631001 + tangentMode: 0 + - time: .116666667 + value: -.00021876808 + inSlope: -.00124222017 + outSlope: -.00124222017 + tangentMode: 0 + - time: .13333334 + value: -.000240154986 + inSlope: -.00131029903 + outSlope: -.00131029903 + tangentMode: 0 + - time: .150000006 + value: -.000262444722 + inSlope: -.00135059492 + outSlope: -.00135059492 + tangentMode: 0 + - time: .166666672 + value: -.000285174814 + inSlope: -.00136319525 + outSlope: -.00136319525 + tangentMode: 0 + - time: .183333337 + value: -.000307884562 + inSlope: -.00134821353 + outSlope: -.00134821353 + tangentMode: 0 + - time: .200000003 + value: -.000330115261 + inSlope: -.00130577921 + outSlope: -.00130577921 + tangentMode: 0 + - time: .216666669 + value: -.000351410534 + inSlope: -.0012360462 + outSlope: -.0012360462 + tangentMode: 0 + - time: .233333334 + value: -.000371316797 + inSlope: -.00113917328 + outSlope: -.00113917328 + tangentMode: 0 + - time: .25 + value: -.000389382971 + inSlope: -.00101530389 + outSlope: -.00101530389 + tangentMode: 0 + - time: .266666681 + value: -.000405160274 + inSlope: -.00086456025 + outSlope: -.00086456025 + tangentMode: 0 + - time: .283333361 + value: -.000418201671 + inSlope: -.000687020365 + outSlope: -.000687020365 + tangentMode: 0 + - time: .300000042 + value: -.000428060972 + inSlope: -.000482702046 + outSlope: -.000482702046 + tangentMode: 0 + - time: .316666722 + value: -.000434291753 + inSlope: -.000251546153 + outSlope: -.000251546153 + tangentMode: 0 + - time: .333333343 + value: -.000436445844 + inSlope: -.000129245804 + outSlope: -.000129245804 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .998471737 + inSlope: -.00293254829 + outSlope: -.00293254829 + tangentMode: 0 + - time: .0166666675 + value: .998422861 + inSlope: -.00594735099 + outSlope: -.00594735099 + tangentMode: 0 + - time: .0333333351 + value: .998273492 + inSlope: -.0120162945 + outSlope: -.0120162945 + tangentMode: 0 + - time: .0500000045 + value: .998022318 + inSlope: -.0183051825 + outSlope: -.0183051825 + tangentMode: 0 + - time: .0666666701 + value: .997663319 + inSlope: -.0250017662 + outSlope: -.0250017662 + tangentMode: 0 + - time: .0833333358 + value: .997188926 + inSlope: -.0321346559 + outSlope: -.0321346559 + tangentMode: 0 + - time: .100000001 + value: .996592164 + inSlope: -.0396090783 + outSlope: -.0396090783 + tangentMode: 0 + - time: .116666667 + value: .995868623 + inSlope: -.0472140238 + outSlope: -.0472140238 + tangentMode: 0 + - time: .13333334 + value: .995018363 + inSlope: -.0546491072 + outSlope: -.0546491072 + tangentMode: 0 + - time: .150000006 + value: .994046986 + inSlope: -.0615602806 + outSlope: -.0615602806 + tangentMode: 0 + - time: .166666672 + value: .992966354 + inSlope: -.0675398186 + outSlope: -.0675398186 + tangentMode: 0 + - time: .183333337 + value: .991795659 + inSlope: -.0721567944 + outSlope: -.0721567944 + tangentMode: 0 + - time: .200000003 + value: .990561128 + inSlope: -.0749838427 + outSlope: -.0749838427 + tangentMode: 0 + - time: .216666669 + value: .989296198 + inSlope: -.0756222084 + outSlope: -.0756222084 + tangentMode: 0 + - time: .233333334 + value: .988040388 + inSlope: -.07371784 + outSlope: -.07371784 + tangentMode: 0 + - time: .25 + value: .986838937 + inSlope: -.0689703003 + outSlope: -.0689703003 + tangentMode: 0 + - time: .266666681 + value: .985741377 + inSlope: -.0611739829 + outSlope: -.0611739829 + tangentMode: 0 + - time: .283333361 + value: .984799802 + inSlope: -.050235942 + outSlope: -.050235942 + tangentMode: 0 + - time: .300000042 + value: .984066844 + inSlope: -.0361865461 + outSlope: -.0361865461 + tangentMode: 0 + - time: .316666722 + value: .983593583 + inSlope: -.0192081947 + outSlope: -.0192081947 + tangentMode: 0 + - time: .333333343 + value: .983426571 + inSlope: -.0100207608 + outSlope: -.0100207608 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.w + path: + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 6.32999897 + inSlope: -.325761378 + outSlope: -.325761378 + tangentMode: 0 + - time: .333333343 + value: 20.8899994 + inSlope: 9.70926885e-06 + outSlope: 9.70926885e-06 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .275543183 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: .333333343 + value: .275525987 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -6.29342758e-05 + inSlope: .000240336507 + outSlope: .000240336507 + tangentMode: 0 + - time: .333333343 + value: -6.35692413e-05 + inSlope: .000240336507 + outSlope: .000240336507 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.z + path: + classID: 4 + script: {fileID: 0} + m_Events: [] diff --git a/Assets/Examples/Assets/Animations/Camera/FacilityRoom/DefaultBomb.anim.meta b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/DefaultBomb.anim.meta new file mode 100644 index 0000000..c37674a --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/DefaultBomb.anim.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 8c113afe105152e4f9cf413ac64f4a14 +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Animations/Camera/FacilityRoom/DefaultDossier.anim b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/DefaultDossier.anim new file mode 100644 index 0000000..3efd4ed --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/DefaultDossier.anim @@ -0,0 +1,755 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: DefaultDossier + serializedVersion: 4 + m_AnimationType: 2 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .134455919, y: .460436851, z: -.0707861781, w: .874590635} + inSlope: {x: .0238940101, y: -.184346423, z: .0234827381, w: .0948572084} + outSlope: {x: .0238940101, y: -.184346423, z: .0234827381, w: .0948572084} + tangentMode: 0 + - time: .0166666675 + value: {x: .134854153, y: .45736441, z: -.0703947991, w: .876171589} + inSlope: {x: .0482895933, y: -.35705924, z: .0444732606, w: .181015134} + outSlope: {x: .0482895933, y: -.35705924, z: .0444732606, w: .181015134} + tangentMode: 0 + - time: .0333333351 + value: {x: .136065573, y: .448534876, z: -.0693037361, w: .880624473} + inSlope: {x: .0939224511, y: -.685655713, z: .0850827917, w: .338864893} + outSlope: {x: .0939224511, y: -.685655713, z: .0850827917, w: .338864893} + tangentMode: 1093664768 + - time: .0500000045 + value: {x: .137984902, y: .434509218, z: -.0675587058, w: .887467086} + inSlope: {x: .133048743, y: -.981266499, z: .123289078, w: .465989113} + outSlope: {x: .133048743, y: -.981266499, z: .123289078, w: .465989113} + tangentMode: 1093664768 + - time: .0666666701 + value: {x: .140500531, y: .415825993, z: -.0651941001, w: .896157444} + inSlope: {x: .165348366, y: -1.24459076, z: .159547642, w: .559828937} + outSlope: {x: .165348366, y: -1.24459076, z: .159547642, w: .559828937} + tangentMode: 1093664768 + - time: .0833333358 + value: {x: .143496513, y: .393022865, z: -.0622404516, w: .906128049} + inSlope: {x: .190625057, y: -1.47516775, z: .193899691, w: .619722664} + outSlope: {x: .190625057, y: -1.47516775, z: .193899691, w: .619722664} + tangentMode: 1093664768 + - time: .100000001 + value: {x: .146854699, y: .36665374, z: -.0587307774, w: .916814864} + inSlope: {x: .208820269, y: -1.6716404, z: .226033688, w: .646678865} + outSlope: {x: .208820269, y: -1.6716404, z: .226033688, w: .646678865} + tangentMode: 1093664768 + - time: .116666667 + value: {x: .150457188, y: .337301522, z: -.0547059961, w: .927684009} + inSlope: {x: .220022023, y: -1.83204412, z: .255349278, w: .64318645} + outSlope: {x: .220022023, y: -1.83204412, z: .255349278, w: .64318645} + tangentMode: 1102053376 + - time: .13333334 + value: {x: .154188767, y: .305585593, z: -.0502191335, w: .938254416} + inSlope: {x: .224487454, y: -1.95412135, z: .281028181, w: .612991929} + outSlope: {x: .224487454, y: -1.95412135, z: .281028181, w: .612991929} + tangentMode: 1102053376 + - time: .150000006 + value: {x: .157940105, y: .272164136, z: -.0453383885, w: .948117077} + inSlope: {x: .222650632, y: -2.03560066, z: .302106619, w: .560871422} + outSlope: {x: .222650632, y: -2.03560066, z: .302106619, w: .560871422} + tangentMode: 1102053376 + - time: .166666672 + value: {x: .161610454, y: .237732247, z: -.0401489139, w: .956950128} + inSlope: {x: .215116754, y: -2.07443428, z: .317548752, w: .49234277} + outSlope: {x: .215116754, y: -2.07443428, z: .317548752, w: .49234277} + tangentMode: 1107558400 + - time: .183333337 + value: {x: .165110663, y: .203016326, z: -.0347534306, w: .964528501} + inSlope: {x: .202648506, y: -2.06899762, z: .326318026, w: .413360626} + outSlope: {x: .202648506, y: -2.06899762, z: .326318026, w: .413360626} + tangentMode: 1107558400 + - time: .200000003 + value: {x: .168365404, y: .168765664, z: -.0292716473, w: .970728815} + inSlope: {x: .186129674, y: -2.01819396, z: .327440351, w: .330011874} + outSlope: {x: .186129674, y: -2.01819396, z: .327440351, w: .330011874} + tangentMode: 1107558400 + - time: .216666669 + value: {x: .171314985, y: .135743201, z: -.0238387529, w: .975528896} + inSlope: {x: .166512445, y: -1.92149687, z: .320061088, w: .248149067} + outSlope: {x: .166512445, y: -1.92149687, z: .320061088, w: .248149067} + tangentMode: 1107558400 + - time: .233333334 + value: {x: .173915818, y: .104715772, z: -.0186029449, w: .979000449} + inSlope: {x: .144737378, y: -1.77891243, z: .303490043, w: .173023954} + outSlope: {x: .144737378, y: -1.77891243, z: .303490043, w: .173023954} + tangentMode: 1107558400 + - time: .25 + value: {x: .176139563, y: .0764461234, z: -.0137224188, w: .98129636} + inSlope: {x: .12166407, y: -1.59086776, z: .277230054, w: .108969182} + outSlope: {x: .12166407, y: -1.59086776, z: .277230054, w: .108969182} + tangentMode: 1107558400 + - time: .266666681 + value: {x: .177971289, y: .0516868308, z: -.0093619395, w: .982632756} + inSlope: {x: .097976543, y: -1.35806262, z: .240997344, w: .059047889} + outSlope: {x: .097976543, y: -1.35806262, z: .240997344, w: .059047889} + tangentMode: 1110441984 + - time: .283333361 + value: {x: .179405451, y: .0311773326, z: -.00568916695, w: .983264625} + inSlope: {x: .0740874708, y: -1.08128548, z: .19473207, w: .0247353129} + outSlope: {x: .0740874708, y: -1.08128548, z: .19473207, w: .0247353129} + tangentMode: 1110441984 + - time: .300000042 + value: {x: .180440873, y: .0156439543, z: -.00287086493, w: .983457267} + inSlope: {x: .0500580221, y: -.761234462, z: .138605565, w: .00561475288} + outSlope: {x: .0500580221, y: -.761234462, z: .138605565, w: .00561475288} + tangentMode: 1110441984 + - time: .316666722 + value: {x: .181074053, y: .00580282975, z: -.00106897741, w: .983451784} + inSlope: {x: .0255055726, y: -.398378462, z: .0730325803, w: -.000920893741} + outSlope: {x: .0255055726, y: -.398378462, z: .0730325803, w: -.000920893741} + tangentMode: 1110441984 + - time: .333333343 + value: {x: .181291059, y: .00236467342, z: -.000436445844, w: .983426571} + inSlope: {x: .013020372, y: -.206289947, z: .0379519984, w: -.00151277008} + outSlope: {x: .013020372, y: -.206289947, z: .0379519984, w: -.00151277008} + tangentMode: 1110441984 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_CompressedRotationCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .230000004, y: 1.24000001, z: -.850000024} + inSlope: {x: .00285970373, y: .0033543075, z: -.0434425101} + outSlope: {x: .00285970373, y: .0033543075, z: -.0434425101} + tangentMode: 123304212 + - time: .333333343 + value: {x: .129999995, y: 1.34000003, z: -1.44000006} + inSlope: {x: -.000120099023, y: -.00413980568, z: 3.96068617e-06} + outSlope: {x: -.000120099023, y: -.00413980568, z: 3.96068617e-06} + tangentMode: 1065353217 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - path: 0 + attribute: 1 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + - path: 0 + attribute: 2 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_StartTime: 0 + m_StopTime: .333333343 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -.850000024 + inSlope: -.0434425101 + outSlope: -.0434425101 + tangentMode: 0 + - time: .333333343 + value: -1.44000006 + inSlope: 3.96068617e-06 + outSlope: 3.96068617e-06 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1.24000001 + inSlope: .0033543075 + outSlope: .0033543075 + tangentMode: 0 + - time: .333333343 + value: 1.34000003 + inSlope: -.00413980568 + outSlope: -.00413980568 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .230000004 + inSlope: .00285970373 + outSlope: .00285970373 + tangentMode: 0 + - time: .333333343 + value: .129999995 + inSlope: -.000120099023 + outSlope: -.000120099023 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .134455919 + inSlope: .0238940101 + outSlope: .0238940101 + tangentMode: 0 + - time: .0166666675 + value: .134854153 + inSlope: .0482895933 + outSlope: .0482895933 + tangentMode: 0 + - time: .0333333351 + value: .136065573 + inSlope: .0939224511 + outSlope: .0939224511 + tangentMode: 0 + - time: .0500000045 + value: .137984902 + inSlope: .133048743 + outSlope: .133048743 + tangentMode: 0 + - time: .0666666701 + value: .140500531 + inSlope: .165348366 + outSlope: .165348366 + tangentMode: 0 + - time: .0833333358 + value: .143496513 + inSlope: .190625057 + outSlope: .190625057 + tangentMode: 0 + - time: .100000001 + value: .146854699 + inSlope: .208820269 + outSlope: .208820269 + tangentMode: 0 + - time: .116666667 + value: .150457188 + inSlope: .220022023 + outSlope: .220022023 + tangentMode: 0 + - time: .13333334 + value: .154188767 + inSlope: .224487454 + outSlope: .224487454 + tangentMode: 0 + - time: .150000006 + value: .157940105 + inSlope: .222650632 + outSlope: .222650632 + tangentMode: 0 + - time: .166666672 + value: .161610454 + inSlope: .215116754 + outSlope: .215116754 + tangentMode: 0 + - time: .183333337 + value: .165110663 + inSlope: .202648506 + outSlope: .202648506 + tangentMode: 0 + - time: .200000003 + value: .168365404 + inSlope: .186129674 + outSlope: .186129674 + tangentMode: 0 + - time: .216666669 + value: .171314985 + inSlope: .166512445 + outSlope: .166512445 + tangentMode: 0 + - time: .233333334 + value: .173915818 + inSlope: .144737378 + outSlope: .144737378 + tangentMode: 0 + - time: .25 + value: .176139563 + inSlope: .12166407 + outSlope: .12166407 + tangentMode: 0 + - time: .266666681 + value: .177971289 + inSlope: .097976543 + outSlope: .097976543 + tangentMode: 0 + - time: .283333361 + value: .179405451 + inSlope: .0740874708 + outSlope: .0740874708 + tangentMode: 0 + - time: .300000042 + value: .180440873 + inSlope: .0500580221 + outSlope: .0500580221 + tangentMode: 0 + - time: .316666722 + value: .181074053 + inSlope: .0255055726 + outSlope: .0255055726 + tangentMode: 0 + - time: .333333343 + value: .181291059 + inSlope: .013020372 + outSlope: .013020372 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .460436851 + inSlope: -.184346423 + outSlope: -.184346423 + tangentMode: 0 + - time: .0166666675 + value: .45736441 + inSlope: -.35705924 + outSlope: -.35705924 + tangentMode: 0 + - time: .0333333351 + value: .448534876 + inSlope: -.685655713 + outSlope: -.685655713 + tangentMode: 0 + - time: .0500000045 + value: .434509218 + inSlope: -.981266499 + outSlope: -.981266499 + tangentMode: 0 + - time: .0666666701 + value: .415825993 + inSlope: -1.24459076 + outSlope: -1.24459076 + tangentMode: 0 + - time: .0833333358 + value: .393022865 + inSlope: -1.47516775 + outSlope: -1.47516775 + tangentMode: 0 + - time: .100000001 + value: .36665374 + inSlope: -1.6716404 + outSlope: -1.6716404 + tangentMode: 0 + - time: .116666667 + value: .337301522 + inSlope: -1.83204412 + outSlope: -1.83204412 + tangentMode: 0 + - time: .13333334 + value: .305585593 + inSlope: -1.95412135 + outSlope: -1.95412135 + tangentMode: 0 + - time: .150000006 + value: .272164136 + inSlope: -2.03560066 + outSlope: -2.03560066 + tangentMode: 0 + - time: .166666672 + value: .237732247 + inSlope: -2.07443428 + outSlope: -2.07443428 + tangentMode: 0 + - time: .183333337 + value: .203016326 + inSlope: -2.06899762 + outSlope: -2.06899762 + tangentMode: 0 + - time: .200000003 + value: .168765664 + inSlope: -2.01819396 + outSlope: -2.01819396 + tangentMode: 0 + - time: .216666669 + value: .135743201 + inSlope: -1.92149687 + outSlope: -1.92149687 + tangentMode: 0 + - time: .233333334 + value: .104715772 + inSlope: -1.77891243 + outSlope: -1.77891243 + tangentMode: 0 + - time: .25 + value: .0764461234 + inSlope: -1.59086776 + outSlope: -1.59086776 + tangentMode: 0 + - time: .266666681 + value: .0516868308 + inSlope: -1.35806262 + outSlope: -1.35806262 + tangentMode: 0 + - time: .283333361 + value: .0311773326 + inSlope: -1.08128548 + outSlope: -1.08128548 + tangentMode: 0 + - time: .300000042 + value: .0156439543 + inSlope: -.761234462 + outSlope: -.761234462 + tangentMode: 0 + - time: .316666722 + value: .00580282975 + inSlope: -.398378462 + outSlope: -.398378462 + tangentMode: 0 + - time: .333333343 + value: .00236467342 + inSlope: -.206289947 + outSlope: -.206289947 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -.0707861781 + inSlope: .0234827381 + outSlope: .0234827381 + tangentMode: 0 + - time: .0166666675 + value: -.0703947991 + inSlope: .0444732606 + outSlope: .0444732606 + tangentMode: 0 + - time: .0333333351 + value: -.0693037361 + inSlope: .0850827917 + outSlope: .0850827917 + tangentMode: 0 + - time: .0500000045 + value: -.0675587058 + inSlope: .123289078 + outSlope: .123289078 + tangentMode: 0 + - time: .0666666701 + value: -.0651941001 + inSlope: .159547642 + outSlope: .159547642 + tangentMode: 0 + - time: .0833333358 + value: -.0622404516 + inSlope: .193899691 + outSlope: .193899691 + tangentMode: 0 + - time: .100000001 + value: -.0587307774 + inSlope: .226033688 + outSlope: .226033688 + tangentMode: 0 + - time: .116666667 + value: -.0547059961 + inSlope: .255349278 + outSlope: .255349278 + tangentMode: 0 + - time: .13333334 + value: -.0502191335 + inSlope: .281028181 + outSlope: .281028181 + tangentMode: 0 + - time: .150000006 + value: -.0453383885 + inSlope: .302106619 + outSlope: .302106619 + tangentMode: 0 + - time: .166666672 + value: -.0401489139 + inSlope: .317548752 + outSlope: .317548752 + tangentMode: 0 + - time: .183333337 + value: -.0347534306 + inSlope: .326318026 + outSlope: .326318026 + tangentMode: 0 + - time: .200000003 + value: -.0292716473 + inSlope: .327440351 + outSlope: .327440351 + tangentMode: 0 + - time: .216666669 + value: -.0238387529 + inSlope: .320061088 + outSlope: .320061088 + tangentMode: 0 + - time: .233333334 + value: -.0186029449 + inSlope: .303490043 + outSlope: .303490043 + tangentMode: 0 + - time: .25 + value: -.0137224188 + inSlope: .277230054 + outSlope: .277230054 + tangentMode: 0 + - time: .266666681 + value: -.0093619395 + inSlope: .240997344 + outSlope: .240997344 + tangentMode: 0 + - time: .283333361 + value: -.00568916695 + inSlope: .19473207 + outSlope: .19473207 + tangentMode: 0 + - time: .300000042 + value: -.00287086493 + inSlope: .138605565 + outSlope: .138605565 + tangentMode: 0 + - time: .316666722 + value: -.00106897741 + inSlope: .0730325803 + outSlope: .0730325803 + tangentMode: 0 + - time: .333333343 + value: -.000436445844 + inSlope: .0379519984 + outSlope: .0379519984 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .874590635 + inSlope: .0948572084 + outSlope: .0948572084 + tangentMode: 0 + - time: .0166666675 + value: .876171589 + inSlope: .181015134 + outSlope: .181015134 + tangentMode: 0 + - time: .0333333351 + value: .880624473 + inSlope: .338864893 + outSlope: .338864893 + tangentMode: 0 + - time: .0500000045 + value: .887467086 + inSlope: .465989113 + outSlope: .465989113 + tangentMode: 0 + - time: .0666666701 + value: .896157444 + inSlope: .559828937 + outSlope: .559828937 + tangentMode: 0 + - time: .0833333358 + value: .906128049 + inSlope: .619722664 + outSlope: .619722664 + tangentMode: 0 + - time: .100000001 + value: .916814864 + inSlope: .646678865 + outSlope: .646678865 + tangentMode: 0 + - time: .116666667 + value: .927684009 + inSlope: .64318645 + outSlope: .64318645 + tangentMode: 0 + - time: .13333334 + value: .938254416 + inSlope: .612991929 + outSlope: .612991929 + tangentMode: 0 + - time: .150000006 + value: .948117077 + inSlope: .560871422 + outSlope: .560871422 + tangentMode: 0 + - time: .166666672 + value: .956950128 + inSlope: .49234277 + outSlope: .49234277 + tangentMode: 0 + - time: .183333337 + value: .964528501 + inSlope: .413360626 + outSlope: .413360626 + tangentMode: 0 + - time: .200000003 + value: .970728815 + inSlope: .330011874 + outSlope: .330011874 + tangentMode: 0 + - time: .216666669 + value: .975528896 + inSlope: .248149067 + outSlope: .248149067 + tangentMode: 0 + - time: .233333334 + value: .979000449 + inSlope: .173023954 + outSlope: .173023954 + tangentMode: 0 + - time: .25 + value: .98129636 + inSlope: .108969182 + outSlope: .108969182 + tangentMode: 0 + - time: .266666681 + value: .982632756 + inSlope: .059047889 + outSlope: .059047889 + tangentMode: 0 + - time: .283333361 + value: .983264625 + inSlope: .0247353129 + outSlope: .0247353129 + tangentMode: 0 + - time: .300000042 + value: .983457267 + inSlope: .00561475288 + outSlope: .00561475288 + tangentMode: 0 + - time: .316666722 + value: .983451784 + inSlope: -.000920893741 + outSlope: -.000920893741 + tangentMode: 0 + - time: .333333343 + value: .983426571 + inSlope: -.00151277008 + outSlope: -.00151277008 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.w + path: + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 17.4800034 + inSlope: -.325761378 + outSlope: -.325761378 + tangentMode: 0 + - time: .333333343 + value: 20.8899994 + inSlope: 9.70926885e-06 + outSlope: 9.70926885e-06 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 55.5299988 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: .333333343 + value: .275525987 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -5.59442524e-05 + inSlope: .000240336507 + outSlope: .000240336507 + tangentMode: 0 + - time: .333333343 + value: -6.35692413e-05 + inSlope: .000240336507 + outSlope: .000240336507 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.z + path: + classID: 4 + script: {fileID: 0} + m_Events: [] diff --git a/Assets/Examples/Assets/Animations/Camera/FacilityRoom/DefaultDossier.anim.meta b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/DefaultDossier.anim.meta new file mode 100644 index 0000000..0a702bf --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/DefaultDossier.anim.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 33ef68dc8800e4446964d6c3c91f5e3d +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Animations/Camera/FacilityRoom/Dossier.anim b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/Dossier.anim new file mode 100644 index 0000000..32ed650 --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/Dossier.anim @@ -0,0 +1,1005 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Dossier + serializedVersion: 4 + m_AnimationType: 2 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .181291059, y: .00236467342, z: -.000436445844, w: .983426571} + inSlope: {x: -.00571399881, y: .0927353427, z: -.0170720238, w: .000743865909} + outSlope: {x: -.00571399881, y: .0927353427, z: -.0170720238, w: .000743865909} + tangentMode: 0 + - time: .0166666675 + value: {x: .181195825, y: .0039102626, z: -.000720979588, w: .983438969} + inSlope: {x: -.0112465024, y: .181262702, z: -.0333172046, w: .00104427326} + outSlope: {x: -.0112465024, y: .181262702, z: -.0333172046, w: .00104427326} + tangentMode: 0 + - time: .0333333351 + value: {x: .180916175, y: .0084067639, z: -.00154701935, w: .98346138} + inSlope: {x: -.0221313518, y: .352008462, z: -.0645030737, w: .000454187364} + outSlope: {x: -.0221313518, y: .352008462, z: -.0645030737, w: .000454187364} + tangentMode: 1093664768 + - time: .0500000045 + value: {x: .180458114, y: .0156438798, z: -.0028710824, w: .983454108} + inSlope: {x: -.0327515602, y: .510125399, z: -.0930100381, w: -.00305771851} + outSlope: {x: -.0327515602, y: .510125399, z: -.0930100381, w: -.00305771851} + tangentMode: 1093664768 + - time: .0666666701 + value: {x: .179824457, y: .0254109446, z: -.00464735413, w: .983359456} + inSlope: {x: -.0432631411, y: .655570149, z: -.118715852, w: -.0103944549} + outSlope: {x: -.0432631411, y: .655570149, z: -.118715852, w: -.0103944549} + tangentMode: 1093664768 + - time: .0833333358 + value: {x: .179016009, y: .0374962166, z: -.00682827737, w: .983107626} + inSlope: {x: -.0537563898, y: .788258076, z: -.141531944, w: -.0221335907} + outSlope: {x: -.0537563898, y: .788258076, z: -.141531944, w: -.0221335907} + tangentMode: 1093664768 + - time: .100000001 + value: {x: .178032577, y: .0516862124, z: -.00936508551, w: .98262167} + inSlope: {x: -.064259477, y: .908067942, z: -.161401346, w: -.0385683812} + outSlope: {x: -.064259477, y: .908067942, z: -.161401346, w: -.0385683812} + tangentMode: 1093664768 + - time: .116666667 + value: {x: .176874027, y: .0677651465, z: -.0122083221, w: .981822014} + inSlope: {x: -.0747455508, y: 1.01485181, z: -.178297222, w: -.0597041696} + outSlope: {x: -.0747455508, y: 1.01485181, z: -.178297222, w: -.0597041696} + tangentMode: 1093664768 + - time: .13333334 + value: {x: .175541058, y: .0855146125, z: -.015308327, w: .98063153} + inSlope: {x: -.0851395577, y: 1.10844886, z: -.192222446, w: -.0852888674} + outSlope: {x: -.0851395577, y: 1.10844886, z: -.192222446, w: -.0852888674} + tangentMode: 1093664768 + - time: .150000006 + value: {x: .174036041, y: .104713447, z: -.0186157376, w: .978979051} + inSlope: {x: -.0953288451, y: 1.18870163, z: -.203208834, w: -.114862934} + outSlope: {x: -.0953288451, y: 1.18870163, z: -.203208834, w: -.114862934} + tangentMode: 1093664768 + - time: .166666672 + value: {x: .17236343, y: .125138, z: -.0220819544, w: .976802766} + inSlope: {x: -.105168976, y: 1.25547481, z: -.211317509, w: -.14776291} + outSlope: {x: -.105168976, y: 1.25547481, z: -.211317509, w: -.14776291} + tangentMode: 1102053376 + - time: .183333337 + value: {x: .170530409, y: .146562606, z: -.0256596543, w: .974053621} + inSlope: {x: -.11449144, y: 1.30866504, z: -.21663706, w: -.183164492} + outSlope: {x: -.11449144, y: 1.30866504, z: -.21663706, w: -.183164492} + tangentMode: 1102053376 + - time: .200000003 + value: {x: .168547049, y: .168760166, z: -.0293031894, w: .970697284} + inSlope: {x: -.123114303, y: 1.34822404, z: -.219282329, w: -.220100299} + outSlope: {x: -.123114303, y: 1.34822404, z: -.219282329, w: -.220100299} + tangentMode: 1102053376 + - time: .216666669 + value: {x: .166426599, y: .191503406, z: -.032969065, w: .966716945} + inSlope: {x: -.130844429, y: 1.37416506, z: -.21939376, w: -.257488519} + outSlope: {x: -.130844429, y: 1.37416506, z: -.21939376, w: -.257488519} + tangentMode: 1102053376 + - time: .233333334 + value: {x: .164185569, y: .214565665, z: -.0366163142, w: .962114334} + inSlope: {x: -.137490049, y: 1.38657117, z: -.217133105, w: -.294188291} + outSlope: {x: -.137490049, y: 1.38657117, z: -.217133105, w: -.294188291} + tangentMode: 1102053376 + - time: .25 + value: {x: .161843598, y: .237722442, z: -.0402068347, w: .95691067} + inSlope: {x: -.14286691, y: 1.38560534, z: -.212679759, w: -.328996062} + outSlope: {x: -.14286691, y: 1.38560534, z: -.212679759, w: -.328996062} + tangentMode: 1102053376 + - time: .266666681 + value: {x: .159423336, y: .260752529, z: -.0437056422, w: .951147795} + inSlope: {x: -.146802545, y: 1.37150121, z: -.206227273, w: -.360697806} + outSlope: {x: -.146802545, y: 1.37150121, z: -.206227273, w: -.360697806} + tangentMode: 1102053376 + - time: .283333361 + value: {x: .156950176, y: .283439189, z: -.0470810831, w: .9448874} + inSlope: {x: -.149136961, y: 1.34457064, z: -.197979152, w: -.388101012} + outSlope: {x: -.149136961, y: 1.34457064, z: -.197979152, w: -.388101012} + tangentMode: 1102053376 + - time: .300000042 + value: {x: .1544521, y: .305571586, z: -.050304953, w: .938211083} + inSlope: {x: -.149729282, y: 1.30518413, z: -.188141719, w: -.410053968} + outSlope: {x: -.149729282, y: 1.30518413, z: -.188141719, w: -.410053968} + tangentMode: 1102053376 + - time: .316666722 + value: {x: .151959196, y: .326945364, z: -.0533524789, w: .931218922} + inSlope: {x: -.148466408, y: 1.25375724, z: -.176917687, w: -.42547667} + outSlope: {x: -.148466408, y: 1.25375724, z: -.176917687, w: -.42547667} + tangentMode: 1102053376 + - time: .333333403 + value: {x: .149503216, y: .347363532, z: -.0562022142, w: .924028516} + inSlope: {x: -.14525491, y: 1.19074965, z: -.164502755, w: -.433387399} + outSlope: {x: -.14525491, y: 1.19074965, z: -.164502755, w: -.433387399} + tangentMode: 1102053376 + - time: .350000083 + value: {x: .147117361, y: .366637051, z: -.0588359088, w: .916772664} + inSlope: {x: -.140024155, y: 1.11662054, z: -.151076853, w: -.432934999} + outSlope: {x: -.140024155, y: 1.11662054, z: -.151076853, w: -.432934999} + tangentMode: 0 + - time: .366666764 + value: {x: .14483574, y: .384584248, z: -.0612381138, w: .909597337} + inSlope: {x: -.132730335, y: 1.03182256, z: -.136797458, w: -.423404217} + outSlope: {x: -.132730335, y: 1.03182256, z: -.136797458, w: -.423404217} + tangentMode: 0 + - time: .383333445 + value: {x: .142693013, y: .401031166, z: -.063395828, w: .902659178} + inSlope: {x: -.123349771, y: .936766982, z: -.121794656, w: -.404253244} + outSlope: {x: -.123349771, y: .936766982, z: -.121794656, w: -.404253244} + tangentMode: 0 + - time: .400000125 + value: {x: .140724078, y: .41580984, z: -.0652979389, w: .896122217} + inSlope: {x: -.111881107, y: .831792593, z: -.106164202, w: -.37512809} + outSlope: {x: -.111881107, y: .831792593, z: -.106164202, w: -.37512809} + tangentMode: 0 + - time: .416666806 + value: {x: .13896364, y: .428757608, z: -.0669346377, w: .890154898} + inSlope: {x: -.0983431116, y: .717158616, z: -.089962557, w: -.335874856} + outSlope: {x: -.0983431116, y: .717158616, z: -.089962557, w: -.335874856} + tangentMode: 0 + - time: .433333486 + value: {x: .137445971, y: .439715147, z: -.0682966933, w: .884926379} + inSlope: {x: -.0827724561, y: .592993915, z: -.0731994361, w: -.286558032} + outSlope: {x: -.0827724561, y: .592993915, z: -.0731994361, w: -.286558032} + tangentMode: 0 + - time: .450000167 + value: {x: .136204556, y: .448524088, z: -.0693746209, w: .880602956} + inSlope: {x: -.0652218834, y: .459285021, z: -.0558339357, w: -.227483332} + outSlope: {x: -.0652218834, y: .459285021, z: -.0558339357, w: -.227483332} + tangentMode: 0 + - time: .466666847 + value: {x: .135271907, y: .45502466, z: -.0701578259, w: .877343595} + inSlope: {x: -.0457606837, y: .31586203, z: -.0377706103, w: -.159212217} + outSlope: {x: -.0457606837, y: .31586203, z: -.0377706103, w: -.159212217} + tangentMode: 0 + - time: .483333528 + value: {x: .134679198, y: .459052831, z: -.0706336424, w: .875295877} + inSlope: {x: -.0244796909, y: .162366122, z: -.0188506059, w: -.0825889856} + outSlope: {x: -.0244796909, y: .162366122, z: -.0188506059, w: -.0825889856} + tangentMode: 0 + - time: .5 + value: {x: .134455919, y: .460436851, z: -.0707861781, w: .874590635} + inSlope: {x: -.0133968964, y: .0830421597, z: -.0091522513, w: -.0423150249} + outSlope: {x: -.0133968964, y: .0830421597, z: -.0091522513, w: -.0423150249} + tangentMode: 27058 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_CompressedRotationCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .129999995, y: 1.34000003, z: -1.44000006} + inSlope: {x: .00158062053, y: -5.61219565e-07, z: -1.29512216e-06} + outSlope: {x: .00158062053, y: -5.61219565e-07, z: -1.29512216e-06} + tangentMode: 0 + - time: .5 + value: {x: .230000004, y: 1.24000001, z: -.850000024} + inSlope: {x: -.00115798821, y: 5.38177801e-07, z: -.0127562648} + outSlope: {x: -.00115798821, y: 5.38177801e-07, z: -.0127562648} + tangentMode: 4 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - path: 0 + attribute: 1 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + - path: 0 + attribute: 2 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_StartTime: 0 + m_StopTime: .5 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -1.44000006 + inSlope: -1.29512216e-06 + outSlope: -1.29512216e-06 + tangentMode: 0 + - time: .5 + value: -.850000024 + inSlope: -.0127562648 + outSlope: -.0127562648 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1.34000003 + inSlope: -5.61219565e-07 + outSlope: -5.61219565e-07 + tangentMode: 0 + - time: .5 + value: 1.24000001 + inSlope: 5.38177801e-07 + outSlope: 5.38177801e-07 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .129999995 + inSlope: .00158062053 + outSlope: .00158062053 + tangentMode: 0 + - time: .5 + value: .230000004 + inSlope: -.00115798821 + outSlope: -.00115798821 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .181291059 + inSlope: -.00571399881 + outSlope: -.00571399881 + tangentMode: 0 + - time: .0166666675 + value: .181195825 + inSlope: -.0112465024 + outSlope: -.0112465024 + tangentMode: 0 + - time: .0333333351 + value: .180916175 + inSlope: -.0221313518 + outSlope: -.0221313518 + tangentMode: 0 + - time: .0500000045 + value: .180458114 + inSlope: -.0327515602 + outSlope: -.0327515602 + tangentMode: 0 + - time: .0666666701 + value: .179824457 + inSlope: -.0432631411 + outSlope: -.0432631411 + tangentMode: 0 + - time: .0833333358 + value: .179016009 + inSlope: -.0537563898 + outSlope: -.0537563898 + tangentMode: 0 + - time: .100000001 + value: .178032577 + inSlope: -.064259477 + outSlope: -.064259477 + tangentMode: 0 + - time: .116666667 + value: .176874027 + inSlope: -.0747455508 + outSlope: -.0747455508 + tangentMode: 0 + - time: .13333334 + value: .175541058 + inSlope: -.0851395577 + outSlope: -.0851395577 + tangentMode: 0 + - time: .150000006 + value: .174036041 + inSlope: -.0953288451 + outSlope: -.0953288451 + tangentMode: 0 + - time: .166666672 + value: .17236343 + inSlope: -.105168976 + outSlope: -.105168976 + tangentMode: 0 + - time: .183333337 + value: .170530409 + inSlope: -.11449144 + outSlope: -.11449144 + tangentMode: 0 + - time: .200000003 + value: .168547049 + inSlope: -.123114303 + outSlope: -.123114303 + tangentMode: 0 + - time: .216666669 + value: .166426599 + inSlope: -.130844429 + outSlope: -.130844429 + tangentMode: 0 + - time: .233333334 + value: .164185569 + inSlope: -.137490049 + outSlope: -.137490049 + tangentMode: 0 + - time: .25 + value: .161843598 + inSlope: -.14286691 + outSlope: -.14286691 + tangentMode: 0 + - time: .266666681 + value: .159423336 + inSlope: -.146802545 + outSlope: -.146802545 + tangentMode: 0 + - time: .283333361 + value: .156950176 + inSlope: -.149136961 + outSlope: -.149136961 + tangentMode: 0 + - time: .300000042 + value: .1544521 + inSlope: -.149729282 + outSlope: -.149729282 + tangentMode: 0 + - time: .316666722 + value: .151959196 + inSlope: -.148466408 + outSlope: -.148466408 + tangentMode: 0 + - time: .333333403 + value: .149503216 + inSlope: -.14525491 + outSlope: -.14525491 + tangentMode: 0 + - time: .350000083 + value: .147117361 + inSlope: -.140024155 + outSlope: -.140024155 + tangentMode: 0 + - time: .366666764 + value: .14483574 + inSlope: -.132730335 + outSlope: -.132730335 + tangentMode: 0 + - time: .383333445 + value: .142693013 + inSlope: -.123349771 + outSlope: -.123349771 + tangentMode: 0 + - time: .400000125 + value: .140724078 + inSlope: -.111881107 + outSlope: -.111881107 + tangentMode: 0 + - time: .416666806 + value: .13896364 + inSlope: -.0983431116 + outSlope: -.0983431116 + tangentMode: 0 + - time: .433333486 + value: .137445971 + inSlope: -.0827724561 + outSlope: -.0827724561 + tangentMode: 0 + - time: .450000167 + value: .136204556 + inSlope: -.0652218834 + outSlope: -.0652218834 + tangentMode: 0 + - time: .466666847 + value: .135271907 + inSlope: -.0457606837 + outSlope: -.0457606837 + tangentMode: 0 + - time: .483333528 + value: .134679198 + inSlope: -.0244796909 + outSlope: -.0244796909 + tangentMode: 0 + - time: .5 + value: .134455919 + inSlope: -.0133968964 + outSlope: -.0133968964 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .00236467342 + inSlope: .0927353427 + outSlope: .0927353427 + tangentMode: 0 + - time: .0166666675 + value: .0039102626 + inSlope: .181262702 + outSlope: .181262702 + tangentMode: 0 + - time: .0333333351 + value: .0084067639 + inSlope: .352008462 + outSlope: .352008462 + tangentMode: 0 + - time: .0500000045 + value: .0156438798 + inSlope: .510125399 + outSlope: .510125399 + tangentMode: 0 + - time: .0666666701 + value: .0254109446 + inSlope: .655570149 + outSlope: .655570149 + tangentMode: 0 + - time: .0833333358 + value: .0374962166 + inSlope: .788258076 + outSlope: .788258076 + tangentMode: 0 + - time: .100000001 + value: .0516862124 + inSlope: .908067942 + outSlope: .908067942 + tangentMode: 0 + - time: .116666667 + value: .0677651465 + inSlope: 1.01485181 + outSlope: 1.01485181 + tangentMode: 0 + - time: .13333334 + value: .0855146125 + inSlope: 1.10844886 + outSlope: 1.10844886 + tangentMode: 0 + - time: .150000006 + value: .104713447 + inSlope: 1.18870163 + outSlope: 1.18870163 + tangentMode: 0 + - time: .166666672 + value: .125138 + inSlope: 1.25547481 + outSlope: 1.25547481 + tangentMode: 0 + - time: .183333337 + value: .146562606 + inSlope: 1.30866504 + outSlope: 1.30866504 + tangentMode: 0 + - time: .200000003 + value: .168760166 + inSlope: 1.34822404 + outSlope: 1.34822404 + tangentMode: 0 + - time: .216666669 + value: .191503406 + inSlope: 1.37416506 + outSlope: 1.37416506 + tangentMode: 0 + - time: .233333334 + value: .214565665 + inSlope: 1.38657117 + outSlope: 1.38657117 + tangentMode: 0 + - time: .25 + value: .237722442 + inSlope: 1.38560534 + outSlope: 1.38560534 + tangentMode: 0 + - time: .266666681 + value: .260752529 + inSlope: 1.37150121 + outSlope: 1.37150121 + tangentMode: 0 + - time: .283333361 + value: .283439189 + inSlope: 1.34457064 + outSlope: 1.34457064 + tangentMode: 0 + - time: .300000042 + value: .305571586 + inSlope: 1.30518413 + outSlope: 1.30518413 + tangentMode: 0 + - time: .316666722 + value: .326945364 + inSlope: 1.25375724 + outSlope: 1.25375724 + tangentMode: 0 + - time: .333333403 + value: .347363532 + inSlope: 1.19074965 + outSlope: 1.19074965 + tangentMode: 0 + - time: .350000083 + value: .366637051 + inSlope: 1.11662054 + outSlope: 1.11662054 + tangentMode: 0 + - time: .366666764 + value: .384584248 + inSlope: 1.03182256 + outSlope: 1.03182256 + tangentMode: 0 + - time: .383333445 + value: .401031166 + inSlope: .936766982 + outSlope: .936766982 + tangentMode: 0 + - time: .400000125 + value: .41580984 + inSlope: .831792593 + outSlope: .831792593 + tangentMode: 0 + - time: .416666806 + value: .428757608 + inSlope: .717158616 + outSlope: .717158616 + tangentMode: 0 + - time: .433333486 + value: .439715147 + inSlope: .592993915 + outSlope: .592993915 + tangentMode: 0 + - time: .450000167 + value: .448524088 + inSlope: .459285021 + outSlope: .459285021 + tangentMode: 0 + - time: .466666847 + value: .45502466 + inSlope: .31586203 + outSlope: .31586203 + tangentMode: 0 + - time: .483333528 + value: .459052831 + inSlope: .162366122 + outSlope: .162366122 + tangentMode: 0 + - time: .5 + value: .460436851 + inSlope: .0830421597 + outSlope: .0830421597 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -.000436445844 + inSlope: -.0170720238 + outSlope: -.0170720238 + tangentMode: 0 + - time: .0166666675 + value: -.000720979588 + inSlope: -.0333172046 + outSlope: -.0333172046 + tangentMode: 0 + - time: .0333333351 + value: -.00154701935 + inSlope: -.0645030737 + outSlope: -.0645030737 + tangentMode: 0 + - time: .0500000045 + value: -.0028710824 + inSlope: -.0930100381 + outSlope: -.0930100381 + tangentMode: 0 + - time: .0666666701 + value: -.00464735413 + inSlope: -.118715852 + outSlope: -.118715852 + tangentMode: 0 + - time: .0833333358 + value: -.00682827737 + inSlope: -.141531944 + outSlope: -.141531944 + tangentMode: 0 + - time: .100000001 + value: -.00936508551 + inSlope: -.161401346 + outSlope: -.161401346 + tangentMode: 0 + - time: .116666667 + value: -.0122083221 + inSlope: -.178297222 + outSlope: -.178297222 + tangentMode: 0 + - time: .13333334 + value: -.015308327 + inSlope: -.192222446 + outSlope: -.192222446 + tangentMode: 0 + - time: .150000006 + value: -.0186157376 + inSlope: -.203208834 + outSlope: -.203208834 + tangentMode: 0 + - time: .166666672 + value: -.0220819544 + inSlope: -.211317509 + outSlope: -.211317509 + tangentMode: 0 + - time: .183333337 + value: -.0256596543 + inSlope: -.21663706 + outSlope: -.21663706 + tangentMode: 0 + - time: .200000003 + value: -.0293031894 + inSlope: -.219282329 + outSlope: -.219282329 + tangentMode: 0 + - time: .216666669 + value: -.032969065 + inSlope: -.21939376 + outSlope: -.21939376 + tangentMode: 0 + - time: .233333334 + value: -.0366163142 + inSlope: -.217133105 + outSlope: -.217133105 + tangentMode: 0 + - time: .25 + value: -.0402068347 + inSlope: -.212679759 + outSlope: -.212679759 + tangentMode: 0 + - time: .266666681 + value: -.0437056422 + inSlope: -.206227273 + outSlope: -.206227273 + tangentMode: 0 + - time: .283333361 + value: -.0470810831 + inSlope: -.197979152 + outSlope: -.197979152 + tangentMode: 0 + - time: .300000042 + value: -.050304953 + inSlope: -.188141719 + outSlope: -.188141719 + tangentMode: 0 + - time: .316666722 + value: -.0533524789 + inSlope: -.176917687 + outSlope: -.176917687 + tangentMode: 0 + - time: .333333403 + value: -.0562022142 + inSlope: -.164502755 + outSlope: -.164502755 + tangentMode: 0 + - time: .350000083 + value: -.0588359088 + inSlope: -.151076853 + outSlope: -.151076853 + tangentMode: 0 + - time: .366666764 + value: -.0612381138 + inSlope: -.136797458 + outSlope: -.136797458 + tangentMode: 0 + - time: .383333445 + value: -.063395828 + inSlope: -.121794656 + outSlope: -.121794656 + tangentMode: 0 + - time: .400000125 + value: -.0652979389 + inSlope: -.106164202 + outSlope: -.106164202 + tangentMode: 0 + - time: .416666806 + value: -.0669346377 + inSlope: -.089962557 + outSlope: -.089962557 + tangentMode: 0 + - time: .433333486 + value: -.0682966933 + inSlope: -.0731994361 + outSlope: -.0731994361 + tangentMode: 0 + - time: .450000167 + value: -.0693746209 + inSlope: -.0558339357 + outSlope: -.0558339357 + tangentMode: 0 + - time: .466666847 + value: -.0701578259 + inSlope: -.0377706103 + outSlope: -.0377706103 + tangentMode: 0 + - time: .483333528 + value: -.0706336424 + inSlope: -.0188506059 + outSlope: -.0188506059 + tangentMode: 0 + - time: .5 + value: -.0707861781 + inSlope: -.0091522513 + outSlope: -.0091522513 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .983426571 + inSlope: .000743865909 + outSlope: .000743865909 + tangentMode: 0 + - time: .0166666675 + value: .983438969 + inSlope: .00104427326 + outSlope: .00104427326 + tangentMode: 0 + - time: .0333333351 + value: .98346138 + inSlope: .000454187364 + outSlope: .000454187364 + tangentMode: 0 + - time: .0500000045 + value: .983454108 + inSlope: -.00305771851 + outSlope: -.00305771851 + tangentMode: 0 + - time: .0666666701 + value: .983359456 + inSlope: -.0103944549 + outSlope: -.0103944549 + tangentMode: 0 + - time: .0833333358 + value: .983107626 + inSlope: -.0221335907 + outSlope: -.0221335907 + tangentMode: 0 + - time: .100000001 + value: .98262167 + inSlope: -.0385683812 + outSlope: -.0385683812 + tangentMode: 0 + - time: .116666667 + value: .981822014 + inSlope: -.0597041696 + outSlope: -.0597041696 + tangentMode: 0 + - time: .13333334 + value: .98063153 + inSlope: -.0852888674 + outSlope: -.0852888674 + tangentMode: 0 + - time: .150000006 + value: .978979051 + inSlope: -.114862934 + outSlope: -.114862934 + tangentMode: 0 + - time: .166666672 + value: .976802766 + inSlope: -.14776291 + outSlope: -.14776291 + tangentMode: 0 + - time: .183333337 + value: .974053621 + inSlope: -.183164492 + outSlope: -.183164492 + tangentMode: 0 + - time: .200000003 + value: .970697284 + inSlope: -.220100299 + outSlope: -.220100299 + tangentMode: 0 + - time: .216666669 + value: .966716945 + inSlope: -.257488519 + outSlope: -.257488519 + tangentMode: 0 + - time: .233333334 + value: .962114334 + inSlope: -.294188291 + outSlope: -.294188291 + tangentMode: 0 + - time: .25 + value: .95691067 + inSlope: -.328996062 + outSlope: -.328996062 + tangentMode: 0 + - time: .266666681 + value: .951147795 + inSlope: -.360697806 + outSlope: -.360697806 + tangentMode: 0 + - time: .283333361 + value: .9448874 + inSlope: -.388101012 + outSlope: -.388101012 + tangentMode: 0 + - time: .300000042 + value: .938211083 + inSlope: -.410053968 + outSlope: -.410053968 + tangentMode: 0 + - time: .316666722 + value: .931218922 + inSlope: -.42547667 + outSlope: -.42547667 + tangentMode: 0 + - time: .333333403 + value: .924028516 + inSlope: -.433387399 + outSlope: -.433387399 + tangentMode: 0 + - time: .350000083 + value: .916772664 + inSlope: -.432934999 + outSlope: -.432934999 + tangentMode: 0 + - time: .366666764 + value: .909597337 + inSlope: -.423404217 + outSlope: -.423404217 + tangentMode: 0 + - time: .383333445 + value: .902659178 + inSlope: -.404253244 + outSlope: -.404253244 + tangentMode: 0 + - time: .400000125 + value: .896122217 + inSlope: -.37512809 + outSlope: -.37512809 + tangentMode: 0 + - time: .416666806 + value: .890154898 + inSlope: -.335874856 + outSlope: -.335874856 + tangentMode: 0 + - time: .433333486 + value: .884926379 + inSlope: -.286558032 + outSlope: -.286558032 + tangentMode: 0 + - time: .450000167 + value: .880602956 + inSlope: -.227483332 + outSlope: -.227483332 + tangentMode: 0 + - time: .466666847 + value: .877343595 + inSlope: -.159212217 + outSlope: -.159212217 + tangentMode: 0 + - time: .483333528 + value: .875295877 + inSlope: -.0825889856 + outSlope: -.0825889856 + tangentMode: 0 + - time: .5 + value: .874590635 + inSlope: -.0423150249 + outSlope: -.0423150249 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.w + path: + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 20.8899994 + inSlope: -8.97951304e-06 + outSlope: -8.97951304e-06 + tangentMode: 0 + - time: .5 + value: 17.4800034 + inSlope: -.229551315 + outSlope: -.229551315 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .275525987 + inSlope: -0 + outSlope: -0 + tangentMode: 0 + - time: .5 + value: 55.5299988 + inSlope: -0 + outSlope: -0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -6.35692413e-05 + inSlope: 1.52499779e-05 + outSlope: 1.52499779e-05 + tangentMode: 10 + - time: .5 + value: -5.59442524e-05 + inSlope: 1.52499779e-05 + outSlope: 1.52499779e-05 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.z + path: + classID: 4 + script: {fileID: 0} + m_Events: [] diff --git a/Assets/Examples/Assets/Animations/Camera/FacilityRoom/Dossier.anim.meta b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/Dossier.anim.meta new file mode 100644 index 0000000..e5b6bde --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/Dossier.anim.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 9caca91f8b02d564595f63cfc1b5f2e3 +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Animations/Camera/FacilityRoom/FacilityRoomCamera.controller b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/FacilityRoomCamera.controller new file mode 100644 index 0000000..2f847f8 --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/FacilityRoomCamera.controller @@ -0,0 +1,425 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: FacilityRoomCamera + serializedVersion: 2 + m_AnimatorParameters: + - m_Name: Holdable + m_Type: 3 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + m_AnimatorLayers: + - serializedVersion: 3 + m_Name: Base Layer + m_StateMachine: {fileID: 110751558} + m_Mask: {fileID: 0} + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_StateMachineMotionSetIndex: 0 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!1101 &110105752 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110261748} + m_DstState: {fileID: 110240292} + m_TransitionDuration: .75 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 5 + m_ConditionEvent: + m_EventTreshold: 0 + m_ExitTime: 0 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1101 &110114366 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110240292} + m_DstState: {fileID: 110234538} + m_TransitionDuration: .25 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 6 + m_ConditionEvent: Holdable + m_EventTreshold: 3 + m_ExitTime: .75 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1101 &110116600 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110224576} + m_DstState: {fileID: 110289626} + m_TransitionDuration: .5 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 7 + m_ConditionEvent: Holdable + m_EventTreshold: 2 + m_ExitTime: .5 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1101 &110118876 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110221980} + m_DstState: {fileID: 110240292} + m_TransitionDuration: .25 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 7 + m_ConditionEvent: Holdable + m_EventTreshold: 1 + m_ExitTime: .75 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1101 &110119482 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110240292} + m_DstState: {fileID: 110221980} + m_TransitionDuration: .25 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 6 + m_ConditionEvent: Holdable + m_EventTreshold: 1 + m_ExitTime: .75 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1101 &110122482 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110289626} + m_DstState: {fileID: 110240292} + m_TransitionDuration: .75 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 5 + m_ConditionEvent: + m_EventTreshold: 0 + m_ExitTime: 0 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1101 &110127690 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110224576} + m_DstState: {fileID: 110240292} + m_TransitionDuration: .25 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 7 + m_ConditionEvent: Holdable + m_EventTreshold: 2 + m_ExitTime: .75 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1101 &110136262 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110264134} + m_DstState: {fileID: 110240292} + m_TransitionDuration: .75 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 5 + m_ConditionEvent: + m_EventTreshold: 0 + m_ExitTime: 0 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1101 &110138936 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110234538} + m_DstState: {fileID: 110261748} + m_TransitionDuration: .5 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 7 + m_ConditionEvent: Holdable + m_EventTreshold: 3 + m_ExitTime: .5 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1101 &110163136 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110240292} + m_DstState: {fileID: 110224576} + m_TransitionDuration: .25 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 6 + m_ConditionEvent: Holdable + m_EventTreshold: 2 + m_ExitTime: .75 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1101 &110163780 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110221980} + m_DstState: {fileID: 110264134} + m_TransitionDuration: .25 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 7 + m_ConditionEvent: Holdable + m_EventTreshold: 1 + m_ExitTime: .75 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1101 &110166234 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110234538} + m_DstState: {fileID: 110240292} + m_TransitionDuration: .25 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 7 + m_ConditionEvent: Holdable + m_EventTreshold: 3 + m_ExitTime: .75 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1102 &110221980 +State: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: AlarmClock + m_Speed: 1 + m_CycleOffset: 0 + m_Motions: + - {fileID: 7400000, guid: d7781535e03447b4788fb640211243d1, type: 2} + m_ParentStateMachine: {fileID: 110751558} + m_Position: {x: -300, y: -96, z: 0} + m_IKOnFeet: 0 + m_Mirror: 0 + m_Tag: +--- !u!1102 &110224576 +State: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Bomb + m_Speed: 1 + m_CycleOffset: 0 + m_Motions: + - {fileID: 7400000, guid: 32cdd6073f163484882e7811b45a2e06, type: 2} + m_ParentStateMachine: {fileID: 110751558} + m_Position: {x: 60, y: -168, z: 0} + m_IKOnFeet: 0 + m_Mirror: 0 + m_Tag: +--- !u!1102 &110234538 +State: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Dossier + m_Speed: 1 + m_CycleOffset: 0 + m_Motions: + - {fileID: 7400000, guid: 9caca91f8b02d564595f63cfc1b5f2e3, type: 2} + m_ParentStateMachine: {fileID: 110751558} + m_Position: {x: 276, y: -96, z: 0} + m_IKOnFeet: 0 + m_Mirror: 0 + m_Tag: +--- !u!1102 &110240292 +State: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Default + m_Speed: 1 + m_CycleOffset: 0 + m_Motions: + - {fileID: 7400000, guid: 5d24d3c2ed7fc5548aa31c9178778312, type: 2} + m_ParentStateMachine: {fileID: 110751558} + m_Position: {x: 60, y: 24, z: 0} + m_IKOnFeet: 0 + m_Mirror: 0 + m_Tag: +--- !u!1102 &110261748 +State: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: DefaultDossier + m_Speed: 1 + m_CycleOffset: 0 + m_Motions: + - {fileID: 7400000, guid: 33ef68dc8800e4446964d6c3c91f5e3d, type: 2} + m_ParentStateMachine: {fileID: 110751558} + m_Position: {x: 372, y: 24, z: 0} + m_IKOnFeet: 0 + m_Mirror: 0 + m_Tag: +--- !u!1102 &110264134 +State: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: DefaultAlarmClock + m_Speed: 1 + m_CycleOffset: 0 + m_Motions: + - {fileID: 7400000, guid: 9784e1495ec7105428dffd708bc794d1, type: 2} + m_ParentStateMachine: {fileID: 110751558} + m_Position: {x: -288, y: 12, z: 0} + m_IKOnFeet: 0 + m_Mirror: 0 + m_Tag: +--- !u!1102 &110289626 +State: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: DefaultBomb + m_Speed: 1 + m_CycleOffset: 0 + m_Motions: + - {fileID: 7400000, guid: 8c113afe105152e4f9cf413ac64f4a14, type: 2} + m_ParentStateMachine: {fileID: 110751558} + m_Position: {x: -48, y: -96, z: 0} + m_IKOnFeet: 0 + m_Mirror: 0 + m_Tag: +--- !u!1107 &110751558 +StateMachine: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Base Layer + m_DefaultState: {fileID: 110240292} + m_States: + - {fileID: 110221980} + - {fileID: 110224576} + - {fileID: 110234538} + - {fileID: 110240292} + - {fileID: 110261748} + - {fileID: 110264134} + - {fileID: 110289626} + m_ChildStateMachine: [] + m_ChildStateMachinePosition: [] + m_OrderedTransitions: + data: + first: {fileID: 110289626} + second: + - {fileID: 110122482} + data: + first: {fileID: 110264134} + second: + - {fileID: 110136262} + data: + first: {fileID: 110261748} + second: + - {fileID: 110105752} + data: + first: {fileID: 110240292} + second: + - {fileID: 110163136} + - {fileID: 110114366} + - {fileID: 110119482} + data: + first: {fileID: 110221980} + second: + - {fileID: 110163780} + data: + first: {fileID: 110224576} + second: + - {fileID: 110116600} + data: + first: {fileID: 110234538} + second: + - {fileID: 110138936} + m_MotionSetCount: 1 + m_AnyStatePosition: {x: -276, y: 144, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} diff --git a/Assets/Examples/Assets/Animations/Camera/FacilityRoom/FacilityRoomCamera.controller.meta b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/FacilityRoomCamera.controller.meta new file mode 100644 index 0000000..fc33a24 --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/FacilityRoom/FacilityRoomCamera.controller.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: da1579df12c3d744995c42bdb127adf9 +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Animations/Camera/SetupRoom.meta b/Assets/Examples/Assets/Animations/Camera/SetupRoom.meta new file mode 100644 index 0000000..1f1437e --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/SetupRoom.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 87d9d0ce33b41f2498fb8505b575b971 +folderAsset: yes +timeCreated: 1465180144 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Animations/Camera/SetupRoom/BombBinder.anim b/Assets/Examples/Assets/Animations/Camera/SetupRoom/BombBinder.anim new file mode 100644 index 0000000..30ed38b --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/SetupRoom/BombBinder.anim @@ -0,0 +1,1005 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: BombBinder + serializedVersion: 4 + m_AnimationType: 2 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .228520751, y: 0, z: 0, w: .973539054} + inSlope: {x: -.0291931611, y: 2.35209257e-07, z: -1.00428986e-06, w: .00684499694} + outSlope: {x: -.0291931611, y: 2.35209257e-07, z: -1.00428986e-06, w: .00684499694} + tangentMode: 122932860 + - time: .0166666675 + value: {x: .228034198, y: 3.92015442e-09, z: -1.67381646e-08, w: .973653138} + inSlope: {x: -.0510616563, y: 2.3395549e-07, z: -1.0045826e-06, w: .0119376183} + outSlope: {x: -.0510616563, y: 2.3395549e-07, z: -1.0045826e-06, w: .0119376183} + tangentMode: 633768772 + - time: .0333333351 + value: {x: .226818696, y: 7.7985165e-09, z: -3.34860886e-08, w: .973936975} + inSlope: {x: -.0932568163, y: 2.30399678e-07, z: -1.00540808e-06, w: .0216829758} + outSlope: {x: -.0932568163, y: 2.30399678e-07, z: -1.00540808e-06, w: .0216829758} + tangentMode: 122932860 + - time: .0500000045 + value: {x: .224925637, y: 1.16001448e-08, z: -5.02517707e-08, w: .974375904} + inSlope: {x: -.13237372, y: 2.24852897e-07, z: -1.0066808e-06, w: .0305128098} + outSlope: {x: -.13237372, y: 2.24852897e-07, z: -1.0066808e-06, w: .0305128098} + tangentMode: 123376112 + - time: .0666666701 + value: {x: .222406238, y: 1.52936135e-08, z: -6.70421159e-08, w: .974954069} + inSlope: {x: -.168423519, y: 2.17525951e-07, z: -1.00833358e-06, w: .0383698978} + outSlope: {x: -.168423519, y: 2.17525951e-07, z: -1.00833358e-06, w: .0383698978} + tangentMode: 121991520 + - time: .0833333358 + value: {x: .21931152, y: 1.88510096e-08, z: -8.38628864e-08, w: .9756549} + inSlope: {x: -.201413795, y: 2.08629075e-07, z: -1.0102957e-06, w: .0452184714} + outSlope: {x: -.201413795, y: 2.08629075e-07, z: -1.0102957e-06, w: .0452184714} + tangentMode: 121226344 + - time: .100000001 + value: {x: .215692446, y: 2.22479155e-08, z: -1.00718637e-07, w: .976461351} + inSlope: {x: -.231345907, y: 1.98372476e-07, z: -1.01249702e-06, w: .0510442294} + outSlope: {x: -.231345907, y: 1.98372476e-07, z: -1.01249702e-06, w: .0510442294} + tangentMode: 121150484 + - time: .116666667 + value: {x: .211599991, y: 2.54634251e-08, z: -1.17612785e-07, w: .977356374} + inSlope: {x: -.258216649, y: 1.86966901e-07, z: -1.01486717e-06, w: .0558471605} + outSlope: {x: -.258216649, y: 1.86966901e-07, z: -1.01486717e-06, w: .0558471605} + tangentMode: 121230176 + - time: .13333334 + value: {x: .207085222, y: 2.84801462e-08, z: -1.34547548e-07, w: .978322923} + inSlope: {x: -.28202039, y: 1.74623807e-07, z: -1.01733735e-06, w: .0596398041} + outSlope: {x: -.28202039, y: 1.74623807e-07, z: -1.01733735e-06, w: .0596398041} + tangentMode: 121230176 + - time: .150000006 + value: {x: .20219931, y: 3.12842197e-08, z: -1.51524034e-07, w: .979344368} + inSlope: {x: -.302747667, y: 1.61555533e-07, z: -1.01984347e-06, w: .0624561384} + outSlope: {x: -.302747667, y: 1.61555533e-07, z: -1.01984347e-06, w: .0624561384} + tangentMode: 121230176 + - time: .166666672 + value: {x: .196993634, y: 3.38653301e-08, z: -1.68542329e-07, w: .980404794} + inSlope: {x: -.320387214, y: 1.47975513e-07, z: -1.02232559e-06, w: .0643318966} + outSlope: {x: -.320387214, y: 1.47975513e-07, z: -1.02232559e-06, w: .0643318966} + tangentMode: 121230176 + - time: .183333337 + value: {x: .191519737, y: 3.62167363e-08, z: -1.8560155e-07, w: .981488764} + inSlope: {x: -.334926575, y: 1.34098826e-07, z: -1.02472836e-06, w: .0653171614} + outSlope: {x: -.334926575, y: 1.34098826e-07, z: -1.02472836e-06, w: .0653171614} + tangentMode: 121133000 + - time: .200000003 + value: {x: .185829416, y: 3.83352905e-08, z: -2.02699937e-07, w: .982582033} + inSlope: {x: -.346349657, y: 1.2014209e-07, z: -1.02700415e-06, w: .0654745176} + outSlope: {x: -.346349657, y: 1.2014209e-07, z: -1.02700415e-06, w: .0654745176} + tangentMode: 121133000 + - time: .216666669 + value: {x: .17997475, y: 4.02214724e-08, z: -2.19835016e-07, w: .983671248} + inSlope: {x: -.3546426, y: 1.06322744e-07, z: -1.0291119e-06, w: .0648665503} + outSlope: {x: -.3546426, y: 1.06322744e-07, z: -1.0291119e-06, w: .0648665503} + tangentMode: 123376112 + - time: .233333334 + value: {x: .174007997, y: 4.18793817e-08, z: -2.37003661e-07, w: .984744251} + inSlope: {x: -.359790653, y: 9.28597004e-08, z: -1.03101502e-06, w: .063566573} + outSlope: {x: -.359790653, y: 9.28597004e-08, z: -1.03101502e-06, w: .063566573} + tangentMode: 123376112 + - time: .25 + value: {x: .167981729, y: 4.33167955e-08, z: -2.54202178e-07, w: .985790133} + inSlope: {x: -.361778438, y: 7.99732263e-08, z: -1.03268644e-06, w: .0616478696} + outSlope: {x: -.361778438, y: 7.99732263e-08, z: -1.03268644e-06, w: .0616478696} + tangentMode: 119562044 + - time: .266666681 + value: {x: .161948711, y: 4.45451569e-08, z: -2.71426558e-07, w: .986799181} + inSlope: {x: -.360592753, y: 6.7884308e-08, z: -1.03410571e-06, w: .0591873601} + outSlope: {x: -.360592753, y: 6.7884308e-08, z: -1.03410571e-06, w: .0591873601} + tangentMode: 119562044 + - time: .283333361 + value: {x: .155961961, y: 4.55796076e-08, z: -2.88672396e-07, w: .987763047} + inSlope: {x: -.356221646, y: 5.68151997e-08, z: -1.03525929e-06, w: .0562637597} + outSlope: {x: -.356221646, y: 5.68151997e-08, z: -1.03525929e-06, w: .0562637597} + tangentMode: 119562044 + - time: .300000042 + value: {x: .150074646, y: 4.64389984e-08, z: -3.05935231e-07, w: .988674641} + inSlope: {x: -.348652899, y: 4.69884007e-08, z: -1.03614002e-06, w: .0529521257} + outSlope: {x: -.348652899, y: 4.69884007e-08, z: -1.03614002e-06, w: .0529521257} + tangentMode: 119562044 + - time: .316666722 + value: {x: .144340187, y: 4.7145889e-08, z: -3.23210429e-07, w: .98952812} + inSlope: {x: -.337878048, y: 3.86266699e-08, z: -1.0367429e-06, w: .0493239947} + outSlope: {x: -.337878048, y: 3.86266699e-08, z: -1.0367429e-06, w: .0493239947} + tangentMode: 119562044 + - time: .333333403 + value: {x: .138812035, y: 4.77265552e-08, z: -3.40493358e-07, w: .990318775} + inSlope: {x: -.323888987, y: 3.19536113e-08, z: -1.03707032e-06, w: .045443736} + outSlope: {x: -.323888987, y: 3.19536113e-08, z: -1.03707032e-06, w: .045443736} + tangentMode: 119562044 + - time: .350000083 + value: {x: .133543879, y: 4.82110103e-08, z: -3.5777947e-07, w: .991042912} + inSlope: {x: -.306678593, y: 2.71924119e-08, z: -1.0371275e-06, w: .0413739309} + outSlope: {x: -.306678593, y: 2.71924119e-08, z: -1.0371275e-06, w: .0413739309} + tangentMode: 119562044 + - time: .366666764 + value: {x: .128589407, y: 4.86329697e-08, z: -3.75064303e-07, w: .991697907} + inSlope: {x: -.286244661, y: 2.4565928e-08, z: -1.03692366e-06, w: .0371700227} + outSlope: {x: -.286244661, y: 2.4565928e-08, z: -1.03692366e-06, w: .0371700227} + tangentMode: 119562044 + - time: .383333445 + value: {x: .124002382, y: 4.90298753e-08, z: -3.92343622e-07, w: .992281914} + inSlope: {x: -.262583345, y: 2.42970231e-08, z: -1.03646494e-06, w: .0328713357} + outSlope: {x: -.262583345, y: 2.42970231e-08, z: -1.03646494e-06, w: .0328713357} + tangentMode: 119562044 + - time: .400000125 + value: {x: .119836621, y: 4.94428711e-08, z: -4.09613165e-07, w: .99279362} + inSlope: {x: -.235693783, y: 2.66081344e-08, z: -1.03575724e-06, w: .0285082813} + outSlope: {x: -.235693783, y: 2.66081344e-08, z: -1.03575724e-06, w: .0285082813} + tangentMode: 119562044 + - time: .416666806 + value: {x: .116145916, y: 4.99168138e-08, z: -4.26868894e-07, w: .993232191} + inSlope: {x: -.205577284, y: 3.17206279e-08, z: -1.03480227e-06, w: .0240951572} + outSlope: {x: -.205577284, y: 3.17206279e-08, z: -1.03480227e-06, w: .0240951572} + tangentMode: 119562044 + - time: .433333486 + value: {x: .112984039, y: 5.05002262e-08, z: -4.44106604e-07, w: .993596792} + inSlope: {x: -.172235891, y: 3.98553368e-08, z: -1.03359832e-06, w: .0196355414} + outSlope: {x: -.172235891, y: 3.98553368e-08, z: -1.03359832e-06, w: .0196355414} + tangentMode: 119562044 + - time: .450000167 + value: {x: .110404715, y: 5.12453262e-08, z: -4.61322202e-07, w: .993886709} + inSlope: {x: -.135673836, y: 5.12322558e-08, z: -1.03213688e-06, w: .0151151288} + outSlope: {x: -.135673836, y: 5.12322558e-08, z: -1.03213688e-06, w: .0151151288} + tangentMode: 119562044 + - time: .466666847 + value: {x: .108461574, y: 5.22079695e-08, z: -4.78511197e-07, w: .99410063} + inSlope: {x: -.0958962739, y: 6.60700792e-08, z: -1.03039235e-06, w: .0104963686} + outSlope: {x: -.0958962739, y: 6.60700792e-08, z: -1.03039235e-06, w: .0104963686} + tangentMode: 119562044 + - time: .483333528 + value: {x: .10720817, y: 5.34476641e-08, z: -4.95668644e-07, w: .994236588} + inSlope: {x: -.0529096276, y: 8.45869437e-08, z: -1.02833371e-06, w: .00572563801} + outSlope: {x: -.0529096276, y: 8.45869437e-08, z: -1.02833371e-06, w: .00572563801} + tangentMode: 119562044 + - time: .5 + value: {x: .106697924, y: 5.50275168e-08, z: -5.12788802e-07, w: .994291484} + inSlope: {x: -.0306150913, y: 9.479227e-08, z: -1.02722151e-06, w: .00329379109} + outSlope: {x: -.0306150913, y: 9.479227e-08, z: -1.02722151e-06, w: .00329379109} + tangentMode: 119562044 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_CompressedRotationCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .270000011, y: 1.47000003, z: -1.62} + inSlope: {x: .00184405723, y: -.00636526104, z: .0107049132} + outSlope: {x: .00184405723, y: -.00636526104, z: .0107049132} + tangentMode: 662061436 + - time: .5 + value: {x: .25033921, y: 1.20533419, z: -1.13} + inSlope: {x: -.00160778523, y: -.00654050708, z: .00501755718} + outSlope: {x: -.00160778523, y: -.00654050708, z: .00501755718} + tangentMode: 106823680 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - path: 0 + attribute: 1 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + - path: 0 + attribute: 2 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_StartTime: 0 + m_StopTime: .5 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -1.62 + inSlope: .0107049132 + outSlope: .0107049132 + tangentMode: 0 + - time: .5 + value: -1.13 + inSlope: .00501755718 + outSlope: .00501755718 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1.47000003 + inSlope: -.00636526104 + outSlope: -.00636526104 + tangentMode: 0 + - time: .5 + value: 1.20533419 + inSlope: -.00654050708 + outSlope: -.00654050708 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .270000011 + inSlope: .00184405723 + outSlope: .00184405723 + tangentMode: 0 + - time: .5 + value: .25033921 + inSlope: -.00160778523 + outSlope: -.00160778523 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .228520751 + inSlope: -.0291931611 + outSlope: -.0291931611 + tangentMode: 0 + - time: .0166666675 + value: .228034198 + inSlope: -.0510616563 + outSlope: -.0510616563 + tangentMode: 0 + - time: .0333333351 + value: .226818696 + inSlope: -.0932568163 + outSlope: -.0932568163 + tangentMode: 0 + - time: .0500000045 + value: .224925637 + inSlope: -.13237372 + outSlope: -.13237372 + tangentMode: 0 + - time: .0666666701 + value: .222406238 + inSlope: -.168423519 + outSlope: -.168423519 + tangentMode: 0 + - time: .0833333358 + value: .21931152 + inSlope: -.201413795 + outSlope: -.201413795 + tangentMode: 0 + - time: .100000001 + value: .215692446 + inSlope: -.231345907 + outSlope: -.231345907 + tangentMode: 0 + - time: .116666667 + value: .211599991 + inSlope: -.258216649 + outSlope: -.258216649 + tangentMode: 0 + - time: .13333334 + value: .207085222 + inSlope: -.28202039 + outSlope: -.28202039 + tangentMode: 0 + - time: .150000006 + value: .20219931 + inSlope: -.302747667 + outSlope: -.302747667 + tangentMode: 0 + - time: .166666672 + value: .196993634 + inSlope: -.320387214 + outSlope: -.320387214 + tangentMode: 0 + - time: .183333337 + value: .191519737 + inSlope: -.334926575 + outSlope: -.334926575 + tangentMode: 0 + - time: .200000003 + value: .185829416 + inSlope: -.346349657 + outSlope: -.346349657 + tangentMode: 0 + - time: .216666669 + value: .17997475 + inSlope: -.3546426 + outSlope: -.3546426 + tangentMode: 0 + - time: .233333334 + value: .174007997 + inSlope: -.359790653 + outSlope: -.359790653 + tangentMode: 0 + - time: .25 + value: .167981729 + inSlope: -.361778438 + outSlope: -.361778438 + tangentMode: 0 + - time: .266666681 + value: .161948711 + inSlope: -.360592753 + outSlope: -.360592753 + tangentMode: 0 + - time: .283333361 + value: .155961961 + inSlope: -.356221646 + outSlope: -.356221646 + tangentMode: 0 + - time: .300000042 + value: .150074646 + inSlope: -.348652899 + outSlope: -.348652899 + tangentMode: 0 + - time: .316666722 + value: .144340187 + inSlope: -.337878048 + outSlope: -.337878048 + tangentMode: 0 + - time: .333333403 + value: .138812035 + inSlope: -.323888987 + outSlope: -.323888987 + tangentMode: 0 + - time: .350000083 + value: .133543879 + inSlope: -.306678593 + outSlope: -.306678593 + tangentMode: 0 + - time: .366666764 + value: .128589407 + inSlope: -.286244661 + outSlope: -.286244661 + tangentMode: 0 + - time: .383333445 + value: .124002382 + inSlope: -.262583345 + outSlope: -.262583345 + tangentMode: 0 + - time: .400000125 + value: .119836621 + inSlope: -.235693783 + outSlope: -.235693783 + tangentMode: 0 + - time: .416666806 + value: .116145916 + inSlope: -.205577284 + outSlope: -.205577284 + tangentMode: 0 + - time: .433333486 + value: .112984039 + inSlope: -.172235891 + outSlope: -.172235891 + tangentMode: 0 + - time: .450000167 + value: .110404715 + inSlope: -.135673836 + outSlope: -.135673836 + tangentMode: 0 + - time: .466666847 + value: .108461574 + inSlope: -.0958962739 + outSlope: -.0958962739 + tangentMode: 0 + - time: .483333528 + value: .10720817 + inSlope: -.0529096276 + outSlope: -.0529096276 + tangentMode: 0 + - time: .5 + value: .106697924 + inSlope: -.0306150913 + outSlope: -.0306150913 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 2.35209257e-07 + outSlope: 2.35209257e-07 + tangentMode: 0 + - time: .0166666675 + value: 3.92015442e-09 + inSlope: 2.3395549e-07 + outSlope: 2.3395549e-07 + tangentMode: 0 + - time: .0333333351 + value: 7.7985165e-09 + inSlope: 2.30399678e-07 + outSlope: 2.30399678e-07 + tangentMode: 0 + - time: .0500000045 + value: 1.16001448e-08 + inSlope: 2.24852897e-07 + outSlope: 2.24852897e-07 + tangentMode: 0 + - time: .0666666701 + value: 1.52936135e-08 + inSlope: 2.17525951e-07 + outSlope: 2.17525951e-07 + tangentMode: 0 + - time: .0833333358 + value: 1.88510096e-08 + inSlope: 2.08629075e-07 + outSlope: 2.08629075e-07 + tangentMode: 0 + - time: .100000001 + value: 2.22479155e-08 + inSlope: 1.98372476e-07 + outSlope: 1.98372476e-07 + tangentMode: 0 + - time: .116666667 + value: 2.54634251e-08 + inSlope: 1.86966901e-07 + outSlope: 1.86966901e-07 + tangentMode: 0 + - time: .13333334 + value: 2.84801462e-08 + inSlope: 1.74623807e-07 + outSlope: 1.74623807e-07 + tangentMode: 0 + - time: .150000006 + value: 3.12842197e-08 + inSlope: 1.61555533e-07 + outSlope: 1.61555533e-07 + tangentMode: 0 + - time: .166666672 + value: 3.38653301e-08 + inSlope: 1.47975513e-07 + outSlope: 1.47975513e-07 + tangentMode: 0 + - time: .183333337 + value: 3.62167363e-08 + inSlope: 1.34098826e-07 + outSlope: 1.34098826e-07 + tangentMode: 0 + - time: .200000003 + value: 3.83352905e-08 + inSlope: 1.2014209e-07 + outSlope: 1.2014209e-07 + tangentMode: 0 + - time: .216666669 + value: 4.02214724e-08 + inSlope: 1.06322744e-07 + outSlope: 1.06322744e-07 + tangentMode: 0 + - time: .233333334 + value: 4.18793817e-08 + inSlope: 9.28597004e-08 + outSlope: 9.28597004e-08 + tangentMode: 0 + - time: .25 + value: 4.33167955e-08 + inSlope: 7.99732263e-08 + outSlope: 7.99732263e-08 + tangentMode: 0 + - time: .266666681 + value: 4.45451569e-08 + inSlope: 6.7884308e-08 + outSlope: 6.7884308e-08 + tangentMode: 0 + - time: .283333361 + value: 4.55796076e-08 + inSlope: 5.68151997e-08 + outSlope: 5.68151997e-08 + tangentMode: 0 + - time: .300000042 + value: 4.64389984e-08 + inSlope: 4.69884007e-08 + outSlope: 4.69884007e-08 + tangentMode: 0 + - time: .316666722 + value: 4.7145889e-08 + inSlope: 3.86266699e-08 + outSlope: 3.86266699e-08 + tangentMode: 0 + - time: .333333403 + value: 4.77265552e-08 + inSlope: 3.19536113e-08 + outSlope: 3.19536113e-08 + tangentMode: 0 + - time: .350000083 + value: 4.82110103e-08 + inSlope: 2.71924119e-08 + outSlope: 2.71924119e-08 + tangentMode: 0 + - time: .366666764 + value: 4.86329697e-08 + inSlope: 2.4565928e-08 + outSlope: 2.4565928e-08 + tangentMode: 0 + - time: .383333445 + value: 4.90298753e-08 + inSlope: 2.42970231e-08 + outSlope: 2.42970231e-08 + tangentMode: 0 + - time: .400000125 + value: 4.94428711e-08 + inSlope: 2.66081344e-08 + outSlope: 2.66081344e-08 + tangentMode: 0 + - time: .416666806 + value: 4.99168138e-08 + inSlope: 3.17206279e-08 + outSlope: 3.17206279e-08 + tangentMode: 0 + - time: .433333486 + value: 5.05002262e-08 + inSlope: 3.98553368e-08 + outSlope: 3.98553368e-08 + tangentMode: 0 + - time: .450000167 + value: 5.12453262e-08 + inSlope: 5.12322558e-08 + outSlope: 5.12322558e-08 + tangentMode: 0 + - time: .466666847 + value: 5.22079695e-08 + inSlope: 6.60700792e-08 + outSlope: 6.60700792e-08 + tangentMode: 0 + - time: .483333528 + value: 5.34476641e-08 + inSlope: 8.45869437e-08 + outSlope: 8.45869437e-08 + tangentMode: 0 + - time: .5 + value: 5.50275168e-08 + inSlope: 9.479227e-08 + outSlope: 9.479227e-08 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: -1.00428986e-06 + outSlope: -1.00428986e-06 + tangentMode: 0 + - time: .0166666675 + value: -1.67381646e-08 + inSlope: -1.0045826e-06 + outSlope: -1.0045826e-06 + tangentMode: 0 + - time: .0333333351 + value: -3.34860886e-08 + inSlope: -1.00540808e-06 + outSlope: -1.00540808e-06 + tangentMode: 0 + - time: .0500000045 + value: -5.02517707e-08 + inSlope: -1.0066808e-06 + outSlope: -1.0066808e-06 + tangentMode: 0 + - time: .0666666701 + value: -6.70421159e-08 + inSlope: -1.00833358e-06 + outSlope: -1.00833358e-06 + tangentMode: 0 + - time: .0833333358 + value: -8.38628864e-08 + inSlope: -1.0102957e-06 + outSlope: -1.0102957e-06 + tangentMode: 0 + - time: .100000001 + value: -1.00718637e-07 + inSlope: -1.01249702e-06 + outSlope: -1.01249702e-06 + tangentMode: 0 + - time: .116666667 + value: -1.17612785e-07 + inSlope: -1.01486717e-06 + outSlope: -1.01486717e-06 + tangentMode: 0 + - time: .13333334 + value: -1.34547548e-07 + inSlope: -1.01733735e-06 + outSlope: -1.01733735e-06 + tangentMode: 0 + - time: .150000006 + value: -1.51524034e-07 + inSlope: -1.01984347e-06 + outSlope: -1.01984347e-06 + tangentMode: 0 + - time: .166666672 + value: -1.68542329e-07 + inSlope: -1.02232559e-06 + outSlope: -1.02232559e-06 + tangentMode: 0 + - time: .183333337 + value: -1.8560155e-07 + inSlope: -1.02472836e-06 + outSlope: -1.02472836e-06 + tangentMode: 0 + - time: .200000003 + value: -2.02699937e-07 + inSlope: -1.02700415e-06 + outSlope: -1.02700415e-06 + tangentMode: 0 + - time: .216666669 + value: -2.19835016e-07 + inSlope: -1.0291119e-06 + outSlope: -1.0291119e-06 + tangentMode: 0 + - time: .233333334 + value: -2.37003661e-07 + inSlope: -1.03101502e-06 + outSlope: -1.03101502e-06 + tangentMode: 0 + - time: .25 + value: -2.54202178e-07 + inSlope: -1.03268644e-06 + outSlope: -1.03268644e-06 + tangentMode: 0 + - time: .266666681 + value: -2.71426558e-07 + inSlope: -1.03410571e-06 + outSlope: -1.03410571e-06 + tangentMode: 0 + - time: .283333361 + value: -2.88672396e-07 + inSlope: -1.03525929e-06 + outSlope: -1.03525929e-06 + tangentMode: 0 + - time: .300000042 + value: -3.05935231e-07 + inSlope: -1.03614002e-06 + outSlope: -1.03614002e-06 + tangentMode: 0 + - time: .316666722 + value: -3.23210429e-07 + inSlope: -1.0367429e-06 + outSlope: -1.0367429e-06 + tangentMode: 0 + - time: .333333403 + value: -3.40493358e-07 + inSlope: -1.03707032e-06 + outSlope: -1.03707032e-06 + tangentMode: 0 + - time: .350000083 + value: -3.5777947e-07 + inSlope: -1.0371275e-06 + outSlope: -1.0371275e-06 + tangentMode: 0 + - time: .366666764 + value: -3.75064303e-07 + inSlope: -1.03692366e-06 + outSlope: -1.03692366e-06 + tangentMode: 0 + - time: .383333445 + value: -3.92343622e-07 + inSlope: -1.03646494e-06 + outSlope: -1.03646494e-06 + tangentMode: 0 + - time: .400000125 + value: -4.09613165e-07 + inSlope: -1.03575724e-06 + outSlope: -1.03575724e-06 + tangentMode: 0 + - time: .416666806 + value: -4.26868894e-07 + inSlope: -1.03480227e-06 + outSlope: -1.03480227e-06 + tangentMode: 0 + - time: .433333486 + value: -4.44106604e-07 + inSlope: -1.03359832e-06 + outSlope: -1.03359832e-06 + tangentMode: 0 + - time: .450000167 + value: -4.61322202e-07 + inSlope: -1.03213688e-06 + outSlope: -1.03213688e-06 + tangentMode: 0 + - time: .466666847 + value: -4.78511197e-07 + inSlope: -1.03039235e-06 + outSlope: -1.03039235e-06 + tangentMode: 0 + - time: .483333528 + value: -4.95668644e-07 + inSlope: -1.02833371e-06 + outSlope: -1.02833371e-06 + tangentMode: 0 + - time: .5 + value: -5.12788802e-07 + inSlope: -1.02722151e-06 + outSlope: -1.02722151e-06 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .973539054 + inSlope: .00684499694 + outSlope: .00684499694 + tangentMode: 0 + - time: .0166666675 + value: .973653138 + inSlope: .0119376183 + outSlope: .0119376183 + tangentMode: 0 + - time: .0333333351 + value: .973936975 + inSlope: .0216829758 + outSlope: .0216829758 + tangentMode: 0 + - time: .0500000045 + value: .974375904 + inSlope: .0305128098 + outSlope: .0305128098 + tangentMode: 0 + - time: .0666666701 + value: .974954069 + inSlope: .0383698978 + outSlope: .0383698978 + tangentMode: 0 + - time: .0833333358 + value: .9756549 + inSlope: .0452184714 + outSlope: .0452184714 + tangentMode: 0 + - time: .100000001 + value: .976461351 + inSlope: .0510442294 + outSlope: .0510442294 + tangentMode: 0 + - time: .116666667 + value: .977356374 + inSlope: .0558471605 + outSlope: .0558471605 + tangentMode: 0 + - time: .13333334 + value: .978322923 + inSlope: .0596398041 + outSlope: .0596398041 + tangentMode: 0 + - time: .150000006 + value: .979344368 + inSlope: .0624561384 + outSlope: .0624561384 + tangentMode: 0 + - time: .166666672 + value: .980404794 + inSlope: .0643318966 + outSlope: .0643318966 + tangentMode: 0 + - time: .183333337 + value: .981488764 + inSlope: .0653171614 + outSlope: .0653171614 + tangentMode: 0 + - time: .200000003 + value: .982582033 + inSlope: .0654745176 + outSlope: .0654745176 + tangentMode: 0 + - time: .216666669 + value: .983671248 + inSlope: .0648665503 + outSlope: .0648665503 + tangentMode: 0 + - time: .233333334 + value: .984744251 + inSlope: .063566573 + outSlope: .063566573 + tangentMode: 0 + - time: .25 + value: .985790133 + inSlope: .0616478696 + outSlope: .0616478696 + tangentMode: 0 + - time: .266666681 + value: .986799181 + inSlope: .0591873601 + outSlope: .0591873601 + tangentMode: 0 + - time: .283333361 + value: .987763047 + inSlope: .0562637597 + outSlope: .0562637597 + tangentMode: 0 + - time: .300000042 + value: .988674641 + inSlope: .0529521257 + outSlope: .0529521257 + tangentMode: 0 + - time: .316666722 + value: .98952812 + inSlope: .0493239947 + outSlope: .0493239947 + tangentMode: 0 + - time: .333333403 + value: .990318775 + inSlope: .045443736 + outSlope: .045443736 + tangentMode: 0 + - time: .350000083 + value: .991042912 + inSlope: .0413739309 + outSlope: .0413739309 + tangentMode: 0 + - time: .366666764 + value: .991697907 + inSlope: .0371700227 + outSlope: .0371700227 + tangentMode: 0 + - time: .383333445 + value: .992281914 + inSlope: .0328713357 + outSlope: .0328713357 + tangentMode: 0 + - time: .400000125 + value: .99279362 + inSlope: .0285082813 + outSlope: .0285082813 + tangentMode: 0 + - time: .416666806 + value: .993232191 + inSlope: .0240951572 + outSlope: .0240951572 + tangentMode: 0 + - time: .433333486 + value: .993596792 + inSlope: .0196355414 + outSlope: .0196355414 + tangentMode: 0 + - time: .450000167 + value: .993886709 + inSlope: .0151151288 + outSlope: .0151151288 + tangentMode: 0 + - time: .466666847 + value: .99410063 + inSlope: .0104963686 + outSlope: .0104963686 + tangentMode: 0 + - time: .483333528 + value: .994236588 + inSlope: .00572563801 + outSlope: .00572563801 + tangentMode: 0 + - time: .5 + value: .994291484 + inSlope: .00329379109 + outSlope: .00329379109 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.w + path: + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 26.4199944 + inSlope: -.740393043 + outSlope: -.740393043 + tangentMode: 0 + - time: .5 + value: 12.25 + inSlope: -.836224973 + outSlope: -.836224973 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: -2.58289796e-11 + outSlope: -2.58289796e-11 + tangentMode: 10 + - time: .5 + value: -1.29144898e-11 + inSlope: -2.58289796e-11 + outSlope: -2.58289796e-11 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: -.000118197269 + outSlope: -.000118197269 + tangentMode: 10 + - time: .5 + value: -5.90986347e-05 + inSlope: -.000118197269 + outSlope: -.000118197269 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.z + path: + classID: 4 + script: {fileID: 0} + m_Events: [] diff --git a/Assets/Examples/Assets/Animations/Camera/SetupRoom/BombBinder.anim.meta b/Assets/Examples/Assets/Animations/Camera/SetupRoom/BombBinder.anim.meta new file mode 100644 index 0000000..035e975 --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/SetupRoom/BombBinder.anim.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: f1b3de65fd3e2e64aa180acba8b5b83b +NativeFormatImporter: + userData: diff --git a/Assets/Examples/Assets/Animations/Camera/SetupRoom/Default.anim b/Assets/Examples/Assets/Animations/Camera/SetupRoom/Default.anim new file mode 100644 index 0000000..4a6fc20 --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/SetupRoom/Default.anim @@ -0,0 +1,220 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Default + serializedVersion: 4 + m_AnimationType: 2 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .228520751, y: 0, z: 0, w: .973539054} + inSlope: {x: 0, y: 0, z: 0, w: 0} + outSlope: {x: 0, y: 0, z: 0, w: 0} + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_CompressedRotationCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .270000011, y: 1.47000003, z: -1.62} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 115920216 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - path: 0 + attribute: 1 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + - path: 0 + attribute: 2 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_StartTime: 0 + m_StopTime: 0 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .270000011 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1.47000003 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -1.62 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .228520751 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .973539054 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.w + path: + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 26.4199944 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.z + path: + classID: 4 + script: {fileID: 0} + m_Events: [] diff --git a/Assets/Examples/Assets/Animations/Camera/SetupRoom/Default.anim.meta b/Assets/Examples/Assets/Animations/Camera/SetupRoom/Default.anim.meta new file mode 100644 index 0000000..b8f951f --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/SetupRoom/Default.anim.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 97690973012c0be47b6f79932d824d78 +NativeFormatImporter: + userData: diff --git a/Assets/Examples/Assets/Animations/Camera/SetupRoom/DefaultBombBinder.anim b/Assets/Examples/Assets/Animations/Camera/SetupRoom/DefaultBombBinder.anim new file mode 100644 index 0000000..a50248c --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/SetupRoom/DefaultBombBinder.anim @@ -0,0 +1,755 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: DefaultBombBinder + serializedVersion: 4 + m_AnimationType: 2 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .106697924, y: 5.50275203e-08, z: -5.12788802e-07, w: .994291484} + inSlope: {x: .0534810089, y: -1.38879614e-07, z: 1.54118754e-06, w: -.00576496078} + outSlope: {x: .0534810089, y: -1.38879614e-07, z: 1.54118754e-06, w: -.00576496078} + tangentMode: 122932860 + - time: .0166666675 + value: {x: .107589275, y: 5.27128599e-08, z: -4.87102341e-07, w: .994195402} + inSlope: {x: .103259005, y: -1.17153846e-07, z: 1.54359373e-06, w: -.0112617016} + outSlope: {x: .103259005, y: -1.17153846e-07, z: 1.54359373e-06, w: -.0112617016} + tangentMode: 633768772 + - time: .0333333351 + value: {x: .110139892, y: 5.11223917e-08, z: -4.61335674e-07, w: .993916094} + inSlope: {x: .19724448, y: -7.99950968e-08, z: 1.54786539e-06, w: -.0220048409} + outSlope: {x: .19724448, y: -7.99950968e-08, z: 1.54786539e-06, w: -.0220048409} + tangentMode: 122932860 + - time: .0500000045 + value: {x: .114164092, y: 5.00463564e-08, z: -4.3550682e-07, w: .993461907} + inSlope: {x: .280071795, y: -5.48542545e-08, z: 1.5511406e-06, w: -.0323688984} + outSlope: {x: .280071795, y: -5.48542545e-08, z: 1.5511406e-06, w: -.0323688984} + tangentMode: 123376112 + - time: .0666666701 + value: {x: .119475618, y: 4.92939165e-08, z: -4.09630985e-07, w: .992837131} + inSlope: {x: .351712525, y: -4.059196e-08, z: 1.55353075e-06, w: -.0425219573} + outSlope: {x: .351712525, y: -4.059196e-08, z: 1.55353075e-06, w: -.0425219573} + tangentMode: 121991520 + - time: .0833333358 + value: {x: .125887841, y: 4.86932912e-08, z: -3.83722465e-07, w: .992044508} + inSlope: {x: .412152737, y: -3.60596921e-08, z: 1.55506723e-06, w: -.0524944104} + outSlope: {x: .412152737, y: -3.60596921e-08, z: 1.55506723e-06, w: -.0524944104} + tangentMode: 121226344 + - time: .100000001 + value: {x: .133214042, y: 4.80919269e-08, z: -3.57795415e-07, w: .991087317} + inSlope: {x: .461389601, y: -4.01031777e-08, z: 1.55573821e-06, w: -.0621914938} + outSlope: {x: .461389601, y: -4.01031777e-08, z: 1.55573821e-06, w: -.0621914938} + tangentMode: 121150484 + - time: .116666667 + value: {x: .141267493, y: 4.73565187e-08, z: -3.31864527e-07, w: .989971459} + inSlope: {x: .499433517, y: -5.15637595e-08, z: 1.55550686e-06, w: -.0714111179} + outSlope: {x: .499433517, y: -5.15637595e-08, z: 1.55550686e-06, w: -.0714111179} + tangentMode: 121230176 + - time: .13333334 + value: {x: .149861827, y: 4.63731347e-08, z: -3.05945179e-07, w: .988706946} + inSlope: {x: .52630794, y: -6.92796149e-08, z: 1.55433872e-06, w: -.0798743814} + outSlope: {x: .52630794, y: -6.92796149e-08, z: 1.55433872e-06, w: -.0798743814} + tangentMode: 121230176 + - time: .150000006 + value: {x: .158811092, y: 4.5047198e-08, z: -2.80053229e-07, w: .987308979} + inSlope: {x: .542051256, y: -9.20886905e-08, z: 1.55222187e-06, w: -.0872415379} + outSlope: {x: .542051256, y: -9.20886905e-08, z: 1.55222187e-06, w: -.0872415379} + tangentMode: 121230176 + - time: .166666672 + value: {x: .167930201, y: 4.33035119e-08, z: -2.54204451e-07, w: .985798895} + inSlope: {x: .546716094, y: -1.18830286e-07, z: 1.54917711e-06, w: -.0931316689} + outSlope: {x: .546716094, y: -1.18830286e-07, z: 1.54917711e-06, w: -.0931316689} + tangentMode: 121230176 + - time: .183333337 + value: {x: .177034959, y: 4.10861887e-08, z: -2.28413995e-07, w: .98420459} + inSlope: {x: .540364146, y: -1.48347695e-07, z: 1.54526811e-06, w: -.0971478298} + outSlope: {x: .540364146, y: -1.48347695e-07, z: 1.54526811e-06, w: -.0971478298} + tangentMode: 121133000 + - time: .200000003 + value: {x: .185942337, y: 3.83585892e-08, z: -2.02695517e-07, w: .982560635} + inSlope: {x: .523069263, y: -1.7949057e-07, z: 1.54061013e-06, w: -.0988876894} + outSlope: {x: .523069263, y: -1.7949057e-07, z: 1.54061013e-06, w: -.0988876894} + tangentMode: 121133000 + - time: .216666669 + value: {x: .194470599, y: 3.51031701e-08, z: -1.77060329e-07, w: .980908334} + inSlope: {x: .494908273, y: -2.11117325e-07, z: 1.5353753e-06, w: -.0979739502} + outSlope: {x: .494908273, y: -2.11117325e-07, z: 1.5353753e-06, w: -.0979739502} + tangentMode: 123376112 + - time: .233333334 + value: {x: .202439278, y: 3.13213455e-08, z: -1.51516346e-07, w: .979294837} + inSlope: {x: .455957681, y: -2.42096178e-07, z: 1.52978987e-06, w: -.0940793827} + outSlope: {x: .455957681, y: -2.42096178e-07, z: 1.52978987e-06, w: -.0940793827} + tangentMode: 123376112 + - time: .25 + value: {x: .209669188, y: 2.70332983e-08, z: -1.26067334e-07, w: .977772355} + inSlope: {x: .406287462, y: -2.71306334e-07, z: 1.52412974e-06, w: -.0869267881} + outSlope: {x: .406287462, y: -2.71306334e-07, z: 1.52412974e-06, w: -.0869267881} + tangentMode: 119562044 + - time: .266666681 + value: {x: .215982199, y: 2.22777974e-08, z: -1.00712001e-07, w: .976397276} + inSlope: {x: .34595415, y: -2.97636632e-07, z: 1.51871245e-06, w: -.076323092} + outSlope: {x: .34595415, y: -2.97636632e-07, z: 1.51871245e-06, w: -.076323092} + tangentMode: 119562044 + - time: .283333361 + value: {x: .221201003, y: 1.71120682e-08, z: -7.54435447e-08, w: .97522825} + inSlope: {x: .274992347, y: -3.19984792e-07, z: 1.51388736e-06, w: -.0621860698} + outSlope: {x: .274992347, y: -3.19984792e-07, z: 1.51388736e-06, w: -.0621860698} + tangentMode: 119562044 + - time: .300000042 + value: {x: .225148618, y: 1.1611629e-08, z: -5.02490458e-08, w: .974324405} + inSlope: {x: .193405449, y: -3.37254278e-07, z: 1.5100203e-06, w: -.0445425138} + outSlope: {x: .193405449, y: -3.37254278e-07, z: 1.5100203e-06, w: -.0445425138} + tangentMode: 119562044 + - time: .316666722 + value: {x: .227647856, y: 5.87024918e-09, z: -2.51094914e-08, w: .973743498} + inSlope: {x: .101163998, y: -3.48349204e-07, z: 1.5074728e-06, w: -.0235605258} + outSlope: {x: .101163998, y: -3.48349204e-07, z: 1.5074728e-06, w: -.0235605258} + tangentMode: 119562044 + - time: .333333343 + value: {x: .228520751, y: 0, z: 0, w: .973539054} + inSlope: {x: .0523738526, y: -3.5221592e-07, z: 1.50657365e-06, w: -.0122666694} + outSlope: {x: .0523738526, y: -3.5221592e-07, z: 1.50657365e-06, w: -.0122666694} + tangentMode: 119562044 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_CompressedRotationCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .25033921, y: 1.20533419, z: -1.13} + inSlope: {x: .0012195583, y: -.00444583036, z: -.00936669111} + outSlope: {x: .0012195583, y: -.00444583036, z: -.00936669111} + tangentMode: 0 + - time: .333333343 + value: {x: .270000011, y: 1.47000003, z: -1.62} + inSlope: {x: .00120542245, y: -.00640793238, z: .0080296956} + outSlope: {x: .00120542245, y: -.00640793238, z: .0080296956} + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - path: 0 + attribute: 1 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + - path: 0 + attribute: 2 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_StartTime: 0 + m_StopTime: .333333343 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -1.13 + inSlope: -.00936669111 + outSlope: -.00936669111 + tangentMode: 0 + - time: .333333343 + value: -1.62 + inSlope: .0080296956 + outSlope: .0080296956 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1.20533419 + inSlope: -.00444583036 + outSlope: -.00444583036 + tangentMode: 0 + - time: .333333343 + value: 1.47000003 + inSlope: -.00640793238 + outSlope: -.00640793238 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .25033921 + inSlope: .0012195583 + outSlope: .0012195583 + tangentMode: 0 + - time: .333333343 + value: .270000011 + inSlope: .00120542245 + outSlope: .00120542245 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .106697924 + inSlope: .0534810089 + outSlope: .0534810089 + tangentMode: 0 + - time: .0166666675 + value: .107589275 + inSlope: .103259005 + outSlope: .103259005 + tangentMode: 0 + - time: .0333333351 + value: .110139892 + inSlope: .19724448 + outSlope: .19724448 + tangentMode: 0 + - time: .0500000045 + value: .114164092 + inSlope: .280071795 + outSlope: .280071795 + tangentMode: 0 + - time: .0666666701 + value: .119475618 + inSlope: .351712525 + outSlope: .351712525 + tangentMode: 0 + - time: .0833333358 + value: .125887841 + inSlope: .412152737 + outSlope: .412152737 + tangentMode: 0 + - time: .100000001 + value: .133214042 + inSlope: .461389601 + outSlope: .461389601 + tangentMode: 0 + - time: .116666667 + value: .141267493 + inSlope: .499433517 + outSlope: .499433517 + tangentMode: 0 + - time: .13333334 + value: .149861827 + inSlope: .52630794 + outSlope: .52630794 + tangentMode: 0 + - time: .150000006 + value: .158811092 + inSlope: .542051256 + outSlope: .542051256 + tangentMode: 0 + - time: .166666672 + value: .167930201 + inSlope: .546716094 + outSlope: .546716094 + tangentMode: 0 + - time: .183333337 + value: .177034959 + inSlope: .540364146 + outSlope: .540364146 + tangentMode: 0 + - time: .200000003 + value: .185942337 + inSlope: .523069263 + outSlope: .523069263 + tangentMode: 0 + - time: .216666669 + value: .194470599 + inSlope: .494908273 + outSlope: .494908273 + tangentMode: 0 + - time: .233333334 + value: .202439278 + inSlope: .455957681 + outSlope: .455957681 + tangentMode: 0 + - time: .25 + value: .209669188 + inSlope: .406287462 + outSlope: .406287462 + tangentMode: 0 + - time: .266666681 + value: .215982199 + inSlope: .34595415 + outSlope: .34595415 + tangentMode: 0 + - time: .283333361 + value: .221201003 + inSlope: .274992347 + outSlope: .274992347 + tangentMode: 0 + - time: .300000042 + value: .225148618 + inSlope: .193405449 + outSlope: .193405449 + tangentMode: 0 + - time: .316666722 + value: .227647856 + inSlope: .101163998 + outSlope: .101163998 + tangentMode: 0 + - time: .333333343 + value: .228520751 + inSlope: .0523738526 + outSlope: .0523738526 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 5.50275203e-08 + inSlope: -1.38879614e-07 + outSlope: -1.38879614e-07 + tangentMode: 0 + - time: .0166666675 + value: 5.27128599e-08 + inSlope: -1.17153846e-07 + outSlope: -1.17153846e-07 + tangentMode: 0 + - time: .0333333351 + value: 5.11223917e-08 + inSlope: -7.99950968e-08 + outSlope: -7.99950968e-08 + tangentMode: 0 + - time: .0500000045 + value: 5.00463564e-08 + inSlope: -5.48542545e-08 + outSlope: -5.48542545e-08 + tangentMode: 0 + - time: .0666666701 + value: 4.92939165e-08 + inSlope: -4.059196e-08 + outSlope: -4.059196e-08 + tangentMode: 0 + - time: .0833333358 + value: 4.86932912e-08 + inSlope: -3.60596921e-08 + outSlope: -3.60596921e-08 + tangentMode: 0 + - time: .100000001 + value: 4.80919269e-08 + inSlope: -4.01031777e-08 + outSlope: -4.01031777e-08 + tangentMode: 0 + - time: .116666667 + value: 4.73565187e-08 + inSlope: -5.15637595e-08 + outSlope: -5.15637595e-08 + tangentMode: 0 + - time: .13333334 + value: 4.63731347e-08 + inSlope: -6.92796149e-08 + outSlope: -6.92796149e-08 + tangentMode: 0 + - time: .150000006 + value: 4.5047198e-08 + inSlope: -9.20886905e-08 + outSlope: -9.20886905e-08 + tangentMode: 0 + - time: .166666672 + value: 4.33035119e-08 + inSlope: -1.18830286e-07 + outSlope: -1.18830286e-07 + tangentMode: 0 + - time: .183333337 + value: 4.10861887e-08 + inSlope: -1.48347695e-07 + outSlope: -1.48347695e-07 + tangentMode: 0 + - time: .200000003 + value: 3.83585892e-08 + inSlope: -1.7949057e-07 + outSlope: -1.7949057e-07 + tangentMode: 0 + - time: .216666669 + value: 3.51031701e-08 + inSlope: -2.11117325e-07 + outSlope: -2.11117325e-07 + tangentMode: 0 + - time: .233333334 + value: 3.13213455e-08 + inSlope: -2.42096178e-07 + outSlope: -2.42096178e-07 + tangentMode: 0 + - time: .25 + value: 2.70332983e-08 + inSlope: -2.71306334e-07 + outSlope: -2.71306334e-07 + tangentMode: 0 + - time: .266666681 + value: 2.22777974e-08 + inSlope: -2.97636632e-07 + outSlope: -2.97636632e-07 + tangentMode: 0 + - time: .283333361 + value: 1.71120682e-08 + inSlope: -3.19984792e-07 + outSlope: -3.19984792e-07 + tangentMode: 0 + - time: .300000042 + value: 1.1611629e-08 + inSlope: -3.37254278e-07 + outSlope: -3.37254278e-07 + tangentMode: 0 + - time: .316666722 + value: 5.87024918e-09 + inSlope: -3.48349204e-07 + outSlope: -3.48349204e-07 + tangentMode: 0 + - time: .333333343 + value: 0 + inSlope: -3.5221592e-07 + outSlope: -3.5221592e-07 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -5.12788802e-07 + inSlope: 1.54118754e-06 + outSlope: 1.54118754e-06 + tangentMode: 0 + - time: .0166666675 + value: -4.87102341e-07 + inSlope: 1.54359373e-06 + outSlope: 1.54359373e-06 + tangentMode: 0 + - time: .0333333351 + value: -4.61335674e-07 + inSlope: 1.54786539e-06 + outSlope: 1.54786539e-06 + tangentMode: 0 + - time: .0500000045 + value: -4.3550682e-07 + inSlope: 1.5511406e-06 + outSlope: 1.5511406e-06 + tangentMode: 0 + - time: .0666666701 + value: -4.09630985e-07 + inSlope: 1.55353075e-06 + outSlope: 1.55353075e-06 + tangentMode: 0 + - time: .0833333358 + value: -3.83722465e-07 + inSlope: 1.55506723e-06 + outSlope: 1.55506723e-06 + tangentMode: 0 + - time: .100000001 + value: -3.57795415e-07 + inSlope: 1.55573821e-06 + outSlope: 1.55573821e-06 + tangentMode: 0 + - time: .116666667 + value: -3.31864527e-07 + inSlope: 1.55550686e-06 + outSlope: 1.55550686e-06 + tangentMode: 0 + - time: .13333334 + value: -3.05945179e-07 + inSlope: 1.55433872e-06 + outSlope: 1.55433872e-06 + tangentMode: 0 + - time: .150000006 + value: -2.80053229e-07 + inSlope: 1.55222187e-06 + outSlope: 1.55222187e-06 + tangentMode: 0 + - time: .166666672 + value: -2.54204451e-07 + inSlope: 1.54917711e-06 + outSlope: 1.54917711e-06 + tangentMode: 0 + - time: .183333337 + value: -2.28413995e-07 + inSlope: 1.54526811e-06 + outSlope: 1.54526811e-06 + tangentMode: 0 + - time: .200000003 + value: -2.02695517e-07 + inSlope: 1.54061013e-06 + outSlope: 1.54061013e-06 + tangentMode: 0 + - time: .216666669 + value: -1.77060329e-07 + inSlope: 1.5353753e-06 + outSlope: 1.5353753e-06 + tangentMode: 0 + - time: .233333334 + value: -1.51516346e-07 + inSlope: 1.52978987e-06 + outSlope: 1.52978987e-06 + tangentMode: 0 + - time: .25 + value: -1.26067334e-07 + inSlope: 1.52412974e-06 + outSlope: 1.52412974e-06 + tangentMode: 0 + - time: .266666681 + value: -1.00712001e-07 + inSlope: 1.51871245e-06 + outSlope: 1.51871245e-06 + tangentMode: 0 + - time: .283333361 + value: -7.54435447e-08 + inSlope: 1.51388736e-06 + outSlope: 1.51388736e-06 + tangentMode: 0 + - time: .300000042 + value: -5.02490458e-08 + inSlope: 1.5100203e-06 + outSlope: 1.5100203e-06 + tangentMode: 0 + - time: .316666722 + value: -2.51094914e-08 + inSlope: 1.5074728e-06 + outSlope: 1.5074728e-06 + tangentMode: 0 + - time: .333333343 + value: 0 + inSlope: 1.50657365e-06 + outSlope: 1.50657365e-06 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .994291484 + inSlope: -.00576496078 + outSlope: -.00576496078 + tangentMode: 0 + - time: .0166666675 + value: .994195402 + inSlope: -.0112617016 + outSlope: -.0112617016 + tangentMode: 0 + - time: .0333333351 + value: .993916094 + inSlope: -.0220048409 + outSlope: -.0220048409 + tangentMode: 0 + - time: .0500000045 + value: .993461907 + inSlope: -.0323688984 + outSlope: -.0323688984 + tangentMode: 0 + - time: .0666666701 + value: .992837131 + inSlope: -.0425219573 + outSlope: -.0425219573 + tangentMode: 0 + - time: .0833333358 + value: .992044508 + inSlope: -.0524944104 + outSlope: -.0524944104 + tangentMode: 0 + - time: .100000001 + value: .991087317 + inSlope: -.0621914938 + outSlope: -.0621914938 + tangentMode: 0 + - time: .116666667 + value: .989971459 + inSlope: -.0714111179 + outSlope: -.0714111179 + tangentMode: 0 + - time: .13333334 + value: .988706946 + inSlope: -.0798743814 + outSlope: -.0798743814 + tangentMode: 0 + - time: .150000006 + value: .987308979 + inSlope: -.0872415379 + outSlope: -.0872415379 + tangentMode: 0 + - time: .166666672 + value: .985798895 + inSlope: -.0931316689 + outSlope: -.0931316689 + tangentMode: 0 + - time: .183333337 + value: .98420459 + inSlope: -.0971478298 + outSlope: -.0971478298 + tangentMode: 0 + - time: .200000003 + value: .982560635 + inSlope: -.0988876894 + outSlope: -.0988876894 + tangentMode: 0 + - time: .216666669 + value: .980908334 + inSlope: -.0979739502 + outSlope: -.0979739502 + tangentMode: 0 + - time: .233333334 + value: .979294837 + inSlope: -.0940793827 + outSlope: -.0940793827 + tangentMode: 0 + - time: .25 + value: .977772355 + inSlope: -.0869267881 + outSlope: -.0869267881 + tangentMode: 0 + - time: .266666681 + value: .976397276 + inSlope: -.076323092 + outSlope: -.076323092 + tangentMode: 0 + - time: .283333361 + value: .97522825 + inSlope: -.0621860698 + outSlope: -.0621860698 + tangentMode: 0 + - time: .300000042 + value: .974324405 + inSlope: -.0445425138 + outSlope: -.0445425138 + tangentMode: 0 + - time: .316666722 + value: .973743498 + inSlope: -.0235605258 + outSlope: -.0235605258 + tangentMode: 0 + - time: .333333343 + value: .973539054 + inSlope: -.0122666694 + outSlope: -.0122666694 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.w + path: + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 12.25 + inSlope: -3.60784043e-06 + outSlope: -3.60784043e-06 + tangentMode: 0 + - time: .333333343 + value: 26.4199944 + inSlope: -0 + outSlope: -0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -1.24978925e-11 + inSlope: 3.74936748e-11 + outSlope: 3.74936748e-11 + tangentMode: 10 + - time: .333333343 + value: 0 + inSlope: 3.74936748e-11 + outSlope: 3.74936748e-11 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -5.90986347e-05 + inSlope: .000177295893 + outSlope: .000177295893 + tangentMode: 10 + - time: .333333343 + value: 0 + inSlope: .000177295893 + outSlope: .000177295893 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.z + path: + classID: 4 + script: {fileID: 0} + m_Events: [] diff --git a/Assets/Examples/Assets/Animations/Camera/SetupRoom/DefaultBombBinder.anim.meta b/Assets/Examples/Assets/Animations/Camera/SetupRoom/DefaultBombBinder.anim.meta new file mode 100644 index 0000000..0003e7f --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/SetupRoom/DefaultBombBinder.anim.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 870778bdcff411849b4e1d0a20901989 +NativeFormatImporter: + userData: diff --git a/Assets/Examples/Assets/Animations/Camera/SetupRoom/DefaultDossier.anim b/Assets/Examples/Assets/Animations/Camera/SetupRoom/DefaultDossier.anim new file mode 100644 index 0000000..07e37be --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/SetupRoom/DefaultDossier.anim @@ -0,0 +1,755 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: DefaultDossier + serializedVersion: 4 + m_AnimationType: 2 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .145217776, y: .290955752, z: -.0447310358, w: .944592834} + inSlope: {x: .0354462862, y: -.124213092, z: .00982001331, w: .0331234932} + outSlope: {x: .0354462862, y: -.124213092, z: .00982001331, w: .0331234932} + tangentMode: 0 + - time: .0166666675 + value: {x: .145808548, y: .288885534, z: -.0445673689, w: .945144892} + inSlope: {x: .0709448755, y: -.240159616, z: .0186030176, w: .0627690554} + outSlope: {x: .0709448755, y: -.240159616, z: .0186030176, w: .0627690554} + tangentMode: 0 + - time: .0333333351 + value: {x: .147582605, y: .282950431, z: -.0441109352, w: .946685135} + inSlope: {x: .137979075, y: -.459637582, z: .0363225825, w: .116590247} + outSlope: {x: .137979075, y: -.459637582, z: .0363225825, w: .116590247} + tangentMode: 1093664768 + - time: .0500000045 + value: {x: .150407851, y: .273564279, z: -.0433566161, w: .949031234} + inSlope: {x: .197048485, y: -.654404402, z: .0547543913, w: .158704519} + outSlope: {x: .197048485, y: -.654404402, z: .0547543913, w: .158704519} + tangentMode: 1093664768 + - time: .0666666701 + value: {x: .154150888, y: .261136949, z: -.0422857888, w: .951975286} + inSlope: {x: .248052955, y: -.824556231, z: .0744622648, w: .188033596} + outSlope: {x: .248052955, y: -.824556231, z: .0744622648, w: .188033596} + tangentMode: 1093664768 + - time: .0833333358 + value: {x: .158676282, y: .246079072, z: -.0408745408, w: .95529902} + inSlope: {x: .290854305, y: -.969930232, z: .0955480039, w: .20436646} + outSlope: {x: .290854305, y: -.969930232, z: .0955480039, w: .20436646} + tangentMode: 1093664768 + - time: .100000001 + value: {x: .163846031, y: .228805944, z: -.0391008556, w: .958787501} + inSlope: {x: .325306833, y: -1.09017813, z: .117714673, w: .208246723} + outSlope: {x: .325306833, y: -1.09017813, z: .117714673, w: .208246723} + tangentMode: 1093664768 + - time: .116666667 + value: {x: .169519842, y: .209739804, z: -.0369507186, w: .962240577} + inSlope: {x: .351289302, y: -1.18484783, z: .140329018, w: .200852722} + outSlope: {x: .351289302, y: -1.18484783, z: .140329018, w: .200852722} + tangentMode: 1093664768 + - time: .13333334 + value: {x: .175555676, y: .189311013, z: -.0344232209, w: .965482593} + inSlope: {x: .368737966, y: -1.2534529, z: .162488759, w: .18388328} + outSlope: {x: .368737966, y: -1.2534529, z: .162488759, w: .18388328} + tangentMode: 1093664768 + - time: .150000006 + value: {x: .181811109, y: .167958036, z: -.0315344259, w: .96837002} + inSlope: {x: .377675623, y: -1.29554725, z: .183089495, w: .159430519} + outSlope: {x: .377675623, y: -1.29554725, z: .183089495, w: .159430519} + tangentMode: 1093664768 + - time: .166666672 + value: {x: .188144863, y: .146126106, z: -.028320238, w: .970796943} + inSlope: {x: .378229499, y: -1.31078029, z: .200895235, w: .129856482} + outSlope: {x: .378229499, y: -1.31078029, z: .200895235, w: .129856482} + tangentMode: 1102053376 + - time: .183333337 + value: {x: .194418758, y: .124265365, z: -.0248379186, w: .972698569} + inSlope: {x: .370643765, y: -1.29893935, z: .214612782, w: .0976663902} + outSlope: {x: .370643765, y: -1.29893935, z: .214612782, w: .0976663902} + tangentMode: 1102053376 + - time: .200000003 + value: {x: .200499654, y: .10282813, z: -.0211664792, w: .974052489} + inSlope: {x: .355263978, y: -1.25996614, z: .222961545, w: .0653618649} + outSlope: {x: .355263978, y: -1.25996614, z: .222961545, w: .0653618649} + tangentMode: 1102053376 + - time: .216666669 + value: {x: .20626089, y: .0822664946, z: -.0174058676, w: .974877298} + inSlope: {x: .332520634, y: -1.19395149, z: .224744529, w: .0353103913} + outSlope: {x: .332520634, y: -1.19395149, z: .224744529, w: .0353103913} + tangentMode: 1102053376 + - time: .233333334 + value: {x: .211583674, y: .0630297512, z: -.0136749949, w: .975229502} + inSlope: {x: .302888483, y: -1.10111189, z: .218914837, w: .00962376688} + outSlope: {x: .302888483, y: -1.10111189, z: .218914837, w: .00962376688} + tangentMode: 1102053376 + - time: .25 + value: {x: .216357172, y: .0455627702, z: -.0101087065, w: .97519809} + inSlope: {x: .266836792, y: -.981744289, z: .20463714, w: -.00997602195} + outSlope: {x: .266836792, y: -.981744289, z: .20463714, w: -.00997602195} + tangentMode: 1102053376 + - time: .266666681 + value: {x: .220478237, y: .0303049311, z: -.00685375417, w: .974896967} + inSlope: {x: .224772066, y: -.836171329, z: .18134436, w: -.0223034434} + outSlope: {x: .224772066, y: -.836171329, z: .18134436, w: -.0223034434} + tangentMode: 1102053376 + - time: .283333361 + value: {x: .22384958, y: .0176903699, z: -.00406388938, w: .974454641} + inSlope: {x: .176972002, y: -.664674401, z: .14879033, w: -.0267970338} + outSlope: {x: .176972002, y: -.664674401, z: .14879033, w: -.0267970338} + tangentMode: 1102053376 + - time: .300000042 + value: {x: .226377308, y: .0081490986, z: -.00189407251, w: .974003732} + inSlope: {x: .123532161, y: -.467433333, z: .1071003, w: -.0236481242} + outSlope: {x: .123532161, y: -.467433333, z: .1071003, w: -.0236481242} + tangentMode: 1102053376 + - time: .316666722 + value: {x: .227967322, y: .00210924656, z: -.000493876229, w: .97366637} + inSlope: {x: .0643032789, y: -.244472995, z: .0568221807, w: -.0139403362} + outSlope: {x: .0643032789, y: -.244472995, z: .0568221807, w: -.0139403362} + tangentMode: 1102053376 + - time: .333333343 + value: {x: .228520751, y: 0, z: 0, w: .973539054} + inSlope: {x: .033205837, y: -.126555145, z: .029632654, w: -.00763895223} + outSlope: {x: .033205837, y: -.126555145, z: .029632654, w: -.00763895223} + tangentMode: 1102053376 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_CompressedRotationCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .360000014, y: 1.24000001, z: -1.07000005} + inSlope: {x: .00285970373, y: .0033543075, z: -.0434425101} + outSlope: {x: .00285970373, y: .0033543075, z: -.0434425101} + tangentMode: 662061436 + - time: .333333343 + value: {x: .270000011, y: 1.47000003, z: -1.62} + inSlope: {x: -.000120099023, y: -.00413980568, z: 3.96068617e-06} + outSlope: {x: -.000120099023, y: -.00413980568, z: 3.96068617e-06} + tangentMode: 1113718784 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - path: 0 + attribute: 1 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + - path: 0 + attribute: 2 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_StartTime: 0 + m_StopTime: .333333343 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -1.07000005 + inSlope: -.0434425101 + outSlope: -.0434425101 + tangentMode: 0 + - time: .333333343 + value: -1.62 + inSlope: 3.96068617e-06 + outSlope: 3.96068617e-06 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1.24000001 + inSlope: .0033543075 + outSlope: .0033543075 + tangentMode: 0 + - time: .333333343 + value: 1.47000003 + inSlope: -.00413980568 + outSlope: -.00413980568 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .360000014 + inSlope: .00285970373 + outSlope: .00285970373 + tangentMode: 0 + - time: .333333343 + value: .270000011 + inSlope: -.000120099023 + outSlope: -.000120099023 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .145217776 + inSlope: .0354462862 + outSlope: .0354462862 + tangentMode: 0 + - time: .0166666675 + value: .145808548 + inSlope: .0709448755 + outSlope: .0709448755 + tangentMode: 0 + - time: .0333333351 + value: .147582605 + inSlope: .137979075 + outSlope: .137979075 + tangentMode: 0 + - time: .0500000045 + value: .150407851 + inSlope: .197048485 + outSlope: .197048485 + tangentMode: 0 + - time: .0666666701 + value: .154150888 + inSlope: .248052955 + outSlope: .248052955 + tangentMode: 0 + - time: .0833333358 + value: .158676282 + inSlope: .290854305 + outSlope: .290854305 + tangentMode: 0 + - time: .100000001 + value: .163846031 + inSlope: .325306833 + outSlope: .325306833 + tangentMode: 0 + - time: .116666667 + value: .169519842 + inSlope: .351289302 + outSlope: .351289302 + tangentMode: 0 + - time: .13333334 + value: .175555676 + inSlope: .368737966 + outSlope: .368737966 + tangentMode: 0 + - time: .150000006 + value: .181811109 + inSlope: .377675623 + outSlope: .377675623 + tangentMode: 0 + - time: .166666672 + value: .188144863 + inSlope: .378229499 + outSlope: .378229499 + tangentMode: 0 + - time: .183333337 + value: .194418758 + inSlope: .370643765 + outSlope: .370643765 + tangentMode: 0 + - time: .200000003 + value: .200499654 + inSlope: .355263978 + outSlope: .355263978 + tangentMode: 0 + - time: .216666669 + value: .20626089 + inSlope: .332520634 + outSlope: .332520634 + tangentMode: 0 + - time: .233333334 + value: .211583674 + inSlope: .302888483 + outSlope: .302888483 + tangentMode: 0 + - time: .25 + value: .216357172 + inSlope: .266836792 + outSlope: .266836792 + tangentMode: 0 + - time: .266666681 + value: .220478237 + inSlope: .224772066 + outSlope: .224772066 + tangentMode: 0 + - time: .283333361 + value: .22384958 + inSlope: .176972002 + outSlope: .176972002 + tangentMode: 0 + - time: .300000042 + value: .226377308 + inSlope: .123532161 + outSlope: .123532161 + tangentMode: 0 + - time: .316666722 + value: .227967322 + inSlope: .0643032789 + outSlope: .0643032789 + tangentMode: 0 + - time: .333333343 + value: .228520751 + inSlope: .033205837 + outSlope: .033205837 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .290955752 + inSlope: -.124213092 + outSlope: -.124213092 + tangentMode: 0 + - time: .0166666675 + value: .288885534 + inSlope: -.240159616 + outSlope: -.240159616 + tangentMode: 0 + - time: .0333333351 + value: .282950431 + inSlope: -.459637582 + outSlope: -.459637582 + tangentMode: 0 + - time: .0500000045 + value: .273564279 + inSlope: -.654404402 + outSlope: -.654404402 + tangentMode: 0 + - time: .0666666701 + value: .261136949 + inSlope: -.824556231 + outSlope: -.824556231 + tangentMode: 0 + - time: .0833333358 + value: .246079072 + inSlope: -.969930232 + outSlope: -.969930232 + tangentMode: 0 + - time: .100000001 + value: .228805944 + inSlope: -1.09017813 + outSlope: -1.09017813 + tangentMode: 0 + - time: .116666667 + value: .209739804 + inSlope: -1.18484783 + outSlope: -1.18484783 + tangentMode: 0 + - time: .13333334 + value: .189311013 + inSlope: -1.2534529 + outSlope: -1.2534529 + tangentMode: 0 + - time: .150000006 + value: .167958036 + inSlope: -1.29554725 + outSlope: -1.29554725 + tangentMode: 0 + - time: .166666672 + value: .146126106 + inSlope: -1.31078029 + outSlope: -1.31078029 + tangentMode: 0 + - time: .183333337 + value: .124265365 + inSlope: -1.29893935 + outSlope: -1.29893935 + tangentMode: 0 + - time: .200000003 + value: .10282813 + inSlope: -1.25996614 + outSlope: -1.25996614 + tangentMode: 0 + - time: .216666669 + value: .0822664946 + inSlope: -1.19395149 + outSlope: -1.19395149 + tangentMode: 0 + - time: .233333334 + value: .0630297512 + inSlope: -1.10111189 + outSlope: -1.10111189 + tangentMode: 0 + - time: .25 + value: .0455627702 + inSlope: -.981744289 + outSlope: -.981744289 + tangentMode: 0 + - time: .266666681 + value: .0303049311 + inSlope: -.836171329 + outSlope: -.836171329 + tangentMode: 0 + - time: .283333361 + value: .0176903699 + inSlope: -.664674401 + outSlope: -.664674401 + tangentMode: 0 + - time: .300000042 + value: .0081490986 + inSlope: -.467433333 + outSlope: -.467433333 + tangentMode: 0 + - time: .316666722 + value: .00210924656 + inSlope: -.244472995 + outSlope: -.244472995 + tangentMode: 0 + - time: .333333343 + value: 0 + inSlope: -.126555145 + outSlope: -.126555145 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -.0447310358 + inSlope: .00982001331 + outSlope: .00982001331 + tangentMode: 0 + - time: .0166666675 + value: -.0445673689 + inSlope: .0186030176 + outSlope: .0186030176 + tangentMode: 0 + - time: .0333333351 + value: -.0441109352 + inSlope: .0363225825 + outSlope: .0363225825 + tangentMode: 0 + - time: .0500000045 + value: -.0433566161 + inSlope: .0547543913 + outSlope: .0547543913 + tangentMode: 0 + - time: .0666666701 + value: -.0422857888 + inSlope: .0744622648 + outSlope: .0744622648 + tangentMode: 0 + - time: .0833333358 + value: -.0408745408 + inSlope: .0955480039 + outSlope: .0955480039 + tangentMode: 0 + - time: .100000001 + value: -.0391008556 + inSlope: .117714673 + outSlope: .117714673 + tangentMode: 0 + - time: .116666667 + value: -.0369507186 + inSlope: .140329018 + outSlope: .140329018 + tangentMode: 0 + - time: .13333334 + value: -.0344232209 + inSlope: .162488759 + outSlope: .162488759 + tangentMode: 0 + - time: .150000006 + value: -.0315344259 + inSlope: .183089495 + outSlope: .183089495 + tangentMode: 0 + - time: .166666672 + value: -.028320238 + inSlope: .200895235 + outSlope: .200895235 + tangentMode: 0 + - time: .183333337 + value: -.0248379186 + inSlope: .214612782 + outSlope: .214612782 + tangentMode: 0 + - time: .200000003 + value: -.0211664792 + inSlope: .222961545 + outSlope: .222961545 + tangentMode: 0 + - time: .216666669 + value: -.0174058676 + inSlope: .224744529 + outSlope: .224744529 + tangentMode: 0 + - time: .233333334 + value: -.0136749949 + inSlope: .218914837 + outSlope: .218914837 + tangentMode: 0 + - time: .25 + value: -.0101087065 + inSlope: .20463714 + outSlope: .20463714 + tangentMode: 0 + - time: .266666681 + value: -.00685375417 + inSlope: .18134436 + outSlope: .18134436 + tangentMode: 0 + - time: .283333361 + value: -.00406388938 + inSlope: .14879033 + outSlope: .14879033 + tangentMode: 0 + - time: .300000042 + value: -.00189407251 + inSlope: .1071003 + outSlope: .1071003 + tangentMode: 0 + - time: .316666722 + value: -.000493876229 + inSlope: .0568221807 + outSlope: .0568221807 + tangentMode: 0 + - time: .333333343 + value: 0 + inSlope: .029632654 + outSlope: .029632654 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .944592834 + inSlope: .0331234932 + outSlope: .0331234932 + tangentMode: 0 + - time: .0166666675 + value: .945144892 + inSlope: .0627690554 + outSlope: .0627690554 + tangentMode: 0 + - time: .0333333351 + value: .946685135 + inSlope: .116590247 + outSlope: .116590247 + tangentMode: 0 + - time: .0500000045 + value: .949031234 + inSlope: .158704519 + outSlope: .158704519 + tangentMode: 0 + - time: .0666666701 + value: .951975286 + inSlope: .188033596 + outSlope: .188033596 + tangentMode: 0 + - time: .0833333358 + value: .95529902 + inSlope: .20436646 + outSlope: .20436646 + tangentMode: 0 + - time: .100000001 + value: .958787501 + inSlope: .208246723 + outSlope: .208246723 + tangentMode: 0 + - time: .116666667 + value: .962240577 + inSlope: .200852722 + outSlope: .200852722 + tangentMode: 0 + - time: .13333334 + value: .965482593 + inSlope: .18388328 + outSlope: .18388328 + tangentMode: 0 + - time: .150000006 + value: .96837002 + inSlope: .159430519 + outSlope: .159430519 + tangentMode: 0 + - time: .166666672 + value: .970796943 + inSlope: .129856482 + outSlope: .129856482 + tangentMode: 0 + - time: .183333337 + value: .972698569 + inSlope: .0976663902 + outSlope: .0976663902 + tangentMode: 0 + - time: .200000003 + value: .974052489 + inSlope: .0653618649 + outSlope: .0653618649 + tangentMode: 0 + - time: .216666669 + value: .974877298 + inSlope: .0353103913 + outSlope: .0353103913 + tangentMode: 0 + - time: .233333334 + value: .975229502 + inSlope: .00962376688 + outSlope: .00962376688 + tangentMode: 0 + - time: .25 + value: .97519809 + inSlope: -.00997602195 + outSlope: -.00997602195 + tangentMode: 0 + - time: .266666681 + value: .974896967 + inSlope: -.0223034434 + outSlope: -.0223034434 + tangentMode: 0 + - time: .283333361 + value: .974454641 + inSlope: -.0267970338 + outSlope: -.0267970338 + tangentMode: 0 + - time: .300000042 + value: .974003732 + inSlope: -.0236481242 + outSlope: -.0236481242 + tangentMode: 0 + - time: .316666722 + value: .97366637 + inSlope: -.0139403362 + outSlope: -.0139403362 + tangentMode: 0 + - time: .333333343 + value: .973539054 + inSlope: -.00763895223 + outSlope: -.00763895223 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.w + path: + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 17.4799995 + inSlope: -.325761378 + outSlope: -.325761378 + tangentMode: 0 + - time: .333333343 + value: 26.4199944 + inSlope: 9.70926885e-06 + outSlope: 9.70926885e-06 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 34.2399979 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: .333333343 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -8.01121714e-05 + inSlope: .000240336507 + outSlope: .000240336507 + tangentMode: 0 + - time: .333333343 + value: 0 + inSlope: .000240336507 + outSlope: .000240336507 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.z + path: + classID: 4 + script: {fileID: 0} + m_Events: [] diff --git a/Assets/Examples/Assets/Animations/Camera/SetupRoom/DefaultDossier.anim.meta b/Assets/Examples/Assets/Animations/Camera/SetupRoom/DefaultDossier.anim.meta new file mode 100644 index 0000000..89a499e --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/SetupRoom/DefaultDossier.anim.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: e8a9a3d3390713747af63c553d07b221 +NativeFormatImporter: + userData: diff --git a/Assets/Examples/Assets/Animations/Camera/SetupRoom/DefaultFP.anim b/Assets/Examples/Assets/Animations/Camera/SetupRoom/DefaultFP.anim new file mode 100644 index 0000000..0b7f001 --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/SetupRoom/DefaultFP.anim @@ -0,0 +1,755 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: DefaultFP + serializedVersion: 4 + m_AnimationType: 2 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .164190143, y: -.36868608, z: .0663364828, w: .912530363} + inSlope: {x: .0640189648, y: .603507698, z: -.100125514, w: .235630259} + outSlope: {x: .0640189648, y: .603507698, z: -.100125514, w: .235630259} + tangentMode: 0 + - time: .0166666675 + value: {x: .165257126, y: -.358627617, z: .0646677241, w: .916457534} + inSlope: {x: .0883059204, y: .682330668, z: -.10700471, w: .257504582} + outSlope: {x: .0883059204, y: .682330668, z: -.10700471, w: .257504582} + tangentMode: 0 + - time: .0333333351 + value: {x: .167133674, y: -.345941722, z: .0627696589, w: .921113849} + inSlope: {x: .133917317, y: .832015753, z: -.121206552, w: .295221776} + outSlope: {x: .133917317, y: .832015753, z: -.121206552, w: .295221776} + tangentMode: 1093664768 + - time: .0500000045 + value: {x: .169721037, y: -.330893755, z: .0606275052, w: .926298261} + inSlope: {x: .173587203, y: .965669453, z: -.136369646, w: .320851207} + outSlope: {x: .173587203, y: .965669453, z: -.136369646, w: .320851207} + tangentMode: 1093664768 + - time: .0666666701 + value: {x: .172919914, y: -.313752741, z: .0582240038, w: .931808889} + inSlope: {x: .207269505, y: 1.08299387, z: -.15252775, w: .334564477} + outSlope: {x: .207269505, y: 1.08299387, z: -.15252775, w: .334564477} + tangentMode: 1093664768 + - time: .0833333358 + value: {x: .17663002, y: -.294793963, z: .0555432476, w: .937450409} + inSlope: {x: .234909222, y: 1.18356156, z: -.169495732, w: .336931974} + outSlope: {x: .234909222, y: 1.18356156, z: -.169495732, w: .336931974} + tangentMode: 1093664768 + - time: .100000001 + value: {x: .180750221, y: -.274300694, z: .0525741465, w: .943039954} + inSlope: {x: .256459445, y: 1.2668674, z: -.186901599, w: .328888923} + outSlope: {x: .256459445, y: 1.2668674, z: -.186901599, w: .328888923} + tangentMode: 1093664768 + - time: .116666667 + value: {x: .185178667, y: -.252565056, z: .049313195, w: .948413372} + inSlope: {x: .271899045, y: 1.33238578, z: -.204218328, w: .311685145} + outSlope: {x: .271899045, y: 1.33238578, z: -.204218328, w: .311685145} + tangentMode: 1093664768 + - time: .13333334 + value: {x: .189813524, y: -.229887828, z: .0457668677, w: .953429461} + inSlope: {x: .281253278, y: 1.37960911, z: -.220794827, w: .286819279} + outSlope: {x: .281253278, y: 1.37960911, z: -.220794827, w: .286819279} + tangentMode: 1093664768 + - time: .150000006 + value: {x: .194553778, y: -.206578076, z: .0419533662, w: .957974017} + inSlope: {x: .28460297, y: 1.40808654, z: -.235891908, w: .255982906} + outSlope: {x: .28460297, y: 1.40808654, z: -.235891908, w: .255982906} + tangentMode: 1093664768 + - time: .166666672 + value: {x: .199300289, y: -.182951614, z: .0379038043, w: .961962223} + inSlope: {x: .282096893, y: 1.41746128, z: -.248716235, w: .220996156} + outSlope: {x: .282096893, y: 1.41746128, z: -.248716235, w: .220996156} + tangentMode: 1102053376 + - time: .183333337 + value: {x: .203957006, y: -.15932937, z: .0336628258, w: .965340555} + inSlope: {x: .2739546, y: 1.40748882, z: -.258456618, w: .183747426} + outSlope: {x: .2739546, y: 1.40748882, z: -.258456618, w: .183747426} + tangentMode: 1102053376 + - time: .200000003 + value: {x: .208432108, y: -.136035323, z: .0292885844, w: .968087137} + inSlope: {x: .26045683, y: 1.37804961, z: -.264319032, w: .146103516} + outSlope: {x: .26045683, y: 1.37804961, z: -.264319032, w: .146103516} + tangentMode: 1102053376 + - time: .216666669 + value: {x: .2126389, y: -.113394387, z: .024852192, w: .970210671} + inSlope: {x: .241935283, y: 1.32913947, z: -.265560836, w: .109870449} + outSlope: {x: .241935283, y: 1.32913947, z: -.265560836, w: .109870449} + tangentMode: 1102053376 + - time: .233333334 + value: {x: .216496617, y: -.0917306766, z: .020436557, w: .971749485} + inSlope: {x: .218755618, y: 1.26086116, z: -.261523157, w: .0767111853} + outSlope: {x: .218755618, y: 1.26086116, z: -.261523157, w: .0767111853} + tangentMode: 1102053376 + - time: .25 + value: {x: .219930753, y: -.0713656843, z: .0161347538, w: .972767711} + inSlope: {x: .191288829, y: 1.17340302, z: -.251659721, w: .0480723232} + outSlope: {x: .191288829, y: 1.17340302, z: -.251659721, w: .0480723232} + tangentMode: 1102053376 + - time: .266666681 + value: {x: .222872913, y: -.0526172258, z: .0120478962, w: .973351896} + inSlope: {x: .159886792, y: 1.06700552, z: -.235565037, w: .0251340643} + outSlope: {x: .159886792, y: 1.06700552, z: -.235565037, w: .0251340643} + tangentMode: 1102053376 + - time: .283333361 + value: {x: .225260317, y: -.035798803, z: .00828257948, w: .973605514} + inSlope: {x: .124848679, y: .941925883, z: -.212998092, w: .00873147696} + outSlope: {x: .124848679, y: .941925883, z: -.212998092, w: .00873147696} + tangentMode: 1102053376 + - time: .300000042 + value: {x: .227034539, y: -.0212196689, z: .00494795386, w: .973642945} + inSlope: {x: .086383149, y: .798396945, z: -.183904588, w: -.000684856786} + outSlope: {x: .086383149, y: .798396945, z: -.183904588, w: -.000684856786} + tangentMode: 1102053376 + - time: .316666722 + value: {x: .228139758, y: -.0091855498, z: .00215242151, w: .973582685} + inSlope: {x: .0445863679, y: .63659054, z: -.148438722, w: -.00311672897} + outSlope: {x: .0445863679, y: .63659054, z: -.148438722, w: -.00311672897} + tangentMode: 1102053376 + - time: .333333343 + value: {x: .228520751, y: 0, z: 0, w: .973539054} + inSlope: {x: .0228596367, y: .551134527, z: -.129145652, w: -.00261784322} + outSlope: {x: .0228596367, y: .551134527, z: -.129145652, w: -.00261784322} + tangentMode: 1102053376 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_CompressedRotationCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .239999995, y: 1.28999996, z: -1.20000005} + inSlope: {x: -.00468316348, y: -.00510271825, z: -.011389426} + outSlope: {x: -.00468316348, y: -.00510271825, z: -.011389426} + tangentMode: -1137009993 + - time: .333333343 + value: {x: .270000011, y: 1.47000003, z: -1.62} + inSlope: {x: .0034584105, y: -0, z: .0108004054} + outSlope: {x: .0034584105, y: -0, z: .0108004054} + tangentMode: 1009841199 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - path: 0 + attribute: 1 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + - path: 0 + attribute: 2 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_StartTime: 0 + m_StopTime: .333333343 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -1.20000005 + inSlope: -.011389426 + outSlope: -.011389426 + tangentMode: 0 + - time: .333333343 + value: -1.62 + inSlope: .0108004054 + outSlope: .0108004054 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1.28999996 + inSlope: -.00510271825 + outSlope: -.00510271825 + tangentMode: 0 + - time: .333333343 + value: 1.47000003 + inSlope: -0 + outSlope: -0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .239999995 + inSlope: -.00468316348 + outSlope: -.00468316348 + tangentMode: 0 + - time: .333333343 + value: .270000011 + inSlope: .0034584105 + outSlope: .0034584105 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .164190143 + inSlope: .0640189648 + outSlope: .0640189648 + tangentMode: 0 + - time: .0166666675 + value: .165257126 + inSlope: .0883059204 + outSlope: .0883059204 + tangentMode: 0 + - time: .0333333351 + value: .167133674 + inSlope: .133917317 + outSlope: .133917317 + tangentMode: 0 + - time: .0500000045 + value: .169721037 + inSlope: .173587203 + outSlope: .173587203 + tangentMode: 0 + - time: .0666666701 + value: .172919914 + inSlope: .207269505 + outSlope: .207269505 + tangentMode: 0 + - time: .0833333358 + value: .17663002 + inSlope: .234909222 + outSlope: .234909222 + tangentMode: 0 + - time: .100000001 + value: .180750221 + inSlope: .256459445 + outSlope: .256459445 + tangentMode: 0 + - time: .116666667 + value: .185178667 + inSlope: .271899045 + outSlope: .271899045 + tangentMode: 0 + - time: .13333334 + value: .189813524 + inSlope: .281253278 + outSlope: .281253278 + tangentMode: 0 + - time: .150000006 + value: .194553778 + inSlope: .28460297 + outSlope: .28460297 + tangentMode: 0 + - time: .166666672 + value: .199300289 + inSlope: .282096893 + outSlope: .282096893 + tangentMode: 0 + - time: .183333337 + value: .203957006 + inSlope: .2739546 + outSlope: .2739546 + tangentMode: 0 + - time: .200000003 + value: .208432108 + inSlope: .26045683 + outSlope: .26045683 + tangentMode: 0 + - time: .216666669 + value: .2126389 + inSlope: .241935283 + outSlope: .241935283 + tangentMode: 0 + - time: .233333334 + value: .216496617 + inSlope: .218755618 + outSlope: .218755618 + tangentMode: 0 + - time: .25 + value: .219930753 + inSlope: .191288829 + outSlope: .191288829 + tangentMode: 0 + - time: .266666681 + value: .222872913 + inSlope: .159886792 + outSlope: .159886792 + tangentMode: 0 + - time: .283333361 + value: .225260317 + inSlope: .124848679 + outSlope: .124848679 + tangentMode: 0 + - time: .300000042 + value: .227034539 + inSlope: .086383149 + outSlope: .086383149 + tangentMode: 0 + - time: .316666722 + value: .228139758 + inSlope: .0445863679 + outSlope: .0445863679 + tangentMode: 0 + - time: .333333343 + value: .228520751 + inSlope: .0228596367 + outSlope: .0228596367 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -.36868608 + inSlope: .603507698 + outSlope: .603507698 + tangentMode: 0 + - time: .0166666675 + value: -.358627617 + inSlope: .682330668 + outSlope: .682330668 + tangentMode: 0 + - time: .0333333351 + value: -.345941722 + inSlope: .832015753 + outSlope: .832015753 + tangentMode: 0 + - time: .0500000045 + value: -.330893755 + inSlope: .965669453 + outSlope: .965669453 + tangentMode: 0 + - time: .0666666701 + value: -.313752741 + inSlope: 1.08299387 + outSlope: 1.08299387 + tangentMode: 0 + - time: .0833333358 + value: -.294793963 + inSlope: 1.18356156 + outSlope: 1.18356156 + tangentMode: 0 + - time: .100000001 + value: -.274300694 + inSlope: 1.2668674 + outSlope: 1.2668674 + tangentMode: 0 + - time: .116666667 + value: -.252565056 + inSlope: 1.33238578 + outSlope: 1.33238578 + tangentMode: 0 + - time: .13333334 + value: -.229887828 + inSlope: 1.37960911 + outSlope: 1.37960911 + tangentMode: 0 + - time: .150000006 + value: -.206578076 + inSlope: 1.40808654 + outSlope: 1.40808654 + tangentMode: 0 + - time: .166666672 + value: -.182951614 + inSlope: 1.41746128 + outSlope: 1.41746128 + tangentMode: 0 + - time: .183333337 + value: -.15932937 + inSlope: 1.40748882 + outSlope: 1.40748882 + tangentMode: 0 + - time: .200000003 + value: -.136035323 + inSlope: 1.37804961 + outSlope: 1.37804961 + tangentMode: 0 + - time: .216666669 + value: -.113394387 + inSlope: 1.32913947 + outSlope: 1.32913947 + tangentMode: 0 + - time: .233333334 + value: -.0917306766 + inSlope: 1.26086116 + outSlope: 1.26086116 + tangentMode: 0 + - time: .25 + value: -.0713656843 + inSlope: 1.17340302 + outSlope: 1.17340302 + tangentMode: 0 + - time: .266666681 + value: -.0526172258 + inSlope: 1.06700552 + outSlope: 1.06700552 + tangentMode: 0 + - time: .283333361 + value: -.035798803 + inSlope: .941925883 + outSlope: .941925883 + tangentMode: 0 + - time: .300000042 + value: -.0212196689 + inSlope: .798396945 + outSlope: .798396945 + tangentMode: 0 + - time: .316666722 + value: -.0091855498 + inSlope: .63659054 + outSlope: .63659054 + tangentMode: 0 + - time: .333333343 + value: 0 + inSlope: .551134527 + outSlope: .551134527 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .0663364828 + inSlope: -.100125514 + outSlope: -.100125514 + tangentMode: 0 + - time: .0166666675 + value: .0646677241 + inSlope: -.10700471 + outSlope: -.10700471 + tangentMode: 0 + - time: .0333333351 + value: .0627696589 + inSlope: -.121206552 + outSlope: -.121206552 + tangentMode: 0 + - time: .0500000045 + value: .0606275052 + inSlope: -.136369646 + outSlope: -.136369646 + tangentMode: 0 + - time: .0666666701 + value: .0582240038 + inSlope: -.15252775 + outSlope: -.15252775 + tangentMode: 0 + - time: .0833333358 + value: .0555432476 + inSlope: -.169495732 + outSlope: -.169495732 + tangentMode: 0 + - time: .100000001 + value: .0525741465 + inSlope: -.186901599 + outSlope: -.186901599 + tangentMode: 0 + - time: .116666667 + value: .049313195 + inSlope: -.204218328 + outSlope: -.204218328 + tangentMode: 0 + - time: .13333334 + value: .0457668677 + inSlope: -.220794827 + outSlope: -.220794827 + tangentMode: 0 + - time: .150000006 + value: .0419533662 + inSlope: -.235891908 + outSlope: -.235891908 + tangentMode: 0 + - time: .166666672 + value: .0379038043 + inSlope: -.248716235 + outSlope: -.248716235 + tangentMode: 0 + - time: .183333337 + value: .0336628258 + inSlope: -.258456618 + outSlope: -.258456618 + tangentMode: 0 + - time: .200000003 + value: .0292885844 + inSlope: -.264319032 + outSlope: -.264319032 + tangentMode: 0 + - time: .216666669 + value: .024852192 + inSlope: -.265560836 + outSlope: -.265560836 + tangentMode: 0 + - time: .233333334 + value: .020436557 + inSlope: -.261523157 + outSlope: -.261523157 + tangentMode: 0 + - time: .25 + value: .0161347538 + inSlope: -.251659721 + outSlope: -.251659721 + tangentMode: 0 + - time: .266666681 + value: .0120478962 + inSlope: -.235565037 + outSlope: -.235565037 + tangentMode: 0 + - time: .283333361 + value: .00828257948 + inSlope: -.212998092 + outSlope: -.212998092 + tangentMode: 0 + - time: .300000042 + value: .00494795386 + inSlope: -.183904588 + outSlope: -.183904588 + tangentMode: 0 + - time: .316666722 + value: .00215242151 + inSlope: -.148438722 + outSlope: -.148438722 + tangentMode: 0 + - time: .333333343 + value: 0 + inSlope: -.129145652 + outSlope: -.129145652 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .912530363 + inSlope: .235630259 + outSlope: .235630259 + tangentMode: 0 + - time: .0166666675 + value: .916457534 + inSlope: .257504582 + outSlope: .257504582 + tangentMode: 0 + - time: .0333333351 + value: .921113849 + inSlope: .295221776 + outSlope: .295221776 + tangentMode: 0 + - time: .0500000045 + value: .926298261 + inSlope: .320851207 + outSlope: .320851207 + tangentMode: 0 + - time: .0666666701 + value: .931808889 + inSlope: .334564477 + outSlope: .334564477 + tangentMode: 0 + - time: .0833333358 + value: .937450409 + inSlope: .336931974 + outSlope: .336931974 + tangentMode: 0 + - time: .100000001 + value: .943039954 + inSlope: .328888923 + outSlope: .328888923 + tangentMode: 0 + - time: .116666667 + value: .948413372 + inSlope: .311685145 + outSlope: .311685145 + tangentMode: 0 + - time: .13333334 + value: .953429461 + inSlope: .286819279 + outSlope: .286819279 + tangentMode: 0 + - time: .150000006 + value: .957974017 + inSlope: .255982906 + outSlope: .255982906 + tangentMode: 0 + - time: .166666672 + value: .961962223 + inSlope: .220996156 + outSlope: .220996156 + tangentMode: 0 + - time: .183333337 + value: .965340555 + inSlope: .183747426 + outSlope: .183747426 + tangentMode: 0 + - time: .200000003 + value: .968087137 + inSlope: .146103516 + outSlope: .146103516 + tangentMode: 0 + - time: .216666669 + value: .970210671 + inSlope: .109870449 + outSlope: .109870449 + tangentMode: 0 + - time: .233333334 + value: .971749485 + inSlope: .0767111853 + outSlope: .0767111853 + tangentMode: 0 + - time: .25 + value: .972767711 + inSlope: .0480723232 + outSlope: .0480723232 + tangentMode: 0 + - time: .266666681 + value: .973351896 + inSlope: .0251340643 + outSlope: .0251340643 + tangentMode: 0 + - time: .283333361 + value: .973605514 + inSlope: .00873147696 + outSlope: .00873147696 + tangentMode: 0 + - time: .300000042 + value: .973642945 + inSlope: -.000684856786 + outSlope: -.000684856786 + tangentMode: 0 + - time: .316666722 + value: .973582685 + inSlope: -.00311672897 + outSlope: -.00311672897 + tangentMode: 0 + - time: .333333343 + value: .973539054 + inSlope: -.00261784322 + outSlope: -.00261784322 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.w + path: + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 20.3999767 + inSlope: -1.71948122e-05 + outSlope: -1.71948122e-05 + tangentMode: 0 + - time: .333333343 + value: 26.4199944 + inSlope: 8.66789833e-06 + outSlope: 8.66789833e-06 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -44 + inSlope: 65.2240677 + outSlope: 65.2240677 + tangentMode: 0 + - time: .333333343 + value: 0 + inSlope: 54.0999985 + outSlope: 54.0999985 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -6.96841162e-05 + inSlope: .000224082294 + outSlope: .000224082294 + tangentMode: 0 + - time: .333333343 + value: 0 + inSlope: .000224082294 + outSlope: .000224082294 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.z + path: + classID: 4 + script: {fileID: 0} + m_Events: [] diff --git a/Assets/Examples/Assets/Animations/Camera/SetupRoom/DefaultFP.anim.meta b/Assets/Examples/Assets/Animations/Camera/SetupRoom/DefaultFP.anim.meta new file mode 100644 index 0000000..514560e --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/SetupRoom/DefaultFP.anim.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: d471026accf88e54ebe8be373a086976 +NativeFormatImporter: + userData: diff --git a/Assets/Examples/Assets/Animations/Camera/SetupRoom/Dossier.anim b/Assets/Examples/Assets/Animations/Camera/SetupRoom/Dossier.anim new file mode 100644 index 0000000..799c2ca --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/SetupRoom/Dossier.anim @@ -0,0 +1,1005 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Dossier + serializedVersion: 4 + m_AnimationType: 2 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .228520751, y: 0, z: 0, w: .973539054} + inSlope: {x: -.0147968521, y: .0568895862, z: -.0133398948, w: .00344037986} + outSlope: {x: -.0147968521, y: .0568895862, z: -.0133398948, w: .00344037986} + tangentMode: 487232352 + - time: .0166666675 + value: {x: .228274137, y: .000948159839, z: -.000222331597, w: .973596394} + inSlope: {x: -.0289624911, y: .111211911, z: -.0259901583, w: .00655889465} + outSlope: {x: -.0289624911, y: .111211911, z: -.0259901583, w: .00655889465} + tangentMode: 0 + - time: .0333333351 + value: {x: .227555335, y: .00370706385, z: -.000866338669, w: .973757684} + inSlope: {x: -.056392096, y: .216027826, z: -.0501566678, w: .0121021252} + outSlope: {x: -.056392096, y: .216027826, z: -.0501566678, w: .0121021252} + tangentMode: 0 + - time: .0500000045 + value: {x: .2263944, y: .00814908836, z: -.00189422083, w: .973999798} + inSlope: {x: -.0820675492, y: .313205153, z: -.0719474405, w: .0160360336} + outSlope: {x: -.0820675492, y: .313205153, z: -.0719474405, w: .0160360336} + tangentMode: 0 + - time: .0666666701 + value: {x: .22481975, y: .014147236, z: -.00326458691, w: .974292219} + inSlope: {x: -.106065281, y: .402768791, z: -.0911794454, w: .0179904718} + outSlope: {x: -.106065281, y: .402768791, z: -.0911794454, w: .0179904718} + tangentMode: 52 + - time: .0833333358 + value: {x: .222858891, y: .0215747133, z: -.00493353559, w: .974599481} + inSlope: {x: -.128420606, y: .484718382, z: -.107731812, w: .0177294035} + outSlope: {x: -.128420606, y: .484718382, z: -.107731812, w: .0177294035} + tangentMode: 1 + - time: .100000001 + value: {x: .220539063, y: .0303045139, z: -.00685564708, w: .974883199} + inSlope: {x: -.149138436, y: .559031308, z: -.121540919, w: .0151294488} + outSlope: {x: -.149138436, y: .559031308, z: -.121540919, w: .0151294488} + tangentMode: 32 + - time: .116666667 + value: {x: .21788761, y: .0402090885, z: -.00898489915, w: .975103796} + inSlope: {x: -.168191016, y: .625666857, z: -.132596135, w: .0101870289} + outSlope: {x: -.168191016, y: .625666857, z: -.132596135, w: .0101870289} + tangentMode: 487232752 + - time: .13333334 + value: {x: .214932695, y: .0511600785, z: -.0112755187, w: .975222766} + inSlope: {x: -.185525686, y: .684569478, z: -.140935034, w: .00299155572} + outSlope: {x: -.185525686, y: .684569478, z: -.140935034, w: .00299155572} + tangentMode: 0 + - time: .150000006 + value: {x: .21170342, y: .0630280748, z: -.0136827342, w: .975203514} + inSlope: {x: -.201071814, y: .735676885, z: -.146639511, w: -.00628173398} + outSlope: {x: -.201071814, y: .735676885, z: -.146639511, w: -.00628173398} + tangentMode: 488897071 + - time: .166666672 + value: {x: .208230302, y: .0756826401, z: -.0161635019, w: .975013375} + inSlope: {x: -.214745268, y: .778922677, z: -.149830997, w: -.0173735637} + outSlope: {x: -.214745268, y: .778922677, z: -.149830997, w: -.0173735637} + tangentMode: 487232732 + - time: .183333337 + value: {x: .204545245, y: .0889921635, z: -.0186771005, w: .974624395} + inSlope: {x: -.226451769, y: .814246058, z: -.150666505, w: -.0299531259} + outSlope: {x: -.226451769, y: .814246058, z: -.150666505, w: -.0299531259} + tangentMode: -52 + - time: .200000003 + value: {x: .20068191, y: .102824174, z: -.0211857185, w: .974014938} + inSlope: {x: -.236094758, y: .8415941, z: -.149333239, w: -.0436359681} + outSlope: {x: -.236094758, y: .8415941, z: -.149333239, w: -.0436359681} + tangentMode: 0 + - time: .216666669 + value: {x: .19667542, y: .117045298, z: -.0236548744, w: .973169863} + inSlope: {x: -.243581697, y: .860925436, z: -.146043211, w: -.0579965189} + outSlope: {x: -.243581697, y: .860925436, z: -.146043211, w: -.0579965189} + tangentMode: 48 + - time: .233333334 + value: {x: .192562521, y: .131521687, z: -.0260538254, w: .972081721} + inSlope: {x: -.248820961, y: .872217298, z: -.141029, w: -.072562702} + outSlope: {x: -.248820961, y: .872217298, z: -.141029, w: -.072562702} + tangentMode: 487233156 + - time: .25 + value: {x: .188381389, y: .146119207, z: -.0283558406, w: .970751107} + inSlope: {x: -.251735955, y: .875466466, z: -.134536862, w: -.0868552551} + outSlope: {x: -.251735955, y: .875466466, z: -.134536862, w: -.0868552551} + tangentMode: 6 + - time: .266666681 + value: {x: .184171319, y: .160703912, z: -.0305383895, w: .969186544} + inSlope: {x: -.252260208, y: .870689034, z: -.126821324, w: -.100368172} + outSlope: {x: -.252260208, y: .870689034, z: -.126821324, w: -.100368172} + tangentMode: -1 + - time: .283333361 + value: {x: .179972708, y: .175142199, z: -.0325832218, w: .967405498} + inSlope: {x: -.250339299, y: .857923508, z: -.118138969, w: -.112599045} + outSlope: {x: -.250339299, y: .857923508, z: -.118138969, w: -.112599045} + tangentMode: 1 + - time: .300000042 + value: {x: .175826669, y: .189301386, z: -.0344763584, w: .96543324} + inSlope: {x: -.245938689, y: .837227583, z: -.108741909, w: -.123066798} + outSlope: {x: -.245938689, y: .837227583, z: -.108741909, w: -.123066798} + tangentMode: 1065353216 + - time: .316666722 + value: {x: .171774745, y: .203049809, z: -.0362079553, w: .963303268} + inSlope: {x: -.239035577, y: .808673263, z: -.098871842, w: -.131302953} + outSlope: {x: -.239035577, y: .808673263, z: -.098871842, w: -.131302953} + tangentMode: 0 + - time: .333333403 + value: {x: .167858809, y: .216257185, z: -.0377720892, w: .961056471} + inSlope: {x: -.229620591, y: .772349, z: -.0887538865, w: -.136883736} + outSlope: {x: -.229620591, y: .772349, z: -.0887538865, w: -.136883736} + tangentMode: 1 + - time: .350000083 + value: {x: .164120719, y: .228794798, z: -.0391664207, w: .958740473} + inSlope: {x: -.217699081, y: .728351891, z: -.0785894394, w: -.139424682} + outSlope: {x: -.217699081, y: .728351891, z: -.0785894394, w: -.139424682} + tangentMode: 0 + - time: .366666764 + value: {x: .160602167, y: .240535602, z: -.0403917395, w: .956408978} + inSlope: {x: -.203288913, y: .67677933, z: -.0685509443, w: -.138602138} + outSlope: {x: -.203288913, y: .67677933, z: -.0685509443, w: -.138602138} + tangentMode: 1 + - time: .383333445 + value: {x: .157344416, y: .251354128, z: -.0414514542, w: .954120398} + inSlope: {x: -.18641293, y: .617725194, z: -.0587762035, w: -.134165764} + outSlope: {x: -.18641293, y: .617725194, z: -.0587762035, w: -.134165764} + tangentMode: -212 + - time: .400000125 + value: {x: .154388398, y: .261126459, z: -.0423509479, w: .951936781} + inSlope: {x: -.167097896, y: .551272154, z: -.0493617691, w: -.125933185} + outSlope: {x: -.167097896, y: .551272154, z: -.0493617691, w: -.125933185} + tangentMode: 0 + - time: .416666806 + value: {x: .151774481, y: .269729882, z: -.0430968478, w: .949922621} + inSlope: {x: -.145374268, y: .477486461, z: -.0403578244, w: -.113814972} + outSlope: {x: -.145374268, y: .477486461, z: -.0403578244, w: -.113814972} + tangentMode: 0 + - time: .433333486 + value: {x: .149542585, y: .277042687, z: -.0436962098, w: .948142946} + inSlope: {x: -.121272407, y: .396410495, z: -.0317630284, w: -.0978236571} + outSlope: {x: -.121272407, y: .396410495, z: -.0317630284, w: -.0978236571} + tangentMode: 487233892 + - time: .450000167 + value: {x: .147732064, y: .282943577, z: -.0441556163, w: .94666183} + inSlope: {x: -.0948195904, y: .308051467, z: -.0235183723, w: -.0780826136} + outSlope: {x: -.0948195904, y: .308051467, z: -.0235183723, w: -.0780826136} + tangentMode: -16777216 + - time: .466666847 + value: {x: .14638193, y: .287311077, z: -.0444801562, w: .94554019} + inSlope: {x: -.0660319105, y: .212381601, z: -.0155023728, w: -.0548278838} + outSlope: {x: -.0660319105, y: .212381601, z: -.0155023728, w: -.0548278838} + tangentMode: 0 + - time: .483333528 + value: {x: .145530999, y: .290022969, z: -.0446723625, w: .944834232} + inSlope: {x: -.034924686, y: .109340511, z: -.00752640609, w: -.0284207538} + outSlope: {x: -.034924686, y: .109340511, z: -.00752640609, w: -.0284207538} + tangentMode: 1077936128 + - time: .5 + value: {x: .145217776, y: .290955752, z: -.0447310358, w: .944592834} + inSlope: {x: -.0187935643, y: .055967629, z: -.00352044054, w: -.0144840982} + outSlope: {x: -.0187935643, y: .055967629, z: -.00352044054, w: -.0144840982} + tangentMode: -847701307 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_CompressedRotationCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .270000011, y: 1.47000003, z: -1.62} + inSlope: {x: .00158062053, y: -5.61219565e-07, z: -1.29512216e-06} + outSlope: {x: .00158062053, y: -5.61219565e-07, z: -1.29512216e-06} + tangentMode: 1769172736 + - time: .5 + value: {x: .360000014, y: 1.24000001, z: -1.07000005} + inSlope: {x: -.00115798821, y: 5.38177801e-07, z: -.0127562648} + outSlope: {x: -.00115798821, y: 5.38177801e-07, z: -.0127562648} + tangentMode: 110607784 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - path: 0 + attribute: 1 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + - path: 0 + attribute: 2 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_StartTime: 0 + m_StopTime: .5 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -1.62 + inSlope: -1.29512216e-06 + outSlope: -1.29512216e-06 + tangentMode: 0 + - time: .5 + value: -1.07000005 + inSlope: -.0127562648 + outSlope: -.0127562648 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1.47000003 + inSlope: -5.61219565e-07 + outSlope: -5.61219565e-07 + tangentMode: 0 + - time: .5 + value: 1.24000001 + inSlope: 5.38177801e-07 + outSlope: 5.38177801e-07 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .270000011 + inSlope: .00158062053 + outSlope: .00158062053 + tangentMode: 0 + - time: .5 + value: .360000014 + inSlope: -.00115798821 + outSlope: -.00115798821 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .228520751 + inSlope: -.0147968521 + outSlope: -.0147968521 + tangentMode: 0 + - time: .0166666675 + value: .228274137 + inSlope: -.0289624911 + outSlope: -.0289624911 + tangentMode: 0 + - time: .0333333351 + value: .227555335 + inSlope: -.056392096 + outSlope: -.056392096 + tangentMode: 0 + - time: .0500000045 + value: .2263944 + inSlope: -.0820675492 + outSlope: -.0820675492 + tangentMode: 0 + - time: .0666666701 + value: .22481975 + inSlope: -.106065281 + outSlope: -.106065281 + tangentMode: 0 + - time: .0833333358 + value: .222858891 + inSlope: -.128420606 + outSlope: -.128420606 + tangentMode: 0 + - time: .100000001 + value: .220539063 + inSlope: -.149138436 + outSlope: -.149138436 + tangentMode: 0 + - time: .116666667 + value: .21788761 + inSlope: -.168191016 + outSlope: -.168191016 + tangentMode: 0 + - time: .13333334 + value: .214932695 + inSlope: -.185525686 + outSlope: -.185525686 + tangentMode: 0 + - time: .150000006 + value: .21170342 + inSlope: -.201071814 + outSlope: -.201071814 + tangentMode: 0 + - time: .166666672 + value: .208230302 + inSlope: -.214745268 + outSlope: -.214745268 + tangentMode: 0 + - time: .183333337 + value: .204545245 + inSlope: -.226451769 + outSlope: -.226451769 + tangentMode: 0 + - time: .200000003 + value: .20068191 + inSlope: -.236094758 + outSlope: -.236094758 + tangentMode: 0 + - time: .216666669 + value: .19667542 + inSlope: -.243581697 + outSlope: -.243581697 + tangentMode: 0 + - time: .233333334 + value: .192562521 + inSlope: -.248820961 + outSlope: -.248820961 + tangentMode: 0 + - time: .25 + value: .188381389 + inSlope: -.251735955 + outSlope: -.251735955 + tangentMode: 0 + - time: .266666681 + value: .184171319 + inSlope: -.252260208 + outSlope: -.252260208 + tangentMode: 0 + - time: .283333361 + value: .179972708 + inSlope: -.250339299 + outSlope: -.250339299 + tangentMode: 0 + - time: .300000042 + value: .175826669 + inSlope: -.245938689 + outSlope: -.245938689 + tangentMode: 0 + - time: .316666722 + value: .171774745 + inSlope: -.239035577 + outSlope: -.239035577 + tangentMode: 0 + - time: .333333403 + value: .167858809 + inSlope: -.229620591 + outSlope: -.229620591 + tangentMode: 0 + - time: .350000083 + value: .164120719 + inSlope: -.217699081 + outSlope: -.217699081 + tangentMode: 0 + - time: .366666764 + value: .160602167 + inSlope: -.203288913 + outSlope: -.203288913 + tangentMode: 0 + - time: .383333445 + value: .157344416 + inSlope: -.18641293 + outSlope: -.18641293 + tangentMode: 0 + - time: .400000125 + value: .154388398 + inSlope: -.167097896 + outSlope: -.167097896 + tangentMode: 0 + - time: .416666806 + value: .151774481 + inSlope: -.145374268 + outSlope: -.145374268 + tangentMode: 0 + - time: .433333486 + value: .149542585 + inSlope: -.121272407 + outSlope: -.121272407 + tangentMode: 0 + - time: .450000167 + value: .147732064 + inSlope: -.0948195904 + outSlope: -.0948195904 + tangentMode: 0 + - time: .466666847 + value: .14638193 + inSlope: -.0660319105 + outSlope: -.0660319105 + tangentMode: 0 + - time: .483333528 + value: .145530999 + inSlope: -.034924686 + outSlope: -.034924686 + tangentMode: 0 + - time: .5 + value: .145217776 + inSlope: -.0187935643 + outSlope: -.0187935643 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: .0568895862 + outSlope: .0568895862 + tangentMode: 0 + - time: .0166666675 + value: .000948159839 + inSlope: .111211911 + outSlope: .111211911 + tangentMode: 0 + - time: .0333333351 + value: .00370706385 + inSlope: .216027826 + outSlope: .216027826 + tangentMode: 0 + - time: .0500000045 + value: .00814908836 + inSlope: .313205153 + outSlope: .313205153 + tangentMode: 0 + - time: .0666666701 + value: .014147236 + inSlope: .402768791 + outSlope: .402768791 + tangentMode: 0 + - time: .0833333358 + value: .0215747133 + inSlope: .484718382 + outSlope: .484718382 + tangentMode: 0 + - time: .100000001 + value: .0303045139 + inSlope: .559031308 + outSlope: .559031308 + tangentMode: 0 + - time: .116666667 + value: .0402090885 + inSlope: .625666857 + outSlope: .625666857 + tangentMode: 0 + - time: .13333334 + value: .0511600785 + inSlope: .684569478 + outSlope: .684569478 + tangentMode: 0 + - time: .150000006 + value: .0630280748 + inSlope: .735676885 + outSlope: .735676885 + tangentMode: 0 + - time: .166666672 + value: .0756826401 + inSlope: .778922677 + outSlope: .778922677 + tangentMode: 0 + - time: .183333337 + value: .0889921635 + inSlope: .814246058 + outSlope: .814246058 + tangentMode: 0 + - time: .200000003 + value: .102824174 + inSlope: .8415941 + outSlope: .8415941 + tangentMode: 0 + - time: .216666669 + value: .117045298 + inSlope: .860925436 + outSlope: .860925436 + tangentMode: 0 + - time: .233333334 + value: .131521687 + inSlope: .872217298 + outSlope: .872217298 + tangentMode: 0 + - time: .25 + value: .146119207 + inSlope: .875466466 + outSlope: .875466466 + tangentMode: 0 + - time: .266666681 + value: .160703912 + inSlope: .870689034 + outSlope: .870689034 + tangentMode: 0 + - time: .283333361 + value: .175142199 + inSlope: .857923508 + outSlope: .857923508 + tangentMode: 0 + - time: .300000042 + value: .189301386 + inSlope: .837227583 + outSlope: .837227583 + tangentMode: 0 + - time: .316666722 + value: .203049809 + inSlope: .808673263 + outSlope: .808673263 + tangentMode: 0 + - time: .333333403 + value: .216257185 + inSlope: .772349 + outSlope: .772349 + tangentMode: 0 + - time: .350000083 + value: .228794798 + inSlope: .728351891 + outSlope: .728351891 + tangentMode: 0 + - time: .366666764 + value: .240535602 + inSlope: .67677933 + outSlope: .67677933 + tangentMode: 0 + - time: .383333445 + value: .251354128 + inSlope: .617725194 + outSlope: .617725194 + tangentMode: 0 + - time: .400000125 + value: .261126459 + inSlope: .551272154 + outSlope: .551272154 + tangentMode: 0 + - time: .416666806 + value: .269729882 + inSlope: .477486461 + outSlope: .477486461 + tangentMode: 0 + - time: .433333486 + value: .277042687 + inSlope: .396410495 + outSlope: .396410495 + tangentMode: 0 + - time: .450000167 + value: .282943577 + inSlope: .308051467 + outSlope: .308051467 + tangentMode: 0 + - time: .466666847 + value: .287311077 + inSlope: .212381601 + outSlope: .212381601 + tangentMode: 0 + - time: .483333528 + value: .290022969 + inSlope: .109340511 + outSlope: .109340511 + tangentMode: 0 + - time: .5 + value: .290955752 + inSlope: .055967629 + outSlope: .055967629 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: -.0133398948 + outSlope: -.0133398948 + tangentMode: 0 + - time: .0166666675 + value: -.000222331597 + inSlope: -.0259901583 + outSlope: -.0259901583 + tangentMode: 0 + - time: .0333333351 + value: -.000866338669 + inSlope: -.0501566678 + outSlope: -.0501566678 + tangentMode: 0 + - time: .0500000045 + value: -.00189422083 + inSlope: -.0719474405 + outSlope: -.0719474405 + tangentMode: 0 + - time: .0666666701 + value: -.00326458691 + inSlope: -.0911794454 + outSlope: -.0911794454 + tangentMode: 0 + - time: .0833333358 + value: -.00493353559 + inSlope: -.107731812 + outSlope: -.107731812 + tangentMode: 0 + - time: .100000001 + value: -.00685564708 + inSlope: -.121540919 + outSlope: -.121540919 + tangentMode: 0 + - time: .116666667 + value: -.00898489915 + inSlope: -.132596135 + outSlope: -.132596135 + tangentMode: 0 + - time: .13333334 + value: -.0112755187 + inSlope: -.140935034 + outSlope: -.140935034 + tangentMode: 0 + - time: .150000006 + value: -.0136827342 + inSlope: -.146639511 + outSlope: -.146639511 + tangentMode: 0 + - time: .166666672 + value: -.0161635019 + inSlope: -.149830997 + outSlope: -.149830997 + tangentMode: 0 + - time: .183333337 + value: -.0186771005 + inSlope: -.150666505 + outSlope: -.150666505 + tangentMode: 0 + - time: .200000003 + value: -.0211857185 + inSlope: -.149333239 + outSlope: -.149333239 + tangentMode: 0 + - time: .216666669 + value: -.0236548744 + inSlope: -.146043211 + outSlope: -.146043211 + tangentMode: 0 + - time: .233333334 + value: -.0260538254 + inSlope: -.141029 + outSlope: -.141029 + tangentMode: 0 + - time: .25 + value: -.0283558406 + inSlope: -.134536862 + outSlope: -.134536862 + tangentMode: 0 + - time: .266666681 + value: -.0305383895 + inSlope: -.126821324 + outSlope: -.126821324 + tangentMode: 0 + - time: .283333361 + value: -.0325832218 + inSlope: -.118138969 + outSlope: -.118138969 + tangentMode: 0 + - time: .300000042 + value: -.0344763584 + inSlope: -.108741909 + outSlope: -.108741909 + tangentMode: 0 + - time: .316666722 + value: -.0362079553 + inSlope: -.098871842 + outSlope: -.098871842 + tangentMode: 0 + - time: .333333403 + value: -.0377720892 + inSlope: -.0887538865 + outSlope: -.0887538865 + tangentMode: 0 + - time: .350000083 + value: -.0391664207 + inSlope: -.0785894394 + outSlope: -.0785894394 + tangentMode: 0 + - time: .366666764 + value: -.0403917395 + inSlope: -.0685509443 + outSlope: -.0685509443 + tangentMode: 0 + - time: .383333445 + value: -.0414514542 + inSlope: -.0587762035 + outSlope: -.0587762035 + tangentMode: 0 + - time: .400000125 + value: -.0423509479 + inSlope: -.0493617691 + outSlope: -.0493617691 + tangentMode: 0 + - time: .416666806 + value: -.0430968478 + inSlope: -.0403578244 + outSlope: -.0403578244 + tangentMode: 0 + - time: .433333486 + value: -.0436962098 + inSlope: -.0317630284 + outSlope: -.0317630284 + tangentMode: 0 + - time: .450000167 + value: -.0441556163 + inSlope: -.0235183723 + outSlope: -.0235183723 + tangentMode: 0 + - time: .466666847 + value: -.0444801562 + inSlope: -.0155023728 + outSlope: -.0155023728 + tangentMode: 0 + - time: .483333528 + value: -.0446723625 + inSlope: -.00752640609 + outSlope: -.00752640609 + tangentMode: 0 + - time: .5 + value: -.0447310358 + inSlope: -.00352044054 + outSlope: -.00352044054 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .973539054 + inSlope: .00344037986 + outSlope: .00344037986 + tangentMode: 0 + - time: .0166666675 + value: .973596394 + inSlope: .00655889465 + outSlope: .00655889465 + tangentMode: 0 + - time: .0333333351 + value: .973757684 + inSlope: .0121021252 + outSlope: .0121021252 + tangentMode: 0 + - time: .0500000045 + value: .973999798 + inSlope: .0160360336 + outSlope: .0160360336 + tangentMode: 0 + - time: .0666666701 + value: .974292219 + inSlope: .0179904718 + outSlope: .0179904718 + tangentMode: 0 + - time: .0833333358 + value: .974599481 + inSlope: .0177294035 + outSlope: .0177294035 + tangentMode: 0 + - time: .100000001 + value: .974883199 + inSlope: .0151294488 + outSlope: .0151294488 + tangentMode: 0 + - time: .116666667 + value: .975103796 + inSlope: .0101870289 + outSlope: .0101870289 + tangentMode: 0 + - time: .13333334 + value: .975222766 + inSlope: .00299155572 + outSlope: .00299155572 + tangentMode: 0 + - time: .150000006 + value: .975203514 + inSlope: -.00628173398 + outSlope: -.00628173398 + tangentMode: 0 + - time: .166666672 + value: .975013375 + inSlope: -.0173735637 + outSlope: -.0173735637 + tangentMode: 0 + - time: .183333337 + value: .974624395 + inSlope: -.0299531259 + outSlope: -.0299531259 + tangentMode: 0 + - time: .200000003 + value: .974014938 + inSlope: -.0436359681 + outSlope: -.0436359681 + tangentMode: 0 + - time: .216666669 + value: .973169863 + inSlope: -.0579965189 + outSlope: -.0579965189 + tangentMode: 0 + - time: .233333334 + value: .972081721 + inSlope: -.072562702 + outSlope: -.072562702 + tangentMode: 0 + - time: .25 + value: .970751107 + inSlope: -.0868552551 + outSlope: -.0868552551 + tangentMode: 0 + - time: .266666681 + value: .969186544 + inSlope: -.100368172 + outSlope: -.100368172 + tangentMode: 0 + - time: .283333361 + value: .967405498 + inSlope: -.112599045 + outSlope: -.112599045 + tangentMode: 0 + - time: .300000042 + value: .96543324 + inSlope: -.123066798 + outSlope: -.123066798 + tangentMode: 0 + - time: .316666722 + value: .963303268 + inSlope: -.131302953 + outSlope: -.131302953 + tangentMode: 0 + - time: .333333403 + value: .961056471 + inSlope: -.136883736 + outSlope: -.136883736 + tangentMode: 0 + - time: .350000083 + value: .958740473 + inSlope: -.139424682 + outSlope: -.139424682 + tangentMode: 0 + - time: .366666764 + value: .956408978 + inSlope: -.138602138 + outSlope: -.138602138 + tangentMode: 0 + - time: .383333445 + value: .954120398 + inSlope: -.134165764 + outSlope: -.134165764 + tangentMode: 0 + - time: .400000125 + value: .951936781 + inSlope: -.125933185 + outSlope: -.125933185 + tangentMode: 0 + - time: .416666806 + value: .949922621 + inSlope: -.113814972 + outSlope: -.113814972 + tangentMode: 0 + - time: .433333486 + value: .948142946 + inSlope: -.0978236571 + outSlope: -.0978236571 + tangentMode: 0 + - time: .450000167 + value: .94666183 + inSlope: -.0780826136 + outSlope: -.0780826136 + tangentMode: 0 + - time: .466666847 + value: .94554019 + inSlope: -.0548278838 + outSlope: -.0548278838 + tangentMode: 0 + - time: .483333528 + value: .944834232 + inSlope: -.0284207538 + outSlope: -.0284207538 + tangentMode: 0 + - time: .5 + value: .944592834 + inSlope: -.0144840982 + outSlope: -.0144840982 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.w + path: + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 26.4199944 + inSlope: -8.97951304e-06 + outSlope: -8.97951304e-06 + tangentMode: 0 + - time: .5 + value: 17.4799995 + inSlope: -.229551315 + outSlope: -.229551315 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: -0 + outSlope: -0 + tangentMode: 0 + - time: .5 + value: 34.2399979 + inSlope: -0 + outSlope: -0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: -.000160224343 + outSlope: -.000160224343 + tangentMode: 10 + - time: .5 + value: -8.01121714e-05 + inSlope: -.000160224343 + outSlope: -.000160224343 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.z + path: + classID: 4 + script: {fileID: 0} + m_Events: [] diff --git a/Assets/Examples/Assets/Animations/Camera/SetupRoom/Dossier.anim.meta b/Assets/Examples/Assets/Animations/Camera/SetupRoom/Dossier.anim.meta new file mode 100644 index 0000000..e984932 --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/SetupRoom/Dossier.anim.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: ac3a4fd8ff1288d44b35ff3e3bb1863d +NativeFormatImporter: + userData: diff --git a/Assets/Examples/Assets/Animations/Camera/SetupRoom/FreePlay.anim b/Assets/Examples/Assets/Animations/Camera/SetupRoom/FreePlay.anim new file mode 100644 index 0000000..641ec3a --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/SetupRoom/FreePlay.anim @@ -0,0 +1,1005 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: FreePlay + serializedVersion: 4 + m_AnimationType: 2 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .228520751, y: 0, z: 0, w: .973539054} + inSlope: {x: -.0113922348, y: -.0740021989, z: .0173543524, w: .00262141204} + outSlope: {x: -.0113922348, y: -.0740021989, z: .0173543524, w: .00262141204} + tangentMode: 0 + - time: .0166666675 + value: {x: .22833088, y: -.00123337004, z: .000289239222, w: .973582745} + inSlope: {x: -.0209198873, y: -.144631013, z: .0338395685, w: .00452399207} + outSlope: {x: -.0209198873, y: -.144631013, z: .0338395685, w: .00452399207} + tangentMode: 0 + - time: .0333333351 + value: {x: .227823421, y: -.00482103415, z: .00112798566, w: .973689854} + inSlope: {x: -.039469596, y: -.280854136, z: .0654182136, w: .00743150618} + outSlope: {x: -.039469596, y: -.280854136, z: .0654182136, w: .00743150618} + tangentMode: 0 + - time: .0500000045 + value: {x: .227015227, y: -.0105951754, z: .00246984651, w: .973830462} + inSlope: {x: -.0570854545, y: -.407017946, z: .094118759, w: .00818967819} + outSlope: {x: -.0570854545, y: -.407017946, z: .094118759, w: .00818967819} + tangentMode: 0 + - time: .0666666701 + value: {x: .225920573, y: -.0183882993, z: .00426527765, w: .973962843} + inSlope: {x: -.0738935247, y: -.52312541, z: .119779371, w: .00620484445} + outSlope: {x: -.0738935247, y: -.52312541, z: .119779371, w: .00620484445} + tangentMode: 0 + - time: .0833333358 + value: {x: .22455211, y: -.0280326884, z: .00646249205, w: .97403729} + inSlope: {x: -.0899617448, y: -.629147768, z: .142290294, w: .00110685837} + outSlope: {x: -.0899617448, y: -.629147768, z: .142290294, w: .00110685837} + tangentMode: 0 + - time: .100000001 + value: {x: .222921848, y: -.0393598899, z: .00900828745, w: .973999739} + inSlope: {x: -.105304874, y: -.725027323, z: .161590084, w: -.00729203271} + outSlope: {x: -.105304874, y: -.725027323, z: .161590084, w: -.00729203271} + tangentMode: 0 + - time: .116666667 + value: {x: .221041948, y: -.0522002652, z: .0118488278, w: .973794222} + inSlope: {x: -.119889811, y: -.810684323, z: .177662537, w: -.0190007649} + outSlope: {x: -.119889811, y: -.810684323, z: .177662537, w: -.0190007649} + tangentMode: 0 + - time: .13333334 + value: {x: .218925521, y: -.0663827062, z: .0149303731, w: .97336638} + inSlope: {x: -.133648202, y: -.886024714, z: .190533146, w: -.0338584147} + outSlope: {x: -.133648202, y: -.886024714, z: .190533146, w: -.0338584147} + tangentMode: 0 + - time: .150000006 + value: {x: .216587007, y: -.0817344263, z: .0181999337, w: .972665608} + inSlope: {x: -.146477237, y: -.950950384, z: .200267494, w: -.0515663661} + outSlope: {x: -.146477237, y: -.950950384, z: .200267494, w: -.0515663661} + tangentMode: 0 + - time: .166666672 + value: {x: .214042947, y: -.0980810523, z: .0216059554, w: .971647501} + inSlope: {x: -.158247665, y: -1.00536954, z: .20696798, w: -.07169009} + outSlope: {x: -.158247665, y: -1.00536954, z: .20696798, w: -.07169009} + tangentMode: 0 + - time: .183333337 + value: {x: .211312085, y: -.115246743, z: .0250988659, w: .970275939} + inSlope: {x: -.168817356, y: -1.04920292, z: .210769832, w: -.0936913565} + outSlope: {x: -.168817356, y: -1.04920292, z: .210769832, w: -.0936913565} + tangentMode: 0 + - time: .200000003 + value: {x: .208415702, y: -.13305448, z: .0286316164, w: .968524456} + inSlope: {x: -.178031191, y: -1.08239615, z: .211839139, w: -.116944328} + outSlope: {x: -.178031191, y: -1.08239615, z: .211839139, w: -.116944328} + tangentMode: 0 + - time: .216666669 + value: {x: .205377713, y: -.151326612, z: .0321601704, w: .966377795} + inSlope: {x: -.185734943, y: -1.10492754, z: .210367903, w: -.140749827} + outSlope: {x: -.185734943, y: -1.10492754, z: .210367903, w: -.140749827} + tangentMode: 0 + - time: .233333334 + value: {x: .202224538, y: -.169885397, z: .0356438793, w: .963832796} + inSlope: {x: -.191776171, y: -1.11680889, z: .206568897, w: -.16434969} + outSlope: {x: -.191776171, y: -1.11680889, z: .206568897, w: -.16434969} + tangentMode: 0 + - time: .25 + value: {x: .198985174, y: -.188553572, z: .0390457995, w: .960899472} + inSlope: {x: -.196009055, y: -1.11809444, z: .200672626, w: -.186955258} + outSlope: {x: -.196009055, y: -1.11809444, z: .200672626, w: -.186955258} + tangentMode: 0 + - time: .266666681 + value: {x: .1956909, y: -.207155228, z: .0423329696, w: .957600951} + inSlope: {x: -.19830583, y: -1.10887885, z: .19291985, w: -.207767308} + outSlope: {x: -.19830583, y: -1.10887885, z: .19291985, w: -.207767308} + tangentMode: 0 + - time: .283333361 + value: {x: .192374974, y: -.22551623, z: .0454764664, w: .953973889} + inSlope: {x: -.198553935, y: -1.0892911, z: .183554694, w: -.2259956} + outSlope: {x: -.198553935, y: -1.0892911, z: .183554694, w: -.2259956} + tangentMode: 0 + - time: .300000042 + value: {x: .18907243, y: -.243464962, z: .0484514646, w: .950067759} + inSlope: {x: -.19665806, y: -1.05950296, z: .172821179, w: -.240867525} + outSlope: {x: -.19665806, y: -1.05950296, z: .172821179, w: -.240867525} + tangentMode: 0 + - time: .316666722 + value: {x: .1858197, y: -.260833025, z: .0512371771, w: .945944965} + inSlope: {x: -.192546234, y: -1.01971102, z: .160955101, w: -.251657158} + outSlope: {x: -.192546234, y: -1.01971102, z: .160955101, w: -.251657158} + tangentMode: 0 + - time: .333333403 + value: {x: .182654217, y: -.27745536, z: .0538166389, w: .94167918} + inSlope: {x: -.186167061, y: -.97012651, z: .148175836, w: -.257708222} + outSlope: {x: -.186167061, y: -.97012651, z: .148175836, w: -.257708222} + tangentMode: 0 + - time: .350000083 + value: {x: .179614127, y: -.293170601, z: .0561763756, w: .937354684} + inSlope: {x: -.17748341, y: -.910976648, z: .134682328, w: -.25843063} + outSlope: {x: -.17748341, y: -.910976648, z: .134682328, w: -.25843063} + tangentMode: 0 + - time: .366666764 + value: {x: .176738098, y: -.307821274, z: .0583060533, w: .933064818} + inSlope: {x: -.166482776, y: -.842484713, z: .120646223, w: -.253338009} + outSlope: {x: -.166482776, y: -.842484713, z: .120646223, w: -.253338009} + tangentMode: 0 + - time: .383333445 + value: {x: .174064696, y: -.321253449, z: .0601979196, w: .928910077} + inSlope: {x: -.153170556, y: -.764852762, z: .106202759, w: -.242062002} + outSlope: {x: -.153170556, y: -.764852762, z: .106202759, w: -.242062002} + tangentMode: 0 + - time: .400000125 + value: {x: .171632409, y: -.333316386, z: .0618461482, w: .924996078} + inSlope: {x: -.137560993, y: -.678251386, z: .0914471596, w: -.224359453} + outSlope: {x: -.137560993, y: -.678251386, z: .0914471596, w: -.224359453} + tangentMode: 0 + - time: .416666806 + value: {x: .169479325, y: -.343861848, z: .0632461607, w: .921431422} + inSlope: {x: -.119681858, y: -.582804203, z: .07642892, w: -.200119451} + outSlope: {x: -.119681858, y: -.582804203, z: .07642892, w: -.200119451} + tangentMode: 0 + - time: .433333486 + value: {x: .167643011, y: -.352743208, z: .0643937811, w: .918325424} + inSlope: {x: -.0995693281, y: -.47857812, z: .0611440316, w: -.169390291} + outSlope: {x: -.0995693281, y: -.47857812, z: .0611440316, w: -.169390291} + tangentMode: 0 + - time: .450000167 + value: {x: .166160345, y: -.359814465, z: .0652842969, w: .915785074} + inSlope: {x: -.0772694647, y: -.365566015, z: .0455306843, w: -.132397294} + outSlope: {x: -.0772694647, y: -.365566015, z: .0455306843, w: -.132397294} + tangentMode: 0 + - time: .466666847 + value: {x: .16506736, y: -.364928752, z: .0659114718, w: .913912177} + inSlope: {x: -.0528314263, y: -.243673116, z: .0294642653, w: -.0895481557} + outSlope: {x: -.0528314263, y: -.243673116, z: .0294642653, w: -.0895481557} + tangentMode: 0 + - time: .483333528 + value: {x: .164399296, y: -.367936909, z: .0662664399, w: .912800133} + inSlope: {x: -.0263165496, y: -.11272002, z: .0127503425, w: -.0414545015} + outSlope: {x: -.0263165496, y: -.11272002, z: .0127503425, w: -.0414545015} + tangentMode: 247 + - time: .5 + value: {x: .164190143, y: -.36868608, z: .0663364828, w: .912530363} + inSlope: {x: -.0125493081, y: -.0449507721, z: .00420262339, w: -.0161864273} + outSlope: {x: -.0125493081, y: -.0449507721, z: .00420262339, w: -.0161864273} + tangentMode: 25246 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_CompressedRotationCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: {x: .270000011, y: 1.47000003, z: -1.62} + inSlope: {x: .00207707682, y: 0, z: 0} + outSlope: {x: .00207707682, y: 0, z: 0} + tangentMode: 0 + - time: .5 + value: {x: .239999995, y: 1.28999996, z: -1.20000005} + inSlope: {x: -.00378385629, y: -0, z: -.00189292384} + outSlope: {x: -.00378385629, y: -0, z: -.00189292384} + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - path: 0 + attribute: 1 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + - path: 0 + attribute: 2 + script: {fileID: 0} + classID: 4 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_StartTime: 0 + m_StopTime: .5 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .270000011 + inSlope: .00207707682 + outSlope: .00207707682 + tangentMode: 0 + - time: .5 + value: .239999995 + inSlope: -.00378385629 + outSlope: -.00378385629 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1.47000003 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: .5 + value: 1.28999996 + inSlope: -0 + outSlope: -0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -1.62 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: .5 + value: -1.20000005 + inSlope: -.00189292384 + outSlope: -.00189292384 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .228520751 + inSlope: -.0113922348 + outSlope: -.0113922348 + tangentMode: 0 + - time: .0166666675 + value: .22833088 + inSlope: -.0209198873 + outSlope: -.0209198873 + tangentMode: 0 + - time: .0333333351 + value: .227823421 + inSlope: -.039469596 + outSlope: -.039469596 + tangentMode: 0 + - time: .0500000045 + value: .227015227 + inSlope: -.0570854545 + outSlope: -.0570854545 + tangentMode: 0 + - time: .0666666701 + value: .225920573 + inSlope: -.0738935247 + outSlope: -.0738935247 + tangentMode: 0 + - time: .0833333358 + value: .22455211 + inSlope: -.0899617448 + outSlope: -.0899617448 + tangentMode: 0 + - time: .100000001 + value: .222921848 + inSlope: -.105304874 + outSlope: -.105304874 + tangentMode: 0 + - time: .116666667 + value: .221041948 + inSlope: -.119889811 + outSlope: -.119889811 + tangentMode: 0 + - time: .13333334 + value: .218925521 + inSlope: -.133648202 + outSlope: -.133648202 + tangentMode: 0 + - time: .150000006 + value: .216587007 + inSlope: -.146477237 + outSlope: -.146477237 + tangentMode: 0 + - time: .166666672 + value: .214042947 + inSlope: -.158247665 + outSlope: -.158247665 + tangentMode: 0 + - time: .183333337 + value: .211312085 + inSlope: -.168817356 + outSlope: -.168817356 + tangentMode: 0 + - time: .200000003 + value: .208415702 + inSlope: -.178031191 + outSlope: -.178031191 + tangentMode: 0 + - time: .216666669 + value: .205377713 + inSlope: -.185734943 + outSlope: -.185734943 + tangentMode: 0 + - time: .233333334 + value: .202224538 + inSlope: -.191776171 + outSlope: -.191776171 + tangentMode: 0 + - time: .25 + value: .198985174 + inSlope: -.196009055 + outSlope: -.196009055 + tangentMode: 0 + - time: .266666681 + value: .1956909 + inSlope: -.19830583 + outSlope: -.19830583 + tangentMode: 0 + - time: .283333361 + value: .192374974 + inSlope: -.198553935 + outSlope: -.198553935 + tangentMode: 0 + - time: .300000042 + value: .18907243 + inSlope: -.19665806 + outSlope: -.19665806 + tangentMode: 0 + - time: .316666722 + value: .1858197 + inSlope: -.192546234 + outSlope: -.192546234 + tangentMode: 0 + - time: .333333403 + value: .182654217 + inSlope: -.186167061 + outSlope: -.186167061 + tangentMode: 0 + - time: .350000083 + value: .179614127 + inSlope: -.17748341 + outSlope: -.17748341 + tangentMode: 0 + - time: .366666764 + value: .176738098 + inSlope: -.166482776 + outSlope: -.166482776 + tangentMode: 0 + - time: .383333445 + value: .174064696 + inSlope: -.153170556 + outSlope: -.153170556 + tangentMode: 0 + - time: .400000125 + value: .171632409 + inSlope: -.137560993 + outSlope: -.137560993 + tangentMode: 0 + - time: .416666806 + value: .169479325 + inSlope: -.119681858 + outSlope: -.119681858 + tangentMode: 0 + - time: .433333486 + value: .167643011 + inSlope: -.0995693281 + outSlope: -.0995693281 + tangentMode: 0 + - time: .450000167 + value: .166160345 + inSlope: -.0772694647 + outSlope: -.0772694647 + tangentMode: 0 + - time: .466666847 + value: .16506736 + inSlope: -.0528314263 + outSlope: -.0528314263 + tangentMode: 0 + - time: .483333528 + value: .164399296 + inSlope: -.0263165496 + outSlope: -.0263165496 + tangentMode: 0 + - time: .5 + value: .164190143 + inSlope: -.0125493081 + outSlope: -.0125493081 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: -.0740021989 + outSlope: -.0740021989 + tangentMode: 0 + - time: .0166666675 + value: -.00123337004 + inSlope: -.144631013 + outSlope: -.144631013 + tangentMode: 0 + - time: .0333333351 + value: -.00482103415 + inSlope: -.280854136 + outSlope: -.280854136 + tangentMode: 0 + - time: .0500000045 + value: -.0105951754 + inSlope: -.407017946 + outSlope: -.407017946 + tangentMode: 0 + - time: .0666666701 + value: -.0183882993 + inSlope: -.52312541 + outSlope: -.52312541 + tangentMode: 0 + - time: .0833333358 + value: -.0280326884 + inSlope: -.629147768 + outSlope: -.629147768 + tangentMode: 0 + - time: .100000001 + value: -.0393598899 + inSlope: -.725027323 + outSlope: -.725027323 + tangentMode: 0 + - time: .116666667 + value: -.0522002652 + inSlope: -.810684323 + outSlope: -.810684323 + tangentMode: 0 + - time: .13333334 + value: -.0663827062 + inSlope: -.886024714 + outSlope: -.886024714 + tangentMode: 0 + - time: .150000006 + value: -.0817344263 + inSlope: -.950950384 + outSlope: -.950950384 + tangentMode: 0 + - time: .166666672 + value: -.0980810523 + inSlope: -1.00536954 + outSlope: -1.00536954 + tangentMode: 0 + - time: .183333337 + value: -.115246743 + inSlope: -1.04920292 + outSlope: -1.04920292 + tangentMode: 0 + - time: .200000003 + value: -.13305448 + inSlope: -1.08239615 + outSlope: -1.08239615 + tangentMode: 0 + - time: .216666669 + value: -.151326612 + inSlope: -1.10492754 + outSlope: -1.10492754 + tangentMode: 0 + - time: .233333334 + value: -.169885397 + inSlope: -1.11680889 + outSlope: -1.11680889 + tangentMode: 0 + - time: .25 + value: -.188553572 + inSlope: -1.11809444 + outSlope: -1.11809444 + tangentMode: 0 + - time: .266666681 + value: -.207155228 + inSlope: -1.10887885 + outSlope: -1.10887885 + tangentMode: 0 + - time: .283333361 + value: -.22551623 + inSlope: -1.0892911 + outSlope: -1.0892911 + tangentMode: 0 + - time: .300000042 + value: -.243464962 + inSlope: -1.05950296 + outSlope: -1.05950296 + tangentMode: 0 + - time: .316666722 + value: -.260833025 + inSlope: -1.01971102 + outSlope: -1.01971102 + tangentMode: 0 + - time: .333333403 + value: -.27745536 + inSlope: -.97012651 + outSlope: -.97012651 + tangentMode: 0 + - time: .350000083 + value: -.293170601 + inSlope: -.910976648 + outSlope: -.910976648 + tangentMode: 0 + - time: .366666764 + value: -.307821274 + inSlope: -.842484713 + outSlope: -.842484713 + tangentMode: 0 + - time: .383333445 + value: -.321253449 + inSlope: -.764852762 + outSlope: -.764852762 + tangentMode: 0 + - time: .400000125 + value: -.333316386 + inSlope: -.678251386 + outSlope: -.678251386 + tangentMode: 0 + - time: .416666806 + value: -.343861848 + inSlope: -.582804203 + outSlope: -.582804203 + tangentMode: 0 + - time: .433333486 + value: -.352743208 + inSlope: -.47857812 + outSlope: -.47857812 + tangentMode: 0 + - time: .450000167 + value: -.359814465 + inSlope: -.365566015 + outSlope: -.365566015 + tangentMode: 0 + - time: .466666847 + value: -.364928752 + inSlope: -.243673116 + outSlope: -.243673116 + tangentMode: 0 + - time: .483333528 + value: -.367936909 + inSlope: -.11272002 + outSlope: -.11272002 + tangentMode: 0 + - time: .5 + value: -.36868608 + inSlope: -.0449507721 + outSlope: -.0449507721 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: .0173543524 + outSlope: .0173543524 + tangentMode: 0 + - time: .0166666675 + value: .000289239222 + inSlope: .0338395685 + outSlope: .0338395685 + tangentMode: 0 + - time: .0333333351 + value: .00112798566 + inSlope: .0654182136 + outSlope: .0654182136 + tangentMode: 0 + - time: .0500000045 + value: .00246984651 + inSlope: .094118759 + outSlope: .094118759 + tangentMode: 0 + - time: .0666666701 + value: .00426527765 + inSlope: .119779371 + outSlope: .119779371 + tangentMode: 0 + - time: .0833333358 + value: .00646249205 + inSlope: .142290294 + outSlope: .142290294 + tangentMode: 0 + - time: .100000001 + value: .00900828745 + inSlope: .161590084 + outSlope: .161590084 + tangentMode: 0 + - time: .116666667 + value: .0118488278 + inSlope: .177662537 + outSlope: .177662537 + tangentMode: 0 + - time: .13333334 + value: .0149303731 + inSlope: .190533146 + outSlope: .190533146 + tangentMode: 0 + - time: .150000006 + value: .0181999337 + inSlope: .200267494 + outSlope: .200267494 + tangentMode: 0 + - time: .166666672 + value: .0216059554 + inSlope: .20696798 + outSlope: .20696798 + tangentMode: 0 + - time: .183333337 + value: .0250988659 + inSlope: .210769832 + outSlope: .210769832 + tangentMode: 0 + - time: .200000003 + value: .0286316164 + inSlope: .211839139 + outSlope: .211839139 + tangentMode: 0 + - time: .216666669 + value: .0321601704 + inSlope: .210367903 + outSlope: .210367903 + tangentMode: 0 + - time: .233333334 + value: .0356438793 + inSlope: .206568897 + outSlope: .206568897 + tangentMode: 0 + - time: .25 + value: .0390457995 + inSlope: .200672626 + outSlope: .200672626 + tangentMode: 0 + - time: .266666681 + value: .0423329696 + inSlope: .19291985 + outSlope: .19291985 + tangentMode: 0 + - time: .283333361 + value: .0454764664 + inSlope: .183554694 + outSlope: .183554694 + tangentMode: 0 + - time: .300000042 + value: .0484514646 + inSlope: .172821179 + outSlope: .172821179 + tangentMode: 0 + - time: .316666722 + value: .0512371771 + inSlope: .160955101 + outSlope: .160955101 + tangentMode: 0 + - time: .333333403 + value: .0538166389 + inSlope: .148175836 + outSlope: .148175836 + tangentMode: 0 + - time: .350000083 + value: .0561763756 + inSlope: .134682328 + outSlope: .134682328 + tangentMode: 0 + - time: .366666764 + value: .0583060533 + inSlope: .120646223 + outSlope: .120646223 + tangentMode: 0 + - time: .383333445 + value: .0601979196 + inSlope: .106202759 + outSlope: .106202759 + tangentMode: 0 + - time: .400000125 + value: .0618461482 + inSlope: .0914471596 + outSlope: .0914471596 + tangentMode: 0 + - time: .416666806 + value: .0632461607 + inSlope: .07642892 + outSlope: .07642892 + tangentMode: 0 + - time: .433333486 + value: .0643937811 + inSlope: .0611440316 + outSlope: .0611440316 + tangentMode: 0 + - time: .450000167 + value: .0652842969 + inSlope: .0455306843 + outSlope: .0455306843 + tangentMode: 0 + - time: .466666847 + value: .0659114718 + inSlope: .0294642653 + outSlope: .0294642653 + tangentMode: 0 + - time: .483333528 + value: .0662664399 + inSlope: .0127503425 + outSlope: .0127503425 + tangentMode: 0 + - time: .5 + value: .0663364828 + inSlope: .00420262339 + outSlope: .00420262339 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.z + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: .973539054 + inSlope: .00262141204 + outSlope: .00262141204 + tangentMode: 0 + - time: .0166666675 + value: .973582745 + inSlope: .00452399207 + outSlope: .00452399207 + tangentMode: 0 + - time: .0333333351 + value: .973689854 + inSlope: .00743150618 + outSlope: .00743150618 + tangentMode: 0 + - time: .0500000045 + value: .973830462 + inSlope: .00818967819 + outSlope: .00818967819 + tangentMode: 0 + - time: .0666666701 + value: .973962843 + inSlope: .00620484445 + outSlope: .00620484445 + tangentMode: 0 + - time: .0833333358 + value: .97403729 + inSlope: .00110685837 + outSlope: .00110685837 + tangentMode: 0 + - time: .100000001 + value: .973999739 + inSlope: -.00729203271 + outSlope: -.00729203271 + tangentMode: 0 + - time: .116666667 + value: .973794222 + inSlope: -.0190007649 + outSlope: -.0190007649 + tangentMode: 0 + - time: .13333334 + value: .97336638 + inSlope: -.0338584147 + outSlope: -.0338584147 + tangentMode: 0 + - time: .150000006 + value: .972665608 + inSlope: -.0515663661 + outSlope: -.0515663661 + tangentMode: 0 + - time: .166666672 + value: .971647501 + inSlope: -.07169009 + outSlope: -.07169009 + tangentMode: 0 + - time: .183333337 + value: .970275939 + inSlope: -.0936913565 + outSlope: -.0936913565 + tangentMode: 0 + - time: .200000003 + value: .968524456 + inSlope: -.116944328 + outSlope: -.116944328 + tangentMode: 0 + - time: .216666669 + value: .966377795 + inSlope: -.140749827 + outSlope: -.140749827 + tangentMode: 0 + - time: .233333334 + value: .963832796 + inSlope: -.16434969 + outSlope: -.16434969 + tangentMode: 0 + - time: .25 + value: .960899472 + inSlope: -.186955258 + outSlope: -.186955258 + tangentMode: 0 + - time: .266666681 + value: .957600951 + inSlope: -.207767308 + outSlope: -.207767308 + tangentMode: 0 + - time: .283333361 + value: .953973889 + inSlope: -.2259956 + outSlope: -.2259956 + tangentMode: 0 + - time: .300000042 + value: .950067759 + inSlope: -.240867525 + outSlope: -.240867525 + tangentMode: 0 + - time: .316666722 + value: .945944965 + inSlope: -.251657158 + outSlope: -.251657158 + tangentMode: 0 + - time: .333333403 + value: .94167918 + inSlope: -.257708222 + outSlope: -.257708222 + tangentMode: 0 + - time: .350000083 + value: .937354684 + inSlope: -.25843063 + outSlope: -.25843063 + tangentMode: 0 + - time: .366666764 + value: .933064818 + inSlope: -.253338009 + outSlope: -.253338009 + tangentMode: 0 + - time: .383333445 + value: .928910077 + inSlope: -.242062002 + outSlope: -.242062002 + tangentMode: 0 + - time: .400000125 + value: .924996078 + inSlope: -.224359453 + outSlope: -.224359453 + tangentMode: 0 + - time: .416666806 + value: .921431422 + inSlope: -.200119451 + outSlope: -.200119451 + tangentMode: 0 + - time: .433333486 + value: .918325424 + inSlope: -.169390291 + outSlope: -.169390291 + tangentMode: 0 + - time: .450000167 + value: .915785074 + inSlope: -.132397294 + outSlope: -.132397294 + tangentMode: 0 + - time: .466666847 + value: .913912177 + inSlope: -.0895481557 + outSlope: -.0895481557 + tangentMode: 0 + - time: .483333528 + value: .912800133 + inSlope: -.0414545015 + outSlope: -.0414545015 + tangentMode: 0 + - time: .5 + value: .912530363 + inSlope: -.0161864273 + outSlope: -.0161864273 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: m_LocalRotation.w + path: + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 26.4199944 + inSlope: -.173660994 + outSlope: -.173660994 + tangentMode: 0 + - time: .5 + value: 20.3999767 + inSlope: -0 + outSlope: -0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: -86.3966675 + outSlope: -.000735469337 + tangentMode: 1 + - time: .5 + value: -44 + inSlope: 3.25927806 + outSlope: -86.3966675 + tangentMode: 1 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: -.000139368232 + outSlope: -.000139368232 + tangentMode: 10 + - time: .5 + value: -6.96841162e-05 + inSlope: -.000139368232 + outSlope: -.000139368232 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: localEulerAnglesBaked.z + path: + classID: 4 + script: {fileID: 0} + m_Events: [] diff --git a/Assets/Examples/Assets/Animations/Camera/SetupRoom/FreePlay.anim.meta b/Assets/Examples/Assets/Animations/Camera/SetupRoom/FreePlay.anim.meta new file mode 100644 index 0000000..70621a4 --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/SetupRoom/FreePlay.anim.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 6ce19df6108709241a42ba8d47e53773 +NativeFormatImporter: + userData: diff --git a/Assets/Examples/Assets/Animations/Camera/SetupRoom/SetupRoomCamera.controller b/Assets/Examples/Assets/Animations/Camera/SetupRoom/SetupRoomCamera.controller new file mode 100644 index 0000000..8c10827 --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/SetupRoom/SetupRoomCamera.controller @@ -0,0 +1,365 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: SetupRoomCamera + serializedVersion: 2 + m_AnimatorParameters: + - m_Name: Holdable + m_Type: 3 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + m_AnimatorLayers: + - serializedVersion: 3 + m_Name: Base Layer + m_StateMachine: {fileID: 110749692} + m_Mask: {fileID: 0} + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_StateMachineMotionSetIndex: 0 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!1101 &110105996 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110213590} + m_DstState: {fileID: 110293316} + m_TransitionDuration: .25 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 6 + m_ConditionEvent: Holdable + m_EventTreshold: 3 + m_ExitTime: .75 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1101 &110111124 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110280740} + m_DstState: {fileID: 110291354} + m_TransitionDuration: .25 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 7 + m_ConditionEvent: Holdable + m_EventTreshold: 1 + m_ExitTime: .75 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1101 &110136078 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110213590} + m_DstState: {fileID: 110258376} + m_TransitionDuration: .25 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 6 + m_ConditionEvent: Holdable + m_EventTreshold: 2 + m_ExitTime: .75 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1101 &110137420 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110293316} + m_DstState: {fileID: 110298252} + m_TransitionDuration: .5 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 7 + m_ConditionEvent: Holdable + m_EventTreshold: 3 + m_ExitTime: .5 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1101 &110148394 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110291354} + m_DstState: {fileID: 110213590} + m_TransitionDuration: .25 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 5 + m_ConditionEvent: Holdable + m_EventTreshold: 1 + m_ExitTime: 0 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1101 &110160510 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110258376} + m_DstState: {fileID: 110218582} + m_TransitionDuration: .5 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 7 + m_ConditionEvent: Holdable + m_EventTreshold: 2 + m_ExitTime: .5 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1101 &110177060 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110298252} + m_DstState: {fileID: 110213590} + m_TransitionDuration: .25 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 5 + m_ConditionEvent: Holdable + m_EventTreshold: 3 + m_ExitTime: 0 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1101 &110193362 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110218582} + m_DstState: {fileID: 110213590} + m_TransitionDuration: .260787785 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 5 + m_ConditionEvent: Holdable + m_EventTreshold: 0 + m_ExitTime: 0 + m_Atomic: 0 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1101 &110194442 +Transition: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110213590} + m_DstState: {fileID: 110280740} + m_TransitionDuration: .25 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 6 + m_ConditionEvent: Holdable + m_EventTreshold: 1 + m_ExitTime: .75 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 + m_CanTransitionToSelf: 0 +--- !u!1102 &110213590 +State: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Default + m_Speed: 1 + m_CycleOffset: 0 + m_Motions: + - {fileID: 7400000, guid: 97690973012c0be47b6f79932d824d78, type: 2} + m_ParentStateMachine: {fileID: 110749692} + m_Position: {x: 120, y: 144, z: 0} + m_IKOnFeet: 0 + m_Mirror: 0 + m_Tag: +--- !u!1102 &110218582 +State: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: DefaultBombBinder + m_Speed: 1 + m_CycleOffset: 0 + m_Motions: + - {fileID: 7400000, guid: 870778bdcff411849b4e1d0a20901989, type: 2} + m_ParentStateMachine: {fileID: 110749692} + m_Position: {x: -12, y: -36, z: 0} + m_IKOnFeet: 0 + m_Mirror: 0 + m_Tag: +--- !u!1102 &110258376 +State: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: BombBinder + m_Speed: 1 + m_CycleOffset: 0 + m_Motions: + - {fileID: 7400000, guid: f1b3de65fd3e2e64aa180acba8b5b83b, type: 2} + m_ParentStateMachine: {fileID: 110749692} + m_Position: {x: 120, y: -192, z: 0} + m_IKOnFeet: 0 + m_Mirror: 0 + m_Tag: +--- !u!1102 &110280740 +State: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: FreePlay + m_Speed: 1 + m_CycleOffset: 0 + m_Motions: + - {fileID: 7400000, guid: 6ce19df6108709241a42ba8d47e53773, type: 2} + m_ParentStateMachine: {fileID: 110749692} + m_Position: {x: -336, y: -84, z: 0} + m_IKOnFeet: 0 + m_Mirror: 0 + m_Tag: +--- !u!1102 &110291354 +State: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: DefaultFP + m_Speed: 1 + m_CycleOffset: 0 + m_Motions: + - {fileID: 7400000, guid: d471026accf88e54ebe8be373a086976, type: 2} + m_ParentStateMachine: {fileID: 110749692} + m_Position: {x: -288, y: 36, z: 0} + m_IKOnFeet: 0 + m_Mirror: 0 + m_Tag: +--- !u!1102 &110293316 +State: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Dossier + m_Speed: 1 + m_CycleOffset: 0 + m_Motions: + - {fileID: 7400000, guid: ac3a4fd8ff1288d44b35ff3e3bb1863d, type: 2} + m_ParentStateMachine: {fileID: 110749692} + m_Position: {x: 528, y: -120, z: 0} + m_IKOnFeet: 0 + m_Mirror: 0 + m_Tag: +--- !u!1102 &110298252 +State: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: DefaultDossier + m_Speed: 1 + m_CycleOffset: 0 + m_Motions: + - {fileID: 7400000, guid: e8a9a3d3390713747af63c553d07b221, type: 2} + m_ParentStateMachine: {fileID: 110749692} + m_Position: {x: 456, y: 36, z: 0} + m_IKOnFeet: 0 + m_Mirror: 0 + m_Tag: +--- !u!1107 &110749692 +StateMachine: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Base Layer + m_DefaultState: {fileID: 110213590} + m_States: + - {fileID: 110258376} + - {fileID: 110293316} + - {fileID: 110280740} + - {fileID: 110218582} + - {fileID: 110291354} + - {fileID: 110298252} + - {fileID: 110213590} + m_ChildStateMachine: [] + m_ChildStateMachinePosition: [] + m_OrderedTransitions: + data: + first: {fileID: 110213590} + second: + - {fileID: 110136078} + - {fileID: 110105996} + - {fileID: 110194442} + data: + first: {fileID: 110258376} + second: + - {fileID: 110160510} + data: + first: {fileID: 110293316} + second: + - {fileID: 110137420} + data: + first: {fileID: 110280740} + second: + - {fileID: 110111124} + data: + first: {fileID: 110218582} + second: + - {fileID: 110193362} + data: + first: {fileID: 110291354} + second: + - {fileID: 110148394} + data: + first: {fileID: 110298252} + second: + - {fileID: 110177060} + m_MotionSetCount: 1 + m_AnyStatePosition: {x: -348, y: 192, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} diff --git a/Assets/Examples/Assets/Animations/Camera/SetupRoom/SetupRoomCamera.controller.meta b/Assets/Examples/Assets/Animations/Camera/SetupRoom/SetupRoomCamera.controller.meta new file mode 100644 index 0000000..214322a --- /dev/null +++ b/Assets/Examples/Assets/Animations/Camera/SetupRoom/SetupRoomCamera.controller.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 785c5450a3e7f104abee04346d7ea0d6 +NativeFormatImporter: + userData: diff --git a/Assets/Examples/Assets/Animations/NeedyBacking.meta b/Assets/Examples/Assets/Animations/NeedyBacking.meta new file mode 100644 index 0000000..eda9fa0 --- /dev/null +++ b/Assets/Examples/Assets/Animations/NeedyBacking.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c5ea3b88cedc6d34cab52f97ffdccc89 +folderAsset: yes +timeCreated: 1468347562 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Animations/NeedyBacking/Inactive.anim b/Assets/Examples/Assets/Animations/NeedyBacking/Inactive.anim new file mode 100644 index 0000000..b2833a4 --- /dev/null +++ b/Assets/Examples/Assets/Animations/NeedyBacking/Inactive.anim @@ -0,0 +1,195 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Inactive + serializedVersion: 4 + m_AnimationType: 2 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: material._Color.r + path: ComponentBacking + classID: 23 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: material._Color.g + path: ComponentBacking + classID: 23 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: material._Color.b + path: ComponentBacking + classID: 23 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: material._Color.a + path: ComponentBacking + classID: 23 + script: {fileID: 0} + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_AnimationClipSettings: + serializedVersion: 2 + m_StartTime: 0 + m_StopTime: 1 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: material._Color.r + path: ComponentBacking + classID: 23 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: material._Color.g + path: ComponentBacking + classID: 23 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: material._Color.b + path: ComponentBacking + classID: 23 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: material._Color.a + path: ComponentBacking + classID: 23 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_Events: [] diff --git a/Assets/Examples/Assets/Animations/NeedyBacking/Inactive.anim.meta b/Assets/Examples/Assets/Animations/NeedyBacking/Inactive.anim.meta new file mode 100644 index 0000000..9ae954f --- /dev/null +++ b/Assets/Examples/Assets/Animations/NeedyBacking/Inactive.anim.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 298e9423e54e558438229502a5b8f7c0 +NativeFormatImporter: + userData: diff --git a/Assets/Examples/Assets/Animations/NeedyBacking/NeedyBackingAnimController.controller b/Assets/Examples/Assets/Animations/NeedyBacking/NeedyBackingAnimController.controller new file mode 100644 index 0000000..51c7b18 --- /dev/null +++ b/Assets/Examples/Assets/Animations/NeedyBacking/NeedyBackingAnimController.controller @@ -0,0 +1,119 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: NeedyBackingAnimController + serializedVersion: 2 + m_AnimatorParameters: + - m_Name: isActive + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + m_AnimatorLayers: + - serializedVersion: 3 + m_Name: Base Layer + m_StateMachine: {fileID: 110700000} + m_Mask: {fileID: 0} + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_StateMachineMotionSetIndex: 0 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!1101 &110100000 +Transition: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110269001} + m_DstState: {fileID: 110200000} + m_TransitionDuration: .25 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: isActive + m_EventTreshold: 0 + m_ExitTime: .75 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 +--- !u!1101 &110142309 +Transition: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_SrcState: {fileID: 110200000} + m_DstState: {fileID: 110269001} + m_TransitionDuration: .25 + m_TransitionOffset: 0 + m_Conditions: + - m_ConditionMode: 2 + m_ConditionEvent: isActive + m_EventTreshold: 0 + m_ExitTime: .75 + m_Atomic: 1 + m_Solo: 0 + m_Mute: 0 +--- !u!1102 &110200000 +State: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: PanicAnim + m_Speed: 1 + m_CycleOffset: 0 + m_Motions: + - {fileID: 7400000, guid: c6d8b99d28710d149bc561726cbbc811, type: 2} + m_ParentStateMachine: {fileID: 110700000} + m_Position: {x: 192, y: -12, z: 0} + m_IKOnFeet: 0 + m_Mirror: 0 + m_Tag: +--- !u!1102 &110269001 +State: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Inactive + m_Speed: 1 + m_CycleOffset: 0 + m_Motions: + - {fileID: 7400000, guid: 298e9423e54e558438229502a5b8f7c0, type: 2} + m_ParentStateMachine: {fileID: 110700000} + m_Position: {x: 192, y: 120, z: 0} + m_IKOnFeet: 0 + m_Mirror: 0 + m_Tag: +--- !u!1107 &110700000 +StateMachine: + serializedVersion: 2 + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Base Layer + m_DefaultState: {fileID: 110269001} + m_States: + - {fileID: 110200000} + - {fileID: 110269001} + m_ChildStateMachine: [] + m_ChildStateMachinePosition: [] + m_OrderedTransitions: + data: + first: {fileID: 110269001} + second: + - {fileID: 110100000} + data: + first: {fileID: 110200000} + second: + - {fileID: 110142309} + m_MotionSetCount: 1 + m_AnyStatePosition: {x: -12, y: 48, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} diff --git a/Assets/Examples/Assets/Animations/NeedyBacking/NeedyBackingAnimController.controller.meta b/Assets/Examples/Assets/Animations/NeedyBacking/NeedyBackingAnimController.controller.meta new file mode 100644 index 0000000..042daec --- /dev/null +++ b/Assets/Examples/Assets/Animations/NeedyBacking/NeedyBackingAnimController.controller.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 7d8a5a6893042e5498484574468a6877 +NativeFormatImporter: + userData: diff --git a/Assets/Examples/Assets/Animations/NeedyBacking/PanicAnim.anim b/Assets/Examples/Assets/Animations/NeedyBacking/PanicAnim.anim new file mode 100644 index 0000000..5f18c8a --- /dev/null +++ b/Assets/Examples/Assets/Animations/NeedyBacking/PanicAnim.anim @@ -0,0 +1,225 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: PanicAnim + serializedVersion: 4 + m_AnimationType: 2 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: material._Color.r + path: ComponentBacking + classID: 23 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: -2 + outSlope: -2 + tangentMode: 10 + - time: .5 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + - time: 1 + value: 1 + inSlope: 2 + outSlope: 2 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: material._Color.g + path: ComponentBacking + classID: 23 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: -2 + outSlope: -2 + tangentMode: 10 + - time: .5 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + - time: 1 + value: 1 + inSlope: 2 + outSlope: 2 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: material._Color.b + path: ComponentBacking + classID: 23 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: -2 + outSlope: -2 + tangentMode: 10 + - time: .5 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + - time: 1 + value: 1 + inSlope: 2 + outSlope: 2 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: material._Color.a + path: ComponentBacking + classID: 23 + script: {fileID: 0} + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_AnimationClipSettings: + serializedVersion: 2 + m_StartTime: 0 + m_StopTime: 1 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: material._Color.r + path: ComponentBacking + classID: 23 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: -2 + outSlope: -2 + tangentMode: 10 + - time: .5 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + - time: 1 + value: 1 + inSlope: 2 + outSlope: 2 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: material._Color.g + path: ComponentBacking + classID: 23 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: -2 + outSlope: -2 + tangentMode: 10 + - time: .5 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + - time: 1 + value: 1 + inSlope: 2 + outSlope: 2 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: material._Color.b + path: ComponentBacking + classID: 23 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: -2 + outSlope: -2 + tangentMode: 10 + - time: .5 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 10 + - time: 1 + value: 1 + inSlope: 2 + outSlope: 2 + tangentMode: 10 + m_PreInfinity: 2 + m_PostInfinity: 2 + attribute: material._Color.a + path: ComponentBacking + classID: 23 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_Events: [] diff --git a/Assets/Examples/Assets/Animations/NeedyBacking/PanicAnim.anim.meta b/Assets/Examples/Assets/Animations/NeedyBacking/PanicAnim.anim.meta new file mode 100644 index 0000000..66fdbb7 --- /dev/null +++ b/Assets/Examples/Assets/Animations/NeedyBacking/PanicAnim.anim.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: c6d8b99d28710d149bc561726cbbc811 +NativeFormatImporter: + userData: diff --git a/Assets/Examples/Assets/Fonts.meta b/Assets/Examples/Assets/Fonts.meta new file mode 100644 index 0000000..8aae3b5 --- /dev/null +++ b/Assets/Examples/Assets/Fonts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7ab63898db401ee4b93871b8d31a1748 +folderAsset: yes +timeCreated: 1464546456 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Fonts/Digits.ttf b/Assets/Examples/Assets/Fonts/Digits.ttf new file mode 100644 index 0000000..9cc2032 Binary files /dev/null and b/Assets/Examples/Assets/Fonts/Digits.ttf differ diff --git a/Assets/Examples/Assets/Fonts/Digits.ttf.meta b/Assets/Examples/Assets/Fonts/Digits.ttf.meta new file mode 100644 index 0000000..b9ec4e3 --- /dev/null +++ b/Assets/Examples/Assets/Fonts/Digits.ttf.meta @@ -0,0 +1,19 @@ +fileFormatVersion: 2 +guid: 3d2e2ed63c7a0ed4cb4a7a6d1661e19e +timeCreated: 1468339038 +licenseType: Pro +TrueTypeFontImporter: + serializedVersion: 3 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 1 + characterPadding: 0 + includeFontData: 1 + fontNames: [] + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Fonts/OstrichSans-Heavy_90.otf b/Assets/Examples/Assets/Fonts/OstrichSans-Heavy_90.otf new file mode 100644 index 0000000..e93aed3 Binary files /dev/null and b/Assets/Examples/Assets/Fonts/OstrichSans-Heavy_90.otf differ diff --git a/Assets/Examples/Assets/Fonts/OstrichSans-Heavy_90.otf.meta b/Assets/Examples/Assets/Fonts/OstrichSans-Heavy_90.otf.meta new file mode 100644 index 0000000..4753f31 --- /dev/null +++ b/Assets/Examples/Assets/Fonts/OstrichSans-Heavy_90.otf.meta @@ -0,0 +1,19 @@ +fileFormatVersion: 2 +guid: 1ebe1d96973a920409b439b3a0e2bb63 +timeCreated: 1464546457 +licenseType: Pro +TrueTypeFontImporter: + serializedVersion: 3 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 1 + characterPadding: 0 + includeFontData: 1 + fontNames: [] + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Materials.meta b/Assets/Examples/Assets/Materials.meta new file mode 100644 index 0000000..da9e3d8 --- /dev/null +++ b/Assets/Examples/Assets/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1d1d62aeecfe0c5448bef2d8125ff42b +folderAsset: yes +timeCreated: 1464546350 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Materials/ButtonMasherMaterial.mat b/Assets/Examples/Assets/Materials/ButtonMasherMaterial.mat new file mode 100644 index 0000000..c6e5943 --- /dev/null +++ b/Assets/Examples/Assets/Materials/ButtonMasherMaterial.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: ButtonMasherMaterial + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: 0.5 + data: + first: + name: _Parallax + second: 0.02 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: 0.5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/Examples/Assets/Materials/ButtonMasherMaterial.mat.meta b/Assets/Examples/Assets/Materials/ButtonMasherMaterial.mat.meta new file mode 100644 index 0000000..abf163d --- /dev/null +++ b/Assets/Examples/Assets/Materials/ButtonMasherMaterial.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8f7f26afd91498b498c87c8270923d4e +timeCreated: 1466170965 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Materials/DigitsMaterial.mat b/Assets/Examples/Assets/Materials/DigitsMaterial.mat new file mode 100644 index 0000000..4093ccd --- /dev/null +++ b/Assets/Examples/Assets/Materials/DigitsMaterial.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: DigitsMaterial + m_Shader: {fileID: 4800000, guid: 306ffc165961a2c40806bad3bb861c43, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: 3000 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 3d2e2ed63c7a0ed4cb4a7a6d1661e19e, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: 0.5 + data: + first: + name: _Parallax + second: 0.02 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: 0.5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/Examples/Assets/Materials/DigitsMaterial.mat.meta b/Assets/Examples/Assets/Materials/DigitsMaterial.mat.meta new file mode 100644 index 0000000..a1aef97 --- /dev/null +++ b/Assets/Examples/Assets/Materials/DigitsMaterial.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 15c95a7eef23cc347bec7faac5e5a6cb +timeCreated: 1468339311 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Materials/DisplayCase.mat b/Assets/Examples/Assets/Materials/DisplayCase.mat new file mode 100644 index 0000000..e22f287 --- /dev/null +++ b/Assets/Examples/Assets/Materials/DisplayCase.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: DisplayCase + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: 0.5 + data: + first: + name: _Parallax + second: 0.02 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: 1 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0.797 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 0.5319398, g: 0.5344828, b: 0.49125254, a: 1} diff --git a/Assets/Examples/Assets/Materials/DisplayCase.mat.meta b/Assets/Examples/Assets/Materials/DisplayCase.mat.meta new file mode 100644 index 0000000..469fc2a --- /dev/null +++ b/Assets/Examples/Assets/Materials/DisplayCase.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d5164abd841a17b4dbb70d86302fce6b +timeCreated: 1468797046 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Materials/EmojiDisplay.mat b/Assets/Examples/Assets/Materials/EmojiDisplay.mat new file mode 100644 index 0000000..0da00d9 --- /dev/null +++ b/Assets/Examples/Assets/Materials/EmojiDisplay.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: EmojiDisplay + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: 0.5 + data: + first: + name: _Parallax + second: 0.02 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: 1 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 1 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 0.113793105, g: 0.113793105, b: 0.113793105, a: 1} diff --git a/Assets/Examples/Assets/Materials/EmojiDisplay.mat.meta b/Assets/Examples/Assets/Materials/EmojiDisplay.mat.meta new file mode 100644 index 0000000..29a4db9 --- /dev/null +++ b/Assets/Examples/Assets/Materials/EmojiDisplay.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e82aca2a9ebb7644281c9066f81ae562 +timeCreated: 1468796580 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Materials/TextMaterial.mat b/Assets/Examples/Assets/Materials/TextMaterial.mat new file mode 100644 index 0000000..a798213 --- /dev/null +++ b/Assets/Examples/Assets/Materials/TextMaterial.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: TextMaterial + m_Shader: {fileID: 4800000, guid: 306ffc165961a2c40806bad3bb861c43, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: 3000 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: 0.5 + data: + first: + name: _Parallax + second: 0.02 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: 0.5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/Examples/Assets/Materials/TextMaterial.mat.meta b/Assets/Examples/Assets/Materials/TextMaterial.mat.meta new file mode 100644 index 0000000..9e2cb02 --- /dev/null +++ b/Assets/Examples/Assets/Materials/TextMaterial.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ea7383a11cc28a24cbea15073b68bf56 +timeCreated: 1464546357 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Models.meta b/Assets/Examples/Assets/Models.meta new file mode 100644 index 0000000..42d0142 --- /dev/null +++ b/Assets/Examples/Assets/Models.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 72427cb34b4abd14da1a298c4b1bdf5c +folderAsset: yes +timeCreated: 1464466696 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Models/Bomb_casing.fbx b/Assets/Examples/Assets/Models/Bomb_casing.fbx new file mode 100644 index 0000000..c5f9c57 Binary files /dev/null and b/Assets/Examples/Assets/Models/Bomb_casing.fbx differ diff --git a/Assets/Examples/Assets/Models/Bomb_casing.fbx.meta b/Assets/Examples/Assets/Models/Bomb_casing.fbx.meta new file mode 100644 index 0000000..328c26f --- /dev/null +++ b/Assets/Examples/Assets/Models/Bomb_casing.fbx.meta @@ -0,0 +1,203 @@ +fileFormatVersion: 2 +guid: 7149e60f23ad112488a95cc3c0cfbbd9 +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: Back + 100002: //RootNode + 100004: Bomb_frame + 100006: Foam_B1 + 100008: Foam_B1_hole + 100010: Foam_B2 + 100012: Foam_B2_hole + 100014: Foam_B3 + 100016: Foam_B3_hole + 100018: Foam_B4 + 100020: Foam_B4_hole + 100022: Foam_B5 + 100024: Foam_B5_hole + 100026: Foam_B6 + 100028: Foam_B6_hole + 100030: Foam_F1 + 100032: Foam_F1_hole + 100034: Foam_F2 + 100036: Foam_F2_hole + 100038: Foam_F3 + 100040: Foam_F3_hole + 100042: Foam_F4 + 100044: Foam_F4_hole + 100046: Foam_F5 + 100048: Foam_F5_hole + 100050: Foam_F6 + 100052: Foam_F6_hole + 100054: Foam_inserts + 100056: Front + 400000: Back + 400002: //RootNode + 400004: Bomb_frame + 400006: Foam_B1 + 400008: Foam_B1_hole + 400010: Foam_B2 + 400012: Foam_B2_hole + 400014: Foam_B3 + 400016: Foam_B3_hole + 400018: Foam_B4 + 400020: Foam_B4_hole + 400022: Foam_B5 + 400024: Foam_B5_hole + 400026: Foam_B6 + 400028: Foam_B6_hole + 400030: Foam_F1 + 400032: Foam_F1_hole + 400034: Foam_F2 + 400036: Foam_F2_hole + 400038: Foam_F3 + 400040: Foam_F3_hole + 400042: Foam_F4 + 400044: Foam_F4_hole + 400046: Foam_F5 + 400048: Foam_F5_hole + 400050: Foam_F6 + 400052: Foam_F6_hole + 400054: Foam_inserts + 400056: Front + 2300000: Bomb_frame + 2300002: Foam_B1 + 2300004: Foam_B1_hole + 2300006: Foam_B2 + 2300008: Foam_B2_hole + 2300010: Foam_B3 + 2300012: Foam_B3_hole + 2300014: Foam_B4 + 2300016: Foam_B4_hole + 2300018: Foam_B5 + 2300020: Foam_B5_hole + 2300022: Foam_B6 + 2300024: Foam_B6_hole + 2300026: Foam_F1 + 2300028: Foam_F1_hole + 2300030: Foam_F2 + 2300032: Foam_F2_hole + 2300034: Foam_F3 + 2300036: Foam_F3_hole + 2300038: Foam_F4 + 2300040: Foam_F4_hole + 2300042: Foam_F5 + 2300044: Foam_F5_hole + 2300046: Foam_F6 + 2300048: Foam_F6_hole + 3300000: Bomb_frame + 3300002: Foam_B1 + 3300004: Foam_B1_hole + 3300006: Foam_B2 + 3300008: Foam_B2_hole + 3300010: Foam_B3 + 3300012: Foam_B3_hole + 3300014: Foam_B4 + 3300016: Foam_B4_hole + 3300018: Foam_B5 + 3300020: Foam_B5_hole + 3300022: Foam_B6 + 3300024: Foam_B6_hole + 3300026: Foam_F1 + 3300028: Foam_F1_hole + 3300030: Foam_F2 + 3300032: Foam_F2_hole + 3300034: Foam_F3 + 3300036: Foam_F3_hole + 3300038: Foam_F4 + 3300040: Foam_F4_hole + 3300042: Foam_F5 + 3300044: Foam_F5_hole + 3300046: Foam_F6 + 3300048: Foam_F6_hole + 4300000: Bomb_frame + 4300002: Foam_F1 + 4300004: Foam_F2 + 4300006: Foam_F3 + 4300008: Foam_F6 + 4300010: Foam_F5 + 4300012: Foam_F4 + 4300014: Foam_F1_hole + 4300016: Foam_F2_hole + 4300018: Foam_F3_hole + 4300020: Foam_F6_hole + 4300022: Foam_F5_hole + 4300024: Foam_F4_hole + 4300026: Foam_B1 + 4300028: Foam_B2 + 4300030: Foam_B3 + 4300032: Foam_B6 + 4300034: Foam_B5 + 4300036: Foam_B4 + 4300038: Foam_B1_hole + 4300040: Foam_B2_hole + 4300042: Foam_B3_hole + 4300044: Foam_B6_hole + 4300046: Foam_B5_hole + 4300048: Foam_B4_hole + 9500000: //RootNode + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleRotations: 1 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 0.001 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 2 + importAnimation: 0 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Models/Bomb_casing_highlight.fbx b/Assets/Examples/Assets/Models/Bomb_casing_highlight.fbx new file mode 100644 index 0000000..6e67a62 Binary files /dev/null and b/Assets/Examples/Assets/Models/Bomb_casing_highlight.fbx differ diff --git a/Assets/Examples/Assets/Models/Bomb_casing_highlight.fbx.meta b/Assets/Examples/Assets/Models/Bomb_casing_highlight.fbx.meta new file mode 100644 index 0000000..af30e69 --- /dev/null +++ b/Assets/Examples/Assets/Models/Bomb_casing_highlight.fbx.meta @@ -0,0 +1,75 @@ +fileFormatVersion: 2 +guid: 6f8c8d009b935654fa677521aec0ba5f +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Bomb_highlight + 9500000: //RootNode + materials: + importMaterials: 0 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleRotations: 1 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 0.001 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 2 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Models/Components.meta b/Assets/Examples/Assets/Models/Components.meta new file mode 100644 index 0000000..efb1229 --- /dev/null +++ b/Assets/Examples/Assets/Models/Components.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2e921cf0b56693a43b1e31a474e903fb +folderAsset: yes +timeCreated: 1464466696 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Models/Components/Component_Highlight.fbx b/Assets/Examples/Assets/Models/Components/Component_Highlight.fbx new file mode 100644 index 0000000..af39b74 Binary files /dev/null and b/Assets/Examples/Assets/Models/Components/Component_Highlight.fbx differ diff --git a/Assets/Examples/Assets/Models/Components/Component_Highlight.fbx.meta b/Assets/Examples/Assets/Models/Components/Component_Highlight.fbx.meta new file mode 100644 index 0000000..d3d35b4 --- /dev/null +++ b/Assets/Examples/Assets/Models/Components/Component_Highlight.fbx.meta @@ -0,0 +1,65 @@ +fileFormatVersion: 2 +guid: 5ab6c3be308beaa47b558e81d501cf7c +ModelImporter: + serializedVersion: 16 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Component_Highlight + 9500000: //RootNode + materials: + importMaterials: 0 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: .00100000005 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 2 + importAnimation: 0 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: diff --git a/Assets/Examples/Assets/Models/Components/Component_Keypad.fbx b/Assets/Examples/Assets/Models/Components/Component_Keypad.fbx new file mode 100644 index 0000000..15536db Binary files /dev/null and b/Assets/Examples/Assets/Models/Components/Component_Keypad.fbx differ diff --git a/Assets/Examples/Assets/Models/Components/Component_Keypad.fbx.meta b/Assets/Examples/Assets/Models/Components/Component_Keypad.fbx.meta new file mode 100644 index 0000000..3e9b9ac --- /dev/null +++ b/Assets/Examples/Assets/Models/Components/Component_Keypad.fbx.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 4109be4c1d23f41498bd9dcc52605aa4 +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: //RootNode + 100002: key + 100004: key 1 + 100006: key 2 + 100008: key 3 + 100010: Key_BL + 100012: Key_BR + 100014: Key_TL + 100016: Key_TR + 100018: LED + 100020: LED 1 + 100022: LED 2 + 100024: LED 3 + 100026: PuzzleBackground + 100028: PuzzleBackground1 + 100030: RecessedInner + 400000: //RootNode + 400002: key + 400004: key 1 + 400006: key 2 + 400008: key 3 + 400010: Key_BL + 400012: Key_BR + 400014: Key_TL + 400016: Key_TR + 400018: LED + 400020: LED 1 + 400022: LED 2 + 400024: LED 3 + 400026: PuzzleBackground + 400028: PuzzleBackground1 + 400030: RecessedInner + 2300000: key + 2300002: key 1 + 2300004: key 2 + 2300006: key 3 + 2300008: LED + 2300010: LED 1 + 2300012: LED 2 + 2300014: LED 3 + 2300016: PuzzleBackground + 2300018: PuzzleBackground1 + 2300020: RecessedInner + 3300000: key + 3300002: key 1 + 3300004: key 2 + 3300006: key 3 + 3300008: LED + 3300010: LED 1 + 3300012: LED 2 + 3300014: LED 3 + 3300016: PuzzleBackground + 3300018: PuzzleBackground1 + 3300020: RecessedInner + 4300000: key + 4300002: LED + 4300004: key + 4300006: LED + 4300008: key + 4300010: LED + 4300012: key + 4300014: LED + 4300016: PuzzleBackground + 4300018: PuzzleBackground1 + 4300020: RecessedInner + 9500000: //RootNode + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleRotations: 1 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 0.001 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 2 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Models/Components/Component_Needy_Background.fbx b/Assets/Examples/Assets/Models/Components/Component_Needy_Background.fbx new file mode 100644 index 0000000..65f2928 Binary files /dev/null and b/Assets/Examples/Assets/Models/Components/Component_Needy_Background.fbx differ diff --git a/Assets/Examples/Assets/Models/Components/Component_Needy_Background.fbx.meta b/Assets/Examples/Assets/Models/Components/Component_Needy_Background.fbx.meta new file mode 100644 index 0000000..4197e4f --- /dev/null +++ b/Assets/Examples/Assets/Models/Components/Component_Needy_Background.fbx.meta @@ -0,0 +1,72 @@ +fileFormatVersion: 2 +guid: de2ecf7201de1d347bce8844cca92160 +ModelImporter: + serializedVersion: 16 + fileIDToRecycleName: + 100000: Background + 100002: //RootNode + 100004: Screen + 400000: Background + 400002: //RootNode + 400004: Screen + 2300000: Background + 2300002: Screen + 3300000: Background + 3300002: Screen + 4300000: Screen + 4300002: Background + 9500000: //RootNode + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: .00100000005 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 2 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: diff --git a/Assets/Examples/Assets/Models/Components/Component_PuzzleBackground.fbx b/Assets/Examples/Assets/Models/Components/Component_PuzzleBackground.fbx new file mode 100644 index 0000000..8633848 Binary files /dev/null and b/Assets/Examples/Assets/Models/Components/Component_PuzzleBackground.fbx differ diff --git a/Assets/Examples/Assets/Models/Components/Component_PuzzleBackground.fbx.meta b/Assets/Examples/Assets/Models/Components/Component_PuzzleBackground.fbx.meta new file mode 100644 index 0000000..5ca1d41 --- /dev/null +++ b/Assets/Examples/Assets/Models/Components/Component_PuzzleBackground.fbx.meta @@ -0,0 +1,77 @@ +fileFormatVersion: 2 +guid: 1c46642b7f907d844bcdfcca8625afdd +timeCreated: 1466169044 +licenseType: Pro +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Component_PuzzleBackground + 9500000: //RootNode + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleRotations: 1 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 0.1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 2 + importAnimation: 0 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 2 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Models/Components/Materials.meta b/Assets/Examples/Assets/Models/Components/Materials.meta new file mode 100644 index 0000000..f06fa13 --- /dev/null +++ b/Assets/Examples/Assets/Models/Components/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d9f0653d15dd45a48ab3ac9c89ad05c4 +folderAsset: yes +timeCreated: 1464466696 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad.mat b/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad.mat new file mode 100644 index 0000000..9c96dfd --- /dev/null +++ b/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad.mat @@ -0,0 +1,28 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Component_Keypad + m_Shader: {fileID: 10703, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: [] + m_CustomRenderQueue: -1 + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: aa79756699c140043bee912f52bb3075, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: {} + m_Colors: + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad.mat.meta b/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad.mat.meta new file mode 100644 index 0000000..0b9383b --- /dev/null +++ b/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad.mat.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 9af52e38fb41bfb42a724d7599f1fe37 +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_Background.mat b/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_Background.mat new file mode 100644 index 0000000..3210f30 --- /dev/null +++ b/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_Background.mat @@ -0,0 +1,28 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Component_Keypad_Background + m_Shader: {fileID: 10703, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: [] + m_CustomRenderQueue: -1 + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 4cb1530793af2f24fb2eb77e256db58b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: {} + m_Colors: + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_Background.mat.meta b/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_Background.mat.meta new file mode 100644 index 0000000..24e8d4a --- /dev/null +++ b/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_Background.mat.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 1df94179db39acc41a994f772ef8891a +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_LED_OFF.mat b/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_LED_OFF.mat new file mode 100644 index 0000000..4be8bf1 --- /dev/null +++ b/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_LED_OFF.mat @@ -0,0 +1,28 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Component_Keypad_LED_OFF + m_Shader: {fileID: 10703, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: [] + m_CustomRenderQueue: -1 + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: d5f229818c40d2b4aaf2bdcc22ecd2fc, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: {} + m_Colors: + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_LED_OFF.mat.meta b/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_LED_OFF.mat.meta new file mode 100644 index 0000000..714f362 --- /dev/null +++ b/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_LED_OFF.mat.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 935bb5c8b474db049908d1d19deb7993 +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_LED_ON.mat b/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_LED_ON.mat new file mode 100644 index 0000000..404a2e6 --- /dev/null +++ b/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_LED_ON.mat @@ -0,0 +1,39 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Component_Keypad_LED_ON + m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: [] + m_CustomRenderQueue: -1 + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: b0de546b2f4aa0040aece448b0c4602b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _Illum + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _EmissionLM + second: 0 + m_Colors: + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_LED_ON.mat.meta b/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_LED_ON.mat.meta new file mode 100644 index 0000000..d5baecd --- /dev/null +++ b/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_LED_ON.mat.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 8c2541a39c73b5a4588c4e95ade4cdda +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_LED_WRONG.mat b/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_LED_WRONG.mat new file mode 100644 index 0000000..378338e --- /dev/null +++ b/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_LED_WRONG.mat @@ -0,0 +1,39 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Component_Keypad_LED_WRONG + m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: [] + m_CustomRenderQueue: -1 + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 68c59101c46962c46b943ac0a4d8d4e7, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _Illum + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _EmissionLM + second: 0 + m_Colors: + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_LED_WRONG.mat.meta b/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_LED_WRONG.mat.meta new file mode 100644 index 0000000..522ceae --- /dev/null +++ b/Assets/Examples/Assets/Models/Components/Materials/Component_Keypad_LED_WRONG.mat.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 1515b0918013c15468573c8cce654ecb +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Models/Components/Materials/Component_Needy_Background.mat b/Assets/Examples/Assets/Models/Components/Materials/Component_Needy_Background.mat new file mode 100644 index 0000000..13645b2 --- /dev/null +++ b/Assets/Examples/Assets/Models/Components/Materials/Component_Needy_Background.mat @@ -0,0 +1,30 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Component_Needy_Background + m_Shader: {fileID: 4800000, guid: f84e4e450c6ae2840b267d49f10e795b, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: bcbbe13f8f3f5934cab266f8a21c00c5, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: {} + m_Colors: + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/Examples/Assets/Models/Components/Materials/Component_Needy_Background.mat.meta b/Assets/Examples/Assets/Models/Components/Materials/Component_Needy_Background.mat.meta new file mode 100644 index 0000000..0e111d9 --- /dev/null +++ b/Assets/Examples/Assets/Models/Components/Materials/Component_Needy_Background.mat.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 71fd4b9053b24e5488cc0d45bfc80547 +NativeFormatImporter: + userData: diff --git a/Assets/Examples/Assets/Models/Components/Materials/Component_Needy_Background_Active.mat b/Assets/Examples/Assets/Models/Components/Materials/Component_Needy_Background_Active.mat new file mode 100644 index 0000000..b578eab --- /dev/null +++ b/Assets/Examples/Assets/Models/Components/Materials/Component_Needy_Background_Active.mat @@ -0,0 +1,28 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Component_Needy_Background_Active + m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: [] + m_CustomRenderQueue: -1 + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: bcbbe13f8f3f5934cab266f8a21c00c5, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: {} + m_Colors: + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/Examples/Assets/Models/Components/Materials/Component_Needy_Background_Active.mat.meta b/Assets/Examples/Assets/Models/Components/Materials/Component_Needy_Background_Active.mat.meta new file mode 100644 index 0000000..2cf499c --- /dev/null +++ b/Assets/Examples/Assets/Models/Components/Materials/Component_Needy_Background_Active.mat.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: bdf32f76f35d20945ac0666d082d736c +NativeFormatImporter: + userData: diff --git a/Assets/Examples/Assets/Models/Components/Materials/Component_PuzzleBackground.mat b/Assets/Examples/Assets/Models/Components/Materials/Component_PuzzleBackground.mat new file mode 100644 index 0000000..ed7e784 --- /dev/null +++ b/Assets/Examples/Assets/Models/Components/Materials/Component_PuzzleBackground.mat @@ -0,0 +1,28 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Component_PuzzleBackground + m_Shader: {fileID: 10703, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: [] + m_CustomRenderQueue: -1 + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: b7685f0652736644fb58059655eb7bd3, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: {} + m_Colors: + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/Examples/Assets/Models/Components/Materials/Component_PuzzleBackground.mat.meta b/Assets/Examples/Assets/Models/Components/Materials/Component_PuzzleBackground.mat.meta new file mode 100644 index 0000000..e4c8233 --- /dev/null +++ b/Assets/Examples/Assets/Models/Components/Materials/Component_PuzzleBackground.mat.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 26cdee844cb231740941635a5e5962c7 +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Models/Materials.meta b/Assets/Examples/Assets/Models/Materials.meta new file mode 100644 index 0000000..dc3f245 --- /dev/null +++ b/Assets/Examples/Assets/Models/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 05617863dd927e741bdc1a19561baf1e +folderAsset: yes +timeCreated: 1464827825 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Models/Materials/Bomb_casing.mat b/Assets/Examples/Assets/Models/Materials/Bomb_casing.mat new file mode 100644 index 0000000..7e1d989 --- /dev/null +++ b/Assets/Examples/Assets/Models/Materials/Bomb_casing.mat @@ -0,0 +1,28 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Bomb_casing + m_Shader: {fileID: 10703, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: [] + m_CustomRenderQueue: -1 + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 5ec68c525425a484b867bed583f4f172, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: {} + m_Colors: + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/Examples/Assets/Models/Materials/Bomb_casing.mat.meta b/Assets/Examples/Assets/Models/Materials/Bomb_casing.mat.meta new file mode 100644 index 0000000..796352b --- /dev/null +++ b/Assets/Examples/Assets/Models/Materials/Bomb_casing.mat.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: a05af7d0cf3f1f945a2c4ae4b1891eea +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Models/Materials/Missile.mat b/Assets/Examples/Assets/Models/Materials/Missile.mat new file mode 100644 index 0000000..22b2d3b --- /dev/null +++ b/Assets/Examples/Assets/Models/Materials/Missile.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Missile + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: 0.5 + data: + first: + name: _Parallax + second: 0.02 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: 0.5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/Examples/Assets/Models/Materials/Missile.mat.meta b/Assets/Examples/Assets/Models/Materials/Missile.mat.meta new file mode 100644 index 0000000..88b00d4 --- /dev/null +++ b/Assets/Examples/Assets/Models/Materials/Missile.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 69baf67ce55f28c42b7a59e813c272fc +timeCreated: 1466014745 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Models/Materials/No Name.mat b/Assets/Examples/Assets/Models/Materials/No Name.mat new file mode 100644 index 0000000..ee695c0 --- /dev/null +++ b/Assets/Examples/Assets/Models/Materials/No Name.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: No Name + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: 0.5 + data: + first: + name: _Parallax + second: 0.02 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: 0.5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/Examples/Assets/Models/Materials/No Name.mat.meta b/Assets/Examples/Assets/Models/Materials/No Name.mat.meta new file mode 100644 index 0000000..fac0c0b --- /dev/null +++ b/Assets/Examples/Assets/Models/Materials/No Name.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ca9379a4787a70245bfc83edffc69126 +timeCreated: 1466014735 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Models/Materials/transparentQuads.mat b/Assets/Examples/Assets/Models/Materials/transparentQuads.mat new file mode 100644 index 0000000..ab4ac16 --- /dev/null +++ b/Assets/Examples/Assets/Models/Materials/transparentQuads.mat @@ -0,0 +1,28 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: transparentQuads + m_Shader: {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: [] + m_CustomRenderQueue: -1 + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: {} + m_Colors: + data: + first: + name: _Color + second: {r: .800000012, g: .800000012, b: .800000012, a: 1} diff --git a/Assets/Examples/Assets/Models/Materials/transparentQuads.mat.meta b/Assets/Examples/Assets/Models/Materials/transparentQuads.mat.meta new file mode 100644 index 0000000..5b50562 --- /dev/null +++ b/Assets/Examples/Assets/Models/Materials/transparentQuads.mat.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 378cb240de36d6044abaf1a86d4c155d +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Models/Missile.fbx b/Assets/Examples/Assets/Models/Missile.fbx new file mode 100644 index 0000000..7d3cd87 Binary files /dev/null and b/Assets/Examples/Assets/Models/Missile.fbx differ diff --git a/Assets/Examples/Assets/Models/Missile.fbx.meta b/Assets/Examples/Assets/Models/Missile.fbx.meta new file mode 100644 index 0000000..ca27aaf --- /dev/null +++ b/Assets/Examples/Assets/Models/Missile.fbx.meta @@ -0,0 +1,82 @@ +fileFormatVersion: 2 +guid: cea7f004f2435fa4481784b4fccc034e +timeCreated: 1466014735 +licenseType: Pro +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: Camera + 100002: Cylinder + 100004: Lamp + 100006: //RootNode + 400000: Camera + 400002: Cylinder + 400004: Lamp + 400006: //RootNode + 2300000: Cylinder + 3300000: Cylinder + 4300000: Cylinder + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleRotations: 1 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Models/PaddedQuad.fbx b/Assets/Examples/Assets/Models/PaddedQuad.fbx new file mode 100644 index 0000000..b0afe95 --- /dev/null +++ b/Assets/Examples/Assets/Models/PaddedQuad.fbx @@ -0,0 +1,1639 @@ +; FBX 6.1.0 project file +; Created by Blender FBX Exporter +; for support mail: ideasman42@gmail.com +; ---------------------------------------------------- + +FBXHeaderExtension: { + FBXHeaderVersion: 1003 + FBXVersion: 6100 + CreationTimeStamp: { + Version: 1000 + Year: 2014 + Month: 11 + Day: 12 + Hour: 14 + Minute: 38 + Second: 57 + Millisecond: 0 + } + Creator: "FBX SDK/FBX Plugins build 20070228" + OtherFlags: { + FlagPLE: 0 + } +} +CreationTime: "2014-11-12 14:38:57:000" +Creator: "Blender version 2.69 (sub 0)" + +; Object definitions +;------------------------------------------------------------------ + +Definitions: { + Version: 100 + Count: 13 + ObjectType: "Model" { + Count: 9 + } + ObjectType: "Geometry" { + Count: 1 + } + ObjectType: "Material" { + Count: 1 + } + ObjectType: "Texture" { + Count: 1 + } + ObjectType: "Video" { + Count: 1 + } + ObjectType: "Pose" { + Count: 1 + } + ObjectType: "GlobalSettings" { + Count: 1 + } +} + +; Object properties +;------------------------------------------------------------------ + +Objects: { + Model: "Model::Camera Switcher", "CameraSwitcher" { + Version: 232 + Properties60: { + Property: "QuaternionInterpolate", "bool", "",0 + Property: "Visibility", "Visibility", "A+",1 + Property: "Lcl Translation", "Lcl Translation", "A+",0.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Rotation", "Lcl Rotation", "A+",0.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Scaling", "Lcl Scaling", "A+",1.000000000000000,1.000000000000000,1.000000000000000 + Property: "RotationOffset", "Vector3D", "",0,0,0 + Property: "RotationPivot", "Vector3D", "",0,0,0 + Property: "ScalingOffset", "Vector3D", "",0,0,0 + Property: "ScalingPivot", "Vector3D", "",0,0,0 + Property: "TranslationActive", "bool", "",0 + Property: "TranslationMin", "Vector3D", "",0,0,0 + Property: "TranslationMax", "Vector3D", "",0,0,0 + Property: "TranslationMinX", "bool", "",0 + Property: "TranslationMinY", "bool", "",0 + Property: "TranslationMinZ", "bool", "",0 + Property: "TranslationMaxX", "bool", "",0 + Property: "TranslationMaxY", "bool", "",0 + Property: "TranslationMaxZ", "bool", "",0 + Property: "RotationOrder", "enum", "",0 + Property: "RotationSpaceForLimitOnly", "bool", "",0 + Property: "AxisLen", "double", "",10 + Property: "PreRotation", "Vector3D", "",0,0,0 + Property: "PostRotation", "Vector3D", "",0,0,0 + Property: "RotationActive", "bool", "",0 + Property: "RotationMin", "Vector3D", "",0,0,0 + Property: "RotationMax", "Vector3D", "",0,0,0 + Property: "RotationMinX", "bool", "",0 + Property: "RotationMinY", "bool", "",0 + Property: "RotationMinZ", "bool", "",0 + Property: "RotationMaxX", "bool", "",0 + Property: "RotationMaxY", "bool", "",0 + Property: "RotationMaxZ", "bool", "",0 + Property: "RotationStiffnessX", "double", "",0 + Property: "RotationStiffnessY", "double", "",0 + Property: "RotationStiffnessZ", "double", "",0 + Property: "MinDampRangeX", "double", "",0 + Property: "MinDampRangeY", "double", "",0 + Property: "MinDampRangeZ", "double", "",0 + Property: "MaxDampRangeX", "double", "",0 + Property: "MaxDampRangeY", "double", "",0 + Property: "MaxDampRangeZ", "double", "",0 + Property: "MinDampStrengthX", "double", "",0 + Property: "MinDampStrengthY", "double", "",0 + Property: "MinDampStrengthZ", "double", "",0 + Property: "MaxDampStrengthX", "double", "",0 + Property: "MaxDampStrengthY", "double", "",0 + Property: "MaxDampStrengthZ", "double", "",0 + Property: "PreferedAngleX", "double", "",0 + Property: "PreferedAngleY", "double", "",0 + Property: "PreferedAngleZ", "double", "",0 + Property: "InheritType", "enum", "",0 + Property: "ScalingActive", "bool", "",0 + Property: "ScalingMin", "Vector3D", "",1,1,1 + Property: "ScalingMax", "Vector3D", "",1,1,1 + Property: "ScalingMinX", "bool", "",0 + Property: "ScalingMinY", "bool", "",0 + Property: "ScalingMinZ", "bool", "",0 + Property: "ScalingMaxX", "bool", "",0 + Property: "ScalingMaxY", "bool", "",0 + Property: "ScalingMaxZ", "bool", "",0 + Property: "GeometricTranslation", "Vector3D", "",0,0,0 + Property: "GeometricRotation", "Vector3D", "",0,0,0 + Property: "GeometricScaling", "Vector3D", "",1,1,1 + Property: "LookAtProperty", "object", "" + Property: "UpVectorProperty", "object", "" + Property: "Show", "bool", "",1 + Property: "NegativePercentShapeSupport", "bool", "",1 + Property: "DefaultAttributeIndex", "int", "",0 + Property: "Color", "Color", "A",0.8,0.8,0.8 + Property: "Camera Index", "Integer", "A+",100 + } + MultiLayer: 0 + MultiTake: 1 + Hidden: "True" + Shading: W + Culling: "CullingOff" + Version: 101 + Name: "Model::Camera Switcher" + CameraId: 0 + CameraName: 100 + CameraIndexName: + } + Model: "Model::Plane", "Mesh" { + Version: 232 + Properties60: { + Property: "QuaternionInterpolate", "bool", "",0 + Property: "Visibility", "Visibility", "A+",1 + Property: "Lcl Translation", "Lcl Translation", "A+",0.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Rotation", "Lcl Rotation", "A+",90.000077636429722,-0.000000000000000,0.000000000000000 + Property: "Lcl Scaling", "Lcl Scaling", "A+",1.000000000000000,1.000000000000000,1.000000000000000 + Property: "RotationOffset", "Vector3D", "",0,0,0 + Property: "RotationPivot", "Vector3D", "",0,0,0 + Property: "ScalingOffset", "Vector3D", "",0,0,0 + Property: "ScalingPivot", "Vector3D", "",0,0,0 + Property: "TranslationActive", "bool", "",0 + Property: "TranslationMin", "Vector3D", "",0,0,0 + Property: "TranslationMax", "Vector3D", "",0,0,0 + Property: "TranslationMinX", "bool", "",0 + Property: "TranslationMinY", "bool", "",0 + Property: "TranslationMinZ", "bool", "",0 + Property: "TranslationMaxX", "bool", "",0 + Property: "TranslationMaxY", "bool", "",0 + Property: "TranslationMaxZ", "bool", "",0 + Property: "RotationOrder", "enum", "",0 + Property: "RotationSpaceForLimitOnly", "bool", "",0 + Property: "AxisLen", "double", "",10 + Property: "PreRotation", "Vector3D", "",0,0,0 + Property: "PostRotation", "Vector3D", "",0,0,0 + Property: "RotationActive", "bool", "",0 + Property: "RotationMin", "Vector3D", "",0,0,0 + Property: "RotationMax", "Vector3D", "",0,0,0 + Property: "RotationMinX", "bool", "",0 + Property: "RotationMinY", "bool", "",0 + Property: "RotationMinZ", "bool", "",0 + Property: "RotationMaxX", "bool", "",0 + Property: "RotationMaxY", "bool", "",0 + Property: "RotationMaxZ", "bool", "",0 + Property: "RotationStiffnessX", "double", "",0 + Property: "RotationStiffnessY", "double", "",0 + Property: "RotationStiffnessZ", "double", "",0 + Property: "MinDampRangeX", "double", "",0 + Property: "MinDampRangeY", "double", "",0 + Property: "MinDampRangeZ", "double", "",0 + Property: "MaxDampRangeX", "double", "",0 + Property: "MaxDampRangeY", "double", "",0 + Property: "MaxDampRangeZ", "double", "",0 + Property: "MinDampStrengthX", "double", "",0 + Property: "MinDampStrengthY", "double", "",0 + Property: "MinDampStrengthZ", "double", "",0 + Property: "MaxDampStrengthX", "double", "",0 + Property: "MaxDampStrengthY", "double", "",0 + Property: "MaxDampStrengthZ", "double", "",0 + Property: "PreferedAngleX", "double", "",0 + Property: "PreferedAngleY", "double", "",0 + Property: "PreferedAngleZ", "double", "",0 + Property: "InheritType", "enum", "",0 + Property: "ScalingActive", "bool", "",0 + Property: "ScalingMin", "Vector3D", "",1,1,1 + Property: "ScalingMax", "Vector3D", "",1,1,1 + Property: "ScalingMinX", "bool", "",0 + Property: "ScalingMinY", "bool", "",0 + Property: "ScalingMinZ", "bool", "",0 + Property: "ScalingMaxX", "bool", "",0 + Property: "ScalingMaxY", "bool", "",0 + Property: "ScalingMaxZ", "bool", "",0 + Property: "GeometricTranslation", "Vector3D", "",0,0,0 + Property: "GeometricRotation", "Vector3D", "",0,0,0 + Property: "GeometricScaling", "Vector3D", "",1,1,1 + Property: "LookAtProperty", "object", "" + Property: "UpVectorProperty", "object", "" + Property: "Show", "bool", "",1 + Property: "NegativePercentShapeSupport", "bool", "",1 + Property: "DefaultAttributeIndex", "int", "",0 + Property: "Color", "Color", "A",0.8,0.8,0.8 + Property: "Size", "double", "",100 + Property: "Look", "enum", "",1 + } + MultiLayer: 0 + MultiTake: 1 + Shading: Y + Culling: "CullingOff" + Vertices: -0.500000,-0.500000,0.000001,0.500000,-0.500000,0.000001,-0.500000,0.500000,-0.000001,0.500000,0.500000,-0.000001 + PolygonVertexIndex: 1,0,2,-4 + GeometryVersion: 124 + LayerElementNormal: 0 { + Version: 101 + Name: "" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Normals: -0.000000,-0.000003,-1.000000,-0.000000,-0.000003,-1.000000,-0.000000,-0.000003,-1.000000,-0.000000,-0.000003,-1.000000 + } + LayerElementSmoothing: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByPolygon" + ReferenceInformationType: "Direct" + Smoothing: 0 + } + LayerElementUV: 0 { + Version: 101 + Name: "UVMap" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "IndexToDirect" + UV: 0.012598,0.987403,0.987403,0.987403,0.012598,0.012598,0.987403,0.012598 + UVIndex: 2,3,1,0 + } + LayerElementTexture: 0 { + Version: 101 + Name: "UVMap" + MappingInformationType: "AllSame" + ReferenceInformationType: "IndexToDirect" + BlendMode: "Translucent" + TextureAlpha: 1 + TextureId: 0 + } + LayerElementMaterial: 0 { + Version: 101 + Name: "" + MappingInformationType: "AllSame" + ReferenceInformationType: "IndexToDirect" + Materials: 0 + } + Layer: 0 { + Version: 100 + LayerElement: { + Type: "LayerElementNormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementSmoothing" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementUV" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementTexture" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementMaterial" + TypedIndex: 0 + } + } + } + Model: "Model::Producer Perspective", "Camera" { + Version: 232 + Properties60: { + Property: "QuaternionInterpolate", "bool", "",0 + Property: "Visibility", "Visibility", "A+",1 + Property: "Lcl Translation", "Lcl Translation", "A+",0.000000000000000,71.299999999999997,287.500000000000000 + Property: "Lcl Rotation", "Lcl Rotation", "A+",0.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Scaling", "Lcl Scaling", "A+",1.000000000000000,1.000000000000000,1.000000000000000 + Property: "RotationOffset", "Vector3D", "",0,0,0 + Property: "RotationPivot", "Vector3D", "",0,0,0 + Property: "ScalingOffset", "Vector3D", "",0,0,0 + Property: "ScalingPivot", "Vector3D", "",0,0,0 + Property: "TranslationActive", "bool", "",0 + Property: "TranslationMin", "Vector3D", "",0,0,0 + Property: "TranslationMax", "Vector3D", "",0,0,0 + Property: "TranslationMinX", "bool", "",0 + Property: "TranslationMinY", "bool", "",0 + Property: "TranslationMinZ", "bool", "",0 + Property: "TranslationMaxX", "bool", "",0 + Property: "TranslationMaxY", "bool", "",0 + Property: "TranslationMaxZ", "bool", "",0 + Property: "RotationOrder", "enum", "",0 + Property: "RotationSpaceForLimitOnly", "bool", "",0 + Property: "AxisLen", "double", "",10 + Property: "PreRotation", "Vector3D", "",0,0,0 + Property: "PostRotation", "Vector3D", "",0,0,0 + Property: "RotationActive", "bool", "",0 + Property: "RotationMin", "Vector3D", "",0,0,0 + Property: "RotationMax", "Vector3D", "",0,0,0 + Property: "RotationMinX", "bool", "",0 + Property: "RotationMinY", "bool", "",0 + Property: "RotationMinZ", "bool", "",0 + Property: "RotationMaxX", "bool", "",0 + Property: "RotationMaxY", "bool", "",0 + Property: "RotationMaxZ", "bool", "",0 + Property: "RotationStiffnessX", "double", "",0 + Property: "RotationStiffnessY", "double", "",0 + Property: "RotationStiffnessZ", "double", "",0 + Property: "MinDampRangeX", "double", "",0 + Property: "MinDampRangeY", "double", "",0 + Property: "MinDampRangeZ", "double", "",0 + Property: "MaxDampRangeX", "double", "",0 + Property: "MaxDampRangeY", "double", "",0 + Property: "MaxDampRangeZ", "double", "",0 + Property: "MinDampStrengthX", "double", "",0 + Property: "MinDampStrengthY", "double", "",0 + Property: "MinDampStrengthZ", "double", "",0 + Property: "MaxDampStrengthX", "double", "",0 + Property: "MaxDampStrengthY", "double", "",0 + Property: "MaxDampStrengthZ", "double", "",0 + Property: "PreferedAngleX", "double", "",0 + Property: "PreferedAngleY", "double", "",0 + Property: "PreferedAngleZ", "double", "",0 + Property: "InheritType", "enum", "",0 + Property: "ScalingActive", "bool", "",0 + Property: "ScalingMin", "Vector3D", "",1,1,1 + Property: "ScalingMax", "Vector3D", "",1,1,1 + Property: "ScalingMinX", "bool", "",0 + Property: "ScalingMinY", "bool", "",0 + Property: "ScalingMinZ", "bool", "",0 + Property: "ScalingMaxX", "bool", "",0 + Property: "ScalingMaxY", "bool", "",0 + Property: "ScalingMaxZ", "bool", "",0 + Property: "GeometricTranslation", "Vector3D", "",0,0,0 + Property: "GeometricRotation", "Vector3D", "",0,0,0 + Property: "GeometricScaling", "Vector3D", "",1,1,1 + Property: "LookAtProperty", "object", "" + Property: "UpVectorProperty", "object", "" + Property: "Show", "bool", "",1 + Property: "NegativePercentShapeSupport", "bool", "",1 + Property: "DefaultAttributeIndex", "int", "",0 + Property: "Color", "Color", "A",0.8,0.8,0.8 + Property: "Roll", "Roll", "A+",0 + Property: "FieldOfView", "FieldOfView", "A+",40 + Property: "FieldOfViewX", "FieldOfView", "A+",1 + Property: "FieldOfViewY", "FieldOfView", "A+",1 + Property: "OpticalCenterX", "Real", "A+",0 + Property: "OpticalCenterY", "Real", "A+",0 + Property: "BackgroundColor", "Color", "A+",0.63,0.63,0.63 + Property: "TurnTable", "Real", "A+",0 + Property: "DisplayTurnTableIcon", "bool", "",1 + Property: "Motion Blur Intensity", "Real", "A+",1 + Property: "UseMotionBlur", "bool", "",0 + Property: "UseRealTimeMotionBlur", "bool", "",1 + Property: "ResolutionMode", "enum", "",0 + Property: "ApertureMode", "enum", "",2 + Property: "GateFit", "enum", "",0 + Property: "FocalLength", "Real", "A+",21.3544940948486 + Property: "CameraFormat", "enum", "",0 + Property: "AspectW", "double", "",320 + Property: "AspectH", "double", "",200 + Property: "PixelAspectRatio", "double", "",1 + Property: "UseFrameColor", "bool", "",0 + Property: "FrameColor", "ColorRGB", "",0.3,0.3,0.3 + Property: "ShowName", "bool", "",1 + Property: "ShowGrid", "bool", "",1 + Property: "ShowOpticalCenter", "bool", "",0 + Property: "ShowAzimut", "bool", "",1 + Property: "ShowTimeCode", "bool", "",0 + Property: "NearPlane", "double", "",10.000000 + Property: "FarPlane", "double", "",4000.000000 + Property: "FilmWidth", "double", "",0.816 + Property: "FilmHeight", "double", "",0.612 + Property: "FilmAspectRatio", "double", "",1.33333333333333 + Property: "FilmSqueezeRatio", "double", "",1 + Property: "FilmFormatIndex", "enum", "",4 + Property: "ViewFrustum", "bool", "",1 + Property: "ViewFrustumNearFarPlane", "bool", "",0 + Property: "ViewFrustumBackPlaneMode", "enum", "",2 + Property: "BackPlaneDistance", "double", "",100 + Property: "BackPlaneDistanceMode", "enum", "",0 + Property: "ViewCameraToLookAt", "bool", "",1 + Property: "LockMode", "bool", "",0 + Property: "LockInterestNavigation", "bool", "",0 + Property: "FitImage", "bool", "",0 + Property: "Crop", "bool", "",0 + Property: "Center", "bool", "",1 + Property: "KeepRatio", "bool", "",1 + Property: "BackgroundMode", "enum", "",0 + Property: "BackgroundAlphaTreshold", "double", "",0.5 + Property: "ForegroundTransparent", "bool", "",1 + Property: "DisplaySafeArea", "bool", "",0 + Property: "SafeAreaDisplayStyle", "enum", "",1 + Property: "SafeAreaAspectRatio", "double", "",1.33333333333333 + Property: "Use2DMagnifierZoom", "bool", "",0 + Property: "2D Magnifier Zoom", "Real", "A+",100 + Property: "2D Magnifier X", "Real", "A+",50 + Property: "2D Magnifier Y", "Real", "A+",50 + Property: "CameraProjectionType", "enum", "",0 + Property: "UseRealTimeDOFAndAA", "bool", "",0 + Property: "UseDepthOfField", "bool", "",0 + Property: "FocusSource", "enum", "",0 + Property: "FocusAngle", "double", "",3.5 + Property: "FocusDistance", "double", "",200 + Property: "UseAntialiasing", "bool", "",0 + Property: "AntialiasingIntensity", "double", "",0.77777 + Property: "UseAccumulationBuffer", "bool", "",0 + Property: "FrameSamplingCount", "int", "",7 + } + MultiLayer: 0 + MultiTake: 0 + Hidden: "True" + Shading: Y + Culling: "CullingOff" + TypeFlags: "Camera" + GeometryVersion: 124 + Position: 0.000000,71.300000,287.500000 + Up: 0,1,0 + LookAt: 0,0,0 + ShowInfoOnMoving: 1 + ShowAudio: 0 + AudioColor: 0,1,0 + CameraOrthoZoom: 1 + } + Model: "Model::Producer Top", "Camera" { + Version: 232 + Properties60: { + Property: "QuaternionInterpolate", "bool", "",0 + Property: "Visibility", "Visibility", "A+",1 + Property: "Lcl Translation", "Lcl Translation", "A+",0.000000000000000,4000.000000000000000,0.000000000000000 + Property: "Lcl Rotation", "Lcl Rotation", "A+",0.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Scaling", "Lcl Scaling", "A+",1.000000000000000,1.000000000000000,1.000000000000000 + Property: "RotationOffset", "Vector3D", "",0,0,0 + Property: "RotationPivot", "Vector3D", "",0,0,0 + Property: "ScalingOffset", "Vector3D", "",0,0,0 + Property: "ScalingPivot", "Vector3D", "",0,0,0 + Property: "TranslationActive", "bool", "",0 + Property: "TranslationMin", "Vector3D", "",0,0,0 + Property: "TranslationMax", "Vector3D", "",0,0,0 + Property: "TranslationMinX", "bool", "",0 + Property: "TranslationMinY", "bool", "",0 + Property: "TranslationMinZ", "bool", "",0 + Property: "TranslationMaxX", "bool", "",0 + Property: "TranslationMaxY", "bool", "",0 + Property: "TranslationMaxZ", "bool", "",0 + Property: "RotationOrder", "enum", "",0 + Property: "RotationSpaceForLimitOnly", "bool", "",0 + Property: "AxisLen", "double", "",10 + Property: "PreRotation", "Vector3D", "",0,0,0 + Property: "PostRotation", "Vector3D", "",0,0,0 + Property: "RotationActive", "bool", "",0 + Property: "RotationMin", "Vector3D", "",0,0,0 + Property: "RotationMax", "Vector3D", "",0,0,0 + Property: "RotationMinX", "bool", "",0 + Property: "RotationMinY", "bool", "",0 + Property: "RotationMinZ", "bool", "",0 + Property: "RotationMaxX", "bool", "",0 + Property: "RotationMaxY", "bool", "",0 + Property: "RotationMaxZ", "bool", "",0 + Property: "RotationStiffnessX", "double", "",0 + Property: "RotationStiffnessY", "double", "",0 + Property: "RotationStiffnessZ", "double", "",0 + Property: "MinDampRangeX", "double", "",0 + Property: "MinDampRangeY", "double", "",0 + Property: "MinDampRangeZ", "double", "",0 + Property: "MaxDampRangeX", "double", "",0 + Property: "MaxDampRangeY", "double", "",0 + Property: "MaxDampRangeZ", "double", "",0 + Property: "MinDampStrengthX", "double", "",0 + Property: "MinDampStrengthY", "double", "",0 + Property: "MinDampStrengthZ", "double", "",0 + Property: "MaxDampStrengthX", "double", "",0 + Property: "MaxDampStrengthY", "double", "",0 + Property: "MaxDampStrengthZ", "double", "",0 + Property: "PreferedAngleX", "double", "",0 + Property: "PreferedAngleY", "double", "",0 + Property: "PreferedAngleZ", "double", "",0 + Property: "InheritType", "enum", "",0 + Property: "ScalingActive", "bool", "",0 + Property: "ScalingMin", "Vector3D", "",1,1,1 + Property: "ScalingMax", "Vector3D", "",1,1,1 + Property: "ScalingMinX", "bool", "",0 + Property: "ScalingMinY", "bool", "",0 + Property: "ScalingMinZ", "bool", "",0 + Property: "ScalingMaxX", "bool", "",0 + Property: "ScalingMaxY", "bool", "",0 + Property: "ScalingMaxZ", "bool", "",0 + Property: "GeometricTranslation", "Vector3D", "",0,0,0 + Property: "GeometricRotation", "Vector3D", "",0,0,0 + Property: "GeometricScaling", "Vector3D", "",1,1,1 + Property: "LookAtProperty", "object", "" + Property: "UpVectorProperty", "object", "" + Property: "Show", "bool", "",1 + Property: "NegativePercentShapeSupport", "bool", "",1 + Property: "DefaultAttributeIndex", "int", "",0 + Property: "Color", "Color", "A",0.8,0.8,0.8 + Property: "Roll", "Roll", "A+",0 + Property: "FieldOfView", "FieldOfView", "A+",40 + Property: "FieldOfViewX", "FieldOfView", "A+",1 + Property: "FieldOfViewY", "FieldOfView", "A+",1 + Property: "OpticalCenterX", "Real", "A+",0 + Property: "OpticalCenterY", "Real", "A+",0 + Property: "BackgroundColor", "Color", "A+",0.63,0.63,0.63 + Property: "TurnTable", "Real", "A+",0 + Property: "DisplayTurnTableIcon", "bool", "",1 + Property: "Motion Blur Intensity", "Real", "A+",1 + Property: "UseMotionBlur", "bool", "",0 + Property: "UseRealTimeMotionBlur", "bool", "",1 + Property: "ResolutionMode", "enum", "",0 + Property: "ApertureMode", "enum", "",2 + Property: "GateFit", "enum", "",0 + Property: "FocalLength", "Real", "A+",21.3544940948486 + Property: "CameraFormat", "enum", "",0 + Property: "AspectW", "double", "",320 + Property: "AspectH", "double", "",200 + Property: "PixelAspectRatio", "double", "",1 + Property: "UseFrameColor", "bool", "",0 + Property: "FrameColor", "ColorRGB", "",0.3,0.3,0.3 + Property: "ShowName", "bool", "",1 + Property: "ShowGrid", "bool", "",1 + Property: "ShowOpticalCenter", "bool", "",0 + Property: "ShowAzimut", "bool", "",1 + Property: "ShowTimeCode", "bool", "",0 + Property: "NearPlane", "double", "",1.000000 + Property: "FarPlane", "double", "",30000.000000 + Property: "FilmWidth", "double", "",0.816 + Property: "FilmHeight", "double", "",0.612 + Property: "FilmAspectRatio", "double", "",1.33333333333333 + Property: "FilmSqueezeRatio", "double", "",1 + Property: "FilmFormatIndex", "enum", "",4 + Property: "ViewFrustum", "bool", "",1 + Property: "ViewFrustumNearFarPlane", "bool", "",0 + Property: "ViewFrustumBackPlaneMode", "enum", "",2 + Property: "BackPlaneDistance", "double", "",100 + Property: "BackPlaneDistanceMode", "enum", "",0 + Property: "ViewCameraToLookAt", "bool", "",1 + Property: "LockMode", "bool", "",0 + Property: "LockInterestNavigation", "bool", "",0 + Property: "FitImage", "bool", "",0 + Property: "Crop", "bool", "",0 + Property: "Center", "bool", "",1 + Property: "KeepRatio", "bool", "",1 + Property: "BackgroundMode", "enum", "",0 + Property: "BackgroundAlphaTreshold", "double", "",0.5 + Property: "ForegroundTransparent", "bool", "",1 + Property: "DisplaySafeArea", "bool", "",0 + Property: "SafeAreaDisplayStyle", "enum", "",1 + Property: "SafeAreaAspectRatio", "double", "",1.33333333333333 + Property: "Use2DMagnifierZoom", "bool", "",0 + Property: "2D Magnifier Zoom", "Real", "A+",100 + Property: "2D Magnifier X", "Real", "A+",50 + Property: "2D Magnifier Y", "Real", "A+",50 + Property: "CameraProjectionType", "enum", "",1 + Property: "UseRealTimeDOFAndAA", "bool", "",0 + Property: "UseDepthOfField", "bool", "",0 + Property: "FocusSource", "enum", "",0 + Property: "FocusAngle", "double", "",3.5 + Property: "FocusDistance", "double", "",200 + Property: "UseAntialiasing", "bool", "",0 + Property: "AntialiasingIntensity", "double", "",0.77777 + Property: "UseAccumulationBuffer", "bool", "",0 + Property: "FrameSamplingCount", "int", "",7 + } + MultiLayer: 0 + MultiTake: 0 + Hidden: "True" + Shading: Y + Culling: "CullingOff" + TypeFlags: "Camera" + GeometryVersion: 124 + Position: 0.000000,4000.000000,0.000000 + Up: 0,0,-1 + LookAt: 0,0,0 + ShowInfoOnMoving: 1 + ShowAudio: 0 + AudioColor: 0,1,0 + CameraOrthoZoom: 1 + } + Model: "Model::Producer Bottom", "Camera" { + Version: 232 + Properties60: { + Property: "QuaternionInterpolate", "bool", "",0 + Property: "Visibility", "Visibility", "A+",1 + Property: "Lcl Translation", "Lcl Translation", "A+",0.000000000000000,-4000.000000000000000,0.000000000000000 + Property: "Lcl Rotation", "Lcl Rotation", "A+",0.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Scaling", "Lcl Scaling", "A+",1.000000000000000,1.000000000000000,1.000000000000000 + Property: "RotationOffset", "Vector3D", "",0,0,0 + Property: "RotationPivot", "Vector3D", "",0,0,0 + Property: "ScalingOffset", "Vector3D", "",0,0,0 + Property: "ScalingPivot", "Vector3D", "",0,0,0 + Property: "TranslationActive", "bool", "",0 + Property: "TranslationMin", "Vector3D", "",0,0,0 + Property: "TranslationMax", "Vector3D", "",0,0,0 + Property: "TranslationMinX", "bool", "",0 + Property: "TranslationMinY", "bool", "",0 + Property: "TranslationMinZ", "bool", "",0 + Property: "TranslationMaxX", "bool", "",0 + Property: "TranslationMaxY", "bool", "",0 + Property: "TranslationMaxZ", "bool", "",0 + Property: "RotationOrder", "enum", "",0 + Property: "RotationSpaceForLimitOnly", "bool", "",0 + Property: "AxisLen", "double", "",10 + Property: "PreRotation", "Vector3D", "",0,0,0 + Property: "PostRotation", "Vector3D", "",0,0,0 + Property: "RotationActive", "bool", "",0 + Property: "RotationMin", "Vector3D", "",0,0,0 + Property: "RotationMax", "Vector3D", "",0,0,0 + Property: "RotationMinX", "bool", "",0 + Property: "RotationMinY", "bool", "",0 + Property: "RotationMinZ", "bool", "",0 + Property: "RotationMaxX", "bool", "",0 + Property: "RotationMaxY", "bool", "",0 + Property: "RotationMaxZ", "bool", "",0 + Property: "RotationStiffnessX", "double", "",0 + Property: "RotationStiffnessY", "double", "",0 + Property: "RotationStiffnessZ", "double", "",0 + Property: "MinDampRangeX", "double", "",0 + Property: "MinDampRangeY", "double", "",0 + Property: "MinDampRangeZ", "double", "",0 + Property: "MaxDampRangeX", "double", "",0 + Property: "MaxDampRangeY", "double", "",0 + Property: "MaxDampRangeZ", "double", "",0 + Property: "MinDampStrengthX", "double", "",0 + Property: "MinDampStrengthY", "double", "",0 + Property: "MinDampStrengthZ", "double", "",0 + Property: "MaxDampStrengthX", "double", "",0 + Property: "MaxDampStrengthY", "double", "",0 + Property: "MaxDampStrengthZ", "double", "",0 + Property: "PreferedAngleX", "double", "",0 + Property: "PreferedAngleY", "double", "",0 + Property: "PreferedAngleZ", "double", "",0 + Property: "InheritType", "enum", "",0 + Property: "ScalingActive", "bool", "",0 + Property: "ScalingMin", "Vector3D", "",1,1,1 + Property: "ScalingMax", "Vector3D", "",1,1,1 + Property: "ScalingMinX", "bool", "",0 + Property: "ScalingMinY", "bool", "",0 + Property: "ScalingMinZ", "bool", "",0 + Property: "ScalingMaxX", "bool", "",0 + Property: "ScalingMaxY", "bool", "",0 + Property: "ScalingMaxZ", "bool", "",0 + Property: "GeometricTranslation", "Vector3D", "",0,0,0 + Property: "GeometricRotation", "Vector3D", "",0,0,0 + Property: "GeometricScaling", "Vector3D", "",1,1,1 + Property: "LookAtProperty", "object", "" + Property: "UpVectorProperty", "object", "" + Property: "Show", "bool", "",1 + Property: "NegativePercentShapeSupport", "bool", "",1 + Property: "DefaultAttributeIndex", "int", "",0 + Property: "Color", "Color", "A",0.8,0.8,0.8 + Property: "Roll", "Roll", "A+",0 + Property: "FieldOfView", "FieldOfView", "A+",40 + Property: "FieldOfViewX", "FieldOfView", "A+",1 + Property: "FieldOfViewY", "FieldOfView", "A+",1 + Property: "OpticalCenterX", "Real", "A+",0 + Property: "OpticalCenterY", "Real", "A+",0 + Property: "BackgroundColor", "Color", "A+",0.63,0.63,0.63 + Property: "TurnTable", "Real", "A+",0 + Property: "DisplayTurnTableIcon", "bool", "",1 + Property: "Motion Blur Intensity", "Real", "A+",1 + Property: "UseMotionBlur", "bool", "",0 + Property: "UseRealTimeMotionBlur", "bool", "",1 + Property: "ResolutionMode", "enum", "",0 + Property: "ApertureMode", "enum", "",2 + Property: "GateFit", "enum", "",0 + Property: "FocalLength", "Real", "A+",21.3544940948486 + Property: "CameraFormat", "enum", "",0 + Property: "AspectW", "double", "",320 + Property: "AspectH", "double", "",200 + Property: "PixelAspectRatio", "double", "",1 + Property: "UseFrameColor", "bool", "",0 + Property: "FrameColor", "ColorRGB", "",0.3,0.3,0.3 + Property: "ShowName", "bool", "",1 + Property: "ShowGrid", "bool", "",1 + Property: "ShowOpticalCenter", "bool", "",0 + Property: "ShowAzimut", "bool", "",1 + Property: "ShowTimeCode", "bool", "",0 + Property: "NearPlane", "double", "",1.000000 + Property: "FarPlane", "double", "",30000.000000 + Property: "FilmWidth", "double", "",0.816 + Property: "FilmHeight", "double", "",0.612 + Property: "FilmAspectRatio", "double", "",1.33333333333333 + Property: "FilmSqueezeRatio", "double", "",1 + Property: "FilmFormatIndex", "enum", "",4 + Property: "ViewFrustum", "bool", "",1 + Property: "ViewFrustumNearFarPlane", "bool", "",0 + Property: "ViewFrustumBackPlaneMode", "enum", "",2 + Property: "BackPlaneDistance", "double", "",100 + Property: "BackPlaneDistanceMode", "enum", "",0 + Property: "ViewCameraToLookAt", "bool", "",1 + Property: "LockMode", "bool", "",0 + Property: "LockInterestNavigation", "bool", "",0 + Property: "FitImage", "bool", "",0 + Property: "Crop", "bool", "",0 + Property: "Center", "bool", "",1 + Property: "KeepRatio", "bool", "",1 + Property: "BackgroundMode", "enum", "",0 + Property: "BackgroundAlphaTreshold", "double", "",0.5 + Property: "ForegroundTransparent", "bool", "",1 + Property: "DisplaySafeArea", "bool", "",0 + Property: "SafeAreaDisplayStyle", "enum", "",1 + Property: "SafeAreaAspectRatio", "double", "",1.33333333333333 + Property: "Use2DMagnifierZoom", "bool", "",0 + Property: "2D Magnifier Zoom", "Real", "A+",100 + Property: "2D Magnifier X", "Real", "A+",50 + Property: "2D Magnifier Y", "Real", "A+",50 + Property: "CameraProjectionType", "enum", "",1 + Property: "UseRealTimeDOFAndAA", "bool", "",0 + Property: "UseDepthOfField", "bool", "",0 + Property: "FocusSource", "enum", "",0 + Property: "FocusAngle", "double", "",3.5 + Property: "FocusDistance", "double", "",200 + Property: "UseAntialiasing", "bool", "",0 + Property: "AntialiasingIntensity", "double", "",0.77777 + Property: "UseAccumulationBuffer", "bool", "",0 + Property: "FrameSamplingCount", "int", "",7 + } + MultiLayer: 0 + MultiTake: 0 + Hidden: "True" + Shading: Y + Culling: "CullingOff" + TypeFlags: "Camera" + GeometryVersion: 124 + Position: 0.000000,-4000.000000,0.000000 + Up: 0,0,-1 + LookAt: 0,0,0 + ShowInfoOnMoving: 1 + ShowAudio: 0 + AudioColor: 0,1,0 + CameraOrthoZoom: 1 + } + Model: "Model::Producer Front", "Camera" { + Version: 232 + Properties60: { + Property: "QuaternionInterpolate", "bool", "",0 + Property: "Visibility", "Visibility", "A+",1 + Property: "Lcl Translation", "Lcl Translation", "A+",0.000000000000000,0.000000000000000,4000.000000000000000 + Property: "Lcl Rotation", "Lcl Rotation", "A+",0.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Scaling", "Lcl Scaling", "A+",1.000000000000000,1.000000000000000,1.000000000000000 + Property: "RotationOffset", "Vector3D", "",0,0,0 + Property: "RotationPivot", "Vector3D", "",0,0,0 + Property: "ScalingOffset", "Vector3D", "",0,0,0 + Property: "ScalingPivot", "Vector3D", "",0,0,0 + Property: "TranslationActive", "bool", "",0 + Property: "TranslationMin", "Vector3D", "",0,0,0 + Property: "TranslationMax", "Vector3D", "",0,0,0 + Property: "TranslationMinX", "bool", "",0 + Property: "TranslationMinY", "bool", "",0 + Property: "TranslationMinZ", "bool", "",0 + Property: "TranslationMaxX", "bool", "",0 + Property: "TranslationMaxY", "bool", "",0 + Property: "TranslationMaxZ", "bool", "",0 + Property: "RotationOrder", "enum", "",0 + Property: "RotationSpaceForLimitOnly", "bool", "",0 + Property: "AxisLen", "double", "",10 + Property: "PreRotation", "Vector3D", "",0,0,0 + Property: "PostRotation", "Vector3D", "",0,0,0 + Property: "RotationActive", "bool", "",0 + Property: "RotationMin", "Vector3D", "",0,0,0 + Property: "RotationMax", "Vector3D", "",0,0,0 + Property: "RotationMinX", "bool", "",0 + Property: "RotationMinY", "bool", "",0 + Property: "RotationMinZ", "bool", "",0 + Property: "RotationMaxX", "bool", "",0 + Property: "RotationMaxY", "bool", "",0 + Property: "RotationMaxZ", "bool", "",0 + Property: "RotationStiffnessX", "double", "",0 + Property: "RotationStiffnessY", "double", "",0 + Property: "RotationStiffnessZ", "double", "",0 + Property: "MinDampRangeX", "double", "",0 + Property: "MinDampRangeY", "double", "",0 + Property: "MinDampRangeZ", "double", "",0 + Property: "MaxDampRangeX", "double", "",0 + Property: "MaxDampRangeY", "double", "",0 + Property: "MaxDampRangeZ", "double", "",0 + Property: "MinDampStrengthX", "double", "",0 + Property: "MinDampStrengthY", "double", "",0 + Property: "MinDampStrengthZ", "double", "",0 + Property: "MaxDampStrengthX", "double", "",0 + Property: "MaxDampStrengthY", "double", "",0 + Property: "MaxDampStrengthZ", "double", "",0 + Property: "PreferedAngleX", "double", "",0 + Property: "PreferedAngleY", "double", "",0 + Property: "PreferedAngleZ", "double", "",0 + Property: "InheritType", "enum", "",0 + Property: "ScalingActive", "bool", "",0 + Property: "ScalingMin", "Vector3D", "",1,1,1 + Property: "ScalingMax", "Vector3D", "",1,1,1 + Property: "ScalingMinX", "bool", "",0 + Property: "ScalingMinY", "bool", "",0 + Property: "ScalingMinZ", "bool", "",0 + Property: "ScalingMaxX", "bool", "",0 + Property: "ScalingMaxY", "bool", "",0 + Property: "ScalingMaxZ", "bool", "",0 + Property: "GeometricTranslation", "Vector3D", "",0,0,0 + Property: "GeometricRotation", "Vector3D", "",0,0,0 + Property: "GeometricScaling", "Vector3D", "",1,1,1 + Property: "LookAtProperty", "object", "" + Property: "UpVectorProperty", "object", "" + Property: "Show", "bool", "",1 + Property: "NegativePercentShapeSupport", "bool", "",1 + Property: "DefaultAttributeIndex", "int", "",0 + Property: "Color", "Color", "A",0.8,0.8,0.8 + Property: "Roll", "Roll", "A+",0 + Property: "FieldOfView", "FieldOfView", "A+",40 + Property: "FieldOfViewX", "FieldOfView", "A+",1 + Property: "FieldOfViewY", "FieldOfView", "A+",1 + Property: "OpticalCenterX", "Real", "A+",0 + Property: "OpticalCenterY", "Real", "A+",0 + Property: "BackgroundColor", "Color", "A+",0.63,0.63,0.63 + Property: "TurnTable", "Real", "A+",0 + Property: "DisplayTurnTableIcon", "bool", "",1 + Property: "Motion Blur Intensity", "Real", "A+",1 + Property: "UseMotionBlur", "bool", "",0 + Property: "UseRealTimeMotionBlur", "bool", "",1 + Property: "ResolutionMode", "enum", "",0 + Property: "ApertureMode", "enum", "",2 + Property: "GateFit", "enum", "",0 + Property: "FocalLength", "Real", "A+",21.3544940948486 + Property: "CameraFormat", "enum", "",0 + Property: "AspectW", "double", "",320 + Property: "AspectH", "double", "",200 + Property: "PixelAspectRatio", "double", "",1 + Property: "UseFrameColor", "bool", "",0 + Property: "FrameColor", "ColorRGB", "",0.3,0.3,0.3 + Property: "ShowName", "bool", "",1 + Property: "ShowGrid", "bool", "",1 + Property: "ShowOpticalCenter", "bool", "",0 + Property: "ShowAzimut", "bool", "",1 + Property: "ShowTimeCode", "bool", "",0 + Property: "NearPlane", "double", "",1.000000 + Property: "FarPlane", "double", "",30000.000000 + Property: "FilmWidth", "double", "",0.816 + Property: "FilmHeight", "double", "",0.612 + Property: "FilmAspectRatio", "double", "",1.33333333333333 + Property: "FilmSqueezeRatio", "double", "",1 + Property: "FilmFormatIndex", "enum", "",4 + Property: "ViewFrustum", "bool", "",1 + Property: "ViewFrustumNearFarPlane", "bool", "",0 + Property: "ViewFrustumBackPlaneMode", "enum", "",2 + Property: "BackPlaneDistance", "double", "",100 + Property: "BackPlaneDistanceMode", "enum", "",0 + Property: "ViewCameraToLookAt", "bool", "",1 + Property: "LockMode", "bool", "",0 + Property: "LockInterestNavigation", "bool", "",0 + Property: "FitImage", "bool", "",0 + Property: "Crop", "bool", "",0 + Property: "Center", "bool", "",1 + Property: "KeepRatio", "bool", "",1 + Property: "BackgroundMode", "enum", "",0 + Property: "BackgroundAlphaTreshold", "double", "",0.5 + Property: "ForegroundTransparent", "bool", "",1 + Property: "DisplaySafeArea", "bool", "",0 + Property: "SafeAreaDisplayStyle", "enum", "",1 + Property: "SafeAreaAspectRatio", "double", "",1.33333333333333 + Property: "Use2DMagnifierZoom", "bool", "",0 + Property: "2D Magnifier Zoom", "Real", "A+",100 + Property: "2D Magnifier X", "Real", "A+",50 + Property: "2D Magnifier Y", "Real", "A+",50 + Property: "CameraProjectionType", "enum", "",1 + Property: "UseRealTimeDOFAndAA", "bool", "",0 + Property: "UseDepthOfField", "bool", "",0 + Property: "FocusSource", "enum", "",0 + Property: "FocusAngle", "double", "",3.5 + Property: "FocusDistance", "double", "",200 + Property: "UseAntialiasing", "bool", "",0 + Property: "AntialiasingIntensity", "double", "",0.77777 + Property: "UseAccumulationBuffer", "bool", "",0 + Property: "FrameSamplingCount", "int", "",7 + } + MultiLayer: 0 + MultiTake: 0 + Hidden: "True" + Shading: Y + Culling: "CullingOff" + TypeFlags: "Camera" + GeometryVersion: 124 + Position: 0.000000,0.000000,4000.000000 + Up: 0,1,0 + LookAt: 0,0,0 + ShowInfoOnMoving: 1 + ShowAudio: 0 + AudioColor: 0,1,0 + CameraOrthoZoom: 1 + } + Model: "Model::Producer Back", "Camera" { + Version: 232 + Properties60: { + Property: "QuaternionInterpolate", "bool", "",0 + Property: "Visibility", "Visibility", "A+",1 + Property: "Lcl Translation", "Lcl Translation", "A+",0.000000000000000,0.000000000000000,-4000.000000000000000 + Property: "Lcl Rotation", "Lcl Rotation", "A+",0.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Scaling", "Lcl Scaling", "A+",1.000000000000000,1.000000000000000,1.000000000000000 + Property: "RotationOffset", "Vector3D", "",0,0,0 + Property: "RotationPivot", "Vector3D", "",0,0,0 + Property: "ScalingOffset", "Vector3D", "",0,0,0 + Property: "ScalingPivot", "Vector3D", "",0,0,0 + Property: "TranslationActive", "bool", "",0 + Property: "TranslationMin", "Vector3D", "",0,0,0 + Property: "TranslationMax", "Vector3D", "",0,0,0 + Property: "TranslationMinX", "bool", "",0 + Property: "TranslationMinY", "bool", "",0 + Property: "TranslationMinZ", "bool", "",0 + Property: "TranslationMaxX", "bool", "",0 + Property: "TranslationMaxY", "bool", "",0 + Property: "TranslationMaxZ", "bool", "",0 + Property: "RotationOrder", "enum", "",0 + Property: "RotationSpaceForLimitOnly", "bool", "",0 + Property: "AxisLen", "double", "",10 + Property: "PreRotation", "Vector3D", "",0,0,0 + Property: "PostRotation", "Vector3D", "",0,0,0 + Property: "RotationActive", "bool", "",0 + Property: "RotationMin", "Vector3D", "",0,0,0 + Property: "RotationMax", "Vector3D", "",0,0,0 + Property: "RotationMinX", "bool", "",0 + Property: "RotationMinY", "bool", "",0 + Property: "RotationMinZ", "bool", "",0 + Property: "RotationMaxX", "bool", "",0 + Property: "RotationMaxY", "bool", "",0 + Property: "RotationMaxZ", "bool", "",0 + Property: "RotationStiffnessX", "double", "",0 + Property: "RotationStiffnessY", "double", "",0 + Property: "RotationStiffnessZ", "double", "",0 + Property: "MinDampRangeX", "double", "",0 + Property: "MinDampRangeY", "double", "",0 + Property: "MinDampRangeZ", "double", "",0 + Property: "MaxDampRangeX", "double", "",0 + Property: "MaxDampRangeY", "double", "",0 + Property: "MaxDampRangeZ", "double", "",0 + Property: "MinDampStrengthX", "double", "",0 + Property: "MinDampStrengthY", "double", "",0 + Property: "MinDampStrengthZ", "double", "",0 + Property: "MaxDampStrengthX", "double", "",0 + Property: "MaxDampStrengthY", "double", "",0 + Property: "MaxDampStrengthZ", "double", "",0 + Property: "PreferedAngleX", "double", "",0 + Property: "PreferedAngleY", "double", "",0 + Property: "PreferedAngleZ", "double", "",0 + Property: "InheritType", "enum", "",0 + Property: "ScalingActive", "bool", "",0 + Property: "ScalingMin", "Vector3D", "",1,1,1 + Property: "ScalingMax", "Vector3D", "",1,1,1 + Property: "ScalingMinX", "bool", "",0 + Property: "ScalingMinY", "bool", "",0 + Property: "ScalingMinZ", "bool", "",0 + Property: "ScalingMaxX", "bool", "",0 + Property: "ScalingMaxY", "bool", "",0 + Property: "ScalingMaxZ", "bool", "",0 + Property: "GeometricTranslation", "Vector3D", "",0,0,0 + Property: "GeometricRotation", "Vector3D", "",0,0,0 + Property: "GeometricScaling", "Vector3D", "",1,1,1 + Property: "LookAtProperty", "object", "" + Property: "UpVectorProperty", "object", "" + Property: "Show", "bool", "",1 + Property: "NegativePercentShapeSupport", "bool", "",1 + Property: "DefaultAttributeIndex", "int", "",0 + Property: "Color", "Color", "A",0.8,0.8,0.8 + Property: "Roll", "Roll", "A+",0 + Property: "FieldOfView", "FieldOfView", "A+",40 + Property: "FieldOfViewX", "FieldOfView", "A+",1 + Property: "FieldOfViewY", "FieldOfView", "A+",1 + Property: "OpticalCenterX", "Real", "A+",0 + Property: "OpticalCenterY", "Real", "A+",0 + Property: "BackgroundColor", "Color", "A+",0.63,0.63,0.63 + Property: "TurnTable", "Real", "A+",0 + Property: "DisplayTurnTableIcon", "bool", "",1 + Property: "Motion Blur Intensity", "Real", "A+",1 + Property: "UseMotionBlur", "bool", "",0 + Property: "UseRealTimeMotionBlur", "bool", "",1 + Property: "ResolutionMode", "enum", "",0 + Property: "ApertureMode", "enum", "",2 + Property: "GateFit", "enum", "",0 + Property: "FocalLength", "Real", "A+",21.3544940948486 + Property: "CameraFormat", "enum", "",0 + Property: "AspectW", "double", "",320 + Property: "AspectH", "double", "",200 + Property: "PixelAspectRatio", "double", "",1 + Property: "UseFrameColor", "bool", "",0 + Property: "FrameColor", "ColorRGB", "",0.3,0.3,0.3 + Property: "ShowName", "bool", "",1 + Property: "ShowGrid", "bool", "",1 + Property: "ShowOpticalCenter", "bool", "",0 + Property: "ShowAzimut", "bool", "",1 + Property: "ShowTimeCode", "bool", "",0 + Property: "NearPlane", "double", "",1.000000 + Property: "FarPlane", "double", "",30000.000000 + Property: "FilmWidth", "double", "",0.816 + Property: "FilmHeight", "double", "",0.612 + Property: "FilmAspectRatio", "double", "",1.33333333333333 + Property: "FilmSqueezeRatio", "double", "",1 + Property: "FilmFormatIndex", "enum", "",4 + Property: "ViewFrustum", "bool", "",1 + Property: "ViewFrustumNearFarPlane", "bool", "",0 + Property: "ViewFrustumBackPlaneMode", "enum", "",2 + Property: "BackPlaneDistance", "double", "",100 + Property: "BackPlaneDistanceMode", "enum", "",0 + Property: "ViewCameraToLookAt", "bool", "",1 + Property: "LockMode", "bool", "",0 + Property: "LockInterestNavigation", "bool", "",0 + Property: "FitImage", "bool", "",0 + Property: "Crop", "bool", "",0 + Property: "Center", "bool", "",1 + Property: "KeepRatio", "bool", "",1 + Property: "BackgroundMode", "enum", "",0 + Property: "BackgroundAlphaTreshold", "double", "",0.5 + Property: "ForegroundTransparent", "bool", "",1 + Property: "DisplaySafeArea", "bool", "",0 + Property: "SafeAreaDisplayStyle", "enum", "",1 + Property: "SafeAreaAspectRatio", "double", "",1.33333333333333 + Property: "Use2DMagnifierZoom", "bool", "",0 + Property: "2D Magnifier Zoom", "Real", "A+",100 + Property: "2D Magnifier X", "Real", "A+",50 + Property: "2D Magnifier Y", "Real", "A+",50 + Property: "CameraProjectionType", "enum", "",1 + Property: "UseRealTimeDOFAndAA", "bool", "",0 + Property: "UseDepthOfField", "bool", "",0 + Property: "FocusSource", "enum", "",0 + Property: "FocusAngle", "double", "",3.5 + Property: "FocusDistance", "double", "",200 + Property: "UseAntialiasing", "bool", "",0 + Property: "AntialiasingIntensity", "double", "",0.77777 + Property: "UseAccumulationBuffer", "bool", "",0 + Property: "FrameSamplingCount", "int", "",7 + } + MultiLayer: 0 + MultiTake: 0 + Hidden: "True" + Shading: Y + Culling: "CullingOff" + TypeFlags: "Camera" + GeometryVersion: 124 + Position: 0.000000,0.000000,-4000.000000 + Up: 0,1,0 + LookAt: 0,0,0 + ShowInfoOnMoving: 1 + ShowAudio: 0 + AudioColor: 0,1,0 + CameraOrthoZoom: 1 + } + Model: "Model::Producer Right", "Camera" { + Version: 232 + Properties60: { + Property: "QuaternionInterpolate", "bool", "",0 + Property: "Visibility", "Visibility", "A+",1 + Property: "Lcl Translation", "Lcl Translation", "A+",4000.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Rotation", "Lcl Rotation", "A+",0.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Scaling", "Lcl Scaling", "A+",1.000000000000000,1.000000000000000,1.000000000000000 + Property: "RotationOffset", "Vector3D", "",0,0,0 + Property: "RotationPivot", "Vector3D", "",0,0,0 + Property: "ScalingOffset", "Vector3D", "",0,0,0 + Property: "ScalingPivot", "Vector3D", "",0,0,0 + Property: "TranslationActive", "bool", "",0 + Property: "TranslationMin", "Vector3D", "",0,0,0 + Property: "TranslationMax", "Vector3D", "",0,0,0 + Property: "TranslationMinX", "bool", "",0 + Property: "TranslationMinY", "bool", "",0 + Property: "TranslationMinZ", "bool", "",0 + Property: "TranslationMaxX", "bool", "",0 + Property: "TranslationMaxY", "bool", "",0 + Property: "TranslationMaxZ", "bool", "",0 + Property: "RotationOrder", "enum", "",0 + Property: "RotationSpaceForLimitOnly", "bool", "",0 + Property: "AxisLen", "double", "",10 + Property: "PreRotation", "Vector3D", "",0,0,0 + Property: "PostRotation", "Vector3D", "",0,0,0 + Property: "RotationActive", "bool", "",0 + Property: "RotationMin", "Vector3D", "",0,0,0 + Property: "RotationMax", "Vector3D", "",0,0,0 + Property: "RotationMinX", "bool", "",0 + Property: "RotationMinY", "bool", "",0 + Property: "RotationMinZ", "bool", "",0 + Property: "RotationMaxX", "bool", "",0 + Property: "RotationMaxY", "bool", "",0 + Property: "RotationMaxZ", "bool", "",0 + Property: "RotationStiffnessX", "double", "",0 + Property: "RotationStiffnessY", "double", "",0 + Property: "RotationStiffnessZ", "double", "",0 + Property: "MinDampRangeX", "double", "",0 + Property: "MinDampRangeY", "double", "",0 + Property: "MinDampRangeZ", "double", "",0 + Property: "MaxDampRangeX", "double", "",0 + Property: "MaxDampRangeY", "double", "",0 + Property: "MaxDampRangeZ", "double", "",0 + Property: "MinDampStrengthX", "double", "",0 + Property: "MinDampStrengthY", "double", "",0 + Property: "MinDampStrengthZ", "double", "",0 + Property: "MaxDampStrengthX", "double", "",0 + Property: "MaxDampStrengthY", "double", "",0 + Property: "MaxDampStrengthZ", "double", "",0 + Property: "PreferedAngleX", "double", "",0 + Property: "PreferedAngleY", "double", "",0 + Property: "PreferedAngleZ", "double", "",0 + Property: "InheritType", "enum", "",0 + Property: "ScalingActive", "bool", "",0 + Property: "ScalingMin", "Vector3D", "",1,1,1 + Property: "ScalingMax", "Vector3D", "",1,1,1 + Property: "ScalingMinX", "bool", "",0 + Property: "ScalingMinY", "bool", "",0 + Property: "ScalingMinZ", "bool", "",0 + Property: "ScalingMaxX", "bool", "",0 + Property: "ScalingMaxY", "bool", "",0 + Property: "ScalingMaxZ", "bool", "",0 + Property: "GeometricTranslation", "Vector3D", "",0,0,0 + Property: "GeometricRotation", "Vector3D", "",0,0,0 + Property: "GeometricScaling", "Vector3D", "",1,1,1 + Property: "LookAtProperty", "object", "" + Property: "UpVectorProperty", "object", "" + Property: "Show", "bool", "",1 + Property: "NegativePercentShapeSupport", "bool", "",1 + Property: "DefaultAttributeIndex", "int", "",0 + Property: "Color", "Color", "A",0.8,0.8,0.8 + Property: "Roll", "Roll", "A+",0 + Property: "FieldOfView", "FieldOfView", "A+",40 + Property: "FieldOfViewX", "FieldOfView", "A+",1 + Property: "FieldOfViewY", "FieldOfView", "A+",1 + Property: "OpticalCenterX", "Real", "A+",0 + Property: "OpticalCenterY", "Real", "A+",0 + Property: "BackgroundColor", "Color", "A+",0.63,0.63,0.63 + Property: "TurnTable", "Real", "A+",0 + Property: "DisplayTurnTableIcon", "bool", "",1 + Property: "Motion Blur Intensity", "Real", "A+",1 + Property: "UseMotionBlur", "bool", "",0 + Property: "UseRealTimeMotionBlur", "bool", "",1 + Property: "ResolutionMode", "enum", "",0 + Property: "ApertureMode", "enum", "",2 + Property: "GateFit", "enum", "",0 + Property: "FocalLength", "Real", "A+",21.3544940948486 + Property: "CameraFormat", "enum", "",0 + Property: "AspectW", "double", "",320 + Property: "AspectH", "double", "",200 + Property: "PixelAspectRatio", "double", "",1 + Property: "UseFrameColor", "bool", "",0 + Property: "FrameColor", "ColorRGB", "",0.3,0.3,0.3 + Property: "ShowName", "bool", "",1 + Property: "ShowGrid", "bool", "",1 + Property: "ShowOpticalCenter", "bool", "",0 + Property: "ShowAzimut", "bool", "",1 + Property: "ShowTimeCode", "bool", "",0 + Property: "NearPlane", "double", "",1.000000 + Property: "FarPlane", "double", "",30000.000000 + Property: "FilmWidth", "double", "",0.816 + Property: "FilmHeight", "double", "",0.612 + Property: "FilmAspectRatio", "double", "",1.33333333333333 + Property: "FilmSqueezeRatio", "double", "",1 + Property: "FilmFormatIndex", "enum", "",4 + Property: "ViewFrustum", "bool", "",1 + Property: "ViewFrustumNearFarPlane", "bool", "",0 + Property: "ViewFrustumBackPlaneMode", "enum", "",2 + Property: "BackPlaneDistance", "double", "",100 + Property: "BackPlaneDistanceMode", "enum", "",0 + Property: "ViewCameraToLookAt", "bool", "",1 + Property: "LockMode", "bool", "",0 + Property: "LockInterestNavigation", "bool", "",0 + Property: "FitImage", "bool", "",0 + Property: "Crop", "bool", "",0 + Property: "Center", "bool", "",1 + Property: "KeepRatio", "bool", "",1 + Property: "BackgroundMode", "enum", "",0 + Property: "BackgroundAlphaTreshold", "double", "",0.5 + Property: "ForegroundTransparent", "bool", "",1 + Property: "DisplaySafeArea", "bool", "",0 + Property: "SafeAreaDisplayStyle", "enum", "",1 + Property: "SafeAreaAspectRatio", "double", "",1.33333333333333 + Property: "Use2DMagnifierZoom", "bool", "",0 + Property: "2D Magnifier Zoom", "Real", "A+",100 + Property: "2D Magnifier X", "Real", "A+",50 + Property: "2D Magnifier Y", "Real", "A+",50 + Property: "CameraProjectionType", "enum", "",1 + Property: "UseRealTimeDOFAndAA", "bool", "",0 + Property: "UseDepthOfField", "bool", "",0 + Property: "FocusSource", "enum", "",0 + Property: "FocusAngle", "double", "",3.5 + Property: "FocusDistance", "double", "",200 + Property: "UseAntialiasing", "bool", "",0 + Property: "AntialiasingIntensity", "double", "",0.77777 + Property: "UseAccumulationBuffer", "bool", "",0 + Property: "FrameSamplingCount", "int", "",7 + } + MultiLayer: 0 + MultiTake: 0 + Hidden: "True" + Shading: Y + Culling: "CullingOff" + TypeFlags: "Camera" + GeometryVersion: 124 + Position: 4000.000000,0.000000,0.000000 + Up: 0,1,0 + LookAt: 0,0,0 + ShowInfoOnMoving: 1 + ShowAudio: 0 + AudioColor: 0,1,0 + CameraOrthoZoom: 1 + } + Model: "Model::Producer Left", "Camera" { + Version: 232 + Properties60: { + Property: "QuaternionInterpolate", "bool", "",0 + Property: "Visibility", "Visibility", "A+",1 + Property: "Lcl Translation", "Lcl Translation", "A+",-4000.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Rotation", "Lcl Rotation", "A+",0.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Scaling", "Lcl Scaling", "A+",1.000000000000000,1.000000000000000,1.000000000000000 + Property: "RotationOffset", "Vector3D", "",0,0,0 + Property: "RotationPivot", "Vector3D", "",0,0,0 + Property: "ScalingOffset", "Vector3D", "",0,0,0 + Property: "ScalingPivot", "Vector3D", "",0,0,0 + Property: "TranslationActive", "bool", "",0 + Property: "TranslationMin", "Vector3D", "",0,0,0 + Property: "TranslationMax", "Vector3D", "",0,0,0 + Property: "TranslationMinX", "bool", "",0 + Property: "TranslationMinY", "bool", "",0 + Property: "TranslationMinZ", "bool", "",0 + Property: "TranslationMaxX", "bool", "",0 + Property: "TranslationMaxY", "bool", "",0 + Property: "TranslationMaxZ", "bool", "",0 + Property: "RotationOrder", "enum", "",0 + Property: "RotationSpaceForLimitOnly", "bool", "",0 + Property: "AxisLen", "double", "",10 + Property: "PreRotation", "Vector3D", "",0,0,0 + Property: "PostRotation", "Vector3D", "",0,0,0 + Property: "RotationActive", "bool", "",0 + Property: "RotationMin", "Vector3D", "",0,0,0 + Property: "RotationMax", "Vector3D", "",0,0,0 + Property: "RotationMinX", "bool", "",0 + Property: "RotationMinY", "bool", "",0 + Property: "RotationMinZ", "bool", "",0 + Property: "RotationMaxX", "bool", "",0 + Property: "RotationMaxY", "bool", "",0 + Property: "RotationMaxZ", "bool", "",0 + Property: "RotationStiffnessX", "double", "",0 + Property: "RotationStiffnessY", "double", "",0 + Property: "RotationStiffnessZ", "double", "",0 + Property: "MinDampRangeX", "double", "",0 + Property: "MinDampRangeY", "double", "",0 + Property: "MinDampRangeZ", "double", "",0 + Property: "MaxDampRangeX", "double", "",0 + Property: "MaxDampRangeY", "double", "",0 + Property: "MaxDampRangeZ", "double", "",0 + Property: "MinDampStrengthX", "double", "",0 + Property: "MinDampStrengthY", "double", "",0 + Property: "MinDampStrengthZ", "double", "",0 + Property: "MaxDampStrengthX", "double", "",0 + Property: "MaxDampStrengthY", "double", "",0 + Property: "MaxDampStrengthZ", "double", "",0 + Property: "PreferedAngleX", "double", "",0 + Property: "PreferedAngleY", "double", "",0 + Property: "PreferedAngleZ", "double", "",0 + Property: "InheritType", "enum", "",0 + Property: "ScalingActive", "bool", "",0 + Property: "ScalingMin", "Vector3D", "",1,1,1 + Property: "ScalingMax", "Vector3D", "",1,1,1 + Property: "ScalingMinX", "bool", "",0 + Property: "ScalingMinY", "bool", "",0 + Property: "ScalingMinZ", "bool", "",0 + Property: "ScalingMaxX", "bool", "",0 + Property: "ScalingMaxY", "bool", "",0 + Property: "ScalingMaxZ", "bool", "",0 + Property: "GeometricTranslation", "Vector3D", "",0,0,0 + Property: "GeometricRotation", "Vector3D", "",0,0,0 + Property: "GeometricScaling", "Vector3D", "",1,1,1 + Property: "LookAtProperty", "object", "" + Property: "UpVectorProperty", "object", "" + Property: "Show", "bool", "",1 + Property: "NegativePercentShapeSupport", "bool", "",1 + Property: "DefaultAttributeIndex", "int", "",0 + Property: "Color", "Color", "A",0.8,0.8,0.8 + Property: "Roll", "Roll", "A+",0 + Property: "FieldOfView", "FieldOfView", "A+",40 + Property: "FieldOfViewX", "FieldOfView", "A+",1 + Property: "FieldOfViewY", "FieldOfView", "A+",1 + Property: "OpticalCenterX", "Real", "A+",0 + Property: "OpticalCenterY", "Real", "A+",0 + Property: "BackgroundColor", "Color", "A+",0.63,0.63,0.63 + Property: "TurnTable", "Real", "A+",0 + Property: "DisplayTurnTableIcon", "bool", "",1 + Property: "Motion Blur Intensity", "Real", "A+",1 + Property: "UseMotionBlur", "bool", "",0 + Property: "UseRealTimeMotionBlur", "bool", "",1 + Property: "ResolutionMode", "enum", "",0 + Property: "ApertureMode", "enum", "",2 + Property: "GateFit", "enum", "",0 + Property: "FocalLength", "Real", "A+",21.3544940948486 + Property: "CameraFormat", "enum", "",0 + Property: "AspectW", "double", "",320 + Property: "AspectH", "double", "",200 + Property: "PixelAspectRatio", "double", "",1 + Property: "UseFrameColor", "bool", "",0 + Property: "FrameColor", "ColorRGB", "",0.3,0.3,0.3 + Property: "ShowName", "bool", "",1 + Property: "ShowGrid", "bool", "",1 + Property: "ShowOpticalCenter", "bool", "",0 + Property: "ShowAzimut", "bool", "",1 + Property: "ShowTimeCode", "bool", "",0 + Property: "NearPlane", "double", "",1.000000 + Property: "FarPlane", "double", "",30000.000000 + Property: "FilmWidth", "double", "",0.816 + Property: "FilmHeight", "double", "",0.612 + Property: "FilmAspectRatio", "double", "",1.33333333333333 + Property: "FilmSqueezeRatio", "double", "",1 + Property: "FilmFormatIndex", "enum", "",4 + Property: "ViewFrustum", "bool", "",1 + Property: "ViewFrustumNearFarPlane", "bool", "",0 + Property: "ViewFrustumBackPlaneMode", "enum", "",2 + Property: "BackPlaneDistance", "double", "",100 + Property: "BackPlaneDistanceMode", "enum", "",0 + Property: "ViewCameraToLookAt", "bool", "",1 + Property: "LockMode", "bool", "",0 + Property: "LockInterestNavigation", "bool", "",0 + Property: "FitImage", "bool", "",0 + Property: "Crop", "bool", "",0 + Property: "Center", "bool", "",1 + Property: "KeepRatio", "bool", "",1 + Property: "BackgroundMode", "enum", "",0 + Property: "BackgroundAlphaTreshold", "double", "",0.5 + Property: "ForegroundTransparent", "bool", "",1 + Property: "DisplaySafeArea", "bool", "",0 + Property: "SafeAreaDisplayStyle", "enum", "",1 + Property: "SafeAreaAspectRatio", "double", "",1.33333333333333 + Property: "Use2DMagnifierZoom", "bool", "",0 + Property: "2D Magnifier Zoom", "Real", "A+",100 + Property: "2D Magnifier X", "Real", "A+",50 + Property: "2D Magnifier Y", "Real", "A+",50 + Property: "CameraProjectionType", "enum", "",1 + Property: "UseRealTimeDOFAndAA", "bool", "",0 + Property: "UseDepthOfField", "bool", "",0 + Property: "FocusSource", "enum", "",0 + Property: "FocusAngle", "double", "",3.5 + Property: "FocusDistance", "double", "",200 + Property: "UseAntialiasing", "bool", "",0 + Property: "AntialiasingIntensity", "double", "",0.77777 + Property: "UseAccumulationBuffer", "bool", "",0 + Property: "FrameSamplingCount", "int", "",7 + } + MultiLayer: 0 + MultiTake: 0 + Hidden: "True" + Shading: Y + Culling: "CullingOff" + TypeFlags: "Camera" + GeometryVersion: 124 + Position: -4000.000000,0.000000,0.000000 + Up: 0,1,0 + LookAt: 0,0,0 + ShowInfoOnMoving: 1 + ShowAudio: 0 + AudioColor: 0,1,0 + CameraOrthoZoom: 1 + } + Material: "Material::None__transparentQuads_png", "" { + Version: 102 + ShadingModel: "phong" + MultiLayer: 0 + Properties60: { + Property: "ShadingModel", "KString", "", "Phong" + Property: "MultiLayer", "bool", "",0 + Property: "EmissiveColor", "ColorRGB", "",0.8000,0.8000,0.8000 + Property: "EmissiveFactor", "double", "",0.0000 + Property: "AmbientColor", "ColorRGB", "",1.0000,1.0000,1.0000 + Property: "AmbientFactor", "double", "",1.0000 + Property: "DiffuseColor", "ColorRGB", "",0.8000,0.8000,0.8000 + Property: "DiffuseFactor", "double", "",0.8000 + Property: "Bump", "Vector3D", "",0,0,0 + Property: "TransparentColor", "ColorRGB", "",1,1,1 + Property: "TransparencyFactor", "double", "",0.0000 + Property: "SpecularColor", "ColorRGB", "",1.0000,1.0000,1.0000 + Property: "SpecularFactor", "double", "",0.5000 + Property: "ShininessExponent", "double", "",12.3 + Property: "ReflectionColor", "ColorRGB", "",0,0,0 + Property: "ReflectionFactor", "double", "",1 + Property: "Emissive", "ColorRGB", "",0,0,0 + Property: "Ambient", "ColorRGB", "",1.0,1.0,1.0 + Property: "Diffuse", "ColorRGB", "",0.8,0.8,0.8 + Property: "Specular", "ColorRGB", "",1.0,1.0,1.0 + Property: "Shininess", "double", "",12.3 + Property: "Opacity", "double", "",1.0 + Property: "Reflectivity", "double", "",0 + } + } + Video: "Video::transparentQuads_png", "Clip" { + Type: "Clip" + Properties60: { + Property: "FrameRate", "double", "",0 + Property: "LastFrame", "int", "",0 + Property: "Width", "int", "",0 + Property: "Height", "int", "",0 + Property: "Path", "charptr", "", "transparentQuads.png" + Property: "StartFrame", "int", "",0 + Property: "StopFrame", "int", "",0 + Property: "PlaySpeed", "double", "",1 + Property: "Offset", "KTime", "",0 + Property: "InterlaceMode", "enum", "",0 + Property: "FreeRunning", "bool", "",0 + Property: "Loop", "bool", "",0 + Property: "AccessMode", "enum", "",0 + } + UseMipMap: 0 + Filename: "transparentQuads.png" + RelativeFilename: "C:\Users\Brian\Documents\transparentQuads.png" + } + Texture: "Texture::transparentQuads_png", "TextureVideoClip" { + Type: "TextureVideoClip" + Version: 202 + TextureName: "Texture::transparentQuads_png" + Properties60: { + Property: "Translation", "Vector", "A+",0,0,0 + Property: "Rotation", "Vector", "A+",0,0,0 + Property: "Scaling", "Vector", "A+",1,1,1 + Property: "Texture alpha", "Number", "A+",0 + Property: "TextureTypeUse", "enum", "",0 + Property: "CurrentTextureBlendMode", "enum", "",1 + Property: "UseMaterial", "bool", "",0 + Property: "UseMipMap", "bool", "",0 + Property: "CurrentMappingType", "enum", "",0 + Property: "UVSwap", "bool", "",0 + Property: "WrapModeU", "enum", "",0 + Property: "WrapModeV", "enum", "",0 + Property: "TextureRotationPivot", "Vector3D", "",0,0,0 + Property: "TextureScalingPivot", "Vector3D", "",0,0,0 + Property: "VideoProperty", "object", "" + } + Media: "Video::transparentQuads_png" + FileName: "transparentQuads.png" + RelativeFilename: "C:\Users\Brian\Documents\transparentQuads.png" + ModelUVTranslation: 0,0 + ModelUVScaling: 1,1 + Texture_Alpha_Source: "None" + Cropping: 0,0,0,0 + } + Pose: "Pose::BIND_POSES", "BindPose" { + Type: "BindPose" + Version: 100 + Properties60: { + } + NbPoseNodes: 1 + PoseNode: { + Node: "Model::Plane" + Matrix: 0.000000075497901,-0.000001279515686,1.000000000000000,0.000000000000000,-1.000000000000000,-0.000000000000097,0.000000075497901,0.000000000000000,0.000000000000000,-1.000000000000000,-0.000001279515686,0.000000000000000,0.000000000000000,0.000000000000000,0.000000000000000,1.000000000000000 + } + } + GlobalSettings: { + Version: 1000 + Properties60: { + Property: "UpAxis", "int", "",1 + Property: "UpAxisSign", "int", "",1 + Property: "FrontAxis", "int", "",2 + Property: "FrontAxisSign", "int", "",1 + Property: "CoordAxis", "int", "",0 + Property: "CoordAxisSign", "int", "",1 + Property: "UnitScaleFactor", "double", "",1 + } + } +} + +; Object relations +;------------------------------------------------------------------ + +Relations: { + Model: "Model::Plane", "Mesh" { + } + Model: "Model::Producer Perspective", "Camera" { + } + Model: "Model::Producer Top", "Camera" { + } + Model: "Model::Producer Bottom", "Camera" { + } + Model: "Model::Producer Front", "Camera" { + } + Model: "Model::Producer Back", "Camera" { + } + Model: "Model::Producer Right", "Camera" { + } + Model: "Model::Producer Left", "Camera" { + } + Model: "Model::Camera Switcher", "CameraSwitcher" { + } + Material: "Material::None__transparentQuads_png", "" { + } + Texture: "Texture::transparentQuads_png", "TextureVideoClip" { + } + Video: "Video::transparentQuads_png", "Clip" { + } +} + +; Object connections +;------------------------------------------------------------------ + +Connections: { + Connect: "OO", "Model::Plane", "Model::Scene" + Connect: "OO", "Material::None__transparentQuads_png", "Model::Plane" + Connect: "OO", "Texture::transparentQuads_png", "Model::Plane" + Connect: "OO", "Video::transparentQuads_png", "Texture::transparentQuads_png" +} +;Takes and animation section +;---------------------------------------------------- + +Takes: { + Current: "Default Take" + Take: "Default Take" { + FileName: "Default_Take.tak" + LocalTime: 0,479181389250 + ReferenceTime: 0,479181389250 + + ;Models animation + ;---------------------------------------------------- + Model: "Model::Plane" { + Version: 1.1 + Channel: "Transform" { + Channel: "T" { + Channel: "X" { + Default: 0.000000000000000 + KeyVer: 4005 + KeyCount: 1 + Key: + 1924423250,0.000000000000000,L + Color: 1,0,0 + } + Channel: "Y" { + Default: 0.000000000000000 + KeyVer: 4005 + KeyCount: 1 + Key: + 1924423250,0.000000000000000,L + Color: 0,1,0 + } + Channel: "Z" { + Default: 0.000000000000000 + KeyVer: 4005 + KeyCount: 1 + Key: + 1924423250,0.000000000000000,L + Color: 0,0,1 + } + LayerType: 1 + } + Channel: "R" { + Channel: "X" { + Default: 90.000070806240558 + KeyVer: 4005 + KeyCount: 1 + Key: + 1924423250,90.000070806240558,L + Color: 1,0,0 + } + Channel: "Y" { + Default: -0.000000000000000 + KeyVer: 4005 + KeyCount: 1 + Key: + 1924423250,-0.000000000000000,L + Color: 0,1,0 + } + Channel: "Z" { + Default: 0.000000000000000 + KeyVer: 4005 + KeyCount: 1 + Key: + 1924423250,0.000000000000000,L + Color: 0,0,1 + } + LayerType: 2 + } + Channel: "S" { + Channel: "X" { + Default: 1.000000000000000 + KeyVer: 4005 + KeyCount: 1 + Key: + 1924423250,1.000000000000000,L + Color: 1,0,0 + } + Channel: "Y" { + Default: 1.000000000000000 + KeyVer: 4005 + KeyCount: 1 + Key: + 1924423250,1.000000000000000,L + Color: 0,1,0 + } + Channel: "Z" { + Default: 1.000000000000000 + KeyVer: 4005 + KeyCount: 1 + Key: + 1924423250,1.000000000000000,L + Color: 0,0,1 + } + LayerType: 3 + } + } + } + } +} +;Version 5 settings +;------------------------------------------------------------------ + +Version5: { + AmbientRenderSettings: { + Version: 101 + AmbientLightColor: 0.0,0.0,0.0,0 + } + FogOptions: { + FogEnable: 0 + FogMode: 0 + FogDensity: 0.000 + FogStart: 5.000 + FogEnd: 25.000 + FogColor: 0.1,0.1,0.1,1 + } + Settings: { + FrameRate: "24" + TimeFormat: 1 + SnapOnFrames: 0 + ReferenceTimeIndex: -1 + TimeLineStartTime: 0 + TimeLineStopTime: 479181389250 + } + RendererSetting: { + DefaultCamera: "Producer Perspective" + DefaultViewingMode: 0 + } +} diff --git a/Assets/Examples/Assets/Models/PaddedQuad.fbx.meta b/Assets/Examples/Assets/Models/PaddedQuad.fbx.meta new file mode 100644 index 0000000..6c24f3e --- /dev/null +++ b/Assets/Examples/Assets/Models/PaddedQuad.fbx.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: e844196a3794ff24e9d159ff85da70bc +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Plane + 7400000: Default Take + 9500000: //RootNode + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleRotations: 1 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 2 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Models/PaddedQuad64.fbx b/Assets/Examples/Assets/Models/PaddedQuad64.fbx new file mode 100644 index 0000000..b64f19a Binary files /dev/null and b/Assets/Examples/Assets/Models/PaddedQuad64.fbx differ diff --git a/Assets/Examples/Assets/Models/PaddedQuad64.fbx.meta b/Assets/Examples/Assets/Models/PaddedQuad64.fbx.meta new file mode 100644 index 0000000..7db1d15 --- /dev/null +++ b/Assets/Examples/Assets/Models/PaddedQuad64.fbx.meta @@ -0,0 +1,75 @@ +fileFormatVersion: 2 +guid: 77a4d9f8cff0caa43ba3d5411d26d418 +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Plane + 9500000: //RootNode + materials: + importMaterials: 0 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleRotations: 1 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 0.01 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 2 + importAnimation: 0 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Shaders.meta b/Assets/Examples/Assets/Shaders.meta new file mode 100644 index 0000000..e2281b9 --- /dev/null +++ b/Assets/Examples/Assets/Shaders.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7d0653ad3331d0b4eb4a8d1881d415cf +folderAsset: yes +timeCreated: 1464466473 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Shaders/BlendTwoTexturesLitAndUnlit.shader b/Assets/Examples/Assets/Shaders/BlendTwoTexturesLitAndUnlit.shader new file mode 100644 index 0000000..b5947a9 --- /dev/null +++ b/Assets/Examples/Assets/Shaders/BlendTwoTexturesLitAndUnlit.shader @@ -0,0 +1,65 @@ +// Combination of Mobile/Diffuse and LightingLambert, but added in support +// for blending with a second unlit texture. + +// Mobile/Diffuse: +// Simplified Diffuse shader. Differences from regular Diffuse one: +// - no Main Color +// - fully supports only 1 directional light. Other lights can affect it, but it will be per-vertex/SH. + +Shader "KT/Blend Lit and Unlit" { +Properties { + _Blend ("Blend", Range (0,1)) = 0 + _MainTex ("Lit Base (RGB)", 2D) = "white" {} + _UnlitTex ("Unlit Base (RGB)", 2D) = "white" {} +} +SubShader { + Tags { "RenderType"="Opaque" } + LOD 150 + +CGPROGRAM +#pragma surface surf BlendLitUnlit noforwardadd + +half _Blend; +sampler2D _MainTex; +sampler2D _UnlitTex; + +struct Input { + float2 uv_MainTex; +}; + +struct SurfaceOutputCustom { + half3 Albedo; + half3 Normal; + half3 Emission; + half Specular; + half Gloss; + half Alpha; + // Custom fields: + half3 Unlit; +}; + +void surf (Input IN, inout SurfaceOutputCustom o) { + fixed4 c = tex2D(_MainTex, IN.uv_MainTex); + o.Albedo = c.rgb; + o.Alpha = c.a; + o.Unlit = tex2D(_UnlitTex, IN.uv_MainTex); +} + +half4 LightingBlendLitUnlit (SurfaceOutputCustom s, half3 lightDir, half atten) +{ + fixed diff = max (0, dot (s.Normal, lightDir)); + + fixed3 unlit = s.Unlit.rgb * _Blend; + + fixed4 c; + c.rgb = s.Albedo * _LightColor0.rgb * (diff * atten) * (1 - _Blend) + unlit; + c.a = s.Alpha; + + return c; +} + +ENDCG +} + +Fallback "Mobile/Diffuse" +} diff --git a/Assets/Examples/Assets/Shaders/BlendTwoTexturesLitAndUnlit.shader.meta b/Assets/Examples/Assets/Shaders/BlendTwoTexturesLitAndUnlit.shader.meta new file mode 100644 index 0000000..6b615e4 --- /dev/null +++ b/Assets/Examples/Assets/Shaders/BlendTwoTexturesLitAndUnlit.shader.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9ad2971f00d0a0241af1e14b359db232 +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Shaders/BlendTwoTexturesLitAndUnlitVertexColor.shader b/Assets/Examples/Assets/Shaders/BlendTwoTexturesLitAndUnlitVertexColor.shader new file mode 100644 index 0000000..4e0719e --- /dev/null +++ b/Assets/Examples/Assets/Shaders/BlendTwoTexturesLitAndUnlitVertexColor.shader @@ -0,0 +1,64 @@ +// Combination of Mobile/Diffuse and LightingLambert, but added in support +// for blending with a second unlit texture. + +// Mobile/Diffuse: +// Simplified Diffuse shader. Differences from regular Diffuse one: +// - no Main Color +// - fully supports only 1 directional light. Other lights can affect it, but it will be per-vertex/SH. + +Shader "KT/Blend Lit and Unlit Vertex Color" { +Properties { + _MainTex ("Lit Base (RGB)", 2D) = "white" {} + _UnlitTex ("Unlit Base (RGB)", 2D) = "white" {} +} +SubShader { + Tags { "RenderType"="Opaque" } + LOD 150 + +CGPROGRAM +#pragma surface surf BlendLitUnlit noforwardadd + +sampler2D _MainTex; +sampler2D _UnlitTex; + +struct Input { + float2 uv_MainTex; + float4 color : COLOR; +}; + +struct SurfaceOutputCustom { + half3 Albedo; + half3 Normal; + half3 Emission; + half Specular; + half Gloss; + half Alpha; + // Custom fields: + half3 Unlit; +}; + +void surf (Input IN, inout SurfaceOutputCustom o) { + fixed4 c = tex2D(_MainTex, IN.uv_MainTex); + o.Albedo = c.rgb; + o.Alpha = IN.color.a; + o.Unlit = tex2D(_UnlitTex, IN.uv_MainTex); +} + +half4 LightingBlendLitUnlit (SurfaceOutputCustom s, half3 lightDir, half atten) +{ + fixed diff = max (0, dot (s.Normal, lightDir)); + + fixed3 unlit = s.Unlit.rgb * s.Alpha; + + fixed4 c; + c.rgb = s.Albedo * _LightColor0.rgb * (diff * atten) * (1 - s.Alpha) + unlit; + c.a = 1; + + return c; +} + +ENDCG +} + +Fallback "Mobile/Diffuse" +} diff --git a/Assets/Examples/Assets/Shaders/BlendTwoTexturesLitAndUnlitVertexColor.shader.meta b/Assets/Examples/Assets/Shaders/BlendTwoTexturesLitAndUnlitVertexColor.shader.meta new file mode 100644 index 0000000..f46ba31 --- /dev/null +++ b/Assets/Examples/Assets/Shaders/BlendTwoTexturesLitAndUnlitVertexColor.shader.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 25c2c1d41818ed94c84862e80705d217 +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Shaders/KT_3D_Text.shader b/Assets/Examples/Assets/Shaders/KT_3D_Text.shader new file mode 100644 index 0000000..471d677 --- /dev/null +++ b/Assets/Examples/Assets/Shaders/KT_3D_Text.shader @@ -0,0 +1,57 @@ +Shader "GUI/KT 3D Text" { + Properties { + _MainTex ("Font Texture", 2D) = "white" {} + } + + SubShader { + + Tags { + "Queue"="Transparent" + "IgnoreProjector"="True" + "RenderType"="Transparent" + "PreviewType"="Plane" + } + Lighting Off Cull Back ZTest LEqual ZWrite Off Fog { Mode Off } + Blend SrcAlpha OneMinusSrcAlpha + + Pass { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata_t { + float4 vertex : POSITION; + fixed4 color : COLOR; + float2 texcoord : TEXCOORD0; + }; + + struct v2f { + float4 vertex : SV_POSITION; + fixed4 color : COLOR; + float2 texcoord : TEXCOORD0; + }; + + sampler2D _MainTex; + uniform float4 _MainTex_ST; + + v2f vert (appdata_t v) + { + v2f o; + o.vertex = mul(UNITY_MATRIX_MVP, v.vertex); + o.color = v.color; + o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex); + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + fixed4 col = i.color; + col.a *= tex2D(_MainTex, i.texcoord).a; + return col; + } + ENDCG + } + } +} diff --git a/Assets/Examples/Assets/Shaders/KT_3D_Text.shader.meta b/Assets/Examples/Assets/Shaders/KT_3D_Text.shader.meta new file mode 100644 index 0000000..61a7f95 --- /dev/null +++ b/Assets/Examples/Assets/Shaders/KT_3D_Text.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 306ffc165961a2c40806bad3bb861c43 +timeCreated: 1464546114 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Shaders/KT_Mobile-Diffuse.shader b/Assets/Examples/Assets/Shaders/KT_Mobile-Diffuse.shader new file mode 100644 index 0000000..e13cfbb --- /dev/null +++ b/Assets/Examples/Assets/Shaders/KT_Mobile-Diffuse.shader @@ -0,0 +1,33 @@ +// Simplified Diffuse shader. Differences from regular Diffuse one: +// - no Main Color + +Shader "KT/Mobile/Diffuse" { +Properties { + _MainTex ("Base (RGB)", 2D) = "white" {} +} +SubShader { + Tags { "RenderType"="Opaque" } + LOD 150 + +CGPROGRAM +// Mobile improvement: noforwardadd +// http://answers.unity3d.com/questions/1200437/how-to-make-a-conditional-pragma-surface-noforward.html +// http://gamedev.stackexchange.com/questions/123669/unity-surface-shader-conditinally-noforwardadd +#pragma surface surf Lambert + +sampler2D _MainTex; + +struct Input { + float2 uv_MainTex; +}; + +void surf (Input IN, inout SurfaceOutput o) { + fixed4 c = tex2D(_MainTex, IN.uv_MainTex); + o.Albedo = c.rgb; + o.Alpha = c.a; +} +ENDCG +} + +Fallback "Mobile/VertexLit" +} diff --git a/Assets/Examples/Assets/Shaders/KT_Mobile-Diffuse.shader.meta b/Assets/Examples/Assets/Shaders/KT_Mobile-Diffuse.shader.meta new file mode 100644 index 0000000..e3740ee --- /dev/null +++ b/Assets/Examples/Assets/Shaders/KT_Mobile-Diffuse.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f84e4e450c6ae2840b267d49f10e795b +timeCreated: 1465511904 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Shaders/MobileTransparentDiffuseUnderlay.shader b/Assets/Examples/Assets/Shaders/MobileTransparentDiffuseUnderlay.shader new file mode 100644 index 0000000..07a7d87 --- /dev/null +++ b/Assets/Examples/Assets/Shaders/MobileTransparentDiffuseUnderlay.shader @@ -0,0 +1,31 @@ +// Simplified Diffuse shader. Differences from regular Diffuse one: +// - no Main Color +// - fully supports only 1 directional light. Other lights can affect it, but it will be per-vertex/SH. + +Shader "KT/Transparent/Mobile Diffuse Underlay200" { +Properties { + _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {} +} +SubShader { + Tags {"Queue"="Transparent-200" "IgnoreProjector"="True" "RenderType"="Transparent"} + LOD 150 + +CGPROGRAM +#pragma surface surf Lambert alpha + +sampler2D _MainTex; + +struct Input { + float2 uv_MainTex; +}; + +void surf (Input IN, inout SurfaceOutput o) { + fixed4 c = tex2D(_MainTex, IN.uv_MainTex); + o.Albedo = c.rgb; + o.Alpha = c.a; +} +ENDCG +} + +Fallback "Mobile/VertexLit" +} diff --git a/Assets/Examples/Assets/Shaders/MobileTransparentDiffuseUnderlay.shader.meta b/Assets/Examples/Assets/Shaders/MobileTransparentDiffuseUnderlay.shader.meta new file mode 100644 index 0000000..a6fa53d --- /dev/null +++ b/Assets/Examples/Assets/Shaders/MobileTransparentDiffuseUnderlay.shader.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: db65a87c61b3b064b8afb136c20c065d +ShaderImporter: + defaultTextures: [] + userData: diff --git a/Assets/Examples/Assets/Shaders/UnlitTexturedLightmap.shader b/Assets/Examples/Assets/Shaders/UnlitTexturedLightmap.shader new file mode 100644 index 0000000..f967679 --- /dev/null +++ b/Assets/Examples/Assets/Shaders/UnlitTexturedLightmap.shader @@ -0,0 +1,71 @@ +// Upgrade NOTE: commented out 'float4 unity_LightmapST', a built-in variable +// Upgrade NOTE: commented out 'sampler2D unity_Lightmap', a built-in variable +// Upgrade NOTE: replaced tex2D unity_Lightmap with UNITY_SAMPLE_TEX2D + +// Unlit textured shader, with lightmap support +// +// Should be functionally identical to Mobile/Unlit (Supports Lightmap) with +// the difference that this is NOT a Fixed Function shader, which PS4 does not support +// +// - no lighting +// - lightmap support +// - textured + +Shader "KT/Unlit/TexturedLightmap" { +Properties { + _MainTex ("Base (RGB)", 2D) = "white" {} +} + +SubShader { + Tags { "RenderType"="Opaque" } + LOD 100 + + Lighting Off + + Pass { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #include "UnityCG.cginc" + + struct appdata_t { + float4 vertex : POSITION; + float2 texcoord : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; + }; + + struct v2f { + float4 vertex : SV_POSITION; + half2 textureUV : TEXCOORD0; + half2 lightmapUV : TEXCOORD1; + }; + + sampler2D _MainTex; + float4 _MainTex_ST; + + // sampler2D unity_Lightmap; + // float4 unity_LightmapST; + + v2f vert (appdata_t v) + { + v2f o; + o.vertex = mul(UNITY_MATRIX_MVP, v.vertex); + o.textureUV = TRANSFORM_TEX(v.texcoord, _MainTex); + o.lightmapUV = v.texcoord1.xy * unity_LightmapST.xy + unity_LightmapST.zw; + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + fixed4 color = tex2D(_MainTex, i.textureUV.xy); + fixed4 lightmap = UNITY_SAMPLE_TEX2D(unity_Lightmap, i.lightmapUV.xy); + + color.rgb = color.rgb * DecodeLightmap(lightmap); + + return color; + } + ENDCG + } +} + +} diff --git a/Assets/Examples/Assets/Shaders/UnlitTexturedLightmap.shader.meta b/Assets/Examples/Assets/Shaders/UnlitTexturedLightmap.shader.meta new file mode 100644 index 0000000..959c732 --- /dev/null +++ b/Assets/Examples/Assets/Shaders/UnlitTexturedLightmap.shader.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 960365feb58e3134bbcb28e0fabed878 +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Shaders/UnlitTransparentVertexColorUnderlay.shader b/Assets/Examples/Assets/Shaders/UnlitTransparentVertexColorUnderlay.shader new file mode 100644 index 0000000..969045f --- /dev/null +++ b/Assets/Examples/Assets/Shaders/UnlitTransparentVertexColorUnderlay.shader @@ -0,0 +1,60 @@ +// Unlit alpha-blended shader. +// Based on Unlit-Alpha.shader from Unity source, but added colour +// - no lighting +// - no lightmap support +// - no colour +// - uses vertex colour! + +Shader "KT/Unlit/TransparentVertexColorUnderlay30" { +Properties { + _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {} +} + +SubShader { + Tags {"Queue"="Transparent-30" "IgnoreProjector"="True" "RenderType"="Transparent"} + LOD 100 + + ZWrite Off + Blend SrcAlpha OneMinusSrcAlpha + + Pass { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata_t { + float4 vertex : POSITION; + float2 texcoord : TEXCOORD0; + float4 color : COLOR; + }; + + struct v2f { + float4 vertex : SV_POSITION; + half2 texcoord : TEXCOORD0; + float4 color : COLOR; + }; + + sampler2D _MainTex; + float4 _MainTex_ST; + + v2f vert (appdata_t v) + { + v2f o; + o.vertex = mul(UNITY_MATRIX_MVP, v.vertex); + o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex); + o.color = v.color; + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + fixed4 col = tex2D(_MainTex, i.texcoord) * i.color; + return col; + } + ENDCG + } +} + +} diff --git a/Assets/Examples/Assets/Shaders/UnlitTransparentVertexColorUnderlay.shader.meta b/Assets/Examples/Assets/Shaders/UnlitTransparentVertexColorUnderlay.shader.meta new file mode 100644 index 0000000..3ecb163 --- /dev/null +++ b/Assets/Examples/Assets/Shaders/UnlitTransparentVertexColorUnderlay.shader.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 02561f4db7e9b5145baccdae9ca37856 +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Textures.meta b/Assets/Examples/Assets/Textures.meta new file mode 100644 index 0000000..75d8a81 --- /dev/null +++ b/Assets/Examples/Assets/Textures.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4742679fca2b43344bca1e4ad0c19c51 +folderAsset: yes +timeCreated: 1464466473 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Textures/Bomb_casing.png b/Assets/Examples/Assets/Textures/Bomb_casing.png new file mode 100644 index 0000000..19fc518 Binary files /dev/null and b/Assets/Examples/Assets/Textures/Bomb_casing.png differ diff --git a/Assets/Examples/Assets/Textures/Bomb_casing.png.meta b/Assets/Examples/Assets/Textures/Bomb_casing.png.meta new file mode 100644 index 0000000..5f76859 --- /dev/null +++ b/Assets/Examples/Assets/Textures/Bomb_casing.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 5ec68c525425a484b867bed583f4f172 +timeCreated: 1464118537 +licenseType: Pro +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: 0.25 + normalMapFilter: 0 + isReadable: 1 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: 1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: 5 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Textures/Components.meta b/Assets/Examples/Assets/Textures/Components.meta new file mode 100644 index 0000000..8b2479d --- /dev/null +++ b/Assets/Examples/Assets/Textures/Components.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c781172d3f96b76468540347733cf0ea +folderAsset: yes +timeCreated: 1464466474 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Textures/Components/Component_Keypad.png b/Assets/Examples/Assets/Textures/Components/Component_Keypad.png new file mode 100644 index 0000000..61b5b95 Binary files /dev/null and b/Assets/Examples/Assets/Textures/Components/Component_Keypad.png differ diff --git a/Assets/Examples/Assets/Textures/Components/Component_Keypad.png.meta b/Assets/Examples/Assets/Textures/Components/Component_Keypad.png.meta new file mode 100644 index 0000000..490ce82 --- /dev/null +++ b/Assets/Examples/Assets/Textures/Components/Component_Keypad.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: aa79756699c140043bee912f52bb3075 +timeCreated: 1464118548 +licenseType: Pro +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: 0.25 + normalMapFilter: 0 + isReadable: 1 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 256 + textureSettings: + filterMode: 1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: 5 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Textures/Components/Component_Keypad_Background.png b/Assets/Examples/Assets/Textures/Components/Component_Keypad_Background.png new file mode 100644 index 0000000..6617abb Binary files /dev/null and b/Assets/Examples/Assets/Textures/Components/Component_Keypad_Background.png differ diff --git a/Assets/Examples/Assets/Textures/Components/Component_Keypad_Background.png.meta b/Assets/Examples/Assets/Textures/Components/Component_Keypad_Background.png.meta new file mode 100644 index 0000000..5bd7600 --- /dev/null +++ b/Assets/Examples/Assets/Textures/Components/Component_Keypad_Background.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 4cb1530793af2f24fb2eb77e256db58b +timeCreated: 1464118547 +licenseType: Pro +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: 0.25 + normalMapFilter: 0 + isReadable: 1 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 512 + textureSettings: + filterMode: 1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: 5 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Textures/Components/Component_Keypad_LED_OFF.png b/Assets/Examples/Assets/Textures/Components/Component_Keypad_LED_OFF.png new file mode 100644 index 0000000..2e2eb47 Binary files /dev/null and b/Assets/Examples/Assets/Textures/Components/Component_Keypad_LED_OFF.png differ diff --git a/Assets/Examples/Assets/Textures/Components/Component_Keypad_LED_OFF.png.meta b/Assets/Examples/Assets/Textures/Components/Component_Keypad_LED_OFF.png.meta new file mode 100644 index 0000000..dd4f719 --- /dev/null +++ b/Assets/Examples/Assets/Textures/Components/Component_Keypad_LED_OFF.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: d5f229818c40d2b4aaf2bdcc22ecd2fc +timeCreated: 1464118550 +licenseType: Pro +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: 0.25 + normalMapFilter: 0 + isReadable: 1 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: 1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: 5 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Textures/Components/Component_Keypad_LED_ON.png b/Assets/Examples/Assets/Textures/Components/Component_Keypad_LED_ON.png new file mode 100644 index 0000000..ac202cb Binary files /dev/null and b/Assets/Examples/Assets/Textures/Components/Component_Keypad_LED_ON.png differ diff --git a/Assets/Examples/Assets/Textures/Components/Component_Keypad_LED_ON.png.meta b/Assets/Examples/Assets/Textures/Components/Component_Keypad_LED_ON.png.meta new file mode 100644 index 0000000..a0ec55d --- /dev/null +++ b/Assets/Examples/Assets/Textures/Components/Component_Keypad_LED_ON.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: b0de546b2f4aa0040aece448b0c4602b +timeCreated: 1464118555 +licenseType: Pro +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: 0.25 + normalMapFilter: 0 + isReadable: 1 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: 1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: 5 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Textures/Components/Component_Keypad_LED_RED.png b/Assets/Examples/Assets/Textures/Components/Component_Keypad_LED_RED.png new file mode 100644 index 0000000..1795ff7 Binary files /dev/null and b/Assets/Examples/Assets/Textures/Components/Component_Keypad_LED_RED.png differ diff --git a/Assets/Examples/Assets/Textures/Components/Component_Keypad_LED_RED.png.meta b/Assets/Examples/Assets/Textures/Components/Component_Keypad_LED_RED.png.meta new file mode 100644 index 0000000..9da887f --- /dev/null +++ b/Assets/Examples/Assets/Textures/Components/Component_Keypad_LED_RED.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 68c59101c46962c46b943ac0a4d8d4e7 +timeCreated: 1464118555 +licenseType: Pro +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: 0.25 + normalMapFilter: 0 + isReadable: 1 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: 1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: 5 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Textures/Components/Component_Needy_Background.png b/Assets/Examples/Assets/Textures/Components/Component_Needy_Background.png new file mode 100644 index 0000000..52f4b13 Binary files /dev/null and b/Assets/Examples/Assets/Textures/Components/Component_Needy_Background.png differ diff --git a/Assets/Examples/Assets/Textures/Components/Component_Needy_Background.png.meta b/Assets/Examples/Assets/Textures/Components/Component_Needy_Background.png.meta new file mode 100644 index 0000000..60f2067 --- /dev/null +++ b/Assets/Examples/Assets/Textures/Components/Component_Needy_Background.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: bcbbe13f8f3f5934cab266f8a21c00c5 +timeCreated: 1464118539 +licenseType: Pro +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: 0.25 + normalMapFilter: 0 + isReadable: 1 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: 1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: 5 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Textures/Components/Component_PuzzleBackground.png b/Assets/Examples/Assets/Textures/Components/Component_PuzzleBackground.png new file mode 100644 index 0000000..df1c62a Binary files /dev/null and b/Assets/Examples/Assets/Textures/Components/Component_PuzzleBackground.png differ diff --git a/Assets/Examples/Assets/Textures/Components/Component_PuzzleBackground.png.meta b/Assets/Examples/Assets/Textures/Components/Component_PuzzleBackground.png.meta new file mode 100644 index 0000000..859635b --- /dev/null +++ b/Assets/Examples/Assets/Textures/Components/Component_PuzzleBackground.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: b7685f0652736644fb58059655eb7bd3 +timeCreated: 1464118538 +licenseType: Pro +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: 0.25 + normalMapFilter: 0 + isReadable: 1 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: 1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: 5 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Textures/LightGlow.meta b/Assets/Examples/Assets/Textures/LightGlow.meta new file mode 100644 index 0000000..8f9617f --- /dev/null +++ b/Assets/Examples/Assets/Textures/LightGlow.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c11fcb2857a232246b0d10a23d84b2d2 +folderAsset: yes +timeCreated: 1464827825 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Textures/LightGlow/LightGlow.psd b/Assets/Examples/Assets/Textures/LightGlow/LightGlow.psd new file mode 100644 index 0000000..e7245d5 Binary files /dev/null and b/Assets/Examples/Assets/Textures/LightGlow/LightGlow.psd differ diff --git a/Assets/Examples/Assets/Textures/LightGlow/LightGlow.psd.meta b/Assets/Examples/Assets/Textures/LightGlow/LightGlow.psd.meta new file mode 100644 index 0000000..aad91a6 --- /dev/null +++ b/Assets/Examples/Assets/Textures/LightGlow/LightGlow.psd.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: c5f51b501f6e1534a8e1e277ab3f6533 +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: 0.25 + normalMapFilter: 0 + isReadable: 1 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 5 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Textures/LightGlow/LightGlow_Cone.png b/Assets/Examples/Assets/Textures/LightGlow/LightGlow_Cone.png new file mode 100644 index 0000000..abaf03c Binary files /dev/null and b/Assets/Examples/Assets/Textures/LightGlow/LightGlow_Cone.png differ diff --git a/Assets/Examples/Assets/Textures/LightGlow/LightGlow_Cone.png.meta b/Assets/Examples/Assets/Textures/LightGlow/LightGlow_Cone.png.meta new file mode 100644 index 0000000..2a33dcd --- /dev/null +++ b/Assets/Examples/Assets/Textures/LightGlow/LightGlow_Cone.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 55f094fc04a763c42aadf1a18b14fe54 +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: 0.25 + normalMapFilter: 0 + isReadable: 1 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 5 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Textures/Shadows.meta b/Assets/Examples/Assets/Textures/Shadows.meta new file mode 100644 index 0000000..16a90fa --- /dev/null +++ b/Assets/Examples/Assets/Textures/Shadows.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: beb313d9bc57e43439db5b6bf456452a +folderAsset: yes +timeCreated: 1464827825 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/Assets/Textures/Shadows/RectangularShadow.psd b/Assets/Examples/Assets/Textures/Shadows/RectangularShadow.psd new file mode 100644 index 0000000..a70fcbe Binary files /dev/null and b/Assets/Examples/Assets/Textures/Shadows/RectangularShadow.psd differ diff --git a/Assets/Examples/Assets/Textures/Shadows/RectangularShadow.psd.meta b/Assets/Examples/Assets/Textures/Shadows/RectangularShadow.psd.meta new file mode 100644 index 0000000..c174248 --- /dev/null +++ b/Assets/Examples/Assets/Textures/Shadows/RectangularShadow.psd.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: da62116d9b1208543a283365cac7ec63 +timeCreated: 1464116538 +licenseType: Pro +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: 0.25 + normalMapFilter: 0 + isReadable: 1 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: 1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 5 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Examples/example.unity b/Assets/Examples/example.unity new file mode 100644 index 0000000..580c847 --- /dev/null +++ b/Assets/Examples/example.unity @@ -0,0 +1,506 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +SceneSettings: + m_ObjectHideFlags: 0 + m_PVSData: + m_PVSObjectsArray: [] + m_PVSPortalsArray: [] + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 6 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 0 + m_AmbientMode: 0 + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 6 + m_GIWorkflowMode: 0 + m_LightmapsMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 3 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AOMaxDistance: 1 + m_Padding: 2 + m_CompAOExponent: 0 + m_LightmapParameters: {fileID: 0} + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_LightingDataAsset: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + accuratePlacement: 0 + minRegionArea: 2 + cellSize: 0.16666667 + manualCellSize: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &36424268 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400002, guid: 857b932e96426ad48a7fadaae993e27e, type: 2} + propertyPath: m_LocalPosition.x + value: 0.215 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 857b932e96426ad48a7fadaae993e27e, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 857b932e96426ad48a7fadaae993e27e, type: 2} + propertyPath: m_LocalPosition.z + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 857b932e96426ad48a7fadaae993e27e, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 857b932e96426ad48a7fadaae993e27e, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 857b932e96426ad48a7fadaae993e27e, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 857b932e96426ad48a7fadaae993e27e, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 857b932e96426ad48a7fadaae993e27e, type: 2} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 194660, guid: 857b932e96426ad48a7fadaae993e27e, type: 2} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 100018, guid: 857b932e96426ad48a7fadaae993e27e, type: 2} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 100008, guid: 857b932e96426ad48a7fadaae993e27e, type: 2} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 100024, guid: 857b932e96426ad48a7fadaae993e27e, type: 2} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 100032, guid: 857b932e96426ad48a7fadaae993e27e, type: 2} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400018, guid: 857b932e96426ad48a7fadaae993e27e, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400008, guid: 857b932e96426ad48a7fadaae993e27e, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400024, guid: 857b932e96426ad48a7fadaae993e27e, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400032, guid: 857b932e96426ad48a7fadaae993e27e, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 194658, guid: 857b932e96426ad48a7fadaae993e27e, type: 2} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 194656, guid: 857b932e96426ad48a7fadaae993e27e, type: 2} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 857b932e96426ad48a7fadaae993e27e, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &314151314 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 422328, guid: 00e9615969527414b8593f0b6988ffb6, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 422328, guid: 00e9615969527414b8593f0b6988ffb6, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 422328, guid: 00e9615969527414b8593f0b6988ffb6, type: 2} + propertyPath: m_LocalPosition.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 422328, guid: 00e9615969527414b8593f0b6988ffb6, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 422328, guid: 00e9615969527414b8593f0b6988ffb6, type: 2} + propertyPath: m_LocalRotation.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 422328, guid: 00e9615969527414b8593f0b6988ffb6, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 422328, guid: 00e9615969527414b8593f0b6988ffb6, type: 2} + propertyPath: m_LocalRotation.w + value: -0.00000016292068 + objectReference: {fileID: 0} + - target: {fileID: 422328, guid: 00e9615969527414b8593f0b6988ffb6, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 113266, guid: 00e9615969527414b8593f0b6988ffb6, type: 2} + propertyPath: m_Name + value: Needy_Math + objectReference: {fileID: 0} + - target: {fileID: 2333444, guid: 00e9615969527414b8593f0b6988ffb6, type: 2} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 113266, guid: 00e9615969527414b8593f0b6988ffb6, type: 2} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 00e9615969527414b8593f0b6988ffb6, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &528667199 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 470904, guid: 08be6b75bcf9b2e44b0036218319f321, type: 2} + propertyPath: m_LocalPosition.x + value: 0.215 + objectReference: {fileID: 0} + - target: {fileID: 470904, guid: 08be6b75bcf9b2e44b0036218319f321, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 470904, guid: 08be6b75bcf9b2e44b0036218319f321, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 470904, guid: 08be6b75bcf9b2e44b0036218319f321, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 470904, guid: 08be6b75bcf9b2e44b0036218319f321, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 470904, guid: 08be6b75bcf9b2e44b0036218319f321, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 470904, guid: 08be6b75bcf9b2e44b0036218319f321, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 470904, guid: 08be6b75bcf9b2e44b0036218319f321, type: 2} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 08be6b75bcf9b2e44b0036218319f321, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &1082866633 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 469218, guid: d10cfbece335a044fb5ed7388de530dc, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 469218, guid: d10cfbece335a044fb5ed7388de530dc, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 469218, guid: d10cfbece335a044fb5ed7388de530dc, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 469218, guid: d10cfbece335a044fb5ed7388de530dc, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 469218, guid: d10cfbece335a044fb5ed7388de530dc, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 469218, guid: d10cfbece335a044fb5ed7388de530dc, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 469218, guid: d10cfbece335a044fb5ed7388de530dc, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 469218, guid: d10cfbece335a044fb5ed7388de530dc, type: 2} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 112556, guid: d10cfbece335a044fb5ed7388de530dc, type: 2} + propertyPath: m_Name + value: Emoji_Math + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: d10cfbece335a044fb5ed7388de530dc, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1541190401 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1541190403} + - 108: {fileID: 1541190402} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1541190402 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1541190401} + m_Enabled: 1 + serializedVersion: 6 + m_Type: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_BounceIntensity: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 + m_AreaSize: {x: 1, y: 1} +--- !u!4 &1541190403 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1541190401} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 0.5, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 +--- !u!1001 &1831393584 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 439642, guid: 8814ea52310d2614a9feda02ec355ae4, type: 2} + propertyPath: m_LocalPosition.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 439642, guid: 8814ea52310d2614a9feda02ec355ae4, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 439642, guid: 8814ea52310d2614a9feda02ec355ae4, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 439642, guid: 8814ea52310d2614a9feda02ec355ae4, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 439642, guid: 8814ea52310d2614a9feda02ec355ae4, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 439642, guid: 8814ea52310d2614a9feda02ec355ae4, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 439642, guid: 8814ea52310d2614a9feda02ec355ae4, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 439642, guid: 8814ea52310d2614a9feda02ec355ae4, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 8814ea52310d2614a9feda02ec355ae4, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &2057450898 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2057450903} + - 20: {fileID: 2057450902} + - 92: {fileID: 2057450901} + - 124: {fileID: 2057450900} + - 81: {fileID: 2057450899} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &2057450899 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2057450898} + m_Enabled: 1 +--- !u!124 &2057450900 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2057450898} + m_Enabled: 1 +--- !u!92 &2057450901 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2057450898} + m_Enabled: 1 +--- !u!20 &2057450902 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2057450898} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!4 &2057450903 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2057450898} + m_LocalRotation: {x: 0.50000006, y: 0, z: 0, w: 0.8660254} + m_LocalPosition: {x: 0, y: 0.333, z: -0.179} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 60, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 diff --git a/Assets/Examples/example.unity.meta b/Assets/Examples/example.unity.meta new file mode 100644 index 0000000..fa0ac7f --- /dev/null +++ b/Assets/Examples/example.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 23bb969fabfdf654a8aaa435916c4a2e +timeCreated: 1464577151 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins.meta b/Assets/Plugins.meta new file mode 100644 index 0000000..8f4b602 --- /dev/null +++ b/Assets/Plugins.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9d0bfa5e7f7cf2e4aafc3aec88c685f2 +folderAsset: yes +timeCreated: 1464658128 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/CSteamworks.bundle.meta b/Assets/Plugins/CSteamworks.bundle.meta new file mode 100644 index 0000000..d082712 --- /dev/null +++ b/Assets/Plugins/CSteamworks.bundle.meta @@ -0,0 +1,17 @@ +fileFormatVersion: 2 +guid: 89e12e1bb12a2a64bab92d2f6d719875 +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Any: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/CSteamworks.bundle/Contents.meta b/Assets/Plugins/CSteamworks.bundle/Contents.meta new file mode 100644 index 0000000..62f3ab5 --- /dev/null +++ b/Assets/Plugins/CSteamworks.bundle/Contents.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 317af1f19889b0d448ad03ab17d61e5c +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/CSteamworks.bundle/Contents/Info.plist b/Assets/Plugins/CSteamworks.bundle/Contents/Info.plist new file mode 100644 index 0000000..613ba86 --- /dev/null +++ b/Assets/Plugins/CSteamworks.bundle/Contents/Info.plist @@ -0,0 +1,38 @@ + + + + + BuildMachineOSBuild + 11G63 + CFBundleDevelopmentRegion + English + CFBundleExecutable + CSteamworks + CFBundleIdentifier + com.rileylabrecque.CSteamworks + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleSignature + ???? + CFBundleVersion + 1.24 + CSResourcesFileMapped + yes + DTCompiler + + DTPlatformBuild + 4H1503 + DTPlatformVersion + GM + DTSDKBuild + 11E52 + DTSDKName + macosx10.7 + DTXcode + 0463 + DTXcodeBuild + 4H1503 + + diff --git a/Assets/Plugins/CSteamworks.bundle/Contents/Info.plist.meta b/Assets/Plugins/CSteamworks.bundle/Contents/Info.plist.meta new file mode 100644 index 0000000..83bb68b --- /dev/null +++ b/Assets/Plugins/CSteamworks.bundle/Contents/Info.plist.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 48b80dba36541364aab298b7c93305dd +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/CSteamworks.bundle/Contents/MacOS.meta b/Assets/Plugins/CSteamworks.bundle/Contents/MacOS.meta new file mode 100644 index 0000000..452873a --- /dev/null +++ b/Assets/Plugins/CSteamworks.bundle/Contents/MacOS.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 44c1bd74e62bf3544819c5775bc7a1db +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/CSteamworks.bundle/Contents/MacOS/CSteamworks b/Assets/Plugins/CSteamworks.bundle/Contents/MacOS/CSteamworks new file mode 100644 index 0000000..ef3a33f Binary files /dev/null and b/Assets/Plugins/CSteamworks.bundle/Contents/MacOS/CSteamworks differ diff --git a/Assets/Plugins/CSteamworks.bundle/Contents/MacOS/CSteamworks.meta b/Assets/Plugins/CSteamworks.bundle/Contents/MacOS/CSteamworks.meta new file mode 100644 index 0000000..b5c48b9 --- /dev/null +++ b/Assets/Plugins/CSteamworks.bundle/Contents/MacOS/CSteamworks.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: a46ad0f09ff11e84e899d877540f76eb +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/CSteamworks.bundle/Contents/MacOS/libsteam_api.dylib b/Assets/Plugins/CSteamworks.bundle/Contents/MacOS/libsteam_api.dylib new file mode 100644 index 0000000..bb1fed1 Binary files /dev/null and b/Assets/Plugins/CSteamworks.bundle/Contents/MacOS/libsteam_api.dylib differ diff --git a/Assets/Plugins/CSteamworks.bundle/Contents/MacOS/libsteam_api.dylib.meta b/Assets/Plugins/CSteamworks.bundle/Contents/MacOS/libsteam_api.dylib.meta new file mode 100644 index 0000000..147e82e --- /dev/null +++ b/Assets/Plugins/CSteamworks.bundle/Contents/MacOS/libsteam_api.dylib.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 94a23ae3ebe9d4e4893882979bc42ba7 +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Managed.meta b/Assets/Plugins/Managed.meta new file mode 100644 index 0000000..721fb86 --- /dev/null +++ b/Assets/Plugins/Managed.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2791f203fff4a4c4ea2dae6ead8769d7 +folderAsset: yes +timeCreated: 1464658134 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Managed/KMFramework.dll b/Assets/Plugins/Managed/KMFramework.dll new file mode 100644 index 0000000..a233dc1 Binary files /dev/null and b/Assets/Plugins/Managed/KMFramework.dll differ diff --git a/Assets/Plugins/Managed/KMFramework.dll.meta b/Assets/Plugins/Managed/KMFramework.dll.meta new file mode 100644 index 0000000..8e36a1c --- /dev/null +++ b/Assets/Plugins/Managed/KMFramework.dll.meta @@ -0,0 +1,24 @@ +fileFormatVersion: 2 +guid: 45b809be76fd7a3468b6f517bced6f28 +timeCreated: 1465929172 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Managed/Newtonsoft.Json.dll b/Assets/Plugins/Managed/Newtonsoft.Json.dll new file mode 100644 index 0000000..3e05fe3 Binary files /dev/null and b/Assets/Plugins/Managed/Newtonsoft.Json.dll differ diff --git a/Assets/Plugins/Managed/Newtonsoft.Json.dll.meta b/Assets/Plugins/Managed/Newtonsoft.Json.dll.meta new file mode 100644 index 0000000..274f2f3 --- /dev/null +++ b/Assets/Plugins/Managed/Newtonsoft.Json.dll.meta @@ -0,0 +1,24 @@ +fileFormatVersion: 2 +guid: e5aafb974d82a01468c134cdeba27cf7 +timeCreated: 1465498092 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Managed/Newtonsoft.Json_license.txt b/Assets/Plugins/Managed/Newtonsoft.Json_license.txt new file mode 100644 index 0000000..0c2edce --- /dev/null +++ b/Assets/Plugins/Managed/Newtonsoft.Json_license.txt @@ -0,0 +1,18 @@ +Copyright (c) 2007 James Newton-King + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be included in all copies +or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/Assets/Plugins/Managed/Newtonsoft.Json_license.txt.meta b/Assets/Plugins/Managed/Newtonsoft.Json_license.txt.meta new file mode 100644 index 0000000..4f5700b --- /dev/null +++ b/Assets/Plugins/Managed/Newtonsoft.Json_license.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 90369c72ee1c4df4881a3c95950672f3 +timeCreated: 1465498747 +licenseType: Pro +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Steamworks.NET.meta b/Assets/Plugins/Steamworks.NET.meta new file mode 100644 index 0000000..88358ab --- /dev/null +++ b/Assets/Plugins/Steamworks.NET.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d14ddb0e3c06c744d9898a1e8a4ae346 +folderAsset: yes +timeCreated: 1467818406 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Steamworks.NET/redist.meta b/Assets/Plugins/Steamworks.NET/redist.meta new file mode 100644 index 0000000..e9457e4 --- /dev/null +++ b/Assets/Plugins/Steamworks.NET/redist.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b780e6c9bae74244398f0270c5a95177 +folderAsset: yes +timeCreated: 1467818413 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Steamworks.NET/redist/steam_appid.txt b/Assets/Plugins/Steamworks.NET/redist/steam_appid.txt new file mode 100644 index 0000000..5c2b0de --- /dev/null +++ b/Assets/Plugins/Steamworks.NET/redist/steam_appid.txt @@ -0,0 +1 @@ +341800 \ No newline at end of file diff --git a/Assets/Plugins/Steamworks.NET/redist/steam_appid.txt.meta b/Assets/Plugins/Steamworks.NET/redist/steam_appid.txt.meta new file mode 100644 index 0000000..584f091 --- /dev/null +++ b/Assets/Plugins/Steamworks.NET/redist/steam_appid.txt.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 49fd5f872055cef42bfc00efeae22015 +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/x86.meta b/Assets/Plugins/x86.meta new file mode 100644 index 0000000..f7ffc57 --- /dev/null +++ b/Assets/Plugins/x86.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 000ff751c883aa14f97b1e520e6cf98d +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/x86/CSteamworks.dll b/Assets/Plugins/x86/CSteamworks.dll new file mode 100644 index 0000000..006067d Binary files /dev/null and b/Assets/Plugins/x86/CSteamworks.dll differ diff --git a/Assets/Plugins/x86/CSteamworks.dll.meta b/Assets/Plugins/x86/CSteamworks.dll.meta new file mode 100644 index 0000000..77ccbe0 --- /dev/null +++ b/Assets/Plugins/x86/CSteamworks.dll.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 49a703c2e06d22a459d7bc18152c603e +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/x86/libCSteamworks.so b/Assets/Plugins/x86/libCSteamworks.so new file mode 100644 index 0000000..06d0a5b Binary files /dev/null and b/Assets/Plugins/x86/libCSteamworks.so differ diff --git a/Assets/Plugins/x86/libCSteamworks.so.meta b/Assets/Plugins/x86/libCSteamworks.so.meta new file mode 100644 index 0000000..e75421f --- /dev/null +++ b/Assets/Plugins/x86/libCSteamworks.so.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: abc8161132944334d95f6efe5153ce2d +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/x86/libsteam_api.so b/Assets/Plugins/x86/libsteam_api.so new file mode 100644 index 0000000..2bb7a59 Binary files /dev/null and b/Assets/Plugins/x86/libsteam_api.so differ diff --git a/Assets/Plugins/x86/libsteam_api.so.meta b/Assets/Plugins/x86/libsteam_api.so.meta new file mode 100644 index 0000000..da010a9 --- /dev/null +++ b/Assets/Plugins/x86/libsteam_api.so.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: c3fdf34df3c356148978339d743b28d7 +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/x86/steam_api.dll b/Assets/Plugins/x86/steam_api.dll new file mode 100644 index 0000000..8ac7a97 Binary files /dev/null and b/Assets/Plugins/x86/steam_api.dll differ diff --git a/Assets/Plugins/x86/steam_api.dll.meta b/Assets/Plugins/x86/steam_api.dll.meta new file mode 100644 index 0000000..2e4c002 --- /dev/null +++ b/Assets/Plugins/x86/steam_api.dll.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 242bc3c44eaa71847ab220a642d6b726 +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/x86_64.meta b/Assets/Plugins/x86_64.meta new file mode 100644 index 0000000..52f8c34 --- /dev/null +++ b/Assets/Plugins/x86_64.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: aba01c70e875b6449815361cf0711423 +folderAsset: yes +timeCreated: 1466476338 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/x86_64/CSteamworks.dll b/Assets/Plugins/x86_64/CSteamworks.dll new file mode 100644 index 0000000..0626a52 Binary files /dev/null and b/Assets/Plugins/x86_64/CSteamworks.dll differ diff --git a/Assets/Plugins/x86_64/CSteamworks.dll.meta b/Assets/Plugins/x86_64/CSteamworks.dll.meta new file mode 100644 index 0000000..e375494 --- /dev/null +++ b/Assets/Plugins/x86_64/CSteamworks.dll.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 4c1b08d695e51594eae6d4baa833d7b4 +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/x86_64/libCSteamworks.so b/Assets/Plugins/x86_64/libCSteamworks.so new file mode 100644 index 0000000..a07266e Binary files /dev/null and b/Assets/Plugins/x86_64/libCSteamworks.so differ diff --git a/Assets/Plugins/x86_64/libCSteamworks.so.meta b/Assets/Plugins/x86_64/libCSteamworks.so.meta new file mode 100644 index 0000000..5a7b243 --- /dev/null +++ b/Assets/Plugins/x86_64/libCSteamworks.so.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 83f11aa3dcfbd2c48a1d56d44e2ffbac +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/x86_64/libsteam_api.so b/Assets/Plugins/x86_64/libsteam_api.so new file mode 100644 index 0000000..357c9ab Binary files /dev/null and b/Assets/Plugins/x86_64/libsteam_api.so differ diff --git a/Assets/Plugins/x86_64/libsteam_api.so.meta b/Assets/Plugins/x86_64/libsteam_api.so.meta new file mode 100644 index 0000000..eab78b0 --- /dev/null +++ b/Assets/Plugins/x86_64/libsteam_api.so.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 3409233563c009e4daae880538ec3f3b +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/x86_64/steam_api64.dll b/Assets/Plugins/x86_64/steam_api64.dll new file mode 100644 index 0000000..e67d32e Binary files /dev/null and b/Assets/Plugins/x86_64/steam_api64.dll differ diff --git a/Assets/Plugins/x86_64/steam_api64.dll.meta b/Assets/Plugins/x86_64/steam_api64.dll.meta new file mode 100644 index 0000000..4f7235e --- /dev/null +++ b/Assets/Plugins/x86_64/steam_api64.dll.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 72b00848742832f45b39eb0efceef9b5 +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs.meta b/Assets/Prefabs.meta new file mode 100644 index 0000000..591015a --- /dev/null +++ b/Assets/Prefabs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3b496c6180c5cef41a8ed8ce6cb71076 +folderAsset: yes +timeCreated: 1468771088 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Emoji Math.prefab b/Assets/Prefabs/Emoji Math.prefab new file mode 100644 index 0000000..6814261 --- /dev/null +++ b/Assets/Prefabs/Emoji Math.prefab @@ -0,0 +1,3772 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100326 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 410170} + - 33: {fileID: 3349656} + - 23: {fileID: 2326150} + m_Layer: 0 + m_Name: key + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100524 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 496744} + - 33: {fileID: 3329842} + - 23: {fileID: 2369338} + m_Layer: 0 + m_Name: Screen + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &102602 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 401288} + - 33: {fileID: 3364738} + - 23: {fileID: 2393572} + m_Layer: 0 + m_Name: key + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &104694 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 409210} + - 33: {fileID: 3393834} + - 23: {fileID: 2312336} + m_Layer: 0 + m_Name: key + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &105236 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 454328} + - 33: {fileID: 3343064} + - 23: {fileID: 2395502} + m_Layer: 0 + m_Name: key + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &105666 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 442672} + - 33: {fileID: 3360634} + - 114: {fileID: 11456484} + m_Layer: 0 + m_Name: Button5Highlight + m_TagString: Interactive + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &105764 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 495142} + - 23: {fileID: 2384084} + - 102: {fileID: 10232436} + m_Layer: 0 + m_Name: ButtonText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &106500 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 468046} + - 114: {fileID: 11407408} + m_Layer: 0 + m_Name: Button1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &106908 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 467506} + - 33: {fileID: 3333474} + - 114: {fileID: 11440046} + m_Layer: 0 + m_Name: Button0Highlight + m_TagString: Interactive + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &107486 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 414846} + - 23: {fileID: 2380196} + - 102: {fileID: 10299440} + m_Layer: 0 + m_Name: ButtonText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &108900 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 423990} + - 114: {fileID: 11443348} + m_Layer: 0 + m_Name: EnterButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &109026 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 464722} + - 23: {fileID: 2384832} + - 102: {fileID: 10295172} + m_Layer: 0 + m_Name: ButtonText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &109564 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 468846} + - 23: {fileID: 2318318} + - 102: {fileID: 10298650} + m_Layer: 0 + m_Name: ButtonText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &109916 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 461942} + m_Layer: 0 + m_Name: Key_TL + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &110232 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 435304} + - 23: {fileID: 2345584} + - 102: {fileID: 10294330} + m_Layer: 0 + m_Name: DisplayText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &111156 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 450534} + - 114: {fileID: 11452056} + m_Layer: 0 + m_Name: Button0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &111608 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 492288} + m_Layer: 0 + m_Name: Key_TL + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &112556 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 469218} + - 114: {fileID: 11410792} + - 114: {fileID: 11430578} + - 114: {fileID: 11411916} + m_Layer: 0 + m_Name: Emoji Math + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &114684 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 430586} + - 33: {fileID: 3395842} + - 23: {fileID: 2302290} + m_Layer: 0 + m_Name: PuzzleBackground + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &114696 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 492308} + m_Layer: 0 + m_Name: Key_TL + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &114980 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 403098} + - 33: {fileID: 3335006} + - 114: {fileID: 11492164} + m_Layer: 0 + m_Name: MinusButtonHighlight + m_TagString: Interactive + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &115720 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 463370} + - 114: {fileID: 11451156} + m_Layer: 0 + m_Name: Button6 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &117422 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 411178} + - 23: {fileID: 2302430} + - 102: {fileID: 10266472} + m_Layer: 0 + m_Name: ButtonText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &118300 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 462642} + - 114: {fileID: 11496184} + m_Layer: 0 + m_Name: Button2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &125104 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 460560} + - 114: {fileID: 11490440} + m_Layer: 0 + m_Name: Button3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &125778 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 427602} + - 33: {fileID: 3388998} + - 23: {fileID: 2319782} + m_Layer: 0 + m_Name: key + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &125972 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 483314} + - 114: {fileID: 11439548} + m_Layer: 0 + m_Name: Button7 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &126198 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 473884} + - 33: {fileID: 3364124} + - 114: {fileID: 11451940} + m_Layer: 0 + m_Name: Button3Highlight + m_TagString: Interactive + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &127748 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 414144} + m_Layer: 0 + m_Name: Model + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &128478 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 485354} + - 33: {fileID: 3340534} + - 23: {fileID: 2345342} + m_Layer: 0 + m_Name: DisplayCase + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &128680 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 495402} + - 114: {fileID: 11487114} + m_Layer: 0 + m_Name: Button5 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &130682 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 433088} + - 33: {fileID: 3323370} + - 114: {fileID: 11492884} + m_Layer: 0 + m_Name: Button7Highlight + m_TagString: Interactive + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &132230 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 480392} + m_Layer: 0 + m_Name: Key_TL + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &132906 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 456904} + - 23: {fileID: 2328178} + - 102: {fileID: 10291850} + m_Layer: 0 + m_Name: ButtonText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &133440 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 448200} + - 33: {fileID: 3369666} + - 23: {fileID: 2305798} + m_Layer: 0 + m_Name: key + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &133750 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 467828} + - 33: {fileID: 3328218} + - 114: {fileID: 11457888} + m_Layer: 0 + m_Name: Button9Highlight + m_TagString: Interactive + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &134630 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 427048} + - 33: {fileID: 3389990} + - 23: {fileID: 2391074} + m_Layer: 0 + m_Name: key + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &134904 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 483310} + m_Layer: 0 + m_Name: Key_TL + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &135568 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 475126} + - 23: {fileID: 2397314} + - 102: {fileID: 10264970} + m_Layer: 0 + m_Name: ButtonText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &141668 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 420598} + - 33: {fileID: 3333604} + - 23: {fileID: 2393162} + m_Layer: 0 + m_Name: key + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &146410 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 408348} + - 33: {fileID: 3322732} + - 114: {fileID: 11472050} + m_Layer: 0 + m_Name: EnterButtonHighlight + m_TagString: Interactive + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &146720 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 446394} + m_Layer: 0 + m_Name: Key_TL + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &148490 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 459056} + m_Layer: 0 + m_Name: Key_TL + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &150798 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 497650} + - 33: {fileID: 3303990} + - 114: {fileID: 11487632} + m_Layer: 0 + m_Name: Button6Highlight + m_TagString: Interactive + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &150818 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 433882} + m_Layer: 0 + m_Name: Key_TL + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &152304 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 461636} + - 23: {fileID: 2359464} + - 102: {fileID: 10240022} + m_Layer: 0 + m_Name: ButtonText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &153784 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 498850} + - 114: {fileID: 11404046} + m_Layer: 0 + m_Name: StatusLightParent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &155300 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 416118} + - 23: {fileID: 2375264} + - 102: {fileID: 10266362} + m_Layer: 0 + m_Name: ButtonText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &155326 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 427948} + - 33: {fileID: 3325740} + - 23: {fileID: 2380936} + m_Layer: 0 + m_Name: key + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &157584 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 463838} + - 33: {fileID: 3353790} + - 114: {fileID: 11491650} + m_Layer: 0 + m_Name: Button1Highlight + m_TagString: Interactive + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &159322 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 468894} + - 114: {fileID: 11440690} + m_Layer: 0 + m_Name: Button4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &159726 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 498888} + - 33: {fileID: 3386282} + - 114: {fileID: 11407914} + m_Layer: 0 + m_Name: Button4Highlight + m_TagString: Interactive + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &159820 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 456108} + - 114: {fileID: 11425820} + m_Layer: 0 + m_Name: Button8 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &165676 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 419398} + - 114: {fileID: 11489662} + m_Layer: 0 + m_Name: MinusButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &165834 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 460250} + - 33: {fileID: 3379682} + - 23: {fileID: 2334986} + m_Layer: 0 + m_Name: key + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &177416 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 490814} + - 23: {fileID: 2307542} + - 102: {fileID: 10260580} + m_Layer: 0 + m_Name: ButtonText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &179120 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 458598} + - 33: {fileID: 3369966} + - 114: {fileID: 11481904} + m_Layer: 0 + m_Name: Button8Highlight + m_TagString: Interactive + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &180142 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 491062} + - 33: {fileID: 3381836} + - 114: {fileID: 11447070} + m_Layer: 0 + m_Name: Button2Highlight + m_TagString: Interactive + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &181022 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 416882} + - 33: {fileID: 3353966} + - 23: {fileID: 2346042} + m_Layer: 0 + m_Name: key + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &183916 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 434608} + m_Layer: 0 + m_Name: Display + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &184148 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 426624} + - 33: {fileID: 3378098} + - 114: {fileID: 11404518} + m_Layer: 0 + m_Name: Component_Highlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &184296 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 425608} + m_Layer: 0 + m_Name: Key_TL + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185770 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 405866} + m_Layer: 0 + m_Name: Key_TL + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &187074 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 447542} + - 33: {fileID: 3395678} + - 23: {fileID: 2320922} + m_Layer: 0 + m_Name: key + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &188552 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 474138} + m_Layer: 0 + m_Name: Key_TL + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &192858 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 416204} + - 23: {fileID: 2366816} + - 102: {fileID: 10247132} + m_Layer: 0 + m_Name: EnterButtonText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &194732 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 427310} + - 23: {fileID: 2364620} + - 102: {fileID: 10207196} + m_Layer: 0 + m_Name: MinusButtonText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &196466 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 452278} + m_Layer: 0 + m_Name: Key_TL + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &198568 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 463926} + - 114: {fileID: 11493004} + m_Layer: 0 + m_Name: Button9 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &401288 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102602} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.00883332, z: 1.7763568e-15} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 459056} + m_RootOrder: 0 +--- !u!4 &403098 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 114980} + m_LocalRotation: {x: 0, y: -1, z: 0, w: -0.00000004371139} + m_LocalPosition: {x: 0.048340082, y: 0.02, z: -0.014572787} + m_LocalScale: {x: 0.06, y: 0.0025, z: 0.06} + m_LocalEulerAnglesHint: {x: 0, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 419398} + m_RootOrder: 1 +--- !u!4 &405866 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185770} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.048, y: -0.00016232287, z: -0.015} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 416882} + m_Father: {fileID: 419398} + m_RootOrder: 0 +--- !u!4 &408348 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 146410} + m_LocalRotation: {x: 0, y: -1, z: 0, w: -0.00000004371139} + m_LocalPosition: {x: 0.048340082, y: 0.02, z: -0.014572787} + m_LocalScale: {x: 0.06, y: 0.0025, z: 0.06} + m_LocalEulerAnglesHint: {x: 0, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 423990} + m_RootOrder: 1 +--- !u!4 &409210 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104694} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.00883332, z: 1.7763568e-15} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 433882} + m_RootOrder: 0 +--- !u!4 &410170 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100326} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.00883332, z: 1.7763568e-15} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 480392} + m_RootOrder: 0 +--- !u!4 &411178 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 117422} + m_LocalRotation: {x: -0.000000115202326, y: 0.7071067, z: -0.7071068, w: -0.000000115202305} + m_LocalPosition: {x: 0.048, y: 0.0215, z: -0.01} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_LocalEulerAnglesHint: {x: 89.980194, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 462642} + m_RootOrder: 2 +--- !u!4 &414144 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 127748} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 450534} + - {fileID: 468046} + - {fileID: 462642} + - {fileID: 460560} + - {fileID: 468894} + - {fileID: 495402} + - {fileID: 463370} + - {fileID: 483314} + - {fileID: 456108} + - {fileID: 463926} + - {fileID: 419398} + - {fileID: 423990} + - {fileID: 430586} + - {fileID: 434608} + m_Father: {fileID: 469218} + m_RootOrder: 0 +--- !u!4 &414846 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 107486} + m_LocalRotation: {x: -0.000000115202326, y: 0.7071067, z: -0.7071068, w: -0.000000115202305} + m_LocalPosition: {x: 0.048, y: 0.0215, z: -0.01} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_LocalEulerAnglesHint: {x: 89.980194, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 468046} + m_RootOrder: 2 +--- !u!4 &416118 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 155300} + m_LocalRotation: {x: -0.000000115202326, y: 0.7071067, z: -0.7071068, w: -0.000000115202305} + m_LocalPosition: {x: 0.048, y: 0.0215, z: -0.01} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_LocalEulerAnglesHint: {x: 89.980194, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 463370} + m_RootOrder: 2 +--- !u!4 &416204 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 192858} + m_LocalRotation: {x: -0.000000115202326, y: 0.7071067, z: -0.7071068, w: -0.000000115202305} + m_LocalPosition: {x: 0.048, y: 0.0215, z: -0.01} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_LocalEulerAnglesHint: {x: 89.980194, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 423990} + m_RootOrder: 2 +--- !u!4 &416882 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 181022} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.00883332, z: 1.7763568e-15} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 405866} + m_RootOrder: 0 +--- !u!4 &419398 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 165676} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.000000043711395} + m_LocalPosition: {x: 0.0706, y: 0, z: -0.0336} + m_LocalScale: {x: 0.5, y: 1, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: -540, z: 0} + m_Children: + - {fileID: 405866} + - {fileID: 403098} + - {fileID: 427310} + m_Father: {fileID: 414144} + m_RootOrder: 10 +--- !u!4 &420598 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 141668} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.00883332, z: 1.7763568e-15} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 452278} + m_RootOrder: 0 +--- !u!4 &423990 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 108900} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.000000043711395} + m_LocalPosition: {x: 0.0706, y: 0, z: -0.0647} + m_LocalScale: {x: 0.5, y: 1, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: -540, z: 0} + m_Children: + - {fileID: 459056} + - {fileID: 408348} + - {fileID: 416204} + m_Father: {fileID: 414144} + m_RootOrder: 11 +--- !u!4 &425608 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184296} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.048, y: -0.00016232287, z: -0.015} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 460250} + m_Father: {fileID: 463926} + m_RootOrder: 0 +--- !u!4 &426624 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184148} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 469218} + m_RootOrder: 2 +--- !u!4 &427048 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 134630} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.00883332, z: 1.7763568e-15} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 446394} + m_RootOrder: 0 +--- !u!4 &427310 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 194732} + m_LocalRotation: {x: -0.000000115202326, y: 0.7071067, z: -0.7071068, w: -0.000000115202305} + m_LocalPosition: {x: 0.048, y: 0.0215, z: -0.01} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_LocalEulerAnglesHint: {x: 89.980194, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 419398} + m_RootOrder: 2 +--- !u!4 &427602 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125778} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.00883332, z: 1.7763568e-15} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 492308} + m_RootOrder: 0 +--- !u!4 &427948 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 155326} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.00883332, z: 1.7763568e-15} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 483310} + m_RootOrder: 0 +--- !u!4 &430586 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 114684} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.00000016292068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} + m_Children: [] + m_Father: {fileID: 414144} + m_RootOrder: 12 +--- !u!4 &433088 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 130682} + m_LocalRotation: {x: 0, y: -1, z: 0, w: -0.00000004371139} + m_LocalPosition: {x: 0.048340082, y: 0.02, z: -0.014572787} + m_LocalScale: {x: 0.06, y: 0.0025, z: 0.06} + m_LocalEulerAnglesHint: {x: 0, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 483314} + m_RootOrder: 1 +--- !u!4 &433882 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150818} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.048, y: -0.00016232287, z: -0.015} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 409210} + m_Father: {fileID: 462642} + m_RootOrder: 0 +--- !u!4 &434608 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 183916} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 496744} + - {fileID: 435304} + - {fileID: 485354} + m_Father: {fileID: 414144} + m_RootOrder: 13 +--- !u!4 &435304 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 110232} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: -0.0169, y: 0.018, z: 0.0528} + m_LocalScale: {x: 0.011, y: 0.0084, z: 0.005} + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 434608} + m_RootOrder: 1 +--- !u!4 &442672 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 105666} + m_LocalRotation: {x: 0, y: -1, z: 0, w: -0.00000004371139} + m_LocalPosition: {x: 0.048340082, y: 0.02, z: -0.014572787} + m_LocalScale: {x: 0.06, y: 0.0025, z: 0.06} + m_LocalEulerAnglesHint: {x: 0, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 495402} + m_RootOrder: 1 +--- !u!4 &446394 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 146720} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.048, y: -0.00016232287, z: -0.015} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 427048} + m_Father: {fileID: 463370} + m_RootOrder: 0 +--- !u!4 &447542 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 187074} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.00883332, z: 1.7763568e-15} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 461942} + m_RootOrder: 0 +--- !u!4 &448200 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133440} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.00883332, z: 1.7763568e-15} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 492288} + m_RootOrder: 0 +--- !u!4 &450534 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 111156} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.000000043711395} + m_LocalPosition: {x: 0.0706, y: 0, z: -0.0025} + m_LocalScale: {x: 0.5, y: 1, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: -540, z: 0} + m_Children: + - {fileID: 492308} + - {fileID: 467506} + - {fileID: 464722} + m_Father: {fileID: 414144} + m_RootOrder: 0 +--- !u!4 &452278 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 196466} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.048, y: -0.00016232287, z: -0.015} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 420598} + m_Father: {fileID: 495402} + m_RootOrder: 0 +--- !u!4 &454328 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 105236} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.00883332, z: 1.7763568e-15} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 474138} + m_RootOrder: 0 +--- !u!4 &456108 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 159820} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.000000043711395} + m_LocalPosition: {x: 0.0084, y: 0, z: -0.0647} + m_LocalScale: {x: 0.5, y: 1, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: -540, z: 0} + m_Children: + - {fileID: 461942} + - {fileID: 458598} + - {fileID: 475126} + m_Father: {fileID: 414144} + m_RootOrder: 8 +--- !u!4 &456904 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132906} + m_LocalRotation: {x: -0.000000115202326, y: 0.7071067, z: -0.7071068, w: -0.000000115202305} + m_LocalPosition: {x: 0.048, y: 0.0215, z: -0.01} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_LocalEulerAnglesHint: {x: 89.980194, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 460560} + m_RootOrder: 2 +--- !u!4 &458598 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179120} + m_LocalRotation: {x: 0, y: -1, z: 0, w: -0.00000004371139} + m_LocalPosition: {x: 0.048340082, y: 0.02, z: -0.014572787} + m_LocalScale: {x: 0.06, y: 0.0025, z: 0.06} + m_LocalEulerAnglesHint: {x: 0, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 456108} + m_RootOrder: 1 +--- !u!4 &459056 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148490} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.048, y: -0.00016232287, z: -0.015} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 401288} + m_Father: {fileID: 423990} + m_RootOrder: 0 +--- !u!4 &460250 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 165834} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000006925955, y: 0.00883332, z: 1.7763568e-15} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 425608} + m_RootOrder: 0 +--- !u!4 &460560 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125104} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.000000043711395} + m_LocalPosition: {x: 0.0395, y: 0, z: -0.0025} + m_LocalScale: {x: 0.5, y: 1, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: -540, z: 0} + m_Children: + - {fileID: 483310} + - {fileID: 473884} + - {fileID: 456904} + m_Father: {fileID: 414144} + m_RootOrder: 3 +--- !u!4 &461636 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152304} + m_LocalRotation: {x: -0.000000115202326, y: 0.7071067, z: -0.7071068, w: -0.000000115202305} + m_LocalPosition: {x: 0.048, y: 0.0215, z: -0.01} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_LocalEulerAnglesHint: {x: 89.980194, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 468894} + m_RootOrder: 2 +--- !u!4 &461942 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109916} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.048, y: -0.00016232287, z: -0.015} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 447542} + m_Father: {fileID: 456108} + m_RootOrder: 0 +--- !u!4 &462642 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 118300} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.000000043711395} + m_LocalPosition: {x: 0.0084, y: 0, z: -0.0025} + m_LocalScale: {x: 0.5, y: 1, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: -540, z: 0} + m_Children: + - {fileID: 433882} + - {fileID: 491062} + - {fileID: 411178} + m_Father: {fileID: 414144} + m_RootOrder: 2 +--- !u!4 &463370 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115720} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.000000043711395} + m_LocalPosition: {x: 0.0395, y: 0, z: -0.0336} + m_LocalScale: {x: 0.5, y: 1, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: -540, z: 0} + m_Children: + - {fileID: 446394} + - {fileID: 497650} + - {fileID: 416118} + m_Father: {fileID: 414144} + m_RootOrder: 6 +--- !u!4 &463838 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 157584} + m_LocalRotation: {x: 0, y: -1, z: 0, w: -0.00000004371139} + m_LocalPosition: {x: 0.048340082, y: 0.02, z: -0.014572787} + m_LocalScale: {x: 0.06, y: 0.0025, z: 0.06} + m_LocalEulerAnglesHint: {x: 0, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 468046} + m_RootOrder: 1 +--- !u!4 &463926 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198568} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.000000043711395} + m_LocalPosition: {x: 0.0395, y: 0, z: -0.0647} + m_LocalScale: {x: 0.5, y: 1, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: -540, z: 0} + m_Children: + - {fileID: 425608} + - {fileID: 467828} + - {fileID: 468846} + m_Father: {fileID: 414144} + m_RootOrder: 9 +--- !u!4 &464722 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109026} + m_LocalRotation: {x: -0.000000115202326, y: 0.7071067, z: -0.7071068, w: -0.000000115202305} + m_LocalPosition: {x: 0.048, y: 0.0215, z: -0.01} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_LocalEulerAnglesHint: {x: 89.980194, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 450534} + m_RootOrder: 2 +--- !u!4 &467506 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106908} + m_LocalRotation: {x: 0, y: -1, z: 0, w: -0.00000004371139} + m_LocalPosition: {x: 0.048340082, y: 0.02, z: -0.014572787} + m_LocalScale: {x: 0.06, y: 0.0025, z: 0.06} + m_LocalEulerAnglesHint: {x: 0, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 450534} + m_RootOrder: 1 +--- !u!4 &467828 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133750} + m_LocalRotation: {x: 0, y: -1, z: 0, w: -0.00000004371139} + m_LocalPosition: {x: 0.048340082, y: 0.02, z: -0.014572787} + m_LocalScale: {x: 0.06, y: 0.0025, z: 0.06} + m_LocalEulerAnglesHint: {x: 0, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 463926} + m_RootOrder: 1 +--- !u!4 &468046 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106500} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.000000043711395} + m_LocalPosition: {x: -0.0227, y: 0, z: -0.0025} + m_LocalScale: {x: 0.5, y: 1, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: -180, z: 0} + m_Children: + - {fileID: 480392} + - {fileID: 463838} + - {fileID: 414846} + m_Father: {fileID: 414144} + m_RootOrder: 1 +--- !u!4 &468846 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109564} + m_LocalRotation: {x: -0.000000115202326, y: 0.7071067, z: -0.7071068, w: -0.000000115202305} + m_LocalPosition: {x: 0.048, y: 0.0215, z: -0.01} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_LocalEulerAnglesHint: {x: 89.980194, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 463926} + m_RootOrder: 2 +--- !u!4 &468894 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 159322} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.000000043711395} + m_LocalPosition: {x: -0.0227, y: 0, z: -0.0336} + m_LocalScale: {x: 0.5, y: 1, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: -540, z: 0} + m_Children: + - {fileID: 474138} + - {fileID: 498888} + - {fileID: 461636} + m_Father: {fileID: 414144} + m_RootOrder: 4 +--- !u!4 &469218 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112556} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 414144} + - {fileID: 498850} + - {fileID: 426624} + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!4 &473884 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 126198} + m_LocalRotation: {x: 0, y: -1, z: 0, w: -0.00000004371139} + m_LocalPosition: {x: 0.048340082, y: 0.02, z: -0.014572787} + m_LocalScale: {x: 0.06, y: 0.0025, z: 0.06} + m_LocalEulerAnglesHint: {x: 0, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 460560} + m_RootOrder: 1 +--- !u!4 &474138 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188552} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.048, y: -0.00016232287, z: -0.015} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 454328} + m_Father: {fileID: 468894} + m_RootOrder: 0 +--- !u!4 &475126 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135568} + m_LocalRotation: {x: -0.000000115202326, y: 0.7071067, z: -0.7071068, w: -0.000000115202305} + m_LocalPosition: {x: 0.048, y: 0.0215, z: -0.01} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_LocalEulerAnglesHint: {x: 89.980194, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 456108} + m_RootOrder: 2 +--- !u!4 &480392 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132230} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.048, y: -0.00016232287, z: -0.015} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 410170} + m_Father: {fileID: 468046} + m_RootOrder: 0 +--- !u!4 &483310 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 134904} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.048, y: -0.00016232287, z: -0.015} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 427948} + m_Father: {fileID: 460560} + m_RootOrder: 0 +--- !u!4 &483314 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125972} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.000000043711395} + m_LocalPosition: {x: -0.0227, y: 0, z: -0.0647} + m_LocalScale: {x: 0.5, y: 1, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: -540, z: 0} + m_Children: + - {fileID: 492288} + - {fileID: 433088} + - {fileID: 495142} + m_Father: {fileID: 414144} + m_RootOrder: 7 +--- !u!4 &485354 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 128478} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.019, y: 0.014, z: 0.0552} + m_LocalScale: {x: 0.11, y: 0.005, z: 0.05} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 434608} + m_RootOrder: 2 +--- !u!4 &490814 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177416} + m_LocalRotation: {x: -0.000000115202326, y: 0.7071067, z: -0.7071068, w: -0.000000115202305} + m_LocalPosition: {x: 0.048, y: 0.0215, z: -0.01} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_LocalEulerAnglesHint: {x: 89.980194, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 495402} + m_RootOrder: 2 +--- !u!4 &491062 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180142} + m_LocalRotation: {x: 0, y: -1, z: 0, w: -0.00000004371139} + m_LocalPosition: {x: 0.048340082, y: 0.02, z: -0.014572787} + m_LocalScale: {x: 0.06, y: 0.0025, z: 0.06} + m_LocalEulerAnglesHint: {x: 0, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 462642} + m_RootOrder: 1 +--- !u!4 &492288 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 111608} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.048, y: -0.00016232287, z: -0.015} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 448200} + m_Father: {fileID: 483314} + m_RootOrder: 0 +--- !u!4 &492308 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 114696} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.048, y: -0.00016232287, z: -0.015} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 427602} + m_Father: {fileID: 450534} + m_RootOrder: 0 +--- !u!4 &495142 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 105764} + m_LocalRotation: {x: -0.000000115202326, y: 0.7071067, z: -0.7071068, w: -0.000000115202305} + m_LocalPosition: {x: 0.048, y: 0.0215, z: -0.01} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_LocalEulerAnglesHint: {x: 89.980194, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 483314} + m_RootOrder: 2 +--- !u!4 &495402 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 128680} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.000000043711395} + m_LocalPosition: {x: 0.0084, y: 0, z: -0.0336} + m_LocalScale: {x: 0.5, y: 1, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: -540, z: 0} + m_Children: + - {fileID: 452278} + - {fileID: 442672} + - {fileID: 490814} + m_Father: {fileID: 414144} + m_RootOrder: 5 +--- !u!4 &496744 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100524} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.019, y: 0.015, z: 0.0552} + m_LocalScale: {x: 0.1, y: 0.005, z: 0.04} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 434608} + m_RootOrder: 0 +--- !u!4 &497650 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150798} + m_LocalRotation: {x: 0, y: -1, z: 0, w: -0.00000004371139} + m_LocalPosition: {x: 0.048340082, y: 0.02, z: -0.014572787} + m_LocalScale: {x: 0.06, y: 0.0025, z: 0.06} + m_LocalEulerAnglesHint: {x: 0, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 463370} + m_RootOrder: 1 +--- !u!4 &498850 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 153784} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.075, y: 0.02, z: 0.075} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 469218} + m_RootOrder: 1 +--- !u!4 &498888 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 159726} + m_LocalRotation: {x: 0, y: -1, z: 0, w: -0.00000004371139} + m_LocalPosition: {x: 0.048340082, y: 0.02, z: -0.014572787} + m_LocalScale: {x: 0.06, y: 0.0025, z: 0.06} + m_LocalEulerAnglesHint: {x: 0, y: -180, z: 0} + m_Children: [] + m_Father: {fileID: 468894} + m_RootOrder: 1 +--- !u!23 &2302290 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 114684} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 26cdee844cb231740941635a5e5962c7, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2302430 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 117422} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: ea7383a11cc28a24cbea15073b68bf56, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2305798 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133440} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 9af52e38fb41bfb42a724d7599f1fe37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2307542 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177416} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: ea7383a11cc28a24cbea15073b68bf56, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2312336 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104694} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 9af52e38fb41bfb42a724d7599f1fe37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2318318 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109564} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: ea7383a11cc28a24cbea15073b68bf56, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2319782 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125778} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 9af52e38fb41bfb42a724d7599f1fe37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2320922 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 187074} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 9af52e38fb41bfb42a724d7599f1fe37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2326150 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100326} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 9af52e38fb41bfb42a724d7599f1fe37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2328178 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132906} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: ea7383a11cc28a24cbea15073b68bf56, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2334986 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 165834} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 9af52e38fb41bfb42a724d7599f1fe37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2345342 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 128478} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: d5164abd841a17b4dbb70d86302fce6b, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2345584 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 110232} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: ea7383a11cc28a24cbea15073b68bf56, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2346042 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 181022} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 9af52e38fb41bfb42a724d7599f1fe37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2359464 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152304} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: ea7383a11cc28a24cbea15073b68bf56, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2364620 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 194732} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: ea7383a11cc28a24cbea15073b68bf56, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2366816 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 192858} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: ea7383a11cc28a24cbea15073b68bf56, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2369338 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100524} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: e82aca2a9ebb7644281c9066f81ae562, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2375264 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 155300} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: ea7383a11cc28a24cbea15073b68bf56, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2380196 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 107486} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: ea7383a11cc28a24cbea15073b68bf56, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2380936 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 155326} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 9af52e38fb41bfb42a724d7599f1fe37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2384084 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 105764} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: ea7383a11cc28a24cbea15073b68bf56, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2384832 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109026} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: ea7383a11cc28a24cbea15073b68bf56, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2391074 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 134630} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 9af52e38fb41bfb42a724d7599f1fe37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2393162 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 141668} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 9af52e38fb41bfb42a724d7599f1fe37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2393572 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102602} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 9af52e38fb41bfb42a724d7599f1fe37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2395502 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 105236} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 9af52e38fb41bfb42a724d7599f1fe37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2397314 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135568} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: ea7383a11cc28a24cbea15073b68bf56, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &3303990 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150798} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3322732 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 146410} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3323370 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 130682} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3325740 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 155326} + m_Mesh: {fileID: 4300000, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3328218 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133750} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3329842 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100524} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3333474 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106908} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3333604 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 141668} + m_Mesh: {fileID: 4300000, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3335006 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 114980} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3340534 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 128478} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3343064 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 105236} + m_Mesh: {fileID: 4300000, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3349656 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100326} + m_Mesh: {fileID: 4300000, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3353790 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 157584} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3353966 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 181022} + m_Mesh: {fileID: 4300000, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3360634 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 105666} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3364124 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 126198} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3364738 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102602} + m_Mesh: {fileID: 4300000, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3369666 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133440} + m_Mesh: {fileID: 4300000, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3369966 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179120} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3378098 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184148} + m_Mesh: {fileID: 4300000, guid: 5ab6c3be308beaa47b558e81d501cf7c, type: 3} +--- !u!33 &3379682 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 165834} + m_Mesh: {fileID: 4300000, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3381836 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180142} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3386282 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 159726} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3388998 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125778} + m_Mesh: {fileID: 4300000, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3389990 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 134630} + m_Mesh: {fileID: 4300000, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3393834 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104694} + m_Mesh: {fileID: 4300000, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3395678 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 187074} + m_Mesh: {fileID: 4300000, guid: 4109be4c1d23f41498bd9dcc52605aa4, type: 3} +--- !u!33 &3395842 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 114684} + m_Mesh: {fileID: 4300000, guid: 1c46642b7f907d844bcdfcca8625afdd, type: 3} +--- !u!102 &10207196 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 194732} + m_Text: '-' + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 40 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!102 &10232436 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 105764} + m_Text: 7 + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 40 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!102 &10240022 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152304} + m_Text: 4 + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 40 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!102 &10247132 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 192858} + m_Text: = + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 40 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!102 &10260580 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177416} + m_Text: 5 + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 40 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!102 &10264970 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135568} + m_Text: 8 + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 40 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!102 &10266362 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 155300} + m_Text: 6 + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 40 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!102 &10266472 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 117422} + m_Text: 2 + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 40 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!102 &10291850 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132906} + m_Text: 3 + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 40 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!102 &10294330 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 110232} + m_Text: '(=:)=)+=(:||:' + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 30 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190335 +--- !u!102 &10295172 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109026} + m_Text: 0 + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 40 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!102 &10298650 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109564} + m_Text: 9 + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 40 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!102 &10299440 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 107486} + m_Text: 1 + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 40 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!114 &11404046 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 153784} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -381104716, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11404518 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184148} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 1, y: 1, z: 1} + OutlineAmount: 0 +--- !u!114 &11407408 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106500} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 11410792} + Children: [] + IsPassThrough: 0 + ChildRowLength: 0 + Highlight: {fileID: 11491650} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!114 &11407914 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 159726} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 0, y: 0, z: 0} + OutlineAmount: 0 +--- !u!114 &11410792 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112556} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 0} + Children: + - {fileID: 11452056} + - {fileID: 11407408} + - {fileID: 11496184} + - {fileID: 11490440} + - {fileID: 11440690} + - {fileID: 11487114} + - {fileID: 11451156} + - {fileID: 11439548} + - {fileID: 11425820} + - {fileID: 11493004} + - {fileID: 11489662} + - {fileID: 11443348} + IsPassThrough: 0 + ChildRowLength: 4 + Highlight: {fileID: 11404518} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!114 &11411916 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112556} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73edc8fce13044c4d87b8ddcf4c6fdbc, type: 3} + m_Name: + m_EditorClassIdentifier: + Buttons: + - {fileID: 11452056} + - {fileID: 11407408} + - {fileID: 11496184} + - {fileID: 11490440} + - {fileID: 11440690} + - {fileID: 11487114} + - {fileID: 11451156} + - {fileID: 11439548} + - {fileID: 11425820} + - {fileID: 11493004} + - {fileID: 11489662} + - {fileID: 11443348} + DisplayText: {fileID: 10294330} +--- !u!114 &11425820 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 159820} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 11410792} + Children: [] + IsPassThrough: 0 + ChildRowLength: 0 + Highlight: {fileID: 11481904} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!114 &11430578 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112556} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -119419473, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + ModuleType: EmojiMath + ModuleDisplayName: Emoji Math +--- !u!114 &11439548 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125972} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 11410792} + Children: [] + IsPassThrough: 0 + ChildRowLength: 0 + Highlight: {fileID: 11492884} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!114 &11440046 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106908} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 0, y: 0, z: 0} + OutlineAmount: 0 +--- !u!114 &11440690 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 159322} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 11410792} + Children: [] + IsPassThrough: 0 + ChildRowLength: 0 + Highlight: {fileID: 11407914} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!114 &11443348 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 108900} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 11410792} + Children: [] + IsPassThrough: 0 + ChildRowLength: 0 + Highlight: {fileID: 11472050} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!114 &11447070 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180142} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 0, y: 0, z: 0} + OutlineAmount: 0 +--- !u!114 &11451156 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115720} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 11410792} + Children: [] + IsPassThrough: 0 + ChildRowLength: 0 + Highlight: {fileID: 11487632} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!114 &11451940 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 126198} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 0, y: 0, z: 0} + OutlineAmount: 0 +--- !u!114 &11452056 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 111156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 11410792} + Children: [] + IsPassThrough: 0 + ChildRowLength: 0 + Highlight: {fileID: 11440046} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!114 &11456484 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 105666} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 0, y: 0, z: 0} + OutlineAmount: 0 +--- !u!114 &11457888 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133750} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 0, y: 0, z: 0} + OutlineAmount: 0 +--- !u!114 &11472050 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 146410} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 0, y: 0, z: 0} + OutlineAmount: 0 +--- !u!114 &11481904 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179120} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 0, y: 0, z: 0} + OutlineAmount: 0 +--- !u!114 &11487114 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 128680} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 11410792} + Children: [] + IsPassThrough: 0 + ChildRowLength: 0 + Highlight: {fileID: 11456484} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!114 &11487632 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150798} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 0, y: 0, z: 0} + OutlineAmount: 0 +--- !u!114 &11489662 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 165676} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 11410792} + Children: [] + IsPassThrough: 0 + ChildRowLength: 0 + Highlight: {fileID: 11492164} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!114 &11490440 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125104} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 11410792} + Children: [] + IsPassThrough: 0 + ChildRowLength: 0 + Highlight: {fileID: 11451940} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!114 &11491650 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 157584} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 0, y: 0, z: 0} + OutlineAmount: 0 +--- !u!114 &11492164 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 114980} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 0, y: 0, z: 0} + OutlineAmount: 0 +--- !u!114 &11492884 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 130682} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 0, y: 0, z: 0} + OutlineAmount: 0 +--- !u!114 &11493004 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198568} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 11410792} + Children: [] + IsPassThrough: 0 + ChildRowLength: 0 + Highlight: {fileID: 11457888} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!114 &11496184 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 118300} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 11410792} + Children: [] + IsPassThrough: 0 + ChildRowLength: 0 + Highlight: {fileID: 11447070} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 112556} + m_IsPrefabParent: 1 diff --git a/Assets/Prefabs/Emoji Math.prefab.meta b/Assets/Prefabs/Emoji Math.prefab.meta new file mode 100644 index 0000000..b832905 --- /dev/null +++ b/Assets/Prefabs/Emoji Math.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d10cfbece335a044fb5ed7388de530dc +timeCreated: 1468793245 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: mod.bundle + assetBundleVariant: diff --git a/Assets/Prefabs/Needy Math.prefab b/Assets/Prefabs/Needy Math.prefab new file mode 100644 index 0000000..6339b5c --- /dev/null +++ b/Assets/Prefabs/Needy Math.prefab @@ -0,0 +1,1180 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &106736 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 452508} + - 23: {fileID: 2374338} + - 102: {fileID: 10227584} + m_Layer: 0 + m_Name: NumberText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &111160 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 462706} + - 33: {fileID: 3383746} + - 114: {fileID: 11406958} + m_Layer: 0 + m_Name: Needy_Component_Highlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &113266 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 422328} + - 114: {fileID: 11429032} + - 114: {fileID: 11498638} + - 23: {fileID: 2333444} + - 114: {fileID: 11471928} + m_Layer: 0 + m_Name: Needy Math + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &118624 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 433484} + - 23: {fileID: 2310550} + - 102: {fileID: 10217104} + m_Layer: 0 + m_Name: NumberText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &122134 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 480224} + - 33: {fileID: 3360994} + - 114: {fileID: 11449412} + m_Layer: 0 + m_Name: Button3Highlight + m_TagString: Interactive + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &126186 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 473298} + - 33: {fileID: 3382598} + - 23: {fileID: 2327490} + m_Layer: 0 + m_Name: Screen + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &134456 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 482550} + - 33: {fileID: 3330338} + - 23: {fileID: 2334516} + m_Layer: 0 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &135760 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 484954} + - 23: {fileID: 2345106} + - 102: {fileID: 10283858} + m_Layer: 0 + m_Name: MathDisplay + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &141548 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 453420} + - 33: {fileID: 3355006} + - 114: {fileID: 11460320} + m_Layer: 0 + m_Name: Button1Highlight + m_TagString: Interactive + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &147046 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 426780} + - 33: {fileID: 3392654} + - 114: {fileID: 11427182} + m_Layer: 0 + m_Name: Button2Highlight + m_TagString: Interactive + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &152028 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 457864} + - 33: {fileID: 3352480} + - 65: {fileID: 6540424} + - 23: {fileID: 2384642} + m_Layer: 0 + m_Name: Backing + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &164818 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 408060} + - 114: {fileID: 11486722} + - 114: {fileID: 11447596} + m_Layer: 0 + m_Name: Button3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &179092 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 479802} + - 23: {fileID: 2395718} + - 102: {fileID: 10238810} + m_Layer: 0 + m_Name: NumberText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &181930 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 471018} + - 114: {fileID: 11491078} + - 114: {fileID: 11410684} + m_Layer: 0 + m_Name: Button1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &184816 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 469712} + - 114: {fileID: 11467178} + - 114: {fileID: 11499632} + m_Layer: 0 + m_Name: Button2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &190100 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 497952} + - 33: {fileID: 3369312} + - 65: {fileID: 6546168} + - 23: {fileID: 2354754} + m_Layer: 0 + m_Name: Backing + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &192610 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 496800} + - 33: {fileID: 3395372} + - 65: {fileID: 6581352} + - 23: {fileID: 2334846} + m_Layer: 0 + m_Name: Backing + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &408060 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164818} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.00000016292068} + m_LocalPosition: {x: 0, y: 0.03, z: 0.005} + m_LocalScale: {x: 0.4, y: 1, z: 0.4} + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} + m_Children: + - {fileID: 497952} + - {fileID: 433484} + - {fileID: 480224} + m_Father: {fileID: 422328} + m_RootOrder: 4 +--- !u!4 &422328 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113266} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.00000016292068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} + m_Children: + - {fileID: 482550} + - {fileID: 473298} + - {fileID: 471018} + - {fileID: 469712} + - {fileID: 408060} + - {fileID: 462706} + - {fileID: 484954} + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!4 &426780 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 147046} + m_LocalRotation: {x: 0, y: -1, z: 0, w: -0.00000028212997} + m_LocalPosition: {x: 0.57914984, y: -0.016999999, z: -0.12263097} + m_LocalScale: {x: 0.14999999, y: 0.0025, z: 0.14999999} + m_LocalEulerAnglesHint: {x: 0, y: 179.9999, z: 0} + m_Children: [] + m_Father: {fileID: 469712} + m_RootOrder: 2 +--- !u!4 &433484 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 118624} + m_LocalRotation: {x: -0.7071068, y: -0.00000014611092, z: 0.00000014611095, w: -0.7071067} + m_LocalPosition: {x: -0, y: -0.0093, z: -0} + m_LocalScale: {x: 0.0018738192, y: 0.0018738188, z: 0.0018738188} + m_LocalEulerAnglesHint: {x: 89.980194, y: -360, z: 0} + m_Children: [] + m_Father: {fileID: 408060} + m_RootOrder: 1 +--- !u!4 &452508 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106736} + m_LocalRotation: {x: -0.7071068, y: -0.00000014611092, z: 0.00000014611095, w: -0.7071067} + m_LocalPosition: {x: -0, y: -0.0093, z: -0} + m_LocalScale: {x: 0.0018738192, y: 0.0018738188, z: 0.0018738188} + m_LocalEulerAnglesHint: {x: 89.980194, y: -360, z: 0} + m_Children: [] + m_Father: {fileID: 469712} + m_RootOrder: 1 +--- !u!4 &453420 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 141548} + m_LocalRotation: {x: 0, y: -1, z: 0, w: -0.00000028212997} + m_LocalPosition: {x: 0.6541499, y: -0.016999999, z: -0.12263094} + m_LocalScale: {x: 0.14999999, y: 0.0025, z: 0.14999999} + m_LocalEulerAnglesHint: {x: 0, y: 179.9999, z: 0} + m_Children: [] + m_Father: {fileID: 471018} + m_RootOrder: 0 +--- !u!4 &457864 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152028} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.0124, z: 0} + m_LocalScale: {x: 0.06, y: 0.005, z: 0.06} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 471018} + m_RootOrder: 1 +--- !u!4 &462706 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 111160} + m_LocalRotation: {x: 0, y: -1, z: 0, w: -0.00000016292068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} + m_Children: [] + m_Father: {fileID: 422328} + m_RootOrder: 5 +--- !u!4 &469712 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184816} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.00000016292068} + m_LocalPosition: {x: 0.03, y: 0.03, z: 0.005} + m_LocalScale: {x: 0.4, y: 1, z: 0.4} + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} + m_Children: + - {fileID: 496800} + - {fileID: 452508} + - {fileID: 426780} + m_Father: {fileID: 422328} + m_RootOrder: 3 +--- !u!4 &471018 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 181930} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.00000016292068} + m_LocalPosition: {x: 0.06, y: 0.03, z: 0.005} + m_LocalScale: {x: 0.4, y: 1, z: 0.4} + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} + m_Children: + - {fileID: 453420} + - {fileID: 457864} + - {fileID: 479802} + m_Father: {fileID: 422328} + m_RootOrder: 2 +--- !u!4 &473298 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 126186} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 422328} + m_RootOrder: 1 +--- !u!4 &479802 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179092} + m_LocalRotation: {x: -0.7071068, y: -0.00000014611092, z: 0.00000014611095, w: -0.7071067} + m_LocalPosition: {x: -0, y: -0.0093, z: -0} + m_LocalScale: {x: 0.0018738192, y: 0.0018738188, z: 0.0018738188} + m_LocalEulerAnglesHint: {x: 89.980194, y: -360, z: 0} + m_Children: [] + m_Father: {fileID: 471018} + m_RootOrder: 2 +--- !u!4 &480224 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 122134} + m_LocalRotation: {x: 0, y: -1, z: 0, w: -0.00000028212997} + m_LocalPosition: {x: 0.57914984, y: -0.016999999, z: -0.12263097} + m_LocalScale: {x: 0.14999999, y: 0.0025, z: 0.14999999} + m_LocalEulerAnglesHint: {x: 0, y: 179.9999, z: 0} + m_Children: [] + m_Father: {fileID: 408060} + m_RootOrder: 2 +--- !u!4 &482550 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 134456} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 422328} + m_RootOrder: 0 +--- !u!4 &484954 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135760} + m_LocalRotation: {x: 0.0000002613133, y: -0.7071067, z: 0.7071068, w: 0.00000026131323} + m_LocalPosition: {x: 0, y: 0.028, z: -0.0545} + m_LocalScale: {x: 0.00074952765, y: 0.0007495275, z: 0.0018738188} + m_LocalEulerAnglesHint: {x: 89.980194, y: -540, z: 0} + m_Children: [] + m_Father: {fileID: 422328} + m_RootOrder: 6 +--- !u!4 &496800 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 192610} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.0124, z: 0} + m_LocalScale: {x: 0.06, y: 0.005, z: 0.06} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 469712} + m_RootOrder: 0 +--- !u!4 &497952 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 190100} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.0124, z: 0} + m_LocalScale: {x: 0.06, y: 0.005, z: 0.06} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 408060} + m_RootOrder: 0 +--- !u!23 &2310550 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 118624} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: ea7383a11cc28a24cbea15073b68bf56, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2327490 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 126186} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 71fd4b9053b24e5488cc0d45bfc80547, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2333444 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113266} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2334516 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 134456} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 71fd4b9053b24e5488cc0d45bfc80547, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2334846 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 192610} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2345106 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135760} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: ea7383a11cc28a24cbea15073b68bf56, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2354754 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 190100} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2374338 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106736} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: ea7383a11cc28a24cbea15073b68bf56, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2384642 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152028} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2395718 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179092} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: ea7383a11cc28a24cbea15073b68bf56, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &3330338 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 134456} + m_Mesh: {fileID: 4300002, guid: de2ecf7201de1d347bce8844cca92160, type: 3} +--- !u!33 &3352480 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152028} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3355006 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 141548} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3360994 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 122134} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3369312 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 190100} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3382598 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 126186} + m_Mesh: {fileID: 4300000, guid: de2ecf7201de1d347bce8844cca92160, type: 3} +--- !u!33 &3383746 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 111160} + m_Mesh: {fileID: 4300000, guid: 5ab6c3be308beaa47b558e81d501cf7c, type: 3} +--- !u!33 &3392654 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 147046} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3395372 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 192610} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &6540424 +BoxCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152028} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!65 &6546168 +BoxCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 190100} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!65 &6581352 +BoxCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 192610} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!102 &10217104 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 118624} + m_Text: 3 + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 200 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!102 &10227584 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106736} + m_Text: 2 + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 200 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!102 &10238810 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 179092} + m_Text: 1 + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 200 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!102 &10283858 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135760} + m_Text: MATH! + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 224 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 1ebe1d96973a920409b439b3a0e2bb63, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190335 +--- !u!114 &11406958 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 111160} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 1, y: 1, z: 1} + OutlineAmount: 0 +--- !u!114 &11410684 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 181930} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 11498638} + Children: [] + IsPassThrough: 0 + ChildRowLength: 0 + Highlight: {fileID: 11460320} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!114 &11427182 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 147046} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 0, y: 0, z: 0} + OutlineAmount: 0 +--- !u!114 &11429032 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113266} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1718998123, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + CountdownTime: 25 + ModuleType: NeedyMath + ModuleDisplayName: Needy Math +--- !u!114 &11447596 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164818} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 11498638} + Children: [] + IsPassThrough: 0 + ChildRowLength: 0 + Highlight: {fileID: 11449412} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!114 &11449412 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 122134} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 0, y: 0, z: 0} + OutlineAmount: 0 +--- !u!114 &11460320 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 141548} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -706292897, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightScale: {x: 0, y: 0, z: 0} + OutlineAmount: 0 +--- !u!114 &11467178 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184816} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1116340262, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + SizeX: 1 + SizeZ: 1 +--- !u!114 &11471928 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113266} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 34e683c97b7b44847a2665bf2e8a8d34, type: 3} + m_Name: + m_EditorClassIdentifier: + Buttons: + - {fileID: 11410684} + - {fileID: 11499632} + MathDisplay: {fileID: 135760} +--- !u!114 &11486722 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164818} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1116340262, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + SizeX: 1 + SizeZ: 1 +--- !u!114 &11491078 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 181930} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1116340262, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + SizeX: 1 + SizeZ: 1 +--- !u!114 &11498638 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113266} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 0} + Children: + - {fileID: 11410684} + IsPassThrough: 1 + ChildRowLength: 1 + Highlight: {fileID: 11406958} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!114 &11499632 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184816} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1702003387, guid: 45b809be76fd7a3468b6f517bced6f28, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 11498638} + Children: [] + IsPassThrough: 0 + ChildRowLength: 0 + Highlight: {fileID: 11427182} + SelectableArea: {fileID: 0} + DefaultSelectableIndex: 0 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 113266} + m_IsPrefabParent: 1 diff --git a/Assets/Prefabs/Needy Math.prefab.meta b/Assets/Prefabs/Needy Math.prefab.meta new file mode 100644 index 0000000..fa13a07 --- /dev/null +++ b/Assets/Prefabs/Needy Math.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 00e9615969527414b8593f0b6988ffb6 +timeCreated: 1468782826 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: mod.bundle + assetBundleVariant: diff --git a/Assets/Scripts.meta b/Assets/Scripts.meta new file mode 100644 index 0000000..2abd6ac --- /dev/null +++ b/Assets/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c52b7668cb9ac7b48875f0a0b3a72b54 +folderAsset: yes +timeCreated: 1468784809 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/EmojiMath.cs b/Assets/Scripts/EmojiMath.cs new file mode 100644 index 0000000..c777152 --- /dev/null +++ b/Assets/Scripts/EmojiMath.cs @@ -0,0 +1,135 @@ +using System; +using System.Collections.Generic; +using System.Text; +using UnityEngine; + +public class EmojiMath : MonoBehaviour +{ + private const int Minus = 10; + private const int Enter = 11; + + public KMSelectable[] Buttons; + public TextMesh DisplayText; + + private readonly string[] _emojiNumbers = new string[] + { + ":)", + "=(", + "(:", + ")=", + ":(", + "):", + "=)", + "(=", + ":|", + "|:" + }; + + private MathPuzzle _puzzle; + private string _answer; + private int _sign = 1; + + void Start() + { + Init(); + } + + private void Init() + { + _puzzle = MathFactory.Instance.GenerateQuestion(); + + SetDisplay(); + SetUpNumberButtons(); + SetUpMinusButton(); + SetUpEnterButton(); + } + + private void SetUpMinusButton() + { + Buttons[Minus].OnInteract += delegate + { + _sign *= -1; + return false; + }; + } + + private void SetUpEnterButton() + { + Buttons[Enter].OnInteract += delegate + { + int rightAnswer; + switch (_puzzle.Operator) + { + case MathPuzzle.Operation.Addition: + rightAnswer = _puzzle.Operand1 + _puzzle.Operand2; + break; + case MathPuzzle.Operation.Subtraction: + rightAnswer = _puzzle.Operand1 - _puzzle.Operand2; + break; + default: + throw new ArgumentOutOfRangeException(); + } + + rightAnswer *= _sign; + + if (rightAnswer == int.Parse(_answer)) + { + GetComponent().HandlePass(); + } + else + { + GetComponent().HandleStrike(); + } + + _answer = string.Empty; + + return false; + }; + } + + private void SetUpNumberButtons() + { + for (var i = 0; i < 10; i++) + { + var button = Buttons[i]; + button.OnInteract += delegate + { + _answer += button.GetComponentInChildren().text; + return false; + }; + } + } + + private void SetDisplay() + { + var convertedOperand1 = ConvertOperand(_puzzle.Operand1); + var convertedOperand2 = ConvertOperand(_puzzle.Operand2); + var operation = MathPuzzle.GetOperationString(_puzzle.Operator); + + DisplayText.text = convertedOperand1 + operation + convertedOperand2; +// + "\n" + _puzzle.Operand1 + operation + _puzzle.Operand2; + } + + private string ConvertOperand(int operand) + { + var convertedDigits = new List(); + + while (operand > 0) + { + var digit = operand % 10; + convertedDigits.Add(_emojiNumbers[digit]); + operand = operand / 10; + } + + convertedDigits.Reverse(); + + var builder = new StringBuilder(); + + foreach (var convertedDigit in convertedDigits) + { + builder.Append(convertedDigit); + } + + return builder.ToString(); + } +} \ No newline at end of file diff --git a/Assets/Scripts/EmojiMath.cs.meta b/Assets/Scripts/EmojiMath.cs.meta new file mode 100644 index 0000000..0b4f2c0 --- /dev/null +++ b/Assets/Scripts/EmojiMath.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 73edc8fce13044c4d87b8ddcf4c6fdbc +timeCreated: 1468794100 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/MathFactory.cs b/Assets/Scripts/MathFactory.cs new file mode 100644 index 0000000..d6fa411 --- /dev/null +++ b/Assets/Scripts/MathFactory.cs @@ -0,0 +1,25 @@ +using UnityEngine; + +public class MathFactory +{ + private static MathFactory _instance; + private const int Max = 100; + private const int Min = 0; + + public static MathFactory Instance + { + get { return _instance ?? (_instance = new MathFactory()); } + } + + public MathPuzzle GenerateQuestion() + { + var puzzle = new MathPuzzle + { + Operand1 = Random.Range(Min, Max), + Operand2 = Random.Range(Min, Max), + Operator = MathPuzzle.GetOperation(Random.Range(0, 2)) + }; + + return puzzle; + } +} \ No newline at end of file diff --git a/Assets/Scripts/MathFactory.cs.meta b/Assets/Scripts/MathFactory.cs.meta new file mode 100644 index 0000000..a08e696 --- /dev/null +++ b/Assets/Scripts/MathFactory.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b44f02650a7cfd642a9dd7a01329dd7e +timeCreated: 1468802881 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/MathPuzzle.cs b/Assets/Scripts/MathPuzzle.cs new file mode 100644 index 0000000..59c6f89 --- /dev/null +++ b/Assets/Scripts/MathPuzzle.cs @@ -0,0 +1,38 @@ +public class MathPuzzle +{ + public int Operand1; + public int Operand2; + public Operation Operator; + + public enum Operation + { + Addition = 0, + Subtraction = 1 + } + + public static string GetOperationString(Operation op) + { + switch (op) + { + case Operation.Addition: + return "+"; + case Operation.Subtraction: + return "-"; + default: + return ""; + } + } + + public static Operation GetOperation(int type) + { + switch (type) + { + case 0: + return Operation.Addition; + case 1: + return Operation.Subtraction; + default: + return Operation.Addition; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/MathPuzzle.cs.meta b/Assets/Scripts/MathPuzzle.cs.meta new file mode 100644 index 0000000..ab0d556 --- /dev/null +++ b/Assets/Scripts/MathPuzzle.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bf70fff8ba3703e4e92345a765d69cbc +timeCreated: 1468802881 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/NeedyMathModule.cs b/Assets/Scripts/NeedyMathModule.cs new file mode 100644 index 0000000..6085408 --- /dev/null +++ b/Assets/Scripts/NeedyMathModule.cs @@ -0,0 +1,70 @@ +using UnityEngine; +using Random = UnityEngine.Random; + +public class NeedyMathModule : MonoBehaviour +{ + public KMSelectable[] Buttons; + public GameObject MathDisplay; + private string _answer; + + private enum Operation + { + Addition = 0, + Subtraction + } + + void Awake() + { + GetComponent().OnTimerExpired += OnTimerExpired; + Init(); + SetQuestion(); + } + + private void Init() + { + foreach (var button in Buttons) + { + button.OnInteract += delegate () { + _answer += button.GetComponent().text; + return false; + }; + } + } + + private void SetQuestion() + { + var op1 = Random.Range(0, 99); + var op2 = Random.Range(0, 99); + var operation = Random.Range(0, 1); + + string operationText; + + switch (operation) + { + case (int) Operation.Addition: + operationText = "+"; + break; + case (int) Operation.Subtraction: + operationText = "-"; + break; + default: + Debug.LogError("Unknown operation type"); + operationText = "?"; + break; + } + + MathDisplay.GetComponent().text = string.Format("{0} {1} {2}", op1, operationText, op2); + } + + protected bool Solve() + { + GetComponent().OnPass(); + + return false; + } + + protected void OnTimerExpired() + { + GetComponent().OnStrike(); + } +} \ No newline at end of file diff --git a/Assets/Scripts/NeedyMathModule.cs.meta b/Assets/Scripts/NeedyMathModule.cs.meta new file mode 100644 index 0000000..f84fb9e --- /dev/null +++ b/Assets/Scripts/NeedyMathModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 34e683c97b7b44847a2665bf2e8a8d34 +timeCreated: 1468771027 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TestHarness.meta b/Assets/TestHarness.meta new file mode 100644 index 0000000..4686927 --- /dev/null +++ b/Assets/TestHarness.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 96244dd0fa577b945b86a90bf46f98a8 +folderAsset: yes +timeCreated: 1468533903 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TestHarness/Highlight.prefab b/Assets/TestHarness/Highlight.prefab new file mode 100644 index 0000000..98494e5 --- /dev/null +++ b/Assets/TestHarness/Highlight.prefab @@ -0,0 +1,67 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100000 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400000} + - 23: {fileID: 2300000} + m_Layer: 0 + m_Name: Highlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &400000 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -5.862551, y: -6.756235, z: -2.2218406} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!23 &2300000 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 5f9a3d1f2de088c41abe352e0c799f21, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 100000} + m_IsPrefabParent: 1 diff --git a/Assets/TestHarness/Highlight.prefab.meta b/Assets/TestHarness/Highlight.prefab.meta new file mode 100644 index 0000000..506e242 --- /dev/null +++ b/Assets/TestHarness/Highlight.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d78a484c6e87f1b47b6596ac080fe942 +timeCreated: 1468519763 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TestHarness/HighlightOverlay.mat b/Assets/TestHarness/HighlightOverlay.mat new file mode 100644 index 0000000..5b5d477 --- /dev/null +++ b/Assets/TestHarness/HighlightOverlay.mat @@ -0,0 +1,38 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: HighlightOverlay + m_Shader: {fileID: 4800000, guid: f05c95cb27660af4b881c72279f3e697, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: 4000 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _Outline + second: 0 + m_Colors: + data: + first: + name: _Color + second: {r: 1, g: 0, b: 0, a: 0.6431373} + data: + first: + name: _OutlineColor + second: {r: 1, g: 0.2689655, b: 0, a: 1} diff --git a/Assets/TestHarness/HighlightOverlay.mat.meta b/Assets/TestHarness/HighlightOverlay.mat.meta new file mode 100644 index 0000000..232ec66 --- /dev/null +++ b/Assets/TestHarness/HighlightOverlay.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5f9a3d1f2de088c41abe352e0c799f21 +timeCreated: 1468521028 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TestHarness/Outline.shader b/Assets/TestHarness/Outline.shader new file mode 100644 index 0000000..c7bfc31 --- /dev/null +++ b/Assets/TestHarness/Outline.shader @@ -0,0 +1,77 @@ +Shader "KT/Outline" { // Based on http://wiki.unity3d.com/index.php?title=Outlined_Diffuse_3 + Properties { + _OutlineColor ("Outline Color", Color) = (0,0,0,1) + _Outline ("Outline width", Range (.000, 0.015)) = .000 + } + +CGINCLUDE +#include "UnityCG.cginc" + +struct appdata { + float4 vertex : POSITION; + float3 normal : NORMAL; +}; + +struct v2f { + float4 pos : SV_POSITION; + float4 color : COLOR; +}; + +uniform float _Outline; +uniform float4 _OutlineColor; + +v2f vert(appdata v) { + // just make a copy of incoming vertex data but scaled according to normal direction + v2f o; + + if(_Outline != 0) + { + float4 homoPos = mul(UNITY_MATRIX_MV, v.vertex); + // converting to non-homo space might be possible by just removing w... But I'm not sure it's guarenteed that w is 1, so I'm playing it safe + float3 nonHomoPos = homoPos.xyz / homoPos.w; + + // no need to renormalize, as UNITY_MATRIX_IT_MV is always orthogonal + // http://forum.unity3d.com/threads/vec3-normalw-normalize-gl_normalmatrix-gl_normal-in-surface-shader.136586/ + // http://www.lighthouse3d.com/tutorials/glsl-tutorial/normalization-issues/ + float3 viewSpaceNormal = mul((float3x3)UNITY_MATRIX_IT_MV, v.normal); + + // Performing translation along normal in view space rather than local space so that scale won't affect the outline's shape. + nonHomoPos += viewSpaceNormal * _Outline; + + o.pos = mul(UNITY_MATRIX_P, float4(nonHomoPos, 1)); + } + else + { + o.pos = mul(UNITY_MATRIX_MVP, v.vertex); + } + + o.color = _OutlineColor; + + return o; +} +ENDCG + + SubShader { + Tags {"Queue"="Overlay" "IgnoreProjector"="True" "RenderType"="Transparent"} + + + // note that a vertex shader is specified here but its using the one above + Pass { + Name "OUTLINE" + Tags { "LightMode" = "Always" } + Cull Front + ZWrite On + ColorMask RGB + Blend SrcAlpha OneMinusSrcAlpha + //Offset 50,50 + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + half4 frag(v2f i) : SV_Target { return i.color; } + ENDCG + } + } + + Fallback "Diffuse" +} \ No newline at end of file diff --git a/Assets/TestHarness/Outline.shader.meta b/Assets/TestHarness/Outline.shader.meta new file mode 100644 index 0000000..33e5b95 --- /dev/null +++ b/Assets/TestHarness/Outline.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f05c95cb27660af4b881c72279f3e697 +timeCreated: 1468521028 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TestHarness/TestHarness.cs b/Assets/TestHarness/TestHarness.cs new file mode 100644 index 0000000..753b764 --- /dev/null +++ b/Assets/TestHarness/TestHarness.cs @@ -0,0 +1,131 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + +public class TestHarness : MonoBehaviour +{ + public GameObject HighlightPrefab; + TestSelectable currentSelectable; + TestSelectableArea currentSelectableArea; + + void Awake() + { + AddHighlightables(); + AddSelectables(); + } + + void Start() + { + currentSelectable = GetComponent(); + + KMBombModule[] modules = FindObjectsOfType(); + currentSelectable.Children = new TestSelectable[modules.Length]; + for (int i=0; i < modules.Length; i++) + { + currentSelectable.Children[i] = modules[i].GetComponent(); + modules[i].GetComponent().Parent = currentSelectable; + + modules[i].OnPass = delegate () { Debug.Log("Module Passed"); return false; }; + modules[i].OnStrike = delegate () { Debug.Log("Strike"); return false; }; + } + + currentSelectable.ActivateChildSelectableAreas(); + } + + void Update() + { + Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); + Debug.DrawRay(ray.origin, ray.direction); + RaycastHit hit; + int layerMask = 1 << 11; + bool rayCastHitSomething = Physics.Raycast(ray, out hit, 1000, layerMask); + if(rayCastHitSomething) + { + TestSelectableArea hitArea = hit.collider.GetComponent(); + if (hitArea != null) + { + if (currentSelectableArea != hitArea) + { + if(currentSelectableArea != null) + { + currentSelectableArea.Selectable.Deselect(); + } + + hitArea.Selectable.Select(); + currentSelectableArea = hitArea; + } + } + else + { + if(currentSelectableArea != null) + { + currentSelectableArea.Selectable.Deselect(); + currentSelectableArea = null; + } + } + } + else + { + if (currentSelectableArea != null) + { + currentSelectableArea.Selectable.Deselect(); + currentSelectableArea = null; + } + } + + if(Input.GetMouseButtonDown(0)) + { + if(currentSelectableArea != null && currentSelectableArea.Selectable.Interact()) + { + currentSelectable.DeactivateChildSelectableAreas(currentSelectableArea.Selectable); + currentSelectable = currentSelectableArea.Selectable; + currentSelectable.ActivateChildSelectableAreas(); + } + } + + if(Input.GetMouseButtonDown(1)) + { + if(currentSelectable.Parent != null) + { + currentSelectable.DeactivateChildSelectableAreas(currentSelectable.Parent); + currentSelectable = currentSelectable.Parent; + currentSelectable.ActivateChildSelectableAreas(); + } + } + } + + void AddHighlightables() + { + List highlightables = new List(GameObject.FindObjectsOfType()); + + foreach(KMHighlightable highlightable in highlightables) + { + TestHighlightable highlight = highlightable.gameObject.AddComponent(); + + highlight.HighlightPrefab = HighlightPrefab; + highlight.HighlightScale = highlightable.HighlightScale; + highlight.OutlineAmount = highlightable.OutlineAmount; + } + } + + void AddSelectables() + { + List selectables = new List(GameObject.FindObjectsOfType()); + + foreach (KMSelectable selectable in selectables) + { + TestSelectable testSelectable = selectable.gameObject.AddComponent(); + testSelectable.Highlight = selectable.Highlight.GetComponent(); + } + + foreach (KMSelectable selectable in selectables) + { + TestSelectable testSelectable = selectable.gameObject.GetComponent(); + testSelectable.Children = new TestSelectable[selectable.Children.Length]; + for (int i = 0; i < selectable.Children.Length; i++) + { + testSelectable.Children[i] = selectable.Children[i].GetComponent(); + } + } + } +} diff --git a/Assets/TestHarness/TestHarness.cs.meta b/Assets/TestHarness/TestHarness.cs.meta new file mode 100644 index 0000000..a544f7f --- /dev/null +++ b/Assets/TestHarness/TestHarness.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e42de117a0e0fee45a734471e2694817 +timeCreated: 1468518341 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TestHarness/TestHarness.prefab b/Assets/TestHarness/TestHarness.prefab new file mode 100644 index 0000000..24ddf85 --- /dev/null +++ b/Assets/TestHarness/TestHarness.prefab @@ -0,0 +1,69 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &101964 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 439642} + - 114: {fileID: 11405796} + - 114: {fileID: 11497068} + m_Layer: 0 + m_Name: TestHarness + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &439642 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 101964} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.0035797693, y: 0.041477196, z: -0.0068158545} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!114 &11405796 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 101964} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e42de117a0e0fee45a734471e2694817, type: 3} + m_Name: + m_EditorClassIdentifier: + HighlightPrefab: {fileID: 100000, guid: d78a484c6e87f1b47b6596ac080fe942, type: 2} + ModuleToTest: {fileID: 0} +--- !u!114 &11497068 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 101964} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 27cec48d3b95d1446848a3d79f3366d9, type: 3} + m_Name: + m_EditorClassIdentifier: + Highlight: {fileID: 0} + Children: [] + Parent: {fileID: 0} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 101964} + m_IsPrefabParent: 1 diff --git a/Assets/TestHarness/TestHarness.prefab.meta b/Assets/TestHarness/TestHarness.prefab.meta new file mode 100644 index 0000000..fc3bc9b --- /dev/null +++ b/Assets/TestHarness/TestHarness.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8814ea52310d2614a9feda02ec355ae4 +timeCreated: 1468518352 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TestHarness/TestHighlightable.cs b/Assets/TestHarness/TestHighlightable.cs new file mode 100644 index 0000000..deb447f --- /dev/null +++ b/Assets/TestHarness/TestHighlightable.cs @@ -0,0 +1,93 @@ +using UnityEngine; +using System.Collections; + +public class TestHighlightable : MonoBehaviour +{ + + public Vector3 HighlightScale = Vector3.zero; + public GameObject HighlightPrefab; + + [Range(0.0F, 0.01f)] + public float OutlineAmount = 0f; + + public Material MaterialOverride = null; + + protected static readonly string interactionAnimationState = "InteractionPulse"; + protected static readonly string selectionAnimationState = "SelectionPulse"; + protected GameObject highlight; + protected Animator highlightAnimator; + + protected virtual void Start() + { + Init(); + } + + protected void Init() + { + if (highlight == null && GetComponent() != null) + { + highlight = Instantiate(HighlightPrefab) as GameObject; + highlight.transform.parent = transform; + + if (HighlightScale == Vector3.zero) + { + if (OutlineAmount == 0f) + { + highlight.transform.localScale = new Vector3(1.1f, 0.56f, 1.1f); + } + else + { + highlight.transform.localScale = Vector3.one; + } + } + else + { + highlight.transform.localScale = HighlightScale; + } + + highlight.transform.localPosition = new Vector3(0, 0, 0); + highlight.transform.localRotation = Quaternion.identity; + + MeshFilter meshFilter = highlight.AddComponent(); + meshFilter.mesh = Instantiate(GetComponent().sharedMesh) as Mesh; + + int materialCount = 1; + if (GetComponent() != null) + { + materialCount = Mathf.Max(GetComponent().sharedMaterials.Length, materialCount); + } + + Material highlightMaterial = MaterialOverride; + if (MaterialOverride == null) + { + highlightMaterial = highlight.GetComponent().sharedMaterial; // use material in the highlight prefab + } + Material[] highlightMaterials = new Material[materialCount]; + for (int i = 0; i < materialCount; i++) + { + highlightMaterials[i] = highlightMaterial; + } + highlight.GetComponent().materials = highlightMaterials; + + highlight.SetActive(false); + } + } + + public void Off() + { + On(false); + } + + public void On() + { + On(true); + } + + protected void On(bool on) + { + if (highlight != null) + { + highlight.SetActive(on); + } + } +} diff --git a/Assets/TestHarness/TestHighlightable.cs.meta b/Assets/TestHarness/TestHighlightable.cs.meta new file mode 100644 index 0000000..518f35f --- /dev/null +++ b/Assets/TestHarness/TestHighlightable.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3b1c971e3ab038b4d949d9e1be82acf6 +timeCreated: 1468518693 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TestHarness/TestSelectable.cs b/Assets/TestHarness/TestSelectable.cs new file mode 100644 index 0000000..0f1a946 --- /dev/null +++ b/Assets/TestHarness/TestSelectable.cs @@ -0,0 +1,145 @@ +using UnityEngine; +using System.Collections; +using System; + +public class TestSelectable : MonoBehaviour +{ + public TestHighlightable Highlight; + public TestSelectable[] Children; + protected TestSelectableArea _selectableArea; + public TestSelectableArea SelectableArea + { + get + { + if(_selectableArea == null) + { + if (Highlight != null) + { + MeshRenderer meshRenderer = Highlight.gameObject.GetComponent(); + if (meshRenderer == null) + { + //Adding a BoxCollider will take on an appropriate size/position based on + //a MeshRenderer (rather than just a MeshFilter, as it appeared to work in 4.6) + //Thus, we add a MeshRenderer if needed but immediately disable it. + meshRenderer = Highlight.gameObject.AddComponent(); + meshRenderer.enabled = false; + } + + BoxCollider collider = Highlight.gameObject.AddComponent(); + collider.isTrigger = true; + _selectableArea = Highlight.gameObject.AddComponent(); + _selectableArea.Selectable = this; + _selectableArea.gameObject.layer = 11; + _selectableArea.DeactivateSelectableArea(); + } + } + + return _selectableArea; + + } + } + public TestSelectable Parent; + + void Start() + { + + } + + public bool Interact() + { + bool shouldDrill = Children.Length > 0; + + if(GetComponent().OnInteract != null) + { + shouldDrill = GetComponent().OnInteract(); + } + + return shouldDrill; + } + + public void Select() + { + Highlight.On(); + } + + public void Deselect() + { + Highlight.Off(); + } + + public void OnDrillAway(TestSelectable newParent) + { + DeactivateChildSelectableAreas(newParent); + } + + public void OnDrillTo() + { + ActivateChildSelectableAreas(); + } + + public void ActivateChildSelectableAreas() + { + if (this.SelectableArea != null) + { + this.SelectableArea.DeactivateSelectableArea(); + } + for (int i = 0; i < Children.Length; i++) + { + if (Children[i] != null) + { + if (Children[i].SelectableArea != null) + { + Children[i].SelectableArea.ActivateSelectableArea(); + } + } + } + } + + public void DeactivateImmediateChildSelectableAreas() + { + for (int i = 0; i < Children.Length; i++) + { + if (Children[i] != null) + { + if (Children[i].SelectableArea != null) + { + Children[i].SelectableArea.DeactivateSelectableArea(); + } + } + } + } + + public void DeactivateChildSelectableAreas(TestSelectable newParent) + { + TestSelectable parent = newParent; + while (parent != null) + { + if (parent == this) + return; + parent = parent.Parent; + } + + parent = this; + + while (parent != newParent && parent != null) + { + for (int i = 0; i < parent.Children.Length; i++) + { + if (parent.Children[i] != null) + { + if (parent.Children[i].SelectableArea != null) + { + parent.Children[i].SelectableArea.DeactivateSelectableArea(); + } + } + } + + parent = parent.Parent; + + if (parent != null && parent == newParent && parent.SelectableArea != null) + { + parent.SelectableArea.ActivateSelectableArea(); + } + } + } +} diff --git a/Assets/TestHarness/TestSelectable.cs.meta b/Assets/TestHarness/TestSelectable.cs.meta new file mode 100644 index 0000000..e5e55df --- /dev/null +++ b/Assets/TestHarness/TestSelectable.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 27cec48d3b95d1446848a3d79f3366d9 +timeCreated: 1468521207 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TestHarness/TestSelectableArea.cs b/Assets/TestHarness/TestSelectableArea.cs new file mode 100644 index 0000000..64cfd90 --- /dev/null +++ b/Assets/TestHarness/TestSelectableArea.cs @@ -0,0 +1,40 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + +public class TestSelectableArea : MonoBehaviour +{ + public TestSelectable Selectable; + public List Colliders = new List(); + public bool IsActive { get; protected set; } + + public void Awake() + { + if (GetComponent() != null) + { + Colliders.Add(GetComponent()); + } + + IsActive = false; + } + + public void ActivateSelectableArea() + { + foreach (Collider c in Colliders) + { + c.enabled = true; + } + + IsActive = true; + } + + public void DeactivateSelectableArea() + { + foreach (Collider c in Colliders) + { + c.enabled = false; + } + + IsActive = false; + } +} \ No newline at end of file diff --git a/Assets/TestHarness/TestSelectableArea.cs.meta b/Assets/TestHarness/TestSelectableArea.cs.meta new file mode 100644 index 0000000..243a4d7 --- /dev/null +++ b/Assets/TestHarness/TestSelectableArea.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1a373c64243ab994d82b0b45811eb5b1 +timeCreated: 1468522861 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a535159 --- /dev/null +++ b/LICENSE @@ -0,0 +1,24 @@ +The Keep Talking and Nobody Explodes ModKit License + +Copyright (c) 2016 keeptalkinggame + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +The Software will only be used for the purpose of creating modifications to the +game "Keep Talking and Nobody Explodes". + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Manual/Math.html b/Manual/Math.html new file mode 100644 index 0000000..ee5fb96 --- /dev/null +++ b/Manual/Math.html @@ -0,0 +1,79 @@ + + + + + Keep Talking and Nobody Explodes Example Manual Page + + + + + + + +
+
+ +
+ +

On the Subject of Math

+

+ Math is easy. But is it easy when the numbers are in another language? Let's find out. +

+ +

Decipher the characters on the display into numbers and answer the question. Enter the numbers with the keypad and press '=' to submit your answer. Use '-' to toggle the sign.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CharacterNumber
:)0
=(1
(:2
)=3
:(4
):5
=)6
(=7
:|8
|:9
+
+
+
+ \ No newline at end of file diff --git a/Manual/css/main.css b/Manual/css/main.css new file mode 100644 index 0000000..04bbfac --- /dev/null +++ b/Manual/css/main.css @@ -0,0 +1,899 @@ + +/* + * Some useful numbers... + * + * When font-size is 1em/12pt/16px/100%: + * 1px = 0.0625em (when PPI is 96) + * 1in = 6em + * 1pt = 0.0833333em (1/12em) + * + */ + +/*! HTML5 Boilerplate v4.3.0 | MIT License | http://h5bp.com/ */ + +/* + * What follows is the result of much research on cross-browser styling. + * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal, + * Kroc Camen, and the H5BP dev community and team. + */ + +/* ========================================================================== + Base styles: opinionated defaults + ========================================================================== */ + +html, +button, +input, +select, +textarea { + color: #222; +} +@media print { + html, + button, + input, + select, + textarea { + color: #000; + } +} + +html { + font-family: 'Special Elite', 'Courier New', monospace; + font-size: 1em; + line-height: 1.4; +} + +/* + * Remove text-shadow in selection highlight: h5bp.com/i + * These selection rule sets have to be separate. + * Customize the background color to match your design. + */ + +::-moz-selection { + background: #b3d4fc; + text-shadow: none; +} + +::selection { + background: #b3d4fc; + text-shadow: none; +} + +/* + * A better looking default horizontal rule + */ + +hr { + display: block; + height: 1px; + border: 0; + border-top: 1px solid #ccc; + margin: 1em 0; + padding: 0; +} + +/* + * Remove the gap between images, videos, audio and canvas and the bottom of + * their containers: h5bp.com/i/440 + */ + +audio, +canvas, +img, +video { + vertical-align: middle; +} + +/* + * Remove default fieldset styles. + */ + +fieldset { + border: 0; + margin: 0; + padding: 0; +} + +/* + * Allow only vertical resizing of textareas. + */ + +textarea { + resize: vertical; +} + +/* ========================================================================== + Author's custom styles + ========================================================================== */ + +html { + margin: 0; + padding: 0; +} +body { + margin: 0; + padding: 0; + background: url('../img/web-background.jpg'); + background-attachment: fixed; +} +@media print { + body { + background: none; + } +} + +p, +pre { + margin: .5em 0 1em; /* bring top of paragraphs closer to headers */ +} + +em { + font-style:normal; + text-decoration:underline; +} + +h1 { + font-size: 2em; + margin: 0.67em 0 0; +} + +h2 { + font-size: 1.5em; + margin: 0.83em 0 0; +} + +h3 { + font-size: 1.17em; + margin: 1em 0 0; +} + +h4 { + font-size: 1em; + margin: 1.33em 0 0; +} + +h5 { + font-size: 0.83em; + margin: 1.67em 0 0; +} + +h6 { + font-size: 0.67em; + margin: 2.33em 0 0; +} + +h2, h3, h4 { + text-decoration:underline; +} + +li ul { + margin: 0; +} + +table { + border-collapse:collapse; +} + +table, th, td { + border: 1px solid #222; +} +@media print { + table, th, td { + border-color: black; + } +} + +td, th { + padding: .3em .6em .2em; +} + +.new-block-formatting-context { + /* Starts a new block formatting context which will prevent text from wrapping tightly around + an image, etc. + http://colinaarts.com/articles/the-magic-of-overflow-hidden/ + */ + overflow: hidden; +} + +.no-border, .no-border tr, .no-border tr th, .no-border tr td { + border: none; +} + +.centered-img { + display: block; + margin-left: auto; + margin-right: auto; +} + +.diagram { + width: 9em; + float: right; + margin-left: 1em; + margin-bottom: 1em; +} + +.diagram-label { + text-align:center; +} + +.page { + margin: 1em auto; + padding: 0; + border: 1px solid #222; /* Safely using px because exists outside layout of page content */ + box-shadow: #222 0.0em 0em 0.6em; + clear: both; + background-color: #FFF; + background-repeat: no-repeat; + background-position: center; + background-size: 100%; + width: 51em; /* = 8.5in at 12pt (1em) */ + min-height: 66em; /* = 11in at 12pt (1em) */ +} +@media print { + .page { + margin: 0; + border: none; + box-shadow: none; + max-width: none; + min-height: initial; + + width: 51em; /* = 8.5in at 12pt (1em) */ + height: 66em; /* = 11in at 12pt (1em) */ + page-break-before: always; + } +} + +.page-bg-01 { + background-image: url("../img/page-bg-noise-01.png"); +} + +.page-bg-02 { + background-image: url("../img/page-bg-noise-02.png"); +} + +.page-bg-03 { + background-image: url("../img/page-bg-noise-03.png"); +} + +.page-bg-04 { + background-image: url("../img/page-bg-noise-04.png"); +} + +.page-bg-05 { + background-image: url("../img/page-bg-noise-05.png"); +} + +.page-bg-06 { + background-image: url("../img/page-bg-noise-06.png"); +} + +.page-bg-07 { + background-image: url("../img/page-bg-noise-07.png"); +} + +@media print { + .page-first { + page-break-before: auto; + } +} + +.page-content { + margin: 4.5em 8.82% 0; /* = 0.75in ~0.75in 0 at 12pt (1em) */ + min-height: 57em; /* Leaving 3em at the bottom for footer (0.75in) */ +} + +.page-header { + display: block; + position: relative; + height: 0; + top: 1.5em; /* = 0.25in at 12pt (1em) */ + margin: 0 5.88%; /* = ~0.5in at 12pt (1em) */ +} +/*.page-first .page-header { + display: none; +}*/ +.page-header-section-title { + position: relative; + height: 0; + top: 0; + float: right; +} +.page-header-doc-title { + position: relative; + height: 0; + top: 0; +} + +.page-footer { + text-align: center; +} + +.relative-footer { + margin-top: 1.5em; /* = 0.25in */ + height: 3em /* = 0.5in */ +} + +.absolute-footer { + position: relative; + height: 0; + top: 63em; /* = 10.5in at 12pt (1em) */ + display: none; +} + +@media print { + .relative-footer { + display: none; + } + + .absolute-footer { + display: block; + } +} + +.appendix-reference { + font-style: italic; +} + +/* ========================================================================== + Section-specific + ========================================================================== */ + +.instructions { + font-family: 'Cabin', sans-serif; + line-height: normal; +} + +.instructions h2, .instructions h3, .instructions h4 { + text-decoration:none; +} + +.instructions em { + font-style: italic; + text-decoration: none; +} + +.bomb-diagram { + text-align: center; + margin: 0 auto; + display:block; +} + +.bomb-diagram-front { + width: 18.0020625em; /* Hardcoding for IE */ +} + +.bomb-diagram-side { + width: 5.3895625em; /* Hardcoding for IE */ +} + +.diagram-label { +} + +.bomb-diagram img { + height: 11.7em; /* just barely gives enough room for all the other text */ + vertical-align: middle; + padding: .5em 1em; +} + +.bomb-diagram table, .bomb-diagram tr, .bomb-diagram td { + margin:0; + padding:0; + border:0; +} + +.bomb-diagram table { + margin: 0 auto; +} + +.timer-diagram { + text-align: center; + display: block; + float: right; + width: 5em; + padding: 0; + margin: 0 0 2em 2em; +} + +.timer-diagram img { + width: 100%; + margin: 0; + padding: 0; +} + +.section-title .page-content { + text-align: center; +} + +.section-title .vertical-spacer +{ + height: 20.5em; +} + +.music-image { + height: 45em; +} + +.music-table td, .music-table th { + padding: 0; +} + +.password-table { + margin-left: auto; + margin-right: auto; +} + +.repeaters-table { + width: 98%; + border: none; + margin-left: auto; + margin-right: auto; +} + +.repeaters-spacer { + border:none; +} + +.whos-on-first-step1-table, .whos-on-first-step1-table td { + margin-left: auto; + margin-right: auto; + border:none; +} + +.whos-on-first-step1-table th, .whos-on-first-step1-table td { + font-size: 0.9em; + width: 6.5em; + padding: 0.45em 0.45em .7em .7em; +} + +.whos-on-first-step1-table th table, .whos-on-first-step1-table td table { + width: 95%; + margin-left: auto; + margin-right: auto; + +} + +.whos-on-first-look-at-display { + background-color: black; + color: white; +} + +.whos-on-first-step1-table td table td +{ + font-size: 1em; + height: 1.5em; + width: 50%; + padding: 0; + text-align: center; + border: 1px solid black; +} + +.whos-on-first-step1-table td table th +{ + font-size: 1em; + height: 1.5em; + padding: 0.1em 0.1em; + text-align: center; + border: 1px solid black; +} + +.whos-on-first-step1-table th { + border: 1px solid black; +} + +.whos-on-first-step2-table { + width: 105%; +} + +.whos-on-first-step2-table th { + padding-left: .2em; + padding-right: .2em; + padding-top: .15em; + padding-bottom: .15em; +} + +.whos-on-first-step2-table td { + font-size: .78em; +} + +.keypad-table { + margin-left: auto; + margin-right: auto; + font-family: Arial, sans-serif; + font-size: 2.2em; + border-style: none; + text-align: center; +} + +.keypad-table-column { + background-color: #FFF; /*For ensuring photocopy noise doesn't affect symbols*/ + padding: .1em; +} + +.keypad-table-spacer { + border-style: none; +} + +.keypad-symbol-image { + height:1.9em; +} + +.maze { + width:11em; + height:11em; + margin:.1em; +} + +#morseCodeChart { + float: left; + margin-right: 1em; + height: 32em; + width: 24.8270625em; /* Hardcode for IE */ + border:1px solid #021a40; + background-color:#ffffff; +} + +.morse-code table th { + font-size: 1.2em; + font-weight: bold; + width: 5em; +} + +.morse-code table td { + text-align: center; +} + +.venn-wires table th { + font-size: 1.2em; + font-weight: bold; +} + +.venn-wires table td { + text-align: center; +} + +#venndiagram { + display: block; + width: 70%; + position:relative; + top: -2em; + margin-bottom: 0; + margin-left: auto; + margin-right: auto; +} + + +#vennlegend { + width: 20em; + float: left; + position:relative; + top: -0.7em; +} + +#venntable { + border-width: 0.2em; + position:relative; + top: -0.7em; +} + +#venntable td { + font-size: 0.75em; +} + +.venn-wires .appendix-reference { + margin-top: 0; + position:relative; +} + +.appendix-ports table { + margin-top: 1em; +} + +.appendix-ports img { + height: 5em; +} + +.appendix-ports table td { + text-align: center; +} + +.appendix-ports table th { + font-size: 1.2em; + font-weight: bold; +} + +.needy-knob table { + margin-left: 1.3em; + margin-right: 1.3em; +} + +.needy-knob table td, .needy-knob table th { + width: 1.5em; + text-align:center; +} + +.needy-diagram-label { + text-align:left; +} + +.wire-sequence table { + display: inline-table; + margin-top: 1em; + margin-bottom: 1em; + width: 15.3em; + font-size: 0.9em; +} + +.wire-sequence td, .wire-sequence th { + padding-left: 0.4em; + padding-right: 0.4em; +} + +.wire-sequence table .header { + background-color: #222; + color: #FFF; +} + +.wire-sequence .blue-table { + /* Because it's the middle table... */ + margin-left: .3em; + margin-right: .3em; +} + +.wire-sequence .second-col { + width: 5em; +} + +.memory-rules p { + margin-top: .3em; + font-size: 0.95em; /* TODO: Remove this, it's a quick hack to get printing looking nicer with our placeholder graphic design. */ +} + +.rhythm-heaven .sub-components { + text-align: center; + margin-left: auto; + margin-right: auto; +} + +.rhythm-heaven .sub-components img { + width: 5em; + max-height: 4em; +} + +.rhythm-heaven .example { + width: 29em; + float: right; + position: relative; + top: -2.9em; +} + +.rhythm-heaven .example td, .rhythm-heaven .example th { + padding: .15em .7em; +} + +.flavour-text +{ + font-style: italic; + font-size:75%; + margin-top: .5em; +} + +/* ========================================================================== + Helper classes + ========================================================================== */ + +/* + * Image replacement + */ + +.ir { + background-color: transparent; + border: 0; + overflow: hidden; + /* IE 6/7 fallback */ + *text-indent: -9999px; +} + +.ir:before { + content: ""; + display: block; + width: 0; + height: 150%; +} + +/* + * Hide from both screenreaders and browsers: h5bp.com/u + */ + +.hidden { + display: none !important; + visibility: hidden; +} + +/* + * Hide from both screenreaders and browsers, but only for non-print + */ +.hide-screen { + display: none; + visibility: hidden; +} + +@media print { + .hide-screen { + display: initial; + visibility: initial; + } +} + +/* + * Hide from both screenreaders and browsers, but only for print + */ +@media print { + .hide-print { + display: none; + visibility: hidden; + } +} + +/* + * Hide only visually, but have it available for screenreaders: h5bp.com/v + */ + +.visuallyhidden { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +/* + * Extends the .visuallyhidden class to allow the element to be focusable + * when navigated to via the keyboard: h5bp.com/p + */ + +.visuallyhidden.focusable:active, +.visuallyhidden.focusable:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; +} + +/* + * Hide visually and from screenreaders, but maintain layout + */ + +.invisible { + visibility: hidden; +} + +/* + * Clearfix: contain floats + * + * For modern browsers + * 1. The space content is one way to avoid an Opera bug when the + * `contenteditable` attribute is included anywhere else in the document. + * Otherwise it causes space to appear at the top and bottom of elements + * that receive the `clearfix` class. + * 2. The use of `table` rather than `block` is only necessary if using + * `:before` to contain the top-margins of child elements. + */ + +.clearfix:before, +.clearfix:after { + content: " "; /* 1 */ + display: table; /* 2 */ +} + +.clearfix:after { + clear: both; +} + +/* + * For IE 6/7 only + * Include this rule to trigger hasLayout and contain floats. + */ + +.clearfix { + *zoom: 1; +} + +/* ========================================================================== + EXAMPLE Media Queries for Responsive Design. + These examples override the primary ('mobile first') styles. + Modify as content requires. + ========================================================================== */ + +@media only screen and (min-width: 35em) { + /* Style adjustments for viewports that meet the condition */ +} + +@media print, + (-o-min-device-pixel-ratio: 5/4), + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + /* Style adjustments for high resolution devices */ +} + +/* ========================================================================== + Print styles. + Inlined to avoid required HTTP connection: h5bp.com/r + ========================================================================== */ + +@media print { + /* Removed all this stuff because we'll be aiming to make everything deliberate for print */ + * { + /*background: transparent !important; + color: #000 !important;*/ /* Black prints faster: h5bp.com/s */ + /*box-shadow: none !important; + text-shadow: none !important;*/ + } + + a, + a:visited { + text-decoration: underline; + } + + a[href]:after { + content: " (" attr(href) ")"; + } + + abbr[title]:after { + content: " (" attr(title) ")"; + } + + /* + * Don't show links for images, or javascript/internal links + */ + + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + + thead { + display: table-header-group; /* h5bp.com/t */ + } + + tr, + img { + page-break-inside: avoid; + } + + img { + max-width: 100% !important; + } + + @page { + margin: 0; + } + + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + + h2, + h3 { + page-break-after: avoid; + } +} + +td.math-table-cell { + text-align: center; +} \ No newline at end of file diff --git a/Manual/css/normalize.css b/Manual/css/normalize.css new file mode 100644 index 0000000..f6da1ab --- /dev/null +++ b/Manual/css/normalize.css @@ -0,0 +1,525 @@ +/*! normalize.css v1.1.3 | MIT License | git.io/normalize */ + +/* ========================================================================== + HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} + +/** + * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3. + */ + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4. + * Known issue: no IE 6 support. + */ + +[hidden] { + display: none; +} + +/* ========================================================================== + Base + ========================================================================== */ + +/** + * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using + * `em` units. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-size: 100%; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Address `font-family` inconsistency between `textarea` and other form + * elements. + */ + +html, +button, +input, +select, +textarea { + font-family: sans-serif; +} + +/** + * Address margins handled incorrectly in IE 6/7. + */ + +body { + margin: 0; +} + +/* ========================================================================== + Links + ========================================================================== */ + +/** + * Address `outline` inconsistency between Chrome and other browsers. + */ + +a:focus { + outline: thin dotted; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* ========================================================================== + Typography + ========================================================================== */ + +/** + * Address font sizes and margins set differently in IE 6/7. + * Address font sizes within `section` and `article` in Firefox 4+, Safari 5, + * and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +h2 { + font-size: 1.5em; + margin: 0.83em 0; +} + +h3 { + font-size: 1.17em; + margin: 1em 0; +} + +h4 { + font-size: 1em; + margin: 1.33em 0; +} + +h5 { + font-size: 0.83em; + margin: 1.67em 0; +} + +h6 { + font-size: 0.67em; + margin: 2.33em 0; +} + +/** + * Address styling not present in IE 7/8/9, Safari 5, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +blockquote { + margin: 1em 2.5em; +} + +/** + * Address styling not present in Safari 5 and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address differences between Firefox and other browsers. + * Known issue: no IE 6/7 normalization. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Address styling not present in IE 6/7/8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Address margins set differently in IE 6/7. + */ + +p, +pre { + margin: 1em 0; +} + +/** + * Correct font family set oddly in IE 6, Safari 4/5, and Chrome. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + _font-family: 'courier new', monospace; + font-size: 1em; +} + +/** + * Improve readability of pre-formatted text in all browsers. + */ + +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +/** + * Address CSS quotes not supported in IE 6/7. + */ + +q { + quotes: none; +} + +/** + * Address `quotes` property not supported in Safari 4. + */ + +q:before, +q:after { + content: ''; + content: none; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* ========================================================================== + Lists + ========================================================================== */ + +/** + * Address margins set differently in IE 6/7. + */ + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 2.5em; +} + +/** + * Address paddings set differently in IE 6/7. + */ + +menu, +ol, +ul { + padding: 0 0 0 2.5em; +} + +/** + * Correct list images handled incorrectly in IE 7. + */ + +nav ul, +nav ol { + list-style: none; + list-style-image: none; +} + +/* ========================================================================== + Embedded content + ========================================================================== */ + +/** + * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3. + * 2. Improve image quality when scaled in IE 7. + */ + +img { + border: 0; /* 1 */ + -ms-interpolation-mode: bicubic; /* 2 */ +} + +/** + * Correct overflow displayed oddly in IE 9. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* ========================================================================== + Figures + ========================================================================== */ + +/** + * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11. + */ + +figure { + margin: 0; +} + +/* ========================================================================== + Forms + ========================================================================== */ + +/** + * Correct margin displayed oddly in IE 6/7. + */ + +form { + margin: 0; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 0.125em; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct color not being inherited in IE 6/7/8/9. + * 2. Correct text not wrapping in Firefox 3. + * 3. Correct alignment displayed oddly in IE 6/7. + */ + +legend { + border: 0; /* 1 */ + padding: 0; +} + +/** + * 1. Correct font size not being inherited in all browsers. + * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5, + * and Chrome. + * 3. Improve appearance and consistency in all browsers. + */ + +button, +input, +select, +textarea { + font-size: 100%; /* 1 */ + margin: 0; /* 2 */ + vertical-align: baseline; /* 3 */ + *vertical-align: middle; /* 3 */ +} + +/** + * Address Firefox 3+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +button, +input { + line-height: normal; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+. + * Correct `select` style inheritance in Firefox 4+ and Opera. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + * 4. Remove inner spacing in IE 7 without affecting normal text inputs. + * Known issue: inner spacing remains in IE 6. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ + *overflow: visible; /* 4 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * 1. Address box sizing set to content-box in IE 8/9. + * 2. Remove excess padding in IE 8/9. + * 3. Remove excess padding in IE 7. + * Known issue: excess padding remains in IE 6. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ + *height: 13px; /* 3 */ + *width: 13px; /* 3 */ +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari 5 and Chrome + * on OS X. + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Remove inner padding and border in Firefox 3+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * 1. Remove default vertical scrollbar in IE 6/7/8/9. + * 2. Improve readability and alignment in all browsers. + */ + +textarea { + overflow: auto; /* 1 */ + vertical-align: top; /* 2 */ +} + +/* ========================================================================== + Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/Manual/img/Component.svg b/Manual/img/Component.svg new file mode 100644 index 0000000..8f2cd49 --- /dev/null +++ b/Manual/img/Component.svg @@ -0,0 +1,402 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + d[Ddddsadfdsajklfhweioluahtgioulashg;lkjasdgfo;ihawspoegh [DISPLAY] + + + + + + + + + + + + + 1 + 2 + 3 + 0 + 4 + 5 + 6 + 7 + 8 + 9 + = + - + diff --git a/Manual/img/page-bg-noise-01.png b/Manual/img/page-bg-noise-01.png new file mode 100644 index 0000000..d4dd9b5 Binary files /dev/null and b/Manual/img/page-bg-noise-01.png differ diff --git a/Manual/img/page-bg-noise-02.png b/Manual/img/page-bg-noise-02.png new file mode 100644 index 0000000..3640d15 Binary files /dev/null and b/Manual/img/page-bg-noise-02.png differ diff --git a/Manual/img/page-bg-noise-03.png b/Manual/img/page-bg-noise-03.png new file mode 100644 index 0000000..3ec7821 Binary files /dev/null and b/Manual/img/page-bg-noise-03.png differ diff --git a/Manual/img/page-bg-noise-04.png b/Manual/img/page-bg-noise-04.png new file mode 100644 index 0000000..6bc82d9 Binary files /dev/null and b/Manual/img/page-bg-noise-04.png differ diff --git a/Manual/img/page-bg-noise-05.png b/Manual/img/page-bg-noise-05.png new file mode 100644 index 0000000..c7109f0 Binary files /dev/null and b/Manual/img/page-bg-noise-05.png differ diff --git a/Manual/img/page-bg-noise-06.png b/Manual/img/page-bg-noise-06.png new file mode 100644 index 0000000..28decde Binary files /dev/null and b/Manual/img/page-bg-noise-06.png differ diff --git a/Manual/img/page-bg-noise-07.png b/Manual/img/page-bg-noise-07.png new file mode 100644 index 0000000..fae79c7 Binary files /dev/null and b/Manual/img/page-bg-noise-07.png differ diff --git a/Manual/img/web-background.jpg b/Manual/img/web-background.jpg new file mode 100644 index 0000000..2f729b9 Binary files /dev/null and b/Manual/img/web-background.jpg differ diff --git a/ProjectSettings/AudioManager.asset b/ProjectSettings/AudioManager.asset new file mode 100644 index 0000000..faf901c --- /dev/null +++ b/ProjectSettings/AudioManager.asset @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!11 &1 +AudioManager: + m_ObjectHideFlags: 0 + m_Volume: 1 + Rolloff Scale: 1 + Doppler Factor: 1 + Default Speaker Mode: 2 + m_SampleRate: 0 + m_DSPBufferSize: 0 + m_VirtualVoiceCount: 512 + m_RealVoiceCount: 32 + m_SpatializerPlugin: + m_DisableAudio: 0 diff --git a/ProjectSettings/ClusterInputManager.asset b/ProjectSettings/ClusterInputManager.asset new file mode 100644 index 0000000..e7886b2 --- /dev/null +++ b/ProjectSettings/ClusterInputManager.asset @@ -0,0 +1,6 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!236 &1 +ClusterInputManager: + m_ObjectHideFlags: 0 + m_Inputs: [] diff --git a/ProjectSettings/DynamicsManager.asset b/ProjectSettings/DynamicsManager.asset new file mode 100644 index 0000000..3534236 --- /dev/null +++ b/ProjectSettings/DynamicsManager.asset @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!55 &1 +PhysicsManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Gravity: {x: 0, y: -9.81, z: 0} + m_DefaultMaterial: {fileID: 0} + m_BounceThreshold: 2 + m_SleepThreshold: 0.005 + m_DefaultContactOffset: 0.01 + m_SolverIterationCount: 6 + m_QueriesHitTriggers: 1 + m_EnableAdaptiveForce: 0 + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset new file mode 100644 index 0000000..6dc24f7 --- /dev/null +++ b/ProjectSettings/EditorBuildSettings.asset @@ -0,0 +1,7 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1045 &1 +EditorBuildSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Scenes: [] diff --git a/ProjectSettings/EditorSettings.asset b/ProjectSettings/EditorSettings.asset new file mode 100644 index 0000000..7726ac9 --- /dev/null +++ b/ProjectSettings/EditorSettings.asset @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!159 &1 +EditorSettings: + m_ObjectHideFlags: 0 + serializedVersion: 3 + m_ExternalVersionControlSupport: Hidden Meta Files + m_SerializationMode: 2 + m_WebSecurityEmulationEnabled: 0 + m_WebSecurityEmulationHostUrl: http://www.mydomain.com/mygame.unity3d + m_DefaultBehaviorMode: 0 + m_SpritePackerMode: 2 + m_SpritePackerPaddingPower: 1 + m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd + m_ProjectGenerationRootNamespace: diff --git a/ProjectSettings/GraphicsSettings.asset b/ProjectSettings/GraphicsSettings.asset new file mode 100644 index 0000000..5a96ca8 --- /dev/null +++ b/ProjectSettings/GraphicsSettings.asset @@ -0,0 +1,37 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!30 &1 +GraphicsSettings: + m_ObjectHideFlags: 0 + serializedVersion: 5 + m_Deferred: + m_Mode: 1 + m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} + m_DeferredReflections: + m_Mode: 1 + m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} + m_LegacyDeferred: + m_Mode: 1 + m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} + m_AlwaysIncludedShaders: + - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10782, guid: 0000000000000000f000000000000000, type: 0} + m_PreloadedShaders: [] + m_ShaderSettings: + useScreenSpaceShadows: 1 + m_BuildTargetShaderSettings: [] + m_LightmapStripping: 0 + m_FogStripping: 0 + m_LightmapKeepPlain: 1 + m_LightmapKeepDirCombined: 1 + m_LightmapKeepDirSeparate: 1 + m_LightmapKeepDynamicPlain: 1 + m_LightmapKeepDynamicDirCombined: 1 + m_LightmapKeepDynamicDirSeparate: 1 + m_FogKeepLinear: 1 + m_FogKeepExp: 1 + m_FogKeepExp2: 1 diff --git a/ProjectSettings/InputManager.asset b/ProjectSettings/InputManager.asset new file mode 100644 index 0000000..17c8f53 --- /dev/null +++ b/ProjectSettings/InputManager.asset @@ -0,0 +1,295 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!13 &1 +InputManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Axes: + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: left + positiveButton: right + altNegativeButton: a + altPositiveButton: d + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: down + positiveButton: up + altNegativeButton: s + altPositiveButton: w + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left ctrl + altNegativeButton: + altPositiveButton: mouse 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left alt + altNegativeButton: + altPositiveButton: mouse 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left shift + altNegativeButton: + altPositiveButton: mouse 2 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: space + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse X + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse Y + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse ScrollWheel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 2 + joyNum: 0 + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 1 + type: 2 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 0 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 1 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 2 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 3 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: return + altNegativeButton: + altPositiveButton: joystick button 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: enter + altNegativeButton: + altPositiveButton: space + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Cancel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: escape + altNegativeButton: + altPositiveButton: joystick button 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 diff --git a/ProjectSettings/NavMeshAreas.asset b/ProjectSettings/NavMeshAreas.asset new file mode 100644 index 0000000..a04f35c --- /dev/null +++ b/ProjectSettings/NavMeshAreas.asset @@ -0,0 +1,71 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!126 &1 +NavMeshAreas: + m_ObjectHideFlags: 0 + serializedVersion: 2 + areas: + - name: Walkable + cost: 1 + - name: Not Walkable + cost: 1 + - name: Jump + cost: 2 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 diff --git a/ProjectSettings/NetworkManager.asset b/ProjectSettings/NetworkManager.asset new file mode 100644 index 0000000..5dc6a83 --- /dev/null +++ b/ProjectSettings/NetworkManager.asset @@ -0,0 +1,8 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!149 &1 +NetworkManager: + m_ObjectHideFlags: 0 + m_DebugLevel: 0 + m_Sendrate: 15 + m_AssetToPrefab: {} diff --git a/ProjectSettings/Physics2DSettings.asset b/ProjectSettings/Physics2DSettings.asset new file mode 100644 index 0000000..7e9e664 --- /dev/null +++ b/ProjectSettings/Physics2DSettings.asset @@ -0,0 +1,25 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!19 &1 +Physics2DSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Gravity: {x: 0, y: -9.81} + m_DefaultMaterial: {fileID: 0} + m_VelocityIterations: 8 + m_PositionIterations: 3 + m_VelocityThreshold: 1 + m_MaxLinearCorrection: 0.2 + m_MaxAngularCorrection: 8 + m_MaxTranslationSpeed: 100 + m_MaxRotationSpeed: 360 + m_MinPenetrationForPenalty: 0.01 + m_BaumgarteScale: 0.2 + m_BaumgarteTimeOfImpactScale: 0.75 + m_TimeToSleep: 0.5 + m_LinearSleepTolerance: 0.01 + m_AngularSleepTolerance: 2 + m_QueriesHitTriggers: 1 + m_QueriesStartInColliders: 1 + m_ChangeStopsCallbacks: 0 + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset new file mode 100644 index 0000000..7f442c5 --- /dev/null +++ b/ProjectSettings/ProjectSettings.asset @@ -0,0 +1,449 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!129 &1 +PlayerSettings: + m_ObjectHideFlags: 0 + serializedVersion: 8 + AndroidProfiler: 0 + defaultScreenOrientation: 4 + targetDevice: 2 + useOnDemandResources: 0 + accelerometerFrequency: 60 + companyName: DefaultCompany + productName: AssetBundle + defaultCursor: {fileID: 0} + cursorHotspot: {x: 0, y: 0} + m_ShowUnitySplashScreen: 1 + m_VirtualRealitySplashScreen: {fileID: 0} + defaultScreenWidth: 1024 + defaultScreenHeight: 768 + defaultScreenWidthWeb: 960 + defaultScreenHeightWeb: 600 + m_RenderingPath: 1 + m_MobileRenderingPath: 1 + m_ActiveColorSpace: 0 + m_MTRendering: 1 + m_MobileMTRendering: 0 + m_Stereoscopic3D: 0 + iosShowActivityIndicatorOnLoading: -1 + androidShowActivityIndicatorOnLoading: -1 + iosAppInBackgroundBehavior: 0 + displayResolutionDialog: 1 + iosAllowHTTPDownload: 1 + allowedAutorotateToPortrait: 1 + allowedAutorotateToPortraitUpsideDown: 1 + allowedAutorotateToLandscapeRight: 1 + allowedAutorotateToLandscapeLeft: 1 + useOSAutorotation: 1 + use32BitDisplayBuffer: 1 + disableDepthAndStencilBuffers: 0 + defaultIsFullScreen: 1 + defaultIsNativeResolution: 1 + runInBackground: 0 + captureSingleScreen: 0 + Override IPod Music: 0 + Prepare IOS For Recording: 0 + submitAnalytics: 1 + usePlayerLog: 1 + bakeCollisionMeshes: 0 + forceSingleInstance: 0 + resizableWindow: 0 + useMacAppStoreValidation: 0 + gpuSkinning: 0 + xboxPIXTextureCapture: 0 + xboxEnableAvatar: 0 + xboxEnableKinect: 0 + xboxEnableKinectAutoTracking: 0 + xboxEnableFitness: 0 + visibleInBackground: 0 + allowFullscreenSwitch: 1 + macFullscreenMode: 2 + d3d9FullscreenMode: 1 + d3d11FullscreenMode: 1 + xboxSpeechDB: 0 + xboxEnableHeadOrientation: 0 + xboxEnableGuest: 0 + xboxEnablePIXSampling: 0 + xboxEnableEnableRenderThreadRunsJobs: 0 + n3dsDisableStereoscopicView: 0 + n3dsEnableSharedListOpt: 1 + n3dsEnableVSync: 0 + uiUse16BitDepthBuffer: 0 + ignoreAlphaClear: 0 + xboxOneResolution: 0 + ps3SplashScreen: {fileID: 0} + videoMemoryForVertexBuffers: 0 + psp2PowerMode: 0 + psp2AcquireBGM: 1 + wiiUTVResolution: 0 + wiiUGamePadMSAA: 1 + wiiUSupportsNunchuk: 0 + wiiUSupportsClassicController: 0 + wiiUSupportsBalanceBoard: 0 + wiiUSupportsMotionPlus: 0 + wiiUSupportsProController: 0 + wiiUAllowScreenCapture: 1 + wiiUControllerCount: 0 + m_SupportedAspectRatios: + 4:3: 1 + 5:4: 1 + 16:10: 1 + 16:9: 1 + Others: 1 + bundleIdentifier: com.Company.ProductName + bundleVersion: 1.0 + preloadedAssets: [] + metroEnableIndependentInputSource: 0 + metroEnableLowLatencyPresentationAPI: 0 + xboxOneDisableKinectGpuReservation: 0 + virtualRealitySupported: 0 + productGUID: 9415c89b3721a124d97f02fa920944e9 + AndroidBundleVersionCode: 1 + AndroidMinSdkVersion: 9 + AndroidPreferredInstallLocation: 1 + aotOptions: + apiCompatibilityLevel: 2 + stripEngineCode: 1 + iPhoneStrippingLevel: 0 + iPhoneScriptCallOptimization: 0 + iPhoneBuildNumber: 0 + ForceInternetPermission: 0 + ForceSDCardPermission: 0 + CreateWallpaper: 0 + APKExpansionFiles: 0 + preloadShaders: 0 + StripUnusedMeshComponents: 0 + VertexChannelCompressionMask: + serializedVersion: 2 + m_Bits: 238 + iPhoneSdkVersion: 988 + iPhoneTargetOSVersion: 22 + tvOSSdkVersion: 0 + tvOSTargetOSVersion: 900 + uIPrerenderedIcon: 0 + uIRequiresPersistentWiFi: 0 + uIRequiresFullScreen: 1 + uIStatusBarHidden: 1 + uIExitOnSuspend: 0 + uIStatusBarStyle: 0 + iPhoneSplashScreen: {fileID: 0} + iPhoneHighResSplashScreen: {fileID: 0} + iPhoneTallHighResSplashScreen: {fileID: 0} + iPhone47inSplashScreen: {fileID: 0} + iPhone55inPortraitSplashScreen: {fileID: 0} + iPhone55inLandscapeSplashScreen: {fileID: 0} + iPadPortraitSplashScreen: {fileID: 0} + iPadHighResPortraitSplashScreen: {fileID: 0} + iPadLandscapeSplashScreen: {fileID: 0} + iPadHighResLandscapeSplashScreen: {fileID: 0} + appleTVSplashScreen: {fileID: 0} + tvOSSmallIconLayers: [] + tvOSLargeIconLayers: [] + tvOSTopShelfImageLayers: [] + iOSLaunchScreenType: 0 + iOSLaunchScreenPortrait: {fileID: 0} + iOSLaunchScreenLandscape: {fileID: 0} + iOSLaunchScreenBackgroundColor: + serializedVersion: 2 + rgba: 0 + iOSLaunchScreenFillPct: 100 + iOSLaunchScreenSize: 100 + iOSLaunchScreenCustomXibPath: + iOSLaunchScreeniPadType: 0 + iOSLaunchScreeniPadImage: {fileID: 0} + iOSLaunchScreeniPadBackgroundColor: + serializedVersion: 2 + rgba: 0 + iOSLaunchScreeniPadFillPct: 100 + iOSLaunchScreeniPadSize: 100 + iOSLaunchScreeniPadCustomXibPath: + iOSDeviceRequirements: [] + AndroidTargetDevice: 0 + AndroidSplashScreenScale: 0 + androidSplashScreen: {fileID: 0} + AndroidKeystoreName: + AndroidKeyaliasName: + AndroidTVCompatibility: 1 + AndroidIsGame: 1 + androidEnableBanner: 1 + m_AndroidBanners: + - width: 320 + height: 180 + banner: {fileID: 0} + androidGamepadSupportLevel: 0 + resolutionDialogBanner: {fileID: 0} + m_BuildTargetIcons: + - m_BuildTarget: + m_Icons: + - serializedVersion: 2 + m_Icon: {fileID: 0} + m_Width: 128 + m_Height: 128 + m_BuildTargetBatching: [] + m_BuildTargetGraphicsAPIs: + - m_BuildTarget: MacStandaloneSupport + m_APIs: 110000000000000010000000 + m_Automatic: 0 + - m_BuildTarget: WindowsStandaloneSupport + m_APIs: 110000000200000001000000 + m_Automatic: 0 + - m_BuildTarget: LinuxStandaloneSupport + m_APIs: 1100000000000000 + m_Automatic: 0 + webPlayerTemplate: APPLICATION:Default + m_TemplateCustomTags: {} + wiiUTitleID: 0005000011000000 + wiiUGroupID: 00010000 + wiiUCommonSaveSize: 4096 + wiiUAccountSaveSize: 2048 + wiiUOlvAccessKey: 0 + wiiUTinCode: 0 + wiiUJoinGameId: 0 + wiiUJoinGameModeMask: 0000000000000000 + wiiUCommonBossSize: 0 + wiiUAccountBossSize: 0 + wiiUAddOnUniqueIDs: [] + wiiUMainThreadStackSize: 3072 + wiiULoaderThreadStackSize: 1024 + wiiUSystemHeapSize: 128 + wiiUTVStartupScreen: {fileID: 0} + wiiUGamePadStartupScreen: {fileID: 0} + wiiUDrcBufferDisabled: 0 + wiiUProfilerLibPath: + actionOnDotNetUnhandledException: 1 + enableInternalProfiler: 0 + logObjCUncaughtExceptions: 1 + enableCrashReportAPI: 0 + locationUsageDescription: + XboxTitleId: + XboxImageXexPath: + XboxSpaPath: + XboxGenerateSpa: 0 + XboxDeployKinectResources: 0 + XboxSplashScreen: {fileID: 0} + xboxEnableSpeech: 0 + xboxAdditionalTitleMemorySize: 0 + xboxDeployKinectHeadOrientation: 0 + xboxDeployKinectHeadPosition: 0 + ps3TitleConfigPath: + ps3DLCConfigPath: + ps3ThumbnailPath: + ps3BackgroundPath: + ps3SoundPath: + ps3NPAgeRating: 12 + ps3TrophyCommId: + ps3NpCommunicationPassphrase: + ps3TrophyPackagePath: + ps3BootCheckMaxSaveGameSizeKB: 128 + ps3TrophyCommSig: + ps3SaveGameSlots: 1 + ps3TrialMode: 0 + ps3VideoMemoryForAudio: 0 + ps3EnableVerboseMemoryStats: 0 + ps3UseSPUForUmbra: 0 + ps3EnableMoveSupport: 1 + ps3DisableDolbyEncoding: 0 + ps4NPAgeRating: 12 + ps4NPTitleSecret: + ps4NPTrophyPackPath: + ps4ParentalLevel: 1 + ps4ContentID: ED1633-NPXX51362_00-0000000000000000 + ps4Category: 0 + ps4MasterVersion: 01.00 + ps4AppVersion: 01.00 + ps4AppType: 0 + ps4ParamSfxPath: + ps4VideoOutPixelFormat: 0 + ps4VideoOutResolution: 4 + ps4PronunciationXMLPath: + ps4PronunciationSIGPath: + ps4BackgroundImagePath: + ps4StartupImagePath: + ps4SaveDataImagePath: + ps4SdkOverride: + ps4BGMPath: + ps4ShareFilePath: + ps4ShareOverlayImagePath: + ps4PrivacyGuardImagePath: + ps4NPtitleDatPath: + ps4RemotePlayKeyAssignment: -1 + ps4RemotePlayKeyMappingDir: + ps4PlayTogetherPlayerCount: 0 + ps4EnterButtonAssignment: 1 + ps4ApplicationParam1: 0 + ps4ApplicationParam2: 0 + ps4ApplicationParam3: 0 + ps4ApplicationParam4: 0 + ps4DownloadDataSize: 0 + ps4GarlicHeapSize: 2048 + ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ + ps4UseDebugIl2cppLibs: 0 + ps4pnSessions: 1 + ps4pnPresence: 1 + ps4pnFriends: 1 + ps4pnGameCustomData: 1 + playerPrefsSupport: 0 + ps4ReprojectionSupport: 0 + ps4UseAudio3dBackend: 0 + ps4SocialScreenEnabled: 0 + ps4Audio3dVirtualSpeakerCount: 14 + ps4attribCpuUsage: 0 + ps4PatchPkgPath: + ps4PatchLatestPkgPath: + ps4PatchChangeinfoPath: + ps4attribUserManagement: 0 + ps4attribMoveSupport: 0 + ps4attrib3DSupport: 0 + ps4attribShareSupport: 0 + ps4disableAutoHideSplash: 0 + ps4IncludedModules: [] + monoEnv: + psp2Splashimage: {fileID: 0} + psp2NPTrophyPackPath: + psp2NPSupportGBMorGJP: 0 + psp2NPAgeRating: 12 + psp2NPTitleDatPath: + psp2NPCommsID: + psp2NPCommunicationsID: + psp2NPCommsPassphrase: + psp2NPCommsSig: + psp2ParamSfxPath: + psp2ManualPath: + psp2LiveAreaGatePath: + psp2LiveAreaBackroundPath: + psp2LiveAreaPath: + psp2LiveAreaTrialPath: + psp2PatchChangeInfoPath: + psp2PatchOriginalPackage: + psp2PackagePassword: F69AzBlax3CF3EDNhm3soLBPh71Yexui + psp2KeystoneFile: + psp2MemoryExpansionMode: 0 + psp2DRMType: 0 + psp2StorageType: 0 + psp2MediaCapacity: 0 + psp2DLCConfigPath: + psp2ThumbnailPath: + psp2BackgroundPath: + psp2SoundPath: + psp2TrophyCommId: + psp2TrophyPackagePath: + psp2PackagedResourcesPath: + psp2SaveDataQuota: 10240 + psp2ParentalLevel: 1 + psp2ShortTitle: Not Set + psp2ContentID: IV0000-ABCD12345_00-0123456789ABCDEF + psp2Category: 0 + psp2MasterVersion: 01.00 + psp2AppVersion: 01.00 + psp2TVBootMode: 0 + psp2EnterButtonAssignment: 2 + psp2TVDisableEmu: 0 + psp2AllowTwitterDialog: 1 + psp2Upgradable: 0 + psp2HealthWarning: 0 + psp2UseLibLocation: 0 + psp2InfoBarOnStartup: 0 + psp2InfoBarColor: 0 + psp2UseDebugIl2cppLibs: 0 + psmSplashimage: {fileID: 0} + spritePackerPolicy: + scriptingDefineSymbols: {} + metroPackageName: AssetBundle + metroPackageVersion: + metroCertificatePath: + metroCertificatePassword: + metroCertificateSubject: + metroCertificateIssuer: + metroCertificateNotAfter: 0000000000000000 + metroApplicationDescription: AssetBundle + wsaImages: {} + metroTileShortName: + metroCommandLineArgsFile: + metroTileShowName: 0 + metroMediumTileShowName: 0 + metroLargeTileShowName: 0 + metroWideTileShowName: 0 + metroDefaultTileSize: 1 + metroTileForegroundText: 1 + metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} + metroSplashScreenBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, + a: 1} + metroSplashScreenUseBackgroundColor: 1 + platformCapabilities: {} + metroFTAName: + metroFTAFileTypes: [] + metroProtocolName: + metroCompilationOverrides: 1 + blackberryDeviceAddress: + blackberryDevicePassword: + blackberryTokenPath: + blackberryTokenExires: + blackberryTokenAuthor: + blackberryTokenAuthorId: + blackberryCskPassword: + blackberrySaveLogPath: + blackberrySharedPermissions: 0 + blackberryCameraPermissions: 0 + blackberryGPSPermissions: 0 + blackberryDeviceIDPermissions: 0 + blackberryMicrophonePermissions: 0 + blackberryGamepadSupport: 0 + blackberryBuildId: 0 + blackberryLandscapeSplashScreen: {fileID: 0} + blackberryPortraitSplashScreen: {fileID: 0} + blackberrySquareSplashScreen: {fileID: 0} + tizenProductDescription: + tizenProductURL: + tizenSigningProfileName: + tizenGPSPermissions: 0 + tizenMicrophonePermissions: 0 + n3dsUseExtSaveData: 0 + n3dsCompressStaticMem: 1 + n3dsExtSaveDataNumber: 0x12345 + n3dsStackSize: 131072 + n3dsTargetPlatform: 2 + n3dsRegion: 7 + n3dsMediaSize: 0 + n3dsLogoStyle: 3 + n3dsTitle: GameName + n3dsProductCode: + n3dsApplicationId: 0xFF3FF + stvDeviceAddress: + stvProductDescription: + stvProductAuthor: + stvProductAuthorEmail: + stvProductLink: + stvProductCategory: 0 + XboxOneProductId: + XboxOneUpdateKey: + XboxOneSandboxId: + XboxOneContentId: + XboxOneTitleId: + XboxOneSCId: + XboxOneGameOsOverridePath: + XboxOnePackagingOverridePath: + XboxOneAppManifestOverridePath: + XboxOnePackageEncryption: 0 + XboxOnePackageUpdateGranularity: 2 + XboxOneDescription: + XboxOneIsContentPackage: 0 + XboxOneEnableGPUVariability: 0 + XboxOneSockets: {} + XboxOneSplashScreen: {fileID: 0} + XboxOneAllowedProductIds: [] + XboxOnePersistentLocalStorageSize: 0 + intPropertyNames: + - Android::ScriptingBackend + - Standalone::ScriptingBackend + - WebPlayer::ScriptingBackend + Android::ScriptingBackend: 0 + Standalone::ScriptingBackend: 0 + WebPlayer::ScriptingBackend: 0 + boolPropertyNames: + - XboxOne::enus + XboxOne::enus: 1 + stringPropertyNames: [] + cloudProjectId: + projectName: + organizationId: + cloudEnabled: 0 diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt new file mode 100644 index 0000000..b543af6 --- /dev/null +++ b/ProjectSettings/ProjectVersion.txt @@ -0,0 +1,2 @@ +m_EditorVersion: 5.3.5p2 +m_StandardAssetsVersion: 0 diff --git a/ProjectSettings/QualitySettings.asset b/ProjectSettings/QualitySettings.asset new file mode 100644 index 0000000..998f167 --- /dev/null +++ b/ProjectSettings/QualitySettings.asset @@ -0,0 +1,185 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!47 &1 +QualitySettings: + m_ObjectHideFlags: 0 + serializedVersion: 5 + m_CurrentQuality: 5 + m_QualitySettings: + - serializedVersion: 2 + name: Fastest + pixelLightCount: 0 + shadows: 0 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 15 + shadowNearPlaneOffset: 2 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + blendWeights: 1 + textureQuality: 1 + anisotropicTextures: 0 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 0 + lodBias: 0.3 + maximumLODLevel: 0 + particleRaycastBudget: 4 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 4 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Fast + pixelLightCount: 0 + shadows: 0 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 20 + shadowNearPlaneOffset: 2 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 0 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 0 + lodBias: 0.4 + maximumLODLevel: 0 + particleRaycastBudget: 16 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 4 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Simple + pixelLightCount: 1 + shadows: 1 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 20 + shadowNearPlaneOffset: 2 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 0 + lodBias: 0.7 + maximumLODLevel: 0 + particleRaycastBudget: 64 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 4 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Good + pixelLightCount: 2 + shadows: 2 + shadowResolution: 1 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 40 + shadowNearPlaneOffset: 2 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 0 + softParticles: 0 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 1 + maximumLODLevel: 0 + particleRaycastBudget: 256 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 4 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Beautiful + pixelLightCount: 3 + shadows: 2 + shadowResolution: 2 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 70 + shadowNearPlaneOffset: 2 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + blendWeights: 4 + textureQuality: 0 + anisotropicTextures: 2 + antiAliasing: 2 + softParticles: 1 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 1.5 + maximumLODLevel: 0 + particleRaycastBudget: 1024 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 4 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Fantastic + pixelLightCount: 4 + shadows: 2 + shadowResolution: 2 + shadowProjection: 1 + shadowCascades: 4 + shadowDistance: 150 + shadowNearPlaneOffset: 2 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.19999999, z: 0.46666664} + blendWeights: 4 + textureQuality: 0 + anisotropicTextures: 2 + antiAliasing: 2 + softParticles: 1 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 2 + maximumLODLevel: 0 + particleRaycastBudget: 4096 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 4 + excludedTargetPlatforms: [] + m_PerPlatformDefaultQuality: + Android: 2 + BlackBerry: 2 + GLES Emulation: 5 + Nintendo 3DS: 5 + PS3: 5 + PS4: 5 + PSM: 5 + PSP2: 2 + Samsung TV: 2 + Standalone: 5 + Tizen: 2 + WP8: 5 + Web: 5 + WebGL: 3 + WiiU: 5 + Windows Store Apps: 5 + XBOX360: 5 + XboxOne: 5 + iPhone: 2 + tvOS: 5 diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset new file mode 100644 index 0000000..1c92a78 --- /dev/null +++ b/ProjectSettings/TagManager.asset @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!78 &1 +TagManager: + serializedVersion: 2 + tags: [] + layers: + - Default + - TransparentFX + - Ignore Raycast + - + - Water + - UI + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + m_SortingLayers: + - name: Default + uniqueID: 0 + locked: 0 diff --git a/ProjectSettings/TimeManager.asset b/ProjectSettings/TimeManager.asset new file mode 100644 index 0000000..a2dc235 --- /dev/null +++ b/ProjectSettings/TimeManager.asset @@ -0,0 +1,8 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!5 &1 +TimeManager: + m_ObjectHideFlags: 0 + Fixed Timestep: 0.02 + Maximum Allowed Timestep: 0.33333334 + m_TimeScale: 1 diff --git a/ProjectSettings/UnityAdsSettings.asset b/ProjectSettings/UnityAdsSettings.asset new file mode 100644 index 0000000..224050c --- /dev/null +++ b/ProjectSettings/UnityAdsSettings.asset @@ -0,0 +1,11 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!292 &1 +UnityAdsSettings: + m_ObjectHideFlags: 0 + m_Enabled: 0 + m_InitializeOnStartup: 1 + m_TestMode: 0 + m_EnabledPlatforms: 4294967295 + m_IosGameId: + m_AndroidGameId: diff --git a/ProjectSettings/UnityConnectSettings.asset b/ProjectSettings/UnityConnectSettings.asset new file mode 100644 index 0000000..9b7a578 --- /dev/null +++ b/ProjectSettings/UnityConnectSettings.asset @@ -0,0 +1,14 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!310 &1 +UnityConnectSettings: + m_ObjectHideFlags: 0 + UnityPurchasingSettings: + m_Enabled: 0 + m_TestMode: 0 + UnityAnalyticsSettings: + m_Enabled: 0 + m_InitializeOnStartup: 1 + m_TestMode: 0 + m_TestEventUrl: + m_TestConfigUrl: