From e196abb75fe8427a666c0248ca58689f405532d3 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 16 Nov 2015 20:54:02 -0500 Subject: [PATCH] Player movement in Roguelike --- Roguelike/Assets/Scenes/EnemyAITest.unity | Bin 19204 -> 25604 bytes Roguelike/Assets/Scripts/EnemyZombie.cs | 19 +- Roguelike/Assets/Scripts/Player.cs | 43 +- Roguelike/Assets/iTweenEditor.meta | 9 + Roguelike/Assets/iTweenEditor/Editor.meta | 9 + .../Editor/iTweenEventDataEditor.cs | 352 + .../Editor/iTweenEventDataEditor.cs.meta | 10 + .../iTweenEditor/Editor/iTweenPathEditor.cs | 97 + .../Editor/iTweenPathEditor.cs.meta | 10 + Roguelike/Assets/iTweenEditor/Examples.meta | 9 + .../iTweenEditor/Examples/Path Test.unity | Bin 0 -> 27732 bytes .../Examples/Path Test.unity.meta | 6 + .../Examples/StartAndStopATween.unity | Bin 0 -> 25388 bytes .../Examples/StartAndStopATween.unity.meta | 6 + .../Examples/StartAndStopTween.cs | 27 + .../Examples/StartAndStopTween.cs.meta | 10 + Roguelike/Assets/iTweenEditor/Gizmos.meta | 9 + .../Assets/iTweenEditor/Gizmos/iTweenIcon.tif | Bin 0 -> 27264 bytes .../iTweenEditor/Gizmos/iTweenIcon.tif.meta | 54 + .../Assets/iTweenEditor/Helper Classes.meta | 9 + .../Helper Classes/EventParamMappings.cs | 742 + .../Helper Classes/EventParamMappings.cs.meta | 10 + .../Helper Classes/Vector3OrTransform.cs | 31 + .../Helper Classes/Vector3OrTransform.cs.meta | 10 + .../Helper Classes/Vector3OrTransformArray.cs | 34 + .../Vector3OrTransformArray.cs.meta | 10 + Roguelike/Assets/iTweenEditor/README.txt | 47 + Roguelike/Assets/iTweenEditor/README.txt.meta | 6 + Roguelike/Assets/iTweenEditor/iTween.cs | 7489 ++++++ Roguelike/Assets/iTweenEditor/iTween.cs.meta | 10 + Roguelike/Assets/iTweenEditor/iTweenEvent.cs | 560 + .../Assets/iTweenEditor/iTweenEvent.cs.meta | 10 + Roguelike/Assets/iTweenEditor/iTweenPath.cs | 38 + .../Assets/iTweenEditor/iTweenPath.cs.meta | 10 + Roguelike/Library/AssetServerCacheV3 | Bin 4756 -> 4756 bytes Roguelike/Library/AssetVersioning.db | Bin 0 -> 14336 bytes Roguelike/Library/CurrentLayout.dwlt | Bin 43108 -> 43172 bytes .../Library/InspectorExpandedItems.asset | Bin 4104 -> 4128 bytes Roguelike/Library/ProjectSettings.asset | Bin 36705 -> 41889 bytes .../Assembly-CSharp-Editor.dll.mdb | Bin 0 -> 2410 bytes .../ScriptAssemblies/Assembly-CSharp.dll.mdb | Bin 1479 -> 30350 bytes .../ScriptAssemblies/BuiltinAssemblies.stamp | 4 +- Roguelike/Library/ScriptMapper | Bin 10729 -> 10761 bytes .../0/06776728e33fc9af2ed1df4f3d08faa1.bin | Bin 0 -> 4101 bytes .../0/097886457247838aa7d8d2a0b2111588.bin | Bin 0 -> 4808 bytes .../3/3a8eef78a3b767f892b1d97fcf953a0b.bin | Bin 0 -> 2182 bytes .../3/3c5f7dab95c09023d4c67b736c849ea0.bin | Bin 0 -> 5937 bytes .../7/7874cccdc2bf25a8e9d878ea75d9430f.bin | Bin 0 -> 12273 bytes .../7/7dd1923df1950e9b523bee33d162ee3a.bin | Bin 0 -> 5214 bytes .../7/7eccc90b4e57ec4e03c6da60f7797ebe.bin | Bin 0 -> 11929 bytes .../8/8e25c819e481ea97d2a82166887ba567.bin | Bin 0 -> 453 bytes .../9/9411315f81fe093333e359470f322bdb.bin | Bin 0 -> 4831 bytes .../e/e872f533f2a0ded4f1f3c8df3929e2b1.bin | Bin 0 -> 11619 bytes .../UnityEditor.Advertisements.xml | 8 + .../UnityEditor.Networking.xml | 8 + .../UnityAssemblies/UnityEditor.UI.xml | 363 + .../Library/UnityAssemblies/UnityEditor.xml | 21588 ++++++++++++++++ .../UnityEngine.Networking.xml | 3926 +++ .../UnityAssemblies/UnityEngine.UI.xml | 5843 +++++ Roguelike/Library/UnityAssemblies/version.txt | 23 + Roguelike/Library/assetDatabase3 | Bin 1300824 -> 1456652 bytes Roguelike/Library/expandedItems | Bin 4164 -> 4176 bytes .../00/00000000000000002000000000000000 | Bin 4321 -> 4321 bytes .../00/00000000000000003000000000000000 | Bin 4313 -> 4313 bytes .../00/00000000000000004000000000000000 | Bin 4325 -> 4325 bytes .../00/00000000000000004100000000000000 | Bin 4321 -> 4321 bytes .../00/00000000000000005000000000000000 | Bin 4313 -> 4313 bytes .../00/00000000000000005100000000000000 | Bin 4329 -> 4329 bytes .../00/00000000000000006000000000000000 | Bin 4321 -> 4321 bytes .../00/00000000000000006100000000000000 | Bin 4325 -> 4325 bytes .../00/00000000000000007000000000000000 | Bin 4321 -> 4321 bytes .../00/00000000000000008000000000000000 | Bin 4325 -> 4325 bytes .../00/00000000000000008100000000000000 | Bin 0 -> 4325 bytes .../00/00000000000000008100000000000000.info | Bin 0 -> 558 bytes .../00/00000000000000009000000000000000 | Bin 4325 -> 4325 bytes .../00/00000000000000009100000000000000 | Bin 0 -> 4341 bytes .../00/00000000000000009100000000000000.info | Bin 0 -> 563 bytes .../00/0000000000000000a000000000000000 | Bin 4325 -> 4325 bytes .../00/0000000000000000b000000000000000 | Bin 4337 -> 4337 bytes .../00/0000000000000000c000000000000000 | Bin 4325 -> 4325 bytes .../04/0401554a0e6f9466db3c1a798d358b8c | Bin 0 -> 21181 bytes .../04/0401554a0e6f9466db3c1a798d358b8c.info | Bin 0 -> 604 bytes .../08/085d9842593af44d8a507541ce47bc6e | Bin 0 -> 277621 bytes .../08/085d9842593af44d8a507541ce47bc6e.info | Bin 0 -> 589 bytes .../17/17799b66b509c40a78360036fcfbc8bc | Bin 0 -> 6072 bytes .../17/17799b66b509c40a78360036fcfbc8bc.info | Bin 0 -> 582 bytes .../23/2346d67c96ebcaa45a41206a80cb0345 | Bin 4297 -> 4297 bytes .../2c/2cd963efa0be1416c93438361364da95 | Bin 0 -> 4329 bytes .../2c/2cd963efa0be1416c93438361364da95.info | Bin 0 -> 603 bytes .../31/31db21470894e5441a37a2958e10dd6a | Bin 4601 -> 4617 bytes .../3d/3d2e08407829a435b84ff5ac7f8b3aef | Bin 0 -> 55277 bytes .../3d/3d2e08407829a435b84ff5ac7f8b3aef.info | Bin 0 -> 640 bytes .../46/469ffe30a4f3a43d99d202b74660b1e5 | Bin 0 -> 6045 bytes .../46/469ffe30a4f3a43d99d202b74660b1e5.info | Bin 0 -> 655 bytes .../5f/5f32cd94baa94578a686d4b9d6b660f7 | Bin 7197 -> 7589 bytes .../5f/5f32cd94baa94578a686d4b9d6b660f7.info | Bin 265538 -> 331789 bytes .../64/64ae91fffe7b7f9418d6196343d49eff | Bin 4601 -> 4617 bytes .../6a/6a8c0b05903578e4aa1289285ffee5cb | Bin 4581 -> 5509 bytes .../6b/6bf45a0ab38a1458999f7d05487b4d52 | Bin 0 -> 5037 bytes .../6b/6bf45a0ab38a1458999f7d05487b4d52.info | Bin 0 -> 631 bytes .../73/739bbd9f364b4268874f9fd86ab3beef | Bin 0 -> 5920 bytes .../73/739bbd9f364b4268874f9fd86ab3beef.info | Bin 0 -> 33717 bytes .../76/766f29702ce4e4a1584e5147c88629a2 | Bin 0 -> 7389 bytes .../76/766f29702ce4e4a1584e5147c88629a2.info | Bin 0 -> 626 bytes .../79/797ae283e17aa4827a330e531ef47b73 | Bin 0 -> 4309 bytes .../79/797ae283e17aa4827a330e531ef47b73.info | Bin 0 -> 582 bytes .../7f/7f294180677264249b663e086b83af75 | Bin 4301 -> 4301 bytes .../7f/7f294180677264249b663e086b83af75.info | Bin 569 -> 577 bytes .../80/80a3616ca19596e4da0f10f14d241e9f | Bin 9217 -> 9393 bytes .../80/80a3616ca19596e4da0f10f14d241e9f.info | Bin 662854 -> 695961 bytes .../85/852e56802eb941638acbb491814497b0 | Bin 0 -> 5865 bytes .../85/852e56802eb941638acbb491814497b0.info | Bin 0 -> 33680 bytes .../86/861b2dd019953d64f84df72a7b2f8372 | Bin 4268 -> 4268 bytes .../86/861b2dd019953d64f84df72a7b2f8372.info | Bin 5469 -> 2849 bytes .../87/870353891bb340e2b2a9c8707e7419ba | Bin 7825 -> 8209 bytes .../87/870353891bb340e2b2a9c8707e7419ba.info | Bin 364926 -> 431176 bytes .../8a/8a32d65a6a0c443f79048586c9648b05 | Bin 0 -> 5925 bytes .../8a/8a32d65a6a0c443f79048586c9648b05.info | Bin 0 -> 640 bytes .../94/94e8cb70729c77148a01af6a35e0e144 | Bin 4268 -> 4268 bytes .../94/94e8cb70729c77148a01af6a35e0e144.info | Bin 5446 -> 3008 bytes .../95/95eeb1bd7377a64459d7663226831e8d | Bin 4260 -> 4260 bytes .../95/95eeb1bd7377a64459d7663226831e8d.info | Bin 12695 -> 10311 bytes .../97/97decbdab0634cdd991f8d23ddf0dead | Bin 0 -> 4504 bytes .../97/97decbdab0634cdd991f8d23ddf0dead.info | Bin 0 -> 578 bytes .../98/98601a450fc9cbd418cb1091c9027907 | Bin 4613 -> 4625 bytes .../99/99aae065ca13f46398c1f65ebc52f413 | Bin 0 -> 4325 bytes .../99/99aae065ca13f46398c1f65ebc52f413.info | Bin 0 -> 598 bytes .../9a/9a0e6727026ec924da7a25f275a934b5 | Bin 0 -> 4305 bytes .../9a/9a0e6727026ec924da7a25f275a934b5.info | Bin 0 -> 581 bytes .../9b/9b368950d11817b40913157cadb3c1b0 | Bin 4260 -> 4260 bytes .../9b/9b368950d11817b40913157cadb3c1b0.info | Bin 12810 -> 10256 bytes .../a0/a0fbd16cf167148268ecb856d017aee7 | Bin 0 -> 18149 bytes .../a0/a0fbd16cf167148268ecb856d017aee7.info | Bin 0 -> 641 bytes .../a5/a5132e76f39f32d4caea99ef7c83d636 | Bin 4268 -> 4268 bytes .../a5/a5132e76f39f32d4caea99ef7c83d636.info | Bin 5315 -> 2722 bytes .../a8/a8e673567ac33e04487feec5673c2cc2 | Bin 4293 -> 4293 bytes .../b2/b29345d5dd22ad745af7283665fa4dc4 | Bin 4293 -> 4293 bytes .../b8/b8485d431406560409afdc9572299190 | Bin 4313 -> 4313 bytes .../bb/bb289d62091f1ed4f85a8cf05a0608ac | Bin 4260 -> 4260 bytes .../bb/bb289d62091f1ed4f85a8cf05a0608ac.info | Bin 12688 -> 9464 bytes .../bb/bb43dfaa5df3fd7499cb08815296d42f | Bin 4268 -> 4268 bytes .../bb/bb43dfaa5df3fd7499cb08815296d42f.info | Bin 5452 -> 3111 bytes .../bb/bb716fad3585fad448da9b20cee7b0fa | Bin 4301 -> 4301 bytes .../bb/bb716fad3585fad448da9b20cee7b0fa.info | Bin 571 -> 579 bytes .../be/be10fc2a1b44c42ab8d6af8637b7bb96 | Bin 0 -> 9888 bytes .../be/be10fc2a1b44c42ab8d6af8637b7bb96.info | Bin 0 -> 3768 bytes .../ca/ca3447eb3a828184ab4ba5f5996b14c7 | Bin 4293 -> 4293 bytes .../cf/cf4d693f4d204ec448f2bcd7640acba1 | Bin 4252 -> 4252 bytes .../cf/cf4d693f4d204ec448f2bcd7640acba1.info | Bin 12671 -> 7758 bytes .../d2/d2ef3b15c32eb43108261a87963b8937 | Bin 0 -> 5421 bytes .../d2/d2ef3b15c32eb43108261a87963b8937.info | Bin 0 -> 601 bytes .../da/dae752d8f72c9504082676f59a9ce704 | Bin 4268 -> 4268 bytes .../da/dae752d8f72c9504082676f59a9ce704.info | Bin 5385 -> 2962 bytes .../e8/e824886ca6f7c40a4a622b6a82c50c9c | Bin 0 -> 4309 bytes .../e8/e824886ca6f7c40a4a622b6a82c50c9c.info | Bin 0 -> 582 bytes .../ec/ec28203e77d39e74fbe69292ba584d64 | Bin 4260 -> 4260 bytes .../ec/ec28203e77d39e74fbe69292ba584d64.info | Bin 12194 -> 7537 bytes .../ef/efe8af026bd06914d9826fc55d722275 | Bin 4601 -> 4969 bytes .../f3/f3bb37550d4444b87ad7543d746b1c95 | Bin 0 -> 4309 bytes .../f3/f3bb37550d4444b87ad7543d746b1c95.info | Bin 0 -> 586 bytes .../f5/f5f67c52d1564df4a8936ccd202a3bd8 | Bin 12129 -> 12441 bytes .../f5/f5f67c52d1564df4a8936ccd202a3bd8.info | Bin 1258622 -> 1324811 bytes .../fe/fee89e7023b014869aee949adecdc426 | Bin 0 -> 4345 bytes .../fe/fee89e7023b014869aee949adecdc426.info | Bin 0 -> 621 bytes .../ProjectSettings/ProjectSettings.asset | Bin 36705 -> 41889 bytes Roguelike/ProjectSettings/ProjectVersion.txt | 2 +- Roguelike/ProjectSettings/TagManager.asset | Bin 4236 -> 4332 bytes .../ProjectSettings/UnityAdsSettings.asset | Bin 0 -> 4116 bytes .../UnityAnalyticsManager.asset | Bin 0 -> 4112 bytes Roguelike/Roguelike.CSharp.Editor.csproj | 144 + Roguelike/Roguelike.CSharp.csproj | 94 + Roguelike/Roguelike.sln | 26 + gitignore/.gitignore | 22 + z_Misc_Docs/UI/JazzZombieTagScript.cs | 15 + z_Misc_Docs/UI/JazzZombieTagScript.cs.meta | 12 + z_Misc_Docs/UI/MainMenu.cs | 23 + z_Misc_Docs/UI/MainMenu.cs.meta | 12 + z_Misc_Docs/UI/MetalZombieTagScript.cs | 15 + z_Misc_Docs/UI/MetalZombieTagScript.cs.meta | 12 + z_Misc_Docs/UI/UI_Tooltip.cs | 77 + z_Misc_Docs/UI/UI_Tooltip.cs.meta | 14 + z_Misc_Docs/UI/ZombieNotificationScripts.meta | 9 + 182 files changed, 41913 insertions(+), 13 deletions(-) create mode 100644 Roguelike/Assets/iTweenEditor.meta create mode 100644 Roguelike/Assets/iTweenEditor/Editor.meta create mode 100644 Roguelike/Assets/iTweenEditor/Editor/iTweenEventDataEditor.cs create mode 100644 Roguelike/Assets/iTweenEditor/Editor/iTweenEventDataEditor.cs.meta create mode 100644 Roguelike/Assets/iTweenEditor/Editor/iTweenPathEditor.cs create mode 100644 Roguelike/Assets/iTweenEditor/Editor/iTweenPathEditor.cs.meta create mode 100644 Roguelike/Assets/iTweenEditor/Examples.meta create mode 100644 Roguelike/Assets/iTweenEditor/Examples/Path Test.unity create mode 100644 Roguelike/Assets/iTweenEditor/Examples/Path Test.unity.meta create mode 100644 Roguelike/Assets/iTweenEditor/Examples/StartAndStopATween.unity create mode 100644 Roguelike/Assets/iTweenEditor/Examples/StartAndStopATween.unity.meta create mode 100644 Roguelike/Assets/iTweenEditor/Examples/StartAndStopTween.cs create mode 100644 Roguelike/Assets/iTweenEditor/Examples/StartAndStopTween.cs.meta create mode 100644 Roguelike/Assets/iTweenEditor/Gizmos.meta create mode 100644 Roguelike/Assets/iTweenEditor/Gizmos/iTweenIcon.tif create mode 100644 Roguelike/Assets/iTweenEditor/Gizmos/iTweenIcon.tif.meta create mode 100644 Roguelike/Assets/iTweenEditor/Helper Classes.meta create mode 100644 Roguelike/Assets/iTweenEditor/Helper Classes/EventParamMappings.cs create mode 100644 Roguelike/Assets/iTweenEditor/Helper Classes/EventParamMappings.cs.meta create mode 100644 Roguelike/Assets/iTweenEditor/Helper Classes/Vector3OrTransform.cs create mode 100644 Roguelike/Assets/iTweenEditor/Helper Classes/Vector3OrTransform.cs.meta create mode 100644 Roguelike/Assets/iTweenEditor/Helper Classes/Vector3OrTransformArray.cs create mode 100644 Roguelike/Assets/iTweenEditor/Helper Classes/Vector3OrTransformArray.cs.meta create mode 100644 Roguelike/Assets/iTweenEditor/README.txt create mode 100644 Roguelike/Assets/iTweenEditor/README.txt.meta create mode 100644 Roguelike/Assets/iTweenEditor/iTween.cs create mode 100644 Roguelike/Assets/iTweenEditor/iTween.cs.meta create mode 100644 Roguelike/Assets/iTweenEditor/iTweenEvent.cs create mode 100644 Roguelike/Assets/iTweenEditor/iTweenEvent.cs.meta create mode 100644 Roguelike/Assets/iTweenEditor/iTweenPath.cs create mode 100644 Roguelike/Assets/iTweenEditor/iTweenPath.cs.meta create mode 100644 Roguelike/Library/AssetVersioning.db create mode 100644 Roguelike/Library/ScriptAssemblies/Assembly-CSharp-Editor.dll.mdb create mode 100644 Roguelike/Library/ShaderCache/0/06776728e33fc9af2ed1df4f3d08faa1.bin create mode 100644 Roguelike/Library/ShaderCache/0/097886457247838aa7d8d2a0b2111588.bin create mode 100644 Roguelike/Library/ShaderCache/3/3a8eef78a3b767f892b1d97fcf953a0b.bin create mode 100644 Roguelike/Library/ShaderCache/3/3c5f7dab95c09023d4c67b736c849ea0.bin create mode 100644 Roguelike/Library/ShaderCache/7/7874cccdc2bf25a8e9d878ea75d9430f.bin create mode 100644 Roguelike/Library/ShaderCache/7/7dd1923df1950e9b523bee33d162ee3a.bin create mode 100644 Roguelike/Library/ShaderCache/7/7eccc90b4e57ec4e03c6da60f7797ebe.bin create mode 100644 Roguelike/Library/ShaderCache/8/8e25c819e481ea97d2a82166887ba567.bin create mode 100644 Roguelike/Library/ShaderCache/9/9411315f81fe093333e359470f322bdb.bin create mode 100644 Roguelike/Library/ShaderCache/e/e872f533f2a0ded4f1f3c8df3929e2b1.bin create mode 100644 Roguelike/Library/UnityAssemblies/UnityEditor.Advertisements.xml create mode 100644 Roguelike/Library/UnityAssemblies/UnityEditor.Networking.xml create mode 100644 Roguelike/Library/UnityAssemblies/UnityEditor.UI.xml create mode 100644 Roguelike/Library/UnityAssemblies/UnityEditor.xml create mode 100644 Roguelike/Library/UnityAssemblies/UnityEngine.Networking.xml create mode 100644 Roguelike/Library/UnityAssemblies/UnityEngine.UI.xml create mode 100644 Roguelike/Library/UnityAssemblies/version.txt create mode 100644 Roguelike/Library/metadata/00/00000000000000008100000000000000 create mode 100644 Roguelike/Library/metadata/00/00000000000000008100000000000000.info create mode 100644 Roguelike/Library/metadata/00/00000000000000009100000000000000 create mode 100644 Roguelike/Library/metadata/00/00000000000000009100000000000000.info create mode 100644 Roguelike/Library/metadata/04/0401554a0e6f9466db3c1a798d358b8c create mode 100644 Roguelike/Library/metadata/04/0401554a0e6f9466db3c1a798d358b8c.info create mode 100644 Roguelike/Library/metadata/08/085d9842593af44d8a507541ce47bc6e create mode 100644 Roguelike/Library/metadata/08/085d9842593af44d8a507541ce47bc6e.info create mode 100644 Roguelike/Library/metadata/17/17799b66b509c40a78360036fcfbc8bc create mode 100644 Roguelike/Library/metadata/17/17799b66b509c40a78360036fcfbc8bc.info create mode 100644 Roguelike/Library/metadata/2c/2cd963efa0be1416c93438361364da95 create mode 100644 Roguelike/Library/metadata/2c/2cd963efa0be1416c93438361364da95.info create mode 100644 Roguelike/Library/metadata/3d/3d2e08407829a435b84ff5ac7f8b3aef create mode 100644 Roguelike/Library/metadata/3d/3d2e08407829a435b84ff5ac7f8b3aef.info create mode 100644 Roguelike/Library/metadata/46/469ffe30a4f3a43d99d202b74660b1e5 create mode 100644 Roguelike/Library/metadata/46/469ffe30a4f3a43d99d202b74660b1e5.info create mode 100644 Roguelike/Library/metadata/6b/6bf45a0ab38a1458999f7d05487b4d52 create mode 100644 Roguelike/Library/metadata/6b/6bf45a0ab38a1458999f7d05487b4d52.info create mode 100644 Roguelike/Library/metadata/73/739bbd9f364b4268874f9fd86ab3beef create mode 100644 Roguelike/Library/metadata/73/739bbd9f364b4268874f9fd86ab3beef.info create mode 100644 Roguelike/Library/metadata/76/766f29702ce4e4a1584e5147c88629a2 create mode 100644 Roguelike/Library/metadata/76/766f29702ce4e4a1584e5147c88629a2.info create mode 100644 Roguelike/Library/metadata/79/797ae283e17aa4827a330e531ef47b73 create mode 100644 Roguelike/Library/metadata/79/797ae283e17aa4827a330e531ef47b73.info create mode 100644 Roguelike/Library/metadata/85/852e56802eb941638acbb491814497b0 create mode 100644 Roguelike/Library/metadata/85/852e56802eb941638acbb491814497b0.info create mode 100644 Roguelike/Library/metadata/8a/8a32d65a6a0c443f79048586c9648b05 create mode 100644 Roguelike/Library/metadata/8a/8a32d65a6a0c443f79048586c9648b05.info create mode 100644 Roguelike/Library/metadata/97/97decbdab0634cdd991f8d23ddf0dead create mode 100644 Roguelike/Library/metadata/97/97decbdab0634cdd991f8d23ddf0dead.info create mode 100644 Roguelike/Library/metadata/99/99aae065ca13f46398c1f65ebc52f413 create mode 100644 Roguelike/Library/metadata/99/99aae065ca13f46398c1f65ebc52f413.info create mode 100644 Roguelike/Library/metadata/9a/9a0e6727026ec924da7a25f275a934b5 create mode 100644 Roguelike/Library/metadata/9a/9a0e6727026ec924da7a25f275a934b5.info create mode 100644 Roguelike/Library/metadata/a0/a0fbd16cf167148268ecb856d017aee7 create mode 100644 Roguelike/Library/metadata/a0/a0fbd16cf167148268ecb856d017aee7.info create mode 100644 Roguelike/Library/metadata/be/be10fc2a1b44c42ab8d6af8637b7bb96 create mode 100644 Roguelike/Library/metadata/be/be10fc2a1b44c42ab8d6af8637b7bb96.info create mode 100644 Roguelike/Library/metadata/d2/d2ef3b15c32eb43108261a87963b8937 create mode 100644 Roguelike/Library/metadata/d2/d2ef3b15c32eb43108261a87963b8937.info create mode 100644 Roguelike/Library/metadata/e8/e824886ca6f7c40a4a622b6a82c50c9c create mode 100644 Roguelike/Library/metadata/e8/e824886ca6f7c40a4a622b6a82c50c9c.info create mode 100644 Roguelike/Library/metadata/f3/f3bb37550d4444b87ad7543d746b1c95 create mode 100644 Roguelike/Library/metadata/f3/f3bb37550d4444b87ad7543d746b1c95.info create mode 100644 Roguelike/Library/metadata/fe/fee89e7023b014869aee949adecdc426 create mode 100644 Roguelike/Library/metadata/fe/fee89e7023b014869aee949adecdc426.info create mode 100644 Roguelike/ProjectSettings/UnityAdsSettings.asset create mode 100644 Roguelike/ProjectSettings/UnityAnalyticsManager.asset create mode 100644 Roguelike/Roguelike.CSharp.Editor.csproj create mode 100644 Roguelike/Roguelike.CSharp.csproj create mode 100644 Roguelike/Roguelike.sln create mode 100644 gitignore/.gitignore create mode 100644 z_Misc_Docs/UI/JazzZombieTagScript.cs create mode 100644 z_Misc_Docs/UI/JazzZombieTagScript.cs.meta create mode 100644 z_Misc_Docs/UI/MainMenu.cs create mode 100644 z_Misc_Docs/UI/MainMenu.cs.meta create mode 100644 z_Misc_Docs/UI/MetalZombieTagScript.cs create mode 100644 z_Misc_Docs/UI/MetalZombieTagScript.cs.meta create mode 100644 z_Misc_Docs/UI/UI_Tooltip.cs create mode 100644 z_Misc_Docs/UI/UI_Tooltip.cs.meta create mode 100644 z_Misc_Docs/UI/ZombieNotificationScripts.meta diff --git a/Roguelike/Assets/Scenes/EnemyAITest.unity b/Roguelike/Assets/Scenes/EnemyAITest.unity index 487f32f3ce68a9f1e51b77c6bf7e8259e7220da3..32e06d7fe9e448023af8c32f1c484a41451a0e38 100644 GIT binary patch delta 5317 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 L+Gve3QEvVl<*NnA delta 1336 zcmZWnZD^BM6uvik`!!RO`LSe4*0-I76&GXU64PdrwrJZlCYZLGWa&o|u$w=X4F7D^_?-8BD^f3FM z&^J$i^zpSDp~G#rKZtJkA3bA2>_wP_@d^r2WIcURR&|D=69*>p{kh4BSZ;6b-HG?b z9LRt3JEs5odf%P$XjA0w;H=Vwm=9t#MkVWHsSsL6y8?^STN>KjE3HyIL>~*%EJ$kC^*uT#DNeQ&Gi(y;7>}Sd=Aas9bAu2>QQ!OTmmVuLT&V z@I4EnTE(GZKFhG(FrIzR;Fe|$qh$x;zi6h{?YsDEE1)QXy9>LACil!bXa9D%ow+@T z9T&o`eLQK1It)@M^mwb&bW|bdHfLc0bNNxyqM0t^GBRzLgGWOOOy@5Dy&?iA4uY#J zYk%g*`d!TJse7KIQ^gc>sRkjYaiSDfr7OLSriBLjqt}@@_`>t;j$B+n&ShnA%WvyB z{i(*yS{>`(}7$(>8v-^hLjy4o8~k)$m>^>3DdZ zG|`XYH>n)1r%E_V-2-+S9tZ&2R`Ao}_j3JGE!}^+MfC=JoxD1H2tKoxa$ZmSq?rQo zHrpm|;2B<+X)+!>v0I`2aW^d{9qg9l{-sDhrA6X{ZW*B8!mBxcEYr+0NrkoyZKY#F zc})9g=nAHNFS?QT53i-homPt|p6Ge`^MBsDe05b1T}ZUm@W={1NOYlaLo$f{K|-ae zbOX&M?LfDZD$T?ln#U~TMGePNj6X@KlpnOAwE{GoQ8mRH8cVCBq?@JgMUxKA>%u;l z4r;qfUyi%UHsUvsCF7>zh=-MECezB7q3a2y trueFalseOptions = new List() {"True", "False"}; + Dictionary values; + Dictionary propertiesEnabled = new Dictionary(); + iTweenEvent.TweenType previousType; + + [MenuItem("Component/iTween/iTweenEvent")] + static void AddiTweenEvent () { + if(Selection.activeGameObject != null) { + Selection.activeGameObject.AddComponent(typeof(iTweenEvent)); + } + } + + [MenuItem("Component/iTween/Prepare Visual Editor for Javascript Usage")] + static void CopyFilesForJavascriptUsage() { + if(Directory.Exists(Application.dataPath + "/iTweenEditor/Helper Classes")) { + if(!Directory.Exists(Application.dataPath + "/Plugins")) { + Directory.CreateDirectory(Application.dataPath + "/Plugins"); + } + + if(!Directory.Exists(Application.dataPath + "/Plugins/iTweenEditor")) { + Directory.CreateDirectory(Application.dataPath + "/Plugins/iTweenEditor"); + } + FileUtil.MoveFileOrDirectory(Application.dataPath + "/iTweenEditor/Helper Classes", Application.dataPath + "/Plugins/iTweenEditor/Helper Classes"); + FileUtil.MoveFileOrDirectory(Application.dataPath + "/iTweenEditor/iTweenEvent.cs", Application.dataPath + "/Plugins/iTweenEvent.cs"); + FileUtil.MoveFileOrDirectory(Application.dataPath + "/iTweenEditor/iTween.cs", Application.dataPath + "/Plugins/iTween.cs"); + FileUtil.MoveFileOrDirectory(Application.dataPath + "/iTweenEditor/iTweenPath.cs", Application.dataPath + "/Plugins/iTweenPath.cs"); + + AssetDatabase.Refresh(); + } + else { + EditorUtility.DisplayDialog("Can't move files", "Your files have already been moved", "Ok"); + } + } + + [MenuItem("Component/iTween/Donate to support the Visual Editor")] + static void Donate() { + Application.OpenURL("https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=WD3GQ6HHD257C"); + } + + public void OnEnable() { + var evt = (iTweenEvent)target; + foreach(var key in EventParamMappings.mappings[evt.type].Keys) { + propertiesEnabled[key] = false; + } + previousType = evt.type; + + if(!Directory.Exists(Application.dataPath + "/Gizmos")) { + Directory.CreateDirectory(Application.dataPath + "/Gizmos"); + } + + if(!File.Exists(Application.dataPath + "/Gizmos/iTweenIcon.tif")) { + FileUtil.CopyFileOrDirectory(Application.dataPath + "/iTweenEditor/Gizmos/iTweenIcon.tif", Application.dataPath + "/Gizmos/iTweenIcon.tif"); + } + } + + public override void OnInspectorGUI() { + var evt = (iTweenEvent)target; + values = evt.Values; + var keys = values.Keys.ToArray(); + + foreach(var key in keys) { + propertiesEnabled[key] = true; + if(typeof(Vector3OrTransform) == EventParamMappings.mappings[evt.type][key]) { + var val = new Vector3OrTransform(); + + if(null == values[key] || typeof(Transform) == values[key].GetType()) { + if(null == values[key]) { + val.transform = null; + } + else { + val.transform = (Transform)values[key]; + } + val.selected = Vector3OrTransform.transformSelected; + } + else if(typeof(Vector3) == values[key].GetType()) { + val.vector = (Vector3)values[key]; + val.selected = Vector3OrTransform.vector3Selected; + } + + values[key] = val; + } + if(typeof(Vector3OrTransformArray) == EventParamMappings.mappings[evt.type][key]) { + var val = new Vector3OrTransformArray(); + + if(null == values[key] || typeof(Transform[]) == values[key].GetType()) { + if(null == values[key]) { + val.transformArray = null; + } + else { + val.transformArray = (Transform[])values[key]; + } + val.selected = Vector3OrTransformArray.transformSelected; + } + else if(typeof(Vector3[]) == values[key].GetType()) { + val.vectorArray = (Vector3[])values[key]; + val.selected = Vector3OrTransformArray.vector3Selected; + } + else if(typeof(string) == values[key].GetType()) { + val.pathName = (string)values[key]; + val.selected = Vector3OrTransformArray.iTweenPathSelected; + } + + values[key] = val; + } + } + + GUILayout.Label(string.Format("iTween Event Editor v{0}", iTweenEvent.VERSION)); + EditorGUILayout.Separator(); + + GUILayout.BeginHorizontal(); + GUILayout.Label("Name"); + evt.tweenName = EditorGUILayout.TextField(evt.tweenName); + GUILayout.EndHorizontal(); + + GUILayout.BeginHorizontal(); + evt.showIconInInspector = GUILayout.Toggle(evt.showIconInInspector, " Show Icon In Scene"); + GUILayout.EndHorizontal(); + + GUILayout.BeginHorizontal(); + evt.playAutomatically = GUILayout.Toggle(evt.playAutomatically, " Play Automatically"); + GUILayout.EndHorizontal(); + + GUILayout.BeginHorizontal(); + GUILayout.Label("Initial Start Delay (delay begins once the iTweenEvent is played)"); + evt.delay = EditorGUILayout.FloatField(evt.delay); + GUILayout.EndHorizontal(); + + EditorGUILayout.Separator(); + + GUILayout.BeginHorizontal(); + GUILayout.Label("Event Type"); + evt.type = (iTweenEvent.TweenType)EditorGUILayout.EnumPopup(evt.type); + GUILayout.EndHorizontal(); + + if(evt.type != previousType) { + foreach(var key in EventParamMappings.mappings[evt.type].Keys) { + propertiesEnabled[key] = false; + } + evt.Values = new Dictionary(); + previousType = evt.type; + return; + } + + var properties = EventParamMappings.mappings[evt.type]; + foreach(var pair in properties) { + var key = pair.Key; + + GUILayout.BeginHorizontal(); + + if(EditorGUILayout.BeginToggleGroup(key, propertiesEnabled[key])) { + propertiesEnabled[key] = true; + + GUILayout.BeginVertical(); + + if(typeof(string) == pair.Value) { + values[key] = EditorGUILayout.TextField(values.ContainsKey(key) ? (string)values[key] : ""); + } + else if(typeof(float) == pair.Value) { + values[key] = EditorGUILayout.FloatField(values.ContainsKey(key) ? (float)values[key] : 0); + } + else if(typeof(int) == pair.Value) { + values[key] = EditorGUILayout.IntField(values.ContainsKey(key) ? (int)values[key] : 0); + } + else if(typeof(bool) == pair.Value) { + GUILayout.BeginHorizontal(); + var currentValueString = (values.ContainsKey(key) ? (bool)values[key] : false).ToString(); + currentValueString = currentValueString.Substring(0, 1).ToUpper() + currentValueString.Substring(1); + var index = EditorGUILayout.Popup(trueFalseOptions.IndexOf(currentValueString), trueFalseOptions.ToArray()); + GUILayout.EndHorizontal(); + values[key] = bool.Parse(trueFalseOptions[index]); + } + else if(typeof(GameObject) == pair.Value) { + values[key] = EditorGUILayout.ObjectField(values.ContainsKey(key) ? (GameObject)values[key] : null, typeof(GameObject), true); + } + else if(typeof(Vector3) == pair.Value) { + values[key] = EditorGUILayout.Vector3Field("", values.ContainsKey(key) ? (Vector3)values[key] : Vector3.zero); + } + else if(typeof(Vector3OrTransform) == pair.Value) { + if(!values.ContainsKey(key)) { + values[key] = new Vector3OrTransform(); + } + var val = (Vector3OrTransform)values[key]; + + val.selected = GUILayout.SelectionGrid(val.selected, Vector3OrTransform.choices, 2); + + if(Vector3OrTransform.vector3Selected == val.selected) { + val.vector = EditorGUILayout.Vector3Field("", val.vector); + } + else { + val.transform = (Transform)EditorGUILayout.ObjectField(val.transform, typeof(Transform), true); + } + values[key] = val; + } + else if(typeof(Vector3OrTransformArray) == pair.Value) { + if(!values.ContainsKey(key)) { + values[key] = new Vector3OrTransformArray(); + } + var val = (Vector3OrTransformArray)values[key]; + val.selected = GUILayout.SelectionGrid(val.selected, Vector3OrTransformArray.choices, Vector3OrTransformArray.choices.Length); + + if(Vector3OrTransformArray.vector3Selected == val.selected) { + if(null == val.vectorArray) { + val.vectorArray = new Vector3[0]; + } + var elements = val.vectorArray.Length; + GUILayout.BeginHorizontal(); + GUILayout.Label("Number of points"); + elements = EditorGUILayout.IntField(elements); + GUILayout.EndHorizontal(); + if(elements != val.vectorArray.Length) { + var resizedArray = new Vector3[elements]; + val.vectorArray.CopyTo(resizedArray, 0); + val.vectorArray = resizedArray; + } + for(var i = 0; i < val.vectorArray.Length; ++i) { + val.vectorArray[i] = EditorGUILayout.Vector3Field("", val.vectorArray[i]); + } + } + else if(Vector3OrTransformArray.transformSelected == val.selected) { + if(null == val.transformArray) { + val.transformArray = new Transform[0]; + } + var elements = val.transformArray.Length; + GUILayout.BeginHorizontal(); + GUILayout.Label("Number of points"); + elements = EditorGUILayout.IntField(elements); + GUILayout.EndHorizontal(); + if(elements != val.transformArray.Length) { + var resizedArray = new Transform[elements]; + val.transformArray.CopyTo(resizedArray, 0); + val.transformArray = resizedArray; + } + for(var i = 0; i < val.transformArray.Length; ++i) { + val.transformArray[i] = (Transform)EditorGUILayout.ObjectField(val.transformArray[i], typeof(Transform), true); + } + } + else if(Vector3OrTransformArray.iTweenPathSelected == val.selected) { + var index = 0; + var paths = (GameObject.FindObjectsOfType(typeof(iTweenPath)) as iTweenPath[]); + if(0 == paths.Length) { + val.pathName = ""; + GUILayout.Label("No paths are defined"); + } + else { + for(var i = 0; i < paths.Length; ++i) { + if(paths[i].pathName == val.pathName) { + index = i; + } + } + index = EditorGUILayout.Popup(index, (GameObject.FindObjectsOfType(typeof(iTweenPath)) as iTweenPath[]).Select(path => path.pathName).ToArray()); + + val.pathName = paths[index].pathName; + } + } + values[key] = val; + } + else if(typeof(iTween.LoopType) == pair.Value) { + values[key] = EditorGUILayout.EnumPopup(values.ContainsKey(key) ? (iTween.LoopType)values[key] : iTween.LoopType.none); + } + else if(typeof(iTween.EaseType) == pair.Value) { + values[key] = EditorGUILayout.EnumPopup(values.ContainsKey(key) ? (iTween.EaseType)values[key] : iTween.EaseType.linear); + } + else if(typeof(AudioSource) == pair.Value) { + values[key] = (AudioSource)EditorGUILayout.ObjectField(values.ContainsKey(key) ? (AudioSource)values[key] : null, typeof(AudioSource), true); + } + else if(typeof(AudioClip) == pair.Value) { + values[key] = (AudioClip)EditorGUILayout.ObjectField(values.ContainsKey(key) ? (AudioClip)values[key] : null, typeof(AudioClip), true); + } + else if(typeof(Color) == pair.Value) { + values[key] = EditorGUILayout.ColorField(values.ContainsKey(key) ? (Color)values[key] : Color.white); + } + else if(typeof(Space) == pair.Value) { + values[key] = EditorGUILayout.EnumPopup(values.ContainsKey(key) ? (Space)values[key] : Space.Self); + } + + GUILayout.EndVertical(); + } + else { + propertiesEnabled[key] = false; + values.Remove(key); + } + + EditorGUILayout.EndToggleGroup(); + GUILayout.EndHorizontal(); + EditorGUILayout.Separator(); + } + + keys = values.Keys.ToArray(); + + foreach(var key in keys) { + if(values[key] != null && values[key].GetType() == typeof(Vector3OrTransform)) { + var val = (Vector3OrTransform)values[key]; + if(Vector3OrTransform.vector3Selected == val.selected) { + values[key] = val.vector; + } + else { + values[key] = val.transform; + } + } + else if(values[key] != null && values[key].GetType() == typeof(Vector3OrTransformArray)) { + var val = (Vector3OrTransformArray)values[key]; + if(Vector3OrTransformArray.vector3Selected == val.selected) { + values[key] = val.vectorArray; + } + else if(Vector3OrTransformArray.transformSelected == val.selected) { + values[key] = val.transformArray; + } + else if(Vector3OrTransformArray.iTweenPathSelected == val.selected) { + values[key] = val.pathName; + } + } + } + + evt.Values = values; + previousType = evt.type; + } +} \ No newline at end of file diff --git a/Roguelike/Assets/iTweenEditor/Editor/iTweenEventDataEditor.cs.meta b/Roguelike/Assets/iTweenEditor/Editor/iTweenEventDataEditor.cs.meta new file mode 100644 index 00000000..7548d555 --- /dev/null +++ b/Roguelike/Assets/iTweenEditor/Editor/iTweenEventDataEditor.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: a0fbd16cf167148268ecb856d017aee7 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Roguelike/Assets/iTweenEditor/Editor/iTweenPathEditor.cs b/Roguelike/Assets/iTweenEditor/Editor/iTweenPathEditor.cs new file mode 100644 index 00000000..bf1d3858 --- /dev/null +++ b/Roguelike/Assets/iTweenEditor/Editor/iTweenPathEditor.cs @@ -0,0 +1,97 @@ +//by Bob Berkebile : Pixelplacement : http://www.pixelplacement.com + +using UnityEngine; +using UnityEditor; +using System.Collections; + +[CustomEditor(typeof(iTweenPath))] +public class iTweenPathEditor : Editor +{ + iTweenPath _target; + GUIStyle style = new GUIStyle(); + public static int count = 0; + + void OnEnable(){ + //i like bold handle labels since I'm getting old: + style.fontStyle = FontStyle.Bold; + style.normal.textColor = Color.white; + _target = (iTweenPath)target; + + //lock in a default path name: + if(!_target.initialized){ + _target.initialized = true; + _target.pathName = "New Path " + ++count; + _target.initialName = _target.pathName; + } + } + + public override void OnInspectorGUI(){ + //path name: + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PrefixLabel("Path Name"); + _target.pathName = EditorGUILayout.TextField(_target.pathName); + EditorGUILayout.EndHorizontal(); + + if(_target.pathName == ""){ + _target.pathName = _target.initialName; + } + + //path color: + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PrefixLabel("Path Color"); + _target.pathColor = EditorGUILayout.ColorField(_target.pathColor); + EditorGUILayout.EndHorizontal(); + + //exploration segment count control: + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PrefixLabel("Node Count"); + _target.nodeCount = Mathf.Clamp(EditorGUILayout.IntSlider(_target.nodeCount, 0, 10), 2,100); + EditorGUILayout.EndHorizontal(); + + //add node? + if(_target.nodeCount > _target.nodes.Count){ + for (int i = 0; i < _target.nodeCount - _target.nodes.Count; i++) { + _target.nodes.Add(Vector3.zero); + } + } + + //remove node? + if(_target.nodeCount < _target.nodes.Count){ + if(EditorUtility.DisplayDialog("Remove path node?","Shortening the node list will permantently destory parts of your path. This operation cannot be undone.", "OK", "Cancel")){ + int removeCount = _target.nodes.Count - _target.nodeCount; + _target.nodes.RemoveRange(_target.nodes.Count-removeCount,removeCount); + }else{ + _target.nodeCount = _target.nodes.Count; + } + } + + //node display: + EditorGUI.indentLevel = 4; + for (int i = 0; i < _target.nodes.Count; i++) { + _target.nodes[i] = EditorGUILayout.Vector3Field("Node " + (i+1), _target.nodes[i]); + } + + //update and redraw: + if(GUI.changed){ + EditorUtility.SetDirty(_target); + } + } + + void OnSceneGUI(){ + if(_target.enabled) { // dkoontz + if(_target.nodes.Count > 0){ + //allow path adjustment undo: + Undo.SetSnapshotTarget(_target,"Adjust iTween Path"); + + //path begin and end labels: + Handles.Label(_target.nodes[0], "'" + _target.pathName + "' Begin", style); + Handles.Label(_target.nodes[_target.nodes.Count-1], "'" + _target.pathName + "' End", style); + + //node handle display: + for (int i = 0; i < _target.nodes.Count; i++) { + _target.nodes[i] = Handles.PositionHandle(_target.nodes[i], Quaternion.identity); + } + } + } // dkoontz + } +} \ No newline at end of file diff --git a/Roguelike/Assets/iTweenEditor/Editor/iTweenPathEditor.cs.meta b/Roguelike/Assets/iTweenEditor/Editor/iTweenPathEditor.cs.meta new file mode 100644 index 00000000..d004a25e --- /dev/null +++ b/Roguelike/Assets/iTweenEditor/Editor/iTweenPathEditor.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 766f29702ce4e4a1584e5147c88629a2 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Roguelike/Assets/iTweenEditor/Examples.meta b/Roguelike/Assets/iTweenEditor/Examples.meta new file mode 100644 index 00000000..cb53e087 --- /dev/null +++ b/Roguelike/Assets/iTweenEditor/Examples.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f3bb37550d4444b87ad7543d746b1c95 +folderAsset: yes +timeCreated: 1447707039 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Roguelike/Assets/iTweenEditor/Examples/Path Test.unity b/Roguelike/Assets/iTweenEditor/Examples/Path Test.unity new file mode 100644 index 0000000000000000000000000000000000000000..ed0872bed0732fcacf19232c02e3eb96cf52ed16 GIT binary patch literal 27732 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 literal 0 HcmV?d00001 diff --git a/Roguelike/Assets/iTweenEditor/Examples/StartAndStopATween.unity.meta b/Roguelike/Assets/iTweenEditor/Examples/StartAndStopATween.unity.meta new file mode 100644 index 00000000..530a7a30 --- /dev/null +++ b/Roguelike/Assets/iTweenEditor/Examples/StartAndStopATween.unity.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: fee89e7023b014869aee949adecdc426 +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Roguelike/Assets/iTweenEditor/Examples/StartAndStopTween.cs b/Roguelike/Assets/iTweenEditor/Examples/StartAndStopTween.cs new file mode 100644 index 00000000..4fd7e29e --- /dev/null +++ b/Roguelike/Assets/iTweenEditor/Examples/StartAndStopTween.cs @@ -0,0 +1,27 @@ +using UnityEngine; +using System.Collections.Generic; +using System.Collections; +using System.Linq; + +public class StartAndStopTween : MonoBehaviour { + + public GameObject target; + + void OnGUI() { + if(GUILayout.Button("Start Bounce")) { + iTweenEvent.GetEvent(target, "Bounce").Play(); + } + + if(GUILayout.Button("Stop Bounce")) { + iTweenEvent.GetEvent(target, "Bounce").Stop(); + } + + if(GUILayout.Button("Start Color Fade")) { + iTweenEvent.GetEvent(target, "Color Fade").Play(); + } + + if(GUILayout.Button("Stop Color Fade")) { + iTweenEvent.GetEvent(target, "Color Fade").Stop(); + } + } +} \ No newline at end of file diff --git a/Roguelike/Assets/iTweenEditor/Examples/StartAndStopTween.cs.meta b/Roguelike/Assets/iTweenEditor/Examples/StartAndStopTween.cs.meta new file mode 100644 index 00000000..815a85dd --- /dev/null +++ b/Roguelike/Assets/iTweenEditor/Examples/StartAndStopTween.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 6bf45a0ab38a1458999f7d05487b4d52 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Roguelike/Assets/iTweenEditor/Gizmos.meta b/Roguelike/Assets/iTweenEditor/Gizmos.meta new file mode 100644 index 00000000..5506b656 --- /dev/null +++ b/Roguelike/Assets/iTweenEditor/Gizmos.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 797ae283e17aa4827a330e531ef47b73 +folderAsset: yes +timeCreated: 1447707039 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Roguelike/Assets/iTweenEditor/Gizmos/iTweenIcon.tif b/Roguelike/Assets/iTweenEditor/Gizmos/iTweenIcon.tif new file mode 100644 index 0000000000000000000000000000000000000000..51d5972ff835bade7f5f8d90071f876edd4824bc GIT binary patch literal 27264 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 MIFLXd?H> mappings = new Dictionary>(); + + static EventParamMappings() { + // AUDIO FROM + mappings.Add(iTweenEvent.TweenType.AudioFrom, new Dictionary()); + mappings[iTweenEvent.TweenType.AudioFrom]["audiosource"] = typeof(AudioSource); + mappings[iTweenEvent.TweenType.AudioFrom]["volume"] = typeof(float); + mappings[iTweenEvent.TweenType.AudioFrom]["pitch"] = typeof(float); + mappings[iTweenEvent.TweenType.AudioFrom]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.AudioFrom]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.AudioFrom]["easetype"] = typeof(iTween.EaseType); + mappings[iTweenEvent.TweenType.AudioFrom]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.AudioFrom]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.AudioFrom]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.AudioFrom]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.AudioFrom]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.AudioFrom]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.AudioFrom]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.AudioFrom]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.AudioFrom]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.AudioFrom]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.AudioFrom]["ignoretimescale"] = typeof(bool); + + // AUDIO TO + mappings.Add(iTweenEvent.TweenType.AudioTo, new Dictionary()); + mappings[iTweenEvent.TweenType.AudioTo]["audiosource"] = typeof(AudioSource); + mappings[iTweenEvent.TweenType.AudioTo]["volume"] = typeof(float); + mappings[iTweenEvent.TweenType.AudioTo]["pitch"] = typeof(float); + mappings[iTweenEvent.TweenType.AudioTo]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.AudioTo]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.AudioTo]["easetype"] = typeof(iTween.EaseType); + mappings[iTweenEvent.TweenType.AudioTo]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.AudioTo]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.AudioTo]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.AudioTo]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.AudioTo]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.AudioTo]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.AudioTo]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.AudioTo]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.AudioTo]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.AudioTo]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.AudioTo]["ignoretimescale"] = typeof(bool); + + // AUDIO UPDATE + mappings.Add(iTweenEvent.TweenType.AudioUpdate, new Dictionary()); + mappings[iTweenEvent.TweenType.AudioUpdate]["audiosource"] = typeof(AudioSource); + mappings[iTweenEvent.TweenType.AudioUpdate]["volume"] = typeof(float); + mappings[iTweenEvent.TweenType.AudioUpdate]["pitch"] = typeof(float); + mappings[iTweenEvent.TweenType.AudioUpdate]["time"] = typeof(float); + + // CAMERA FADE FROM + mappings.Add(iTweenEvent.TweenType.CameraFadeFrom, new Dictionary()); + mappings[iTweenEvent.TweenType.CameraFadeFrom]["amount"] = typeof(float); + mappings[iTweenEvent.TweenType.CameraFadeFrom]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.CameraFadeFrom]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.CameraFadeFrom]["easetype"] = typeof(iTween.EaseType); + mappings[iTweenEvent.TweenType.CameraFadeFrom]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.CameraFadeFrom]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.CameraFadeFrom]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.CameraFadeFrom]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.CameraFadeFrom]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.CameraFadeFrom]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.CameraFadeFrom]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.CameraFadeFrom]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.CameraFadeFrom]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.CameraFadeFrom]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.CameraFadeFrom]["ignoretimescale"] = typeof(bool); + + // CAMERA FADE TO + mappings.Add(iTweenEvent.TweenType.CameraFadeTo, new Dictionary()); + mappings[iTweenEvent.TweenType.CameraFadeTo]["amount"] = typeof(float); + mappings[iTweenEvent.TweenType.CameraFadeTo]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.CameraFadeTo]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.CameraFadeTo]["easetype"] = typeof(iTween.EaseType); + mappings[iTweenEvent.TweenType.CameraFadeTo]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.CameraFadeTo]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.CameraFadeTo]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.CameraFadeTo]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.CameraFadeTo]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.CameraFadeTo]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.CameraFadeTo]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.CameraFadeTo]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.CameraFadeTo]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.CameraFadeTo]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.CameraFadeTo]["ignoretimescale"] = typeof(bool); + + // COLOR FROM + mappings.Add(iTweenEvent.TweenType.ColorFrom, new Dictionary()); + mappings[iTweenEvent.TweenType.ColorFrom]["color"] = typeof(Color); + mappings[iTweenEvent.TweenType.ColorFrom]["r"] = typeof(float); + mappings[iTweenEvent.TweenType.ColorFrom]["g"] = typeof(float); + mappings[iTweenEvent.TweenType.ColorFrom]["b"] = typeof(float); + mappings[iTweenEvent.TweenType.ColorFrom]["a"] = typeof(float); + mappings[iTweenEvent.TweenType.ColorFrom]["namedcolorvalue"] = typeof(string); + mappings[iTweenEvent.TweenType.ColorFrom]["includechildren"] = typeof(bool); + mappings[iTweenEvent.TweenType.ColorFrom]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.ColorFrom]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.ColorFrom]["easetype"] = typeof(iTween.EaseType); + mappings[iTweenEvent.TweenType.ColorFrom]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.ColorFrom]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.ColorFrom]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ColorFrom]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ColorFrom]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.ColorFrom]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ColorFrom]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ColorFrom]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.ColorFrom]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ColorFrom]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ColorFrom]["ignoretimescale"] = typeof(bool); + + // COLOR TO + mappings.Add(iTweenEvent.TweenType.ColorTo, new Dictionary()); + mappings[iTweenEvent.TweenType.ColorTo]["color"] = typeof(Color); + mappings[iTweenEvent.TweenType.ColorTo]["r"] = typeof(float); + mappings[iTweenEvent.TweenType.ColorTo]["g"] = typeof(float); + mappings[iTweenEvent.TweenType.ColorTo]["b"] = typeof(float); + mappings[iTweenEvent.TweenType.ColorTo]["a"] = typeof(float); + mappings[iTweenEvent.TweenType.ColorTo]["namedcolorvalue"] = typeof(string); + mappings[iTweenEvent.TweenType.ColorTo]["includechildren"] = typeof(bool); + mappings[iTweenEvent.TweenType.ColorTo]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.ColorTo]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.ColorTo]["easetype"] = typeof(iTween.EaseType); + mappings[iTweenEvent.TweenType.ColorTo]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.ColorTo]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.ColorTo]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ColorTo]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ColorTo]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.ColorTo]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ColorTo]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ColorTo]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.ColorTo]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ColorTo]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ColorTo]["ignoretimescale"] = typeof(bool); + + // COLOR UPDATE + mappings.Add(iTweenEvent.TweenType.ColorUpdate, new Dictionary()); + mappings[iTweenEvent.TweenType.ColorUpdate]["color"] = typeof(Color); + mappings[iTweenEvent.TweenType.ColorUpdate]["r"] = typeof(float); + mappings[iTweenEvent.TweenType.ColorUpdate]["g"] = typeof(float); + mappings[iTweenEvent.TweenType.ColorUpdate]["b"] = typeof(float); + mappings[iTweenEvent.TweenType.ColorUpdate]["a"] = typeof(float); + mappings[iTweenEvent.TweenType.ColorUpdate]["namedcolorvalue"] = typeof(string); + mappings[iTweenEvent.TweenType.ColorUpdate]["includechildren"] = typeof(bool); + mappings[iTweenEvent.TweenType.ColorUpdate]["time"] = typeof(float); + + // FADE FROM + mappings.Add(iTweenEvent.TweenType.FadeFrom, new Dictionary()); + mappings[iTweenEvent.TweenType.FadeFrom]["alpha"] = typeof(float); + mappings[iTweenEvent.TweenType.FadeFrom]["amount"] = typeof(float); + mappings[iTweenEvent.TweenType.FadeFrom]["includechildren"] = typeof(bool); + mappings[iTweenEvent.TweenType.FadeFrom]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.FadeFrom]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.FadeFrom]["easetype"] = typeof(iTween.EaseType); + mappings[iTweenEvent.TweenType.FadeFrom]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.FadeFrom]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.FadeFrom]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.FadeFrom]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.FadeFrom]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.FadeFrom]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.FadeFrom]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.FadeFrom]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.FadeFrom]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.FadeFrom]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.FadeFrom]["ignoretimescale"] = typeof(bool); + + // FADE TO + mappings.Add(iTweenEvent.TweenType.FadeTo, new Dictionary()); + mappings[iTweenEvent.TweenType.FadeTo]["alpha"] = typeof(float); + mappings[iTweenEvent.TweenType.FadeTo]["amount"] = typeof(float); + mappings[iTweenEvent.TweenType.FadeTo]["includechildren"] = typeof(bool); + mappings[iTweenEvent.TweenType.FadeTo]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.FadeTo]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.FadeTo]["easetype"] = typeof(iTween.EaseType); + mappings[iTweenEvent.TweenType.FadeTo]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.FadeTo]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.FadeTo]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.FadeTo]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.FadeTo]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.FadeTo]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.FadeTo]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.FadeTo]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.FadeTo]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.FadeTo]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.FadeTo]["ignoretimescale"] = typeof(bool); + + // FADE UPDATE + mappings.Add(iTweenEvent.TweenType.FadeUpdate, new Dictionary()); + mappings[iTweenEvent.TweenType.FadeUpdate]["alpha"] = typeof(float); + mappings[iTweenEvent.TweenType.FadeUpdate]["includechildren"] = typeof(bool); + mappings[iTweenEvent.TweenType.FadeUpdate]["time"] = typeof(float); + + // LOOK FROM + mappings.Add(iTweenEvent.TweenType.LookFrom, new Dictionary()); + mappings[iTweenEvent.TweenType.LookFrom]["looktarget"] = typeof(Vector3OrTransform); + mappings[iTweenEvent.TweenType.LookFrom]["axis"] = typeof(string); + mappings[iTweenEvent.TweenType.LookFrom]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.LookFrom]["speed"] = typeof(float); + mappings[iTweenEvent.TweenType.LookFrom]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.LookFrom]["easetype"] = typeof(iTween.EaseType); + mappings[iTweenEvent.TweenType.LookFrom]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.LookFrom]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.LookFrom]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.LookFrom]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.LookFrom]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.LookFrom]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.LookFrom]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.LookFrom]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.LookFrom]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.LookFrom]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.LookFrom]["ignoretimescale"] = typeof(bool); + + // LOOK TO + mappings.Add(iTweenEvent.TweenType.LookTo, new Dictionary()); + mappings[iTweenEvent.TweenType.LookTo]["looktarget"] = typeof(Vector3OrTransform); + mappings[iTweenEvent.TweenType.LookTo]["axis"] = typeof(string); + mappings[iTweenEvent.TweenType.LookTo]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.LookTo]["speed"] = typeof(float); + mappings[iTweenEvent.TweenType.LookTo]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.LookTo]["easetype"] = typeof(iTween.EaseType); + mappings[iTweenEvent.TweenType.LookTo]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.LookTo]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.LookTo]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.LookTo]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.LookTo]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.LookTo]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.LookTo]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.LookTo]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.LookTo]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.LookTo]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.LookTo]["ignoretimescale"] = typeof(bool); + + // LOOK UPDATE + mappings.Add(iTweenEvent.TweenType.LookUpdate, new Dictionary()); + mappings[iTweenEvent.TweenType.LookUpdate]["looktarget"] = typeof(Vector3OrTransform); + mappings[iTweenEvent.TweenType.LookUpdate]["axis"] = typeof(string); + mappings[iTweenEvent.TweenType.LookUpdate]["time"] = typeof(float); + + // MOVE ADD + mappings.Add(iTweenEvent.TweenType.MoveAdd, new Dictionary()); + mappings[iTweenEvent.TweenType.MoveAdd]["amount"] = typeof(Vector3); + mappings[iTweenEvent.TweenType.MoveAdd]["x"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveAdd]["y"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveAdd]["z"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveAdd]["orienttopath"] = typeof(bool); + mappings[iTweenEvent.TweenType.MoveAdd]["looktarget"] = typeof(Vector3OrTransform); + mappings[iTweenEvent.TweenType.MoveAdd]["looktime"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveAdd]["axis"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveAdd]["space"] = typeof(Space); + mappings[iTweenEvent.TweenType.MoveAdd]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveAdd]["speed"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveAdd]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveAdd]["easetype"] = typeof(iTween.EaseType); + mappings[iTweenEvent.TweenType.MoveAdd]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.MoveAdd]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveAdd]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.MoveAdd]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveAdd]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveAdd]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.MoveAdd]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveAdd]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveAdd]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.MoveAdd]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveAdd]["ignoretimescale"] = typeof(bool); + + // MOVE BY + mappings.Add(iTweenEvent.TweenType.MoveBy, new Dictionary()); + mappings[iTweenEvent.TweenType.MoveBy]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveBy]["speed"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveBy]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveBy]["amount"] = typeof(Vector3); + mappings[iTweenEvent.TweenType.MoveBy]["x"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveBy]["y"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveBy]["z"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveBy]["orienttopath"] = typeof(bool); + mappings[iTweenEvent.TweenType.MoveBy]["looktarget"] = typeof(Vector3OrTransform); + mappings[iTweenEvent.TweenType.MoveBy]["looktime"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveBy]["axis"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveBy]["space"] = typeof(Space); + mappings[iTweenEvent.TweenType.MoveBy]["easetype"] = typeof(iTween.EaseType); + mappings[iTweenEvent.TweenType.MoveBy]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.MoveBy]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveBy]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.MoveBy]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveBy]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveBy]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.MoveBy]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveBy]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveBy]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.MoveBy]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveBy]["ignoretimescale"] = typeof(bool); + + // MOVE FROM + mappings.Add(iTweenEvent.TweenType.MoveFrom, new Dictionary()); + mappings[iTweenEvent.TweenType.MoveFrom]["position"] = typeof(Vector3OrTransform); + mappings[iTweenEvent.TweenType.MoveFrom]["path"] = typeof(Vector3OrTransformArray); + mappings[iTweenEvent.TweenType.MoveFrom]["movetopath"] = typeof(bool); + mappings[iTweenEvent.TweenType.MoveFrom]["x"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveFrom]["y"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveFrom]["z"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveFrom]["orienttopath"] = typeof(bool); + mappings[iTweenEvent.TweenType.MoveFrom]["looktarget"] = typeof(Vector3OrTransform); + mappings[iTweenEvent.TweenType.MoveFrom]["looktime"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveFrom]["lookahead"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveFrom]["axis"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveFrom]["islocal"] = typeof(bool); + mappings[iTweenEvent.TweenType.MoveFrom]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveFrom]["speed"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveFrom]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveFrom]["easetype"] = typeof(iTween.EaseType); + mappings[iTweenEvent.TweenType.MoveFrom]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.MoveFrom]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveFrom]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.MoveFrom]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveFrom]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveFrom]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.MoveFrom]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveFrom]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveFrom]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.MoveFrom]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveFrom]["ignoretimescale"] = typeof(bool); + + // MOVE TO + mappings.Add(iTweenEvent.TweenType.MoveTo, new Dictionary()); + mappings[iTweenEvent.TweenType.MoveTo]["position"] = typeof(Vector3OrTransform); + mappings[iTweenEvent.TweenType.MoveTo]["path"] = typeof(Vector3OrTransformArray); + mappings[iTweenEvent.TweenType.MoveTo]["movetopath"] = typeof(bool); + mappings[iTweenEvent.TweenType.MoveTo]["x"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveTo]["y"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveTo]["z"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveTo]["orienttopath"] = typeof(bool); + mappings[iTweenEvent.TweenType.MoveTo]["looktarget"] = typeof(Vector3OrTransform); + mappings[iTweenEvent.TweenType.MoveTo]["looktime"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveTo]["lookahead"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveTo]["axis"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveTo]["islocal"] = typeof(bool); + mappings[iTweenEvent.TweenType.MoveTo]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveTo]["speed"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveTo]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveTo]["easetype"] = typeof(iTween.EaseType); + mappings[iTweenEvent.TweenType.MoveTo]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.MoveTo]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveTo]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.MoveTo]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveTo]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveTo]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.MoveTo]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveTo]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveTo]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.MoveTo]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveTo]["ignoretimescale"] = typeof(bool); + + // MOVE UPDATE + mappings.Add(iTweenEvent.TweenType.MoveUpdate, new Dictionary()); + mappings[iTweenEvent.TweenType.MoveUpdate]["position"] = typeof(Vector3OrTransform); + mappings[iTweenEvent.TweenType.MoveUpdate]["x"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveUpdate]["y"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveUpdate]["z"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveUpdate]["orienttopath"] = typeof(bool); + mappings[iTweenEvent.TweenType.MoveUpdate]["looktarget"] = typeof(Vector3OrTransform); + mappings[iTweenEvent.TweenType.MoveUpdate]["looktime"] = typeof(float); + mappings[iTweenEvent.TweenType.MoveUpdate]["axis"] = typeof(string); + mappings[iTweenEvent.TweenType.MoveUpdate]["islocal"] = typeof(bool); + mappings[iTweenEvent.TweenType.MoveUpdate]["time"] = typeof(float); + + // PUNCH POSITION + mappings.Add(iTweenEvent.TweenType.PunchPosition, new Dictionary()); + mappings[iTweenEvent.TweenType.PunchPosition]["position"] = typeof(Vector3OrTransform); + mappings[iTweenEvent.TweenType.PunchPosition]["amount"] = typeof(Vector3); + mappings[iTweenEvent.TweenType.PunchPosition]["x"] = typeof(float); + mappings[iTweenEvent.TweenType.PunchPosition]["y"] = typeof(float); + mappings[iTweenEvent.TweenType.PunchPosition]["z"] = typeof(float); + mappings[iTweenEvent.TweenType.PunchPosition]["space"] = typeof(Space); + mappings[iTweenEvent.TweenType.PunchPosition]["looktarget"] = typeof(Vector3OrTransform); + mappings[iTweenEvent.TweenType.PunchPosition]["looktime"] = typeof(float); + mappings[iTweenEvent.TweenType.PunchPosition]["axis"] = typeof(string); + mappings[iTweenEvent.TweenType.PunchPosition]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.PunchPosition]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.PunchPosition]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.PunchPosition]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.PunchPosition]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.PunchPosition]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.PunchPosition]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.PunchPosition]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.PunchPosition]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.PunchPosition]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.PunchPosition]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.PunchPosition]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.PunchPosition]["ignoretimescale"] = typeof(bool); + + // PUNCH ROTATION + mappings.Add(iTweenEvent.TweenType.PunchRotation, new Dictionary()); + mappings[iTweenEvent.TweenType.PunchRotation]["position"] = typeof(Vector3OrTransform); + mappings[iTweenEvent.TweenType.PunchRotation]["amount"] = typeof(Vector3); + mappings[iTweenEvent.TweenType.PunchRotation]["x"] = typeof(float); + mappings[iTweenEvent.TweenType.PunchRotation]["y"] = typeof(float); + mappings[iTweenEvent.TweenType.PunchRotation]["z"] = typeof(float); + mappings[iTweenEvent.TweenType.PunchRotation]["space"] = typeof(Space); + mappings[iTweenEvent.TweenType.PunchRotation]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.PunchRotation]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.PunchRotation]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.PunchRotation]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.PunchRotation]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.PunchRotation]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.PunchRotation]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.PunchRotation]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.PunchRotation]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.PunchRotation]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.PunchRotation]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.PunchRotation]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.PunchRotation]["ignoretimescale"] = typeof(bool); + + // PUNCH SCALE + mappings.Add(iTweenEvent.TweenType.PunchScale, new Dictionary()); + mappings[iTweenEvent.TweenType.PunchScale]["position"] = typeof(Vector3OrTransform); + mappings[iTweenEvent.TweenType.PunchScale]["amount"] = typeof(Vector3); + mappings[iTweenEvent.TweenType.PunchScale]["x"] = typeof(float); + mappings[iTweenEvent.TweenType.PunchScale]["y"] = typeof(float); + mappings[iTweenEvent.TweenType.PunchScale]["z"] = typeof(float); + mappings[iTweenEvent.TweenType.PunchScale]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.PunchScale]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.PunchScale]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.PunchScale]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.PunchScale]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.PunchScale]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.PunchScale]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.PunchScale]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.PunchScale]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.PunchScale]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.PunchScale]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.PunchScale]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.PunchScale]["ignoretimescale"] = typeof(bool); + + // ROTATE ADD + mappings.Add(iTweenEvent.TweenType.RotateAdd, new Dictionary()); + mappings[iTweenEvent.TweenType.RotateAdd]["amount"] = typeof(Vector3); + mappings[iTweenEvent.TweenType.RotateAdd]["x"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateAdd]["y"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateAdd]["z"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateAdd]["space"] = typeof(Space); + mappings[iTweenEvent.TweenType.RotateAdd]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateAdd]["speed"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateAdd]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateAdd]["easetype"] = typeof(iTween.EaseType); + mappings[iTweenEvent.TweenType.RotateAdd]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.RotateAdd]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateAdd]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.RotateAdd]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateAdd]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateAdd]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.RotateAdd]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateAdd]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateAdd]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.RotateAdd]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateAdd]["ignoretimescale"] = typeof(bool); + + // ROTATE BY + mappings.Add(iTweenEvent.TweenType.RotateBy, new Dictionary()); + mappings[iTweenEvent.TweenType.RotateBy]["amount"] = typeof(Vector3); + mappings[iTweenEvent.TweenType.RotateBy]["x"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateBy]["y"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateBy]["z"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateBy]["space"] = typeof(Space); + mappings[iTweenEvent.TweenType.RotateBy]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateBy]["speed"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateBy]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateBy]["easetype"] = typeof(iTween.EaseType); + mappings[iTweenEvent.TweenType.RotateBy]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.RotateBy]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateBy]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.RotateBy]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateBy]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateBy]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.RotateBy]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateBy]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateBy]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.RotateBy]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateBy]["ignoretimescale"] = typeof(bool); + + // ROTATE FROM + mappings.Add(iTweenEvent.TweenType.RotateFrom, new Dictionary()); + mappings[iTweenEvent.TweenType.RotateFrom]["rotation"] = typeof(Vector3OrTransform); + mappings[iTweenEvent.TweenType.RotateFrom]["x"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateFrom]["y"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateFrom]["z"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateFrom]["islocal"] = typeof(bool); + mappings[iTweenEvent.TweenType.RotateFrom]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateFrom]["speed"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateFrom]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateFrom]["easetype"] = typeof(iTween.EaseType); + mappings[iTweenEvent.TweenType.RotateFrom]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.RotateFrom]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateFrom]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.RotateFrom]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateFrom]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateFrom]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.RotateFrom]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateFrom]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateFrom]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.RotateFrom]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateFrom]["ignoretimescale"] = typeof(bool); + + // ROTATE TO + mappings.Add(iTweenEvent.TweenType.RotateTo, new Dictionary()); + mappings[iTweenEvent.TweenType.RotateTo]["rotation"] = typeof(Vector3OrTransform); + mappings[iTweenEvent.TweenType.RotateTo]["x"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateTo]["y"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateTo]["z"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateTo]["islocal"] = typeof(bool); + mappings[iTweenEvent.TweenType.RotateTo]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateTo]["speed"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateTo]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateTo]["easetype"] = typeof(iTween.EaseType); + mappings[iTweenEvent.TweenType.RotateTo]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.RotateTo]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateTo]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.RotateTo]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateTo]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateTo]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.RotateTo]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateTo]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateTo]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.RotateTo]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.RotateTo]["ignoretimescale"] = typeof(bool); + + // ROTATE UPDATE + mappings.Add(iTweenEvent.TweenType.RotateUpdate, new Dictionary()); + mappings[iTweenEvent.TweenType.RotateUpdate]["rotation"] = typeof(Vector3OrTransform); + mappings[iTweenEvent.TweenType.RotateUpdate]["x"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateUpdate]["y"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateUpdate]["z"] = typeof(float); + mappings[iTweenEvent.TweenType.RotateUpdate]["islocal"] = typeof(bool); + mappings[iTweenEvent.TweenType.RotateUpdate]["time"] = typeof(float); + + // SCALE ADD + mappings.Add(iTweenEvent.TweenType.ScaleAdd, new Dictionary()); + mappings[iTweenEvent.TweenType.ScaleAdd]["amount"] = typeof(Vector3); + mappings[iTweenEvent.TweenType.ScaleAdd]["x"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleAdd]["y"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleAdd]["z"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleAdd]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleAdd]["speed"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleAdd]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleAdd]["easetype"] = typeof(iTween.EaseType); + mappings[iTweenEvent.TweenType.ScaleAdd]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.ScaleAdd]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleAdd]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ScaleAdd]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleAdd]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleAdd]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ScaleAdd]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleAdd]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleAdd]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ScaleAdd]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleAdd]["ignoretimescale"] = typeof(bool); + + // SCALE BY + mappings.Add(iTweenEvent.TweenType.ScaleBy, new Dictionary()); + mappings[iTweenEvent.TweenType.ScaleBy]["amount"] = typeof(Vector3); + mappings[iTweenEvent.TweenType.ScaleBy]["x"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleBy]["y"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleBy]["z"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleBy]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleBy]["speed"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleBy]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleBy]["easetype"] = typeof(iTween.EaseType); + mappings[iTweenEvent.TweenType.ScaleBy]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.ScaleBy]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleBy]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ScaleBy]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleBy]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleBy]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ScaleBy]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleBy]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleBy]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ScaleBy]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleBy]["ignoretimescale"] = typeof(bool); + + // SCALE FROM + mappings.Add(iTweenEvent.TweenType.ScaleFrom, new Dictionary()); + mappings[iTweenEvent.TweenType.ScaleFrom]["scale"] = typeof(Vector3OrTransform); + mappings[iTweenEvent.TweenType.ScaleFrom]["x"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleFrom]["y"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleFrom]["z"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleFrom]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleFrom]["speed"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleFrom]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleFrom]["easetype"] = typeof(iTween.EaseType); + mappings[iTweenEvent.TweenType.ScaleFrom]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.ScaleFrom]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleFrom]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ScaleFrom]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleFrom]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleFrom]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ScaleFrom]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleFrom]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleFrom]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ScaleFrom]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleFrom]["ignoretimescale"] = typeof(bool); + + // SCALE TO + mappings.Add(iTweenEvent.TweenType.ScaleTo, new Dictionary()); + mappings[iTweenEvent.TweenType.ScaleTo]["scale"] = typeof(Vector3OrTransform); + mappings[iTweenEvent.TweenType.ScaleTo]["x"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleTo]["y"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleTo]["z"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleTo]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleTo]["speed"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleTo]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleTo]["easetype"] = typeof(iTween.EaseType); + mappings[iTweenEvent.TweenType.ScaleTo]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.ScaleTo]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleTo]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ScaleTo]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleTo]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleTo]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ScaleTo]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleTo]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleTo]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ScaleTo]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ScaleTo]["ignoretimescale"] = typeof(bool); + + // SCALE UPDATE + mappings.Add(iTweenEvent.TweenType.ScaleUpdate, new Dictionary()); + mappings[iTweenEvent.TweenType.ScaleUpdate]["scale"] = typeof(Vector3OrTransform); + mappings[iTweenEvent.TweenType.ScaleUpdate]["x"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleUpdate]["y"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleUpdate]["z"] = typeof(float); + mappings[iTweenEvent.TweenType.ScaleUpdate]["time"] = typeof(float); + + // SHAKE POSITION + mappings.Add(iTweenEvent.TweenType.ShakePosition, new Dictionary()); + mappings[iTweenEvent.TweenType.ShakePosition]["amount"] = typeof(Vector3); + mappings[iTweenEvent.TweenType.ShakePosition]["x"] = typeof(float); + mappings[iTweenEvent.TweenType.ShakePosition]["y"] = typeof(float); + mappings[iTweenEvent.TweenType.ShakePosition]["z"] = typeof(float); + mappings[iTweenEvent.TweenType.ShakePosition]["space"] = typeof(Space); + mappings[iTweenEvent.TweenType.ShakePosition]["orienttopath"] = typeof(bool); + mappings[iTweenEvent.TweenType.ShakePosition]["looktarget"] = typeof(Vector3OrTransform); + mappings[iTweenEvent.TweenType.ShakePosition]["looktime"] = typeof(float); + mappings[iTweenEvent.TweenType.ShakePosition]["axis"] = typeof(string); + mappings[iTweenEvent.TweenType.ShakePosition]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.ShakePosition]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.ShakePosition]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.ShakePosition]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.ShakePosition]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ShakePosition]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ShakePosition]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.ShakePosition]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ShakePosition]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ShakePosition]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.ShakePosition]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ShakePosition]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ShakePosition]["ignoretimescale"] = typeof(bool); + + // SHAKE ROTATION + mappings.Add(iTweenEvent.TweenType.ShakeRotation, new Dictionary()); + mappings[iTweenEvent.TweenType.ShakeRotation]["amount"] = typeof(Vector3); + mappings[iTweenEvent.TweenType.ShakeRotation]["x"] = typeof(float); + mappings[iTweenEvent.TweenType.ShakeRotation]["y"] = typeof(float); + mappings[iTweenEvent.TweenType.ShakeRotation]["z"] = typeof(float); + mappings[iTweenEvent.TweenType.ShakeRotation]["space"] = typeof(Space); + mappings[iTweenEvent.TweenType.ShakeRotation]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.ShakeRotation]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.ShakeRotation]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.ShakeRotation]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.ShakeRotation]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ShakeRotation]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ShakeRotation]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.ShakeRotation]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ShakeRotation]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ShakeRotation]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.ShakeRotation]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ShakeRotation]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ShakeRotation]["ignoretimescale"] = typeof(bool); + + // SHAKE SCALE + mappings.Add(iTweenEvent.TweenType.ShakeScale, new Dictionary()); + mappings[iTweenEvent.TweenType.ShakeScale]["amount"] = typeof(Vector3); + mappings[iTweenEvent.TweenType.ShakeScale]["x"] = typeof(float); + mappings[iTweenEvent.TweenType.ShakeScale]["y"] = typeof(float); + mappings[iTweenEvent.TweenType.ShakeScale]["z"] = typeof(float); + mappings[iTweenEvent.TweenType.ShakeScale]["time"] = typeof(float); + mappings[iTweenEvent.TweenType.ShakeScale]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.ShakeScale]["looptype"] = typeof(iTween.LoopType); + mappings[iTweenEvent.TweenType.ShakeScale]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.ShakeScale]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ShakeScale]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ShakeScale]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.ShakeScale]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ShakeScale]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ShakeScale]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.ShakeScale]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.ShakeScale]["oncompleteparams"] = typeof(string); + mappings[iTweenEvent.TweenType.ShakeScale]["ignoretimescale"] = typeof(bool); + + // STAB + mappings.Add(iTweenEvent.TweenType.Stab, new Dictionary()); + mappings[iTweenEvent.TweenType.Stab]["audioclip"] = typeof(AudioClip); + mappings[iTweenEvent.TweenType.Stab]["audiosource"] = typeof(AudioSource); + mappings[iTweenEvent.TweenType.Stab]["volume"] = typeof(float); + mappings[iTweenEvent.TweenType.Stab]["pitch"] = typeof(float); + mappings[iTweenEvent.TweenType.Stab]["delay"] = typeof(float); + mappings[iTweenEvent.TweenType.Stab]["onstart"] = typeof(string); + mappings[iTweenEvent.TweenType.Stab]["onstarttarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.Stab]["onstartparams"] = typeof(string); + mappings[iTweenEvent.TweenType.Stab]["onupdate"] = typeof(string); + mappings[iTweenEvent.TweenType.Stab]["onupdatetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.Stab]["onupdateparams"] = typeof(string); + mappings[iTweenEvent.TweenType.Stab]["oncomplete"] = typeof(string); + mappings[iTweenEvent.TweenType.Stab]["oncompletetarget"] = typeof(GameObject); + mappings[iTweenEvent.TweenType.Stab]["oncompleteparams"] = typeof(string); + + + } +} \ No newline at end of file diff --git a/Roguelike/Assets/iTweenEditor/Helper Classes/EventParamMappings.cs.meta b/Roguelike/Assets/iTweenEditor/Helper Classes/EventParamMappings.cs.meta new file mode 100644 index 00000000..3149338b --- /dev/null +++ b/Roguelike/Assets/iTweenEditor/Helper Classes/EventParamMappings.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 3d2e08407829a435b84ff5ac7f8b3aef +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Roguelike/Assets/iTweenEditor/Helper Classes/Vector3OrTransform.cs b/Roguelike/Assets/iTweenEditor/Helper Classes/Vector3OrTransform.cs new file mode 100644 index 00000000..aec12b2a --- /dev/null +++ b/Roguelike/Assets/iTweenEditor/Helper Classes/Vector3OrTransform.cs @@ -0,0 +1,31 @@ +// Copyright (c) 2009 David Koontz +// Please direct any bugs/comments/suggestions to david@koontzfamily.org +// +// 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. + +using UnityEngine; + +public class Vector3OrTransform { + public static readonly string[] choices = {"Vector3", "Transform"}; + public static readonly int vector3Selected = 0; + public static readonly int transformSelected = 1; + public int selected = 0; + public Vector3 vector; + public Transform transform; +} \ No newline at end of file diff --git a/Roguelike/Assets/iTweenEditor/Helper Classes/Vector3OrTransform.cs.meta b/Roguelike/Assets/iTweenEditor/Helper Classes/Vector3OrTransform.cs.meta new file mode 100644 index 00000000..cd0a7172 --- /dev/null +++ b/Roguelike/Assets/iTweenEditor/Helper Classes/Vector3OrTransform.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 8a32d65a6a0c443f79048586c9648b05 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Roguelike/Assets/iTweenEditor/Helper Classes/Vector3OrTransformArray.cs b/Roguelike/Assets/iTweenEditor/Helper Classes/Vector3OrTransformArray.cs new file mode 100644 index 00000000..bea352ae --- /dev/null +++ b/Roguelike/Assets/iTweenEditor/Helper Classes/Vector3OrTransformArray.cs @@ -0,0 +1,34 @@ +// Copyright (c) 2009 David Koontz +// Please direct any bugs/comments/suggestions to david@koontzfamily.org +// +// 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. + +using UnityEngine; + +public class Vector3OrTransformArray { + public static readonly string[] choices = {"Vector3", "Transform", "Path"}; + public static readonly int vector3Selected = 0; + public static readonly int transformSelected = 1; + public static readonly int iTweenPathSelected = 2; + + public int selected = 0; + public Vector3[] vectorArray; + public Transform[] transformArray; + public string pathName; +} \ No newline at end of file diff --git a/Roguelike/Assets/iTweenEditor/Helper Classes/Vector3OrTransformArray.cs.meta b/Roguelike/Assets/iTweenEditor/Helper Classes/Vector3OrTransformArray.cs.meta new file mode 100644 index 00000000..bb191faa --- /dev/null +++ b/Roguelike/Assets/iTweenEditor/Helper Classes/Vector3OrTransformArray.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 469ffe30a4f3a43d99d202b74660b1e5 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Roguelike/Assets/iTweenEditor/README.txt b/Roguelike/Assets/iTweenEditor/README.txt new file mode 100644 index 00000000..5e7a58d5 --- /dev/null +++ b/Roguelike/Assets/iTweenEditor/README.txt @@ -0,0 +1,47 @@ +iTween Visual Editor version 0.6.1 + +After installation, if you have a Javascript based project it is highly recommended that you run the "Component/iTween/Prepare Visual Editor for Javascript Usage" command. This will copy files into your Plugins directory which is necessary for the visual editor events to be called from Javascript. C# based projects require no further configuration. + +Release History =============== + +0.6.1 ==== + +Added Stop method to iTweenEvent. Improved display of boolean values. + +0.6.0 ==== + +Fixed warnings resulting from API changes in Unity 3.4. Fixed error where bool fields could pass the wrong value. Updated bundled iTween version to 2.0.45.1. Made initial delay field always show, even when 'Play Automatically' was not selected. + +0.5.2 ==== + +Fixed a problem with Vector3 or Transform paths introduced when implemented path support. + +0.5.1 ==== + +Added iTween menu item to move files into the correct position for Javascript based projects. +Fixed bug with delay of 0 seconds still pausing slightly before beginning tween. +Changed visual path editor selection list to use global listing instead of just paths attached to the same GameObject. + +0.5 ====== + +Added integration for the iTween Path Editor. +This work was based on code contributed by Gabriel Gheorghiu (gabison@gmail.com). + +0.4 ====== + +Minor bug fix release. iTweenEvents now show an icon in the scene view. + +0.3 ====== + +Major bug fixed where iTweenEvent settings would be reset. +Name field was added to the iTweenEvent so you can distinguish them. +Added static method on the iTweenEvent class named GetEvent. + +0.2 ====== + +Added support for the path parameter of MoveTo and MoveFrom. +Callbacks changed to take a single string parameter. + +0.1 ====== + +Initial release. \ No newline at end of file diff --git a/Roguelike/Assets/iTweenEditor/README.txt.meta b/Roguelike/Assets/iTweenEditor/README.txt.meta new file mode 100644 index 00000000..77127fca --- /dev/null +++ b/Roguelike/Assets/iTweenEditor/README.txt.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 17799b66b509c40a78360036fcfbc8bc +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Roguelike/Assets/iTweenEditor/iTween.cs b/Roguelike/Assets/iTweenEditor/iTween.cs new file mode 100644 index 00000000..8e2edb57 --- /dev/null +++ b/Roguelike/Assets/iTweenEditor/iTween.cs @@ -0,0 +1,7489 @@ +// Copyright (c) 2011 Bob Berkebile (pixelplacment) +// Please direct any bugs/comments/suggestions to http://pixelplacement.com +// +// 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. + +/* +TERMS OF USE - EASING EQUATIONS +Open source under the BSD License. +Copyright (c)2001 Robert Penner +All rights reserved. +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +Neither the name of the author nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#region Namespaces +using System; +using System.Collections; +using System.Reflection; +using UnityEngine; +#endregion + +/// +/// Version: 2.0.45 +/// Author: Bob Berkebile (http://pixelplacement.com) +/// Support: http://itween.pixelplacement.com +/// +public class iTween : MonoBehaviour{ + + #region Variables + + //repository of all living iTweens: + public static ArrayList tweens = new ArrayList(); + + //camera fade object: + private static GameObject cameraFade; + + //status members (made public for visual troubleshooting in the inspector): + public string id, type, method; + public iTween.EaseType easeType; + public float time, delay; + public LoopType loopType; + public bool isRunning,isPaused; + /* GFX47 MOD START */ + public string _name; + /* GFX47 MOD END */ + + //private members: + private float runningTime, percentage; + private float delayStarted; //probably not neccesary that this be protected but it shuts Unity's compiler up about this being "never used" + private bool kinematic, isLocal, loop, reverse, wasPaused, physics; + private Hashtable tweenArguments; + private Space space; + private delegate float EasingFunction(float start, float end, float value); + private delegate void ApplyTween(); + private EasingFunction ease; + private ApplyTween apply; + private AudioSource audioSource; + private Vector3[] vector3s; + private Vector2[] vector2s; + private Color[,] colors; + private float[] floats; + private Rect[] rects; + private CRSpline path; + private Vector3 preUpdate; + private Vector3 postUpdate; + private NamedValueColor namedcolorvalue; + + private float lastRealTime; // Added by PressPlay + private bool useRealTime; // Added by PressPlay + + /// + /// The type of easing to use based on Robert Penner's open source easing equations (http://www.robertpenner.com/easing_terms_of_use.html). + /// + public enum EaseType{ + easeInQuad, + easeOutQuad, + easeInOutQuad, + easeInCubic, + easeOutCubic, + easeInOutCubic, + easeInQuart, + easeOutQuart, + easeInOutQuart, + easeInQuint, + easeOutQuint, + easeInOutQuint, + easeInSine, + easeOutSine, + easeInOutSine, + easeInExpo, + easeOutExpo, + easeInOutExpo, + easeInCirc, + easeOutCirc, + easeInOutCirc, + linear, + spring, + /* GFX47 MOD START */ + //bounce, + easeInBounce, + easeOutBounce, + easeInOutBounce, + /* GFX47 MOD END */ + easeInBack, + easeOutBack, + easeInOutBack, + /* GFX47 MOD START */ + //elastic, + easeInElastic, + easeOutElastic, + easeInOutElastic, + /* GFX47 MOD END */ + punch + } + + /// + /// The type of loop (if any) to use. + /// + public enum LoopType{ + /// + /// Do not loop. + /// + none, + /// + /// Rewind and replay. + /// + loop, + /// + /// Ping pong the animation back and forth. + /// + pingPong + } + + /// + /// Many shaders use more than one color. Use can have iTween's Color methods operate on them by name. + /// + public enum NamedValueColor{ + /// + /// The main color of a material. Used by default and not required for Color methods to work in iTween. + /// + _Color, + /// + /// The specular color of a material (used in specular/glossy/vertexlit shaders). + /// + _SpecColor, + /// + /// The emissive color of a material (used in vertexlit shaders). + /// + _Emission, + /// + /// The reflection color of the material (used in reflective shaders). + /// + _ReflectColor + } + + #endregion + + #region Defaults + + /// + /// A collection of baseline presets that iTween needs and utilizes if certain parameters are not provided. + /// + public static class Defaults{ + //general defaults: + public static float time = 1f; + public static float delay = 0f; + public static NamedValueColor namedColorValue = NamedValueColor._Color; + public static LoopType loopType = LoopType.none; + public static EaseType easeType = iTween.EaseType.easeOutExpo; + public static float lookSpeed = 3f; + public static bool isLocal = false; + public static Space space = Space.Self; + public static bool orientToPath = false; + public static Color color = Color.white; + //update defaults: + public static float updateTimePercentage = .05f; + public static float updateTime = 1f*updateTimePercentage; + //cameraFade defaults: + public static int cameraFadeDepth = 999999; + //path look ahead amount: + public static float lookAhead = .05f; + public static bool useRealTime = false; // Added by PressPlay + //look direction: + public static Vector3 up = Vector3.up; + } + + #endregion + + #region #1 Static Registers + + /// + /// Sets up a GameObject to avoid hiccups when an initial iTween is added. It's advisable to run this on every object you intend to run iTween on in its Start or Awake. + /// + /// + /// A to be the target to be initialized for iTween. + /// + public static void Init(GameObject target){ + MoveBy(target,Vector3.zero,0); + } + + /// + /// Instantly changes the amount(transparency) of a camera fade and then returns it back over time with MINIMUM customization options. + /// + /// + /// A or for how transparent the Texture2D that the camera fade uses is. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void CameraFadeFrom(float amount, float time){ + if(cameraFade){ + CameraFadeFrom(Hash("amount",amount,"time",time)); + }else{ + Debug.LogError("iTween Error: You must first add a camera fade object with CameraFadeAdd() before atttempting to use camera fading."); + } + } + + /// + /// Instantly changes the amount(transparency) of a camera fade and then returns it back over time with FULL customization options. + /// + /// + /// A or for how transparent the Texture2D that the camera fade uses is. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void CameraFadeFrom(Hashtable args){ + //establish iTween: + if(cameraFade){ + ColorFrom(cameraFade,args); + }else{ + Debug.LogError("iTween Error: You must first add a camera fade object with CameraFadeAdd() before atttempting to use camera fading."); + } + } + + /// + /// Changes the amount(transparency) of a camera fade over time with MINIMUM customization options. + /// + /// + /// A or for how transparent the Texture2D that the camera fade uses is. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void CameraFadeTo(float amount, float time){ + if(cameraFade){ + CameraFadeTo(Hash("amount",amount,"time",time)); + }else{ + Debug.LogError("iTween Error: You must first add a camera fade object with CameraFadeAdd() before atttempting to use camera fading."); + } + } + + /// + /// Changes the amount(transparency) of a camera fade over time with FULL customization options. + /// + /// + /// A or for how transparent the Texture2D that the camera fade uses is. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void CameraFadeTo(Hashtable args){ + /* + CameraFadeAdd(Defaults.cameraFadeDepth); + + //rescale cameraFade just in case screen size has changed to ensure it takes up the full screen: + cameraFade.guiTexture.pixelInset=new Rect(0,0,Screen.width,Screen.height); + */ + + if(cameraFade){ + //establish iTween: + ColorTo(cameraFade,args); + }else{ + Debug.LogError("iTween Error: You must first add a camera fade object with CameraFadeAdd() before atttempting to use camera fading."); + } + } + + /// + /// Returns a value to an 'oncallback' method interpolated between the supplied 'from' and 'to' values for application as desired. Requires an 'onupdate' callback that accepts the same type as the supplied 'from' and 'to' properties. + /// + /// + /// A or or or or or for the starting value. + /// + /// + /// A or or or or or for the ending value. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or can be used instead of time to allow animation based on speed (only works with Vector2, Vector3, and Floats) + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void ValueTo(GameObject target, Hashtable args){ + //clean args: + args = iTween.CleanArgs(args); + + if (!args.Contains("onupdate") || !args.Contains("from") || !args.Contains("to")) { + Debug.LogError("iTween Error: ValueTo() requires an 'onupdate' callback function and a 'from' and 'to' property. The supplied 'onupdate' callback must accept a single argument that is the same type as the supplied 'from' and 'to' properties!"); + return; + }else{ + //establish iTween: + args["type"]="value"; + + if (args["from"].GetType() == typeof(Vector2)) { + args["method"]="vector2"; + }else if (args["from"].GetType() == typeof(Vector3)) { + args["method"]="vector3"; + }else if (args["from"].GetType() == typeof(Rect)) { + args["method"]="rect"; + }else if (args["from"].GetType() == typeof(Single)) { + args["method"]="float"; + }else if (args["from"].GetType() == typeof(Color)) { + args["method"]="color"; + }else{ + Debug.LogError("iTween Error: ValueTo() only works with interpolating Vector3s, Vector2s, floats, ints, Rects and Colors!"); + return; + } + + //set a default easeType of linear if none is supplied since eased color interpolation is nearly unrecognizable: + if (!args.Contains("easetype")) { + args.Add("easetype",EaseType.linear); + } + + Launch(target,args); + } + } + + /// + /// Changes a GameObject's alpha value instantly then returns it to the provided alpha over time with MINIMUM customization options. If a GUIText or GUITexture component is attached, it will become the target of the animation. Identical to using ColorFrom and using the "a" parameter. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the final alpha value of the animation. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void FadeFrom(GameObject target, float alpha, float time){ + FadeFrom(target,Hash("alpha",alpha,"time",time)); + } + + /// + /// Changes a GameObject's alpha value instantly then returns it to the provided alpha over time with FULL customization options. If a GUIText or GUITexture component is attached, it will become the target of the animation. Identical to using ColorFrom and using the "a" parameter. + /// + /// + /// A or for the initial alpha value of the animation. + /// + /// + /// A or for the initial alpha value of the animation. + /// + /// + /// A for whether or not to include children of this GameObject. True by default. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void FadeFrom(GameObject target, Hashtable args){ + ColorFrom(target,args); + } + + /// + /// Changes a GameObject's alpha value over time with MINIMUM customization options. If a GUIText or GUITexture component is attached, it will become the target of the animation. Identical to using ColorTo and using the "a" parameter. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the final alpha value of the animation. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void FadeTo(GameObject target, float alpha, float time){ + FadeTo(target,Hash("alpha",alpha,"time",time)); + } + + /// + /// Changes a GameObject's alpha value over time with FULL customization options. If a GUIText or GUITexture component is attached, it will become the target of the animation. Identical to using ColorTo and using the "a" parameter. + /// + /// + /// A or for the final alpha value of the animation. + /// + /// + /// A or for the final alpha value of the animation. + /// + /// + /// A for whether or not to include children of this GameObject. True by default. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void FadeTo(GameObject target, Hashtable args){ + ColorTo(target,args); + } + + /// + /// Changes a GameObject's color values instantly then returns them to the provided properties over time with MINIMUM customization options. If a GUIText or GUITexture component is attached, it will become the target of the animation. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A to change the GameObject's color to. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void ColorFrom(GameObject target, Color color, float time){ + ColorFrom(target,Hash("color",color,"time",time)); + } + + /// + /// Changes a GameObject's color values instantly then returns them to the provided properties over time with FULL customization options. If a GUIText or GUITexture component is attached, it will become the target of the animation. + /// + /// + /// A to change the GameObject's color to. + /// + /// + /// A or for the individual setting of the color red. + /// + /// + /// A or for the individual setting of the color green. + /// + /// + /// A or for the individual setting of the color green. + /// + /// + /// A or for the individual setting of the alpha. + /// + /// + /// A or for the individual setting of the alpha. + /// + /// + /// A for whether or not to include children of this GameObject. True by default. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void ColorFrom(GameObject target, Hashtable args){ + Color fromColor = new Color(); + Color tempColor = new Color(); + + //clean args: + args = iTween.CleanArgs(args); + + //handle children: + if(!args.Contains("includechildren") || (bool)args["includechildren"]){ + foreach(Transform child in target.transform){ + Hashtable argsCopy = (Hashtable)args.Clone(); + argsCopy["ischild"]=true; + ColorFrom(child.gameObject,argsCopy); + } + } + + //set a default easeType of linear if none is supplied since eased color interpolation is nearly unrecognizable: + if (!args.Contains("easetype")) { + args.Add("easetype",EaseType.linear); + } + + //set tempColor and base fromColor: + if(target.GetComponent(typeof(GUITexture))){ + tempColor=fromColor=target.GetComponent().color; + }else if(target.GetComponent(typeof(GUIText))){ + tempColor=fromColor=target.GetComponent().material.color; + }else if(target.GetComponent()){ + tempColor=fromColor=target.GetComponent().material.color; + }else if(target.GetComponent()){ + tempColor=fromColor=target.GetComponent().color; + } + + //set augmented fromColor: + if(args.Contains("color")){ + fromColor=(Color)args["color"]; + }else{ + if (args.Contains("r")) { + fromColor.r=(float)args["r"]; + } + if (args.Contains("g")) { + fromColor.g=(float)args["g"]; + } + if (args.Contains("b")) { + fromColor.b=(float)args["b"]; + } + if (args.Contains("a")) { + fromColor.a=(float)args["a"]; + } + } + + //alpha or amount? + if(args.Contains("amount")){ + fromColor.a=(float)args["amount"]; + args.Remove("amount"); + }else if(args.Contains("alpha")){ + fromColor.a=(float)args["alpha"]; + args.Remove("alpha"); + } + + //apply fromColor: + if(target.GetComponent(typeof(GUITexture))){ + target.GetComponent().color=fromColor; + }else if(target.GetComponent(typeof(GUIText))){ + target.GetComponent().material.color=fromColor; + }else if(target.GetComponent()){ + target.GetComponent().material.color=fromColor; + }else if(target.GetComponent()){ + target.GetComponent().color=fromColor; + } + + //set new color arg: + args["color"]=tempColor; + + //establish iTween: + args["type"]="color"; + args["method"]="to"; + Launch(target,args); + } + + /// + /// Changes a GameObject's color values over time with MINIMUM customization options. If a GUIText or GUITexture component is attached, they will become the target of the animation. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A to change the GameObject's color to. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void ColorTo(GameObject target, Color color, float time){ + ColorTo(target,Hash("color",color,"time",time)); + } + + /// + /// Changes a GameObject's color values over time with FULL customization options. If a GUIText or GUITexture component is attached, they will become the target of the animation. + /// + /// + /// A to change the GameObject's color to. + /// + /// + /// A or for the individual setting of the color red. + /// + /// + /// A or for the individual setting of the color green. + /// + /// + /// A or for the individual setting of the color green. + /// + /// + /// A or for the individual setting of the alpha. + /// + /// + /// A or for the individual setting of the alpha. + /// + /// + /// A for whether or not to include children of this GameObject. True by default. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void ColorTo(GameObject target, Hashtable args){ + //clean args: + args = iTween.CleanArgs(args); + + //handle children: + if(!args.Contains("includechildren") || (bool)args["includechildren"]){ + foreach(Transform child in target.transform){ + Hashtable argsCopy = (Hashtable)args.Clone(); + argsCopy["ischild"]=true; + ColorTo(child.gameObject,argsCopy); + } + } + + //set a default easeType of linear if none is supplied since eased color interpolation is nearly unrecognizable: + if (!args.Contains("easetype")) { + args.Add("easetype",EaseType.linear); + } + + //establish iTween: + args["type"]="color"; + args["method"]="to"; + Launch(target,args); + } + + /// + /// Instantly changes an AudioSource's volume and pitch then returns it to it's starting volume and pitch over time with MINIMUM customization options. Default AudioSource attached to GameObject will be used (if one exists) if not supplied. + /// + /// + /// A to be the target of the animation which holds the AudioSource to be changed. + /// + /// for the target level of volume. + /// A + /// + /// for the target pitch. + /// A + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void AudioFrom(GameObject target, float volume, float pitch, float time){ + AudioFrom(target,Hash("volume",volume,"pitch",pitch,"time",time)); + } + + /// + /// Instantly changes an AudioSource's volume and pitch then returns it to it's starting volume and pitch over time with FULL customization options. Default AudioSource attached to GameObject will be used (if one exists) if not supplied. + /// + /// + /// A for which AudioSource to use. + /// + /// + /// A or for the target level of volume. + /// + /// + /// A or for the target pitch. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void AudioFrom(GameObject target, Hashtable args){ + Vector2 tempAudioProperties; + Vector2 fromAudioProperties; + AudioSource tempAudioSource; + + //clean args: + args = iTween.CleanArgs(args); + + //set tempAudioSource: + if(args.Contains("audiosource")){ + tempAudioSource=(AudioSource)args["audiosource"]; + }else{ + if(target.GetComponent(typeof(AudioSource))){ + tempAudioSource=target.GetComponent(); + }else{ + //throw error if no AudioSource is available: + Debug.LogError("iTween Error: AudioFrom requires an AudioSource."); + return; + } + } + + //set tempAudioProperties: + tempAudioProperties.x=fromAudioProperties.x=tempAudioSource.volume; + tempAudioProperties.y=fromAudioProperties.y=tempAudioSource.pitch; + + //set augmented fromAudioProperties: + if(args.Contains("volume")){ + fromAudioProperties.x=(float)args["volume"]; + } + if(args.Contains("pitch")){ + fromAudioProperties.y=(float)args["pitch"]; + } + + //apply fromAudioProperties: + tempAudioSource.volume=fromAudioProperties.x; + tempAudioSource.pitch=fromAudioProperties.y; + + //set new volume and pitch args: + args["volume"]=tempAudioProperties.x; + args["pitch"]=tempAudioProperties.y; + + //set a default easeType of linear if none is supplied since eased audio interpolation is nearly unrecognizable: + if (!args.Contains("easetype")) { + args.Add("easetype",EaseType.linear); + } + + //establish iTween: + args["type"]="audio"; + args["method"]="to"; + Launch(target,args); + } + + /// + /// Fades volume and pitch of an AudioSource with MINIMUM customization options. Default AudioSource attached to GameObject will be used (if one exists) if not supplied. + /// + /// + /// A to be the target of the animation which holds the AudioSource to be changed. + /// + /// for the target level of volume. + /// A + /// + /// for the target pitch. + /// A + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void AudioTo(GameObject target, float volume, float pitch, float time){ + AudioTo(target,Hash("volume",volume,"pitch",pitch,"time",time)); + } + + /// + /// Fades volume and pitch of an AudioSource with FULL customization options. Default AudioSource attached to GameObject will be used (if one exists) if not supplied. + /// + /// + /// A for which AudioSource to use. + /// + /// + /// A or for the target level of volume. + /// + /// + /// A or for the target pitch. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void AudioTo(GameObject target, Hashtable args){ + //clean args: + args = iTween.CleanArgs(args); + + //set a default easeType of linear if none is supplied since eased audio interpolation is nearly unrecognizable: + if (!args.Contains("easetype")) { + args.Add("easetype",EaseType.linear); + } + + //establish iTween: + args["type"]="audio"; + args["method"]="to"; + Launch(target,args); + } + + /// + /// Plays an AudioClip once based on supplied volume and pitch and following any delay with MINIMUM customization options. AudioSource is optional as iTween will provide one. + /// + /// + /// A to be the target of the animation which holds the AudioSource to be utilized. + /// + /// + /// A for a reference to the AudioClip to be played. + /// + /// + /// A for the time in seconds the action will wait before beginning. + /// + public static void Stab(GameObject target, AudioClip audioclip, float delay){ + Stab(target,Hash("audioclip",audioclip,"delay",delay)); + } + + /// + /// Plays an AudioClip once based on supplied volume and pitch and following any delay with FULL customization options. AudioSource is optional as iTween will provide one. + /// + /// + /// A for a reference to the AudioClip to be played. + /// + /// + /// A for which AudioSource to use + /// + /// + /// A or for the target level of volume. + /// + /// + /// A or for the target pitch. + /// + /// + /// A or for the time in seconds the action will wait before beginning. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void Stab(GameObject target, Hashtable args){ + //clean args: + args = iTween.CleanArgs(args); + + //establish iTween: + args["type"]="stab"; + Launch(target,args); + } + + /// + /// Instantly rotates a GameObject to look at the supplied Vector3 then returns it to it's starting rotation over time with MINIMUM customization options. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A to be the Vector3 that the target will look towards. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void LookFrom(GameObject target, Vector3 looktarget, float time){ + LookFrom(target,Hash("looktarget",looktarget,"time",time)); + } + + /// + /// Instantly rotates a GameObject to look at a supplied Transform or Vector3 then returns it to it's starting rotation over time with FULL customization options. + /// + /// + /// A or for a target the GameObject will look at. + /// + /// + /// A . Restricts rotation to the supplied axis only. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or can be used instead of time to allow animation based on speed + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void LookFrom(GameObject target, Hashtable args){ + Vector3 tempRotation; + Vector3 tempRestriction; + + //clean args: + args = iTween.CleanArgs(args); + + //set look: + tempRotation=target.transform.eulerAngles; + if (args["looktarget"].GetType() == typeof(Transform)) { + //target.transform.LookAt((Transform)args["looktarget"]); + target.transform.LookAt((Transform)args["looktarget"], (Vector3?)args["up"] ?? Defaults.up); + }else if(args["looktarget"].GetType() == typeof(Vector3)){ + //target.transform.LookAt((Vector3)args["looktarget"]); + target.transform.LookAt((Vector3)args["looktarget"], (Vector3?)args["up"] ?? Defaults.up); + } + + //axis restriction: + if(args.Contains("axis")){ + tempRestriction=target.transform.eulerAngles; + switch((string)args["axis"]){ + case "x": + tempRestriction.y=tempRotation.y; + tempRestriction.z=tempRotation.z; + break; + case "y": + tempRestriction.x=tempRotation.x; + tempRestriction.z=tempRotation.z; + break; + case "z": + tempRestriction.x=tempRotation.x; + tempRestriction.y=tempRotation.y; + break; + } + target.transform.eulerAngles=tempRestriction; + } + + //set new rotation: + args["rotation"] = tempRotation; + + //establish iTween + args["type"]="rotate"; + args["method"]="to"; + Launch(target,args); + } + + /// + /// Rotates a GameObject to look at the supplied Vector3 over time with MINIMUM customization options. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A to be the Vector3 that the target will look towards. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void LookTo(GameObject target, Vector3 looktarget, float time){ + LookTo(target,Hash("looktarget",looktarget,"time",time)); + } + + /// + /// Rotates a GameObject to look at a supplied Transform or Vector3 over time with FULL customization options. + /// + /// + /// A or for a target the GameObject will look at. + /// + /// + /// A . Restricts rotation to the supplied axis only. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or can be used instead of time to allow animation based on speed + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void LookTo(GameObject target, Hashtable args){ + //clean args: + args = iTween.CleanArgs(args); + + //additional property to ensure ConflictCheck can work correctly since Transforms are refrences: + if(args.Contains("looktarget")){ + if (args["looktarget"].GetType() == typeof(Transform)) { + Transform transform = (Transform)args["looktarget"]; + args["position"]=new Vector3(transform.position.x,transform.position.y,transform.position.z); + args["rotation"]=new Vector3(transform.eulerAngles.x,transform.eulerAngles.y,transform.eulerAngles.z); + } + } + + //establish iTween + args["type"]="look"; + args["method"]="to"; + Launch(target,args); + } + + /// + /// Changes a GameObject's position over time to a supplied destination with MINIMUM customization options. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the destination Vector3. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void MoveTo(GameObject target, Vector3 position, float time){ + MoveTo(target,Hash("position",position,"time",time)); + } + + /// + /// Changes a GameObject's position over time to a supplied destination with FULL customization options. + /// + /// + /// A or for a point in space the GameObject will animate to. + /// + /// + /// A or for a list of points to draw a Catmull-Rom through for a curved animation path. + /// + /// + /// A for whether to automatically generate a curve from the GameObject's current position to the beginning of the path. True by default. + /// + /// + /// A or for the individual setting of the x axis. + /// + /// + /// A or for the individual setting of the y axis. + /// + /// + /// A or for the individual setting of the z axis. + /// + /// + /// A for whether or not the GameObject will orient to its direction of travel. False by default. + /// + /// + /// A or A for a target the GameObject will look at. + /// + /// + /// A or for the time in seconds the object will take to look at either the "looktarget" or "orienttopath". + /// + /// + /// A or for how much of a percentage to look ahead on a path to influence how strict "orientopath" is. + /// + /// + /// A . Restricts rotation to the supplied axis only. + /// + /// + /// A for whether to animate in world space or relative to the parent. False by default. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or can be used instead of time to allow animation based on speed + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void MoveTo(GameObject target, Hashtable args){ + //clean args: + args = iTween.CleanArgs(args); + + //additional property to ensure ConflictCheck can work correctly since Transforms are refrences: + if(args.Contains("position")){ + if (args["position"].GetType() == typeof(Transform)) { + Transform transform = (Transform)args["position"]; + args["position"]=new Vector3(transform.position.x,transform.position.y,transform.position.z); + args["rotation"]=new Vector3(transform.eulerAngles.x,transform.eulerAngles.y,transform.eulerAngles.z); + args["scale"]=new Vector3(transform.localScale.x,transform.localScale.y,transform.localScale.z); + } + } + + //establish iTween: + args["type"]="move"; + args["method"]="to"; + Launch(target,args); + } + + /// + /// Instantly changes a GameObject's position to a supplied destination then returns it to it's starting position over time with MINIMUM customization options. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the destination Vector3. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void MoveFrom(GameObject target, Vector3 position, float time){ + MoveFrom(target,Hash("position",position,"time",time)); + } + + /// + /// Instantly changes a GameObject's position to a supplied destination then returns it to it's starting position over time with FULL customization options. + /// + /// + /// A or for a point in space the GameObject will animate to. + /// + /// + /// A or for a list of points to draw a Catmull-Rom through for a curved animation path. + /// + /// + /// A for whether to automatically generate a curve from the GameObject's current position to the beginning of the path. True by default. + /// + /// + /// A or for the individual setting of the x axis. + /// + /// + /// A or for the individual setting of the y axis. + /// + /// + /// A or for the individual setting of the z axis. + /// + /// + /// A for whether or not the GameObject will orient to its direction of travel. False by default. + /// + /// + /// A or A for a target the GameObject will look at. + /// + /// + /// A or for the time in seconds the object will take to look at either the "looktarget" or "orienttopath". + /// + /// + /// A or for how much of a percentage to look ahead on a path to influence how strict "orientopath" is. + /// + /// + /// A for whether to animate in world space or relative to the parent. False by default. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or can be used instead of time to allow animation based on speed + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void MoveFrom(GameObject target, Hashtable args){ + //clean args: + args = iTween.CleanArgs(args); + + bool tempIsLocal; + + //set tempIsLocal: + if(args.Contains("islocal")){ + tempIsLocal = (bool)args["islocal"]; + }else{ + tempIsLocal = Defaults.isLocal; + } + + if(args.Contains("path")){ + Vector3[] fromPath; + Vector3[] suppliedPath; + if(args["path"].GetType() == typeof(Vector3[])){ + Vector3[] temp = (Vector3[])args["path"]; + suppliedPath=new Vector3[temp.Length]; + Array.Copy(temp,suppliedPath, temp.Length); + }else{ + Transform[] temp = (Transform[])args["path"]; + suppliedPath = new Vector3[temp.Length]; + for (int i = 0; i < temp.Length; i++) { + suppliedPath[i]=temp[i].position; + } + } + if(suppliedPath[suppliedPath.Length-1] != target.transform.position){ + fromPath= new Vector3[suppliedPath.Length+1]; + Array.Copy(suppliedPath,fromPath,suppliedPath.Length); + if(tempIsLocal){ + fromPath[fromPath.Length-1] = target.transform.localPosition; + target.transform.localPosition=fromPath[0]; + }else{ + fromPath[fromPath.Length-1] = target.transform.position; + target.transform.position=fromPath[0]; + } + args["path"]=fromPath; + }else{ + if(tempIsLocal){ + target.transform.localPosition=suppliedPath[0]; + }else{ + target.transform.position=suppliedPath[0]; + } + args["path"]=suppliedPath; + } + }else{ + Vector3 tempPosition; + Vector3 fromPosition; + + //set tempPosition and base fromPosition: + if(tempIsLocal){ + tempPosition=fromPosition=target.transform.localPosition; + }else{ + tempPosition=fromPosition=target.transform.position; + } + + //set augmented fromPosition: + if(args.Contains("position")){ + if (args["position"].GetType() == typeof(Transform)){ + Transform trans = (Transform)args["position"]; + fromPosition=trans.position; + }else if(args["position"].GetType() == typeof(Vector3)){ + fromPosition=(Vector3)args["position"]; + } + }else{ + if (args.Contains("x")) { + fromPosition.x=(float)args["x"]; + } + if (args.Contains("y")) { + fromPosition.y=(float)args["y"]; + } + if (args.Contains("z")) { + fromPosition.z=(float)args["z"]; + } + } + + //apply fromPosition: + if(tempIsLocal){ + target.transform.localPosition = fromPosition; + }else{ + target.transform.position = fromPosition; + } + + //set new position arg: + args["position"]=tempPosition; + } + + //establish iTween: + args["type"]="move"; + args["method"]="to"; + Launch(target,args); + } + + /// + /// Translates a GameObject's position over time with MINIMUM customization options. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the amount of change in position to move the GameObject. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void MoveAdd(GameObject target, Vector3 amount, float time){ + MoveAdd(target,Hash("amount",amount,"time",time)); + } + + /// + /// Translates a GameObject's position over time with FULL customization options. + /// + /// + /// A for the amount of change in position to move the GameObject. + /// + /// + /// A or for the individual setting of the x axis. + /// + /// + /// A or for the individual setting of the y axis. + /// + /// + /// A or for the individual setting of the z axis. + /// + /// + /// A for whether or not the GameObject will orient to its direction of travel. False by default. + /// + /// + /// A or A for a target the GameObject will look at. + /// + /// + /// A or for the time in seconds the object will take to look at either the "looktarget" or "orienttopath". + /// + /// + /// A . Restricts rotation to the supplied axis only. + /// + /// + /// A or for applying the transformation in either the world coordinate or local cordinate system. Defaults to local space. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or can be used instead of time to allow animation based on speed + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void MoveAdd(GameObject target, Hashtable args){ + //clean args: + args = iTween.CleanArgs(args); + + //establish iTween: + args["type"]="move"; + args["method"]="add"; + Launch(target,args); + } + + /// + /// Adds the supplied coordinates to a GameObject's postion with MINIMUM customization options. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the amount of change in position to move the GameObject. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void MoveBy(GameObject target, Vector3 amount, float time){ + MoveBy(target,Hash("amount",amount,"time",time)); + } + + /// + /// Adds the supplied coordinates to a GameObject's position with FULL customization options. + /// + /// + /// A for the amount of change in position to move the GameObject. + /// + /// + /// A or for the individual setting of the x axis. + /// + /// + /// A or for the individual setting of the y axis. + /// + /// + /// A or for the individual setting of the z axis. + /// + /// + /// A for whether or not the GameObject will orient to its direction of travel. False by default. + /// + /// + /// A or A for a target the GameObject will look at. + /// + /// + /// A or for the time in seconds the object will take to look at either the "looktarget" or "orienttopath". + /// + /// + /// A . Restricts rotation to the supplied axis only. + /// + /// + /// A or for applying the transformation in either the world coordinate or local cordinate system. Defaults to local space. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or can be used instead of time to allow animation based on speed + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void MoveBy(GameObject target, Hashtable args){ + //clean args: + args = iTween.CleanArgs(args); + + //establish iTween: + args["type"]="move"; + args["method"]="by"; + Launch(target,args); + } + + /// + /// Changes a GameObject's scale over time with MINIMUM customization options. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the final scale. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void ScaleTo(GameObject target, Vector3 scale, float time){ + ScaleTo(target,Hash("scale",scale,"time",time)); + } + + /// + /// Changes a GameObject's scale over time with FULL customization options. + /// + /// + /// A or for the final scale. + /// + /// + /// A or for the individual setting of the x axis. + /// + /// + /// A or for the individual setting of the y axis. + /// + /// + /// A or for the individual setting of the z axis. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or can be used instead of time to allow animation based on speed + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void ScaleTo(GameObject target, Hashtable args){ + //clean args: + args = iTween.CleanArgs(args); + + //additional property to ensure ConflictCheck can work correctly since Transforms are refrences: + if(args.Contains("scale")){ + if (args["scale"].GetType() == typeof(Transform)) { + Transform transform = (Transform)args["scale"]; + args["position"]=new Vector3(transform.position.x,transform.position.y,transform.position.z); + args["rotation"]=new Vector3(transform.eulerAngles.x,transform.eulerAngles.y,transform.eulerAngles.z); + args["scale"]=new Vector3(transform.localScale.x,transform.localScale.y,transform.localScale.z); + } + } + + //establish iTween: + args["type"]="scale"; + args["method"]="to"; + Launch(target,args); + } + + /// + /// Instantly changes a GameObject's scale then returns it to it's starting scale over time with MINIMUM customization options. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the final scale. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void ScaleFrom(GameObject target, Vector3 scale, float time){ + ScaleFrom(target,Hash("scale",scale,"time",time)); + } + + /// + /// Instantly changes a GameObject's scale then returns it to it's starting scale over time with FULL customization options. + /// + /// + /// A or for the final scale. + /// + /// + /// A or for the individual setting of the x axis. + /// + /// + /// A or for the individual setting of the y axis. + /// + /// + /// A or for the individual setting of the z axis. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or can be used instead of time to allow animation based on speed + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void ScaleFrom(GameObject target, Hashtable args){ + Vector3 tempScale; + Vector3 fromScale; + + //clean args: + args = iTween.CleanArgs(args); + + //set base fromScale: + tempScale=fromScale=target.transform.localScale; + + //set augmented fromScale: + if(args.Contains("scale")){ + if (args["scale"].GetType() == typeof(Transform)){ + Transform trans = (Transform)args["scale"]; + fromScale=trans.localScale; + }else if(args["scale"].GetType() == typeof(Vector3)){ + fromScale=(Vector3)args["scale"]; + } + }else{ + if (args.Contains("x")) { + fromScale.x=(float)args["x"]; + } + if (args.Contains("y")) { + fromScale.y=(float)args["y"]; + } + if (args.Contains("z")) { + fromScale.z=(float)args["z"]; + } + } + + //apply fromScale: + target.transform.localScale = fromScale; + + //set new scale arg: + args["scale"]=tempScale; + + //establish iTween: + args["type"]="scale"; + args["method"]="to"; + Launch(target,args); + } + + /// + /// Adds to a GameObject's scale over time with FULL customization options. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the amount of scale to be added to the GameObject's current scale. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void ScaleAdd(GameObject target, Vector3 amount, float time){ + ScaleAdd(target,Hash("amount",amount,"time",time)); + } + + /// + /// Adds to a GameObject's scale over time with FULL customization options. + /// + /// + /// A for the amount to be added to the GameObject's current scale. + /// + /// + /// A or for the individual setting of the x axis. + /// + /// + /// A or for the individual setting of the y axis. + /// + /// + /// A or for the individual setting of the z axis. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or can be used instead of time to allow animation based on speed + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void ScaleAdd(GameObject target, Hashtable args){ + //clean args: + args = iTween.CleanArgs(args); + + //establish iTween: + args["type"]="scale"; + args["method"]="add"; + Launch(target,args); + } + + /// + /// Multiplies a GameObject's scale over time with MINIMUM customization options. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the amount of scale to be multiplied by the GameObject's current scale. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void ScaleBy(GameObject target, Vector3 amount, float time){ + ScaleBy(target,Hash("amount",amount,"time",time)); + } + + /// + /// Multiplies a GameObject's scale over time with FULL customization options. + /// + /// + /// A for the amount to be multiplied to the GameObject's current scale. + /// + /// + /// A or for the individual setting of the x axis. + /// + /// + /// A or for the individual setting of the y axis. + /// + /// + /// A or for the individual setting of the z axis. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or can be used instead of time to allow animation based on speed + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void ScaleBy(GameObject target, Hashtable args){ + //clean args: + args = iTween.CleanArgs(args); + + //establish iTween: + args["type"]="scale"; + args["method"]="by"; + Launch(target,args); + } + + /// + /// Rotates a GameObject to the supplied Euler angles in degrees over time with MINIMUM customization options. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the target Euler angles in degrees to rotate to. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void RotateTo(GameObject target, Vector3 rotation, float time){ + RotateTo(target,Hash("rotation",rotation,"time",time)); + } + + /// + /// Rotates a GameObject to the supplied Euler angles in degrees over time with FULL customization options. + /// + /// + /// A or for the target Euler angles in degrees to rotate to. + /// + /// + /// A or for the individual setting of the x axis. + /// + /// + /// A or for the individual setting of the y axis. + /// + /// + /// A or for the individual setting of the z axis. + /// + /// + /// A for whether to animate in world space or relative to the parent. False by default. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or can be used instead of time to allow animation based on speed + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void RotateTo(GameObject target, Hashtable args){ + //clean args: + args = iTween.CleanArgs(args); + + //additional property to ensure ConflictCheck can work correctly since Transforms are refrences: + if(args.Contains("rotation")){ + if (args["rotation"].GetType() == typeof(Transform)) { + Transform transform = (Transform)args["rotation"]; + args["position"]=new Vector3(transform.position.x,transform.position.y,transform.position.z); + args["rotation"]=new Vector3(transform.eulerAngles.x,transform.eulerAngles.y,transform.eulerAngles.z); + args["scale"]=new Vector3(transform.localScale.x,transform.localScale.y,transform.localScale.z); + } + } + + //establish iTween + args["type"]="rotate"; + args["method"]="to"; + Launch(target,args); + } + + /// + /// Instantly changes a GameObject's Euler angles in degrees then returns it to it's starting rotation over time (if allowed) with MINIMUM customization options. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the target Euler angles in degrees to rotate from. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void RotateFrom(GameObject target, Vector3 rotation, float time){ + RotateFrom(target,Hash("rotation",rotation,"time",time)); + } + + /// + /// Instantly changes a GameObject's Euler angles in degrees then returns it to it's starting rotation over time (if allowed) with FULL customization options. + /// + /// + /// A or for the target Euler angles in degrees to rotate to. + /// + /// + /// A or for the individual setting of the x axis. + /// + /// + /// A or for the individual setting of the y axis. + /// + /// + /// A or for the individual setting of the z axis. + /// + /// + /// A for whether to animate in world space or relative to the parent. False by default. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or can be used instead of time to allow animation based on speed + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void RotateFrom(GameObject target, Hashtable args){ + Vector3 tempRotation; + Vector3 fromRotation; + bool tempIsLocal; + + //clean args: + args = iTween.CleanArgs(args); + + //set tempIsLocal: + if(args.Contains("islocal")){ + tempIsLocal = (bool)args["islocal"]; + }else{ + tempIsLocal = Defaults.isLocal; + } + + //set tempRotation and base fromRotation: + if(tempIsLocal){ + tempRotation=fromRotation=target.transform.localEulerAngles; + }else{ + tempRotation=fromRotation=target.transform.eulerAngles; + } + + //set augmented fromRotation: + if(args.Contains("rotation")){ + if (args["rotation"].GetType() == typeof(Transform)){ + Transform trans = (Transform)args["rotation"]; + fromRotation=trans.eulerAngles; + }else if(args["rotation"].GetType() == typeof(Vector3)){ + fromRotation=(Vector3)args["rotation"]; + } + }else{ + if (args.Contains("x")) { + fromRotation.x=(float)args["x"]; + } + if (args.Contains("y")) { + fromRotation.y=(float)args["y"]; + } + if (args.Contains("z")) { + fromRotation.z=(float)args["z"]; + } + } + + //apply fromRotation: + if(tempIsLocal){ + target.transform.localEulerAngles = fromRotation; + }else{ + target.transform.eulerAngles = fromRotation; + } + + //set new rotation arg: + args["rotation"]=tempRotation; + + //establish iTween: + args["type"]="rotate"; + args["method"]="to"; + Launch(target,args); + } + + /// + /// Adds supplied Euler angles in degrees to a GameObject's rotation over time with MINIMUM customization options. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the amount of Euler angles in degrees to add to the current rotation of the GameObject. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void RotateAdd(GameObject target, Vector3 amount, float time){ + RotateAdd(target,Hash("amount",amount,"time",time)); + } + + /// + /// Adds supplied Euler angles in degrees to a GameObject's rotation over time with FULL customization options. + /// + /// + /// A for the amount of Euler angles in degrees to add to the current rotation of the GameObject. + /// + /// + /// A or for the individual setting of the x axis. + /// + /// + /// A or for the individual setting of the y axis. + /// + /// + /// A or for the individual setting of the z axis. + /// + /// + /// A or for applying the transformation in either the world coordinate or local cordinate system. Defaults to local space. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or can be used instead of time to allow animation based on speed + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void RotateAdd(GameObject target, Hashtable args){ + //clean args: + args = iTween.CleanArgs(args); + + //establish iTween: + args["type"]="rotate"; + args["method"]="add"; + Launch(target,args); + } + + /// + /// Multiplies supplied values by 360 and rotates a GameObject by calculated amount over time with MINIMUM customization options. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the amount to be multiplied by 360 to rotate the GameObject. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void RotateBy(GameObject target, Vector3 amount, float time){ + RotateBy(target,Hash("amount",amount,"time",time)); + } + + /// + /// Multiplies supplied values by 360 and rotates a GameObject by calculated amount over time with FULL customization options. + /// + /// + /// A for the amount to be multiplied by 360 to rotate the GameObject. + /// + /// + /// A or for the individual setting of the x axis. + /// + /// + /// A or for the individual setting of the y axis. + /// + /// + /// A or for the individual setting of the z axis. + /// + /// + /// A or for applying the transformation in either the world coordinate or local cordinate system. Defaults to local space. + /// + /// + /// A for whether to animate in world space or relative to the parent. False by default. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or can be used instead of time to allow animation based on speed + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the shape of the easing curve applied to the animation. + /// + /// + /// A or for the type of loop to apply once the animation has completed. + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void RotateBy(GameObject target, Hashtable args){ + //clean args: + args = iTween.CleanArgs(args); + + //establish iTween + args["type"]="rotate"; + args["method"]="by"; + Launch(target,args); + } + + /// + /// Randomly shakes a GameObject's position by a diminishing amount over time with MINIMUM customization options. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the magnitude of shake. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void ShakePosition(GameObject target, Vector3 amount, float time){ + ShakePosition(target,Hash("amount",amount,"time",time)); + } + + /// + /// Randomly shakes a GameObject's position by a diminishing amount over time with FULL customization options. + /// + /// + /// A for the magnitude of shake. + /// + /// + /// A or for the individual setting of the x magnitude. + /// + /// + /// A or for the individual setting of the y magnitude. + /// + /// + /// A or for the individual setting of the z magnitude. + /// + /// + /// A for whether to animate in world space or relative to the parent. False by default. + /// + /// + /// A for whether or not the GameObject will orient to its direction of travel. False by default. + /// + /// + /// A or A for a target the GameObject will look at. + /// + /// + /// A or for the time in seconds the object will take to look at either the "looktarget" or "orienttopath". + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the type of loop to apply once the animation has completed. (only "loop" is allowed with shakes) + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void ShakePosition(GameObject target, Hashtable args){ + //clean args: + args = iTween.CleanArgs(args); + + //establish iTween + args["type"]="shake"; + args["method"]="position"; + Launch(target,args); + } + + /// + /// Randomly shakes a GameObject's scale by a diminishing amount over time with MINIMUM customization options. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the magnitude of shake. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void ShakeScale(GameObject target, Vector3 amount, float time){ + ShakeScale(target,Hash("amount",amount,"time",time)); + } + + /// + /// Randomly shakes a GameObject's scale by a diminishing amount over time with FULL customization options. + /// + /// + /// A for the magnitude of shake. + /// + /// + /// A or for the individual setting of the x magnitude. + /// + /// + /// A or for the individual setting of the y magnitude. + /// + /// + /// A or for the individual setting of the z magnitude. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the type of loop to apply once the animation has completed. (only "loop" is allowed with shakes) + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void ShakeScale(GameObject target, Hashtable args){ + //clean args: + args = iTween.CleanArgs(args); + + //establish iTween + args["type"]="shake"; + args["method"]="scale"; + Launch(target,args); + } + + /// + /// Randomly shakes a GameObject's rotation by a diminishing amount over time with MINIMUM customization options. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the magnitude of shake. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void ShakeRotation(GameObject target, Vector3 amount, float time){ + ShakeRotation(target,Hash("amount",amount,"time",time)); + } + + /// + /// Randomly shakes a GameObject's rotation by a diminishing amount over time with FULL customization options. + /// + /// + /// A for the magnitude of shake. + /// + /// + /// A or for the individual setting of the x magnitude. + /// + /// + /// A or for the individual setting of the y magnitude. + /// + /// + /// A or for the individual setting of the z magnitude. + /// + /// + /// A for applying the transformation in either the world coordinate or local cordinate system. Defaults to local space. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the type of loop to apply once the animation has completed. (only "loop" is allowed with shakes) + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void ShakeRotation(GameObject target, Hashtable args){ + //clean args: + args = iTween.CleanArgs(args); + + //establish iTween + args["type"]="shake"; + args["method"]="rotation"; + Launch(target,args); + } + + /// + /// Applies a jolt of force to a GameObject's position and wobbles it back to its initial position with MINIMUM customization options. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the magnitude of the punch. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void PunchPosition(GameObject target, Vector3 amount, float time){ + PunchPosition(target,Hash("amount",amount,"time",time)); + } + + /// + /// Applies a jolt of force to a GameObject's position and wobbles it back to its initial position with FULL customization options. + /// + /// + /// A for the magnitude of shake. + /// + /// + /// A or for the individual setting of the x magnitude. + /// + /// + /// A or for the individual setting of the y magnitude. + /// + /// + /// A or for the individual setting of the z magnitude. + /// + /// + /// A for applying the transformation in either the world coordinate or local cordinate system. Defaults to local space. + /// + /// + /// A or A for a target the GameObject will look at. + /// + /// + /// A or for the time in seconds the object will take to look at either the "looktarget". + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the type of loop to apply once the animation has completed. (only "loop" is allowed with punches) + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void PunchPosition(GameObject target, Hashtable args){ + //clean args: + args = iTween.CleanArgs(args); + + //establish iTween + args["type"]="punch"; + args["method"]="position"; + args["easetype"]=EaseType.punch; + Launch(target,args); + } + + /// + /// Applies a jolt of force to a GameObject's rotation and wobbles it back to its initial rotation with MINIMUM customization options. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the magnitude of the punch. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void PunchRotation(GameObject target, Vector3 amount, float time){ + PunchRotation(target,Hash("amount",amount,"time",time)); + } + + /// + /// Applies a jolt of force to a GameObject's rotation and wobbles it back to its initial rotation with FULL customization options. + /// + /// + /// A for the magnitude of shake. + /// + /// + /// A or for the individual setting of the x magnitude. + /// + /// + /// A or for the individual setting of the y magnitude. + /// + /// + /// A or for the individual setting of the z magnitude. + /// + /// + /// A for applying the transformation in either the world coordinate or local cordinate system. Defaults to local space. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the type of loop to apply once the animation has completed. (only "loop" is allowed with punches) + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void PunchRotation(GameObject target, Hashtable args){ + //clean args: + args = iTween.CleanArgs(args); + + //establish iTween + args["type"]="punch"; + args["method"]="rotation"; + args["easetype"]=EaseType.punch; + Launch(target,args); + } + + /// + /// Applies a jolt of force to a GameObject's scale and wobbles it back to its initial scale with MINIMUM customization options. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the magnitude of the punch. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void PunchScale(GameObject target, Vector3 amount, float time){ + PunchScale(target,Hash("amount",amount,"time",time)); + } + + /// + /// Applies a jolt of force to a GameObject's scale and wobbles it back to its initial scale with FULL customization options. + /// + /// + /// A for the magnitude of shake. + /// + /// + /// A or for the individual setting of the x magnitude. + /// + /// + /// A or for the individual setting of the y magnitude. + /// + /// + /// A or for the individual setting of the z magnitude. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A or for the time in seconds the animation will wait before beginning. + /// + /// + /// A or for the type of loop to apply once the animation has completed. (only "loop" is allowed with punches) + /// + /// + /// A for the name of a function to launch at the beginning of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onstart" method. + /// + /// + /// A for arguments to be sent to the "onstart" method. + /// + /// + /// A for the name of a function to launch on every step of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "onupdate" method. + /// + /// + /// A for arguments to be sent to the "onupdate" method. + /// + /// + /// A for the name of a function to launch at the end of the animation. + /// + /// + /// A for a reference to the GameObject that holds the "oncomplete" method. + /// + /// + /// A for arguments to be sent to the "oncomplete" method. + /// + public static void PunchScale(GameObject target, Hashtable args){ + //clean args: + args = iTween.CleanArgs(args); + + //establish iTween + args["type"]="punch"; + args["method"]="scale"; + args["easetype"]=EaseType.punch; + Launch(target,args); + } + + #endregion + + #region #2 Generate Method Targets + + //call correct set target method and set tween application delegate: + void GenerateTargets(){ + switch (type) { + case "value": + switch (method) { + case "float": + GenerateFloatTargets(); + apply = new ApplyTween(ApplyFloatTargets); + break; + case "vector2": + GenerateVector2Targets(); + apply = new ApplyTween(ApplyVector2Targets); + break; + case "vector3": + GenerateVector3Targets(); + apply = new ApplyTween(ApplyVector3Targets); + break; + case "color": + GenerateColorTargets(); + apply = new ApplyTween(ApplyColorTargets); + break; + case "rect": + GenerateRectTargets(); + apply = new ApplyTween(ApplyRectTargets); + break; + } + break; + case "color": + switch (method) { + case "to": + GenerateColorToTargets(); + apply = new ApplyTween(ApplyColorToTargets); + break; + } + break; + case "audio": + switch (method) { + case "to": + GenerateAudioToTargets(); + apply = new ApplyTween(ApplyAudioToTargets); + break; + } + break; + case "move": + switch (method) { + case "to": + //using a path? + if(tweenArguments.Contains("path")){ + GenerateMoveToPathTargets(); + apply = new ApplyTween(ApplyMoveToPathTargets); + }else{ //not using a path? + GenerateMoveToTargets(); + apply = new ApplyTween(ApplyMoveToTargets); + } + break; + case "by": + case "add": + GenerateMoveByTargets(); + apply = new ApplyTween(ApplyMoveByTargets); + break; + } + break; + case "scale": + switch (method){ + case "to": + GenerateScaleToTargets(); + apply = new ApplyTween(ApplyScaleToTargets); + break; + case "by": + GenerateScaleByTargets(); + apply = new ApplyTween(ApplyScaleToTargets); + break; + case "add": + GenerateScaleAddTargets(); + apply = new ApplyTween(ApplyScaleToTargets); + break; + } + break; + case "rotate": + switch (method) { + case "to": + GenerateRotateToTargets(); + apply = new ApplyTween(ApplyRotateToTargets); + break; + case "add": + GenerateRotateAddTargets(); + apply = new ApplyTween(ApplyRotateAddTargets); + break; + case "by": + GenerateRotateByTargets(); + apply = new ApplyTween(ApplyRotateAddTargets); + break; + } + break; + case "shake": + switch (method) { + case "position": + GenerateShakePositionTargets(); + apply = new ApplyTween(ApplyShakePositionTargets); + break; + case "scale": + GenerateShakeScaleTargets(); + apply = new ApplyTween(ApplyShakeScaleTargets); + break; + case "rotation": + GenerateShakeRotationTargets(); + apply = new ApplyTween(ApplyShakeRotationTargets); + break; + } + break; + case "punch": + switch (method) { + case "position": + GeneratePunchPositionTargets(); + apply = new ApplyTween(ApplyPunchPositionTargets); + break; + case "rotation": + GeneratePunchRotationTargets(); + apply = new ApplyTween(ApplyPunchRotationTargets); + break; + case "scale": + GeneratePunchScaleTargets(); + apply = new ApplyTween(ApplyPunchScaleTargets); + break; + } + break; + case "look": + switch (method) { + case "to": + GenerateLookToTargets(); + apply = new ApplyTween(ApplyLookToTargets); + break; + } + break; + case "stab": + GenerateStabTargets(); + apply = new ApplyTween(ApplyStabTargets); + break; + } + } + + #endregion + + #region #3 Generate Specific Targets + + void GenerateRectTargets(){ + //values holder [0] from, [1] to, [2] calculated value from ease equation: + rects=new Rect[3]; + + //from and to values: + rects[0]=(Rect)tweenArguments["from"]; + rects[1]=(Rect)tweenArguments["to"]; + } + + void GenerateColorTargets(){ + //values holder [0] from, [1] to, [2] calculated value from ease equation: + colors=new Color[1,3]; + + //from and to values: + colors[0,0]=(Color)tweenArguments["from"]; + colors[0,1]=(Color)tweenArguments["to"]; + } + + void GenerateVector3Targets(){ + //values holder [0] from, [1] to, [2] calculated value from ease equation: + vector3s=new Vector3[3]; + + //from and to values: + vector3s[0]=(Vector3)tweenArguments["from"]; + vector3s[1]=(Vector3)tweenArguments["to"]; + + //need for speed? + if(tweenArguments.Contains("speed")){ + float distance = Math.Abs(Vector3.Distance(vector3s[0],vector3s[1])); + time = distance/(float)tweenArguments["speed"]; + } + } + + void GenerateVector2Targets(){ + //values holder [0] from, [1] to, [2] calculated value from ease equation: + vector2s=new Vector2[3]; + + //from and to values: + vector2s[0]=(Vector2)tweenArguments["from"]; + vector2s[1]=(Vector2)tweenArguments["to"]; + + //need for speed? + if(tweenArguments.Contains("speed")){ + Vector3 fromV3 = new Vector3(vector2s[0].x,vector2s[0].y,0); + Vector3 toV3 = new Vector3(vector2s[1].x,vector2s[1].y,0); + float distance = Math.Abs(Vector3.Distance(fromV3,toV3)); + time = distance/(float)tweenArguments["speed"]; + } + } + + void GenerateFloatTargets(){ + //values holder [0] from, [1] to, [2] calculated value from ease equation: + floats=new float[3]; + + //from and to values: + floats[0]=(float)tweenArguments["from"]; + floats[1]=(float)tweenArguments["to"]; + + //need for speed? + if(tweenArguments.Contains("speed")){ + float distance = Math.Abs(floats[0] - floats[1]); + time = distance/(float)tweenArguments["speed"]; + } + } + + void GenerateColorToTargets(){ + //values holder [0] from, [1] to, [2] calculated value from ease equation: + //colors = new Color[3]; + + //from and init to values: + if(GetComponent(typeof(GUITexture))){ + colors = new Color[1,3]; + colors[0,0] = colors[0,1] = GetComponent().color; + }else if(GetComponent(typeof(GUIText))){ + colors = new Color[1,3]; + colors[0,0] = colors[0,1] = GetComponent().material.color; + }else if(GetComponent()){ + colors = new Color[GetComponent().materials.Length,3]; + for (int i = 0; i < GetComponent().materials.Length; i++) { + colors[i,0]=GetComponent().materials[i].GetColor(namedcolorvalue.ToString()); + colors[i,1]=GetComponent().materials[i].GetColor(namedcolorvalue.ToString()); + } + //colors[0] = colors[1] = renderer.material.color; + }else if(GetComponent()){ + colors = new Color[1,3]; + colors[0,0] = colors[0,1] = GetComponent().color; + }else{ + colors = new Color[1,3]; //empty placeholder incase the GO is perhaps an empty holder or something similar + } + + //to values: + if (tweenArguments.Contains("color")) { + //colors[1]=(Color)tweenArguments["color"]; + for (int i = 0; i < colors.GetLength(0); i++) { + colors[i,1]=(Color)tweenArguments["color"]; + } + }else{ + if (tweenArguments.Contains("r")) { + //colors[1].r=(float)tweenArguments["r"]; + for (int i = 0; i < colors.GetLength(0); i++) { + colors[i,1].r=(float)tweenArguments["r"]; + } + } + if (tweenArguments.Contains("g")) { + //colors[1].g=(float)tweenArguments["g"]; + for (int i = 0; i < colors.GetLength(0); i++) { + colors[i,1].g=(float)tweenArguments["g"]; + } + } + if (tweenArguments.Contains("b")) { + //colors[1].b=(float)tweenArguments["b"]; + for (int i = 0; i < colors.GetLength(0); i++) { + colors[i,1].b=(float)tweenArguments["b"]; + } + } + if (tweenArguments.Contains("a")) { + //colors[1].a=(float)tweenArguments["a"]; + for (int i = 0; i < colors.GetLength(0); i++) { + colors[i,1].a=(float)tweenArguments["a"]; + } + } + } + + //alpha or amount? + if(tweenArguments.Contains("amount")){ + //colors[1].a=(float)tweenArguments["amount"]; + for (int i = 0; i < colors.GetLength(0); i++) { + colors[i,1].a=(float)tweenArguments["amount"]; + } + }else if(tweenArguments.Contains("alpha")){ + //colors[1].a=(float)tweenArguments["alpha"]; + for (int i = 0; i < colors.GetLength(0); i++) { + colors[i,1].a=(float)tweenArguments["alpha"]; + } + } + } + + void GenerateAudioToTargets(){ + //values holder [0] from, [1] to, [2] calculated value from ease equation: + vector2s=new Vector2[3]; + + //set audioSource: + if(tweenArguments.Contains("audiosource")){ + audioSource=(AudioSource)tweenArguments["audiosource"]; + }else{ + if(GetComponent(typeof(AudioSource))){ + audioSource=GetComponent(); + }else{ + //throw error if no AudioSource is available: + Debug.LogError("iTween Error: AudioTo requires an AudioSource."); + Dispose(); + } + } + + //from values and default to values: + vector2s[0]=vector2s[1]=new Vector2(audioSource.volume,audioSource.pitch); + + //to values: + if (tweenArguments.Contains("volume")) { + vector2s[1].x=(float)tweenArguments["volume"]; + } + if (tweenArguments.Contains("pitch")) { + vector2s[1].y=(float)tweenArguments["pitch"]; + } + } + + void GenerateStabTargets(){ + //set audioSource: + if(tweenArguments.Contains("audiosource")){ + audioSource=(AudioSource)tweenArguments["audiosource"]; + }else{ + if(GetComponent(typeof(AudioSource))){ + audioSource=GetComponent(); + }else{ + //add and populate AudioSource if one doesn't exist: + gameObject.AddComponent(typeof(AudioSource)); + audioSource=GetComponent(); + audioSource.playOnAwake=false; + + } + } + + //populate audioSource's clip: + audioSource.clip=(AudioClip)tweenArguments["audioclip"]; + + //set audio's pitch and volume if requested: + if(tweenArguments.Contains("pitch")){ + audioSource.pitch=(float)tweenArguments["pitch"]; + } + if(tweenArguments.Contains("volume")){ + audioSource.volume=(float)tweenArguments["volume"]; + } + + //set run time based on length of clip after pitch is augmented + time=audioSource.clip.length/audioSource.pitch; + } + + void GenerateLookToTargets(){ + //values holder [0] from, [1] to, [2] calculated value from ease equation: + vector3s=new Vector3[3]; + + //from values: + vector3s[0]=transform.eulerAngles; + + //set look: + if(tweenArguments.Contains("looktarget")){ + if (tweenArguments["looktarget"].GetType() == typeof(Transform)) { + //transform.LookAt((Transform)tweenArguments["looktarget"]); + transform.LookAt((Transform)tweenArguments["looktarget"], (Vector3?)tweenArguments["up"] ?? Defaults.up); + }else if(tweenArguments["looktarget"].GetType() == typeof(Vector3)){ + //transform.LookAt((Vector3)tweenArguments["looktarget"]); + transform.LookAt((Vector3)tweenArguments["looktarget"], (Vector3?)tweenArguments["up"] ?? Defaults.up); + } + }else{ + Debug.LogError("iTween Error: LookTo needs a 'looktarget' property!"); + Dispose(); + } + + //to values: + vector3s[1]=transform.eulerAngles; + transform.eulerAngles=vector3s[0]; + + //axis restriction: + if(tweenArguments.Contains("axis")){ + switch((string)tweenArguments["axis"]){ + case "x": + vector3s[1].y=vector3s[0].y; + vector3s[1].z=vector3s[0].z; + break; + case "y": + vector3s[1].x=vector3s[0].x; + vector3s[1].z=vector3s[0].z; + break; + case "z": + vector3s[1].x=vector3s[0].x; + vector3s[1].y=vector3s[0].y; + break; + } + } + + //shortest distance: + vector3s[1]=new Vector3(clerp(vector3s[0].x,vector3s[1].x,1),clerp(vector3s[0].y,vector3s[1].y,1),clerp(vector3s[0].z,vector3s[1].z,1)); + + //need for speed? + if(tweenArguments.Contains("speed")){ + float distance = Math.Abs(Vector3.Distance(vector3s[0],vector3s[1])); + time = distance/(float)tweenArguments["speed"]; + } + } + + void GenerateMoveToPathTargets(){ + Vector3[] suppliedPath; + + //create and store path points: + if(tweenArguments["path"].GetType() == typeof(Vector3[])){ + Vector3[] temp = (Vector3[])tweenArguments["path"]; + //if only one point is supplied fall back to MoveTo's traditional use since we can't have a curve with one value: + if(temp.Length==1){ + Debug.LogError("iTween Error: Attempting a path movement with MoveTo requires an array of more than 1 entry!"); + Dispose(); + } + suppliedPath=new Vector3[temp.Length]; + Array.Copy(temp,suppliedPath, temp.Length); + }else{ + Transform[] temp = (Transform[])tweenArguments["path"]; + //if only one point is supplied fall back to MoveTo's traditional use since we can't have a curve with one value: + if(temp.Length==1){ + Debug.LogError("iTween Error: Attempting a path movement with MoveTo requires an array of more than 1 entry!"); + Dispose(); + } + suppliedPath = new Vector3[temp.Length]; + for (int i = 0; i < temp.Length; i++) { + suppliedPath[i]=temp[i].position; + } + } + + //do we need to plot a path to get to the beginning of the supplied path? + bool plotStart; + int offset; + if(transform.position != suppliedPath[0]){ + if(!tweenArguments.Contains("movetopath") || (bool)tweenArguments["movetopath"]==true){ + plotStart=true; + offset=3; + }else{ + plotStart=false; + offset=2; + } + }else{ + plotStart=false; + offset=2; + } + + //build calculated path: + vector3s = new Vector3[suppliedPath.Length+offset]; + if(plotStart){ + vector3s[1]=transform.position; + offset=2; + }else{ + offset=1; + } + + //populate calculate path; + Array.Copy(suppliedPath,0,vector3s,offset,suppliedPath.Length); + + //populate start and end control points: + //vector3s[0] = vector3s[1] - vector3s[2]; + vector3s[0] = vector3s[1] + (vector3s[1] - vector3s[2]); + vector3s[vector3s.Length-1] = vector3s[vector3s.Length-2] + (vector3s[vector3s.Length-2] - vector3s[vector3s.Length-3]); + + //is this a closed, continuous loop? yes? well then so let's make a continuous Catmull-Rom spline! + if(vector3s[1] == vector3s[vector3s.Length-2]){ + Vector3[] tmpLoopSpline = new Vector3[vector3s.Length]; + Array.Copy(vector3s,tmpLoopSpline,vector3s.Length); + tmpLoopSpline[0]=tmpLoopSpline[tmpLoopSpline.Length-3]; + tmpLoopSpline[tmpLoopSpline.Length-1]=tmpLoopSpline[2]; + vector3s=new Vector3[tmpLoopSpline.Length]; + Array.Copy(tmpLoopSpline,vector3s,tmpLoopSpline.Length); + } + + //create Catmull-Rom path: + path = new CRSpline(vector3s); + + //need for speed? + if(tweenArguments.Contains("speed")){ + float distance = PathLength(vector3s); + time = distance/(float)tweenArguments["speed"]; + } + } + + void GenerateMoveToTargets(){ + //values holder [0] from, [1] to, [2] calculated value from ease equation: + vector3s=new Vector3[3]; + + //from values: + if (isLocal) { + vector3s[0]=vector3s[1]=transform.localPosition; + }else{ + vector3s[0]=vector3s[1]=transform.position; + } + + //to values: + if (tweenArguments.Contains("position")) { + if (tweenArguments["position"].GetType() == typeof(Transform)){ + Transform trans = (Transform)tweenArguments["position"]; + vector3s[1]=trans.position; + }else if(tweenArguments["position"].GetType() == typeof(Vector3)){ + vector3s[1]=(Vector3)tweenArguments["position"]; + } + }else{ + if (tweenArguments.Contains("x")) { + vector3s[1].x=(float)tweenArguments["x"]; + } + if (tweenArguments.Contains("y")) { + vector3s[1].y=(float)tweenArguments["y"]; + } + if (tweenArguments.Contains("z")) { + vector3s[1].z=(float)tweenArguments["z"]; + } + } + + //handle orient to path request: + if(tweenArguments.Contains("orienttopath") && (bool)tweenArguments["orienttopath"]){ + tweenArguments["looktarget"] = vector3s[1]; + } + + //need for speed? + if(tweenArguments.Contains("speed")){ + float distance = Math.Abs(Vector3.Distance(vector3s[0],vector3s[1])); + time = distance/(float)tweenArguments["speed"]; + } + } + + void GenerateMoveByTargets(){ + //values holder [0] from, [1] to, [2] calculated value from ease equation, [3] previous value for Translate usage to allow Space utilization, [4] original rotation to make sure look requests don't interfere with the direction object should move in, [5] for dial in location: + vector3s=new Vector3[6]; + + //grab starting rotation: + vector3s[4] = transform.eulerAngles; + + //from values: + vector3s[0]=vector3s[1]=vector3s[3]=transform.position; + + //to values: + if (tweenArguments.Contains("amount")) { + vector3s[1]=vector3s[0] + (Vector3)tweenArguments["amount"]; + }else{ + if (tweenArguments.Contains("x")) { + vector3s[1].x=vector3s[0].x + (float)tweenArguments["x"]; + } + if (tweenArguments.Contains("y")) { + vector3s[1].y=vector3s[0].y +(float)tweenArguments["y"]; + } + if (tweenArguments.Contains("z")) { + vector3s[1].z=vector3s[0].z + (float)tweenArguments["z"]; + } + } + + //calculation for dial in: + transform.Translate(vector3s[1],space); + vector3s[5] = transform.position; + transform.position=vector3s[0]; + + //handle orient to path request: + if(tweenArguments.Contains("orienttopath") && (bool)tweenArguments["orienttopath"]){ + tweenArguments["looktarget"] = vector3s[1]; + } + + //need for speed? + if(tweenArguments.Contains("speed")){ + float distance = Math.Abs(Vector3.Distance(vector3s[0],vector3s[1])); + time = distance/(float)tweenArguments["speed"]; + } + } + + void GenerateScaleToTargets(){ + //values holder [0] from, [1] to, [2] calculated value from ease equation: + vector3s=new Vector3[3]; + + //from values: + vector3s[0]=vector3s[1]=transform.localScale; + + //to values: + if (tweenArguments.Contains("scale")) { + if (tweenArguments["scale"].GetType() == typeof(Transform)){ + Transform trans = (Transform)tweenArguments["scale"]; + vector3s[1]=trans.localScale; + }else if(tweenArguments["scale"].GetType() == typeof(Vector3)){ + vector3s[1]=(Vector3)tweenArguments["scale"]; + } + }else{ + if (tweenArguments.Contains("x")) { + vector3s[1].x=(float)tweenArguments["x"]; + } + if (tweenArguments.Contains("y")) { + vector3s[1].y=(float)tweenArguments["y"]; + } + if (tweenArguments.Contains("z")) { + vector3s[1].z=(float)tweenArguments["z"]; + } + } + + //need for speed? + if(tweenArguments.Contains("speed")){ + float distance = Math.Abs(Vector3.Distance(vector3s[0],vector3s[1])); + time = distance/(float)tweenArguments["speed"]; + } + } + + void GenerateScaleByTargets(){ + //values holder [0] from, [1] to, [2] calculated value from ease equation: + vector3s=new Vector3[3]; + + //from values: + vector3s[0]=vector3s[1]=transform.localScale; + + //to values: + if (tweenArguments.Contains("amount")) { + vector3s[1]=Vector3.Scale(vector3s[1],(Vector3)tweenArguments["amount"]); + }else{ + if (tweenArguments.Contains("x")) { + vector3s[1].x*=(float)tweenArguments["x"]; + } + if (tweenArguments.Contains("y")) { + vector3s[1].y*=(float)tweenArguments["y"]; + } + if (tweenArguments.Contains("z")) { + vector3s[1].z*=(float)tweenArguments["z"]; + } + } + + //need for speed? + if(tweenArguments.Contains("speed")){ + float distance = Math.Abs(Vector3.Distance(vector3s[0],vector3s[1])); + time = distance/(float)tweenArguments["speed"]; + } + } + + void GenerateScaleAddTargets(){ + //values holder [0] from, [1] to, [2] calculated value from ease equation: + vector3s=new Vector3[3]; + + //from values: + vector3s[0]=vector3s[1]=transform.localScale; + + //to values: + if (tweenArguments.Contains("amount")) { + vector3s[1]+=(Vector3)tweenArguments["amount"]; + }else{ + if (tweenArguments.Contains("x")) { + vector3s[1].x+=(float)tweenArguments["x"]; + } + if (tweenArguments.Contains("y")) { + vector3s[1].y+=(float)tweenArguments["y"]; + } + if (tweenArguments.Contains("z")) { + vector3s[1].z+=(float)tweenArguments["z"]; + } + } + + //need for speed? + if(tweenArguments.Contains("speed")){ + float distance = Math.Abs(Vector3.Distance(vector3s[0],vector3s[1])); + time = distance/(float)tweenArguments["speed"]; + } + } + + void GenerateRotateToTargets(){ + //values holder [0] from, [1] to, [2] calculated value from ease equation: + vector3s=new Vector3[3]; + + //from values: + if (isLocal) { + vector3s[0]=vector3s[1]=transform.localEulerAngles; + }else{ + vector3s[0]=vector3s[1]=transform.eulerAngles; + } + + //to values: + if (tweenArguments.Contains("rotation")) { + if (tweenArguments["rotation"].GetType() == typeof(Transform)){ + Transform trans = (Transform)tweenArguments["rotation"]; + vector3s[1]=trans.eulerAngles; + }else if(tweenArguments["rotation"].GetType() == typeof(Vector3)){ + vector3s[1]=(Vector3)tweenArguments["rotation"]; + } + }else{ + if (tweenArguments.Contains("x")) { + vector3s[1].x=(float)tweenArguments["x"]; + } + if (tweenArguments.Contains("y")) { + vector3s[1].y=(float)tweenArguments["y"]; + } + if (tweenArguments.Contains("z")) { + vector3s[1].z=(float)tweenArguments["z"]; + } + } + + //shortest distance: + vector3s[1]=new Vector3(clerp(vector3s[0].x,vector3s[1].x,1),clerp(vector3s[0].y,vector3s[1].y,1),clerp(vector3s[0].z,vector3s[1].z,1)); + + //need for speed? + if(tweenArguments.Contains("speed")){ + float distance = Math.Abs(Vector3.Distance(vector3s[0],vector3s[1])); + time = distance/(float)tweenArguments["speed"]; + } + } + + void GenerateRotateAddTargets(){ + //values holder [0] from, [1] to, [2] calculated value from ease equation, [3] previous value for Rotate usage to allow Space utilization: + vector3s=new Vector3[5]; + + //from values: + vector3s[0]=vector3s[1]=vector3s[3]=transform.eulerAngles; + + //to values: + if (tweenArguments.Contains("amount")) { + vector3s[1]+=(Vector3)tweenArguments["amount"]; + }else{ + if (tweenArguments.Contains("x")) { + vector3s[1].x+=(float)tweenArguments["x"]; + } + if (tweenArguments.Contains("y")) { + vector3s[1].y+=(float)tweenArguments["y"]; + } + if (tweenArguments.Contains("z")) { + vector3s[1].z+=(float)tweenArguments["z"]; + } + } + + //need for speed? + if(tweenArguments.Contains("speed")){ + float distance = Math.Abs(Vector3.Distance(vector3s[0],vector3s[1])); + time = distance/(float)tweenArguments["speed"]; + } + } + + void GenerateRotateByTargets(){ + //values holder [0] from, [1] to, [2] calculated value from ease equation, [3] previous value for Rotate usage to allow Space utilization: + vector3s=new Vector3[4]; + + //from values: + vector3s[0]=vector3s[1]=vector3s[3]=transform.eulerAngles; + + //to values: + if (tweenArguments.Contains("amount")) { + vector3s[1]+=Vector3.Scale((Vector3)tweenArguments["amount"],new Vector3(360,360,360)); + }else{ + if (tweenArguments.Contains("x")) { + vector3s[1].x+=360 * (float)tweenArguments["x"]; + } + if (tweenArguments.Contains("y")) { + vector3s[1].y+=360 * (float)tweenArguments["y"]; + } + if (tweenArguments.Contains("z")) { + vector3s[1].z+=360 * (float)tweenArguments["z"]; + } + } + + //need for speed? + if(tweenArguments.Contains("speed")){ + float distance = Math.Abs(Vector3.Distance(vector3s[0],vector3s[1])); + time = distance/(float)tweenArguments["speed"]; + } + } + + void GenerateShakePositionTargets(){ + //values holder [0] from, [1] to, [2] calculated value from ease equation, [3] original rotation to make sure look requests don't interfere with the direction object should move in: + vector3s=new Vector3[4]; + + //grab starting rotation: + vector3s[3] = transform.eulerAngles; + + //root: + vector3s[0]=transform.position; + + //amount: + if (tweenArguments.Contains("amount")) { + vector3s[1]=(Vector3)tweenArguments["amount"]; + }else{ + if (tweenArguments.Contains("x")) { + vector3s[1].x=(float)tweenArguments["x"]; + } + if (tweenArguments.Contains("y")) { + vector3s[1].y=(float)tweenArguments["y"]; + } + if (tweenArguments.Contains("z")) { + vector3s[1].z=(float)tweenArguments["z"]; + } + } + } + + void GenerateShakeScaleTargets(){ + //values holder [0] root value, [1] amount, [2] generated amount: + vector3s=new Vector3[3]; + + //root: + vector3s[0]=transform.localScale; + + //amount: + if (tweenArguments.Contains("amount")) { + vector3s[1]=(Vector3)tweenArguments["amount"]; + }else{ + if (tweenArguments.Contains("x")) { + vector3s[1].x=(float)tweenArguments["x"]; + } + if (tweenArguments.Contains("y")) { + vector3s[1].y=(float)tweenArguments["y"]; + } + if (tweenArguments.Contains("z")) { + vector3s[1].z=(float)tweenArguments["z"]; + } + } + } + + void GenerateShakeRotationTargets(){ + //values holder [0] root value, [1] amount, [2] generated amount: + vector3s=new Vector3[3]; + + //root: + vector3s[0]=transform.eulerAngles; + + //amount: + if (tweenArguments.Contains("amount")) { + vector3s[1]=(Vector3)tweenArguments["amount"]; + }else{ + if (tweenArguments.Contains("x")) { + vector3s[1].x=(float)tweenArguments["x"]; + } + if (tweenArguments.Contains("y")) { + vector3s[1].y=(float)tweenArguments["y"]; + } + if (tweenArguments.Contains("z")) { + vector3s[1].z=(float)tweenArguments["z"]; + } + } + } + + void GeneratePunchPositionTargets(){ + //values holder [0] from, [1] to, [2] calculated value from ease equation, [3] previous value for Translate usage to allow Space utilization, [4] original rotation to make sure look requests don't interfere with the direction object should move in: + vector3s=new Vector3[5]; + + //grab starting rotation: + vector3s[4] = transform.eulerAngles; + + //from values: + vector3s[0]=transform.position; + vector3s[1]=vector3s[3]=Vector3.zero; + + //to values: + if (tweenArguments.Contains("amount")) { + vector3s[1]=(Vector3)tweenArguments["amount"]; + }else{ + if (tweenArguments.Contains("x")) { + vector3s[1].x=(float)tweenArguments["x"]; + } + if (tweenArguments.Contains("y")) { + vector3s[1].y=(float)tweenArguments["y"]; + } + if (tweenArguments.Contains("z")) { + vector3s[1].z=(float)tweenArguments["z"]; + } + } + } + + void GeneratePunchRotationTargets(){ + //values holder [0] from, [1] to, [2] calculated value from ease equation, [3] previous value for Translate usage to allow Space utilization: + vector3s=new Vector3[4]; + + //from values: + vector3s[0]=transform.eulerAngles; + vector3s[1]=vector3s[3]=Vector3.zero; + + //to values: + if (tweenArguments.Contains("amount")) { + vector3s[1]=(Vector3)tweenArguments["amount"]; + }else{ + if (tweenArguments.Contains("x")) { + vector3s[1].x=(float)tweenArguments["x"]; + } + if (tweenArguments.Contains("y")) { + vector3s[1].y=(float)tweenArguments["y"]; + } + if (tweenArguments.Contains("z")) { + vector3s[1].z=(float)tweenArguments["z"]; + } + } + } + + void GeneratePunchScaleTargets(){ + //values holder [0] from, [1] to, [2] calculated value from ease equation: + vector3s=new Vector3[3]; + + //from values: + vector3s[0]=transform.localScale; + vector3s[1]=Vector3.zero; + + //to values: + if (tweenArguments.Contains("amount")) { + vector3s[1]=(Vector3)tweenArguments["amount"]; + }else{ + if (tweenArguments.Contains("x")) { + vector3s[1].x=(float)tweenArguments["x"]; + } + if (tweenArguments.Contains("y")) { + vector3s[1].y=(float)tweenArguments["y"]; + } + if (tweenArguments.Contains("z")) { + vector3s[1].z=(float)tweenArguments["z"]; + } + } + } + + #endregion + + #region #4 Apply Targets + + void ApplyRectTargets(){ + //calculate: + rects[2].x = ease(rects[0].x,rects[1].x,percentage); + rects[2].y = ease(rects[0].y,rects[1].y,percentage); + rects[2].width = ease(rects[0].width,rects[1].width,percentage); + rects[2].height = ease(rects[0].height,rects[1].height,percentage); + + //apply: + tweenArguments["onupdateparams"]=rects[2]; + + //dial in: + if(percentage==1){ + tweenArguments["onupdateparams"]=rects[1]; + } + } + + void ApplyColorTargets(){ + //calculate: + colors[0,2].r = ease(colors[0,0].r,colors[0,1].r,percentage); + colors[0,2].g = ease(colors[0,0].g,colors[0,1].g,percentage); + colors[0,2].b = ease(colors[0,0].b,colors[0,1].b,percentage); + colors[0,2].a = ease(colors[0,0].a,colors[0,1].a,percentage); + + //apply: + tweenArguments["onupdateparams"]=colors[0,2]; + + //dial in: + if(percentage==1){ + tweenArguments["onupdateparams"]=colors[0,1]; + } + } + + void ApplyVector3Targets(){ + //calculate: + vector3s[2].x = ease(vector3s[0].x,vector3s[1].x,percentage); + vector3s[2].y = ease(vector3s[0].y,vector3s[1].y,percentage); + vector3s[2].z = ease(vector3s[0].z,vector3s[1].z,percentage); + + //apply: + tweenArguments["onupdateparams"]=vector3s[2]; + + //dial in: + if(percentage==1){ + tweenArguments["onupdateparams"]=vector3s[1]; + } + } + + void ApplyVector2Targets(){ + //calculate: + vector2s[2].x = ease(vector2s[0].x,vector2s[1].x,percentage); + vector2s[2].y = ease(vector2s[0].y,vector2s[1].y,percentage); + + //apply: + tweenArguments["onupdateparams"]=vector2s[2]; + + //dial in: + if(percentage==1){ + tweenArguments["onupdateparams"]=vector2s[1]; + } + } + + void ApplyFloatTargets(){ + //calculate: + floats[2] = ease(floats[0],floats[1],percentage); + + //apply: + tweenArguments["onupdateparams"]=floats[2]; + + //dial in: + if(percentage==1){ + tweenArguments["onupdateparams"]=floats[1]; + } + } + + void ApplyColorToTargets(){ + //calculate: + for (int i = 0; i < colors.GetLength(0); i++) { + colors[i,2].r = ease(colors[i,0].r,colors[i,1].r,percentage); + colors[i,2].g = ease(colors[i,0].g,colors[i,1].g,percentage); + colors[i,2].b = ease(colors[i,0].b,colors[i,1].b,percentage); + colors[i,2].a = ease(colors[i,0].a,colors[i,1].a,percentage); + } + /* + colors[2].r = ease(colors[0].r,colors[1].r,percentage); + colors[2].g = ease(colors[0].g,colors[1].g,percentage); + colors[2].b = ease(colors[0].b,colors[1].b,percentage); + colors[2].a = ease(colors[0].a,colors[1].a,percentage); + */ + + //apply: + if(GetComponent(typeof(GUITexture))){ + //guiTexture.color=colors[2]; + GetComponent().color=colors[0,2]; + }else if(GetComponent(typeof(GUIText))){ + //guiText.material.color=colors[2]; + GetComponent().material.color=colors[0,2]; + }else if(GetComponent()){ + //renderer.material.color=colors[2]; + for (int i = 0; i < colors.GetLength(0); i++) { + GetComponent().materials[i].SetColor(namedcolorvalue.ToString(),colors[i,2]); + } + }else if(GetComponent()){ + //light.color=colors[2]; + GetComponent().color=colors[0,2]; + } + + //dial in: + if(percentage==1){ + if(GetComponent(typeof(GUITexture))){ + //guiTexture.color=colors[1]; + GetComponent().color=colors[0,1]; + }else if(GetComponent(typeof(GUIText))){ + //guiText.material.color=colors[1]; + GetComponent().material.color=colors[0,1]; + }else if(GetComponent()){ + //renderer.material.color=colors[1]; + for (int i = 0; i < colors.GetLength(0); i++) { + GetComponent().materials[i].SetColor(namedcolorvalue.ToString(),colors[i,1]); + } + }else if(GetComponent()){ + //light.color=colors[1]; + GetComponent().color=colors[0,1]; + } + } + } + + void ApplyAudioToTargets(){ + //calculate: + vector2s[2].x = ease(vector2s[0].x,vector2s[1].x,percentage); + vector2s[2].y = ease(vector2s[0].y,vector2s[1].y,percentage); + + //apply: + audioSource.volume=vector2s[2].x; + audioSource.pitch=vector2s[2].y; + + //dial in: + if(percentage==1){ + audioSource.volume=vector2s[1].x; + audioSource.pitch=vector2s[1].y; + } + } + + void ApplyStabTargets(){ + //unnecessary but here just in case + } + + void ApplyMoveToPathTargets(){ + preUpdate = transform.position; + float t = ease(0,1,percentage); + float lookAheadAmount; + + //clamp easing equation results as "back" will fail since overshoots aren't handled in the Catmull-Rom interpolation: + if(isLocal){ + transform.localPosition=path.Interp(Mathf.Clamp(t,0,1)); + }else{ + transform.position=path.Interp(Mathf.Clamp(t,0,1)); + } + + //handle orient to path request: + if(tweenArguments.Contains("orienttopath") && (bool)tweenArguments["orienttopath"]){ + + //plot a point slightly ahead in the interpolation by pushing the percentage forward using the default lookahead value: + float tLook; + if(tweenArguments.Contains("lookahead")){ + lookAheadAmount = (float)tweenArguments["lookahead"]; + }else{ + lookAheadAmount = Defaults.lookAhead; + } + //tLook = ease(0,1,percentage+lookAheadAmount); + tLook = ease(0,1, Mathf.Min(1f, percentage+lookAheadAmount)); + + //locate new leading point with a clamp as stated above: + //Vector3 lookDistance = path.Interp(Mathf.Clamp(tLook,0,1)) - transform.position; + tweenArguments["looktarget"] = path.Interp(Mathf.Clamp(tLook,0,1)); + } + + //need physics? + postUpdate=transform.position; + if(physics){ + transform.position=preUpdate; + GetComponent().MovePosition(postUpdate); + } + } + + void ApplyMoveToTargets(){ + //record current: + preUpdate=transform.position; + + //calculate: + vector3s[2].x = ease(vector3s[0].x,vector3s[1].x,percentage); + vector3s[2].y = ease(vector3s[0].y,vector3s[1].y,percentage); + vector3s[2].z = ease(vector3s[0].z,vector3s[1].z,percentage); + + //apply: + if (isLocal) { + transform.localPosition=vector3s[2]; + }else{ + transform.position=vector3s[2]; + } + + //dial in: + if(percentage==1){ + if (isLocal) { + transform.localPosition=vector3s[1]; + }else{ + transform.position=vector3s[1]; + } + } + + //need physics? + postUpdate=transform.position; + if(physics){ + transform.position=preUpdate; + GetComponent().MovePosition(postUpdate); + } + } + + void ApplyMoveByTargets(){ + preUpdate = transform.position; + + //reset rotation to prevent look interferences as object rotates and attempts to move with translate and record current rotation + Vector3 currentRotation = new Vector3(); + + if(tweenArguments.Contains("looktarget")){ + currentRotation = transform.eulerAngles; + transform.eulerAngles = vector3s[4]; + } + + //calculate: + vector3s[2].x = ease(vector3s[0].x,vector3s[1].x,percentage); + vector3s[2].y = ease(vector3s[0].y,vector3s[1].y,percentage); + vector3s[2].z = ease(vector3s[0].z,vector3s[1].z,percentage); + + //apply: + transform.Translate(vector3s[2]-vector3s[3],space); + + //record: + vector3s[3]=vector3s[2]; + + //reset rotation: + if(tweenArguments.Contains("looktarget")){ + transform.eulerAngles = currentRotation; + } + + /* + //dial in: + if(percentage==1){ + transform.position=vector3s[5]; + } + */ + + //need physics? + postUpdate=transform.position; + if(physics){ + transform.position=preUpdate; + GetComponent().MovePosition(postUpdate); + } + } + + void ApplyScaleToTargets(){ + //calculate: + vector3s[2].x = ease(vector3s[0].x,vector3s[1].x,percentage); + vector3s[2].y = ease(vector3s[0].y,vector3s[1].y,percentage); + vector3s[2].z = ease(vector3s[0].z,vector3s[1].z,percentage); + + //apply: + transform.localScale=vector3s[2]; + + //dial in: + if(percentage==1){ + transform.localScale=vector3s[1]; + } + } + + void ApplyLookToTargets(){ + //calculate: + vector3s[2].x = ease(vector3s[0].x,vector3s[1].x,percentage); + vector3s[2].y = ease(vector3s[0].y,vector3s[1].y,percentage); + vector3s[2].z = ease(vector3s[0].z,vector3s[1].z,percentage); + + //apply: + if (isLocal) { + transform.localRotation = Quaternion.Euler(vector3s[2]); + }else{ + transform.rotation = Quaternion.Euler(vector3s[2]); + }; + } + + void ApplyRotateToTargets(){ + preUpdate=transform.eulerAngles; + + //calculate: + vector3s[2].x = ease(vector3s[0].x,vector3s[1].x,percentage); + vector3s[2].y = ease(vector3s[0].y,vector3s[1].y,percentage); + vector3s[2].z = ease(vector3s[0].z,vector3s[1].z,percentage); + + //apply: + if (isLocal) { + transform.localRotation = Quaternion.Euler(vector3s[2]); + }else{ + transform.rotation = Quaternion.Euler(vector3s[2]); + }; + + //dial in: + if(percentage==1){ + if (isLocal) { + transform.localRotation = Quaternion.Euler(vector3s[1]); + }else{ + transform.rotation = Quaternion.Euler(vector3s[1]); + }; + } + + //need physics? + postUpdate=transform.eulerAngles; + if(physics){ + transform.eulerAngles=preUpdate; + GetComponent().MoveRotation(Quaternion.Euler(postUpdate)); + } + } + + void ApplyRotateAddTargets(){ + preUpdate = transform.eulerAngles; + + //calculate: + vector3s[2].x = ease(vector3s[0].x,vector3s[1].x,percentage); + vector3s[2].y = ease(vector3s[0].y,vector3s[1].y,percentage); + vector3s[2].z = ease(vector3s[0].z,vector3s[1].z,percentage); + + //apply: + transform.Rotate(vector3s[2]-vector3s[3],space); + + //record: + vector3s[3]=vector3s[2]; + + //need physics? + postUpdate=transform.eulerAngles; + if(physics){ + transform.eulerAngles=preUpdate; + GetComponent().MoveRotation(Quaternion.Euler(postUpdate)); + } + } + + void ApplyShakePositionTargets(){ + //preUpdate = transform.position; + if (isLocal) { + preUpdate = transform.localPosition; + }else{ + preUpdate = transform.position; + } + + //reset rotation to prevent look interferences as object rotates and attempts to move with translate and record current rotation + Vector3 currentRotation = new Vector3(); + + if(tweenArguments.Contains("looktarget")){ + currentRotation = transform.eulerAngles; + transform.eulerAngles = vector3s[3]; + } + + //impact: + if (percentage==0) { + transform.Translate(vector3s[1],space); + } + + //transform.position=vector3s[0]; + //reset: + if (isLocal) { + transform.localPosition=vector3s[0]; + }else{ + transform.position=vector3s[0]; + } + + //generate: + float diminishingControl = 1-percentage; + vector3s[2].x= UnityEngine.Random.Range(-vector3s[1].x*diminishingControl, vector3s[1].x*diminishingControl); + vector3s[2].y= UnityEngine.Random.Range(-vector3s[1].y*diminishingControl, vector3s[1].y*diminishingControl); + vector3s[2].z= UnityEngine.Random.Range(-vector3s[1].z*diminishingControl, vector3s[1].z*diminishingControl); + + //apply: + //transform.Translate(vector3s[2],space); + if (isLocal) { + transform.localPosition+=vector3s[2]; + }else{ + transform.position+=vector3s[2]; + } + + //reset rotation: + if(tweenArguments.Contains("looktarget")){ + transform.eulerAngles = currentRotation; + } + + //need physics? + postUpdate=transform.position; + if(physics){ + transform.position=preUpdate; + GetComponent().MovePosition(postUpdate); + } + } + + void ApplyShakeScaleTargets(){ + //impact: + if (percentage==0) { + transform.localScale=vector3s[1]; + } + + //reset: + transform.localScale=vector3s[0]; + + //generate: + float diminishingControl = 1-percentage; + vector3s[2].x= UnityEngine.Random.Range(-vector3s[1].x*diminishingControl, vector3s[1].x*diminishingControl); + vector3s[2].y= UnityEngine.Random.Range(-vector3s[1].y*diminishingControl, vector3s[1].y*diminishingControl); + vector3s[2].z= UnityEngine.Random.Range(-vector3s[1].z*diminishingControl, vector3s[1].z*diminishingControl); + + //apply: + transform.localScale+=vector3s[2]; + } + + void ApplyShakeRotationTargets(){ + preUpdate = transform.eulerAngles; + + //impact: + if (percentage==0) { + transform.Rotate(vector3s[1],space); + } + + //reset: + transform.eulerAngles=vector3s[0]; + + //generate: + float diminishingControl = 1-percentage; + vector3s[2].x= UnityEngine.Random.Range(-vector3s[1].x*diminishingControl, vector3s[1].x*diminishingControl); + vector3s[2].y= UnityEngine.Random.Range(-vector3s[1].y*diminishingControl, vector3s[1].y*diminishingControl); + vector3s[2].z= UnityEngine.Random.Range(-vector3s[1].z*diminishingControl, vector3s[1].z*diminishingControl); + + //apply: + transform.Rotate(vector3s[2],space); + + //need physics? + postUpdate=transform.eulerAngles; + if(physics){ + transform.eulerAngles=preUpdate; + GetComponent().MoveRotation(Quaternion.Euler(postUpdate)); + } + } + + void ApplyPunchPositionTargets(){ + preUpdate = transform.position; + + //reset rotation to prevent look interferences as object rotates and attempts to move with translate and record current rotation + Vector3 currentRotation = new Vector3(); + + if(tweenArguments.Contains("looktarget")){ + currentRotation = transform.eulerAngles; + transform.eulerAngles = vector3s[4]; + } + + //calculate: + if(vector3s[1].x>0){ + vector3s[2].x = punch(vector3s[1].x,percentage); + }else if(vector3s[1].x<0){ + vector3s[2].x=-punch(Mathf.Abs(vector3s[1].x),percentage); + } + if(vector3s[1].y>0){ + vector3s[2].y=punch(vector3s[1].y,percentage); + }else if(vector3s[1].y<0){ + vector3s[2].y=-punch(Mathf.Abs(vector3s[1].y),percentage); + } + if(vector3s[1].z>0){ + vector3s[2].z=punch(vector3s[1].z,percentage); + }else if(vector3s[1].z<0){ + vector3s[2].z=-punch(Mathf.Abs(vector3s[1].z),percentage); + } + + //apply: + transform.Translate(vector3s[2]-vector3s[3],space); + + //record: + vector3s[3]=vector3s[2]; + + //reset rotation: + if(tweenArguments.Contains("looktarget")){ + transform.eulerAngles = currentRotation; + } + + //dial in: + /* + if(percentage==1){ + transform.position=vector3s[0]; + } + */ + + //need physics? + postUpdate=transform.position; + if(physics){ + transform.position=preUpdate; + GetComponent().MovePosition(postUpdate); + } + } + + void ApplyPunchRotationTargets(){ + preUpdate = transform.eulerAngles; + + //calculate: + if(vector3s[1].x>0){ + vector3s[2].x = punch(vector3s[1].x,percentage); + }else if(vector3s[1].x<0){ + vector3s[2].x=-punch(Mathf.Abs(vector3s[1].x),percentage); + } + if(vector3s[1].y>0){ + vector3s[2].y=punch(vector3s[1].y,percentage); + }else if(vector3s[1].y<0){ + vector3s[2].y=-punch(Mathf.Abs(vector3s[1].y),percentage); + } + if(vector3s[1].z>0){ + vector3s[2].z=punch(vector3s[1].z,percentage); + }else if(vector3s[1].z<0){ + vector3s[2].z=-punch(Mathf.Abs(vector3s[1].z),percentage); + } + + //apply: + transform.Rotate(vector3s[2]-vector3s[3],space); + + //record: + vector3s[3]=vector3s[2]; + + //dial in: + /* + if(percentage==1){ + transform.eulerAngles=vector3s[0]; + } + */ + + //need physics? + postUpdate=transform.eulerAngles; + if(physics){ + transform.eulerAngles=preUpdate; + GetComponent().MoveRotation(Quaternion.Euler(postUpdate)); + } + } + + void ApplyPunchScaleTargets(){ + //calculate: + if(vector3s[1].x>0){ + vector3s[2].x = punch(vector3s[1].x,percentage); + }else if(vector3s[1].x<0){ + vector3s[2].x=-punch(Mathf.Abs(vector3s[1].x),percentage); + } + if(vector3s[1].y>0){ + vector3s[2].y=punch(vector3s[1].y,percentage); + }else if(vector3s[1].y<0){ + vector3s[2].y=-punch(Mathf.Abs(vector3s[1].y),percentage); + } + if(vector3s[1].z>0){ + vector3s[2].z=punch(vector3s[1].z,percentage); + }else if(vector3s[1].z<0){ + vector3s[2].z=-punch(Mathf.Abs(vector3s[1].z),percentage); + } + + //apply: + transform.localScale=vector3s[0]+vector3s[2]; + + //dial in: + /* + if(percentage==1){ + transform.localScale=vector3s[0]; + } + */ + } + + #endregion + + #region #5 Tween Steps + + IEnumerator TweenDelay(){ + delayStarted = Time.time; + yield return new WaitForSeconds (delay); + if(wasPaused){ + wasPaused=false; + TweenStart(); + } + } + + void TweenStart(){ + CallBack("onstart"); + + if(!loop){//only if this is not a loop + ConflictCheck(); + GenerateTargets(); + } + + //run stab: + if(type == "stab"){ + audioSource.PlayOneShot(audioSource.clip); + } + + //toggle isKinematic for iTweens that may interfere with physics: + if (type == "move" || type=="scale" || type=="rotate" || type=="punch" || type=="shake" || type=="curve" || type=="look") { + EnableKinematic(); + } + + isRunning = true; + } + + IEnumerator TweenRestart(){ + if(delay > 0){ + delayStarted = Time.time; + yield return new WaitForSeconds (delay); + } + loop=true; + TweenStart(); + } + + void TweenUpdate(){ + apply(); + CallBack("onupdate"); + UpdatePercentage(); + } + + void TweenComplete(){ + isRunning=false; + + //dial in percentage to 1 or 0 for final run: + if(percentage>.5f){ + percentage=1f; + }else{ + percentage=0; + } + + //apply dial in and final run: + apply(); + if(type == "value"){ + CallBack("onupdate"); //CallBack run for ValueTo since it only calculates and applies in the update callback + } + + //loop or dispose? + if(loopType==LoopType.none){ + Dispose(); + }else{ + TweenLoop(); + } + + CallBack("oncomplete"); + } + + void TweenLoop(){ + DisableKinematic(); //give physics control again + switch(loopType){ + case LoopType.loop: + //rewind: + percentage=0; + runningTime=0; + apply(); + + //replay: + StartCoroutine("TweenRestart"); + break; + case LoopType.pingPong: + reverse = !reverse; + runningTime=0; + + //replay: + StartCoroutine("TweenRestart"); + break; + } + } + + #endregion + + #region #6 Update Callable + + /// + /// Returns a Rect that is eased between a current and target value by the supplied speed. + /// + /// + /// A + /// + /// A the starting or initial value + /// + /// + /// A the target value that the current value will be eased to. + /// + /// + /// A to be used as rate of speed (larger number equals faster animation) + /// + public static Rect RectUpdate(Rect currentValue, Rect targetValue, float speed){ + Rect diff = new Rect(FloatUpdate(currentValue.x, targetValue.x, speed), FloatUpdate(currentValue.y, targetValue.y, speed), FloatUpdate(currentValue.width, targetValue.width, speed), FloatUpdate(currentValue.height, targetValue.height, speed)); + return (diff); + } + + /// + /// Returns a Vector3 that is eased between a current and target value by the supplied speed. + /// + /// + /// A + /// + /// + /// A the starting or initial value + /// + /// + /// A the target value that the current value will be eased to. + /// + /// + /// A to be used as rate of speed (larger number equals faster animation) + /// + public static Vector3 Vector3Update(Vector3 currentValue, Vector3 targetValue, float speed){ + Vector3 diff = targetValue - currentValue; + currentValue += (diff * speed) * Time.deltaTime; + return (currentValue); + } + + /// + /// Returns a Vector2 that is eased between a current and target value by the supplied speed. + /// + /// + /// A + /// + /// + /// A the starting or initial value + /// + /// + /// A the target value that the current value will be eased to. + /// + /// + /// A to be used as rate of speed (larger number equals faster animation) + /// + public static Vector2 Vector2Update(Vector2 currentValue, Vector2 targetValue, float speed){ + Vector2 diff = targetValue - currentValue; + currentValue += (diff * speed) * Time.deltaTime; + return (currentValue); + } + + /// + /// Returns a float that is eased between a current and target value by the supplied speed. + /// + /// + /// A + /// + /// + /// A the starting or initial value + /// + /// + /// A the target value that the current value will be eased to. + /// + /// + /// A to be used as rate of speed (larger number equals faster animation) + /// + public static float FloatUpdate(float currentValue, float targetValue, float speed){ + float diff = targetValue - currentValue; + currentValue += (diff * speed) * Time.deltaTime; + return (currentValue); + } + + /// + /// Similar to FadeTo but incredibly less expensive for usage inside the Update function or similar looping situations involving a "live" set of changing values with FULL customization options. Does not utilize an EaseType. + /// + /// + /// A or for the final alpha value of the animation. + /// + /// + /// A for whether or not to include children of this GameObject. True by default. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + public static void FadeUpdate(GameObject target, Hashtable args){ + args["a"]=args["alpha"]; + ColorUpdate(target,args); + } + + /// + /// Similar to FadeTo but incredibly less expensive for usage inside the Update function or similar looping situations involving a "live" set of changing values with MINIMUM customization options. Does not utilize an EaseType. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the final alpha value of the animation. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void FadeUpdate(GameObject target, float alpha, float time){ + FadeUpdate(target,Hash("alpha",alpha,"time",time)); + } + + /// + /// Similar to ColorTo but incredibly less expensive for usage inside the Update function or similar looping situations involving a "live" set of changing values with FULL customization options. Does not utilize an EaseType. + /// + /// + /// A to change the GameObject's color to. + /// + /// + /// A or for the individual setting of the color red. + /// + /// + /// A or for the individual setting of the color green. + /// + /// + /// A or for the individual setting of the color green. + /// + /// + /// A or for the individual setting of the alpha. + /// + /// + /// A or for the individual setting of the alpha. + /// + /// + /// A for whether or not to include children of this GameObject. True by default. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + public static void ColorUpdate(GameObject target, Hashtable args){ + CleanArgs(args); + + float time; + Color[] colors = new Color[4]; + + //handle children: + if(!args.Contains("includechildren") || (bool)args["includechildren"]){ + foreach(Transform child in target.transform){ + ColorUpdate(child.gameObject,args); + } + } + + //set smooth time: + if(args.Contains("time")){ + time=(float)args["time"]; + time*=Defaults.updateTimePercentage; + }else{ + time=Defaults.updateTime; + } + + //init values: + if(target.GetComponent(typeof(GUITexture))){ + colors[0] = colors[1] = target.GetComponent().color; + }else if(target.GetComponent(typeof(GUIText))){ + colors[0] = colors[1] = target.GetComponent().material.color; + }else if(target.GetComponent()){ + colors[0] = colors[1] = target.GetComponent().material.color; + }else if(target.GetComponent()){ + colors[0] = colors[1] = target.GetComponent().color; + } + + //to values: + if (args.Contains("color")) { + colors[1]=(Color)args["color"]; + }else{ + if (args.Contains("r")) { + colors[1].r=(float)args["r"]; + } + if (args.Contains("g")) { + colors[1].g=(float)args["g"]; + } + if (args.Contains("b")) { + colors[1].b=(float)args["b"]; + } + if (args.Contains("a")) { + colors[1].a=(float)args["a"]; + } + } + + //calculate: + colors[3].r=Mathf.SmoothDamp(colors[0].r,colors[1].r,ref colors[2].r,time); + colors[3].g=Mathf.SmoothDamp(colors[0].g,colors[1].g,ref colors[2].g,time); + colors[3].b=Mathf.SmoothDamp(colors[0].b,colors[1].b,ref colors[2].b,time); + colors[3].a=Mathf.SmoothDamp(colors[0].a,colors[1].a,ref colors[2].a,time); + + //apply: + if(target.GetComponent(typeof(GUITexture))){ + target.GetComponent().color=colors[3]; + }else if(target.GetComponent(typeof(GUIText))){ + target.GetComponent().material.color=colors[3]; + }else if(target.GetComponent()){ + target.GetComponent().material.color=colors[3]; + }else if(target.GetComponent()){ + target.GetComponent().color=colors[3]; + } + } + + /// + /// Similar to ColorTo but incredibly less expensive for usage inside the Update function or similar looping situations involving a "live" set of changing values with MINIMUM customization options. Does not utilize an EaseType. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A to change the GameObject's color to. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void ColorUpdate(GameObject target, Color color, float time){ + ColorUpdate(target,Hash("color",color,"time",time)); + } + + /// + /// Similar to AudioTo but incredibly less expensive for usage inside the Update function or similar looping situations involving a "live" set of changing values with FULL customization options. Does not utilize an EaseType. + /// + /// + /// A for which AudioSource to use. + /// + /// + /// A or for the target level of volume. + /// + /// + /// A or for the target pitch. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + public static void AudioUpdate(GameObject target, Hashtable args){ + CleanArgs(args); + + AudioSource audioSource; + float time; + Vector2[] vector2s = new Vector2[4]; + + //set smooth time: + if(args.Contains("time")){ + time=(float)args["time"]; + time*=Defaults.updateTimePercentage; + }else{ + time=Defaults.updateTime; + } + + //set audioSource: + if(args.Contains("audiosource")){ + audioSource=(AudioSource)args["audiosource"]; + }else{ + if(target.GetComponent(typeof(AudioSource))){ + audioSource=target.GetComponent(); + }else{ + //throw error if no AudioSource is available: + Debug.LogError("iTween Error: AudioUpdate requires an AudioSource."); + return; + } + } + + //from values: + vector2s[0] = vector2s[1] = new Vector2(audioSource.volume,audioSource.pitch); + + //set to: + if(args.Contains("volume")){ + vector2s[1].x=(float)args["volume"]; + } + if(args.Contains("pitch")){ + vector2s[1].y=(float)args["pitch"]; + } + + //calculate: + vector2s[3].x=Mathf.SmoothDampAngle(vector2s[0].x,vector2s[1].x,ref vector2s[2].x,time); + vector2s[3].y=Mathf.SmoothDampAngle(vector2s[0].y,vector2s[1].y,ref vector2s[2].y,time); + + //apply: + audioSource.volume=vector2s[3].x; + audioSource.pitch=vector2s[3].y; + } + + /// + /// Similar to AudioTo but incredibly less expensive for usage inside the Update function or similar looping situations involving a "live" set of changing values with MINIMUM customization options. Does not utilize an EaseType. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the target level of volume. + /// + /// + /// A for the target pitch. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void AudioUpdate(GameObject target, float volume, float pitch, float time){ + AudioUpdate(target,Hash("volume",volume,"pitch",pitch,"time",time)); + } + + /// + /// Similar to RotateTo but incredibly less expensive for usage inside the Update function or similar looping situations involving a "live" set of changing values with FULL customization options. Does not utilize an EaseType. + /// + /// + /// A or for the target Euler angles in degrees to rotate to. + /// + /// + /// A or for the individual setting of the x axis. + /// + /// + /// A or for the individual setting of the y axis. + /// + /// + /// A or for the individual setting of the z axis. + /// + /// + /// A for whether to animate in world space or relative to the parent. False by default. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + public static void RotateUpdate(GameObject target, Hashtable args){ + CleanArgs(args); + + bool isLocal; + float time; + Vector3[] vector3s = new Vector3[4]; + Vector3 preUpdate = target.transform.eulerAngles; + + //set smooth time: + if(args.Contains("time")){ + time=(float)args["time"]; + time*=Defaults.updateTimePercentage; + }else{ + time=Defaults.updateTime; + } + + //set isLocal: + if(args.Contains("islocal")){ + isLocal = (bool)args["islocal"]; + }else{ + isLocal = Defaults.isLocal; + } + + //from values: + if(isLocal){ + vector3s[0] = target.transform.localEulerAngles; + }else{ + vector3s[0] = target.transform.eulerAngles; + } + + //set to: + if(args.Contains("rotation")){ + if (args["rotation"].GetType() == typeof(Transform)){ + Transform trans = (Transform)args["rotation"]; + vector3s[1]=trans.eulerAngles; + }else if(args["rotation"].GetType() == typeof(Vector3)){ + vector3s[1]=(Vector3)args["rotation"]; + } + } + + //calculate: + vector3s[3].x=Mathf.SmoothDampAngle(vector3s[0].x,vector3s[1].x,ref vector3s[2].x,time); + vector3s[3].y=Mathf.SmoothDampAngle(vector3s[0].y,vector3s[1].y,ref vector3s[2].y,time); + vector3s[3].z=Mathf.SmoothDampAngle(vector3s[0].z,vector3s[1].z,ref vector3s[2].z,time); + + //apply: + if(isLocal){ + target.transform.localEulerAngles=vector3s[3]; + }else{ + target.transform.eulerAngles=vector3s[3]; + } + + //need physics? + if(target.GetComponent() != null){ + Vector3 postUpdate=target.transform.eulerAngles; + target.transform.eulerAngles=preUpdate; + target.GetComponent().MoveRotation(Quaternion.Euler(postUpdate)); + } + } + + /// + /// Similar to RotateTo but incredibly less expensive for usage inside the Update function or similar looping situations involving a "live" set of changing values with MINIMUM customization options. Does not utilize an EaseType. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the target Euler angles in degrees to rotate to. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void RotateUpdate(GameObject target, Vector3 rotation, float time){ + RotateUpdate(target,Hash("rotation",rotation,"time",time)); + } + + /// + /// Similar to ScaleTo but incredibly less expensive for usage inside the Update function or similar looping situations involving a "live" set of changing values with FULL customization options. Does not utilize an EaseType. + /// + /// + /// A or for the final scale. + /// + /// + /// A or for the individual setting of the x axis. + /// + /// + /// A or for the individual setting of the y axis. + /// + /// + /// A or for the individual setting of the z axis. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + public static void ScaleUpdate(GameObject target, Hashtable args){ + CleanArgs(args); + + float time; + Vector3[] vector3s = new Vector3[4]; + + //set smooth time: + if(args.Contains("time")){ + time=(float)args["time"]; + time*=Defaults.updateTimePercentage; + }else{ + time=Defaults.updateTime; + } + + //init values: + vector3s[0] = vector3s[1] = target.transform.localScale; + + //to values: + if (args.Contains("scale")) { + if (args["scale"].GetType() == typeof(Transform)){ + Transform trans = (Transform)args["scale"]; + vector3s[1]=trans.localScale; + }else if(args["scale"].GetType() == typeof(Vector3)){ + vector3s[1]=(Vector3)args["scale"]; + } + }else{ + if (args.Contains("x")) { + vector3s[1].x=(float)args["x"]; + } + if (args.Contains("y")) { + vector3s[1].y=(float)args["y"]; + } + if (args.Contains("z")) { + vector3s[1].z=(float)args["z"]; + } + } + + //calculate: + vector3s[3].x=Mathf.SmoothDamp(vector3s[0].x,vector3s[1].x,ref vector3s[2].x,time); + vector3s[3].y=Mathf.SmoothDamp(vector3s[0].y,vector3s[1].y,ref vector3s[2].y,time); + vector3s[3].z=Mathf.SmoothDamp(vector3s[0].z,vector3s[1].z,ref vector3s[2].z,time); + + //apply: + target.transform.localScale=vector3s[3]; + } + + /// + /// Similar to ScaleTo but incredibly less expensive for usage inside the Update function or similar looping situations involving a "live" set of changing values with MINIMUM customization options. Does not utilize an EaseType. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for the final scale. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void ScaleUpdate(GameObject target, Vector3 scale, float time){ + ScaleUpdate(target,Hash("scale",scale,"time",time)); + } + + /// + /// Similar to MoveTo but incredibly less expensive for usage inside the Update function or similar looping situations involving a "live" set of changing values with FULL customization options. Does not utilize an EaseType. + /// + /// + /// A or for a point in space the GameObject will animate to. + /// + /// + /// A or for the individual setting of the x axis. + /// + /// + /// A or for the individual setting of the y axis. + /// + /// + /// A or for the individual setting of the z axis. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + /// + /// A for whether to animate in world space or relative to the parent. False by default. + /// + /// + /// A for whether or not the GameObject will orient to its direction of travel. False by default. + /// + /// + /// A or A for a target the GameObject will look at. + /// + /// + /// A or for the time in seconds the object will take to look at either the "looktarget" or "orienttopath". + /// + /// + /// A . Restricts rotation to the supplied axis only. + /// + public static void MoveUpdate(GameObject target, Hashtable args){ + CleanArgs(args); + + float time; + Vector3[] vector3s = new Vector3[4]; + bool isLocal; + Vector3 preUpdate = target.transform.position; + + //set smooth time: + if(args.Contains("time")){ + time=(float)args["time"]; + time*=Defaults.updateTimePercentage; + }else{ + time=Defaults.updateTime; + } + + //set isLocal: + if(args.Contains("islocal")){ + isLocal = (bool)args["islocal"]; + }else{ + isLocal = Defaults.isLocal; + } + + //init values: + if(isLocal){ + vector3s[0] = vector3s[1] = target.transform.localPosition; + }else{ + vector3s[0] = vector3s[1] = target.transform.position; + } + + //to values: + if (args.Contains("position")) { + if (args["position"].GetType() == typeof(Transform)){ + Transform trans = (Transform)args["position"]; + vector3s[1]=trans.position; + }else if(args["position"].GetType() == typeof(Vector3)){ + vector3s[1]=(Vector3)args["position"]; + } + }else{ + if (args.Contains("x")) { + vector3s[1].x=(float)args["x"]; + } + if (args.Contains("y")) { + vector3s[1].y=(float)args["y"]; + } + if (args.Contains("z")) { + vector3s[1].z=(float)args["z"]; + } + } + + //calculate: + vector3s[3].x=Mathf.SmoothDamp(vector3s[0].x,vector3s[1].x,ref vector3s[2].x,time); + vector3s[3].y=Mathf.SmoothDamp(vector3s[0].y,vector3s[1].y,ref vector3s[2].y,time); + vector3s[3].z=Mathf.SmoothDamp(vector3s[0].z,vector3s[1].z,ref vector3s[2].z,time); + + //handle orient to path: + if(args.Contains("orienttopath") && (bool)args["orienttopath"]){ + args["looktarget"] = vector3s[3]; + } + + //look applications: + if(args.Contains("looktarget")){ + iTween.LookUpdate(target,args); + } + + //apply: + if(isLocal){ + target.transform.localPosition = vector3s[3]; + }else{ + target.transform.position=vector3s[3]; + } + + //need physics? + if(target.GetComponent() != null){ + Vector3 postUpdate=target.transform.position; + target.transform.position=preUpdate; + target.GetComponent().MovePosition(postUpdate); + } + } + + /// + /// Similar to MoveTo but incredibly less expensive for usage inside the Update function or similar looping situations involving a "live" set of changing values with MINIMUM customization options. Does not utilize an EaseType. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for a point in space the GameObject will animate to. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void MoveUpdate(GameObject target, Vector3 position, float time){ + MoveUpdate(target,Hash("position",position,"time",time)); + } + + /// + /// Similar to LookTo but incredibly less expensive for usage inside the Update function or similar looping situations involving a "live" set of changing values with FULL customization options. Does not utilize an EaseType. + /// + /// + /// A or for a target the GameObject will look at. + /// + /// + /// A . Restricts rotation to the supplied axis only. + /// + /// + /// A or for the time in seconds the animation will take to complete. + /// + public static void LookUpdate(GameObject target, Hashtable args){ + CleanArgs(args); + + float time; + Vector3[] vector3s = new Vector3[5]; + + //set smooth time: + if(args.Contains("looktime")){ + time=(float)args["looktime"]; + time*=Defaults.updateTimePercentage; + }else if(args.Contains("time")){ + time=(float)args["time"]*.15f; + time*=Defaults.updateTimePercentage; + }else{ + time=Defaults.updateTime; + } + + //from values: + vector3s[0] = target.transform.eulerAngles; + + //set look: + if(args.Contains("looktarget")){ + if (args["looktarget"].GetType() == typeof(Transform)) { + //target.transform.LookAt((Transform)args["looktarget"]); + target.transform.LookAt((Transform)args["looktarget"], (Vector3?)args["up"] ?? Defaults.up); + }else if(args["looktarget"].GetType() == typeof(Vector3)){ + //target.transform.LookAt((Vector3)args["looktarget"]); + target.transform.LookAt((Vector3)args["looktarget"], (Vector3?)args["up"] ?? Defaults.up); + } + }else{ + Debug.LogError("iTween Error: LookUpdate needs a 'looktarget' property!"); + return; + } + + //to values and reset look: + vector3s[1]=target.transform.eulerAngles; + target.transform.eulerAngles=vector3s[0]; + + //calculate: + vector3s[3].x=Mathf.SmoothDampAngle(vector3s[0].x,vector3s[1].x,ref vector3s[2].x,time); + vector3s[3].y=Mathf.SmoothDampAngle(vector3s[0].y,vector3s[1].y,ref vector3s[2].y,time); + vector3s[3].z=Mathf.SmoothDampAngle(vector3s[0].z,vector3s[1].z,ref vector3s[2].z,time); + + //apply: + target.transform.eulerAngles=vector3s[3]; + + //axis restriction: + if(args.Contains("axis")){ + vector3s[4]=target.transform.eulerAngles; + switch((string)args["axis"]){ + case "x": + vector3s[4].y=vector3s[0].y; + vector3s[4].z=vector3s[0].z; + break; + case "y": + vector3s[4].x=vector3s[0].x; + vector3s[4].z=vector3s[0].z; + break; + case "z": + vector3s[4].x=vector3s[0].x; + vector3s[4].y=vector3s[0].y; + break; + } + + //apply axis restriction: + target.transform.eulerAngles=vector3s[4]; + } + } + + /// + /// Similar to LookTo but incredibly less expensive for usage inside the Update function or similar looping situations involving a "live" set of changing values with FULL customization options. Does not utilize an EaseType. + /// + /// + /// A to be the target of the animation. + /// + /// + /// A for a target the GameObject will look at. + /// + /// + /// A for the time in seconds the animation will take to complete. + /// + public static void LookUpdate(GameObject target, Vector3 looktarget, float time){ + LookUpdate(target,Hash("looktarget",looktarget,"time",time)); + } + + #endregion + + #region #7 External Utilities + + /// + /// Returns the length of a curved path drawn through the provided array of Transforms. + /// + /// + /// A + /// + /// + /// A + /// + public static float PathLength(Transform[] path){ + Vector3[] suppliedPath = new Vector3[path.Length]; + float pathLength = 0; + + //create and store path points: + for (int i = 0; i < path.Length; i++) { + suppliedPath[i]=path[i].position; + } + + Vector3[] vector3s = PathControlPointGenerator(suppliedPath); + + //Line Draw: + Vector3 prevPt = Interp(vector3s,0); + int SmoothAmount = path.Length*20; + for (int i = 1; i <= SmoothAmount; i++) { + float pm = (float) i / SmoothAmount; + Vector3 currPt = Interp(vector3s,pm); + pathLength += Vector3.Distance(prevPt,currPt); + prevPt = currPt; + } + + return pathLength; + } + + /// + /// Returns the length of a curved path drawn through the provided array of Vector3s. + /// + /// + /// The length. + /// + /// + /// A + /// + public static float PathLength(Vector3[] path){ + float pathLength = 0; + + Vector3[] vector3s = PathControlPointGenerator(path); + + //Line Draw: + Vector3 prevPt = Interp(vector3s,0); + int SmoothAmount = path.Length*20; + for (int i = 1; i <= SmoothAmount; i++) { + float pm = (float) i / SmoothAmount; + Vector3 currPt = Interp(vector3s,pm); + pathLength += Vector3.Distance(prevPt,currPt); + prevPt = currPt; + } + + return pathLength; + } + + /// + /// Creates and returns a full-screen Texture2D for use with CameraFade. + /// + /// + /// Texture2D + /// + /// + /// Color + /// + public static Texture2D CameraTexture(Color color){ + Texture2D texture = new Texture2D(Screen.width,Screen.height,TextureFormat.ARGB32, false); + Color[] colors = new Color[Screen.width*Screen.height]; + for (int i = 0; i < colors.Length; i++) { + colors[i]=color; + } + texture.SetPixels(colors); + texture.Apply(); + return(texture); + } + + /// + /// Puts a GameObject on a path at the provided percentage + /// + /// + /// A + /// + /// + /// A + /// + /// + /// A + /// + public static void PutOnPath(GameObject target, Vector3[] path, float percent){ + target.transform.position=Interp(PathControlPointGenerator(path),percent); + } + + /// + /// Puts a GameObject on a path at the provided percentage + /// + /// + /// A + /// + /// + /// A + /// + /// + /// A + /// + public static void PutOnPath(Transform target, Vector3[] path, float percent){ + target.position=Interp(PathControlPointGenerator(path),percent); + } + + /// + /// Puts a GameObject on a path at the provided percentage + /// + /// + /// A + /// + /// + /// A + /// + /// + /// A + /// + public static void PutOnPath(GameObject target, Transform[] path, float percent){ + //create and store path points: + Vector3[] suppliedPath = new Vector3[path.Length]; + for (int i = 0; i < path.Length; i++) { + suppliedPath[i]=path[i].position; + } + target.transform.position=Interp(PathControlPointGenerator(suppliedPath),percent); + } + + /// + /// Puts a GameObject on a path at the provided percentage + /// + /// + /// A + /// + /// + /// A + /// + /// + /// A + /// + public static void PutOnPath(Transform target, Transform[] path, float percent){ + //create and store path points: + Vector3[] suppliedPath = new Vector3[path.Length]; + for (int i = 0; i < path.Length; i++) { + suppliedPath[i]=path[i].position; + } + target.position=Interp(PathControlPointGenerator(suppliedPath),percent); + } + + /// + /// Returns a Vector3 position on a path at the provided percentage + /// + /// + /// A + /// + /// + /// A + /// + /// + /// A + /// + public static Vector3 PointOnPath(Transform[] path, float percent){ + //create and store path points: + Vector3[] suppliedPath = new Vector3[path.Length]; + for (int i = 0; i < path.Length; i++) { + suppliedPath[i]=path[i].position; + } + return(Interp(PathControlPointGenerator(suppliedPath),percent)); + } + + /// + /// When called from an OnDrawGizmos() function it will draw a line through the provided array of Vector3s. + /// + /// + /// A + /// + public static void DrawLine(Vector3[] line) { + if(line.Length>0){ + DrawLineHelper(line,Defaults.color,"gizmos"); + } + } + + /// + /// When called from an OnDrawGizmos() function it will draw a line through the provided array of Vector3s. + /// + /// + /// A + /// + /// + /// A + /// + public static void DrawLine(Vector3[] line, Color color) { + if(line.Length>0){ + DrawLineHelper(line,color,"gizmos"); + } + } + + /// + /// When called from an OnDrawGizmos() function it will draw a line through the provided array of Transforms. + /// + /// + /// A + /// + public static void DrawLine(Transform[] line) { + if(line.Length>0){ + //create and store line points: + Vector3[] suppliedLine = new Vector3[line.Length]; + for (int i = 0; i < line.Length; i++) { + suppliedLine[i]=line[i].position; + } + DrawLineHelper(suppliedLine,Defaults.color,"gizmos"); + } + } + + /// + /// When called from an OnDrawGizmos() function it will draw a line through the provided array of Transforms. + /// + /// + /// A + /// + /// + /// A + /// + public static void DrawLine(Transform[] line,Color color) { + if(line.Length>0){ + //create and store line points: + Vector3[] suppliedLine = new Vector3[line.Length]; + for (int i = 0; i < line.Length; i++) { + suppliedLine[i]=line[i].position; + } + + DrawLineHelper(suppliedLine, color,"gizmos"); + } + } + + /// + /// Draws a line through the provided array of Vector3s with Gizmos.DrawLine(). + /// + /// + /// A + /// + public static void DrawLineGizmos(Vector3[] line) { + if(line.Length>0){ + DrawLineHelper(line,Defaults.color,"gizmos"); + } + } + + /// + /// Draws a line through the provided array of Vector3s with Gizmos.DrawLine(). + /// + /// + /// A + /// + /// + /// A + /// + public static void DrawLineGizmos(Vector3[] line, Color color) { + if(line.Length>0){ + DrawLineHelper(line,color,"gizmos"); + } + } + + /// + /// Draws a line through the provided array of Transforms with Gizmos.DrawLine(). + /// + /// + /// A + /// + public static void DrawLineGizmos(Transform[] line) { + if(line.Length>0){ + //create and store line points: + Vector3[] suppliedLine = new Vector3[line.Length]; + for (int i = 0; i < line.Length; i++) { + suppliedLine[i]=line[i].position; + } + DrawLineHelper(suppliedLine,Defaults.color,"gizmos"); + } + } + + /// + /// Draws a line through the provided array of Transforms with Gizmos.DrawLine(). + /// + /// + /// A + /// + /// + /// A + /// + public static void DrawLineGizmos(Transform[] line,Color color) { + if(line.Length>0){ + //create and store line points: + Vector3[] suppliedLine = new Vector3[line.Length]; + for (int i = 0; i < line.Length; i++) { + suppliedLine[i]=line[i].position; + } + + DrawLineHelper(suppliedLine, color,"gizmos"); + } + } + + /// + /// Draws a line through the provided array of Vector3s with Handles.DrawLine(). + /// + /// + /// A + /// + public static void DrawLineHandles(Vector3[] line) { + if(line.Length>0){ + DrawLineHelper(line,Defaults.color,"handles"); + } + } + + /// + /// Draws a line through the provided array of Vector3s with Handles.DrawLine(). + /// + /// + /// A + /// + /// + /// A + /// + public static void DrawLineHandles(Vector3[] line, Color color) { + if(line.Length>0){ + DrawLineHelper(line,color,"handles"); + } + } + + /// + /// Draws a line through the provided array of Transforms with Handles.DrawLine(). + /// + /// + /// A + /// + public static void DrawLineHandles(Transform[] line) { + if(line.Length>0){ + //create and store line points: + Vector3[] suppliedLine = new Vector3[line.Length]; + for (int i = 0; i < line.Length; i++) { + suppliedLine[i]=line[i].position; + } + DrawLineHelper(suppliedLine,Defaults.color,"handles"); + } + } + + /// + /// Draws a line through the provided array of Transforms with Handles.DrawLine(). + /// + /// + /// A + /// + /// + /// A + /// + public static void DrawLineHandles(Transform[] line,Color color) { + if(line.Length>0){ + //create and store line points: + Vector3[] suppliedLine = new Vector3[line.Length]; + for (int i = 0; i < line.Length; i++) { + suppliedLine[i]=line[i].position; + } + + DrawLineHelper(suppliedLine, color,"handles"); + } + } + + /// + /// Returns a Vector3 position on a path at the provided percentage + /// + /// + /// A + /// + /// + /// A + /// + /// + /// A + /// + public static Vector3 PointOnPath(Vector3[] path, float percent){ + return(Interp(PathControlPointGenerator(path),percent)); + } + + /// + /// When called from an OnDrawGizmos() function it will draw a curved path through the provided array of Vector3s. + /// + /// + /// A + /// + public static void DrawPath(Vector3[] path) { + if(path.Length>0){ + DrawPathHelper(path,Defaults.color,"gizmos"); + } + } + + /// + /// When called from an OnDrawGizmos() function it will draw a curved path through the provided array of Vector3s. + /// + /// + /// A + /// + /// + /// A + /// + public static void DrawPath(Vector3[] path, Color color) { + if(path.Length>0){ + DrawPathHelper(path, color,"gizmos"); + } + } + + /// + /// When called from an OnDrawGizmos() function it will draw a curved path through the provided array of Transforms. + /// + /// + /// A + /// + public static void DrawPath(Transform[] path) { + if(path.Length>0){ + //create and store path points: + Vector3[] suppliedPath = new Vector3[path.Length]; + for (int i = 0; i < path.Length; i++) { + suppliedPath[i]=path[i].position; + } + + DrawPathHelper(suppliedPath,Defaults.color,"gizmos"); + } + } + + /// + /// When called from an OnDrawGizmos() function it will draw a curved path through the provided array of Transforms. + /// + /// + /// A + /// + /// + /// A + /// + public static void DrawPath(Transform[] path,Color color) { + if(path.Length>0){ + //create and store path points: + Vector3[] suppliedPath = new Vector3[path.Length]; + for (int i = 0; i < path.Length; i++) { + suppliedPath[i]=path[i].position; + } + + DrawPathHelper(suppliedPath, color,"gizmos"); + } + } + + /// + /// Draws a curved path through the provided array of Vector3s with Gizmos.DrawLine(). + /// + /// + /// A + /// + public static void DrawPathGizmos(Vector3[] path) { + if(path.Length>0){ + DrawPathHelper(path,Defaults.color,"gizmos"); + } + } + + /// + /// Draws a curved path through the provided array of Vector3s with Gizmos.DrawLine(). + /// + /// + /// A + /// + /// + /// A + /// + public static void DrawPathGizmos(Vector3[] path, Color color) { + if(path.Length>0){ + DrawPathHelper(path, color,"gizmos"); + } + } + + /// + /// Draws a curved path through the provided array of Transforms with Gizmos.DrawLine(). + /// + /// + /// A + /// + public static void DrawPathGizmos(Transform[] path) { + if(path.Length>0){ + //create and store path points: + Vector3[] suppliedPath = new Vector3[path.Length]; + for (int i = 0; i < path.Length; i++) { + suppliedPath[i]=path[i].position; + } + + DrawPathHelper(suppliedPath,Defaults.color,"gizmos"); + } + } + + /// + /// Draws a curved path through the provided array of Transforms with Gizmos.DrawLine(). + /// + /// + /// A + /// + /// + /// A + /// + public static void DrawPathGizmos(Transform[] path,Color color) { + if(path.Length>0){ + //create and store path points: + Vector3[] suppliedPath = new Vector3[path.Length]; + for (int i = 0; i < path.Length; i++) { + suppliedPath[i]=path[i].position; + } + + DrawPathHelper(suppliedPath, color,"gizmos"); + } + } + + /// + /// Draws a curved path through the provided array of Vector3s with Handles.DrawLine(). + /// + /// + /// A + /// + public static void DrawPathHandles(Vector3[] path) { + if(path.Length>0){ + DrawPathHelper(path,Defaults.color,"handles"); + } + } + + /// + /// Draws a curved path through the provided array of Vector3s with Handles.DrawLine(). + /// + /// + /// A + /// + /// + /// A + /// + public static void DrawPathHandles(Vector3[] path, Color color) { + if(path.Length>0){ + DrawPathHelper(path, color,"handles"); + } + } + + /// + /// Draws a curved path through the provided array of Transforms with Handles.DrawLine(). + /// + /// + /// A + /// + public static void DrawPathHandles(Transform[] path) { + if(path.Length>0){ + //create and store path points: + Vector3[] suppliedPath = new Vector3[path.Length]; + for (int i = 0; i < path.Length; i++) { + suppliedPath[i]=path[i].position; + } + + DrawPathHelper(suppliedPath,Defaults.color,"handles"); + } + } + + /// + /// Draws a curved path through the provided array of Transforms with Handles.DrawLine(). + /// + /// + /// A + /// + /// + /// A + /// + public static void DrawPathHandles(Transform[] path,Color color) { + if(path.Length>0){ + //create and store path points: + Vector3[] suppliedPath = new Vector3[path.Length]; + for (int i = 0; i < path.Length; i++) { + suppliedPath[i]=path[i].position; + } + + DrawPathHelper(suppliedPath, color,"handles"); + } + } + + /// + /// Changes a camera fade's texture. + /// + /// + /// A + /// + public static void CameraFadeDepth(int depth){ + if(cameraFade){ + cameraFade.transform.position=new Vector3(cameraFade.transform.position.x,cameraFade.transform.position.y,depth); + } + } + + /// + /// Removes and destroyes a camera fade. + /// + public static void CameraFadeDestroy(){ + if(cameraFade){ + Destroy(cameraFade); + } + } + + /// + /// Changes a camera fade's texture. + /// + /// + /// A + /// + public static void CameraFadeSwap(Texture2D texture){ + if(cameraFade){ + cameraFade.GetComponent().texture=texture; + } + } + + /// + /// Creates a GameObject (if it doesn't exist) at the supplied depth that can be used to simulate a camera fade. + /// + /// + /// A + /// + /// + /// A + /// + /// + /// A for a reference to the CameraFade. + /// + public static GameObject CameraFadeAdd(Texture2D texture, int depth){ + if(cameraFade){ + return null; + }else{ + //establish colorFade object: + cameraFade = new GameObject("iTween Camera Fade"); + cameraFade.transform.position= new Vector3(.5f,.5f,depth); + cameraFade.AddComponent(); + cameraFade.GetComponent().texture=texture; + cameraFade.GetComponent().color = new Color(.5f,.5f,.5f,0); + return cameraFade; + } + } + + /// + /// Creates a GameObject (if it doesn't exist) at the default depth that can be used to simulate a camera fade. + /// + /// + /// A + /// + /// + /// A for a reference to the CameraFade. + /// + public static GameObject CameraFadeAdd(Texture2D texture){ + if(cameraFade){ + return null; + }else{ + //establish colorFade object: + cameraFade = new GameObject("iTween Camera Fade"); + cameraFade.transform.position= new Vector3(.5f,.5f,Defaults.cameraFadeDepth); + cameraFade.AddComponent(); + cameraFade.GetComponent().texture=texture; + cameraFade.GetComponent().color = new Color(.5f,.5f,.5f,0); + return cameraFade; + } + } + + /// + /// Creates a GameObject (if it doesn't exist) at the default depth filled with black that can be used to simulate a camera fade. + /// + /// + /// A for a reference to the CameraFade. + /// + public static GameObject CameraFadeAdd(){ + if(cameraFade){ + return null; + }else{ + //establish colorFade object: + cameraFade = new GameObject("iTween Camera Fade"); + cameraFade.transform.position= new Vector3(.5f,.5f,Defaults.cameraFadeDepth); + cameraFade.AddComponent(); + cameraFade.GetComponent().texture=CameraTexture(Color.black); + cameraFade.GetComponent().color = new Color(.5f,.5f,.5f,0); + return cameraFade; + } + } + + + //################################# + //# RESUME UTILITIES AND OVERLOADS # + //################################# + + /// + /// Resume all iTweens on a GameObject. + /// + public static void Resume(GameObject target){ + Component[] tweens = target.GetComponents(typeof(iTween)); + foreach (iTween item in tweens){ + item.enabled=true; + } + } + + /// + /// Resume all iTweens on a GameObject including its children. + /// + public static void Resume(GameObject target, bool includechildren){ + Resume(target); + if(includechildren){ + foreach(Transform child in target.transform){ + Resume(child.gameObject,true); + } + } + } + + /// + /// Resume all iTweens on a GameObject of a particular type. + /// + /// A name of the type of iTween you would like to resume. Can be written as part of a name such as "mov" for all "MoveTo" iTweens. + /// + public static void Resume(GameObject target, string type){ + Component[] tweens = target.GetComponents(typeof(iTween)); + foreach (iTween item in tweens){ + string targetType = item.type+item.method; + targetType=targetType.Substring(0,type.Length); + if(targetType.ToLower() == type.ToLower()){ + item.enabled=true; + } + } + } + + /// + /// Resume all iTweens on a GameObject of a particular type including its children. + /// + /// A name of the type of iTween you would like to resume. Can be written as part of a name such as "mov" for all "MoveTo" iTweens. + /// + public static void Resume(GameObject target, string type, bool includechildren){ + Component[] tweens = target.GetComponents(typeof(iTween)); + foreach (iTween item in tweens){ + string targetType = item.type+item.method; + targetType=targetType.Substring(0,type.Length); + if(targetType.ToLower() == type.ToLower()){ + item.enabled=true; + } + } + if(includechildren){ + foreach(Transform child in target.transform){ + Resume(child.gameObject,type,true); + } + } + } + + /// + /// Resume all iTweens in scene. + /// + public static void Resume(){ + for (int i = 0; i < tweens.Count; i++) { + Hashtable currentTween = (Hashtable)tweens[i]; + GameObject target = (GameObject)currentTween["target"]; + Resume(target); + } + } + + /// + /// Resume all iTweens in scene of a particular type. + /// + /// + /// A name of the type of iTween you would like to resume. Can be written as part of a name such as "mov" for all "MoveTo" iTweens. + /// + public static void Resume(string type){ + ArrayList resumeArray = new ArrayList(); + + for (int i = 0; i < tweens.Count; i++) { + Hashtable currentTween = (Hashtable)tweens[i]; + GameObject target = (GameObject)currentTween["target"]; + resumeArray.Insert(resumeArray.Count,target); + } + + for (int i = 0; i < resumeArray.Count; i++) { + Resume((GameObject)resumeArray[i],type); + } + } + + //################################# + //# PAUSE UTILITIES AND OVERLOADS # + //################################# + + /// + /// Pause all iTweens on a GameObject. + /// + public static void Pause(GameObject target){ + Component[] tweens = target.GetComponents(typeof(iTween)); + foreach (iTween item in tweens){ + if(item.delay>0){ + item.delay-=Time.time-item.delayStarted; + item.StopCoroutine("TweenDelay"); + } + item.isPaused=true; + item.enabled=false; + } + } + + /// + /// Pause all iTweens on a GameObject including its children. + /// + public static void Pause(GameObject target, bool includechildren){ + Pause(target); + if(includechildren){ + foreach(Transform child in target.transform){ + Pause(child.gameObject,true); + } + } + } + + /// + /// Pause all iTweens on a GameObject of a particular type. + /// + /// A name of the type of iTween you would like to pause. Can be written as part of a name such as "mov" for all "MoveTo" iTweens. + /// + public static void Pause(GameObject target, string type){ + Component[] tweens = target.GetComponents(typeof(iTween)); + foreach (iTween item in tweens){ + string targetType = item.type+item.method; + targetType=targetType.Substring(0,type.Length); + if(targetType.ToLower() == type.ToLower()){ + if(item.delay>0){ + item.delay-=Time.time-item.delayStarted; + item.StopCoroutine("TweenDelay"); + } + item.isPaused=true; + item.enabled=false; + } + } + } + + /// + /// Pause all iTweens on a GameObject of a particular type including its children. + /// + /// A name of the type of iTween you would like to pause. Can be written as part of a name such as "mov" for all "MoveTo" iTweens. + /// + public static void Pause(GameObject target, string type, bool includechildren){ + Component[] tweens = target.GetComponents(typeof(iTween)); + foreach (iTween item in tweens){ + string targetType = item.type+item.method; + targetType=targetType.Substring(0,type.Length); + if(targetType.ToLower() == type.ToLower()){ + if(item.delay>0){ + item.delay-=Time.time-item.delayStarted; + item.StopCoroutine("TweenDelay"); + } + item.isPaused=true; + item.enabled=false; + } + } + if(includechildren){ + foreach(Transform child in target.transform){ + Pause(child.gameObject,type,true); + } + } + } + + /// + /// Pause all iTweens in scene. + /// + public static void Pause(){ + for (int i = 0; i < tweens.Count; i++) { + Hashtable currentTween = (Hashtable)tweens[i]; + GameObject target = (GameObject)currentTween["target"]; + Pause(target); + } + } + + /// + /// Pause all iTweens in scene of a particular type. + /// + /// + /// A name of the type of iTween you would like to pause. Can be written as part of a name such as "mov" for all "MoveTo" iTweens. + /// + public static void Pause(string type){ + ArrayList pauseArray = new ArrayList(); + + for (int i = 0; i < tweens.Count; i++) { + Hashtable currentTween = (Hashtable)tweens[i]; + GameObject target = (GameObject)currentTween["target"]; + pauseArray.Insert(pauseArray.Count,target); + } + + for (int i = 0; i < pauseArray.Count; i++) { + Pause((GameObject)pauseArray[i],type); + } + } + + //################################# + //# COUNT UTILITIES AND OVERLOADS # + //################################# + + /// + /// Count all iTweens in current scene. + /// + public static int Count(){ + return(tweens.Count); + } + + /// + /// Count all iTweens in current scene of a particular type. + /// + /// + /// A name of the type of iTween you would like to stop. Can be written as part of a name such as "mov" for all "MoveTo" iTweens. + /// + public static int Count(string type){ + int tweenCount = 0; + + for (int i = 0; i < tweens.Count; i++) { + Hashtable currentTween = (Hashtable)tweens[i]; + string targetType = (string)currentTween["type"]+(string)currentTween["method"]; + targetType=targetType.Substring(0,type.Length); + if(targetType.ToLower() == type.ToLower()){ + tweenCount++; + } + } + + return(tweenCount); + } + + /// + /// Count all iTweens on a GameObject. + /// + public static int Count(GameObject target){ + Component[] tweens = target.GetComponents(typeof(iTween)); + return(tweens.Length); + } + + /// + /// Count all iTweens on a GameObject of a particular type. + /// + /// + /// A name of the type of iTween you would like to count. Can be written as part of a name such as "mov" for all "MoveTo" iTweens. + /// + public static int Count(GameObject target, string type){ + int tweenCount = 0; + Component[] tweens = target.GetComponents(typeof(iTween));foreach (iTween item in tweens){ + string targetType = item.type+item.method; + targetType=targetType.Substring(0,type.Length); + if(targetType.ToLower() == type.ToLower()){ + tweenCount++; + } + } + return(tweenCount); + } + + //################################ + //# STOP UTILITIES AND OVERLOADS # + //################################ + + /// + /// Stop and destroy all Tweens in current scene. + /// + public static void Stop(){ + for (int i = 0; i < tweens.Count; i++) { + Hashtable currentTween = (Hashtable)tweens[i]; + GameObject target = (GameObject)currentTween["target"]; + Stop(target); + } + tweens.Clear(); + } + + /// + /// Stop and destroy all iTweens in current scene of a particular type. + /// + /// + /// A name of the type of iTween you would like to stop. Can be written as part of a name such as "mov" for all "MoveTo" iTweens. + /// + public static void Stop(string type){ + ArrayList stopArray = new ArrayList(); + + for (int i = 0; i < tweens.Count; i++) { + Hashtable currentTween = (Hashtable)tweens[i]; + GameObject target = (GameObject)currentTween["target"]; + stopArray.Insert(stopArray.Count,target); + } + + for (int i = 0; i < stopArray.Count; i++) { + Stop((GameObject)stopArray[i],type); + } + } + + /* GFX47 MOD START */ + /// + /// Stop and destroy all iTweens in current scene of a particular name. + /// + /// + /// The name of iTween you would like to stop. + /// + public static void StopByName(string name){ + ArrayList stopArray = new ArrayList(); + + for (int i = 0; i < tweens.Count; i++) { + Hashtable currentTween = (Hashtable)tweens[i]; + GameObject target = (GameObject)currentTween["target"]; + stopArray.Insert(stopArray.Count,target); + } + + for (int i = 0; i < stopArray.Count; i++) { + StopByName((GameObject)stopArray[i],name); + } + } + /* GFX47 MOD END */ + + /// + /// Stop and destroy all iTweens on a GameObject. + /// + public static void Stop(GameObject target){ + Component[] tweens = target.GetComponents(typeof(iTween)); + foreach (iTween item in tweens){ + item.Dispose(); + } + } + + /// + /// Stop and destroy all iTweens on a GameObject including its children. + /// + public static void Stop(GameObject target, bool includechildren){ + Stop(target); + if(includechildren){ + foreach(Transform child in target.transform){ + Stop(child.gameObject,true); + } + } + } + + /// + /// Stop and destroy all iTweens on a GameObject of a particular type. + /// + /// A name of the type of iTween you would like to stop. Can be written as part of a name such as "mov" for all "MoveTo" iTweens. + /// + public static void Stop(GameObject target, string type){ + Component[] tweens = target.GetComponents(typeof(iTween)); + foreach (iTween item in tweens){ + string targetType = item.type+item.method; + targetType=targetType.Substring(0,type.Length); + if(targetType.ToLower() == type.ToLower()){ + item.Dispose(); + } + } + } + + /* GFX47 MOD START */ + /// + /// Stop and destroy all iTweens on a GameObject of a particular name. + /// + /// The name of iTween you would like to stop. + /// + public static void StopByName(GameObject target, string name){ + Component[] tweens = target.GetComponents(typeof(iTween)); + foreach (iTween item in tweens){ + /*string targetType = item.type+item.method; + targetType=targetType.Substring(0,type.Length); + if(targetType.ToLower() == type.ToLower()){ + item.Dispose(); + }*/ + if(item._name == name){ + item.Dispose(); + } + } + } + /* GFX47 MOD END */ + + /// + /// Stop and destroy all iTweens on a GameObject of a particular type including its children. + /// + /// A name of the type of iTween you would like to stop. Can be written as part of a name such as "mov" for all "MoveTo" iTweens. + /// + public static void Stop(GameObject target, string type, bool includechildren){ + Component[] tweens = target.GetComponents(typeof(iTween)); + foreach (iTween item in tweens){ + string targetType = item.type+item.method; + targetType=targetType.Substring(0,type.Length); + if(targetType.ToLower() == type.ToLower()){ + item.Dispose(); + } + } + if(includechildren){ + foreach(Transform child in target.transform){ + Stop(child.gameObject,type,true); + } + } + } + + /* GFX47 MOD START */ + /// + /// Stop and destroy all iTweens on a GameObject of a particular name including its children. + /// + /// The name of iTween you would like to stop. + /// + public static void StopByName(GameObject target, string name, bool includechildren){ + Component[] tweens = target.GetComponents(typeof(iTween)); + foreach (iTween item in tweens){ + /*string targetType = item.type+item.method; + targetType=targetType.Substring(0,type.Length); + if(targetType.ToLower() == type.ToLower()){ + item.Dispose(); + }*/ + if(item._name == name){ + item.Dispose(); + } + } + if(includechildren){ + foreach(Transform child in target.transform){ + //Stop(child.gameObject,type,true); + StopByName(child.gameObject,name,true); + } + } + } + /* GFX47 MOD END */ + + /// + /// Universal interface to help in the creation of Hashtables. Especially useful for C# users. + /// + /// + /// A of alternating name value pairs. For example "time",1,"delay",2... + /// + /// + /// A + /// + public static Hashtable Hash(params object[] args){ + Hashtable hashTable = new Hashtable(args.Length/2); + if (args.Length %2 != 0) { + Debug.LogError("Tween Error: Hash requires an even number of arguments!"); + return null; + }else{ + int i = 0; + while(i < args.Length - 1) { + hashTable.Add(args[i], args[i+1]); + i += 2; + } + return hashTable; + } + } + + #endregion + + #region Component Segments + + void Awake(){ + RetrieveArgs(); + lastRealTime = Time.realtimeSinceStartup; // Added by PressPlay + } + + IEnumerator Start(){ + if(delay > 0){ + yield return StartCoroutine("TweenDelay"); + } + TweenStart(); + } + + //non-physics + void Update(){ + if(isRunning && !physics){ + if(!reverse){ + if(percentage<1f){ + TweenUpdate(); + }else{ + TweenComplete(); + } + }else{ + if(percentage>0){ + TweenUpdate(); + }else{ + TweenComplete(); + } + } + } + } + + //physics + void FixedUpdate(){ + if(isRunning && physics){ + if(!reverse){ + if(percentage<1f){ + TweenUpdate(); + }else{ + TweenComplete(); + } + }else{ + if(percentage>0){ + TweenUpdate(); + }else{ + TweenComplete(); + } + } + } + } + + void LateUpdate(){ + //look applications: + if(tweenArguments.Contains("looktarget") && isRunning){ + if(type =="move" || type =="shake" || type=="punch"){ + LookUpdate(gameObject,tweenArguments); + } + } + } + + void OnEnable(){ + if(isRunning){ + EnableKinematic(); + } + + //resume delay: + if(isPaused){ + isPaused=false; + if(delay > 0){ + wasPaused=true; + ResumeDelay(); + } + } + } + + void OnDisable(){ + DisableKinematic(); + } + + #endregion + + #region Internal Helpers + + private static void DrawLineHelper(Vector3[] line, Color color, string method){ + Gizmos.color=color; + for (int i = 0; i < line.Length-1; i++) { + if(method == "gizmos"){ + Gizmos.DrawLine(line[i], line[i+1]);; + }else if(method == "handles"){ + Debug.LogError("iTween Error: Drawing a line with Handles is temporarily disabled because of compatability issues with Unity 2.6!"); + //UnityEditor.Handles.DrawLine(line[i], line[i+1]); + } + } + } + + private static void DrawPathHelper(Vector3[] path, Color color, string method){ + Vector3[] vector3s = PathControlPointGenerator(path); + + //Line Draw: + Vector3 prevPt = Interp(vector3s,0); + Gizmos.color=color; + int SmoothAmount = path.Length*20; + for (int i = 1; i <= SmoothAmount; i++) { + float pm = (float) i / SmoothAmount; + Vector3 currPt = Interp(vector3s,pm); + if(method == "gizmos"){ + Gizmos.DrawLine(currPt, prevPt); + }else if(method == "handles"){ + Debug.LogError("iTween Error: Drawing a path with Handles is temporarily disabled because of compatability issues with Unity 2.6!"); + //UnityEditor.Handles.DrawLine(currPt, prevPt); + } + prevPt = currPt; + } + } + + private static Vector3[] PathControlPointGenerator(Vector3[] path){ + Vector3[] suppliedPath; + Vector3[] vector3s; + + //create and store path points: + suppliedPath = path; + + //populate calculate path; + int offset = 2; + vector3s = new Vector3[suppliedPath.Length+offset]; + Array.Copy(suppliedPath,0,vector3s,1,suppliedPath.Length); + + //populate start and end control points: + //vector3s[0] = vector3s[1] - vector3s[2]; + vector3s[0] = vector3s[1] + (vector3s[1] - vector3s[2]); + vector3s[vector3s.Length-1] = vector3s[vector3s.Length-2] + (vector3s[vector3s.Length-2] - vector3s[vector3s.Length-3]); + + //is this a closed, continuous loop? yes? well then so let's make a continuous Catmull-Rom spline! + if(vector3s[1] == vector3s[vector3s.Length-2]){ + Vector3[] tmpLoopSpline = new Vector3[vector3s.Length]; + Array.Copy(vector3s,tmpLoopSpline,vector3s.Length); + tmpLoopSpline[0]=tmpLoopSpline[tmpLoopSpline.Length-3]; + tmpLoopSpline[tmpLoopSpline.Length-1]=tmpLoopSpline[2]; + vector3s=new Vector3[tmpLoopSpline.Length]; + Array.Copy(tmpLoopSpline,vector3s,tmpLoopSpline.Length); + } + + return(vector3s); + } + + //andeeee from the Unity forum's steller Catmull-Rom class ( http://forum.unity3d.com/viewtopic.php?p=218400#218400 ): + private static Vector3 Interp(Vector3[] pts, float t){ + int numSections = pts.Length - 3; + int currPt = Mathf.Min(Mathf.FloorToInt(t * (float) numSections), numSections - 1); + float u = t * (float) numSections - (float) currPt; + + Vector3 a = pts[currPt]; + Vector3 b = pts[currPt + 1]; + Vector3 c = pts[currPt + 2]; + Vector3 d = pts[currPt + 3]; + + return .5f * ( + (-a + 3f * b - 3f * c + d) * (u * u * u) + + (2f * a - 5f * b + 4f * c - d) * (u * u) + + (-a + c) * u + + 2f * b + ); + } + + //andeeee from the Unity forum's steller Catmull-Rom class ( http://forum.unity3d.com/viewtopic.php?p=218400#218400 ): + private class CRSpline { + public Vector3[] pts; + + public CRSpline(params Vector3[] pts) { + this.pts = new Vector3[pts.Length]; + Array.Copy(pts, this.pts, pts.Length); + } + + + public Vector3 Interp(float t) { + int numSections = pts.Length - 3; + int currPt = Mathf.Min(Mathf.FloorToInt(t * (float) numSections), numSections - 1); + float u = t * (float) numSections - (float) currPt; + Vector3 a = pts[currPt]; + Vector3 b = pts[currPt + 1]; + Vector3 c = pts[currPt + 2]; + Vector3 d = pts[currPt + 3]; + return .5f*((-a+3f*b-3f*c+d)*(u*u*u)+(2f*a-5f*b+4f*c-d)*(u*u)+(-a+c)*u+2f*b); + } + } + + //catalog new tween and add component phase of iTween: + static void Launch(GameObject target, Hashtable args){ + if(!args.Contains("id")){ + args["id"] = GenerateID(); + } + if(!args.Contains("target")){ + args["target"] = target; + } + tweens.Insert(0,args); + target.AddComponent(); + } + + //cast any accidentally supplied doubles and ints as floats as iTween only uses floats internally and unify parameter case: + static Hashtable CleanArgs(Hashtable args){ + Hashtable argsCopy = new Hashtable(args.Count); + Hashtable argsCaseUnified = new Hashtable(args.Count); + + foreach (DictionaryEntry item in args) { + argsCopy.Add(item.Key, item.Value); + } + + foreach (DictionaryEntry item in argsCopy) { + if(item.Value.GetType() == typeof(System.Int32)){ + int original = (int)item.Value; + float casted = (float)original; + args[item.Key] = casted; + } + if(item.Value.GetType() == typeof(System.Double)){ + double original = (double)item.Value; + float casted = (float)original; + args[item.Key] = casted; + } + } + + //unify parameter case: + foreach (DictionaryEntry item in args) { + argsCaseUnified.Add(item.Key.ToString().ToLower(), item.Value); + } + + //swap back case unification: + args = argsCaseUnified; + + return args; + } + + //random ID generator: + static string GenerateID(){ + int strlen = 15; + char[] chars = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8'}; + int num_chars = chars.Length - 1; + string randomChar = ""; + for (int i = 0; i < strlen; i++) { + randomChar += chars[(int)Mathf.Floor(UnityEngine.Random.Range(0,num_chars))]; + } + return randomChar; + } + + //grab and set generic, neccesary iTween arguments: + void RetrieveArgs(){ + foreach (Hashtable item in tweens) { + if((GameObject)item["target"] == gameObject){ + tweenArguments=item; + break; + } + } + + id=(string)tweenArguments["id"]; + type=(string)tweenArguments["type"]; + /* GFX47 MOD START */ + _name=(string)tweenArguments["name"]; + /* GFX47 MOD END */ + method=(string)tweenArguments["method"]; + + if(tweenArguments.Contains("time")){ + time=(float)tweenArguments["time"]; + }else{ + time=Defaults.time; + } + + //do we need to use physics, is there a rigidbody? + if(GetComponent() != null){ + physics=true; + } + + if(tweenArguments.Contains("delay")){ + delay=(float)tweenArguments["delay"]; + }else{ + delay=Defaults.delay; + } + + if(tweenArguments.Contains("namedcolorvalue")){ + //allows namedcolorvalue to be set as either an enum(C# friendly) or a string(JS friendly), string case usage doesn't matter to further increase usability: + if(tweenArguments["namedcolorvalue"].GetType() == typeof(NamedValueColor)){ + namedcolorvalue=(NamedValueColor)tweenArguments["namedcolorvalue"]; + }else{ + try { + namedcolorvalue=(NamedValueColor)Enum.Parse(typeof(NamedValueColor),(string)tweenArguments["namedcolorvalue"],true); + } catch { + Debug.LogWarning("iTween: Unsupported namedcolorvalue supplied! Default will be used."); + namedcolorvalue = iTween.NamedValueColor._Color; + } + } + }else{ + namedcolorvalue=Defaults.namedColorValue; + } + + if(tweenArguments.Contains("looptype")){ + //allows loopType to be set as either an enum(C# friendly) or a string(JS friendly), string case usage doesn't matter to further increase usability: + if(tweenArguments["looptype"].GetType() == typeof(LoopType)){ + loopType=(LoopType)tweenArguments["looptype"]; + }else{ + try { + loopType=(LoopType)Enum.Parse(typeof(LoopType),(string)tweenArguments["looptype"],true); + } catch { + Debug.LogWarning("iTween: Unsupported loopType supplied! Default will be used."); + loopType = iTween.LoopType.none; + } + } + }else{ + loopType = iTween.LoopType.none; + } + + if(tweenArguments.Contains("easetype")){ + //allows easeType to be set as either an enum(C# friendly) or a string(JS friendly), string case usage doesn't matter to further increase usability: + if(tweenArguments["easetype"].GetType() == typeof(EaseType)){ + easeType=(EaseType)tweenArguments["easetype"]; + }else{ + try { + easeType=(EaseType)Enum.Parse(typeof(EaseType),(string)tweenArguments["easetype"],true); + } catch { + Debug.LogWarning("iTween: Unsupported easeType supplied! Default will be used."); + easeType=Defaults.easeType; + } + } + }else{ + easeType=Defaults.easeType; + } + + if(tweenArguments.Contains("space")){ + //allows space to be set as either an enum(C# friendly) or a string(JS friendly), string case usage doesn't matter to further increase usability: + if(tweenArguments["space"].GetType() == typeof(Space)){ + space=(Space)tweenArguments["space"]; + }else{ + try { + space=(Space)Enum.Parse(typeof(Space),(string)tweenArguments["space"],true); + } catch { + Debug.LogWarning("iTween: Unsupported space supplied! Default will be used."); + space = Defaults.space; + } + } + }else{ + space = Defaults.space; + } + + if(tweenArguments.Contains("islocal")){ + isLocal = (bool)tweenArguments["islocal"]; + }else{ + isLocal = Defaults.isLocal; + } + + // Added by PressPlay + if (tweenArguments.Contains("ignoretimescale")) + { + useRealTime = (bool)tweenArguments["ignoretimescale"]; + } + else + { + useRealTime = Defaults.useRealTime; + } + + //instantiates a cached ease equation reference: + GetEasingFunction(); + } + + //instantiates a cached ease equation refrence: + void GetEasingFunction(){ + switch (easeType){ + case EaseType.easeInQuad: + ease = new EasingFunction(easeInQuad); + break; + case EaseType.easeOutQuad: + ease = new EasingFunction(easeOutQuad); + break; + case EaseType.easeInOutQuad: + ease = new EasingFunction(easeInOutQuad); + break; + case EaseType.easeInCubic: + ease = new EasingFunction(easeInCubic); + break; + case EaseType.easeOutCubic: + ease = new EasingFunction(easeOutCubic); + break; + case EaseType.easeInOutCubic: + ease = new EasingFunction(easeInOutCubic); + break; + case EaseType.easeInQuart: + ease = new EasingFunction(easeInQuart); + break; + case EaseType.easeOutQuart: + ease = new EasingFunction(easeOutQuart); + break; + case EaseType.easeInOutQuart: + ease = new EasingFunction(easeInOutQuart); + break; + case EaseType.easeInQuint: + ease = new EasingFunction(easeInQuint); + break; + case EaseType.easeOutQuint: + ease = new EasingFunction(easeOutQuint); + break; + case EaseType.easeInOutQuint: + ease = new EasingFunction(easeInOutQuint); + break; + case EaseType.easeInSine: + ease = new EasingFunction(easeInSine); + break; + case EaseType.easeOutSine: + ease = new EasingFunction(easeOutSine); + break; + case EaseType.easeInOutSine: + ease = new EasingFunction(easeInOutSine); + break; + case EaseType.easeInExpo: + ease = new EasingFunction(easeInExpo); + break; + case EaseType.easeOutExpo: + ease = new EasingFunction(easeOutExpo); + break; + case EaseType.easeInOutExpo: + ease = new EasingFunction(easeInOutExpo); + break; + case EaseType.easeInCirc: + ease = new EasingFunction(easeInCirc); + break; + case EaseType.easeOutCirc: + ease = new EasingFunction(easeOutCirc); + break; + case EaseType.easeInOutCirc: + ease = new EasingFunction(easeInOutCirc); + break; + case EaseType.linear: + ease = new EasingFunction(linear); + break; + case EaseType.spring: + ease = new EasingFunction(spring); + break; + /* GFX47 MOD START */ + /*case EaseType.bounce: + ease = new EasingFunction(bounce); + break;*/ + case EaseType.easeInBounce: + ease = new EasingFunction(easeInBounce); + break; + case EaseType.easeOutBounce: + ease = new EasingFunction(easeOutBounce); + break; + case EaseType.easeInOutBounce: + ease = new EasingFunction(easeInOutBounce); + break; + /* GFX47 MOD END */ + case EaseType.easeInBack: + ease = new EasingFunction(easeInBack); + break; + case EaseType.easeOutBack: + ease = new EasingFunction(easeOutBack); + break; + case EaseType.easeInOutBack: + ease = new EasingFunction(easeInOutBack); + break; + /* GFX47 MOD START */ + /*case EaseType.elastic: + ease = new EasingFunction(elastic); + break;*/ + case EaseType.easeInElastic: + ease = new EasingFunction(easeInElastic); + break; + case EaseType.easeOutElastic: + ease = new EasingFunction(easeOutElastic); + break; + case EaseType.easeInOutElastic: + ease = new EasingFunction(easeInOutElastic); + break; + /* GFX47 MOD END */ + } + } + + //calculate percentage of tween based on time: + void UpdatePercentage(){ + + // Added by PressPlay + if (useRealTime) + { + runningTime += (Time.realtimeSinceStartup - lastRealTime); + } + else + { + runningTime += Time.deltaTime; + } + + if(reverse){ + percentage = 1 - runningTime/time; + }else{ + percentage = runningTime/time; + } + + lastRealTime = Time.realtimeSinceStartup; // Added by PressPlay + } + + void CallBack(string callbackType){ + if (tweenArguments.Contains(callbackType) && !tweenArguments.Contains("ischild")) { + //establish target: + GameObject target; + if (tweenArguments.Contains(callbackType+"target")) { + target=(GameObject)tweenArguments[callbackType+"target"]; + }else{ + target=gameObject; + } + + //throw an error if a string wasn't passed for callback: + if (tweenArguments[callbackType].GetType() == typeof(System.String)) { + target.SendMessage((string)tweenArguments[callbackType],(object)tweenArguments[callbackType+"params"],SendMessageOptions.DontRequireReceiver); + }else{ + Debug.LogError("iTween Error: Callback method references must be passed as a String!"); + Destroy (this); + } + } + } + + void Dispose(){ + for (int i = 0; i < tweens.Count; i++) { + Hashtable tweenEntry = (Hashtable)tweens[i]; + if ((string)tweenEntry["id"] == id){ + tweens.RemoveAt(i); + break; + } + } + Destroy(this); + } + + void ConflictCheck(){//if a new iTween is about to run and is of the same type as an in progress iTween this will destroy the previous if the new one is NOT identical in every way or it will destroy the new iTween if they are: + Component[] tweens = GetComponents(typeof(iTween)); + foreach (iTween item in tweens) { + if(item.type == "value"){ + return; + }else if(item.isRunning && item.type==type){ + //cancel out if this is a shake or punch variant: + if (item.method != method) { + return; + } + + //step 1: check for length first since it's the fastest: + if(item.tweenArguments.Count != tweenArguments.Count){ + item.Dispose(); + return; + } + + //step 2: side-by-side check to figure out if this is an identical tween scenario to handle Update usages of iTween: + foreach (DictionaryEntry currentProp in tweenArguments) { + if(!item.tweenArguments.Contains(currentProp.Key)){ + item.Dispose(); + return; + }else{ + if(!item.tweenArguments[currentProp.Key].Equals(tweenArguments[currentProp.Key]) && (string)currentProp.Key != "id"){//if we aren't comparing ids and something isn't exactly the same replace the running iTween: + item.Dispose(); + return; + } + } + } + + //step 3: prevent a new iTween addition if it is identical to the currently running iTween + Dispose(); + //Destroy(this); + } + } + } + + void EnableKinematic(){ + /* + if(gameObject.GetComponent(typeof(Rigidbody))){ + if(!rigidbody.isKinematic){ + kinematic=true; + rigidbody.isKinematic=true; + } + } + */ + } + + void DisableKinematic(){ + /* + if(kinematic && rigidbody.isKinematic==true){ + kinematic=false; + rigidbody.isKinematic=false; + } + */ + } + + void ResumeDelay(){ + StartCoroutine("TweenDelay"); + } + + #endregion + + #region Easing Curves + + private float linear(float start, float end, float value){ + return Mathf.Lerp(start, end, value); + } + + private float clerp(float start, float end, float value){ + float min = 0.0f; + float max = 360.0f; + float half = Mathf.Abs((max - min) / 2.0f); + float retval = 0.0f; + float diff = 0.0f; + if ((end - start) < -half){ + diff = ((max - start) + end) * value; + retval = start + diff; + }else if ((end - start) > half){ + diff = -((max - end) + start) * value; + retval = start + diff; + }else retval = start + (end - start) * value; + return retval; + } + + private float spring(float start, float end, float value){ + value = Mathf.Clamp01(value); + value = (Mathf.Sin(value * Mathf.PI * (0.2f + 2.5f * value * value * value)) * Mathf.Pow(1f - value, 2.2f) + value) * (1f + (1.2f * (1f - value))); + return start + (end - start) * value; + } + + private float easeInQuad(float start, float end, float value){ + end -= start; + return end * value * value + start; + } + + private float easeOutQuad(float start, float end, float value){ + end -= start; + return -end * value * (value - 2) + start; + } + + private float easeInOutQuad(float start, float end, float value){ + value /= .5f; + end -= start; + if (value < 1) return end / 2 * value * value + start; + value--; + return -end / 2 * (value * (value - 2) - 1) + start; + } + + private float easeInCubic(float start, float end, float value){ + end -= start; + return end * value * value * value + start; + } + + private float easeOutCubic(float start, float end, float value){ + value--; + end -= start; + return end * (value * value * value + 1) + start; + } + + private float easeInOutCubic(float start, float end, float value){ + value /= .5f; + end -= start; + if (value < 1) return end / 2 * value * value * value + start; + value -= 2; + return end / 2 * (value * value * value + 2) + start; + } + + private float easeInQuart(float start, float end, float value){ + end -= start; + return end * value * value * value * value + start; + } + + private float easeOutQuart(float start, float end, float value){ + value--; + end -= start; + return -end * (value * value * value * value - 1) + start; + } + + private float easeInOutQuart(float start, float end, float value){ + value /= .5f; + end -= start; + if (value < 1) return end / 2 * value * value * value * value + start; + value -= 2; + return -end / 2 * (value * value * value * value - 2) + start; + } + + private float easeInQuint(float start, float end, float value){ + end -= start; + return end * value * value * value * value * value + start; + } + + private float easeOutQuint(float start, float end, float value){ + value--; + end -= start; + return end * (value * value * value * value * value + 1) + start; + } + + private float easeInOutQuint(float start, float end, float value){ + value /= .5f; + end -= start; + if (value < 1) return end / 2 * value * value * value * value * value + start; + value -= 2; + return end / 2 * (value * value * value * value * value + 2) + start; + } + + private float easeInSine(float start, float end, float value){ + end -= start; + return -end * Mathf.Cos(value / 1 * (Mathf.PI / 2)) + end + start; + } + + private float easeOutSine(float start, float end, float value){ + end -= start; + return end * Mathf.Sin(value / 1 * (Mathf.PI / 2)) + start; + } + + private float easeInOutSine(float start, float end, float value){ + end -= start; + return -end / 2 * (Mathf.Cos(Mathf.PI * value / 1) - 1) + start; + } + + private float easeInExpo(float start, float end, float value){ + end -= start; + return end * Mathf.Pow(2, 10 * (value / 1 - 1)) + start; + } + + private float easeOutExpo(float start, float end, float value){ + end -= start; + return end * (-Mathf.Pow(2, -10 * value / 1) + 1) + start; + } + + private float easeInOutExpo(float start, float end, float value){ + value /= .5f; + end -= start; + if (value < 1) return end / 2 * Mathf.Pow(2, 10 * (value - 1)) + start; + value--; + return end / 2 * (-Mathf.Pow(2, -10 * value) + 2) + start; + } + + private float easeInCirc(float start, float end, float value){ + end -= start; + return -end * (Mathf.Sqrt(1 - value * value) - 1) + start; + } + + private float easeOutCirc(float start, float end, float value){ + value--; + end -= start; + return end * Mathf.Sqrt(1 - value * value) + start; + } + + private float easeInOutCirc(float start, float end, float value){ + value /= .5f; + end -= start; + if (value < 1) return -end / 2 * (Mathf.Sqrt(1 - value * value) - 1) + start; + value -= 2; + return end / 2 * (Mathf.Sqrt(1 - value * value) + 1) + start; + } + + /* GFX47 MOD START */ + private float easeInBounce(float start, float end, float value){ + end -= start; + float d = 1f; + return end - easeOutBounce(0, end, d-value) + start; + } + /* GFX47 MOD END */ + + /* GFX47 MOD START */ + //private float bounce(float start, float end, float value){ + private float easeOutBounce(float start, float end, float value){ + value /= 1f; + end -= start; + if (value < (1 / 2.75f)){ + return end * (7.5625f * value * value) + start; + }else if (value < (2 / 2.75f)){ + value -= (1.5f / 2.75f); + return end * (7.5625f * (value) * value + .75f) + start; + }else if (value < (2.5 / 2.75)){ + value -= (2.25f / 2.75f); + return end * (7.5625f * (value) * value + .9375f) + start; + }else{ + value -= (2.625f / 2.75f); + return end * (7.5625f * (value) * value + .984375f) + start; + } + } + /* GFX47 MOD END */ + + /* GFX47 MOD START */ + private float easeInOutBounce(float start, float end, float value){ + end -= start; + float d = 1f; + if (value < d/2) return easeInBounce(0, end, value*2) * 0.5f + start; + else return easeOutBounce(0, end, value*2-d) * 0.5f + end*0.5f + start; + } + /* GFX47 MOD END */ + + private float easeInBack(float start, float end, float value){ + end -= start; + value /= 1; + float s = 1.70158f; + return end * (value) * value * ((s + 1) * value - s) + start; + } + + private float easeOutBack(float start, float end, float value){ + float s = 1.70158f; + end -= start; + value = (value / 1) - 1; + return end * ((value) * value * ((s + 1) * value + s) + 1) + start; + } + + private float easeInOutBack(float start, float end, float value){ + float s = 1.70158f; + end -= start; + value /= .5f; + if ((value) < 1){ + s *= (1.525f); + return end / 2 * (value * value * (((s) + 1) * value - s)) + start; + } + value -= 2; + s *= (1.525f); + return end / 2 * ((value) * value * (((s) + 1) * value + s) + 2) + start; + } + + private float punch(float amplitude, float value){ + float s = 9; + if (value == 0){ + return 0; + } + if (value == 1){ + return 0; + } + float period = 1 * 0.3f; + s = period / (2 * Mathf.PI) * Mathf.Asin(0); + return (amplitude * Mathf.Pow(2, -10 * value) * Mathf.Sin((value * 1 - s) * (2 * Mathf.PI) / period)); + } + + /* GFX47 MOD START */ + private float easeInElastic(float start, float end, float value){ + end -= start; + + float d = 1f; + float p = d * .3f; + float s = 0; + float a = 0; + + if (value == 0) return start; + + if ((value /= d) == 1) return start + end; + + if (a == 0f || a < Mathf.Abs(end)){ + a = end; + s = p / 4; + }else{ + s = p / (2 * Mathf.PI) * Mathf.Asin(end / a); + } + + return -(a * Mathf.Pow(2, 10 * (value-=1)) * Mathf.Sin((value * d - s) * (2 * Mathf.PI) / p)) + start; + } + /* GFX47 MOD END */ + + /* GFX47 MOD START */ + //private float elastic(float start, float end, float value){ + private float easeOutElastic(float start, float end, float value){ + /* GFX47 MOD END */ + //Thank you to rafael.marteleto for fixing this as a port over from Pedro's UnityTween + end -= start; + + float d = 1f; + float p = d * .3f; + float s = 0; + float a = 0; + + if (value == 0) return start; + + if ((value /= d) == 1) return start + end; + + if (a == 0f || a < Mathf.Abs(end)){ + a = end; + s = p / 4; + }else{ + s = p / (2 * Mathf.PI) * Mathf.Asin(end / a); + } + + return (a * Mathf.Pow(2, -10 * value) * Mathf.Sin((value * d - s) * (2 * Mathf.PI) / p) + end + start); + } + + /* GFX47 MOD START */ + private float easeInOutElastic(float start, float end, float value){ + end -= start; + + float d = 1f; + float p = d * .3f; + float s = 0; + float a = 0; + + if (value == 0) return start; + + if ((value /= d/2) == 2) return start + end; + + if (a == 0f || a < Mathf.Abs(end)){ + a = end; + s = p / 4; + }else{ + s = p / (2 * Mathf.PI) * Mathf.Asin(end / a); + } + + if (value < 1) return -0.5f * (a * Mathf.Pow(2, 10 * (value-=1)) * Mathf.Sin((value * d - s) * (2 * Mathf.PI) / p)) + start; + return a * Mathf.Pow(2, -10 * (value-=1)) * Mathf.Sin((value * d - s) * (2 * Mathf.PI) / p) * 0.5f + end + start; + } + /* GFX47 MOD END */ + + #endregion + + #region Deprecated and Renamed + /* + public static void audioFrom(GameObject target, Hashtable args){Debug.LogError("iTween Error: audioFrom() has been renamed to AudioFrom().");} + public static void audioTo(GameObject target, Hashtable args){Debug.LogError("iTween Error: audioTo() has been renamed to AudioTo().");} + public static void colorFrom(GameObject target, Hashtable args){Debug.LogError("iTween Error: colorFrom() has been renamed to ColorFrom().");} + public static void colorTo(GameObject target, Hashtable args){Debug.LogError("iTween Error: colorTo() has been renamed to ColorTo().");} + public static void fadeFrom(GameObject target, Hashtable args){Debug.LogError("iTween Error: fadeFrom() has been renamed to FadeFrom().");} + public static void fadeTo(GameObject target, Hashtable args){Debug.LogError("iTween Error: fadeTo() has been renamed to FadeTo().");} + public static void lookFrom(GameObject target, Hashtable args){Debug.LogError("iTween Error: lookFrom() has been renamed to LookFrom().");} + public static void lookFromWorld(GameObject target, Hashtable args){Debug.LogError("iTween Error: lookFromWorld() has been deprecated. Please investigate LookFrom().");} + public static void lookTo(GameObject target, Hashtable args){Debug.LogError("iTween Error: lookTo() has been renamed to LookTo().");} + public static void lookToUpdate(GameObject target, Hashtable args){Debug.LogError("iTween Error: lookToUpdate() has been renamed to LookUpdate().");} + public static void lookToUpdateWorld(GameObject target, Hashtable args){Debug.LogError("iTween Error: lookToUpdateWorld() has been deprecated. Please investigate LookUpdate().");} + public static void moveAdd(GameObject target, Hashtable args){Debug.LogError("iTween Error: moveAdd() has been renamed to MoveAdd().");} + public static void moveAddWorld(GameObject target, Hashtable args){Debug.LogError("iTween Error: moveAddWorld() has been deprecated. Please investigate MoveAdd().");} + public static void moveBy(GameObject target, Hashtable args){Debug.LogError("iTween Error: moveBy() has been renamed to MoveBy().");} + public static void moveByWorld(GameObject target, Hashtable args){Debug.LogError("iTween Error: moveAddWorld() has been deprecated. Please investigate MoveAdd().");} + public static void moveFrom(GameObject target, Hashtable args){Debug.LogError("iTween Error: moveFrom() has been renamed to MoveFrom().");} + public static void moveFromWorld(GameObject target, Hashtable args){Debug.LogError("iTween Error: moveFromWorld() has been deprecated. Please investigate MoveFrom().");} + public static void moveTo(GameObject target, Hashtable args){Debug.LogError("iTween Error: moveTo() has been renamed to MoveTo().");} + public static void moveToBezier(GameObject target, Hashtable args){Debug.LogError("iTween Error: moveToBezier() has been deprecated. Please investigate MoveTo() and the "path" property.");} + public static void moveToBezierWorld(GameObject target, Hashtable args){Debug.LogError("iTween Error: moveToBezierWorld() has been deprecated. Please investigate MoveTo() and the "path" property.");} + public static void moveToUpdate(GameObject target, Hashtable args){Debug.LogError("iTween Error: moveToUpdate() has been renamed to MoveUpdate().");} + public static void moveToUpdateWorld(GameObject target, Hashtable args){Debug.LogError("iTween Error: moveToUpdateWorld() has been deprecated. Please investigate MoveUpdate().");} + public static void moveToWorld(GameObject target, Hashtable args){Debug.LogError("iTween Error: moveToWorld() has been deprecated. Please investigate MoveTo().");} + public static void punchPosition(GameObject target, Hashtable args){Debug.LogError("iTween Error: punchPosition() has been renamed to PunchPosition().");} + public static void punchPositionWorld(GameObject target, Hashtable args){Debug.LogError("iTween Error: punchPositionWorld() has been deprecated. Please investigate PunchPosition().");} + public static void punchRotation(GameObject target, Hashtable args){Debug.LogError("iTween Error: punchPosition() has been renamed to PunchRotation().");} + public static void punchRotationWorld(GameObject target, Hashtable args){Debug.LogError("iTween Error: punchRotationWorld() has been deprecated. Please investigate PunchRotation().");} + public static void punchScale(GameObject target, Hashtable args){Debug.LogError("iTween Error: punchScale() has been renamed to PunchScale().");} + public static void rotateAdd(GameObject target, Hashtable args){Debug.LogError("iTween Error: rotateAdd() has been renamed to RotateAdd().");} + public static void rotateBy(GameObject target, Hashtable args){Debug.LogError("iTween Error: rotateBy() has been renamed to RotateBy().");} + public static void rotateByWorld(GameObject target, Hashtable args){Debug.LogError("iTween Error: rotateByWorld() has been deprecated. Please investigate RotateBy().");} + public static void rotateFrom(GameObject target, Hashtable args){Debug.LogError("iTween Error: rotateFrom() has been renamed to RotateFrom().");} + public static void rotateTo(GameObject target, Hashtable args){Debug.LogError("iTween Error: rotateTo() has been renamed to RotateTo().");} + public static void scaleAdd(GameObject target, Hashtable args){Debug.LogError("iTween Error: scaleAdd() has been renamed to ScaleAdd().");} + public static void scaleBy(GameObject target, Hashtable args){Debug.LogError("iTween Error: scaleBy() has been renamed to ScaleBy().");} + public static void scaleFrom(GameObject target, Hashtable args){Debug.LogError("iTween Error: scaleFrom() has been renamed to ScaleFrom().");} + public static void scaleTo(GameObject target, Hashtable args){Debug.LogError("iTween Error: scaleTo() has been renamed to ScaleTo().");} + public static void shake(GameObject target, Hashtable args){Debug.LogError("iTween Error: scale() has been deprecated. Please investigate ShakePosition(), ShakeRotation() and ShakeScale().");} + public static void shakeWorld(GameObject target, Hashtable args){Debug.LogError("iTween Error: shakeWorld() has been deprecated. Please investigate ShakePosition(), ShakeRotation() and ShakeScale().");} + public static void stab(GameObject target, Hashtable args){Debug.LogError("iTween Error: stab() has been renamed to Stab().");} + public static void stop(GameObject target, Hashtable args){Debug.LogError("iTween Error: stop() has been renamed to Stop().");} + public static void stopType(GameObject target, Hashtable args){Debug.LogError("iTween Error: stopType() has been deprecated. Please investigate Stop().");} + public static void tweenCount(GameObject target, Hashtable args){Debug.LogError("iTween Error: tweenCount() has been deprecated. Please investigate Count().");} + */ + #endregion +} diff --git a/Roguelike/Assets/iTweenEditor/iTween.cs.meta b/Roguelike/Assets/iTweenEditor/iTween.cs.meta new file mode 100644 index 00000000..256c7e61 --- /dev/null +++ b/Roguelike/Assets/iTweenEditor/iTween.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 085d9842593af44d8a507541ce47bc6e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Roguelike/Assets/iTweenEditor/iTweenEvent.cs b/Roguelike/Assets/iTweenEditor/iTweenEvent.cs new file mode 100644 index 00000000..d16650c3 --- /dev/null +++ b/Roguelike/Assets/iTweenEditor/iTweenEvent.cs @@ -0,0 +1,560 @@ +// Copyright (c) 2009-2012 David Koontz +// Please direct any bugs/comments/suggestions to david@koontzfamily.org +// +// 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. + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System.Linq; + +[System.Serializable] +public class ArrayIndexes { + public int[] indexes; +} + +public class iTweenEvent : MonoBehaviour{ + public const string VERSION = "0.6.1"; + + public enum TweenType { + AudioFrom, + AudioTo, + AudioUpdate, + CameraFadeFrom, + CameraFadeTo, + ColorFrom, + ColorTo, + ColorUpdate, + FadeFrom, + FadeTo, + FadeUpdate, + LookFrom, + LookTo, + LookUpdate, + MoveAdd, + MoveBy, + MoveFrom, + MoveTo, + MoveUpdate, + PunchPosition, + PunchRotation, + PunchScale, + RotateAdd, + RotateBy, + RotateFrom, + RotateTo, + RotateUpdate, + ScaleAdd, + ScaleBy, + ScaleFrom, + ScaleTo, + ScaleUpdate, + ShakePosition, + ShakeRotation, + ShakeScale, + Stab + //ValueTo + } + + public string tweenName = ""; + public bool playAutomatically = true; + public float delay = 0; + public iTweenEvent.TweenType type = iTweenEvent.TweenType.MoveTo; + public bool showIconInInspector = true; + + /// + /// Finds an iTweenEvent on a GameObject + /// + /// + /// The to look under + /// + /// + /// The name of the to look for + /// + /// + /// A + /// + public static iTweenEvent GetEvent(GameObject obj, string name) { + var tweens = obj.GetComponents(); + if(tweens.Length > 0) { + var result = tweens.FirstOrDefault(tween => { return tween.tweenName == name; }); + if(result != null) { + return result; + } + } + + throw new System.ArgumentException("No tween with the name '" + name + "' could be found on the GameObject named '" + obj.name + "'"); + } + + public Dictionary Values { + get { + if(null == values) { + DeserializeValues(); + } + return values; + } + set { + values = value; + SerializeValues(); + } + } + + [SerializeField] + string[] keys; + + [SerializeField] + int[] indexes; + + [SerializeField] + string[] metadatas; + + [SerializeField] + int[] ints; + + [SerializeField] + float[] floats; + + [SerializeField] + bool[] bools; + + [SerializeField] + string[] strings; + + [SerializeField] + Vector3[] vector3s; + + [SerializeField] + Color[] colors; + + [SerializeField] + Space[] spaces; + + [SerializeField] + iTween.EaseType[] easeTypes; + + [SerializeField] + iTween.LoopType[] loopTypes; + + [SerializeField] + GameObject[] gameObjects; + + [SerializeField] + Transform[] transforms; + + [SerializeField] + AudioClip[] audioClips; + + [SerializeField] + AudioSource[] audioSources; + + [SerializeField] + ArrayIndexes[] vector3Arrays; + + [SerializeField] + ArrayIndexes[] transformArrays; + + [SerializeField] + iTweenPath[] paths; + + Dictionary values; + bool stopped; + iTween instantiatedTween; + string internalName; + + public void Start() { + if(playAutomatically) Play(); + } + + public void Play() { + if(!string.IsNullOrEmpty(internalName)) Stop(); + + stopped = false; + StartCoroutine(StartEvent()); + } + + /// + /// Stops the currently running tween that was started with . A tween + /// stopped in this manner will not go to the "end" of the tween. + /// + public void Stop() { + iTween.StopByName(gameObject, internalName); + internalName = ""; + stopped = true; + } + + public void OnDrawGizmos() { + if(showIconInInspector) Gizmos.DrawIcon(transform.position, "iTweenIcon.tif"); + } + + IEnumerator StartEvent() { + if(delay > 0) yield return new WaitForSeconds(delay); + + if(stopped) yield return null; + + var optionsHash = new Hashtable(); + foreach(var pair in Values) { + if("path" == pair.Key && pair.Value.GetType() == typeof(string)) optionsHash.Add(pair.Key, iTweenPath.GetPath((string)pair.Value)); + else optionsHash.Add(pair.Key, pair.Value); + } + + // We use the internalName to have a unique identifier to stop the tween + internalName = string.IsNullOrEmpty(tweenName) ? string.Empty : tweenName; + internalName = string.Format("{0}-{1}", internalName, System.Guid.NewGuid().ToString()); + optionsHash.Add("name", internalName); + + switch(type) { + case TweenType.AudioFrom: + iTween.AudioFrom(gameObject, optionsHash); + break; + case TweenType.AudioTo: + iTween.AudioTo(gameObject, optionsHash); + break; + case TweenType.AudioUpdate: + iTween.AudioUpdate(gameObject, optionsHash); + break; + case TweenType.CameraFadeFrom: + iTween.CameraFadeFrom(optionsHash); + break; + case TweenType.CameraFadeTo: + iTween.CameraFadeTo(optionsHash); + break; + case TweenType.ColorFrom: + iTween.ColorFrom(gameObject, optionsHash); + break; + case TweenType.ColorTo: + iTween.ColorTo(gameObject, optionsHash); + break; + case TweenType.ColorUpdate: + iTween.ColorUpdate(gameObject, optionsHash); + break; + case TweenType.FadeFrom: + iTween.FadeFrom(gameObject, optionsHash); + break; + case TweenType.FadeTo: + iTween.FadeTo(gameObject, optionsHash); + break; + case TweenType.FadeUpdate: + iTween.FadeUpdate(gameObject, optionsHash); + break; + case TweenType.LookFrom: + iTween.LookFrom(gameObject, optionsHash); + break; + case TweenType.LookTo: + iTween.LookTo(gameObject, optionsHash); + break; + case TweenType.LookUpdate: + iTween.LookUpdate(gameObject, optionsHash); + break; + case TweenType.MoveAdd: + iTween.MoveAdd(gameObject, optionsHash); + break; + case TweenType.MoveBy: + iTween.MoveBy(gameObject, optionsHash); + break; + case TweenType.MoveFrom: + iTween.MoveFrom(gameObject, optionsHash); + break; + case TweenType.MoveTo: + iTween.MoveTo(gameObject, optionsHash); + break; + case TweenType.MoveUpdate: + iTween.MoveUpdate(gameObject, optionsHash); + break; + case TweenType.PunchPosition: + iTween.PunchPosition(gameObject, optionsHash); + break; + case TweenType.PunchRotation: + iTween.PunchRotation(gameObject, optionsHash); + break; + case TweenType.PunchScale: + iTween.PunchScale(gameObject, optionsHash); + break; + case TweenType.RotateAdd: + iTween.RotateAdd(gameObject, optionsHash); + break; + case TweenType.RotateBy: + iTween.RotateBy(gameObject, optionsHash); + break; + case TweenType.RotateFrom: + iTween.RotateFrom(gameObject, optionsHash); + break; + case TweenType.RotateTo: + iTween.RotateTo(gameObject, optionsHash); + break; + case TweenType.RotateUpdate: + iTween.RotateUpdate(gameObject, optionsHash); + break; + case TweenType.ScaleAdd: + iTween.ScaleAdd(gameObject, optionsHash); + break; + case TweenType.ScaleBy: + iTween.ScaleBy(gameObject, optionsHash); + break; + case TweenType.ScaleFrom: + iTween.ScaleFrom(gameObject, optionsHash); + break; + case TweenType.ScaleTo: + iTween.ScaleTo(gameObject, optionsHash); + break; + case TweenType.ScaleUpdate: + iTween.ScaleUpdate(gameObject, optionsHash); + break; + case TweenType.ShakePosition: + iTween.ShakePosition(gameObject, optionsHash); + break; + case TweenType.ShakeRotation: + iTween.ShakeRotation(gameObject, optionsHash); + break; + case TweenType.ShakeScale: + iTween.ShakeScale(gameObject, optionsHash); + break; + case TweenType.Stab: + iTween.Stab(gameObject, optionsHash); + break; + default: + throw new System.ArgumentException("Invalid tween type: " + type); + } + } + + void SerializeValues() { + var keyList = new List(); + var indexList = new List(); + var metadataList = new List(); + + var intList = new List(); + var floatList = new List(); + var boolList = new List(); + var stringList = new List(); + var vector3List = new List(); + var colorList = new List(); + var spaceList = new List(); + var easeTypeList = new List(); + var loopTypeList = new List(); + var gameObjectList = new List(); + var transformList = new List(); + var audioClipList = new List(); + var audioSourceList = new List(); + var vector3ArrayList = new List(); + var transformArrayList = new List(); + + foreach(var pair in values) { + var mappings = EventParamMappings.mappings[type]; + var valueType = mappings[pair.Key]; + if(typeof(int) == valueType) { + AddToList(keyList, indexList, intList, metadataList, pair); + } + if(typeof(float) == valueType) { + AddToList(keyList, indexList, floatList, metadataList, pair); + } + else if(typeof(bool) == valueType) { + AddToList(keyList, indexList, boolList, metadataList, pair); + } + else if(typeof(string) == valueType) { + AddToList(keyList, indexList, stringList, metadataList, pair); + } + else if(typeof(Vector3) == valueType) { + AddToList(keyList, indexList, vector3List, metadataList, pair); + } + else if(typeof(Color) == valueType) { + AddToList(keyList, indexList, colorList, metadataList, pair); + } + else if(typeof(Space) == valueType) { + AddToList(keyList, indexList, spaceList, metadataList, pair); + } + else if(typeof(iTween.EaseType) == valueType) { + AddToList(keyList, indexList, easeTypeList, metadataList, pair); + } + else if(typeof(iTween.LoopType) == valueType) { + AddToList(keyList, indexList, loopTypeList, metadataList, pair); + } + else if(typeof(GameObject) == valueType) { + AddToList(keyList, indexList, gameObjectList, metadataList, pair); + } + else if(typeof(Transform) == valueType) { + AddToList(keyList, indexList, transformList, metadataList, pair); + } + else if(typeof(AudioClip) == valueType) { + AddToList(keyList, indexList, audioClipList, metadataList, pair); + } + else if(typeof(AudioSource) == valueType) { + AddToList(keyList, indexList, audioSourceList, metadataList, pair); + } + else if(typeof(Vector3OrTransform) == valueType) { + if(pair.Value == null || typeof(Transform) == pair.Value.GetType()) { + AddToList(keyList, indexList, transformList, metadataList, pair.Key, pair.Value, "t"); + } + else { + AddToList(keyList, indexList, vector3List, metadataList, pair.Key, pair.Value, "v"); + } + } + else if(typeof(Vector3OrTransformArray) == valueType) { + if(typeof(Vector3[]) == pair.Value.GetType()) { + var value = (Vector3[])pair.Value; + var vectorIndexes = new ArrayIndexes(); + var indexArray = new int[value.Length]; + for(var i = 0; i < value.Length; ++i) { + vector3List.Add((Vector3)value[i]); + indexArray[i] = vector3List.Count - 1; + } + + vectorIndexes.indexes = indexArray; + AddToList(keyList, indexList, vector3ArrayList, metadataList, pair.Key, vectorIndexes, "v"); + } + else if(typeof(Transform[]) == pair.Value.GetType()) { + var value = (Transform[])pair.Value; + var transformIndexes = new ArrayIndexes(); + var indexArray = new int[value.Length]; + for(var i = 0; i < value.Length; ++i) { + transformList.Add((Transform)value[i]); + indexArray[i] = transformList.Count - 1; + } + + transformIndexes.indexes = indexArray; + AddToList(keyList, indexList, transformArrayList, metadataList, pair.Key, transformIndexes, "t"); + } + else if(typeof(string) == pair.Value.GetType()) + { + AddToList(keyList, indexList, stringList, metadataList, pair.Key, pair.Value, "p"); + } + } + } + + keys = keyList.ToArray(); + indexes = indexList.ToArray(); + metadatas = metadataList.ToArray(); + ints = intList.ToArray(); + floats = floatList.ToArray(); + bools = boolList.ToArray(); + strings = stringList.ToArray(); + vector3s = vector3List.ToArray(); + colors = colorList.ToArray(); + spaces = spaceList.ToArray(); + easeTypes = easeTypeList.ToArray(); + loopTypes = loopTypeList.ToArray(); + gameObjects = gameObjectList.ToArray(); + transforms = transformList.ToArray(); + audioClips = audioClipList.ToArray(); + audioSources = audioSourceList.ToArray(); + vector3Arrays = vector3ArrayList.ToArray(); + transformArrays = transformArrayList.ToArray(); + } + + void AddToList(List keyList, List indexList, IList valueList, List metadataList, KeyValuePair pair) { + AddToList(keyList, indexList, valueList, metadataList, pair.Key, pair.Value); + } + + void AddToList(List keyList, List indexList, IList valueList, List metadataList, KeyValuePair pair, string metadata) { + AddToList(keyList, indexList, valueList, metadataList, pair.Key, pair.Value, metadata); + } + + void AddToList(List keyList, List indexList, IList valueList, List metadataList, string key, object value) { + AddToList(keyList, indexList, valueList, metadataList, key, value, null); + } + + void AddToList(List keyList, List indexList, IList valueList, List metadataList, string key, object value, string metadata) { + keyList.Add(key); + valueList.Add((T)value); + indexList.Add(valueList.Count - 1); + metadataList.Add(metadata); + } + + void DeserializeValues() { + values = new Dictionary(); + + if(null == keys) { + return; + } + + for(var i = 0; i < keys.Length; ++i) { + var mappings = EventParamMappings.mappings[type]; + var valueType = mappings[keys[i]]; + + if(typeof(int) == valueType) { + values.Add(keys[i], ints[indexes[i]]); + } + else if(typeof(float) == valueType) { + values.Add(keys[i], floats[indexes[i]]); + } + else if(typeof(bool) == valueType) { + values.Add(keys[i], bools[indexes[i]]); + } + else if(typeof(string) == valueType) { + values.Add(keys[i], strings[indexes[i]]); + } + else if(typeof(Vector3) == valueType) { + values.Add(keys[i], vector3s[indexes[i]]); + } + else if(typeof(Color) == valueType) { + values.Add(keys[i], colors[indexes[i]]); + } + else if(typeof(Space) == valueType) { + values.Add(keys[i], spaces[indexes[i]]); + } + else if(typeof(iTween.EaseType) == valueType) { + values.Add(keys[i], easeTypes[indexes[i]]); + } + else if(typeof(iTween.LoopType) == valueType) { + values.Add(keys[i], loopTypes[indexes[i]]); + } + else if(typeof(GameObject) == valueType) { + values.Add(keys[i], gameObjects[indexes[i]]); + } + else if(typeof(Transform) == valueType) { + values.Add(keys[i], transforms[indexes[i]]); + } + else if(typeof(AudioClip) == valueType) { + values.Add(keys[i], audioClips[indexes[i]]); + } + else if(typeof(AudioSource) == valueType) { + values.Add(keys[i], audioSources[indexes[i]]); + } + else if(typeof(Vector3OrTransform) == valueType) { + if("v" == metadatas[i]) { + values.Add(keys[i], vector3s[indexes[i]]); + } + else if("t" == metadatas[i]) { + values.Add(keys[i], transforms[indexes[i]]); + } + } + else if(typeof(Vector3OrTransformArray) == valueType) { + if("v" == metadatas[i]) { + var arrayIndexes = vector3Arrays[indexes[i]]; + var vectorArray = new Vector3[arrayIndexes.indexes.Length]; + for(var idx = 0; idx < arrayIndexes.indexes.Length; ++idx) { + vectorArray[idx] = vector3s[arrayIndexes.indexes[idx]]; + } + + values.Add(keys[i], vectorArray); + } + else if("t" == metadatas[i]) { + var arrayIndexes = transformArrays[indexes[i]]; + var transformArray = new Transform[arrayIndexes.indexes.Length]; + for(var idx = 0; idx < arrayIndexes.indexes.Length; ++idx) { + transformArray[idx] = transforms[arrayIndexes.indexes[idx]]; + } + + values.Add(keys[i], transformArray); + } + else if("p" == metadatas[i]) { + values.Add(keys[i], strings[indexes[i]]); + } + } + } + } +} \ No newline at end of file diff --git a/Roguelike/Assets/iTweenEditor/iTweenEvent.cs.meta b/Roguelike/Assets/iTweenEditor/iTweenEvent.cs.meta new file mode 100644 index 00000000..ff5cb6e0 --- /dev/null +++ b/Roguelike/Assets/iTweenEditor/iTweenEvent.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 0401554a0e6f9466db3c1a798d358b8c +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Roguelike/Assets/iTweenEditor/iTweenPath.cs b/Roguelike/Assets/iTweenEditor/iTweenPath.cs new file mode 100644 index 00000000..3ad44c9d --- /dev/null +++ b/Roguelike/Assets/iTweenEditor/iTweenPath.cs @@ -0,0 +1,38 @@ +//by Bob Berkebile : Pixelplacement : http://www.pixelplacement.com + +using UnityEngine; +using System.Collections.Generic; + +public class iTweenPath : MonoBehaviour +{ + public string pathName =""; + public Color pathColor = Color.cyan; + public List nodes = new List(){Vector3.zero, Vector3.zero}; + public int nodeCount; + public static Dictionary paths = new Dictionary(); + public bool initialized = false; + public string initialName = ""; + + void OnEnable(){ + paths.Add(pathName.ToLower(), this); + } + + void OnDrawGizmosSelected(){ + if(enabled) { // dkoontz + if(nodes.Count > 0){ + iTween.DrawPath(nodes.ToArray(), pathColor); + } + } // dkoontz + } + + public static Vector3[] GetPath(string requestedName){ + requestedName = requestedName.ToLower(); + if(paths.ContainsKey(requestedName)){ + return paths[requestedName].nodes.ToArray(); + }else{ + Debug.Log("No path with that name exists! Are you sure you wrote it correctly?"); + return null; + } + } +} + diff --git a/Roguelike/Assets/iTweenEditor/iTweenPath.cs.meta b/Roguelike/Assets/iTweenEditor/iTweenPath.cs.meta new file mode 100644 index 00000000..2c34934b --- /dev/null +++ b/Roguelike/Assets/iTweenEditor/iTweenPath.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: d2ef3b15c32eb43108261a87963b8937 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Roguelike/Library/AssetServerCacheV3 b/Roguelike/Library/AssetServerCacheV3 index 8d1b74d858329ba438e87296ac15f43894dce8ae..35329f5c4c12e4cd106eff3d950d84878dcae956 100644 GIT binary patch delta 14 VcmbQDIz@GY7_*U{(MHK?Apjtc1O)&9 delta 14 VcmbQDIz@GY7_*_C@kYsNApjta1O)&9 diff --git a/Roguelike/Library/AssetVersioning.db b/Roguelike/Library/AssetVersioning.db new file mode 100644 index 0000000000000000000000000000000000000000..2f50a715498d3d6a49924f6a5758d0771e466041 GIT binary patch literal 14336 zcmeHN&1)M+6ra(^T8(2FOes2;;xWawL|18@97-^zwObKP(m>o8dfTkEV|j_R>+FvF zK@UYr|B8~oC704$|BO<4?Zr^iL*ML|b|ghDL72pvMXTNUeDD3?%u;D8`iTLqpm}#>j~cG z0Xq%ct{q&mXZ+G+6#9i(Q~mjZQQh3c{q;yn%lD4mb}z7n>w8L}q{vd5q_}oZ3Owrg zMm2#jq|v0}@|3eAuuST>;9C*5GXSpR zB&ua{pf+!~>tuuTHnUo$p~++{)mimfXx4xyhiZThekjnFh2+oOi)Gd|L4cy+ER_cC<1!@ zk0PSW8iDyiK)?UbkFT|*8i7#+Wd0}QFL?haS8&mXMnEHQlMx^Vg39vMzf2JP$@O2t z4TKwoPYPDyH*!FJB|py$fGOYRXDZ`*KK@>hl$-I1Ir{KUu9pGuPLLknFQQ14|M39f z0sfObAlqm#vvmm*4W5>b)q5M|pSmJ&+d#2V*a)r{@<3QZsZHq_2mAN$HxJn40gT$m z0th?t49xeGehi2q0poV-L~?!D5pTO5qqKJ_87g`D4=_YzF=RW@<HwZ8$rh zZx2T()EXuSWh9IpkDuSpO384^%ZM7}jhrV{6BKTHz7*gIA2=itfoIAiG9fa}g1)3Z z@!y_^*<3a0HFN0VIyZPiwWY#2afH7AZ5YqW};Xwr%9dm7LC>I&GMj;W-EnH zJj_`6>d~x~Z=0IA@*QW9z3#->tG{<^nh_4~aLGvylpWkuBeEfB`i(0jw8|uJYeXZr z$4rd)VacfOKya*&2Z!8kOo)nGZ;p!Ghza2^vbBLQ(E0zyJ?^wY8iD_ffL#BW{Da`9 P4~>9EV2%(Vq(c7%X)ML+ literal 0 HcmV?d00001 diff --git a/Roguelike/Library/CurrentLayout.dwlt b/Roguelike/Library/CurrentLayout.dwlt index 40378987b81d4d52ab5d11cff98e9f2ccf22dfe6..70588586b75db4a7938c0907e86e2aa5095eee79 100644 GIT binary patch delta 2086 zcmZvdT}&KR6vxjjySNqPqZVcXMUq0QZEO*tN(*Ih7uq5%P&Kt8WvOUs1gR};MWVZD zA~tPoG{;Dn(nY?62Wx3IshSwUCru$reK9f7VB*JvpfqZ#HMRcFo!OB^ZuZXH`Q3BR z|J-xW?0i4t7{21jAPVgx8XG2}WQ>EjQ_=c@^#vC*x)b9&@igj)jBmK)DzG>yauj`B|2@Fu|{zK$>?_gZ4~Yn?w}uFp9!7_^Z*+xb-tFG!oQ}vw-+m`99c^P zM8Vata)NELxkK?hi*Hu^KdU$}re@^c6r` zZ62rmOaAZ+&^DP+!shm(sR6PQZgNSDq_WE94ibR~x(GZhTnWbrP_^)7{O=I%4oDQS z0z1`&nI{qW&=RN-zKlSv@MQ$*guDOmf0xZQnka$uE9lZ5k&9ZO(N|zUqUQoVYIBsH z!z{fNu*X#CeY#4OUej)6m1A!wT6&K!;aA~R^0>$5u_gJ0;^y{6P4X^k^-67bnoZ{EC}u11MrC3yH3236E9<-fYQH0NXUfj+Vt!_5w|n zh0|e{MYC{qYGz$qbw^JNSEm-c{bz)$Lx}ai-{u+)A%TL45RkmIus>aQ9gu0hxb}7) zO;4$d=Kfi=NY2D`7R^Sh%{BEhW4}rmsTm5ZwYJGXZjckU#0ka=8<5p!{8r?rK5Q&3vOr zzjNj`qR(J4uT~*$v{mX#bS84&nRObw`wIEZP^N3aN5M{xgkD`e?Nb)P)A(0v13ihm z;ia4xE2#GG3W@I+H}ux6$i|%5g!%p6Az4pt+;}!kJBry|&{C7x{KeT*@qRBE_xRY~ z_ewnO1NO!5FMBNyV%h%^}?`GsLz;%Onvwy_N#*mw5221#0$jzyyYj}<0m+PE8@|Fs0ZltO-HeN~l;O9S$ z)z+UkqKhk!=WqF-qQIz`KQ#enEPCelcZ#cjcNVG7l-OHi;}2(%*h&k^crIL4jX-ta`NaE(z^Kc{G(`9&M;Wa=>n3DFM)5)DoLp#O7cc4%uSduDci z=iL7}_uM-(BUg>zzcT_v@miu!cM#Dc{O`b(sw!4hJp6g!y_~EAxJwu*wSTRVTCG+_IPZGrf z4u4GZyE>(gPPNu~Ty&x}?pP1W*t90=oj#1j^-LyQ&A;Y*x{D&K0DV5)Z7k^ zAJqw8f0sY&@Oqo`q%S+V+hO53vAqs&aJizxU<@k;YZUI}8~{tgvVqpR+(S}}^bbE; zCtTNJ&(-Nulp^BL4YwWAC}}KW-Gz_@V=zh3BwQz+onV9T|0kek;q&Nk)I4f;M-qJI zB-kX5c@ne;pC>`9@Ocunxm-~S+F!%uctTD(UeQDu;7_nJuqRyyww__P&I{JAx6Ed} z^)BA$ZA)*HEjm7k_S&7h4jt*-R+k%kTcx+;Q<~co7Jcco=s&IXpV9hT3cS&@{x(-< zw*GT2S9Aj!w_);#Jg>Q}pTxG6rI&g-=J0eqFU;Z2%17x%*P%#OW(p=tzg@Uq8DrMo z+96!8%$e9AP{tGueh4D80ea&|!k&q)hn{>8C}uXdS%z2c3C znn%9@iV-2L+{dch4D`$xyB*{9I{L3^{ntf*@f$N@WN2XYNlu(y#~|7nyW zPxD)YZP^5$#Kic=!C@Is7Dp2Ws?_$vAztE}i4U`y!W5edbL`0BEL^FhpBElYIXS;N z+LE^*>mG*b$)xb%2|3UY3ug%2HHTnr{cGy&Tdrj^qu z?x23@EkXK?c}OUSwM)lw;fe3_q?)QQSv^40s3l&><;hK%_clKUwPMjP6(mY*MeRgY?d~K|`?Ap);OSp5zUy^(JE2By@<%r3Dbh?aN$9hYpq`taz ZNp^&NmM7Za+he0L$@P9HjU;O|8 diff --git a/Roguelike/Library/InspectorExpandedItems.asset b/Roguelike/Library/InspectorExpandedItems.asset index e38aee526cf827de4f0361ba4a27cfff33b1bb30..4830e214880b524bf7d6769e79b2706fabe24099 100644 GIT binary patch delta 70 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 diff --git a/Roguelike/Library/ScriptAssemblies/Assembly-CSharp-Editor.dll.mdb b/Roguelike/Library/ScriptAssemblies/Assembly-CSharp-Editor.dll.mdb new file mode 100644 index 0000000000000000000000000000000000000000..b059b658bc96725230c9320813baee147aeecc27 GIT binary patch literal 2410 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 L!EOf+i0=OYaH{PR literal 1479 zcmb_cZAep57(Vy=uGyDJU?B#DIRpE&A}ESE`jo;YWz5RPbzR)<=I*svUuFbqAC^>5 zY4t-3smzh0DgCJY5m^z{iipq(A?rsUP+>u?=Ug|6{_Kxud(QLjJqoYyWFd|a{cadpQ0JMYn5gM{ac;xplSqE&Ev}Vd&(8B zTB^8~>$(B~T?&95n&JyB54v|K!ECqQwybta))U9NL!H+MJ5U+jsjszFmF&;ySi9oD z(^};WagJKeJk_fjYB7pl%kR5mo4Lqdzc4!^EwwHAt}nf8udRJ(uxZ<*=H9?$vSHMU zI!hI=V)!*weRkuk{pG%iE2~QL<`4a<;IAH>oN~hQ>V0K@&ZZv)mIb5udN=!h+f@ZM z!`3;D8Pn$3Pu3K*EWXwF<5*covz}I-_B!)jN&5ZnDW zT1ba2(m6DhgsT?yd|GpAV&rrGuGv3d5yt$m)&fm6LJrNNYD%&*q#KGa+wS*z6}O@K zHJycuC5coVR9r$84;7zKB|s%4R1t=yS7JO7$r8da%omaQD*h62GYFZGL^CxKb67ee znHkQ?n7Mk1X^_s-+~4gyOAXjoi499#BXXWKE!bX(eIPxI=VB&opTzb{Z~imks0sH? z;=W76u??JQ!X1~n6LKBByM*vu%!F%{xhDA%&Hi%|o|^DoGT$xt#5VAz2_KR9=kkkq zE@r|H%KQiU<9{XsH4%noAu3nXZh@+TX(F7p260@g5Lsod{KZfiWp}TQxPWvC?U=QX8>am zuLkD=R>WJt8-XOm2DlU$i}*OW1{jC95!?WvO^RLMFn}|gZI!mf0RSaQA(B`kkHNHi Z+ObG=H^5Z)5);)8gQ;#heo)8PX&xj=hRqoo IIgE@902YZFlK=n! diff --git a/Roguelike/Library/ShaderCache/0/06776728e33fc9af2ed1df4f3d08faa1.bin b/Roguelike/Library/ShaderCache/0/06776728e33fc9af2ed1df4f3d08faa1.bin new file mode 100644 index 0000000000000000000000000000000000000000..ca034c2d4ac50c9c215893aafc02cc51673b81f7 GIT binary patch literal 4101 zcmb7HOOD(&5RE_C5V03Va)|84gRHW%F*dwN-~lGKmz|RM5xZM0p}XUWZ{Z{O65jg) z26CiSkyRy$oW{(sp_W)IzIyc`MVYS;fBFI2uk^?50p6eBb@k@O#oG^8tBY5cf4%vR zl8=YgZ>ux2ABN-e^WOo$;RVJyA6@J0X7FuvJJ@d4-ZnmT)&A$5Qr zAfyMI{=u{;p|;64*d<(qM;zC=A@Dfx1c+JDv%cZ`bQ499jL^}eUyERQH;T*@Q9Vt_ zJeSI;CkEO)rT`w?h@{uvxwRYJfKCi3Y2D5>4&6Yx$7op`BPlw%+0xIXY3QrOLV_i} zvZ0BJFqI(c$e5qJ^}&xdA7mGiL_0W0@k_BrFw?EGO%9TCAr1?xY_S?=x#6rzlqUd2 zX_#sSpf2o~dUnBfZKGkJ5nsyLa!9!XXU4W&Ops2<1=C8JZSKbgnK4GPY+%C{MY@TQ z*ozC9AP4~3yC(nx3xK;f05cH)b%B9RQ@GIF)rC6)oO0pL0PF(Cvg^tixB!^>scFBk zT>9R!>qc_Y-qZKn0SX41K9=7OaEtHas%~i_5SQ3c7mJ{&9*5180@`b^`EsJgU6(8F{BmNXbpv^2;hmSg&9T{30Jsw^C&>FCEcXXx#MVrS zD2`TuxKC5t1X?{)n}Rr(0z{!W0dmE%o)|FdBk#)0s8;~4hfFLPG2@7;DfeQOu<%2MS|cD@-bBSTr#xzRo9qD_=We7zxe1zUwzd7kvg+RUxM#;@%ZVF z7`kKJh5t~Clz+x+^_$^;ehfA=n`cLbm{gNd$|4^QOKKTc!llZ2uHW-;kb|guKJH73KJEgL+0qB zMt-f{Hfz@&&yyD3)8CFo?MuQYIYX1ZFdXxhI literal 0 HcmV?d00001 diff --git a/Roguelike/Library/ShaderCache/0/097886457247838aa7d8d2a0b2111588.bin b/Roguelike/Library/ShaderCache/0/097886457247838aa7d8d2a0b2111588.bin new file mode 100644 index 0000000000000000000000000000000000000000..1f23528255795f0552f0612267560fd9606c537c GIT binary patch literal 4808 zcmb7I&63G1_`7iY((SI-yO)#Jx3a&i9T?B??Ln)jat?lI{LCjIvG`11T@O#X{lU)*NjXWyz# z*KNN$`ax@LXli9lR%^1YDT%J|XRQ5%V8|@`QS2YeqGY(47 zMdOT)AllF#OkWfe4cOS=3RxiMq6l=dKn_F`4x)f)n$e|h)a*clH=|2^fDXm64x~jD zS}Z9;;kcgmNDN1>vUxS$tC(Lg72IV2TBZOg|4_862#Lq9-)qyRGkaYZ9$!4CR9u$pfEFb)QkbgCT{_f~+j7t4-{n*fTf z&2XJ#^rxdiTx17a7n6Eu*CmBL{QQivl0P%tJ7E4q>81&E~@_=YbOSRgOa6ac{-+PZuP#&;qBX3x7#TP}KffrZ2C?v}`2nyu!+NI%m2gr-NjaJJsM zwf&c3!S*Yff3S*darV=OHeO`x*=ypQaM@j4f2UmeF0MDk^&uTV9ATe6r)k^Ut=^h!rMDaRDqFqi8HG*e$sY6M!Cq%qd1H$0kq;IVQ^q@@c}CB1 i6xeq$GAs*^D+HRDf1a(>mPrQqkUaGxb(hbO!v6uHbX~9j literal 0 HcmV?d00001 diff --git a/Roguelike/Library/ShaderCache/3/3a8eef78a3b767f892b1d97fcf953a0b.bin b/Roguelike/Library/ShaderCache/3/3a8eef78a3b767f892b1d97fcf953a0b.bin new file mode 100644 index 0000000000000000000000000000000000000000..b353af282914e21c7be4066756563ceee15a6130 GIT binary patch literal 2182 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 literal 0 HcmV?d00001 diff --git a/Roguelike/Library/ShaderCache/7/7eccc90b4e57ec4e03c6da60f7797ebe.bin b/Roguelike/Library/ShaderCache/7/7eccc90b4e57ec4e03c6da60f7797ebe.bin new file mode 100644 index 0000000000000000000000000000000000000000..3724fd53920c4ac0c820de8038a56a4d3544e505 GIT binary patch literal 11929 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 I1i|6>KfThGKL7v# literal 0 HcmV?d00001 diff --git a/Roguelike/Library/ShaderCache/8/8e25c819e481ea97d2a82166887ba567.bin b/Roguelike/Library/ShaderCache/8/8e25c819e481ea97d2a82166887ba567.bin new file mode 100644 index 0000000000000000000000000000000000000000..e4e26e99dfa7f9ddc8b4e1981f2a01d69dfca385 GIT binary patch literal 453 zcmZ8eO$)*>3{{Us|BH$zZ^8s`3KKkztV!Cg`zY$szvch4TiY=gD0zA9%S(y)uGWiL zEPcK4C%>Gs>mx6+^X-25c-Fm&L$MXlu6ytHM~ESa*pMV_8&(Z)>l9XXNn{b2tYQbQ zHI-#3gQ8AK3_!>x0E}732UIbVrVdO}#2jmK;eKq89FjoJbYmHvQ!T&+$jE+PCRJ*w zv|>#FwzjqRG5(tplXFsb0SLtdKquumM9-iacr)ig`p%OO6Z{7;IFxBe{c`5<1Ch;@ AZU6uP literal 0 HcmV?d00001 diff --git a/Roguelike/Library/ShaderCache/9/9411315f81fe093333e359470f322bdb.bin b/Roguelike/Library/ShaderCache/9/9411315f81fe093333e359470f322bdb.bin new file mode 100644 index 0000000000000000000000000000000000000000..c1a23979e011f27b2b8319b172b05edd7d95872e GIT binary patch literal 4831 zcmb7I&63E;R`=JxYR!)M``(9VJid|-9rt+sfam3tpT2*1`{e4!i>LB> z^TWmE)r*_#>d~Y7pPZe&+-Kip56o^D4qu;tOGK6@8Eai*3tRTCa5)Xzespa=+| zWuW`eavj7pVFN1!0H6YqU+Gf}AfVCZTzFfe0O*N=DUGQH044&VfSI^(0Z~r{P=PAo zN>{mY%85ZzmRSf<=hQWvpn~yzxV;|spUc2U!MIQm)>h4MRKBfE+ONRV8Wa|`6N;3LK#F^#A|RQ()g~UL14#Yi?Z#LEL7rm+4 z^mHm6z-6pNg^Ly_8VB*%XKlkn)wFYkhI9iJS0}!s;$S2Lvu++*aE7*F3+YS&QUOv| zC>yDx_>vo9lqZUaEI@3b#^yujUT(P zIDHU|EiEO;zZyJNPhW@_x4Q5(pysZ8T$-z=PhEl_ z_{(dzKVxB$liwP$XVh$O?W^qOR@ekq;AF`2UpznKnO)igHQhy*+j4kD;|lw0W_?%K zpZ|Pg3x4n*0whD$e|dh)^ZB+p{C;hB52?31`a^d==QVpV?7H%1q{4>H>tWAiFD+Kf z5Tx&Te#FxwJ#DJ`&}^%JI3}{00QqgkdB9tKf9|8u!bh)G7eqj*d`GV)KVrsDJ zc1PR28+QFQ?Wm7t&C#w|@>7)KU|K=yT2_0>{|c*E%bvM?;1 zdLYZpc;KGH7=?UtM-}uz;Nx5em2{jJlnl0TZB!;x0zR+=R2Bp}ALFYH$bn}|z;VMM za}`EFP?vR6FR97Ic(pjZ6ay}GQ3(}{D3PXQkw&S{m{!%&i#lp?pFymoCSX=&u%!k<=n_IG^J#qcpx5HGFAY~+1^`10%mri zy?2rKK#nAIkT^(SjkLYDfJIz9UQH2;d{YRRYA?m1TPY2otq5uG&ET4bI7ZTw{q>GWs)GKx`0m zUwamyzzu+jR~py*=c+;;jo4NsgscSuMvWKi5Ba$)_n}#d@i`HMFkXKIm?q23cnZIGy7yh5O{%jdTCZVOiGGa}KLw*tAz74ulm8Ii6V zOSsUeI}&C6lsDxxjtt==AgWT1!!UN`k}-815hj_74Mws^Oo8#H8nhAy!-ap8cr9%x ziCyE$pf*EWy6|uhj0M^)=n!a9LM!x@^1IKGxP z;8;nx8Z}-(nJgxZcRKOH|Lfu*XSy@2#;{moDjOz~kp?zb0Azt7kS^z`o|jfaa~jT7 z(^Mtn(yYV)kXg`mOZc&rMxc!Ef7WPLB?2cYjYv-g zN>bX98}}qiQrZy^RY_9XAtBsI|HoU&2Qk9-SDT;sQ8(HUrHG#JNp7@2dqz8SjHMMSl>k6nLfIrKAo}_yi~Xjxw1Kd0T-**|I!BQ$ z=DDoS>pBNGFxZd`eFxS0XUI>ENvP{yx>_)(1)w~2#{}WYE=bb zU9fe6Zj4#H&-BFt6Ghax)xk7xS{!*EUNpD^#^Sn401jH>0BrBsc&vd$(I`6I7y$i1gC2!62PV@G-*BV4(clQkZG2L&qU+s`TjSf^eb!1AoKRQ-_q|viW=4_HIA0W{DZAhxL>JcX{WBYEs zzW#%Q6%hfId}+sdR3X`^ii>Nb0^J#txPCLLYk^6UAxe>{I?KEb?cJQ{3AZ~~qX}j4 zTIbi7s&MNL7A4}27Po=IZ-v5&#j@S&SS3!*VG3+QfWiORXbT_`#SRvL3|&gVgp=`t zXST3hZEUXk#(|P5?G`9T}JU04C&#+}IA zmmrq9M&kf}wcgSu3mroK1NoV(|M2(`FL3^eoPYajlw>nLd@t8OmXH4>?&*uJX&+zA z<9z?A+y)HNdc3dX^HcepUVgjG4`1I`avdg-nLqzsJ^}32{rvU03}~G9Lw_NMpZ5>> zctK8g!*}ny^P^mb@$H;{$=I*`oac|z{IImuef3@nw0tN1@WA<7-v5@tpUdaNxqJLB zDAS#r|H|)*{iFc&m-&7y@8k!;Re1bvez>Zs2lq+@pm){%=lAY!UkQl+iSn=H(~J*~ z?y)*e?(x3+_B4I7$lx + + + + UnityEditor.Advertisements + + + diff --git a/Roguelike/Library/UnityAssemblies/UnityEditor.Networking.xml b/Roguelike/Library/UnityAssemblies/UnityEditor.Networking.xml new file mode 100644 index 00000000..68ebeb5b --- /dev/null +++ b/Roguelike/Library/UnityAssemblies/UnityEditor.Networking.xml @@ -0,0 +1,8 @@ + + + + + UnityEditor.Networking + + + diff --git a/Roguelike/Library/UnityAssemblies/UnityEditor.UI.xml b/Roguelike/Library/UnityAssemblies/UnityEditor.UI.xml new file mode 100644 index 00000000..86055240 --- /dev/null +++ b/Roguelike/Library/UnityAssemblies/UnityEditor.UI.xml @@ -0,0 +1,363 @@ + + + + + UnityEditor.UI + + +

+ Custom Editor for the EventSystem Component. + + + + + Can this component be previewed in its current state? + + + True if this component can be Previewed in its current state. + + + + + See Editor.OnInspectorGUI. + + + + + Custom preview for Image component. + + Rectangle in which to draw the preview. + Background image. + + + + Does this edit require to be repainted constantly in its current state? + + + + + Custom Editor for the EventTrigger Component. + + + + + Implement specific EventTrigger inspector GUI code here. If you want to simply extend the existing editor call the base OnInspectorGUI () before doing any custom GUI code. + + + + + PropertyDrawer for AnimationTriggers. + + + + + Custom Editor for the AspectRatioFitter component. + + + + + See Editor.OnInspectorGUI. + + + + + Custom Editor for the Button Component. + + + + + See Editor.OnInspectorGUI. + + + + + Custom Editor for the CanvasScaler component. + + + + + PropertyDrawer for ColorBlock. + + + + + Custom Editor for the ContentSizeFitter Component. + + + + + + See Editor.OnInspectorGUI. + + + + + Custom editor for the Dropdown component. + + + + + See Editor.OnInspectorGUI. + + + + + PropertyDrawer for FontData. + + + + + Initialize the serialized properties for the drawer. + + + + + + Extend this class to write your own graphic editor. + + + + + GUI related to the appearance of the graphic. Color and Material properties appear here. + + + + + GUI for showing a button that sets the size of the RectTransform to the native size for this Graphic. + + + + + See MonoBehaviour.OnDisable. + + + + + Implement specific GraphicEditor inspector GUI code here. If you want to simply extend the existing editor call the base OnInspectorGUI () before doing any custom GUI code. + + + + + GUI related to the Raycasting settings for the graphic. + + + + + Set if the 'Set Native Size' button should be visible for this editor. + + + + + + + Custom Editor for the GridLayout Component. + + + + + See Editor.OnInspectorGUI. + + + + + The Editor for the HorizontalOrVerticalLayoutGroup class. + + + + + See Editor.OnInspectorGUI. + + + + + Custom Editor for the Image Component. + + + + + A string cointaining the Image details to be used as a overlay on the component Preview. + + + The Image details. + + + + + Can this component be Previewed in its current state? + + + True if this component can be Previewed in its current state. + + + + + See MonoBehaviour.OnDisable. + + + + + Implement specific ImageEditor inspector GUI code here. If you want to simply extend the existing editor call the base OnInspectorGUI () before doing any custom GUI code. + + + + + Custom preview for Image component. + + Rectangle in which to draw the preview. + Background image. + + + + GUI for showing the Sprite property. + + + + + GUI for showing the image type and associated settings. + + + + + Custom Editor for the InputField Component. + + + + + See: Editor.OnInspectorGUI. + + + + + Editor for the LayoutElement component. + + + + + See: Editor.OnInspectorGUI. + + + + + PropertyDrawer for Navigation. + + + + + Custom editor for RawImage. + + + + + A string cointaining the Image details to be used as a overlay on the component Preview. + + + The RawImage details. + + + + + Can this component be Previewed in its current state? + + + True if this component can be Previewed in its current state. + + + + + Implement specific RawImage inspector GUI code here. If you want to simply extend the existing editor call the base OnInspectorGUI () before doing any custom GUI code. + + + + + Custom preview for Image component. + + Rectangle in which to draw the preview. + Background image. + + + + Custom Editor for the Scrollbar Component. + + + + + See: Editor.OnInspectorGUI. + + + + + Editor for the ScrollRect component. + + + + + See MonoBehaviour.OnDisable. + + + + + See Editor.OnInspectorGUI. + + + + + Custom Editor for the Selectable Component. + + + + + See MonoBehaviour.OnDisable. + + + + + See Editor.OnInspectorGUI. + + + + + Base class for custom editors that are for components that implement the SelfControllerEditor interface. + + + + + See Editor.OnInspectorGUI. + + + + + Custom Editor for the Slider Component. + + + + + See Editor.OnInspectorGUI. + + + + + PropertyDrawer for SpriteState. + + + + + Custom Editor for the Text Component. + + + + + See Editor.OnInspectorGUI. + + + + + Custom Editor for the Toggle Component. + + + + + See Editor.OnInspectorGUI. + + + + diff --git a/Roguelike/Library/UnityAssemblies/UnityEditor.xml b/Roguelike/Library/UnityAssemblies/UnityEditor.xml new file mode 100644 index 00000000..f64a18d4 --- /dev/null +++ b/Roguelike/Library/UnityAssemblies/UnityEditor.xml @@ -0,0 +1,21588 @@ + + + + + UnityEditor + + + + The behavior in case of unhandled .NET exception. + + + + + Crash in case of unhandled .NET exception (Crash Report will be generated). + + + + + Silent exit in case of unhandled .NET exception (no Crash Report generated). + + + + + Hierarchy sort method to allow for items and their children to be sorted alphabetically. + + + + + Content to visualize the alphabetical sorting method. + + + + + Sort the gameobjects by name. + + LHS gameobject to sort. + RHS gameobject to sort. + + + + Gamepad support level for Android TV. + + + + + Requires a gamepad for gameplay. + + + + + Game is fully operational with a D-pad, no gamepad needed. + + + + + Works with a gamepad, but does not require it. + + + + + Preferred application install location. + + + + + Let the OS decide, app doesn't have any preferences. + + + + + Force installation into internal memory. Needed for things like Live Wallpapers. + + + + + Prefer external, if possible. Install to internal otherwise. + + + + + Supported Android SDK versions. + + + + + Android 2.3.3, "Gingerbread", API level 10. + + + + + Android 3.0, "Honeycomb", API level 11. + + + + + Android 3.1, "Honeycomb", API level 12. + + + + + Android 3.2, "Honeycomb", API level 13. + + + + + Android 4.0, "Ice Cream Sandwich", API level 14. + + + + + Android 4.0.3, "Ice Cream Sandwich", API level 15. + + + + + Android 4.1, "Jelly Bean", API level 16. + + + + + Android 4.2, "Jelly Bean", API level 17. + + + + + Android 4.3, "Jelly Bean", API level 18. + + + + + Android 4.4, "KitKat", API level 19. + + + + + Android 5.0, "Lollipop", API level 21. + + + + + Android 5.1, "Lollipop", API level 22. + + + + + Android 2.3.1, "Gingerbread", API level 9. + + + + + Application should show ActivityIndicator when loading. + + + + + Don't Show. + + + + + Inversed Large. + + + + + Inversed Small. + + + + + Large. + + + + + Small. + + + + + Android splash screen scale modes. + + + + + Center. + + + + + Scale to fill. + + + + + Scale to fit. + + + + + Target Android device architecture. + + + + + Intel only. + + + + + ARMv7 only. + + + + + All supported architectures. + + + + + Lerp from 0 - 1. + + + + + Retuns the float value of the tween. + + + + + Constructor. + + Start Value. + + + + + Constructor. + + Start Value. + + + + + Constructor. + + Start Value. + + + + + Constructor. + + Start Value. + + + + + Returns a value between from and to depending on the current value of the bools animation. + + Value to lerp from. + Value to lerp to. + + + + Type specific implementation of BaseAnimValue_1.GetValue. + + + Current value. + + + + + An animated float value. + + + + + Constructor. + + Start Value. + + + + + Constructor. + + Start Value. + + + + + Type specific implementation of BaseAnimValue_1.GetValue. + + + Current Value. + + + + + An animated Quaternion value. + + + + + Constructor. + + Start Value. + + + + + Constructor. + + Start Value. + + + + + Type specific implementation of BaseAnimValue_1.GetValue. + + + Current Value. + + + + + An animated Vector3 value. + + + + + Constructor. + + Start Value. + + + + + Constructor. + + Start Value. + + + + + Constructor. + + Start Value. + + + + + Type specific implementation of BaseAnimValue_1.GetValue. + + + Current Value. + + + + + Abstract base class for Animated Values. + + + + + Is the value currently animating. + + + + + Speed of the tween. + + + + + Target to tween towards. + + + + + Current value of the animation. + + + + + Callback while the value is changing. + + + + + Begin an animation moving from the start value to the target value. + + Target value. + Start value. + + + + Abstract function to be overridden in derived types. Should return the current value of the animated value. + + + Current Value. + + + + + Stop the animation and assign the given value. + + Value to assign. + + + + An AnimationClipCurveData object contains all the information needed to identify a specific curve in an AnimationClip. The curve animates a specific property of a component material attached to a game object animated bone. + + + + + The actual animation curve. + + + + + The path of the game object / bone being animated. + + + + + The name of the property being animated. + + + + + The type of the component / material being animated. + + + + + AnimationMode is used by the AnimationWindow to store properties modifed by the AnimationClip playback. + + + + + The color used to show that a property is currently being animated. + + + + + Are we currently in AnimationMode. + + + + + Is the specified property currently in animation mode and being animated? + + + + + + + Samples an AnimationClip on the object and also records any modified properties in AnimationMode. + + + + + + + + Starts the animation mode. + + + + + Stops Animation mode, reverts all properties that were animated in animation mode. + + + + + Condition that is used to determine if a transition must be taken. + + + + + The mode of the condition. + + + + + The name of the parameter used in the condition. + + + + + The AnimatorParameter's threshold value for the condition to be true. + + + + + The mode of the condition. + + + + + The condition is true when parameter value is equal to the threshold. + + + + + The condition is true when parameter value is greater than the threshold. + + + + + The condition is true when the parameter value is true. + + + + + The condition is true when the parameter value is false. + + + + + The condition is true when the parameter value is less than the threshold. + + + + + The condition is true when the parameter value is not equal to the threshold. + + + + + The Animator Controller controls animation through layers with state machines, controlled by parameters. + + + + + The layers in the controller. + + + + + Parameters are used to communicate between scripting and the controller. They are used to drive transitions and blendtrees for example. + + + + + Adds a state machine behaviour class of type stateMachineBehaviourType to the AnimatorState for layer layerIndex. This function should be used when you are dealing with synchronized layer and would like to add a state machine behaviour on a synchronized layer. C# Users can use a generic version. + + + + + + + + Generic version. See the page for more details. + + + + + + + Utility function to add a layer to the controller. + + The name of the Layer. + The layer to add. + + + + Utility function to add a layer to the controller. + + The name of the Layer. + The layer to add. + + + + Utility function that creates a new state with the motion in it. + + The Motion that will be in the AnimatorState. + The layer where the Motion will be added. + + + + Utility function that creates a new state with the motion in it. + + The Motion that will be in the AnimatorState. + The layer where the Motion will be added. + + + + Utility function to add a parameter to the controller. + + The name of the parameter. + The type of the parameter. + The parameter to add. + + + + Utility function to add a parameter to the controller. + + The name of the parameter. + The type of the parameter. + The parameter to add. + + + + Creates an AnimatorController at the given path. + + The path where the AnimatorController asset will be created. + + The created AnimationController or null if an error occured. + + + + + Creates an AnimatorController at the given path, and automatically create an AnimatorLayer with an AnimatorStateMachine that will add a State with the AnimationClip in it. + + The path where the AnimatorController will be created. + The default clip that will be played by the AnimatorController. + + + + Creates a BlendTree in a new AnimatorState. + + The name of the BlendTree. + The created BlendTree. + The index where the BlendTree will be created. + + + + Creates a BlendTree in a new AnimatorState. + + The name of the BlendTree. + The created BlendTree. + The index where the BlendTree will be created. + + + + This function will create a StateMachineBehaviour instance based on the class define in this script. + + MonoScript class to instantiate. + + Returns instance id of created object, returns 0 if something is not valid. + + + + + Constructor. + + + + + Use this function to retrieve the owner of this behaviour. + + The State Machine Behaviour to get context for. + + Returns the State Machine Behaviour edition context. + + + + + Returns all StateMachineBehaviour that match type T or are derived from T. + + + + + Gets the effective state machine behaviour list for the AnimatorState. Behaviours are either stored in the AnimatorStateMachine or in the AnimatorLayer's ovverrides. Use this function to get Behaviour list that is effectively used. + + The AnimatorState which we want the Behaviour list. + The layer that is queried. + + + + Gets the effective Motion for the AnimatorState. The Motion is either stored in the AnimatorStateMachine or in the AnimatorLayer's ovverrides. Use this function to get the Motion that is effectively used. + + The AnimatorState which we want the Motion. + The layer that is queried. + + + + Gets the effective Motion for the AnimatorState. The Motion is either stored in the AnimatorStateMachine or in the AnimatorLayer's ovverrides. Use this function to get the Motion that is effectively used. + + The AnimatorState which we want the Motion. + The layer that is queried. + + + + Creates a unique name for the layers. + + The desired name of the AnimatorLayer. + + + + Creates a unique name for the parameter. + + The desired name of the AnimatorParameter. + + + + Utility function to remove a layer from the controller. + + The index of the AnimatorLayer. + + + + Utility function to remove a parameter from the controller. + + The index of the AnimatorParameter. + + + + Sets the effective state machine Behaviour list for the AnimatorState. The Behaviour list is either stored in the AnimatorStateMachine or in the AnimatorLayer's ovverrides. Use this function to set the Behaviour list that is effectively used. + + The AnimatorState which we want to set the Behaviour list. + The layer to set the Behaviour list. + The Behaviour list that will be set. + + + + Sets the effective Motion for the AnimatorState. The Motion is either stored in the AnimatorStateMachine or in the AnimatorLayer's ovverrides. Use this function to set the Motion that is effectively used. + + The AnimatorState which we want to set the Motion. + The Motion that will be set. + The layer to set the Motion. + + + + Sets the effective Motion for the AnimatorState. The Motion is either stored in the AnimatorStateMachine or in the AnimatorLayer's ovverrides. Use this function to set the Motion that is effectively used. + + The AnimatorState which we want to set the Motion. + The Motion that will be set. + The layer to set the Motion. + + + + The Animation Layer contains a state machine that controls animations of a model or part of it. + + + + + The AvatarMask that is used to mask the animation on the given layer. + + + + + The blending mode used by the layer. It is not taken into account for the first layer. + + + + + The default blending weight that the layers has. It is not taken into account for the first layer. + + + + + When active, the layer will have an IK pass when evaluated. It will trigger an OnAnimatorIK callback. + + + + + The name of the layer. + + + + + The state machine for the layer. + + + + + When active, the layer will take control of the duration of the Synced Layer. + + + + + Specifies the index of the Synced Layer. + + + + + Gets the override behaviour list for the state on the given layer. + + The state which we want to get the behaviour list. + + + + Gets the override motion for the state on the given layer. + + The state which we want to get the motion. + + + + Sets the override behaviour list for the state on the given layer. + + The state which we want to set the behaviour list. + The behaviour list that will be set. + + + + Sets the override motion for the state on the given layer. + + The state which we want to set the motion. + The motion that will be set. + + + + Specifies how the layer is blended with the previous layers. + + + + + Animations are added to the previous layers. + + + + + Animations overrides to the previous layers. + + + + + States are the basic building blocks of a state machine. Each state contains a Motion ( AnimationClip or BlendTree) which will play while the character is in that state. When an event in the game triggers a state transition, the character will be left in a new state whose animation sequence will then take over. + + + + + The Behaviour list assigned to this state. + + + + + Offset at which the animation loop starts. Useful for synchronizing looped animations. +Units is normalized time. + + + + + The animator controller parameter that drives the cycle offset value. + + + + + Define if the cycle offset value is driven by an Animator controller parameter or by the value set in the editor. + + + + + Should Foot IK be respected for this state. + + + + + Should the state be mirrored. + + + + + The animator controller parameter that drives the mirror value. + + + + + Define if the mirror value is driven by an Animator controller parameter or by the value set in the editor. + + + + + The motion assigned to this state. + + + + + The hashed name of the state. + + + + + The default speed of the motion. + + + + + The animator controller parameter that drives the speed value. + + + + + Define if the speed value is driven by an Animator controller parameter or by the value set in the editor. + + + + + A tag can be used to identify a state. + + + + + The transitions that are going out of the state. + + + + + Whether or not the AnimatorStates writes back the default values for properties that are not animated by its Motion. + + + + + Utility function to add an outgoing transition to the exit of the state's parent state machine. + + If true, the exit time will be the equivalent of 0.25 second. + + The Animations.AnimatorStateTransition that was added. + + + + + Utility function to add an outgoing transition to the exit of the state's parent state machine. + + If true, the exit time will be the equivalent of 0.25 second. + + The Animations.AnimatorStateTransition that was added. + + + + + Adds a state machine behaviour class of type stateMachineBehaviourType to the AnimatorState. C# Users can use a generic version. + + + + + + Generic version. See the page for more details. + + + + + Utility function to add an outgoing transition to the destination state. + + If true, the exit time will be the equivalent of 0.25 second. + The destination state. + + + + Utility function to add an outgoing transition to the destination state. + + If true, the exit time will be the equivalent of 0.25 second. + The destination state. + + + + Utility function to add an outgoing transition to the destination state machine. + + If true, the exit time will be the equivalent of 0.25 second. + The destination state machine. + + + + Utility function to add an outgoing transition to the destination state machine. + + If true, the exit time will be the equivalent of 0.25 second. + The destination state machine. + + + + Utility function to add an outgoing transition. + + The transition to add. + + + + Utility function to remove a transition from the state. + + Transition to remove. + + + + A graph controlling the interaction of states. Each state references a motion. + + + + + The position of the AnyState node. + + + + + The list of AnyState transitions. + + + + + The Behaviour list assigned to this state machine. + + + + + The state that the state machine will be in when it starts. + + + + + The position of the entry node. + + + + + The list of entry transitions in the state machine. + + + + + The position of the exit node. + + + + + The position of the parent state machine node. Only valid when in a hierachic state machine. + + + + + The list of sub state machines. + + + + + The list of states. + + + + + Utility function to add an AnyState transition to the specified state or statemachine. + + The destination state. + The destination statemachine. + + + + Utility function to add an AnyState transition to the specified state or statemachine. + + The destination state. + The destination statemachine. + + + + Utility function to add an incoming transition to the exit of it's parent state machine. + + The destination Animations.AnimatorState state. + The destination Animations.AnimatorStateMachine state machine. + + + + Utility function to add an incoming transition to the exit of it's parent state machine. + + The destination Animations.AnimatorState state. + The destination Animations.AnimatorStateMachine state machine. + + + + Utility function to add a state to the state machine. + + The name of the new state. + The position of the state node. + + The AnimatorState that was created for this state. + + + + + Utility function to add a state to the state machine. + + The name of the new state. + The position of the state node. + + The AnimatorState that was created for this state. + + + + + Utility function to add a state to the state machine. + + The state to add. + The position of the state node. + + + + Utility function to add a state machine to the state machine. + + The name of the new state machine. + The position of the state machine node. + + The newly created Animations.AnimatorStateMachine state machine. + + + + + Utility function to add a state machine to the state machine. + + The name of the new state machine. + The position of the state machine node. + + The newly created Animations.AnimatorStateMachine state machine. + + + + + Utility function to add a state machine to the state machine. + + The state machine to add. + The position of the state machine node. + + + + Adds a state machine behaviour class of type stateMachineBehaviourType to the AnimatorStateMachine. C# Users can use a generic version. + + + + + + Generic version. See the page for more details. + + + + + Utility function to add an outgoing transition from the source state machine to the exit of it's parent state machine. + + The source state machine. + + + + Utility function to add an outgoing transition from the source state machine to the destination. + + The source state machine. + The destination state machine. + The destination state. + + The Animations.AnimatorTransition transition that was created. + + + + + Utility function to add an outgoing transition from the source state machine to the destination. + + The source state machine. + The destination state machine. + The destination state. + + The Animations.AnimatorTransition transition that was created. + + + + + Utility function to add an outgoing transition from the source state machine to the destination. + + The source state machine. + The destination state machine. + The destination state. + + The Animations.AnimatorTransition transition that was created. + + + + + Gets the list of all outgoing state machine transitions from given state machine. + + The source state machine. + + + + Makes a unique state machine name in the context of the parent state machine. + + Desired name for the state machine. + + + + Makes a unique state name in the context of the parent state machine. + + Desired name for the state. + + + + Utility function to remove an AnyState transition from the state machine. + + The AnyStat transition to remove. + + + + Utility function to remove an entry transition from the state machine. + + The transition to remove. + + + + Utility function to remove a state from the state machine. + + The state to remove. + + + + Utility function to remove a state machine from its parent state machine. + + The state machine to remove. + + + + Utility function to remove an outgoing transition from source state machine. + + The transition to remove. + The source state machine. + + + + Sets the list of all outgoing state machine transitions from given state machine. + + The source state machine. + The outgoing transitions. + + + + + Transitions define when and how the state machine switch from one state to another. AnimatorStateTransition always originate from an Animator State (or AnyState) and have timing parameters. + + + + + Set to true to allow or disallow transition to self during AnyState transition. + + + + + The duration of the transition. + + + + + The normalized time of the source state when the condition is true. + + + + + When active the transition will have an exit time condition. + + + + + When active the transition duration will have a fixed duration. + + + + + Which AnimatorState transitions can interrupt the Transition. + + + + + The time at which the destination state will start. + + + + + The Transition can be interrupted by a transition that has a higher priority. + + + + + Creates a new animator state transition. + + + + + Transitions define when and how the state machine switch from on state to another. AnimatorTransition always originate from a StateMachine or a StateMachine entry. They do not define timing parameters. + + + + + Creates a new animator transition. + + + + + Base class for animator transitions. Transitions define when and how the state machine switches from one state to another. + + + + + Animations.AnimatorCondition conditions that need to be met for a transition to happen. + + + + + The destination state of the transition. + + + + + The destination state machine of the transition. + + + + + Is the transition destination the exit of the current state machine. + + + + + Mutes the transition. The transition will never occur. + + + + + Mutes all other transitions in the source state. + + + + + Utility function to add a condition to a transition. + + The Animations.AnimatorCondition mode of the condition. + The threshold value of the condition. + The name of the parameter. + + + + Utility function to remove a condition from the transition. + + The condition to remove. + + + + AvatarMask are used to mask out humanoid body parts and transforms. + + + + + The number of huamanoid body parts. + + + + + Number of transforms. + + + + + Creates a new AvatarMask. + + + + + Returns true if the humanoid body part at the given index is active. + + The index of the humanoid body part. + + + + Returns true if the transform at the given index is active. + + The index of the transform. + + + + Returns the path of the transform at the given index. + + The index of the transform. + + + + Sets the humanoid body part at the given index to active or not. + + The index of the humanoid body part. + Active or not. + + + + Sets the tranform at the given index to active or not. + + The index of the transform. + Active or not. + + + + Sets the path of the transform at the given index. + + The index of the transform. + The path of the transform. + + + + Blend trees are used to blend continuously animation between their childs. They can either be 1D or 2D. + + + + + Parameter that is used to compute the blending weight of the childs in 1D blend trees or on the X axis of a 2D blend tree. + + + + + Parameter that is used to compute the blending weight of the childs on the Y axis of a 2D blend tree. + + + + + The Blending type can be either 1D or different types of 2D. + + + + + The list of the blend tree child motions. + + + + + When active, the children's thresholds are automatically spread between 0 and 1. + + + + + Utility function to add a child motion to a blend trees. + + The motion to add as child. + The position of the child. When using 2D blend trees. + The threshold of the child. When using 1D blend trees. + + + + Utility function to add a child motion to a blend trees. + + The motion to add as child. + The position of the child. When using 2D blend trees. + The threshold of the child. When using 1D blend trees. + + + + Utility function to add a child motion to a blend trees. + + The motion to add as child. + The position of the child. When using 2D blend trees. + The threshold of the child. When using 1D blend trees. + + + + Utility function to add a child blend tree to a blend tree. + + The position of the child. When using 2D blend trees. + The threshold of the child. When using 1D blend trees. + + + + Utility function to add a child blend tree to a blend tree. + + The position of the child. When using 2D blend trees. + The threshold of the child. When using 1D blend trees. + + + + Utility function to remove the child of a blend tree. + + The index of the blend tree to remove. + + + + The type of blending algorithm that the blend tree uses. + + + + + Direct control of blending weight for each node. + + + + + Best used when your motions do not represent different directions. + + + + + This blend type is used when your motions represent different directions, however you can have multiple motions in the same direction, for example "walk forward" and "run forward". + + + + + Basic blending using a single parameter. + + + + + Best used when your motions represent different directions, such as "walk forward", "walk backward", "walk left", and "walk right", or "aim up", "aim down", "aim left", and "aim right". + + + + + Structure that represents a state in the context of its parent state machine. + + + + + The position the the state node in the context of its parent state machine. + + + + + The state. + + + + + Structure that represents a state machine in the context of its parent state machine. + + + + + The position the the state machine node in the context of its parent state machine. + + + + + The state machine. + + + + + Structure that represents a motion in the context of its parent blend tree. + + + + + Normalized time offset of the child. + + + + + The parameter used by the child when used in a BlendTree of type BlendTreeType.Direct. + + + + + Mirror of the child. + + + + + The motion itself. + + + + + The position of the child. Used in 2D blend trees. + + + + + The threshold of the child. Used in 1D blend trees. + + + + + The relative speed of the child. + + + + + This class contains all the owner's information for this State Machine Behaviour. + + + + + The Animations.AnimatorController that owns this state machine behaviour. + + + + + The object that owns this state machine behaviour. Could be an Animations.AnimatorState or Animations.AnimatorStateMachine. + + + + + The animator's layer index that owns this state machine behaviour. + + + + + Which AnimatorState transitions can interrupt the Transition. + + + + + The Transition can be interrupted by transitions in the destination AnimatorState. + + + + + The Transition can be interrupted by transitions in the source or the destination AnimatorState. + + + + + The Transition cannot be interrupted. Formely know as Atomic. + + + + + The Transition can be interrupted by transitions in the source AnimatorState. + + + + + The Transition can be interrupted by transitions in the source or the destination AnimatorState. + + + + + Editor utility functions for modifying animation clips. + + + + + Triggered when an animation curve inside an animation clip has been modified. + + + + + Calculates path from root transform to target transform. + + + + + + + Describes the type of modification that caused OnCurveWasModified to fire. + + + + + Retrieves all curves from a specific animation clip. + + + + + + + Retrieves all curves from a specific animation clip. + + + + + + + Returns all the animatable bindings that a specific game object has. + + + + + + + Returns the animated object that the binding is pointing to. + + + + + + + Returns the array of AnimationClips that are referenced in the Animation component. + + + + + + Retrieves all animation events associated with the animation clip. + + + + + + Returns all the float curve bindings currently stored in the clip. + + + + + + Return the float curve that the binding is pointing to. + + + + + + + + + + Return the float curve that the binding is pointing to. + + + + + + + + + + Retrieves the current float value by sampling a curve value on a specific game object. + + + + + + + + + + Return the object reference curve that the binding is pointing to. + + + + + + + Returns all the object reference curve bindings currently stored in the clip. + + + + + + Triggered when an animation curve inside an animation clip has been modified. + + + + + + + + Sets the array of AnimationClips to be referenced in the Animation component. + + + + + + + Replaces all animation events in the animation clip. + + + + + + + Adds, modifies or removes an editor float curve in a given clip. + + The animation clip to which the curve will be added. + The bindings which defines the path and the property of the curve. + The curve to add. Setting this to null will remove the curve. + + + + Adds, modifies or removes an object reference curve in a given clip. + + Setting this to null will remove the curve. + + + + + + .NET API compatibility level. + + + + + .NET 2.0. + + + + + .NET 2.0 Subset. + + + + + Helpers for builtin arrays ... + + + + + Appends item to the end of array. + + + + + + + Appends items to the end of array. + + + + + + + Compares two arrays. + + + + + True if both have the same number of elements and the contents are equal. + + + + + Clears the array. + + + + + + Determines if the array contains the item. + + + + + True if item is in array, false otherwise. + + + + + Find the index of the first element that satisfies the predicate. + + + + + The zero-based index of the first occurrence of the element, if found; otherwise, �1. + + + + + Index of first element with value value. + + + + + The zero-based index of the element, if found; otherwise -1. + + + + + Inserts item item at position index. + + + + + + + + Index of the last element with value value. + + + + + The zero-based index of the element, if found; otherwise -1. + + + + + Removes item from array. + + + + + + + Remove element at position index. + + + + + + + Aspect ratio. + + + + + 16:10 aspect ratio. + + + + + 16:9 aspect ratio. + + + + + 4:3 aspect ratio. + + + + + 5:4 aspect ratio. + + + + + Undefined aspect ratios. + + + + + AssetBundle building map entry. + + + + + AssetBundle name. + + + + + AssetBundle variant. + + + + + Asset names which belong to the given AssetBundle. + + + + + An Interface for accessing assets and performing operations on assets. + + + + + Adds objectToAdd to an existing asset at path. + + Object to add to the existing asset. + Filesystem path to the asset. + + + + Adds objectToAdd to an existing asset identified by assetObject. + + + + + + + Get the GUID for the asset at path. + + Filesystem path for the asset. + + + + Removes all labels attached to an asset. + + + + + + Is object an asset? + + + + + + + Is object an asset? + + + + + + + Duplicates the asset at path and stores it at newPath. + + Filesystem path of the source asset. + Filesystem path of the new asset to create. + + + + Creates a new asset at path. + + Object to use in creating the asset. + Filesystem path for the new asset. + + + + Create a new folder. + + The name of the parent folder. + The name of the new folder. + + The GUID of the newly created folder. + + + + + Deletes the asset file at path. + + Filesystem path of the asset to be deleted. + + + + Exports the assets identified by assetPathNames to a unitypackage file in fileName. + + + + + + + + + Exports the assets identified by assetPathNames to a unitypackage file in fileName. + + + + + + + + + Exports the assets identified by assetPathNames to a unitypackage file in fileName. + + + + + + + + + Exports the assets identified by assetPathNames to a unitypackage file in fileName. + + + + + + + + + Search the asset database using a search filter string. + + The filter string can contain search data for: names, asset labels and types (class names). + Specifying one or more folders will limit the searching to these folders and their child folders (and is faster than searching all assets). + + Array of matching asset GUIDs. + + + + + Search the asset database using a search filter string. + + The filter string can contain search data for: names, asset labels and types (class names). + Specifying one or more folders will limit the searching to these folders and their child folders (and is faster than searching all assets). + + Array of matching asset GUIDs. + + + + + Creates a new unique path for an asset. + + + + + + Return all the AssetBundle names in the asset database. + + + Array of asset bundle names. + + + + + Returns the path name relative to the project folder where the asset is stored. + + + + + + Returns the path name relative to the project folder where the asset is stored. + + The instance ID of the asset. + A reference to the asset. + + The asset path name, or null, or an empty string if the asset does not exist. + + + + + Returns the path name relative to the project folder where the asset is stored. + + The instance ID of the asset. + A reference to the asset. + + The asset path name, or null, or an empty string if the asset does not exist. + + + + + Gets the path to the asset file associated with a text .meta file. + + + + + + Get the paths of the assets which have been marked with the given assetBundle name. + + + + + + Get the asset paths from the given assetBundle name and asset name. + + + + + + + Retrieves an icon for the asset at the given asset path. + + + + + + Given an array of pathNames, returns the list of all assets that the assets depend on. + + + + + + Returns all labels attached to a given asset. + + + + + + Given an absolute path to a directory, this method will return an array of all it's subdirectories. + + + + + + Gets the path to the text .meta file associated with an asset. + + The path to the asset. + + The path to the .meta text file or empty string if the file does not exist. + + + + + Gets the path to the text .meta file associated with an asset. + + The path to the asset. + + The path to the .meta text file or empty string if the file does not exist. + + + + + Return all the unused assetBundle names in the asset database. + + + + + Translate a GUID to its current asset path. + + + + + + Import asset at path. + + + + + + + Import asset at path. + + + + + + + Imports package at packagePath into the current project. + + + + + + + Is asset a foreign asset? + + + + + + + Is asset a foreign asset? + + + + + + + Is asset a main asset in the project window? + + + + + + + Is asset a main asset in the project window? + + + + + + + Is asset a native asset? + + + + + + + Is asset a native asset? + + + + + + + Use IsOpenForEdit to determine if the asset is open for edit by the version control. + + Is the path to the asset on disk relative to project folder. + Used to give reason for not open. + + + + True is the asset can be edited. + + + + + Use IsOpenForEdit to determine if the asset is open for edit by the version control. + + Is the path to the asset on disk relative to project folder. + Used to give reason for not open. + + + + True is the asset can be edited. + + + + + Use IsOpenForEdit to determine if the asset is open for edit by the version control. + + Is the path to the asset on disk relative to project folder. + Used to give reason for not open. + + + + True is the asset can be edited. + + + + + Use IsOpenForEdit to determine if the asset is open for edit by the version control. + + Is the path to the asset on disk relative to project folder. + Used to give reason for not open. + + + + True is the asset can be edited. + + + + + Does the asset form part of another asset? + + The asset Object to query. + Instance ID of the asset Object to query. + + + + Does the asset form part of another asset? + + The asset Object to query. + Instance ID of the asset Object to query. + + + + Given an absolute path to a folder, returns true if it exists, false otherwise. + + + + + + Returns all asset representations at assetPath. + + + + + + Returns an array of all asset objects at assetPath. + + Filesystem path to the asset. + + + + Returns the first asset object of type type at given path assetPath. + + Path of the asset to load. + Data type of the asset. + + + + Returns the main asset object at assetPath. + + Filesystem path of the asset to load. + + + + Move an asset file from one folder to another. + + The path where the asset currently resides. + The path which the asset should be moved to. + + An empty string if the asset has been successfully moved, otherwise an error message. + + + + + Moves the asset at path to the trash. + + + + + + Opens the asset with associated application. + + + + + + + + Opens the asset with associated application. + + + + + + + + Opens the asset with associated application. + + + + + + + + Opens the asset with associated application. + + + + + + + + Opens the asset(s) with associated application(s). + + + + + + Import any changed assets. + + + + + + Import any changed assets. + + + + + + Remove the assetBundle name from the asset database. The forceRemove flag is used to indicate if you want to remove it even it's in use. + + The assetBundle name you want to remove. + Flag to indicate if you want to remove the assetBundle name even it's in use. + + + + Remove all the unused assetBundle names in the asset database. + + + + + Rename an asset file. + + The path where the asset currently resides. + The new name which should be given to the asset. + + An empty string, if the asset has been successfully renamed, otherwise an error message. + + + + + Writes all unsaved asset changes to disk. + + + + + Replaces that list of labels on an asset. + + + + + + + Begin Asset importing. This lets you group several asset imports together into one larger import. + + + + + Stop Asset importing. This lets you group several asset imports together into one larger import. + + + + + Checks if an asset file can be moved from one folder to another. (Without actually moving the file). + + The path where the asset currently resides. + The path which the asset should be moved to. + + An empty string if the asset can be moved, otherwise an error message. + + + + + Writes the import settings to disk. + + + + + + Result of Asset delete operation + + + + + Tells Unity that the asset was deleted by the callback. Unity will not try to delete the asset, but will delete the cached version and preview file. + + + + + Tells the internal implementation that the callback did not delete the asset. The asset will be delete by the internal implementation. + + + + + Tells Unity that the file cannot be deleted and Unity should leave it alone. + + + + + Base class from which asset importers for specific asset types derive. + + + + + Get or set the AssetBundle name. + + + + + Get or set the AssetBundle variant. + + + + + The path name of the asset for this importer. (Read Only) + + + + + Get or set any user data. + + + + + Retrieves the asset importer for the asset at path. + + + + + + Save asset importer settings if asset importer is dirty. + + + + + AssetModificationProcessor lets you hook into saving of serialized assets and scenes which are edited inside Unity. + + + + + Result of Asset move + + + + + Tells the internal implementation that the script moved the asset physically on disk. + + + + + Tells the internal implementation that the asset was not moved physically on disk by the script. + + + + + Tells the internal implementation that the script could not move the assets. + + + + + AssetPostprocessor lets you hook into the import pipeline and run scripts prior or after importing assets. + + + + + Reference to the asset importer. + + + + + The path name of the asset being imported. + + + + + Override the order in which importers are processed. + + + + + Returns the version of the asset postprocessor. + + + + + Logs an import error message to the console. + + + + + + + Logs an import error message to the console. + + + + + + + Logs an import warning to the console. + + + + + + + Logs an import warning to the console. + + + + + + + Utility for fetching asset previews by instance ID of assets, See AssetPreview.GetAssetPreview. Since previews are loaded asynchronously methods are provided for requesting if all previews have been fully loaded, see AssetPreview.IsLoadingAssetPreviews. Loaded previews are stored in a cache, the size of the cache can be controlled by calling [AssetPreview.SetPreviewTextureCacheSize]. + + + + + Returns a preview texture for an asset. + + + + + + Returns a preview texture for an instanceID of an asset. + + + + + Returns the thumbnail for an object (like the ones you see in the project view). + + + + + + Returns the thumbnail for the type. + + + + + + Returns the thumbnail for the object's type. + + + + + Loading previews is asynchronous so it is useful to know if a specific asset preview is in the process of being loaded so client code e.g can repaint while waiting for the loading to finish. + + InstanceID of the assset that a preview has been requested for by: AssetPreview.GetAssetPreview(). + + + + Loading previews is asynchronous so it is useful to know if any requested previews are in the process of being loaded so client code e.g can repaint while waiting. + + + + + Set the asset preview cache to a size that can hold all visible previews on the screen at once. + + The number of previews that can be loaded into the cache before the least used previews are being unloaded. + + + + Audio importer lets you modify AudioClip import settings from editor scripts. + + + + + Compression bitrate. + + + + + The default sample settings for the AudioClip importer. + + + + + Force this clip to mono? + + + + + Corresponding to the "Load In Background" flag in the AudioClip inspector, when this flag is set, the loading of the clip will happen delayed without blocking the main thread. + + + + + Preloads audio data of the clip when the clip asset is loaded. When this flag is off, scripts have to call AudioClip.LoadAudioData() to load the data before the clip can be played. Properties like length, channels and format are available before the audio data has been loaded. + + + + + Clears the sample settings override for the given platform. + + The platform to clear the overrides for. + + Returns true if any overrides were actually cleared. + + + + + Returns whether a given build target has its sample settings currently overridden. + + The platform to query if this AudioImporter has an override for. + + Returns true if the platform is currently overriden in this AudioImporter. + + + + + Return the current override settings for the given platform. + + The platform to get the override settings for. + + The override sample settings for the given platform. + + + + + Sets the override sample settings for the given platform. + + The platform which will have the sample settings overridden. + The override settings for the given platform. + + Returns true if the settings were successfully overriden. Some setting overrides are not possible for the given platform, in which case false is returned and the settings are not registered. + + + + + This structure contains a collection of settings used to define how an AudioClip should be imported. + +This structure is used with the AudioImporter to define how the AudioClip should be imported and treated during loading within the scene. + + + + + CompressionFormat defines the compression type that the audio file is encoded to. Different compression types have different performance and audio artifact characteristics. + + + + + LoadType defines how the imported AudioClip data should be loaded. + + + + + Audio compression quality (0-1) + +Amount of compression. The value roughly corresponds to the ratio between the resulting and the source file sizes. + + + + + Target sample rate to convert to when samplerateSetting is set to OverrideSampleRate. + + + + + Defines how the sample rate is modified (if at all) of the importer audio file. + + + + + The sample rate setting used within the AudioImporter. This defines the sample rate conversion of audio on import. + + + + + Let Unity deduce the optimal sample rate for the AudioClip being imported. The audio file will be analysed and a minimal sample rate chosen while still preserving audio quality. + + + + + Override the sample rate of the imported audio file with a custom value. + + + + + Do not change the sample rate of the imported audio file. The sample rate will be preserved for the imported AudioClip. + + + + + The base class used to create new sorting. + + + + + The content to display to quickly identify the hierarchy's mode. + + + + + The sorting method used to determine the order of GameObjects. + + + + + + + Build types available for BlackBerry. + + + + + Build type for local testing purposes. + + + + + Signed build used for submission to BlackBerry AppWorld. + + + + + Asset Bundle building options. + + + + + Append the hash to the assetBundle name. + + + + + Includes all dependencies. + + + + + Forces inclusion of the entire asset. + + + + + Builds an asset bundle using a hash for the id of the object stored in the asset bundle. + + + + + Do not include type information within the AssetBundle. + + + + + Force rebuild the assetBundles. + + + + + Ignore the type tree changes when doing the incremental build check. + + + + + Build assetBundle without any special option. + + + + + Don't compress the data when creating the asset bundle. + + + + + Building options. Multiple options can be combined together. + + + + + Used when building Xcode (iPhone) or Eclipse (Android) projects. + + + + + Allow script debuggers to attach to the player remotely. + + + + + Run the built player. + + + + + Build a compressed asset bundle that contains streamed scenes loadable with the WWW class. + + + + + Build only the scripts of a project. + + + + + Start the player with a connection to the profiler in the editor. + + + + + Build a development version of the player. + + + + + Build headless Linux standalone. + + + + + Include assertions in the build. By default, the assertions are only included in development builds. + + + + + Force full optimizations for script complilation in Development builds. + + + + + Perform the specified build without any special settings or extra tasks. + + + + + Show the built player. + + + + + Symlink runtime libraries when generating iOS Xcode project. (Faster iteration time). + + + + + Don't compress the data when creating the asset bundle. + + + + + Copy UnityObject.js alongside Web Player so it wouldn't have to be downloaded from internet. + + + + + Lets you programmatically build players or AssetBundles which can be loaded from the web. + + + + + Is a player currently being built? + + + + + Builds an asset bundle. + + Lets you specify a specific object that can be conveniently retrieved using AssetBundle.mainAsset. + An array of assets to write into the bundle. + The filename where to write the compressed asset bundle. + Automatically include dependencies or always include complete assets instead of just the exact referenced objects. + The platform to build the bundle for. + The optional crc output parameter can be used to get a CRC checksum for the generated AssetBundle, which can be used to verify content when downloading AssetBundles using WWW.LoadFromCacheOrDownload. + + + + Builds an asset bundle. + + Lets you specify a specific object that can be conveniently retrieved using AssetBundle.mainAsset. + An array of assets to write into the bundle. + The filename where to write the compressed asset bundle. + Automatically include dependencies or always include complete assets instead of just the exact referenced objects. + The platform to build the bundle for. + The optional crc output parameter can be used to get a CRC checksum for the generated AssetBundle, which can be used to verify content when downloading AssetBundles using WWW.LoadFromCacheOrDownload. + + + + Builds an asset bundle. + + Lets you specify a specific object that can be conveniently retrieved using AssetBundle.mainAsset. + An array of assets to write into the bundle. + The filename where to write the compressed asset bundle. + Automatically include dependencies or always include complete assets instead of just the exact referenced objects. + The platform to build the bundle for. + The optional crc output parameter can be used to get a CRC checksum for the generated AssetBundle, which can be used to verify content when downloading AssetBundles using WWW.LoadFromCacheOrDownload. + + + + Builds an asset bundle. + + Lets you specify a specific object that can be conveniently retrieved using AssetBundle.mainAsset. + An array of assets to write into the bundle. + The filename where to write the compressed asset bundle. + Automatically include dependencies or always include complete assets instead of just the exact referenced objects. + The platform to build the bundle for. + The optional crc output parameter can be used to get a CRC checksum for the generated AssetBundle, which can be used to verify content when downloading AssetBundles using WWW.LoadFromCacheOrDownload. + + + + Builds an asset bundle. + + Lets you specify a specific object that can be conveniently retrieved using AssetBundle.mainAsset. + An array of assets to write into the bundle. + The filename where to write the compressed asset bundle. + Automatically include dependencies or always include complete assets instead of just the exact referenced objects. + The platform to build the bundle for. + The optional crc output parameter can be used to get a CRC checksum for the generated AssetBundle, which can be used to verify content when downloading AssetBundles using WWW.LoadFromCacheOrDownload. + + + + Builds an asset bundle. + + Lets you specify a specific object that can be conveniently retrieved using AssetBundle.mainAsset. + An array of assets to write into the bundle. + The filename where to write the compressed asset bundle. + Automatically include dependencies or always include complete assets instead of just the exact referenced objects. + The platform to build the bundle for. + The optional crc output parameter can be used to get a CRC checksum for the generated AssetBundle, which can be used to verify content when downloading AssetBundles using WWW.LoadFromCacheOrDownload. + + + + Builds an asset bundle, with custom names for the assets. + + A collection of assets to be built into the asset bundle. Asset bundles can contain any asset found in the project folder. + An array of strings of the same size as the number of assets. +These will be used as asset names, which you can then pass to AssetBundle.Load to load a specific asset. Use BuildAssetBundle to just use the asset's path names instead. + The location where the compressed asset bundle will be written to. + Automatically include dependencies or always include complete assets instead of just the exact referenced objects. + The platform where the asset bundle will be used. + An optional output parameter used to get a CRC checksum for the generated AssetBundle. (Used to verify content when downloading AssetBundles using WWW.LoadFromCacheOrDownload.) + + + + Builds an asset bundle, with custom names for the assets. + + A collection of assets to be built into the asset bundle. Asset bundles can contain any asset found in the project folder. + An array of strings of the same size as the number of assets. +These will be used as asset names, which you can then pass to AssetBundle.Load to load a specific asset. Use BuildAssetBundle to just use the asset's path names instead. + The location where the compressed asset bundle will be written to. + Automatically include dependencies or always include complete assets instead of just the exact referenced objects. + The platform where the asset bundle will be used. + An optional output parameter used to get a CRC checksum for the generated AssetBundle. (Used to verify content when downloading AssetBundles using WWW.LoadFromCacheOrDownload.) + + + + Builds an asset bundle, with custom names for the assets. + + A collection of assets to be built into the asset bundle. Asset bundles can contain any asset found in the project folder. + An array of strings of the same size as the number of assets. +These will be used as asset names, which you can then pass to AssetBundle.Load to load a specific asset. Use BuildAssetBundle to just use the asset's path names instead. + The location where the compressed asset bundle will be written to. + Automatically include dependencies or always include complete assets instead of just the exact referenced objects. + The platform where the asset bundle will be used. + An optional output parameter used to get a CRC checksum for the generated AssetBundle. (Used to verify content when downloading AssetBundles using WWW.LoadFromCacheOrDownload.) + + + + Builds an asset bundle, with custom names for the assets. + + A collection of assets to be built into the asset bundle. Asset bundles can contain any asset found in the project folder. + An array of strings of the same size as the number of assets. +These will be used as asset names, which you can then pass to AssetBundle.Load to load a specific asset. Use BuildAssetBundle to just use the asset's path names instead. + The location where the compressed asset bundle will be written to. + Automatically include dependencies or always include complete assets instead of just the exact referenced objects. + The platform where the asset bundle will be used. + An optional output parameter used to get a CRC checksum for the generated AssetBundle. (Used to verify content when downloading AssetBundles using WWW.LoadFromCacheOrDownload.) + + + + Builds an asset bundle, with custom names for the assets. + + A collection of assets to be built into the asset bundle. Asset bundles can contain any asset found in the project folder. + An array of strings of the same size as the number of assets. +These will be used as asset names, which you can then pass to AssetBundle.Load to load a specific asset. Use BuildAssetBundle to just use the asset's path names instead. + The location where the compressed asset bundle will be written to. + Automatically include dependencies or always include complete assets instead of just the exact referenced objects. + The platform where the asset bundle will be used. + An optional output parameter used to get a CRC checksum for the generated AssetBundle. (Used to verify content when downloading AssetBundles using WWW.LoadFromCacheOrDownload.) + + + + Builds an asset bundle, with custom names for the assets. + + A collection of assets to be built into the asset bundle. Asset bundles can contain any asset found in the project folder. + An array of strings of the same size as the number of assets. +These will be used as asset names, which you can then pass to AssetBundle.Load to load a specific asset. Use BuildAssetBundle to just use the asset's path names instead. + The location where the compressed asset bundle will be written to. + Automatically include dependencies or always include complete assets instead of just the exact referenced objects. + The platform where the asset bundle will be used. + An optional output parameter used to get a CRC checksum for the generated AssetBundle. (Used to verify content when downloading AssetBundles using WWW.LoadFromCacheOrDownload.) + + + + Build all AssetBundles specified in the editor. + + Output path for the AssetBundles. + AssetBundle building options. + Target build platform. + + + + Build AssetBundles from a building map. + + Output path for the AssetBundles. + AssetBundle building options. + Target build platform. + AssetBundle building map. + + + + Builds a player. + + The scenes to be included in the build. If empty, the currently open scene will be built. Paths are relative to the project folder (AssetsMyLevelsMyScene.unity). + The path where the application will be built. + The BuildTarget to build. + Additional BuildOptions, like whether to run the built player. + + An error message if an error occurred. + + + + + Builds one or more scenes and all their dependencies into a compressed asset bundle. + + Pathnames of levels to include in the asset bundle. + Pathname for the output asset bundle. + Runtime platform on which the asset bundle will be used. + Output parameter to receive CRC checksum of generated assetbundle. + Build options. See BuildOptions for possible values. + + String with an error message, empty on success. + + + + + Builds one or more scenes and all their dependencies into a compressed asset bundle. + + Pathnames of levels to include in the asset bundle. + Pathname for the output asset bundle. + Runtime platform on which the asset bundle will be used. + Output parameter to receive CRC checksum of generated assetbundle. + Build options. See BuildOptions for possible values. + + String with an error message, empty on success. + + + + + Builds one or more scenes and all their dependencies into a compressed asset bundle. + + Pathnames of levels to include in the asset bundle. + Pathname for the output asset bundle. + Runtime platform on which the asset bundle will be used. + Output parameter to receive CRC checksum of generated assetbundle. + Build options. See BuildOptions for possible values. + + String with an error message, empty on success. + + + + + Builds one or more scenes and all their dependencies into a compressed asset bundle. + + Pathnames of levels to include in the asset bundle. + Pathname for the output asset bundle. + Runtime platform on which the asset bundle will be used. + Output parameter to receive CRC checksum of generated assetbundle. + Build options. See BuildOptions for possible values. + + String with an error message, empty on success. + + + + + Extract the crc checksum for the given AssetBundle. + + + + + + + Extract the hash for the given AssetBundle. + + + + + + + Lets you manage cross-references and dependencies between different asset bundles and player builds. + + + + + Lets you manage cross-references and dependencies between different asset bundles and player builds. + + + + + Target build platform. + + + + + Build an iOS player. + + + + + OBSOLETE: Use iOS. Build an iOS player. + + + + + Build an Android .apk standalone app. + + + + + Build a BlackBerry 10 application. + + + + + Build to Nintendo 3DS platform. + + + + + Build a PS3 Standalone. + + + + + Build a PS4 Standalone. + + + + + Build a PS Vita Standalone. + + + + + Build to Samsung Smart TV platform. + + + + + Build a Linux standalone. + + + + + Build a Linux 64-bit standalone. + + + + + Build a Linux universal standalone. + + + + + Build an OS X standalone (Intel only). + + + + + Build an OSX Intel 64-bit standalone. + + + + + Build a universal OSX standalone. + + + + + Build a Windows standalone. + + + + + Build a Windows 64-bit standalone. + + + + + Build a Tizen player. + + + + + WebGL. + + + + + Build a web player. + + + + + Build a streamed web player. + + + + + Build a Wii U standalone. + + + + + Build a Windows Phone 8 player. + + + + + Build an Windows Store Apps player. + + + + + Build a XBox Standalone. + + + + + Build a Xbox One Standalone. + + + + + Build target group. + + + + + Apple iOS target. + + + + + OBSOLETE: Use iOS. Apple iOS target. + + + + + Android target. + + + + + GLESEmu target. + + + + + Nintendo 3DS target. + + + + + Sony Playstation 3 target. + + + + + Sony Playstation 4 target. + + + + + Sony PS Vita target. + + + + + Samsung Smart TV target. + + + + + Mac/PC standalone target. + + + + + Samsung Tizen target. + + + + + Unknown target. + + + + + WebGL. + + + + + Mac/PC webplayer target. + + + + + Nintendo Wii U target. + + + + + Windows Phone 8 target. + + + + + Windows Store Apps target. + + + + + Microsoft XBOX360 target. + + + + + Microsoft Xbox One target. + + + + + Base class for Attributes that require a callback index. + + + + + Add this attribute to a method to get a notification after scripts have been reloaded. + + + + + DidReloadScripts attribute. + + Order in which separate attributes will be processed. + + + + DidReloadScripts attribute. + + Order in which separate attributes will be processed. + + + + Callback attribute for opening an asset in Unity (e.g the callback is fired when double clicking an asset in the Project Browser). + + + + + Add this attribute to a method to get a notification just after building the player. + + + + + Add this attribute to a method to get a notification just before building the scene. + + + + + Attribute used to make a custom editor support multi-object editing. + + + + + Stores a curve and its name that will be used to create additionnal curves during the import process. + + + + + The animation curve. + + + + + The name of the animation curve. + + + + + AnimationClip mask options for ModelImporterClipAnimation. + + + + + Use a mask from your project to specify which transforms animation should be imported. + + + + + A mask containing all the transform in the file will be created internally. + + + + + Used as input to ColorField to configure the HDR color ranges in the ColorPicker. + + + + + Maximum allowed color component value when using the ColorPicker. + + + + + Maximum exposure value allowed in the Color Picker. + + + + + Minimum allowed color component value when using the ColorPicker. + + + + + Minimum exposure value allowed in the Color Picker. + + + + + + + Minimum brightness value allowed when using the Color Picker. + Maximum brightness value allowed when using the Color Picker. + Minimum exposure value used in the tonemapping section of the Color Picker. + Maximum exposure value used in the tonemapping section of the Color Picker. + + + + Tells an Editor class which run-time type it's an editor for. + + + + + If true, match this editor only if all non-fallback editors do not match. Defaults to false. + + + + + Defines which object type the custom editor class can edit. + + Type that this editor can edit. + If true, child classes of inspectedType will also show this editor. Defaults to false. + + + + Defines which object type the custom editor class can edit. + + Type that this editor can edit. + If true, child classes of inspectedType will also show this editor. Defaults to false. + + + + Adds an extra preview in the Inspector for the specified type. + + + + + Tells a DefaultPreview which class it's a preview for. + + The type you want to create a custom preview for. + + + + Tells a custom PropertyDrawer or DecoratorDrawer which run-time Serializable class or PropertyAttribute it's a drawer for. + + + + + Tells a PropertyDrawer or DecoratorDrawer class which run-time class or attribute it's a drawer for. + + If the drawer is for a custom Serializable class, the type should be that class. If the drawer is for script variables with a specific PropertyAttribute, the type should be that attribute. + If true, the drawer will be used for any children of the specified class unless they define their own drawer. + + + + Tells a PropertyDrawer or DecoratorDrawer class which run-time class or attribute it's a drawer for. + + If the drawer is for a custom Serializable class, the type should be that class. If the drawer is for script variables with a specific PropertyAttribute, the type should be that attribute. + If true, the drawer will be used for any children of the specified class unless they define their own drawer. + + + + Direct3D 11 fullscreen mode. + + + + + Exclusive mode. + + + + + Fullscreen window. + + + + + Direct3D 9 fullscreen mode. + + + + + Exclusive mode. + + + + + Fullscreen window. + + + + + Base class to derive custom decorator drawers from. + + + + + The PropertyAttribute for the decorator. (Read Only) + + + + + Override this method to specify how tall the GUI for this decorator is in pixels. + + + + + Override this method to make your own GUI for the decorator. + + Rectangle on the screen to use for the decorator GUI. + + + + DefaultAsset is used for assets that does not have a specific type (yet). + + + + + Constructor. + + + + + Editor drag & drop operations. + + + + + Get or set ID of currently active drag and drop control. + + + + + References to Object|objects being dragged. + + + + + The file names being dragged. + + + + + The visual indication of the drag. + + + + + Accept a drag operation. + + + + + Get data associated with current drag and drop operation. + + + + + + Clears drag & drop data. + + + + + Set data associated with current drag and drop operation. + + + + + + + Start a drag operation. + + + + + + Visual indication mode for Drag & Drop operation. + + + + + Copy dragged objects. + + + + + Generic drag operation. + + + + + Link dragged objects to target. + + + + + Move dragged objects. + + + + + No indication (drag should not be performed). + + + + + Rejected drag operation. + + + + + Drawing modes for Handles.DrawCamera. + + + + + Draw objects with the albedo component only. + + + + + Display alpha channel of the rendering. + + + + + Draw objects with baked GI only. + + + + + Draw objects with different color for each chart (UV island). + + + + + Draw with different color for each cluster. + + + + + Draw diffuse color of Deferred Shading g-buffer. + + + + + Draw world space normal of Deferred Shading g-buffer. + + + + + Draw smoothness value of Deferred Shading g-buffer. + + + + + Draw specular color of Deferred Shading g-buffer. + + + + + Draw objects with directionality for real-time GI. + + + + + Draw objects with the emission component only. + + + + + Draw objects with real-time GI only. + + + + + Draw lit clusters. + + + + + Display texture resolution, with red tint indicating too high resolution, and blue tint indicating texture sizes that could be higher. + + + + + Draw the camera like it would be drawn in-game. This uses the clear flags of the camera. + + + + + Display scene overdraw, with brighter colors indicating more overdraw. + + + + + Draw color-coded render paths. + + + + + Draw directional light shadowmap cascades. + + + + + Draw objects with different color for each GI system. + + + + + Draw the camera textured with selection wireframe and no background clearing. + + + + + Draw the camera where all objects have a wireframe overlay. and no background clearing. + + + + + Draw the camera in wireframe and no background clearing. + + + + + The DrawGizmo attribute allows you to supply a gizmo renderer for any Component. + + + + + Defines when the gizmo should be invoked for drawing. + + Flags to denote when the gizmo should be drawn. + + + + Same as above. drawnGizmoType determines of what type the object we are drawing the gizmo of has to be. + + Flags to denote when the gizmo should be drawn. + Type of object for which the gizmo should be drawn. + + + + Base class to derive custom Editors from. Use this to create your own custom inspectors and editors for your objects. + + + + + A SerializedObject representing the object or objects being inspected. + + + + + The object being inspected. + + + + + An array of all the object being inspected. + + + + + On return previousEditor is an editor for targetObject or targetObjects. The function either returns if the editor is already tracking the objects, or Destroys the previous editor and creates a new one. + + The object the editor is tracking. + The requested editor type. null for the default editor for the object. + The previous editor for the object. Once CreateCachedEditor returns previousEditor is an editor for the targetObject or targetObjects. + The objects the editor is tracking. + + + + + + On return previousEditor is an editor for targetObject or targetObjects. The function either returns if the editor is already tracking the objects, or Destroys the previous editor and creates a new one. + + The object the editor is tracking. + The requested editor type. null for the default editor for the object. + The previous editor for the object. Once CreateCachedEditor returns previousEditor is an editor for the targetObject or targetObjects. + The objects the editor is tracking. + + + + + + Make a custom editor for targetObject or targetObjects. + + All objects must be of same exact type. + + + + + + + Make a custom editor for targetObject or targetObjects. + + All objects must be of same exact type. + + + + + + + Make a custom editor for targetObject or targetObjects. + + All objects must be of same exact type. + + + + + + + Make a custom editor for targetObject or targetObjects. + + All objects must be of same exact type. + + + + + + + Draw the built-in inspector. + + + + + Call this function to draw the header of the editor. + + + + + The first entry point for Preview Drawing. + + The available area to draw the preview. + + + + + Implement this method to show asset information on top of the asset preview. + + + + + Override this method if you want to change the label of the Preview area. + + + + + Override this method in subclasses if you implement OnPreviewGUI. + + + True if this component can be Previewed in its current state. + + + + + Implement this function to make a custom inspector. + + + + + Implement to create your own interactive custom preview. Interactive custom previews are used in the preview area of the inspector and the object selector. + + Rectangle in which to draw the preview. + Background image. + + + + Implement to create your own custom preview for the preview area of the inspector, primary editor headers and the object selector. + + Rectangle in which to draw the preview. + Background image. + + + + Override this method if you want to show custom controls in the preview header. + + + + + Override this method if you want to render a static preview that shows. + + + + + + + + + Repaint any inspectors that shows this editor. + + + + + Does this edit require to be repainted constantly in its current state? + + + + + Override this method in subclasses to return false if you don't want default margins. + + + + + Main Application class. + + + + + Path to the Unity editor contents folder. (Read Only) + + + + + Returns the path to the Unity editor application. (Read Only) + + + + + The path of the scene that the user has currently open (Will be an empty string if no scene is currently open). (Read Only) + + + + + Delegate which is called once after all inspectors update. + + + + + A callback to be raised when an object in the hierarchy changes. + +Each time an object is (or a group of objects are) created, renamed, parented, unparented or destroyed this callback is raised. + + + + + + Delegate for OnGUI events for every visible list item in the HierarchyWindow. + + + + + Is editor currently compiling scripts? (Read Only) + + + + + Is editor currently paused? + + + + + Is editor currently in play mode? + + + + + Is editor either currently in play mode, or about to switch to it? (Read Only) + + + + + Is editor currently connected to Unity Remote 4 client app. + + + + + Is true if the currently open scene in the editor contains unsaved modifications. + + + + + Is editor currently updating? (Read Only) + + + + + Delegate for changed keyboard modifier keys. + + + + + Delegate for play mode state changes. + + + + + Callback raised whenever the state of the Project window changes. + + + + + Delegate for OnGUI events for every visible list item in the ProjectWindow. + + + + + Callback raised whenever the contents of a window's search box are changed. + + + + + The time since the editor was started. (Read Only) + + + + + Delegate for generic updates. + + + + + Plays system beep sound. + + + + + Delegate to be called from EditorApplication callbacks. + + + + + Set the hierarchy sorting method as dirty. + + + + + Invokes the menu item in the specified path. + + + + + + Exit the Unity editor application. + + + + + + Delegate to be called for every visible list item in the HierarchyWindow on every OnGUI event. + + + + + + + Load the given level additively in play mode asynchronously + + + + + + Load the given level additively in play mode. + + + + + + Load the given level in play mode asynchronously. + + + + + + Load the given level in play mode. + + + + + + Prevents loading of assemblies when it is inconvenient. + + + + + Explicitly mark the current opened scene as modified. + + + + + Create a new absolutely empty scene. + + + + + Create a new scene. + + + + + Open another project. + + The path of a project to open. + Arguments to pass to command line. + + + + Opens the scene at path. + + + + + + Opens the scene at path additively. + + + + + + Delegate to be called for every visible list item in the ProjectWindow on every OnGUI event. + + + + + + + Can be used to ensure repaint of the HierarchyWindow. + + + + + Can be used to ensure repaint of the ProjectWindow. + + + + + Saves all serializable assets that have not yet been written to disk (eg. Materials). + + + + + Ask the user if he wants to save the open scene. + + + + + Save the open scene. + + The file path to save at. If empty, the current open scene will be overwritten, or if never saved before, a save dialog is shown. + If set to true, the scene will be saved without changing the currentScene and without clearing the unsaved changes marker. + + True if the save succeeded, otherwise false. + + + + + Save the open scene. + + The file path to save at. If empty, the current open scene will be overwritten, or if never saved before, a save dialog is shown. + If set to true, the scene will be saved without changing the currentScene and without clearing the unsaved changes marker. + + True if the save succeeded, otherwise false. + + + + + Save the open scene. + + The file path to save at. If empty, the current open scene will be overwritten, or if never saved before, a save dialog is shown. + If set to true, the scene will be saved without changing the currentScene and without clearing the unsaved changes marker. + + True if the save succeeded, otherwise false. + + + + + Perform a single frame step. + + + + + Must be called after LockReloadAssemblies, to reenable loading of assemblies. + + + + + Defines how a curve is attached to an object that it controls. + + + + + The transform path of the object that is animated. + + + + + The property of the object that is animated. + + + + + These work pretty much like the normal GUI functions - and also have matching implementations in EditorGUILayout. + + + + + Is the platform-dependent "action" modifier key held down? (Read Only) + + + + + The indent level of the field labels. + + + + + Makes the following controls give the appearance of editing multiple different values. + + + + + Check if any control was changed inside a block of code. + + + + + Create a group of controls that can be disabled. + + Boolean specifying if the controls inside the group should be disabled. + + + + Create a Property wrapper, useful for making regular GUI controls work with SerializedProperty. + + Rectangle on the screen to use for the control, including label if applicable. + Optional label in front of the slider. Use null to use the name from the SerializedProperty. Use GUIContent.none to not display a label. + The SerializedProperty to use for the control. + + The actual label to use for the control. + + + + + Make Center & Extents field for entering a Bounds. + + Rectangle on the screen to use for the field. + Optional label to display above the field. + The value to edit. + + The value entered by the user. + + + + + Make Center & Extents field for entering a Bounds. + + Rectangle on the screen to use for the field. + Optional label to display above the field. + The value to edit. + + The value entered by the user. + + + + + Make a field for selecting a Color. + + Rectangle on the screen to use for the field. + Optional label to display in front of the field. + The color to edit. + + The color selected by the user. + + + + + Make a field for selecting a Color. + + Rectangle on the screen to use for the field. + Optional label to display in front of the field. + The color to edit. + + The color selected by the user. + + + + + Make a field for selecting a Color. + + Rectangle on the screen to use for the field. + Optional label to display in front of the field. + The color to edit. + + The color selected by the user. + + + + + Make a field for selecting a Color. + + Rectangle on the screen to use for the field. + Optional label to display in front of the field. + The color to edit. + + The color selected by the user. + + + + + + + + + + Make a field for editing an AnimationCurve. + + Rectangle on the screen to use for the field. + Optional label to display in front of the field. + The curve to edit. + The color to show the curve with. + Optional rectangle that the curve is restrained within. + + The curve edited by the user. + + + + + Make a field for editing an AnimationCurve. + + Rectangle on the screen to use for the field. + Optional label to display in front of the field. + The curve to edit. + The color to show the curve with. + Optional rectangle that the curve is restrained within. + + The curve edited by the user. + + + + + Make a field for editing an AnimationCurve. + + Rectangle on the screen to use for the field. + Optional label to display in front of the field. + The curve to edit. + The color to show the curve with. + Optional rectangle that the curve is restrained within. + + The curve edited by the user. + + + + + Make a field for editing an AnimationCurve. + + Rectangle on the screen to use for the field. + Optional label to display in front of the field. + The curve to edit. + The color to show the curve with. + Optional rectangle that the curve is restrained within. + + The curve edited by the user. + + + + + Make a field for editing an AnimationCurve. + + Rectangle on the screen to use for the field. + Optional label to display in front of the field. + The curve to edit. + The color to show the curve with. + Optional rectangle that the curve is restrained within. + + The curve edited by the user. + + + + + Make a field for editing an AnimationCurve. + + Rectangle on the screen to use for the field. + Optional label to display in front of the field. + The curve to edit. + The color to show the curve with. + Optional rectangle that the curve is restrained within. + + The curve edited by the user. + + + + + Make a field for editing an AnimationCurve. + + Rectangle on the screen to use for the field. + The curve to edit. + The color to show the curve with. + Optional rectangle that the curve is restrained within. + + + + + Create a group of controls that can be disabled. + + + + + Create a new DisabledGroupScope and begin the corresponding group. + + Boolean specifying if the controls inside the group should be disabled. + + + + Make a text field for entering doubles. + + Rectangle on the screen to use for the double field. + Optional label to display in front of the double field. + The value to edit. + Optional GUIStyle. + + The value entered by the user. + + + + + Make a text field for entering doubles. + + Rectangle on the screen to use for the double field. + Optional label to display in front of the double field. + The value to edit. + Optional GUIStyle. + + The value entered by the user. + + + + + Make a text field for entering doubles. + + Rectangle on the screen to use for the double field. + Optional label to display in front of the double field. + The value to edit. + Optional GUIStyle. + + The value entered by the user. + + + + + Draws the texture within a rectangle. + + Rectangle on the screen to draw the texture within. + Texture to display. + Material to be used when drawing the texture. + How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. + Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. + + + + Draws the texture within a rectangle. + + Rectangle on the screen to draw the texture within. + Texture to display. + Material to be used when drawing the texture. + How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. + Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. + + + + Draws the texture within a rectangle. + + Rectangle on the screen to draw the texture within. + Texture to display. + Material to be used when drawing the texture. + How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. + Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. + + + + Draws the texture within a rectangle. + + Rectangle on the screen to draw the texture within. + Texture to display. + Material to be used when drawing the texture. + How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. + Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. + + + + Draws the alpha channel of a texture within a rectangle. + + Rectangle on the screen to draw the texture within. + Texture to display. + How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. + Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. + + + + Draws the alpha channel of a texture within a rectangle. + + Rectangle on the screen to draw the texture within. + Texture to display. + How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. + Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. + + + + Draws the alpha channel of a texture within a rectangle. + + Rectangle on the screen to draw the texture within. + Texture to display. + How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. + Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. + + + + Draws a label with a drop shadow. + + Where to show the label. + Text to show +@style style to use. + + + + + + Draws a label with a drop shadow. + + Where to show the label. + Text to show +@style style to use. + + + + + + Draws a label with a drop shadow. + + Where to show the label. + Text to show +@style style to use. + + + + + + Draws a label with a drop shadow. + + Where to show the label. + Text to show +@style style to use. + + + + + + Ends a change check started with BeginChangeCheck (). + + + True if GUI.changed was set to true, otherwise false. + + + + + Ends a disabled group started with BeginDisabledGroup. + + + + + Ends a Property wrapper started with BeginProperty. + + + + + Make a field for enum based masks. + + Rectangle on the screen to use for this control. + Enum to use for the flags. + Optional GUIStyle. + Caption/label for the control. + + The value modified by the user. + + + + + Make a field for enum based masks. + + Rectangle on the screen to use for this control. + Enum to use for the flags. + Optional GUIStyle. + Caption/label for the control. + + The value modified by the user. + + + + + Make a field for enum based masks. + + Rectangle on the screen to use for this control. + Enum to use for the flags. + Optional GUIStyle. + Caption/label for the control. + + The value modified by the user. + + + + + Make a field for enum based masks. + + Rectangle on the screen to use for this control. + Enum to use for the flags. + Optional GUIStyle. + Caption/label for the control. + + The value modified by the user. + + + + + Make a field for enum based masks. + + Rectangle on the screen to use for this control. + Enum to use for the flags. + Optional GUIStyle. + Caption/label for the control. + + The value modified by the user. + + + + + Make a field for enum based masks. + + Rectangle on the screen to use for this control. + Enum to use for the flags. + Optional GUIStyle. + Caption/label for the control. + + The value modified by the user. + + + + + Internal version that also gives you back which flags were changed and what they were changed to. + + + + + Make an enum popup selection field for a bitmask. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The enum options the field shows. + Optional GUIStyle. + + The enum options that has been selected by the user. + + + + + Make an enum popup selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The enum option the field shows. + Optional GUIStyle. + + The enum option that has been selected by the user. + + + + + Make an enum popup selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The enum option the field shows. + Optional GUIStyle. + + The enum option that has been selected by the user. + + + + + Make an enum popup selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The enum option the field shows. + Optional GUIStyle. + + The enum option that has been selected by the user. + + + + + Make an enum popup selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The enum option the field shows. + Optional GUIStyle. + + The enum option that has been selected by the user. + + + + + Make an enum popup selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The enum option the field shows. + Optional GUIStyle. + + The enum option that has been selected by the user. + + + + + Make an enum popup selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The enum option the field shows. + Optional GUIStyle. + + The enum option that has been selected by the user. + + + + + Make a text field for entering floats. + + Rectangle on the screen to use for the float field. + Optional label to display in front of the float field. + The value to edit. + Optional GUIStyle. + + The value entered by the user. + + + + + Make a text field for entering floats. + + Rectangle on the screen to use for the float field. + Optional label to display in front of the float field. + The value to edit. + Optional GUIStyle. + + The value entered by the user. + + + + + Make a text field for entering floats. + + Rectangle on the screen to use for the float field. + Optional label to display in front of the float field. + The value to edit. + Optional GUIStyle. + + The value entered by the user. + + + + + Move keyboard focus to a named text field and begin editing of the content. + + Name set using GUI.SetNextControlName. + + + + Make a label with a foldout arrow to the left of it. + + Rectangle on the screen to use for the arrow and label. + The shown foldout state. + The label to show. + Optional GUIStyle. + Should the label be a clickable part of the control? + + The foldout state selected by the user. If true, you should render sub-objects. + + + + + Make a label with a foldout arrow to the left of it. + + Rectangle on the screen to use for the arrow and label. + The shown foldout state. + The label to show. + Optional GUIStyle. + Should the label be a clickable part of the control? + + The foldout state selected by the user. If true, you should render sub-objects. + + + + + Make a label with a foldout arrow to the left of it. + + Rectangle on the screen to use for the arrow and label. + The shown foldout state. + The label to show. + Optional GUIStyle. + Should the label be a clickable part of the control? + + The foldout state selected by the user. If true, you should render sub-objects. + + + + + Make a label with a foldout arrow to the left of it. + + Rectangle on the screen to use for the arrow and label. + The shown foldout state. + The label to show. + Optional GUIStyle. + Should the label be a clickable part of the control? + + The foldout state selected by the user. If true, you should render sub-objects. + + + + + Make a label with a foldout arrow to the left of it. + + Rectangle on the screen to use for the arrow and label. + The shown foldout state. + The label to show. + Optional GUIStyle. + Should the label be a clickable part of the control? + + The foldout state selected by the user. If true, you should render sub-objects. + + + + + Make a label with a foldout arrow to the left of it. + + Rectangle on the screen to use for the arrow and label. + The shown foldout state. + The label to show. + Optional GUIStyle. + Should the label be a clickable part of the control? + + The foldout state selected by the user. If true, you should render sub-objects. + + + + + Make a label with a foldout arrow to the left of it. + + Rectangle on the screen to use for the arrow and label. + The shown foldout state. + The label to show. + Optional GUIStyle. + Should the label be a clickable part of the control? + + The foldout state selected by the user. If true, you should render sub-objects. + + + + + Make a label with a foldout arrow to the left of it. + + Rectangle on the screen to use for the arrow and label. + The shown foldout state. + The label to show. + Optional GUIStyle. + Should the label be a clickable part of the control? + + The foldout state selected by the user. If true, you should render sub-objects. + + + + + Get the height needed for a PropertyField control. + + Height of the property area. + Descriptive text or image. + Should the returned height include the height of child properties? + + + + Get the height needed for a PropertyField control. + + Height of the property area. + Descriptive text or image. + Should the returned height include the height of child properties? + + + + Get the height needed for a PropertyField control. + + Height of the property area. + Descriptive text or image. + Should the returned height include the height of child properties? + + + + Make a label for some control. + + Rectangle on the screen to use in total for both the label and the control. + Rectangle on the screen to use for the label. + Label to show for the control. + The unique ID of the control. If none specified, the ID of the following control is used. + Optional GUIStyle to use for the label. + + + + Make a label for some control. + + Rectangle on the screen to use in total for both the label and the control. + Rectangle on the screen to use for the label. + Label to show for the control. + The unique ID of the control. If none specified, the ID of the following control is used. + Optional GUIStyle to use for the label. + + + + Make a label for some control. + + Rectangle on the screen to use in total for both the label and the control. + Rectangle on the screen to use for the label. + Label to show for the control. + The unique ID of the control. If none specified, the ID of the following control is used. + Optional GUIStyle to use for the label. + + + + Make a help box with a message to the user. + + Rectangle on the screen to draw the help box within. + The message text. + The type of message. + + + + Make an inspector-window-like titlebar. + + Rectangle on the screen to use for the titlebar. + The foldout state shown with the arrow. + The object (for example a component) or objects that the titlebar is for. + + + The foldout state selected by the user. + + + + + Make an inspector-window-like titlebar. + + Rectangle on the screen to use for the titlebar. + The foldout state shown with the arrow. + The object (for example a component) or objects that the titlebar is for. + + + The foldout state selected by the user. + + + + + Make a text field for entering integers. + + Rectangle on the screen to use for the int field. + Optional label to display in front of the int field. + The value to edit. + Optional GUIStyle. + + The value entered by the user. + + + + + Make a text field for entering integers. + + Rectangle on the screen to use for the int field. + Optional label to display in front of the int field. + The value to edit. + Optional GUIStyle. + + The value entered by the user. + + + + + Make a text field for entering integers. + + Rectangle on the screen to use for the int field. + Optional label to display in front of the int field. + The value to edit. + Optional GUIStyle. + + The value entered by the user. + + + + + Make a text field for entering integers. + + Rectangle on the screen to use for the int field. + Optional label to display in front of the int field. + The value to edit. + Optional GUIStyle. + + The value entered by the user. + + + + + Make a text field for entering integers. + + Rectangle on the screen to use for the int field. + Optional label to display in front of the int field. + The value to edit. + Optional GUIStyle. + + The value entered by the user. + + + + + Make a text field for entering integers. + + Rectangle on the screen to use for the int field. + Optional label to display in front of the int field. + The value to edit. + Optional GUIStyle. + + The value entered by the user. + + + + + Make an integer popup selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The value of the option the field shows. + An array with the displayed options the user can choose from. + An array with the values for each option. If optionValues a direct mapping of selectedValue to displayedOptions is assumed. + Optional GUIStyle. + + The value of the option that has been selected by the user. + + + + + Make an integer popup selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The value of the option the field shows. + An array with the displayed options the user can choose from. + An array with the values for each option. If optionValues a direct mapping of selectedValue to displayedOptions is assumed. + Optional GUIStyle. + + The value of the option that has been selected by the user. + + + + + Make an integer popup selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The value of the option the field shows. + An array with the displayed options the user can choose from. + An array with the values for each option. If optionValues a direct mapping of selectedValue to displayedOptions is assumed. + Optional GUIStyle. + + The value of the option that has been selected by the user. + + + + + Make an integer popup selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The value of the option the field shows. + An array with the displayed options the user can choose from. + An array with the values for each option. If optionValues a direct mapping of selectedValue to displayedOptions is assumed. + Optional GUIStyle. + + The value of the option that has been selected by the user. + + + + + Make an integer popup selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The value of the option the field shows. + An array with the displayed options the user can choose from. + An array with the values for each option. If optionValues a direct mapping of selectedValue to displayedOptions is assumed. + Optional GUIStyle. + + The value of the option that has been selected by the user. + + + + + Make an integer popup selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The value of the option the field shows. + An array with the displayed options the user can choose from. + An array with the values for each option. If optionValues a direct mapping of selectedValue to displayedOptions is assumed. + Optional GUIStyle. + + The value of the option that has been selected by the user. + + + + + Make an integer popup selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The value of the option the field shows. + An array with the displayed options the user can choose from. + An array with the values for each option. If optionValues a direct mapping of selectedValue to displayedOptions is assumed. + Optional GUIStyle. + + The value of the option that has been selected by the user. + + + + + Make an integer popup selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The value of the option the field shows. + An array with the displayed options the user can choose from. + An array with the values for each option. If optionValues a direct mapping of selectedValue to displayedOptions is assumed. + Optional GUIStyle. + + The value of the option that has been selected by the user. + + + + + + + Rectangle on the screen to use for the field. + The SerializedProperty to use for the control. + An array with the displayed options the user can choose from. + An array with the values for each option. If optionValues a direct mapping of selectedValue to displayedOptions is assumed. + Optional label in front of the field. + + + + + + Rectangle on the screen to use for the field. + The SerializedProperty to use for the control. + An array with the displayed options the user can choose from. + An array with the values for each option. If optionValues a direct mapping of selectedValue to displayedOptions is assumed. + Optional label in front of the field. + + + + Make a slider the user can drag to change an integer value between a min and a max. + + Rectangle on the screen to use for the slider. + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + + The value that has been set by the user. + + + + + Make a slider the user can drag to change an integer value between a min and a max. + + Rectangle on the screen to use for the slider. + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + + The value that has been set by the user. + + + + + Make a slider the user can drag to change an integer value between a min and a max. + + Rectangle on the screen to use for the slider. + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + + The value that has been set by the user. + + + + + Make a slider the user can drag to change a value between a min and a max. + + Rectangle on the screen to use for the slider. + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + + + + Make a slider the user can drag to change a value between a min and a max. + + Rectangle on the screen to use for the slider. + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + + + + Make a slider the user can drag to change a value between a min and a max. + + Rectangle on the screen to use for the slider. + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + + + + Make a label field. (Useful for showing read-only info.) + + Rectangle on the screen to use for the label field. + Label in front of the label field. + The label to show to the right. + Style information (color, etc) for displaying the label. + + + + Make a label field. (Useful for showing read-only info.) + + Rectangle on the screen to use for the label field. + Label in front of the label field. + The label to show to the right. + Style information (color, etc) for displaying the label. + + + + Make a label field. (Useful for showing read-only info.) + + Rectangle on the screen to use for the label field. + Label in front of the label field. + The label to show to the right. + Style information (color, etc) for displaying the label. + + + + Make a label field. (Useful for showing read-only info.) + + Rectangle on the screen to use for the label field. + Label in front of the label field. + The label to show to the right. + Style information (color, etc) for displaying the label. + + + + Make a label field. (Useful for showing read-only info.) + + Rectangle on the screen to use for the label field. + Label in front of the label field. + The label to show to the right. + Style information (color, etc) for displaying the label. + + + + Make a label field. (Useful for showing read-only info.) + + Rectangle on the screen to use for the label field. + Label in front of the label field. + The label to show to the right. + Style information (color, etc) for displaying the label. + + + + Make a label field. (Useful for showing read-only info.) + + Rectangle on the screen to use for the label field. + Label in front of the label field. + The label to show to the right. + Style information (color, etc) for displaying the label. + + + + Make a label field. (Useful for showing read-only info.) + + Rectangle on the screen to use for the label field. + Label in front of the label field. + The label to show to the right. + Style information (color, etc) for displaying the label. + + + + Make a layer selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The layer shown in the field. + Optional GUIStyle. + + The layer selected by the user. + + + + + Make a layer selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The layer shown in the field. + Optional GUIStyle. + + The layer selected by the user. + + + + + Make a layer selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The layer shown in the field. + Optional GUIStyle. + + The layer selected by the user. + + + + + Make a layer selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The layer shown in the field. + Optional GUIStyle. + + The layer selected by the user. + + + + + Make a layer selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The layer shown in the field. + Optional GUIStyle. + + The layer selected by the user. + + + + + Make a layer selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The layer shown in the field. + Optional GUIStyle. + + The layer selected by the user. + + + + + Make a text field for entering integers. + + Rectangle on the screen to use for the long field. + Optional label to display in front of the long field. + The value to edit. + Optional GUIStyle. + + The value entered by the user. + + + + + Make a text field for entering integers. + + Rectangle on the screen to use for the long field. + Optional label to display in front of the long field. + The value to edit. + Optional GUIStyle. + + The value entered by the user. + + + + + Make a text field for entering integers. + + Rectangle on the screen to use for the long field. + Optional label to display in front of the long field. + The value to edit. + Optional GUIStyle. + + The value entered by the user. + + + + + Make a text field for entering integers. + + Rectangle on the screen to use for the long field. + Optional label to display in front of the long field. + The value to edit. + Optional GUIStyle. + + The value entered by the user. + + + + + Make a text field for entering integers. + + Rectangle on the screen to use for the long field. + Optional label to display in front of the long field. + The value to edit. + Optional GUIStyle. + + The value entered by the user. + + + + + Make a text field for entering integers. + + Rectangle on the screen to use for the long field. + Optional label to display in front of the long field. + The value to edit. + Optional GUIStyle. + + The value entered by the user. + + + + + Make a field for masks. + + Rectangle on the screen to use for this control. + Label for the field. + The current mask to display. + A string array containing the labels for each flag. + Optional GUIStyle. + A string array containing the labels for each flag. + + The value modified by the user. + + + + + Make a field for masks. + + Rectangle on the screen to use for this control. + Label for the field. + The current mask to display. + A string array containing the labels for each flag. + Optional GUIStyle. + A string array containing the labels for each flag. + + The value modified by the user. + + + + + Make a field for masks. + + Rectangle on the screen to use for this control. + Label for the field. + The current mask to display. + A string array containing the labels for each flag. + Optional GUIStyle. + A string array containing the labels for each flag. + + The value modified by the user. + + + + + Make a field for masks. + + Rectangle on the screen to use for this control. + Label for the field. + The current mask to display. + A string array containing the labels for each flag. + Optional GUIStyle. + A string array containing the labels for each flag. + + The value modified by the user. + + + + + Make a field for masks. + + Rectangle on the screen to use for this control. + Label for the field. + The current mask to display. + A string array containing the labels for each flag. + Optional GUIStyle. + A string array containing the labels for each flag. + + The value modified by the user. + + + + + Make a field for masks. + + Rectangle on the screen to use for this control. + Label for the field. + The current mask to display. + A string array containing the labels for each flag. + Optional GUIStyle. + A string array containing the labels for each flag. + + The value modified by the user. + + + + + Make a special slider the user can use to specify a range between a min and a max. + + Optional label in front of the slider. + Rectangle on the screen to use for the slider. + The value the slider shows. This determines the position of the draggable thumb. + The lower value of the range the slider shows, passed by reference. + The upper value at the range the slider shows, passed by reference. + The limit at the left end of the slider. + The limit at the right end of the slider. + + + + Make a special slider the user can use to specify a range between a min and a max. + + Optional label in front of the slider. + Rectangle on the screen to use for the slider. + The value the slider shows. This determines the position of the draggable thumb. + The lower value of the range the slider shows, passed by reference. + The upper value at the range the slider shows, passed by reference. + The limit at the left end of the slider. + The limit at the right end of the slider. + + + + Make a multi-control with text fields for entering multiple floats in the same line. + + Rectangle on the screen to use for the float field. + Optional label to display in front of the float field. + Array with small labels to show in front of each float field. There is room for one letter per field only. + Array with the values to edit. + + + + Make a multi-control with text fields for entering multiple floats in the same line. + + Rectangle on the screen to use for the float field. + Optional label to display in front of the float field. + Array with small labels to show in front of each float field. There is room for one letter per field only. + Array with the values to edit. + + + + Make a multi-control with several property fields in the same line. + + Rectangle on the screen to use for the multi-property field. + The SerializedProperty of the first property to make a control for. + Optional label to use. If not specified the label of the property itself is used. Use GUIContent.none to not display a label at all. + Array with small labels to show in front of each float field. There is room for one letter per field only. + + + + Make a multi-control with several property fields in the same line. + + Rectangle on the screen to use for the multi-property field. + The SerializedProperty of the first property to make a control for. + Optional label to use. If not specified the label of the property itself is used. Use GUIContent.none to not display a label at all. + Array with small labels to show in front of each float field. There is room for one letter per field only. + + + + Make an object field. You can assign objects either by drag and drop objects or by selecting an object using the Object Picker. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The object the field shows. + The type of the objects that can be assigned. + Allow assigning scene objects. See Description for more info. + + The object that has been set by the user. + + + + + Make an object field. You can assign objects either by drag and drop objects or by selecting an object using the Object Picker. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The object the field shows. + The type of the objects that can be assigned. + Allow assigning scene objects. See Description for more info. + + The object that has been set by the user. + + + + + Make an object field. You can assign objects either by drag and drop objects or by selecting an object using the Object Picker. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The object the field shows. + The type of the objects that can be assigned. + Allow assigning scene objects. See Description for more info. + + The object that has been set by the user. + + + + + Make an object field. You can assign objects either by drag and drop objects or by selecting an object using the Object Picker. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The object the field shows. + The type of the objects that can be assigned. + Allow assigning scene objects. See Description for more info. + + The object that has been set by the user. + + + + + Make an object field. You can assign objects either by drag and drop objects or by selecting an object using the Object Picker. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The object the field shows. + The type of the objects that can be assigned. + Allow assigning scene objects. See Description for more info. + + The object that has been set by the user. + + + + + Make an object field. You can assign objects either by drag and drop objects or by selecting an object using the Object Picker. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The object the field shows. + The type of the objects that can be assigned. + Allow assigning scene objects. See Description for more info. + + The object that has been set by the user. + + + + + Make a text field where the user can enter a password. + + Rectangle on the screen to use for the password field. + Optional label to display in front of the password field. + The password to edit. + Optional GUIStyle. + + The password entered by the user. + + + + + Make a text field where the user can enter a password. + + Rectangle on the screen to use for the password field. + Optional label to display in front of the password field. + The password to edit. + Optional GUIStyle. + + The password entered by the user. + + + + + Make a text field where the user can enter a password. + + Rectangle on the screen to use for the password field. + Optional label to display in front of the password field. + The password to edit. + Optional GUIStyle. + + The password entered by the user. + + + + + Make a text field where the user can enter a password. + + Rectangle on the screen to use for the password field. + Optional label to display in front of the password field. + The password to edit. + Optional GUIStyle. + + The password entered by the user. + + + + + Make a text field where the user can enter a password. + + Rectangle on the screen to use for the password field. + Optional label to display in front of the password field. + The password to edit. + Optional GUIStyle. + + The password entered by the user. + + + + + Make a text field where the user can enter a password. + + Rectangle on the screen to use for the password field. + Optional label to display in front of the password field. + The password to edit. + Optional GUIStyle. + + The password entered by the user. + + + + + Make a generic popup selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The index of the option the field shows. + An array with the options shown in the popup. + Optional GUIStyle. + + The index of the option that has been selected by the user. + + + + + Make a generic popup selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The index of the option the field shows. + An array with the options shown in the popup. + Optional GUIStyle. + + The index of the option that has been selected by the user. + + + + + Make a generic popup selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The index of the option the field shows. + An array with the options shown in the popup. + Optional GUIStyle. + + The index of the option that has been selected by the user. + + + + + Make a generic popup selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The index of the option the field shows. + An array with the options shown in the popup. + Optional GUIStyle. + + The index of the option that has been selected by the user. + + + + + Make a generic popup selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The index of the option the field shows. + An array with the options shown in the popup. + Optional GUIStyle. + + The index of the option that has been selected by the user. + + + + + Make a generic popup selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The index of the option the field shows. + An array with the options shown in the popup. + Optional GUIStyle. + + The index of the option that has been selected by the user. + + + + + Make a generic popup selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The index of the option the field shows. + An array with the options shown in the popup. + Optional GUIStyle. + + The index of the option that has been selected by the user. + + + + + Make a generic popup selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The index of the option the field shows. + An array with the options shown in the popup. + Optional GUIStyle. + + The index of the option that has been selected by the user. + + + + + Make a label in front of some control. + + Rectangle on the screen to use in total for both the label and the control. + The unique ID of the control. If none specified, the ID of the following control is used. + Label to show in front of the control. + Style to use for the label. + + Rectangle on the screen to use just for the control itself. + + + + + Make a label in front of some control. + + Rectangle on the screen to use in total for both the label and the control. + The unique ID of the control. If none specified, the ID of the following control is used. + Label to show in front of the control. + Style to use for the label. + + Rectangle on the screen to use just for the control itself. + + + + + Make a label in front of some control. + + Rectangle on the screen to use in total for both the label and the control. + The unique ID of the control. If none specified, the ID of the following control is used. + Label to show in front of the control. + Style to use for the label. + + Rectangle on the screen to use just for the control itself. + + + + + Make a label in front of some control. + + Rectangle on the screen to use in total for both the label and the control. + The unique ID of the control. If none specified, the ID of the following control is used. + Label to show in front of the control. + Style to use for the label. + + Rectangle on the screen to use just for the control itself. + + + + + Make a progress bar. + + Rectangle on the screen to use in total for both the control. + Value that is shown. + + + + + + Make a field for SerializedProperty. + + Rectangle on the screen to use for the property field. + The SerializedProperty to make a field for. + Optional label to use. If not specified the label of the property itself is used. Use GUIContent.none to not display a label at all. + If true the property including children is drawn; otherwise only the control itself (such as only a foldout but nothing below it). + + True if the property has children and is expanded and includeChildren was set to false; otherwise false. + + + + + Make a field for SerializedProperty. + + Rectangle on the screen to use for the property field. + The SerializedProperty to make a field for. + Optional label to use. If not specified the label of the property itself is used. Use GUIContent.none to not display a label at all. + If true the property including children is drawn; otherwise only the control itself (such as only a foldout but nothing below it). + + True if the property has children and is expanded and includeChildren was set to false; otherwise false. + + + + + Create a Property wrapper, useful for making regular GUI controls work with SerializedProperty. + + + + + The actual label to use for the control. + + + + + Create a new PropertyScope and begin the corresponding property. + + Rectangle on the screen to use for the control, including label if applicable. + Label in front of the slider. Use null to use the name from the SerializedProperty. Use GUIContent.none to not display a label. + The SerializedProperty to use for the control. + + + + Make an X, Y, W & H field for entering a Rect. + + Rectangle on the screen to use for the field. + Optional label to display above the field. + The value to edit. + + The value entered by the user. + + + + + Make an X, Y, W & H field for entering a Rect. + + Rectangle on the screen to use for the field. + Optional label to display above the field. + The value to edit. + + The value entered by the user. + + + + + Make an X, Y, W & H field for entering a Rect. + + Rectangle on the screen to use for the field. + Optional label to display above the field. + The value to edit. + + The value entered by the user. + + + + + Make an X, Y, W & H for Rect using SerializedProperty (not public). + + + + + Make a selectable label field. (Useful for showing read-only info that can be copy-pasted.) + + Rectangle on the screen to use for the label. + The text to show. + Optional GUIStyle. + + + + Make a selectable label field. (Useful for showing read-only info that can be copy-pasted.) + + Rectangle on the screen to use for the label. + The text to show. + Optional GUIStyle. + + + + Make a slider the user can drag to change a value between a min and a max. + + Rectangle on the screen to use for the slider. + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + + The value that has been set by the user. + + + + + Make a slider the user can drag to change a value between a min and a max. + + Rectangle on the screen to use for the slider. + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + + The value that has been set by the user. + + + + + Make a slider the user can drag to change a value between a min and a max. + + Rectangle on the screen to use for the slider. + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + + The value that has been set by the user. + + + + + Make a slider the user can drag to change a value between a min and a max. + + Rectangle on the screen to use for the slider. + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + + + + Make a slider the user can drag to change a value between a min and a max. + + Rectangle on the screen to use for the slider. + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + + + + Make a slider the user can drag to change a value between a min and a max. + + Rectangle on the screen to use for the slider. + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + + + + Make a tag selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The tag the field shows. + Optional GUIStyle. + + The tag selected by the user. + + + + + Make a tag selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The tag the field shows. + Optional GUIStyle. + + The tag selected by the user. + + + + + Make a tag selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The tag the field shows. + Optional GUIStyle. + + The tag selected by the user. + + + + + Make a tag selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The tag the field shows. + Optional GUIStyle. + + The tag selected by the user. + + + + + Make a tag selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The tag the field shows. + Optional GUIStyle. + + The tag selected by the user. + + + + + Make a tag selection field. + + Rectangle on the screen to use for the field. + Optional label in front of the field. + The tag the field shows. + Optional GUIStyle. + + The tag selected by the user. + + + + + Make a text area. + + Rectangle on the screen to use for the text field. + The text to edit. + Optional GUIStyle. + + The text entered by the user. + + + + + Make a text area. + + Rectangle on the screen to use for the text field. + The text to edit. + Optional GUIStyle. + + The text entered by the user. + + + + + Make a text field. + + Rectangle on the screen to use for the text field. + Optional label to display in front of the text field. + The text to edit. + Optional GUIStyle. + + The text entered by the user. + + + + + Make a text field. + + Rectangle on the screen to use for the text field. + Optional label to display in front of the text field. + The text to edit. + Optional GUIStyle. + + The text entered by the user. + + + + + Make a text field. + + Rectangle on the screen to use for the text field. + Optional label to display in front of the text field. + The text to edit. + Optional GUIStyle. + + The text entered by the user. + + + + + Make a text field. + + Rectangle on the screen to use for the text field. + Optional label to display in front of the text field. + The text to edit. + Optional GUIStyle. + + The text entered by the user. + + + + + Make a text field. + + Rectangle on the screen to use for the text field. + Optional label to display in front of the text field. + The text to edit. + Optional GUIStyle. + + The text entered by the user. + + + + + Make a text field. + + Rectangle on the screen to use for the text field. + Optional label to display in front of the text field. + The text to edit. + Optional GUIStyle. + + The text entered by the user. + + + + + Make a toggle. + + Rectangle on the screen to use for the toggle. + Optional label in front of the toggle. + The shown state of the toggle. + Optional GUIStyle. + + The selected state of the toggle. + + + + + Make a toggle. + + Rectangle on the screen to use for the toggle. + Optional label in front of the toggle. + The shown state of the toggle. + Optional GUIStyle. + + The selected state of the toggle. + + + + + Make a toggle. + + Rectangle on the screen to use for the toggle. + Optional label in front of the toggle. + The shown state of the toggle. + Optional GUIStyle. + + The selected state of the toggle. + + + + + Make a toggle. + + Rectangle on the screen to use for the toggle. + Optional label in front of the toggle. + The shown state of the toggle. + Optional GUIStyle. + + The selected state of the toggle. + + + + + Make a toggle. + + Rectangle on the screen to use for the toggle. + Optional label in front of the toggle. + The shown state of the toggle. + Optional GUIStyle. + + The selected state of the toggle. + + + + + Make a toggle. + + Rectangle on the screen to use for the toggle. + Optional label in front of the toggle. + The shown state of the toggle. + Optional GUIStyle. + + The selected state of the toggle. + + + + + Make a toggle field where the toggle is to the left and the label immediately to the right of it. + + Rectangle on the screen to use for the toggle. + Label to display next to the toggle. + The value to edit. + Optional GUIStyle to use for the label. + + The value set by the user. + + + + + Make a toggle field where the toggle is to the left and the label immediately to the right of it. + + Rectangle on the screen to use for the toggle. + Label to display next to the toggle. + The value to edit. + Optional GUIStyle to use for the label. + + The value set by the user. + + + + + Make a toggle field where the toggle is to the left and the label immediately to the right of it. + + Rectangle on the screen to use for the toggle. + Label to display next to the toggle. + The value to edit. + Optional GUIStyle to use for the label. + + The value set by the user. + + + + + Make a toggle field where the toggle is to the left and the label immediately to the right of it. + + Rectangle on the screen to use for the toggle. + Label to display next to the toggle. + The value to edit. + Optional GUIStyle to use for the label. + + The value set by the user. + + + + + Make an X & Y field for entering a Vector2. + + Rectangle on the screen to use for the field. + Label to display above the field. + The value to edit. + + The value entered by the user. + + + + + Make an X & Y field for entering a Vector2. + + Rectangle on the screen to use for the field. + Label to display above the field. + The value to edit. + + The value entered by the user. + + + + + Make an X, Y & Z field for entering a Vector3. + + Rectangle on the screen to use for the field. + Label to display above the field. + The value to edit. + + The value entered by the user. + + + + + Make an X, Y & Z field for entering a Vector3. + + Rectangle on the screen to use for the field. + Label to display above the field. + The value to edit. + + The value entered by the user. + + + + + Make an X, Y, Z & W field for entering a Vector4. + + Rectangle on the screen to use for the field. + Label to display above the field. + The value to edit. + + The value entered by the user. + + + + + Auto-layouted version of EditorGUI. + + + + + Begins a group that can be be hidden/shown and the transition will be animated. + + A value between 0 and 1, 0 being hidden, and 1 being fully visible. + + If the group is visible or not. + + + + + Begin a horizontal group and get its rect back. + + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Begin a horizontal group and get its rect back. + + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + + + + + + Begin an automatically layouted scrollview. + + The position to use display. + Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. + Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. + Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. + Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. + + + + + + The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. + + + + + Begin an automatically layouted scrollview. + + The position to use display. + Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. + Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. + Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. + Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. + + + + + + The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. + + + + + Begin an automatically layouted scrollview. + + The position to use display. + Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. + Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. + Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. + Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. + + + + + + The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. + + + + + Begin an automatically layouted scrollview. + + The position to use display. + Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. + Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. + Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. + Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. + + + + + + The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. + + + + + Begin an automatically layouted scrollview. + + The position to use display. + Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. + Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. + Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. + Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. + + + + + + The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. + + + + + Begin a vertical group with a toggle to enable or disable all the controls within at once. + + Label to show above the toggled controls. + Enabled state of the toggle group. + + The enabled state selected by the user. + + + + + Begin a vertical group with a toggle to enable or disable all the controls within at once. + + Label to show above the toggled controls. + Enabled state of the toggle group. + + The enabled state selected by the user. + + + + + Begin a vertical group and get its rect back. + + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Begin a vertical group and get its rect back. + + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + + + + + + Make Center & Extents field for entering a Bounds. + + Label to display above the field. + The value to edit. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make Center & Extents field for entering a Bounds. + + Label to display above the field. + The value to edit. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make Center & Extents field for entering a Bounds. + + Label to display above the field. + The value to edit. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a field for selecting a Color. + + Optional label to display in front of the field. + The color to edit. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The color selected by the user. + + + + + Make a field for selecting a Color. + + Optional label to display in front of the field. + The color to edit. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The color selected by the user. + + + + + Make a field for selecting a Color. + + Optional label to display in front of the field. + The color to edit. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The color selected by the user. + + + + + Make a field for editing an AnimationCurve. + + Optional label to display in front of the field. + The curve to edit. + The color to show the curve with. + Optional rectangle that the curve is restrained within. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The curve edited by the user. + + + + + Make a field for editing an AnimationCurve. + + Optional label to display in front of the field. + The curve to edit. + The color to show the curve with. + Optional rectangle that the curve is restrained within. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The curve edited by the user. + + + + + Make a field for editing an AnimationCurve. + + Optional label to display in front of the field. + The curve to edit. + The color to show the curve with. + Optional rectangle that the curve is restrained within. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The curve edited by the user. + + + + + Make a field for editing an AnimationCurve. + + Optional label to display in front of the field. + The curve to edit. + The color to show the curve with. + Optional rectangle that the curve is restrained within. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The curve edited by the user. + + + + + Make a field for editing an AnimationCurve. + + Optional label to display in front of the field. + The curve to edit. + The color to show the curve with. + Optional rectangle that the curve is restrained within. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The curve edited by the user. + + + + + Make a field for editing an AnimationCurve. + + Optional label to display in front of the field. + The curve to edit. + The color to show the curve with. + Optional rectangle that the curve is restrained within. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The curve edited by the user. + + + + + Make a field for editing an AnimationCurve. + + The curve to edit. + The color to show the curve with. + Optional rectangle that the curve is restrained within. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Make a text field for entering double values. + + Optional label to display in front of the double field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a text field for entering double values. + + Optional label to display in front of the double field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a text field for entering double values. + + Optional label to display in front of the double field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a text field for entering double values. + + Optional label to display in front of the double field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a text field for entering double values. + + Optional label to display in front of the double field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a text field for entering double values. + + Optional label to display in front of the double field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Closes a group started with BeginFadeGroup. + + + + + Close a group started with BeginHorizontal. + + + + + Ends a scrollview started with a call to BeginScrollView. + + + + + Close a group started with BeginToggleGroup. + + + + + Close a group started with BeginVertical. + + + + + Make a field for enum based masks. + + Prefix label for this field. + Enum to use for the flags. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + The value modified by the user. + + + + + Make a field for enum based masks. + + Prefix label for this field. + Enum to use for the flags. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + The value modified by the user. + + + + + Make a field for enum based masks. + + Prefix label for this field. + Enum to use for the flags. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + The value modified by the user. + + + + + Make a field for enum based masks. + + Prefix label for this field. + Enum to use for the flags. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + The value modified by the user. + + + + + Make a field for enum based masks. + + Prefix label for this field. + Enum to use for the flags. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + The value modified by the user. + + + + + Make a field for enum based masks. + + Prefix label for this field. + Enum to use for the flags. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + The value modified by the user. + + + + + Make an enum popup selection field for a bitmask. + + Optional label in front of the field. + The enum options the field shows. + Optional layout options. + + The enum options that has been selected by the user. + + + + + Make an enum popup selection field. + + Optional label in front of the field. + The enum option the field shows. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The enum option that has been selected by the user. + + + + + Make an enum popup selection field. + + Optional label in front of the field. + The enum option the field shows. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The enum option that has been selected by the user. + + + + + Make an enum popup selection field. + + Optional label in front of the field. + The enum option the field shows. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The enum option that has been selected by the user. + + + + + Make an enum popup selection field. + + Optional label in front of the field. + The enum option the field shows. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The enum option that has been selected by the user. + + + + + Make an enum popup selection field. + + Optional label in front of the field. + The enum option the field shows. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The enum option that has been selected by the user. + + + + + Make an enum popup selection field. + + Optional label in front of the field. + The enum option the field shows. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The enum option that has been selected by the user. + + + + + Begins a group that can be be hidden/shown and the transition will be animated. + + + + + Whether the group is visible. + + + + + Create a new FadeGroupScope and begin the corresponding group. + + A value between 0 and 1, 0 being hidden, and 1 being fully visible. + + + + Make a text field for entering float values. + + Optional label to display in front of the float field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a text field for entering float values. + + Optional label to display in front of the float field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a text field for entering float values. + + Optional label to display in front of the float field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a text field for entering float values. + + Optional label to display in front of the float field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a text field for entering float values. + + Optional label to display in front of the float field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a text field for entering float values. + + Optional label to display in front of the float field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a label with a foldout arrow to the left of it. + + The shown foldout state. + The label to show. + Optional GUIStyle. + + The foldout state selected by the user. If true, you should render sub-objects. + + + + + Make a label with a foldout arrow to the left of it. + + The shown foldout state. + The label to show. + Optional GUIStyle. + + The foldout state selected by the user. If true, you should render sub-objects. + + + + + Make a label with a foldout arrow to the left of it. + + The shown foldout state. + The label to show. + Optional GUIStyle. + + The foldout state selected by the user. If true, you should render sub-objects. + + + + + Make a label with a foldout arrow to the left of it. + + The shown foldout state. + The label to show. + Optional GUIStyle. + + The foldout state selected by the user. If true, you should render sub-objects. + + + + + Get a rect for an Editor control. + + Optional boolean to specify if the control has a label. Default is true. + The height in pixels of the control. Default is EditorGUIUtility.singleLineHeight. + Optional GUIStyle to use for the control. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style. +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Get a rect for an Editor control. + + Optional boolean to specify if the control has a label. Default is true. + The height in pixels of the control. Default is EditorGUIUtility.singleLineHeight. + Optional GUIStyle to use for the control. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style. +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Get a rect for an Editor control. + + Optional boolean to specify if the control has a label. Default is true. + The height in pixels of the control. Default is EditorGUIUtility.singleLineHeight. + Optional GUIStyle to use for the control. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style. +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Get a rect for an Editor control. + + Optional boolean to specify if the control has a label. Default is true. + The height in pixels of the control. Default is EditorGUIUtility.singleLineHeight. + Optional GUIStyle to use for the control. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style. +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Make a help box with a message to the user. + + The message text. + The type of message. + If true, the box will cover the whole width of the window; otherwise it will cover the controls part only. + + + + Make a help box with a message to the user. + + The message text. + The type of message. + If true, the box will cover the whole width of the window; otherwise it will cover the controls part only. + + + + Disposable helper class for managing BeginHorizontal / EndHorizontal. + + + + + The rect of the horizontal group. + + + + + Create a new HorizontalScope and begin the corresponding horizontal group. + + The style to use for background image and padding values. If left out, the background is transparent. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Create a new HorizontalScope and begin the corresponding horizontal group. + + The style to use for background image and padding values. If left out, the background is transparent. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Make an inspector-window-like titlebar. + + The foldout state shown with the arrow. + The object (for example a component) or objects that the titlebar is for. + + + The foldout state selected by the user. + + + + + Make an inspector-window-like titlebar. + + The foldout state shown with the arrow. + The object (for example a component) or objects that the titlebar is for. + + + The foldout state selected by the user. + + + + + Make a text field for entering integers. + + Optional label to display in front of the int field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a text field for entering integers. + + Optional label to display in front of the int field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a text field for entering integers. + + Optional label to display in front of the int field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a text field for entering integers. + + Optional label to display in front of the int field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a text field for entering integers. + + Optional label to display in front of the int field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a text field for entering integers. + + Optional label to display in front of the int field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make an integer popup selection field. + + Optional label in front of the field. + The value of the option the field shows. + An array with the displayed options the user can choose from. + An array with the values for each option. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value of the option that has been selected by the user. + + + + + Make an integer popup selection field. + + Optional label in front of the field. + The value of the option the field shows. + An array with the displayed options the user can choose from. + An array with the values for each option. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value of the option that has been selected by the user. + + + + + Make an integer popup selection field. + + Optional label in front of the field. + The value of the option the field shows. + An array with the displayed options the user can choose from. + An array with the values for each option. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value of the option that has been selected by the user. + + + + + Make an integer popup selection field. + + Optional label in front of the field. + The value of the option the field shows. + An array with the displayed options the user can choose from. + An array with the values for each option. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value of the option that has been selected by the user. + + + + + Make an integer popup selection field. + + Optional label in front of the field. + The value of the option the field shows. + An array with the displayed options the user can choose from. + An array with the values for each option. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value of the option that has been selected by the user. + + + + + Make an integer popup selection field. + + Optional label in front of the field. + The value of the option the field shows. + An array with the displayed options the user can choose from. + An array with the values for each option. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value of the option that has been selected by the user. + + + + + Make an integer popup selection field. + + Optional label in front of the field. + The value of the option the field shows. + An array with the displayed options the user can choose from. + An array with the values for each option. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value of the option that has been selected by the user. + + + + + Make an integer popup selection field. + + Optional label in front of the field. + The value of the option the field shows. + An array with the displayed options the user can choose from. + An array with the values for each option. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value of the option that has been selected by the user. + + + + + Make an integer popup selection field. + + The value of the option the field shows. + An array with the displayed options the user can choose from. + An array with the values for each option. + Optional label in front of the field. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + + Make an integer popup selection field. + + The value of the option the field shows. + An array with the displayed options the user can choose from. + An array with the values for each option. + Optional label in front of the field. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + + Make an integer popup selection field. + + The value of the option the field shows. + An array with the displayed options the user can choose from. + An array with the values for each option. + Optional label in front of the field. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + + Make a slider the user can drag to change an integer value between a min and a max. + + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value that has been set by the user. + + + + + Make a slider the user can drag to change an integer value between a min and a max. + + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value that has been set by the user. + + + + + Make a slider the user can drag to change an integer value between a min and a max. + + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value that has been set by the user. + + + + + Make a slider the user can drag to change an integer value between a min and a max. + + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Make a slider the user can drag to change an integer value between a min and a max. + + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Make a slider the user can drag to change an integer value between a min and a max. + + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Make a label field. (Useful for showing read-only info.) + + Label in front of the label field. + The label to show to the right. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + + Make a label field. (Useful for showing read-only info.) + + Label in front of the label field. + The label to show to the right. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + + Make a label field. (Useful for showing read-only info.) + + Label in front of the label field. + The label to show to the right. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + + Make a label field. (Useful for showing read-only info.) + + Label in front of the label field. + The label to show to the right. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + + Make a label field. (Useful for showing read-only info.) + + Label in front of the label field. + The label to show to the right. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + + Make a label field. (Useful for showing read-only info.) + + Label in front of the label field. + The label to show to the right. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + + Make a label field. (Useful for showing read-only info.) + + Label in front of the label field. + The label to show to the right. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + + Make a label field. (Useful for showing read-only info.) + + Label in front of the label field. + The label to show to the right. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + + Make a layer selection field. + + Optional label in front of the field. + The layer shown in the field. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The layer selected by the user. + + + + + Make a layer selection field. + + Optional label in front of the field. + The layer shown in the field. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The layer selected by the user. + + + + + Make a layer selection field. + + Optional label in front of the field. + The layer shown in the field. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The layer selected by the user. + + + + + Make a layer selection field. + + Optional label in front of the field. + The layer shown in the field. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The layer selected by the user. + + + + + Make a layer selection field. + + Optional label in front of the field. + The layer shown in the field. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The layer selected by the user. + + + + + Make a layer selection field. + + Optional label in front of the field. + The layer shown in the field. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The layer selected by the user. + + + + + Make a text field for entering integers. + + Optional label to display in front of the long field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a text field for entering integers. + + Optional label to display in front of the long field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a text field for entering integers. + + Optional label to display in front of the long field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a text field for entering integers. + + Optional label to display in front of the long field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a text field for entering integers. + + Optional label to display in front of the long field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a text field for entering integers. + + Optional label to display in front of the long field. + The value to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make a field for masks. + + Prefix label of the field. + The current mask to display. + A string array containing the labels for each flag. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + The value modified by the user. + + + + + Make a field for masks. + + Prefix label of the field. + The current mask to display. + A string array containing the labels for each flag. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + The value modified by the user. + + + + + Make a field for masks. + + Prefix label of the field. + The current mask to display. + A string array containing the labels for each flag. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + The value modified by the user. + + + + + Make a field for masks. + + Prefix label of the field. + The current mask to display. + A string array containing the labels for each flag. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + The value modified by the user. + + + + + Make a field for masks. + + Prefix label of the field. + The current mask to display. + A string array containing the labels for each flag. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + The value modified by the user. + + + + + Make a field for masks. + + Prefix label of the field. + The current mask to display. + A string array containing the labels for each flag. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + The value modified by the user. + + + + + Make a special slider the user can use to specify a range between a min and a max. + + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The lower value of the range the slider shows, passed by reference. + The upper value at the range the slider shows, passed by reference. + The limit at the left end of the slider. + The limit at the right end of the slider. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Make a special slider the user can use to specify a range between a min and a max. + + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The lower value of the range the slider shows, passed by reference. + The upper value at the range the slider shows, passed by reference. + The limit at the left end of the slider. + The limit at the right end of the slider. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Make a field to receive any object type. + + Optional label in front of the field. + The object the field shows. + The type of the objects that can be assigned. + Allow assigning scene objects. See Description for more info. + An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style. +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The object that has been set by the user. + + + + + Make a field to receive any object type. + + Optional label in front of the field. + The object the field shows. + The type of the objects that can be assigned. + Allow assigning scene objects. See Description for more info. + An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style. +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The object that has been set by the user. + + + + + Make a field to receive any object type. + + Optional label in front of the field. + The object the field shows. + The type of the objects that can be assigned. + Allow assigning scene objects. See Description for more info. + An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style. +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The object that has been set by the user. + + + + + Make a text field where the user can enter a password. + + Optional label to display in front of the password field. + The password to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The password entered by the user. + + + + + Make a text field where the user can enter a password. + + Optional label to display in front of the password field. + The password to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The password entered by the user. + + + + + Make a text field where the user can enter a password. + + Optional label to display in front of the password field. + The password to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The password entered by the user. + + + + + Make a text field where the user can enter a password. + + Optional label to display in front of the password field. + The password to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The password entered by the user. + + + + + Make a text field where the user can enter a password. + + Optional label to display in front of the password field. + The password to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The password entered by the user. + + + + + Make a text field where the user can enter a password. + + Optional label to display in front of the password field. + The password to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The password entered by the user. + + + + + Make a generic popup selection field. + + Optional label in front of the field. + The index of the option the field shows. + An array with the options shown in the popup. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The index of the option that has been selected by the user. + + + + + Make a generic popup selection field. + + Optional label in front of the field. + The index of the option the field shows. + An array with the options shown in the popup. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The index of the option that has been selected by the user. + + + + + Make a generic popup selection field. + + Optional label in front of the field. + The index of the option the field shows. + An array with the options shown in the popup. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The index of the option that has been selected by the user. + + + + + Make a generic popup selection field. + + Optional label in front of the field. + The index of the option the field shows. + An array with the options shown in the popup. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The index of the option that has been selected by the user. + + + + + Make a generic popup selection field. + + Optional label in front of the field. + The index of the option the field shows. + An array with the options shown in the popup. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The index of the option that has been selected by the user. + + + + + Make a generic popup selection field. + + Optional label in front of the field. + The index of the option the field shows. + An array with the options shown in the popup. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The index of the option that has been selected by the user. + + + + + Make a generic popup selection field. + + Optional label in front of the field. + The index of the option the field shows. + An array with the options shown in the popup. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The index of the option that has been selected by the user. + + + + + Make a generic popup selection field. + + Optional label in front of the field. + The index of the option the field shows. + An array with the options shown in the popup. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The index of the option that has been selected by the user. + + + + + Make a label in front of some control. + + Label to show in front of the control. + + + + + + Make a label in front of some control. + + Label to show in front of the control. + + + + + + Make a label in front of some control. + + Label to show in front of the control. + + + + + + Make a label in front of some control. + + Label to show in front of the control. + + + + + + Make a label in front of some control. + + Label to show in front of the control. + + + + + + Make a label in front of some control. + + Label to show in front of the control. + + + + + + Make a field for SerializedProperty. + + The SerializedProperty to make a field for. + Optional label to use. If not specified the label of the property itself is used. Use GUIContent.none to not display a label at all. + If true the property including children is drawn; otherwise only the control itself (such as only a foldout but nothing below it). + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + True if the property has children and is expanded and includeChildren was set to false; otherwise false. + + + + + Make a field for SerializedProperty. + + The SerializedProperty to make a field for. + Optional label to use. If not specified the label of the property itself is used. Use GUIContent.none to not display a label at all. + If true the property including children is drawn; otherwise only the control itself (such as only a foldout but nothing below it). + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + True if the property has children and is expanded and includeChildren was set to false; otherwise false. + + + + + Make a field for SerializedProperty. + + The SerializedProperty to make a field for. + Optional label to use. If not specified the label of the property itself is used. Use GUIContent.none to not display a label at all. + If true the property including children is drawn; otherwise only the control itself (such as only a foldout but nothing below it). + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + True if the property has children and is expanded and includeChildren was set to false; otherwise false. + + + + + Make a field for SerializedProperty. + + The SerializedProperty to make a field for. + Optional label to use. If not specified the label of the property itself is used. Use GUIContent.none to not display a label at all. + If true the property including children is drawn; otherwise only the control itself (such as only a foldout but nothing below it). + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + True if the property has children and is expanded and includeChildren was set to false; otherwise false. + + + + + Make an X, Y, W & H field for entering a Rect. + + Label to display above the field. + The value to edit. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make an X, Y, W & H field for entering a Rect. + + Label to display above the field. + The value to edit. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make an X, Y, W & H field for entering a Rect. + + Label to display above the field. + The value to edit. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Disposable helper class for managing BeginScrollView / EndScrollView. + + + + + Whether this ScrollView should handle scroll wheel events. (default: true). + + + + + The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. + + + + + Create a new ScrollViewScope and begin the corresponding ScrollView. + + The scroll position to use. + Whether to always show the horizontal scrollbar. If false, it is only shown when the content inside the ScrollView is wider than the scrollview itself. + Whether to always show the vertical scrollbar. If false, it is only shown when the content inside the ScrollView is higher than the scrollview itself. + Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. + Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. + + + + + + + Create a new ScrollViewScope and begin the corresponding ScrollView. + + The scroll position to use. + Whether to always show the horizontal scrollbar. If false, it is only shown when the content inside the ScrollView is wider than the scrollview itself. + Whether to always show the vertical scrollbar. If false, it is only shown when the content inside the ScrollView is higher than the scrollview itself. + Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. + Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. + + + + + + + Create a new ScrollViewScope and begin the corresponding ScrollView. + + The scroll position to use. + Whether to always show the horizontal scrollbar. If false, it is only shown when the content inside the ScrollView is wider than the scrollview itself. + Whether to always show the vertical scrollbar. If false, it is only shown when the content inside the ScrollView is higher than the scrollview itself. + Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. + Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. + + + + + + + Create a new ScrollViewScope and begin the corresponding ScrollView. + + The scroll position to use. + Whether to always show the horizontal scrollbar. If false, it is only shown when the content inside the ScrollView is wider than the scrollview itself. + Whether to always show the vertical scrollbar. If false, it is only shown when the content inside the ScrollView is higher than the scrollview itself. + Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. + Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. + + + + + + + Create a new ScrollViewScope and begin the corresponding ScrollView. + + The scroll position to use. + Whether to always show the horizontal scrollbar. If false, it is only shown when the content inside the ScrollView is wider than the scrollview itself. + Whether to always show the vertical scrollbar. If false, it is only shown when the content inside the ScrollView is higher than the scrollview itself. + Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. + Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. + + + + + + + Make a selectable label field. (Useful for showing read-only info that can be copy-pasted.) + + The text to show. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Make a selectable label field. (Useful for showing read-only info that can be copy-pasted.) + + The text to show. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Make a slider the user can drag to change a value between a min and a max. + + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value that has been set by the user. + + + + + Make a slider the user can drag to change a value between a min and a max. + + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value that has been set by the user. + + + + + Make a slider the user can drag to change a value between a min and a max. + + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value that has been set by the user. + + + + + Make a slider the user can drag to change a value between a min and a max. + + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Make a slider the user can drag to change a value between a min and a max. + + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Make a slider the user can drag to change a value between a min and a max. + + Optional label in front of the slider. + The value the slider shows. This determines the position of the draggable thumb. + The value at the left end of the slider. + The value at the right end of the slider. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Make a small space between the previous control and the following. + + + + + Make a tag selection field. + + Optional label in front of the field. + The tag the field shows. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The tag selected by the user. + + + + + Make a tag selection field. + + Optional label in front of the field. + The tag the field shows. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The tag selected by the user. + + + + + Make a tag selection field. + + Optional label in front of the field. + The tag the field shows. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The tag selected by the user. + + + + + Make a tag selection field. + + Optional label in front of the field. + The tag the field shows. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The tag selected by the user. + + + + + Make a tag selection field. + + Optional label in front of the field. + The tag the field shows. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The tag selected by the user. + + + + + Make a tag selection field. + + Optional label in front of the field. + The tag the field shows. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The tag selected by the user. + + + + + Make a text area. + + The text to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The text entered by the user. + + + + + Make a text area. + + The text to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The text entered by the user. + + + + + Make a text field. + + Optional label to display in front of the text field. + The text to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The text entered by the user. + + + + + Make a text field. + + Optional label to display in front of the text field. + The text to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The text entered by the user. + + + + + Make a text field. + + Optional label to display in front of the text field. + The text to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The text entered by the user. + + + + + Make a text field. + + Optional label to display in front of the text field. + The text to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The text entered by the user. + + + + + Make a text field. + + Optional label to display in front of the text field. + The text to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The text entered by the user. + + + + + Make a text field. + + Optional label to display in front of the text field. + The text to edit. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The text entered by the user. + + + + + Make a toggle. + + Optional label in front of the toggle. + The shown state of the toggle. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The selected state of the toggle. + + + + + Make a toggle. + + Optional label in front of the toggle. + The shown state of the toggle. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The selected state of the toggle. + + + + + Make a toggle. + + Optional label in front of the toggle. + The shown state of the toggle. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The selected state of the toggle. + + + + + Make a toggle. + + Optional label in front of the toggle. + The shown state of the toggle. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The selected state of the toggle. + + + + + Make a toggle. + + Optional label in front of the toggle. + The shown state of the toggle. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The selected state of the toggle. + + + + + Make a toggle. + + Optional label in front of the toggle. + The shown state of the toggle. + Optional GUIStyle. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The selected state of the toggle. + + + + + Begin a vertical group with a toggle to enable or disable all the controls within at once. + + + + + The enabled state selected by the user. + + + + + + + Label to show above the toggled controls. + Enabled state of the toggle group. + + + + + + Label to show above the toggled controls. + Enabled state of the toggle group. + + + + Make a toggle field where the toggle is to the left and the label immediately to the right of it. + + Label to display next to the toggle. + The value to edit. + Optional GUIStyle to use for the label. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Make a toggle field where the toggle is to the left and the label immediately to the right of it. + + Label to display next to the toggle. + The value to edit. + Optional GUIStyle to use for the label. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Make a toggle field where the toggle is to the left and the label immediately to the right of it. + + Label to display next to the toggle. + The value to edit. + Optional GUIStyle to use for the label. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Make a toggle field where the toggle is to the left and the label immediately to the right of it. + + Label to display next to the toggle. + The value to edit. + Optional GUIStyle to use for the label. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Make an X & Y field for entering a Vector2. + + Label to display above the field. + The value to edit. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make an X & Y field for entering a Vector2. + + Label to display above the field. + The value to edit. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make an X, Y & Z field for entering a Vector3. + + Label to display above the field. + The value to edit. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make an X, Y & Z field for entering a Vector3. + + Label to display above the field. + The value to edit. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Make an X, Y, Z & W field for entering a Vector4. + + Label to display above the field. + The value to edit. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + The value entered by the user. + + + + + Disposable helper class for managing BeginVertical / EndVertical. + + + + + The rect of the vertical group. + + + + + Create a new VerticalScope and begin the corresponding vertical group. + + The style to use for background image and padding values. If left out, the background is transparent. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Create a new VerticalScope and begin the corresponding vertical group. + + The style to use for background image and padding values. If left out, the background is transparent. + An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> +See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, +GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. + + + + Miscellaneous helper stuff for EditorGUI. + + + + + The width of the GUI area for the current EditorWindow or other view. + + + + + Is a text field currently editing text? + + + + + The minimum width in pixels reserved for the fields of Editor GUI controls. + + + + + Is the Editor GUI is hierarchy mode? + + + + + Is the user currently using the pro skin? (Read Only) + + + + + The width in pixels reserved for labels of Editor GUI controls. + + + + + Get the height used for a single Editor control such as a one-line EditorGUI.TextField or EditorGUI.Popup. + + + + + Get the height used by default for vertical spacing between controls. + + + + + The system copy buffer. + + + + + Get a white texture. + + + + + Is the Editor GUI currently in wide mode? + + + + + Add a custom mouse pointer to a control. + + The rectangle the control should be shown within. + The mouse cursor to use. + ID of a target control. + + + + Add a custom mouse pointer to a control. + + The rectangle the control should be shown within. + The mouse cursor to use. + ID of a target control. + + + + Creates an event. + + + + + + Draw a color swatch. + + The rectangle to draw the color swatch within. + The color to draw. + + + + Draw a curve swatch. + + The rectangle to draw the color swatch within. + The curve to draw. + The curve to draw as a SerializedProperty. + The color to draw the curve with. + The color to draw the background with. + Optional parameter to specify the range of the curve which should be included in swatch. + + + + Draw a curve swatch. + + The rectangle to draw the color swatch within. + The curve to draw. + The curve to draw as a SerializedProperty. + The color to draw the curve with. + The color to draw the background with. + Optional parameter to specify the range of the curve which should be included in swatch. + + + + Draw swatch with a filled region between two SerializedProperty curves. + + + + + + + + + + + Draw swatch with a filled region between two curves. + + + + + + + + + + + Get a texture from its source filename. + + + + + + Get one of the built-in GUI skins, which can be the game view, inspector or scene view skin as chosen by the parameter. + + + + + + Get the size that has been set using SetIconSize. + + + + + The controlID of the currently showing object picker. + + + + + The object currently selected in the object picker. + + + + + Does a given class have per-object thumbnails? + + + + + + Convert a set of HSV values to an RGB Color. + + The hue of the color - in the range 0 to 1. + The saturation of the color. + The value of the color. + + + + + The RGB color calculated from the HSV values passed into the function. The alpha value of the color will be 1. + + + + + Fetch the GUIContent from the Unity builtin resources with the given name. + + Content name. + Tooltip. + + + + Fetch the GUIContent from the Unity builtin resources with the given name. + + Content name. + Tooltip. + + + + Check if any enabled camera can render to a particular display. + + Display index. + + True if a camera will render to the display. + + + + + Load a built-in resource. + + + + + + Load a built-in resource that has to be there. + + + + + + Make all EditorGUI look like regular controls. + + Width to use for prefixed labels. + Width of text entries. + + + + Make all EditorGUI look like regular controls. + + Width to use for prefixed labels. + Width of text entries. + + + + Make all EditorGUI look like regular controls. + + Width to use for prefixed labels. + Width of text entries. + + + + Make all EditorGUI look like simplified outline view controls. + + + + + Return a GUIContent object with the name and icon of an Object. + + + + + + + Ping an object in a window like clicking it in an inspector. + + + + + + + Ping an object in a window like clicking it in an inspector. + + + + + + + Send an input event into the game. + + + + + + Render all ingame cameras. + + The device coordinates to render all game cameras into. + Show gizmos as well. + + + + + + Render all ingame cameras. + + The device coordinates to render all game cameras into. + Show gizmos as well. + + + + + + Convert a color from RGB to HSV color space. + + The color to convert from. + The hue of the color is written to this variable. + The saturation of the color is written to this variable. + The value of the color is written to this variable. + + + + Set icons rendered as part of GUIContent to be rendered at a specific size. + + + + + + Show the object picker from code. + + The object to be selected by default. + Is selection of scene objects allowed, or should it only show assets. + Default search filter to apply. + The id of the control to set. This is useful if you are showing more than one of these. You can get the value at a later time. + + + + Stores and accesses Unity editor preferences. + + + + + Removes all keys and values from the preferences. Use with caution. + + + + + Removes key and its corresponding value from the preferences. + + + + + + Returns the value corresponding to key in the preference file if it exists. + + + + + + + Returns the value corresponding to key in the preference file if it exists. + + + + + + + Returns the value corresponding to key in the preference file if it exists. + + + + + + + Returns the value corresponding to key in the preference file if it exists. + + + + + + + Returns the value corresponding to key in the preference file if it exists. + + + + + + + Returns the value corresponding to key in the preference file if it exists. + + + + + + + Returns the value corresponding to key in the preference file if it exists. + + + + + + + Returns the value corresponding to key in the preference file if it exists. + + + + + + + Returns true if key exists in the preferences. + + + + + + Sets the value of the preference identified by key. + + + + + + + Sets the value of the preference identified by key. + + + + + + + Sets the value of the preference identified by key as an integer. + + + + + + + Sets the value of the preference identified by key. + + + + + + + Enum that selects which skin to return from EditorGUIUtility.GetBuiltinSkin. + + + + + The skin used for game views. + + + + + The skin used for inspectors. + + + + + The skin used for scene views. + + + + + Common GUIStyles used for EditorGUI controls. + + + + + Bold font. + + + + + Style for bold label. + + + + + Style for label with small font which is centered and grey. + + + + + Style used for headings for Color fields. + + + + + Style used for headings for EditorGUI.Foldout. + + + + + Style used for headings for EditorGUI.Foldout. + + + + + Style used for background box for EditorGUI.HelpBox. + + + + + Wrap content in a vertical group with this style to get the default margins used in the Inspector. + + + + + Wrap content in a vertical group with this style to get full width margins in the Inspector. + + + + + Style used for the labelled on all EditorGUI overloads that take a prefix label. + + + + + Style for label with large font. + + + + + Style used for headings for Layer masks. + + + + + Mini Bold font. + + + + + Style for mini bold label. + + + + + Style used for a standalone small button. + + + + + Style used for the leftmost button in a horizontal button group. + + + + + Style used for the middle buttons in a horizontal group. + + + + + Style used for the rightmost button in a horizontal group. + + + + + Mini font. + + + + + Style for label with small font. + + + + + Smaller text field. + + + + + Style used for field editors for numbers. + + + + + Style used for headings for object fields. + + + + + Style used for object fields that have a thumbnail (e.g Textures). + + + + + Style used for headings for the Select button in object fields. + + + + + Style used for EditorGUI.Popup, EditorGUI.EnumPopup,. + + + + + Style used for a radio button. + + + + + Standard font. + + + + + Style used for EditorGUI.TextArea. + + + + + Style used for EditorGUI.TextField. + + + + + Style used for headings for EditorGUI.Toggle. + + + + + Style used for headings for EditorGUILayout.BeginToggleGroup. + + + + + Toolbar background from top of windows. + + + + + Style for Button and Toggles in toolbars. + + + + + Toolbar Dropdown. + + + + + Toolbar Popup. + + + + + Toolbar text field. + + + + + Style for white bold label. + + + + + Style for white label. + + + + + Style for white large label. + + + + + Style for white mini label. + + + + + Style for word wrapped label. + + + + + Style for word wrapped mini label. + + + + + User build settings for the Editor + + + + + The currently active build target. + + + + + Triggered in response to SwitchActiveBuildTarget. + + + + + DEFINE directives for the compiler. + + + + + Enable source-level debuggers to connect. + + + + + Android platform options. + + + + + The texture compression type to be used when building. + + + + + The build type to be used. + + + + + Is build script only enabled. + + + + + Build data compressed with PSArc. + + + + + Start the player with a connection to the profiler. + + + + + Enables a development build. + + + + + Enables a Linux headless build. + + + + + Are null references actively checked? + + + + + Export Android Project for use wih Android Studio or Eclipse. + + + + + Force installation of package, even if error. + + + + + Force full optimizations for script complilation in Development builds. + + + + + Place the built player in the build folder. + + + + + Create a .cia "download image" for deploying to test kits (3DS). + + + + + Build submission materials. + + + + + PS4 Build Subtarget. + + + + + PSM Build Subtarget. + + + + + PS Vita Build subtarget. + + + + + SCE Build subtarget. + + + + + The currently selected build target group. + + + + + The currently selected target for a standalone build. + + + + + When building an Xbox One Streaming Install package (makepkg.exe) The layout generation code in Unity will assign each scene and associated assets to individual chunks. Unity will mark scene 0 as being part of the launch range, IE the set of chunks required to launch the game, you may include additional scenes in this launch range if you desire, this specifies a range of scenes (starting at 0) to be included in the launch set. + + + + + Symlink runtime libraries with an iOS Xcode project. + + + + + The texture compression type to be used when building. + + + + + Optimization level for WebGL. + + + + + Build the webplayer along with the UnityObject.js file (so it doesn't need to be downloaded). + + + + + Select the streaming option for a webplayer build. + + + + + Boot mode of a devkit. + + + + + Wii U player debug level. + + + + + Built player postprocessing options. + + + + + Enable network API. + + + + + Generate and reference C# projects from your main solution. + + + + + Target Windows SDK. + + + + + Xbox Build subtarget. + + + + + The currently selected Xbox One Deploy Method. + + + + + Selected Xbox Run Method. + + + + + Get the current location for the build. + + + + + + Set a new location for the build. + + + + + + + Select a new build target to be active. + + + + True if the build target was successfully switched, false otherwise (for example, if license checks fail, files are missing, or if the user has cancelled the operation via the UI). + + + + + Editor utility functions. + + + + + Removes progress bar. + + + + + Collect all objects in the hierarchy rooted at each of the given objects. + + Array of objects where the search will start. + + Array of objects heirarchically attached to the search array. + + + + + Calculates and returns a list of all assets the assets listed in roots depend on. + + + + + + Compress a texture. + + + + + + + + Compress a texture. + + + + + + + + Copy all settings of a Unity Object. + + + + + + + Creates a game object with HideFlags and specified components. + + + + + + + + Displays or updates a progress bar that has a cancel button. + + + + + + + + Displays a modal dialog. + + The title of the message box. + The text of the message. + Label displayed on the OK dialog button. + Label displayed on the Cancel dialog button. + + + + Displays a modal dialog. + + The title of the message box. + The text of the message. + Label displayed on the OK dialog button. + Label displayed on the Cancel dialog button. + + + + Displays a modal dialog with three buttons. + + + + + + + + + + Displays a popup menu. + + + + + + + + Displays or updates a progress bar. + + + + + + + + Saves an AudioClip or MovieTexture to a file. + + + + + + + Brings the project window to the front and focuses it. + + + + + Returns a text for a number of bytes. + + + + + + Is the object enabled (0 disabled, 1 enabled, -1 has no enabled button). + + + + + + Translates an instance ID to a reference to an object. + + + + + + Determines if an object is stored on disk. + + + + + + Human-like sorting. + + + + + + + Displays the "open file" dialog and returns the selected path name. + + + + + + + + Displays the "open file" dialog and returns the selected path name. + + Title for dialog. + Default directory. + File extensions in form { "Image files", "png,jpg,jpeg", "All files", "*" }. + + + + Displays the "open folder" dialog and returns the selected path name. + + + + + + + + Displays the "save file" dialog and returns the selected path name. + + + + + + + + + Displays the "save file" dialog in the Assets folder of the project and returns the selected path name. + + + + + + + + + Displays the "save folder" dialog and returns the selected path name. + + + + + + + + Marks target object as dirty. + + + + + + Set the enabled state of the object. + + + + + + + Set whether the renderer's wireframe will be hidden when the renderer's gameobject is selected. + + + + + + + Unloads assets that are not used. + + + + + Unloads assets that are not used. + + + + + Derive from this class to create an editor window. + + + + + Does the window automatically repaint whenever the scene has changed? + + + + + The EditorWindow which currently has keyboard focus. (Read Only) + + + + + Is this window maximized. + + + + + The maximum size of this window. + + + + + The minimum size of this window. + + + + + The EditorWindow currently under the mouse cursor. (Read Only) + + + + + The position of the window in screen space. + + + + + The title of this window. + + + + + The GUIContent used for drawing the title of EditorWindows. + + + + + Does the GUI in this editor window want MouseMove events? + + + + + Mark the beginning area of all popup windows. + + + + + Close the editor window. + + + + + Close a window group started with EditorWindow.BeginWindows. + + + + + Moves keyboard focus to this EditorWindow. + + + + + Focuses the first found EditorWindow of specified type if it is open. + + The type of the window. Must derive from EditorWindow. + + + + Focuses the first found EditorWindow of type T if it is open. + + The type of the window. Must derive from EditorWindow. + + + + Returns the first EditorWindow of type t which is currently on the screen. + + The type of the window. Must derive from EditorWindow. + Set this to true, to create a floating utility window, false to create a normal window. + If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. + Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). + + + + Returns the first EditorWindow of type t which is currently on the screen. + + The type of the window. Must derive from EditorWindow. + Set this to true, to create a floating utility window, false to create a normal window. + If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. + Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). + + + + Returns the first EditorWindow of type t which is currently on the screen. + + The type of the window. Must derive from EditorWindow. + Set this to true, to create a floating utility window, false to create a normal window. + If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. + Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). + + + + Returns the first EditorWindow of type t which is currently on the screen. + + The type of the window. Must derive from EditorWindow. + Set this to true, to create a floating utility window, false to create a normal window. + If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. + Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). + + + + Returns the first EditorWindow of type T which is currently on the screen. + + The type of the window. Must derive from EditorWindow. + Set this to true, to create a floating utility window, false to create a normal window. + If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. + Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). + + + + Returns the first EditorWindow of type T which is currently on the screen. + + The type of the window. Must derive from EditorWindow. + Set this to true, to create a floating utility window, false to create a normal window. + If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. + Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). + + + + Returns the first EditorWindow of type T which is currently on the screen. + + The type of the window. Must derive from EditorWindow. + Set this to true, to create a floating utility window, false to create a normal window. + If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. + Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). + + + + Returns the first EditorWindow of type T which is currently on the screen. + + The type of the window. Must derive from EditorWindow. + Set this to true, to create a floating utility window, false to create a normal window. + If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. + Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). + + + + Returns the first EditorWindow of type T which is currently on the screen. + + The type of the window. Must derive from EditorWindow. + Set this to true, to create a floating utility window, false to create a normal window. + If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. + Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). + + + + Returns the first EditorWindow of type T which is currently on the screen. + + The type of the window. Must derive from EditorWindow. + Set this to true, to create a floating utility window, false to create a normal window. + If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. + Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). + + + + Returns the first EditorWindow of type T which is currently on the screen. + + The type of the window. Must derive from EditorWindow. + If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. + An array of EditorWindow types that the window will attempt to dock onto. + Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). + + + + Returns the first EditorWindow of type T which is currently on the screen. + + The type of the window. Must derive from EditorWindow. + If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. + An array of EditorWindow types that the window will attempt to dock onto. + Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). + + + + Returns the first EditorWindow of type T which is currently on the screen. + + The type of the window. Must derive from EditorWindow. + If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. + An array of EditorWindow types that the window will attempt to dock onto. + Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). + + + + Returns the first EditorWindow of type t which is currently on the screen. + + The type of the window. Must derive from EditorWindow. + The position on the screen where a newly created window will show. + Set this to true, to create a floating utility window, false to create a normal window. + If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. + + + + Returns the first EditorWindow of type t which is currently on the screen. + + The type of the window. Must derive from EditorWindow. + The position on the screen where a newly created window will show. + Set this to true, to create a floating utility window, false to create a normal window. + If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. + + + + Returns the first EditorWindow of type t which is currently on the screen. + + The type of the window. Must derive from EditorWindow. + The position on the screen where a newly created window will show. + Set this to true, to create a floating utility window, false to create a normal window. + If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. + + + + Returns the first EditorWindow of type t which is currently on the screen. + + The type of the window. Must derive from EditorWindow. + The position on the screen where a newly created window will show. + Set this to true, to create a floating utility window, false to create a normal window. + If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. + Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). + + + + Returns the first EditorWindow of type t which is currently on the screen. + + The type of the window. Must derive from EditorWindow. + The position on the screen where a newly created window will show. + Set this to true, to create a floating utility window, false to create a normal window. + If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. + Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). + + + + Returns the first EditorWindow of type t which is currently on the screen. + + The type of the window. Must derive from EditorWindow. + The position on the screen where a newly created window will show. + Set this to true, to create a floating utility window, false to create a normal window. + If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. + Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). + + + + Returns the first EditorWindow of type t which is currently on the screen. + + The type of the window. Must derive from EditorWindow. + The position on the screen where a newly created window will show. + Set this to true, to create a floating utility window, false to create a normal window. + If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. + Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). + + + + Stop showing notification message. + + + + + Make the window repaint. + + + + + Sends an Event to a window. + + + + + + Show the EditorWindow. + + + + + + Show the EditorWindow. + + + + + + Show window with dropdown behaviour (e.g. window is closed when it loses focus) and having. + + Is used for positioning the window. + Is used for setting up initial size of the window. + + + + Show the editor window in the auxiliary window. + + + + + Show a notification message. + + + + + + Used for popup style windows. + + + + + Show the EditorWindow as a floating utility window. + + + + + Editor tools for working with persistent UnityEvents. + + + + + Adds a persistent, preset call to the listener. + + Event to modify. + Function to call. + Argument to use when invoking. + + + + Adds a persistent, preset call to the listener. + + Event to modify. + Function to call. + Argument to use when invoking. + + + + Adds a persistent, preset call to the listener. + + Event to modify. + Function to call. + Argument to use when invoking. + + + + Adds a persistent, preset call to the listener. + + Event to modify. + Function to call. + Argument to use when invoking. + + + + Adds a persistent, call to the listener. Will be invoked with the arguments as defined by the Event and sent from the call location. + + Event to modify. + Function to call. + + + + Adds a persistent, call to the listener. Will be invoked with the arguments as defined by the Event and sent from the call location. + + Event to modify. + Function to call. + + + + Adds a persistent, call to the listener. Will be invoked with the arguments as defined by the Event and sent from the call location. + + Event to modify. + Function to call. + + + + Adds a persistent, call to the listener. Will be invoked with the arguments as defined by the Event and sent from the call location. + + Event to modify. + Function to call. + + + + Adds a persistent, call to the listener. Will be invoked with the arguments as defined by the Event and sent from the call location. + + Event to modify. + Function to call. + + + + Adds a persistent, call to the listener. Will be invoked with the arguments as defined by the Event and sent from the call location. + + Event to modify. + Function to call. + + + + Adds a persistent, preset call to the listener. + + Event to modify. + Function to call. + Argument to use when invoking. + + + + Adds a persistent, preset call to the listener. + + Event to modify. + Function to call. + + + + Modifies the event at the given index. + + Event to modify. + Index to modify. + Function to call. + Argument to use when invoking. + + + + Modifies the event at the given index. + + Event to modify. + Index to modify. + Function to call. + Argument to use when invoking. + + + + Modifies the event at the given index. + + Event to modify. + Index to modify. + Function to call. + Argument to use when invoking. + + + + Modifies the event at the given index. + + Event to modify. + Index to modify. + Function to call. + Argument to use when invoking. + + + + Modifies the event at the given index. + + Event to modify. + Index to modify. + Function to call. + + + + Modifies the event at the given index. + + Event to modify. + Index to modify. + Function to call. + + + + Modifies the event at the given index. + + Event to modify. + Index to modify. + Function to call. + + + + Modifies the event at the given index. + + Event to modify. + Index to modify. + Function to call. + + + + Modifies the event at the given index. + + Event to modify. + Index to modify. + Function to call. + + + + Modifies the event at the given index. + + Event to modify. + Index to modify. + Function to call. + Argument to use when invoking. + + + + Modifies the event at the given index. + + Event to modify. + Index to modify. + Function to call. + + + + Removes the given function from the event. + + Event to modify. + Index to remove (if specified). + Function to remove (if specified). + + + + Removes the given function from the event. + + Event to modify. + Index to remove (if specified). + Function to remove (if specified). + + + + Removes the given function from the event. + + Event to modify. + Index to remove (if specified). + Function to remove (if specified). + + + + Removes the given function from the event. + + Event to modify. + Index to remove (if specified). + Function to remove (if specified). + + + + Removes the given function from the event. + + Event to modify. + Index to remove (if specified). + Function to remove (if specified). + + + + Removes the given function from the event. + + Event to modify. + Index to remove (if specified). + Function to remove (if specified). + + + + Unregisters the given listener at the specified index. + + Event to modify. + Index to unregister. + + + + Export package option. Multiple options can be combined together using the | operator. + + + + + Default mode. Will not include dependencies or subdirectories nor include Library assets unless specifically included in the asset list. + + + + + In addition to the assets paths listed, all dependent assets will be included as well. + + + + + The exported package will include all library assets, ie. the project settings located in the Library folder of the project. + + + + + The export operation will be run asynchronously and reveal the exported package file in a file browser window after the export is finished. + + + + + Will recurse through any subdirectories listed and include all assets inside them. + + + + + Lets you do move, copy, delete operations over files or directories. + + + + + Copies a file or a directory. + + + + + + + Copies the file or directory. + + + + + + + Deletes a file or a directory given a path. + + + + + + Returns a unique path in the Temp folder within your current project. + + + + + Moves a file or a directory from a given path to another path. + + + + + + + Replaces a directory. + + + + + + + Replaces a file. + + + + + + + Font rendering mode constants for TrueTypeFontImporter. + + + + + Use hinted font rendering without anti-aliasing. This is the crispest font rendering option, and may be most readable for small. + + + + + Use Anti-Aliased Font rendering with hinting. This forces character lines to run along pixel boundaries, and generally produces. + + + + + Use the OS default font rendering mode. This selects either FontRenderingMode.HintedSmooth or. + + + + + Use Anti-Aliased Font rendering. When using dynamic fonts, this is the mode which is fastest in rendering font textures. + + + + + Texture case constants for TrueTypeFontImporter. + + + + + Import basic ASCII character set. + + + + + Only import lower case ASCII character set. + + + + + Only import upper case ASCII character set. + + + + + Custom set of characters. + + + + + Render characters into font texture at runtime as needed. + + + + + Import a set of Unicode characters common for latin scripts. + + + + + GameObject utility functions. + + + + + Returns true if the passed in StaticEditorFlags are set on the GameObject specified. + + The GameObject to check. + The flags you want to check. + + Whether the GameObject's static flags match the flags specified. + + + + + Get the navmesh area index for the GameObject. + + GameObject to query. + + NavMesh area index. + + + + + Get the navmesh area index from the area name. + + NavMesh area name to query. + + The NavMesh area index. If there is no NavMesh area with the requested name, the return value is -1. + + + + + Get all the navmesh area names. + + + Names of all the NavMesh areas. + + + + + Get the navmesh layer for the GameObject. + + The GameObject to check. + + The navmesh layer for the GameObject specified. + + + + + Get the navmesh layer from the layer name. + + The name of the navmesh layer. + + The layer number of the navmesh layer name specified. + + + + + Get all the navmesh layer names. + + + An array of the names of all navmesh layers. + + + + + Gets the StaticEditorFlags of the GameObject specified. + + The GameObject whose flags you are interested in. + + The static editor flags of the GameObject specified. + + + + + Get unique name for a new GameObject compared to existing siblings. Useful when trying to avoid duplicate naming. When duplicate(s) are found, uses incremental a number after the base name. + + Target parent for a new GameObject. Null means root level. + Requested name for a new GameObject. + + Unique name for a new GameObject. + + + + + Set the navmesh area for the gameobject. + + GameObject to modify. + NavMesh area index to set. + + + + Set the navmesh layer for the GameObject. + + The GameObject on which to set the navmesh layer. + The layer number you want to set. + + + + Sets the parent and gives the child the same layer and position. + + The GameObject that should have a new parent set. + The GameObject that the child should get as a parent and have position and layer copied from. If null, this function does nothing. + + + + Sets the static editor flags on the specified GameObject. + + The GameObject whose static editor flags you want to set. + The flags to set on the GameObject. + + + + The GenericMenu lets you create a custom context and dropdown menus. + + + + + Add a disabled item to the menu. + + The GUIContent to display as a disabled menu item. + + + + Add an item to the menu. + + The GUIContent to add as a menu item. + Whether to show the item is currently activated (i.e. a tick next to the item in the menu). + The function to call when the menu item is selected. + + + + Add an item to the menu. + + The GUIContent to add as a menu item. + Whether to show the item is currently activated (i.e. a tick next to the item in the menu). + The function to call when the menu item is selected. + The data to pass to the function called when the item is selected. + + + + Add a seperator item to the menu. + + The path to the submenu, if adding a separator to a submenu. When adding a separator to the top level of a menu, use an empty string as the path. + + + + Show the menu at the given screen rect. + + The position at which to show the menu. + + + + Get number of items in the menu. + + + The number of items in the menu. + + + + + Callback function, called when a menu item is selected. + + + + + Callback function with user data, called when a menu item is selected. + + The data to pass through to the callback function. + + + + Show the menu under the mouse when right-clicked. + + + + + Determines how a gizmo is drawn or picked in the Unity editor. + + + + + Draw the gizmo if it is active (shown in the inspector). + + + + + Draw the gizmo if it is selected or it is a child/descendent of the selected. + + + + + Draw the gizmo if it is not selected. + + + + + Draw the gizmo if it is not selected and also no parent/ancestor is selected. + + + + + The gizmo can be picked in the editor. + + + + + Draw the gizmo if it is selected. + + + + + Base class for PropertyDrawer and DecoratorDrawer. + + + + + Custom 3D GUI controls and drawing in the scene view. + + + + + Color to use for handles that represent the center of something. + + + + + Colors of the handles. + + + + + Setup viewport and stuff for a current camera. + + + + + The inverse of the matrix for all handle operations. + + + + + Are handles lit? + + + + + Matrix for all handle operations. + + + + + Soft color to use for for general things. + + + + + Color to use for the currently active handle. + + + + + Color to use for handles that manipulates the X coordinate of something. + + + + + Color to use for handles that manipulates the Y coordinate of something. + + + + + Color to use for handles that manipulates the Z coordinate of something. + + + + + Draw an arrow like those used by the move tool. + + The control ID for the handle. + The world-space position of the handle's start point. + The rotation of the handle. + The size of the handle in world-space units. + + + + Begin a 2D GUI block inside the 3D handle GUI. + + The position and size of the 2D GUI area. + + + + Begin a 2D GUI block inside the 3D handle GUI. + + The position and size of the 2D GUI area. + + + + Make a 3D Button. + + The world-space position to draw the button. + The rotation of the button. + The visual size of the button. + The size of the button for the purpose of detecting a click. + The draw style of the button. + + True when the user clicks the button. + + + + + Draw a camera-facing Circle. Pass this into handle functions. + + The control ID for the handle. + The world-space position for the start of the handle. + The rotation of the handle. + The size of the handle in world-space units. + + + + Clears the camera. + + + + + + + Draw a Cone. Pass this into handle functions. + + The control ID for the handle. + The world-space position of the handle's start point. + The rotation of the handle. + The size of the handle in world-space units. + + + + Draw a cube. Pass this into handle functions. + + The control ID for the handle. + The world-space position of the handle's start point. + The rotation of the handle. + The size of the handle in world-space units. + + + + Draw a Cylinder. Pass this into handle functions. + + The control ID for the handle. + The world-space position of the handle's start point. + The rotation of the handle. + The size of the handle in world-space units. + + + + Make a 3D disc that can be dragged with the mouse. + + The rotation of the disc. + The center of the disc. + The axis to rotate around. + The size of the disc in world space See Also:HandleUtility.GetHandleSize. + If true, only the front-facing half of the circle is draw / draggable. This is useful when you have many overlapping rotation axes (like in the default rotate tool) to avoid clutter. + The new value after the user has modified it. + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + Draw a camera-facing dot. Pass this into handle functions. + + The control ID for the handle. + The world-space position of the handle's start point. + The rotation of the handle. + The size of the handle in world-space units. + + + + Draw anti-aliased convex polygon specified with point array. + + List of points describing the convex polygon. + + + + Draw anti-aliased line specified with point array and width. + + The AA texture used for rendering. To get an anti-aliased effect use a texture that is 1x2 pixels with one transparent white pixel and one opaque white pixel. + The width of the line. Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + List of points to build the line from. + + + + + Draw anti-aliased line specified with point array and width. + + The AA texture used for rendering. To get an anti-aliased effect use a texture that is 1x2 pixels with one transparent white pixel and one opaque white pixel. + The width of the line. Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + List of points to build the line from. + + + + + Draw anti-aliased line specified with point array and width. + + The AA texture used for rendering. To get an anti-aliased effect use a texture that is 1x2 pixels with one transparent white pixel and one opaque white pixel. + The width of the line. Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + List of points to build the line from. + + + + + Draw anti-aliased line specified with point array and width. + + The AA texture used for rendering. To get an anti-aliased effect use a texture that is 1x2 pixels with one transparent white pixel and one opaque white pixel. + The width of the line. Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + List of points to build the line from. + + + + + Draw anti-aliased line specified with point array and width. + + The AA texture used for rendering. To get an anti-aliased effect use a texture that is 1x2 pixels with one transparent white pixel and one opaque white pixel. + The width of the line. Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + List of points to build the line from. + + + + + Draw textured bezier line through start and end points with the given tangents. To get an anti-aliased effect use a texture that is 1x2 pixels with one transparent white pixel and one opaque white pixel. The bezier curve will be swept using this texture. + + The start point of the bezier line. + The end point of the bezier line. + The start tangent of the bezier line. + The end tangent of the bezier line. + The color to use for the bezier line. + The texture to use for drawing the bezier line. + The width of the bezier line. + + + + Draws a camera inside a rectangle. + + The area to draw the camera within in GUI coordinates. + The camera to draw. + How the camera is drawn (textured, wireframe, etc). + Parameters of grid drawing (can be omitted). + + + + Draws a camera inside a rectangle. + + The area to draw the camera within in GUI coordinates. + The camera to draw. + How the camera is drawn (textured, wireframe, etc.). + + + + Draws a camera inside a rectangle. + + The area to draw the camera within in GUI coordinates. + The camera to draw. + How the camera is drawn (textured, wireframe, etc.). + + + + The function to use for drawing the handle e.g. Handles.RectangleCap. + + + + + + + + + Draw a dotted line from p1 to p2. + + The start point. + The end point. + The size in pixels for the lengths of the line segments and the gaps between them. + + + + Draw a line from p1 to p2. + + + + + + + Draw a line going through the list of all points. + + + + + + Draw a circular sector (pie piece) in 3D space. + + The center of the circle. + The normal of the circle. + The direction of the point on the circumference, relative to the center, where the sector begins. + The angle of the sector, in degrees. + The radius of the circle + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + Draw a solid flat disc in 3D space. + + The center of the dics. + The normal of the disc. + The radius of the dics + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + Draw a solid outlined rectangle in 3D space. + + The 4 vertices of the rectangle in world coordinates. + The color of the rectangle's face. + The outline color of the rectangle. + + + + Draw a circular arc in 3D space. + + The center of the circle. + The normal of the circle. + The direction of the point on the circle circumference, relative to the center, where the arc begins. + The angle of the arc, in degrees. + The radius of the circle + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + Draw the outline of a flat disc in 3D space. + + The center of the dics. + The normal of the disc. + The radius of the dics + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + End a 2D GUI block and get back to the 3D handle GUI. + + + + + Make an unconstrained movement handle. + + The position of the handle. + The rotation of the handle. this defines the space along. + The size of the handle. + The function to use for drawing the handle, eg, Handles.RectangleCap + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + + Make an unconstrained rotation handle. + + Orientation of the handle. + Center of the handle in 3D space. + The size of the handle. + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + Get the width and height of the main game view. + + + + + Make a text label positioned in 3D space. + + Position in 3D space as seen from the current handle camera. + Text to display on the label. + Texture to display on the label. + Text, image and tooltip for this label. + The style to use. If left out, the label style from the current GUISkin is used. + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + Make a text label positioned in 3D space. + + Position in 3D space as seen from the current handle camera. + Text to display on the label. + Texture to display on the label. + Text, image and tooltip for this label. + The style to use. If left out, the label style from the current GUISkin is used. + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + Make a text label positioned in 3D space. + + Position in 3D space as seen from the current handle camera. + Text to display on the label. + Texture to display on the label. + Text, image and tooltip for this label. + The style to use. If left out, the label style from the current GUISkin is used. + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + Make a text label positioned in 3D space. + + Position in 3D space as seen from the current handle camera. + Text to display on the label. + Texture to display on the label. + Text, image and tooltip for this label. + The style to use. If left out, the label style from the current GUISkin is used. + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + Make a text label positioned in 3D space. + + Position in 3D space as seen from the current handle camera. + Text to display on the label. + Texture to display on the label. + Text, image and tooltip for this label. + The style to use. If left out, the label style from the current GUISkin is used. + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + Retuns an array of points to representing the bezier curve. See Handles.DrawBezier. + + + + + + + + + + Make a 3D Scene view position handle. + + Center of the handle in 3D space. + + + The new position. If the user has not performed any operation, it will return the same value as you passed it in postion. + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + + Make a Scene view radius handle. + + Orientation of the handle. + Center of the handle in 3D space. + Radius to modify. + + + The modified radius + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + + Make a Scene view radius handle. + + Orientation of the handle. + Center of the handle in 3D space. + Radius to modify. + + + The modified radius + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + + Make a Scene view rotation handle. + + Orientation of the handle. + Center of the handle in 3D space. + + The modified rotation + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + + Make a Scene view scale handle. + + Scale to modify. + The position of the handle. + The rotation of the handle. + + + The new scale vector. + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + + Make a directional scale slider. + + The value the user can modify. + The position of the handle. + The direction of the handle. + The rotation of whole object. + The size of the handle. + The new value after the user has modified it. + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + Make a single-float draggable handle. + + The value the user can modify. + The position of the handle. + The rotation of the handle. + The size of the handle. + The function to use for drawing the handle e.g. Handles.RectangleCap. + The new value after the user has modified it. + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + Draw a camera facing selection frame. + + + + + + + + + Set the current camera so all Handles and Gizmos are draw with its settings. + + + + + + + Set the current camera so all Handles and Gizmos are draw with its settings. + + + + + + + Make a 3D slider. + + The position of the current point. + The direction of the sliding. + 3D size the size of the handle. + The function to call for doing the actual drawing - by default, it's Handles.ArrowCap, but any function that has the same signature can be used. + The snap value (see Handles.SnapValue). + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + Make a 3D slider. + + The position of the current point. + The direction of the sliding. + 3D size the size of the handle. + The function to call for doing the actual drawing - by default, it's Handles.ArrowCap, but any function that has the same signature can be used. + The snap value (see Handles.SnapValue). + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + Slide a handle in a 2D plane. + + (optional) override the default ControlID for this Slider2D instance. + The position of the current point. + (optional) renders the Slider2D at handlePos, but treats the Slider2D's origin as handlePos + offset. Useful for Slider2D instances that are placed/rendered relative to another object or handle. + The direction of the handle, only used for rendering of the handle. + The first direction of the sliding. + The second direction of the sliding. + The size of the handle. + The function to call for doing the actual drawing - by default, it's Handles.ArrowCap, but any function that has the same signature can be used. + (float or Vector2) set the snap increment (Pass a Vector2 to use separate snap increments in each dimension). + (default: false) render a rectangle around the handle when dragging. + + The new handle position + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + + Slide a handle in a 2D plane. + + (optional) override the default ControlID for this Slider2D instance. + The position of the current point. + (optional) renders the Slider2D at handlePos, but treats the Slider2D's origin as handlePos + offset. Useful for Slider2D instances that are placed/rendered relative to another object or handle. + The direction of the handle, only used for rendering of the handle. + The first direction of the sliding. + The second direction of the sliding. + The size of the handle. + The function to call for doing the actual drawing - by default, it's Handles.ArrowCap, but any function that has the same signature can be used. + (float or Vector2) set the snap increment (Pass a Vector2 to use separate snap increments in each dimension). + (default: false) render a rectangle around the handle when dragging. + + The new handle position + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + + Slide a handle in a 2D plane. + + (optional) override the default ControlID for this Slider2D instance. + The position of the current point. + (optional) renders the Slider2D at handlePos, but treats the Slider2D's origin as handlePos + offset. Useful for Slider2D instances that are placed/rendered relative to another object or handle. + The direction of the handle, only used for rendering of the handle. + The first direction of the sliding. + The second direction of the sliding. + The size of the handle. + The function to call for doing the actual drawing - by default, it's Handles.ArrowCap, but any function that has the same signature can be used. + (float or Vector2) set the snap increment (Pass a Vector2 to use separate snap increments in each dimension). + (default: false) render a rectangle around the handle when dragging. + + The new handle position + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + + Slide a handle in a 2D plane. + + (optional) override the default ControlID for this Slider2D instance. + The position of the current point. + (optional) renders the Slider2D at handlePos, but treats the Slider2D's origin as handlePos + offset. Useful for Slider2D instances that are placed/rendered relative to another object or handle. + The direction of the handle, only used for rendering of the handle. + The first direction of the sliding. + The second direction of the sliding. + The size of the handle. + The function to call for doing the actual drawing - by default, it's Handles.ArrowCap, but any function that has the same signature can be used. + (float or Vector2) set the snap increment (Pass a Vector2 to use separate snap increments in each dimension). + (default: false) render a rectangle around the handle when dragging. + + The new handle position + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + + Slide a handle in a 2D plane. + + (optional) override the default ControlID for this Slider2D instance. + The position of the current point. + (optional) renders the Slider2D at handlePos, but treats the Slider2D's origin as handlePos + offset. Useful for Slider2D instances that are placed/rendered relative to another object or handle. + The direction of the handle, only used for rendering of the handle. + The first direction of the sliding. + The second direction of the sliding. + The size of the handle. + The function to call for doing the actual drawing - by default, it's Handles.ArrowCap, but any function that has the same signature can be used. + (float or Vector2) set the snap increment (Pass a Vector2 to use separate snap increments in each dimension). + (default: false) render a rectangle around the handle when dragging. + + The new handle position + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + + Slide a handle in a 2D plane. + + (optional) override the default ControlID for this Slider2D instance. + The position of the current point. + (optional) renders the Slider2D at handlePos, but treats the Slider2D's origin as handlePos + offset. Useful for Slider2D instances that are placed/rendered relative to another object or handle. + The direction of the handle, only used for rendering of the handle. + The first direction of the sliding. + The second direction of the sliding. + The size of the handle. + The function to call for doing the actual drawing - by default, it's Handles.ArrowCap, but any function that has the same signature can be used. + (float or Vector2) set the snap increment (Pass a Vector2 to use separate snap increments in each dimension). + (default: false) render a rectangle around the handle when dragging. + + The new handle position + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + + Slide a handle in a 2D plane. + + (optional) override the default ControlID for this Slider2D instance. + The position of the current point. + (optional) renders the Slider2D at handlePos, but treats the Slider2D's origin as handlePos + offset. Useful for Slider2D instances that are placed/rendered relative to another object or handle. + The direction of the handle, only used for rendering of the handle. + The first direction of the sliding. + The second direction of the sliding. + The size of the handle. + The function to call for doing the actual drawing - by default, it's Handles.ArrowCap, but any function that has the same signature can be used. + (float or Vector2) set the snap increment (Pass a Vector2 to use separate snap increments in each dimension). + (default: false) render a rectangle around the handle when dragging. + + The new handle position + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + + Slide a handle in a 2D plane. + + (optional) override the default ControlID for this Slider2D instance. + The position of the current point. + (optional) renders the Slider2D at handlePos, but treats the Slider2D's origin as handlePos + offset. Useful for Slider2D instances that are placed/rendered relative to another object or handle. + The direction of the handle, only used for rendering of the handle. + The first direction of the sliding. + The second direction of the sliding. + The size of the handle. + The function to call for doing the actual drawing - by default, it's Handles.ArrowCap, but any function that has the same signature can be used. + (float or Vector2) set the snap increment (Pass a Vector2 to use separate snap increments in each dimension). + (default: false) render a rectangle around the handle when dragging. + + The new handle position + +Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. + + + + + Rounds the value val to the closest multiple of snap (snap can only be posiive). + + + + + The rounded value, if snap is positive, and val otherwise. + + + + + Draw a Sphere. Pass this into handle functions. + + + + + + + + + Helper functions for Scene View style 3D GUI. + + + + + Get standard acceleration for dragging values (Read Only). + + + + + Get nice mouse delta to use for dragging a float value (Read Only). + + + + + Get nice mouse delta to use for zooming (Read Only). + + + + + Record a distance measurement from a handle. + + + + + + + Add the ID for a default control. This will be picked if nothing else is. + + + + + + Map a mouse drag onto a movement along a line in 3D space. + + The source point of the drag. + The destination point of the drag. + The 3D position the dragged object had at src ray. + 3D direction of constrained movement. + + The distance travelled along constraintDir. + + + + + Get the point on an arc (in 3D space) which is closest to the current mouse position. + + + + + + + + + + Get the point on an disc (in 3D space) which is closest to the current mouse position. + + + + + + + + Get the point on a polyline (in 3D space) which is closest to the current mouse position. + + + + + + Calculate distance between a point and a Bezier curve. + + + + + + + + + + Calculate distance between a point and a line. + + + + + + + + Distance from a point p in 2d to a line defined by two points a and b. + + + + + + + + Distance from a point p in 2d to a line segment defined by two points a and b. + + + + + + + + Pixel distance from mouse pointer to a 3D section of a disc. + + + + + + + + + + Pixel distance from mouse pointer to camera facing circle. + + + + + + + Pixel distance from mouse pointer to a 3D disc. + + + + + + + + Pixel distance from mouse pointer to line. + + + + + + + Pixel distance from mouse pointer to a polyline. + + + + + + Pixel distance from mouse pointer to a rectangle on screen. + + + + + + + + Get world space size of a manipulator handle at given position. + + + + + + Convert 2D GUI position to a world space ray. + + + + + + Pick game object closest to specified position. + + Select prefab. + Returns index into material array of the Renderer component that is closest to specified position. + + + + + Pick game object closest to specified position. + + Select prefab. + Returns index into material array of the Renderer component that is closest to specified position. + + + + + Pick GameObjects that lie within a specified screen rectangle. + + An screen rectangle specified with pixel coordinates. + + + + + + + + + + + Returns the parameter for the projection of the point on the given line. + + + + + + + + Retrieve all camera settings. + + + + + + Project point onto a line. + + + + + + + + Store all camera settings. + + + + + + Casts ray against the scene and report if an object lies in its path. + + + + A boxed RaycastHit, null if nothing hit it. + + + + + Repaint the current view. + + + + + Calculate a rectangle to display a 2D GUI element near a projected point in 3D space. + + The world-space position to use. + The content to make room for. + The style to use. The style's alignment. + + + + Convert world space point to a 2D GUI position. + + Point in world space. + + + + Helper class to access Unity documentation. + + + + + Open url in the default web browser. + + + + + + Get the URL for this object's documentation. + + The object to retrieve documentation for. + + The documentation URL for the object. Note that this could use the http: or file: schemas. + + + + + Is there a help page for this object? + + + + + + Show help page for this object. + + + + + + Show a help page. + + + + + + Use this class to highlight elements in the editor for use in in-editor tutorials and similar. + + + + + Is there currently an active highlight? + + + + + The rect in screenspace of the current active highlight. + + + + + The text of the current active highlight. + + + + + Is the current active highlight visible yet? + + + + + Highlights an element in the editor. + + The title of the window the element is inside. + The text to identify the element with. + Optional mode to specify how to search for the element. + + true if the requested element was found; otherwise false. + + + + + Highlights an element in the editor. + + The title of the window the element is inside. + The text to identify the element with. + Optional mode to specify how to search for the element. + + true if the requested element was found; otherwise false. + + + + + Call this method to create an identifiable rect that the Highlighter can find. + + The position to make highlightable. + The identifier text of the rect. + + + + Stops the active highlight. + + + + + Used to specify how to find a given element in the editor to highlight. + + + + + Highlights the first element found using any of the search modes. + + + + + Highlights an element containing text using the text as identifier. + + + + + Highlights an element with a given identifier text. + + + + + Highlights nothing. + + + + + Highlights an entire editor control using its label text as identifier. + + + + + Asset importing options. + + + + + Default import options. + + + + + Force a full reimport but don't download the assets from the cache server. + + + + + Import all assets synchronously. + + + + + Forces asset import as uncompressed for edition facilities. + + + + + User initiated asset import. + + + + + When a folder is imported, import all its contents as well. + + + + + Allow an editor class to be initialized when Unity loads without action from the user. + + + + + Allow an editor class method to be initialized when Unity loads without action from the user. + + + + + A device requirement description used for configuration of App Slicing. + + + + + The values of the device requirement description. + + + + + Constructs new device requirement description. + + + + + Supported iOS SDK versions. + + + + + Device SDK. + + + + + Simulator SDK. + + + + + Activity Indicator on loading. + + + + + Don't Show. + + + + + Gray. + + + + + White. + + + + + White Large. + + + + + iOS status bar style. + + + + + Black opaque. + + + + + Black translucent. + + + + + Default. + + + + + Target iOS device. + + + + + iPad Only. + + + + + Universal : iPhone/iPod + iPad. + + + + + iPhone/iPod Only. + + + + + Supported iOS deployment versions. + + + + + iOS 4.0. + + + + + iOS 4.1. + + + + + iOS 4.2. + + + + + iOS 4.3. + + + + + iOS 5.0. + + + + + iOS 5.1. + + + + + iOS 6.0. + + + + + iOS 7.0. + + + + + iOS 7.1. + + + + + iOS 8.0. + + + + + iOS 8.1. + + + + + Unknown iOS version, managed by user. + + + + + Deployment target iOS device resolution. + + + + + Native device resolution. + + + + + 320p (iPhone). + + + + + 640p (iPhone Retina Display). + + + + + 768p (iPad). + + + + + Auto (Best Performane). + + + + + Auto (Best Quality). + + + + + Bake quality setting for LightmapEditorSettings. + + + + + High quality bake for final renderings. + + + + + Low quality bake for preview renderings. + + + + + Various settings for the bake. + + + + + Beyond this distance a ray is considered to be unoccluded. + + + + + The maximum height of an individual lightmap texture. + + + + + The maximum width of an individual lightmap texture. + + + + + Texel separation between shapes. + + + + + Determines how Unity will compress baked reflection cubemap. + + + + + Lightmap resolution in texels per world unit. Higher resolution may take a long time to bake. + + + + + Whether to use DXT1 compression on the generated lightmaps. + + + + + A collection of parameters that impact lightmap and realtime GI computations. + + + + + The maximum number of times to supersample a texel to reduce aliasing. + + + + + The percentage of rays shot from a ray origin that must hit front faces to be considered usable. + + + + + BakedLightmapTag is an integer that affects the assignment to baked lightmaps. Objects with different values for bakedLightmapTag are guaranteed to not be assigned to the same lightmap even if the other baking parameters are the same. + + + + + The radius (in texels) of the post-processing filter that blurs baked direct lighting. + + + + + Controls the resolution at which Enlighten stores and can transfer input light. + + + + + The number of rays used for lights with an area. Allows for accurate soft shadowing. + + + + + Whether pairs of edges should be stitched together. + + + + + The amount of data used for realtime GI texels. Specifies how detailed view of the scene a texel has. Small values mean more averaged out lighting. + + + + + The number of rays to cast for computing irradiance form factors. + + + + + If enabled, the object appears transparent during GlobalIllumination lighting calculations. + + + + + Maximum size of gaps that can be ignored for GI (multiplier on pixel size). + + + + + The texel resolution per meter used for realtime lightmaps. This value is multiplied by LightmapEditorSettings.resolution. + + + + + System tag is an integer identifier. It lets you force an object into a different Enlighten system even though all the other parameters are the same. + + + + + The maximum number of times to supersample a texel to reduce aliasing in AO. + + + + + The number of rays to cast for computing ambient occlusion. + + + + + Allows to control the lightmapping job. + + + + + Delegate which is called when bake job is completed. + + + + + The lightmap baking workflow mode used. Iterative mode is default, but you can switch to on demand mode which bakes only when the user presses the bake button. + + + + + Returns true when the bake job is running, false otherwise (Read Only). + + + + + The lightmap snapshot used by the active scene. + + + + + Stars a synchronous bake job. + + + + + Starts an asynchronous bake job. + + + + + Starts a synchronous bake job, but only bakes light probes. + + + + + Starts an asynchronous bake job, but only bakes light probes. + + + + + Bakes an array of scenes. + + The path of the scenes that should be baked. + + + + Starts a synchronous bake job for the probe. + + Target probe. + The location where cubemap will be saved. + + Returns true if baking was succesful. + + + + + Starts a synchronous bake job for the selected objects. + + + + + Starts an asynchronous bake job for the selected objects. + + + + + Cancels the currently running asynchronous bake job. + + + + + Deletes all lightmap assets and makes all lights behave as if they weren't baked yet. + + + + + Clears the cache used by lightmaps, reflection probes and default reflection. + + + + + Get how many chunks the terrain is divided into for GI baking. + + The terrain. + Number of chunks in terrain width. + Number of chunks in terrain length. + + + + Workflow mode for lightmap baking. Default is Iterative. + + + + + Always run lightmapping, changes to the scene are detected automatically. + + + + + Deprecated 4.x lightmapping support. + + + + + Run lightmapping only when the user presses the bake button. + + + + + Delegate used by Lightmapping.completed callback. + + + + + Calculates a Delaunay Tetrahedralization of the 'positions' point set - the same way the lightmapper. + + + + + + + + A lightmap snapshot holds all baked lighting data. + + + + + LOD Utility Helpers. + + + + + Recalculate the bounding region for the given LODGroup. + + + + + + Mac fullscreen mode. + + + + + Capture the display. + + + + + Fullscreen window. + + + + + Fullscreen window with Dock and Menu bar. + + + + + The Unity Material Editor. + + + + + Is the current material expanded. + + + + + Useful for indenting shader properties that need the same indent as mini texture field. + + + + + Apply initial MaterialPropertyDrawer values. + + + + + + + Apply initial MaterialPropertyDrawer values. + + + + + + + Called when the Editor is woken up. + + + + + Draw a property field for a color shader property. + + Label for the property. + + + + + + Draw a property field for a color shader property. + + Label for the property. + + + + + + Default handling of preview area for materials. + + + + + + + Default toolbar for material preview area. + + + + + Handles UI for one shader property ignoring any custom drawers. + + + + + + + + Handles UI for one shader property ignoring any custom drawers. + + + + + + + + Draw a property field for a float shader property. + + Label for the property. + + + + + + Draw a property field for a float shader property. + + Label for the property. + + + + + + Calculate height needed for the property, ignoring custom drawers. + + + + + + Utility method for GUI layouting ShaderGUI. Used e.g for the rect after a left aligned Color field. + + Field Rect. + + A sub rect of the input Rect. + + + + + Utility method for GUI layouting ShaderGUI. + + Field Rect. + + A sub rect of the input Rect. + + + + + Utility method for GUI layouting ShaderGUI. + + Field Rect. + + A sub rect of the input Rect. + + + + + Get shader property information of the passed materials. + + + + + + Get information about a single shader property. + + Selected materials. + Property name. + Property index. + + + + Get information about a single shader property. + + Selected materials. + Property name. + Property index. + + + + Calculate height needed for the property. + + + + + + + Calculate height needed for the property. + + + + + + + Utility method for GUI layouting ShaderGUI. This is the rect after the label which can be used for multiple properties. The input rect can be fetched by calling: EditorGUILayout.GetControlRect. + + Line Rect. + + A sub rect of the input Rect. + + + + + Utility method for GUI layouting ShaderGUI. + + Field Rect. + + A sub rect of the input Rect. + + + + + Get the value of a given texture offset for a given texture property. + + Name of the texture property that you wish to examine the offset of. + Does the x offset have multiple values? + Does the y offset have multiple values? + + + + Returns the free rect below the label and before the large thumb object field. Is used for e.g. tiling and offset properties. + + The total rect of the texture property. + + + + Get the value of a given texture scale for a given texture property. + + Name of the texture property that you wish to examine the scale of. + Does the x scale have multiple values? + Does the y scale have multiple values? + + + + Can this component be Previewed in its current state? + + + True if this component can be Previewed in its current state. + + + + + Make a help box with a message and button. Returns true, if button was pressed. + + The message text. + The button text. + + Returns true, if button was pressed. + + + + + This function will draw the UI for the lightmap emission property. (None, Realtime, baked) + +See Also: MaterialLightmapFlags. + + + + + This function will draw the UI for the lightmap emission property. (None, Realtime, baked) + +See Also: MaterialLightmapFlags. + + + + + This function will draw the UI for the lightmap emission property. (None, Realtime, baked) + +See Also: MaterialLightmapFlags. + + + + + Called when the editor is disabled, if overridden please call the base OnDisable() to ensure that the material inspector is set up properly. + + + + + Called when the editor is enabled, if overridden please call the base OnEnable() to ensure that the material inspector is set up properly. + + + + + Implement specific MaterialEditor GUI code here. If you want to simply extend the existing editor call the base OnInspectorGUI () before doing any custom GUI code. + + + + + Custom preview for Image component. + + Rectangle in which to draw the preview. + Background image. + + + + Whenever a material property is changed call this function. This will rebuild the inspector and validate the properties. + + + + + Default rendering of shader properties. + + Array of material properties. + + + + Render the standard material properties. This method will either render properties using a IShaderGUI instance if found otherwise it uses PropertiesDefaultGUI. + + + Returns true if any value was changed. + + + + + Draw a range slider for a range shader property. + + Label for the property. + + + + + + Draw a range slider for a range shader property. + + Label for the property. + + + + + + Call this when you change a material property. It will add an undo for the action. + + Undo Label. + + + + Does this edit require to be repainted constantly in its current state? + + + + + Set EditorGUIUtility.fieldWidth and labelWidth to the default values that PropertiesGUI uses. + + + + + Set the shader of the material. + + Shader to set. + Should undo be registered. + + + + + Set the shader of the material. + + Shader to set. + Should undo be registered. + + + + + Set the offset of a given texture property. + + Name of the texture property that you wish to modify the offset of. + Scale to set. + Set the x or y component of the offset (0 for x, 1 for y). + + + + Set the scale of a given texture property. + + Name of the texture property that you wish to modify the scale of. + Scale to set. + Set the x or y component of the scale (0 for x, 1 for y). + + + + Handes UI for one shader property. + + + + + + + + Handes UI for one shader property. + + + + + + + + Checks if particular property has incorrect type of texture specified by the material, displays appropriate warning and suggests the user to automatically fix the problem. + + The texture property to check and display warning for, if necessary. + + + + Draw a property field for a texture shader property. + + Label for the field. + Draw scale / offset. + + + + + + + Draw a property field for a texture shader property. + + Label for the field. + Draw scale / offset. + + + + + + + Draw a property field for a texture shader property. + + Label for the field. + Draw scale / offset. + + + + + + + Draw a property field for a texture shader property. + + Label for the field. + Draw scale / offset. + + + + + + + Draw a property field for a texture shader property. + + Label for the field. + Draw scale / offset. + + + + + + + Draw a property field for a texture shader property that only takes up a single line height. + + Rect that this control should be rendered in. + Label for the field. + + + + Returns total height used by this control. + + + + + Method for showing a texture property control with additional inlined properites. + + The label used for the texture property. + The texture property. + First optional property inlined after the texture property. + Second optional property inlined after the extraProperty1. + + Returns the Rect used. + + + + + Method for showing a texture property control with additional inlined properites. + + The label used for the texture property. + The texture property. + First optional property inlined after the texture property. + Second optional property inlined after the extraProperty1. + + Returns the Rect used. + + + + + Method for showing a texture property control with additional inlined properites. + + The label used for the texture property. + The texture property. + First optional property inlined after the texture property. + Second optional property inlined after the extraProperty1. + + Returns the Rect used. + + + + + Method for showing a compact layout of properties. + + The label used for the texture property. + The texture property. + First extra property inlined after the texture property. + Label for the second extra property (on a new line and indented). + Second property on a new line below the texture. + + Returns the Rect used. + + + + + Method for showing a texture property control with a HDR color field and its color brightness float field. + + The label used for the texture property. + The texture property. + The color property (will be treated as a HDR color). + The HDR color configuration used by the HDR Color Picker. + If false then the alpha channel information will be hidden in the GUI. + + Return the Rect used. + + + + + Draws tiling and offset properties for a texture. + + Rect to draw this control in. + Property to draw. + If this control should be rendered under large texture property control use 'true'. If this control should be shown seperately use 'false'. + + + + Draws tiling and offset properties for a texture. + + Rect to draw this control in. + Property to draw. + If this control should be rendered under large texture property control use 'true'. If this control should be shown seperately use 'false'. + + + + TODO. + + + + + + + + TODO. + + + + + + + + Draw a property field for a vector shader property. + + Label for the field. + + + + + + Draw a property field for a vector shader property. + + Label for the field. + + + + + + Describes information and value of a single shader property. + + + + + Color value of the property. + + + + + Display name of the property (Read Only). + + + + + Flags that control how property is displayed (Read Only). + + + + + Float vaue of the property. + + + + + Does this property have multiple different values? (Read Only) + + + + + Name of the property (Read Only). + + + + + Min/max limits of a ranged float property (Read Only). + + + + + Material objects being edited by this property (Read Only). + + + + + Texture dimension (2D, Cubemap etc.) of the property (Read Only). + + + + + Texture value of the property. + + + + + Type of the property (Read Only). + + + + + Vector value of the property. + + + + + Flags that control how a MaterialProperty is displayed. + + + + + Signifies that values of this property contain High Dynamic Range (HDR) data. + + + + + Do not show the property in the inspector. + + + + + No flags are set. + + + + + Signifies that values of this property contain Normal (normalized vector) data. + + + + + Do not show UV scale/offset fields next to a texture. + + + + + Texture value for this property will be queried from renderer's MaterialPropertyBlock, instead of from the material. This corresponds to the "[PerRendererData]" attribute in front of a property in the shader code. + + + + + Material property type. + + + + + Color property. + + + + + Float property. + + + + + Ranged float (with min/max values) property. + + + + + Texture property. + + + + + Vector property. + + + + + Texture dimension of a property. + + + + + Texture property accepts any texture type. + + + + + Cubemap property. + + + + + No texture type is set. + + + + + Texture2D property. + + + + + Texture3D property. + + + + + Base class to derive custom material property drawers from. + + + + + Apply extra initial values to the material. + + The MaterialProperty to apply values for. + + + + Override this method to specify how tall the GUI for this property is in pixels. + + The MaterialProperty to make the custom GUI for. + The label of this property. + Current material editor. + + + + Override this method to make your own GUI for the property. + + Rectangle on the screen to use for the property GUI. + The MaterialProperty to make the custom GUI for. + The label of this property. + Current material editor. + + + + Menu class to manipulate the menu item. + + + + + Default constructor. + + + + + Get the check status of the given menu. + + + + + + Set the check status of the given menu. + + + + + + + Used to extract the context for a MenuItem. MenuCommand objects are passed to custom menu item functions defined using the MenuItem attribute. + + + + + Context is the object that is the target of a menu command. + + + + + An integer for passing custom information to a menu item. + + + + + Creates a new MenuCommand object. + + + + + + + Creates a new MenuCommand object. + + + + + + The MenuItem attribute allows you to add menu items to the main menu and inspector context menus. + + + + + Creates a menu item and invokes the static function following it, when the menu item is selected. + + + + + + + + Creates a menu item and invokes the static function following it, when the menu item is selected. + + + + + + + Creates a menu item and invokes the static function following it, when the menu item is selected. + + + + + + Various utilities for mesh manipulation. + + + + + Returns the mesh compression setting for a Mesh. + + The mesh to get information on. + + + + Optimizes the mesh for GPU access. + + + + + + Change the mesh compression setting for a mesh. + + The mesh to set the compression mode for. + The compression mode to set. + + + + Will insert per-triangle uv2 in mesh and handle vertex splitting etc. + + + + + + + User message types. + + + + + Error message. + + + + + Info message. + + + + + Neutral message. + + + + + Warning message. + + + + + Compressed texture format for target build platform. + + + + + ASTC texture compression. + + + + + ATI texture compression. Available on devices running Adreno GPU, including HTC Nexus One, Droid Incredible, EVO, and others. + + + + + S3 texture compression, nonspecific to DXT variant. Supported on devices running Nvidia Tegra2 platform, including Motorala Xoom, Motorola Atrix, Droid Bionic, and others. + + + + + ETC1 texture compression (or RGBA16 for textures with alpha), supported by all devices. + + + + + ETC2 texture compression. + + + + + Don't override texture compression. + + + + + PowerVR texture compression. Available in devices running PowerVR SGX530/540 GPU, such as Motorola DROID series; Samsung Galaxy S, Nexus S, and Galaxy Tab; and others. + + + + + Model importer lets you modify import settings from editor scripts. + + + + + Add to imported meshes. + + + + + Animation compression setting. + + + + + Allowed error of animation position compression. + + + + + Allowed error of animation rotation compression. + + + + + Allowed error of animation scale compression. + + + + + Animator generation mode. + + + + + The default wrap mode for the generated animation clips. + + + + + Bake Inverse Kinematics (IK) when importing. + + + + + Animation clips to split animation into. + + + + + Generate a list of all default animation clip based on TakeInfo. + + + + + Animation optimization setting. + + + + + File scale factor (if available) or default one. (Read-only). + + + + + Animation generation options. + + + + + Material generation options. + + + + + Generate secondary UV set for lightmapping. + + + + + Global scale factor for importing. + + + + + The human description that is used to generate an Avatar during the import process. + + + + + Controls how much oversampling is used when importing humanoid animations for retargeting. + + + + + Import animation from file. + + + + + Controls import of BlendShapes. + + + + + Generates the list of all imported take. + + + + + Import materials from file. + + + + + Is Bake Inverse Kinematics (IK) supported by this importer. + + + + + Is FileScale was used when importing. + + + + + Are mesh vertices and indices accessible from script? + + + + + Is import of tangents supported by this importer. + + + + + Is useFileUnits supported for this asset. + + + + + Material naming setting. + + + + + Existing material search setting. + + + + + Mesh compression setting. + + + + + The path of the transform used to generation the motion of the animation. + + + + + Normals import mode. + + + + + Smoothing angle (in degrees) for calculating normals. + + + + + Animation optimization setting. + + + + + Vertex optimization setting. + + + + + Generates the list of all imported Animations. + + + + + Threshold for angle distortion (in degrees) when generating secondary UV. + + + + + Threshold for area distortion when generating secondary UV. + + + + + Hard angle (in degrees) for generating secondary UV. + + + + + Margin to be left between charts when packing secondary UV. + + + + + Imports the HumanDescription from the given Avatar. + + + + + Should tangents be split across UV seams. + + + + + Swap primary and secondary UV channels when importing. + + + + + Tangents import mode. + + + + + Generates the list of all imported Transforms. + + + + + Detect file units and import as 1FileUnit=1UnityUnit, otherwise it will import as 1cm=1UnityUnit. + + + + + Animation compression options for ModelImporter. + + + + + Perform keyframe reduction. + + + + + Perform keyframe reduction and compression. + + + + + No animation compression. + + + + + Perform keyframe reduction and choose the best animation curve representation at runtime to reduce memory footprint (default). + + + + + Animation mode for ModelImporter. + + + + + Generate a generic animator. + + + + + Generate a human animator. + + + + + Generate a legacy animation type. + + + + + Generate no animation data. + + + + + Animation clips to split animation into. + + + + + Additionnal curves that will be that will be added during the import process. + + + + + Offset to the cycle of a looping animation, if a different time in it is desired to be the start. + + + + + AnimationEvents that will be added during the import process. + + + + + First frame of the clip. + + + + + Keeps the feet aligned with the root transform position. + + + + + Offset to the vertical root position. + + + + + Keeps the vertical position as it is authored in the source file. + + + + + Keeps the vertical position as it is authored in the source file. + + + + + Keeps the vertical position as it is authored in the source file. + + + + + Last frame of the clip. + + + + + Enable to make vertical root motion be baked into the movement of the bones. Disable to make vertical root motion be stored as root motion. + + + + + Enable to make horizontal root motion be baked into the movement of the bones. Disable to make horizontal root motion be stored as root motion. + + + + + Enable to make root rotation be baked into the movement of the bones. Disable to make root rotation be stored as root motion. + + + + + Is the clip a looping animation? + + + + + Enable to make the motion loop seamlessly. + + + + + Enable to make the clip loop. + + + + + Returns true when the source AvatarMask has changed. This only happens when ModelImporterClipAnimation.maskType is set to ClipAnimationMaskType.CopyFromOther +To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource to the desired AvatarMask. + + + + + The AvatarMask used to mask transforms during the import process. + + + + + Define mask type. + + + + + Mirror left and right in this clip. + + + + + Clip name. + + + + + Offset in degrees to the root rotation. + + + + + Take name. + + + + + The wrap mode of the animation. + + + + + Animation generation options for ModelImporter. These options relate to the legacy Animation system, they should only be used when ModelImporter.animationType==ModelImporterAnimationType.Legacy. + + + + + Default animation import mode (All animations are stored in the root object). + + + + + Generate animations in the objects that animate. + + + + + Generate animations in the root objects of the animation package. + + + + + Generate animations in the transform root objects. + + + + + Do not generate animations. + + + + + Material generation options for ModelImporter. + + + + + Do not generate materials. + + + + + Generate a material for each material in the source asset. + + + + + Generate a material for each texture used. + + + + + Humanoid Oversampling available multipliers. + + + + + Default Humanoid Oversampling multiplier = 1 which is equivalent to no oversampling. + + + + + Humanoid Oversampling samples at 2 times the sampling rate found in the imported file. + + + + + Humanoid Oversampling samples at 4 times the sampling rate found in the imported file. + + + + + Humanoid Oversampling samples at 8 times the sampling rate found in the imported file. + + + + + Material naming options for ModelImporter. + + + + + Use a material name of the form <materialName>.mat. + + + + + Use material names in the form <modelFileName>-<materialName>.mat. + + + + + Use material names in the form <textureName>.mat. + + + + + <textureName>.mat or <modelFileName>-<materialName>.mat material name. + + + + + Material search options for ModelImporter. + + + + + Searh in all project. + + + + + Searh in local Materials forlder. + + + + + Recursive-up search in Materials forlders. + + + + + Mesh compression options for ModelImporter. + + + + + High amount of mesh compression. + + + + + Low amount of mesh compression. + + + + + Medium amount of mesh compression. + + + + + No mesh compression (default). + + + + + Animation generation options for ModelImporter. + + + + + Calculate normals/tangents. + + + + + Import normals/tangents from file. + + + + + Strip normals/tangents. + + + + + Representation of Script assets. + + + + + Returns the MonoScript object containing specified MonoBehaviour. + + The MonoBehaviour whose MonoScript should be returned. + + + + Returns the MonoScript object containing specified ScriptableObject. + + The ScriptableObject whose MonoScript should be returned. + + + + Returns the System.Type object of the class implemented by this script. + + + + + Custom mouse cursor shapes used with EditorGUIUtility.AddCursorRect. + + + + + Normal pointer arrow. + + + + + Arrow with the minus symbol next to it. + + + + + Arrow with the plus symbol next to it. + + + + + The current user defined cursor. + + + + + Cursor with an eye and stylized arrow keys for FPS navigation. + + + + + Arrow with a Link badge (for assigning pointers). + + + + + Arrow with the move symbol next to it for the sceneview. + + + + + Cursor with an eye for orbit. + + + + + Cursor with a dragging hand for pan. + + + + + Horizontal resize arrows. + + + + + Resize up-Left for window edges. + + + + + Resize up-right for window edges. + + + + + Vertical resize arrows. + + + + + Arrow with the rotate symbol next to it for the sceneview. + + + + + Arrow with the scale symbol next to it for the sceneview. + + + + + Arrow with small arrows for indicating sliding at number fields. + + + + + Left-Right resize arrows for window splitters. + + + + + Up-Down resize arrows for window splitters. + + + + + Text cursor. + + + + + Cursor with a magnifying glass for zoom. + + + + + AssetImporter for importing MovieTextures. + + + + + Duration of the Movie to be imported in seconds. + + + + + Is this a linear texture or an sRGB texture (Only used when performing linear rendering). + + + + + Quality setting to use when importing the movie. This is a float value from 0 to 1. + + + + + Navigation mesh builder interface. + + + + + Returns true if an asynchronous build is still running. + + + + + Build the Navmesh. + + + + + Build the Navmesh Asyncronously. + + + + + Cancel Navmesh construction. + + + + + Clear all Navmeshes. + + + + + Helper class for constructing displayable names for objects. + + + + + Class name of an object. + + + + + + Drag and drop title for an object. + + + + + + Inspector title for an object. + + + + + + Make a displayable name for a variable. + + + + + + Sets the name of an Object. + + + + + + + Base Class to derive from when creating Custom Previews. + + + + + The object currently being previewed. + + + + + This is the first entry point for Preview Drawing. + + The available area to draw the preview. + + + + Implement this method to show object information on top of the object preview. + + + + + Override this method if you want to change the label of the Preview area. + + + + + Can this component be Previewed in its current state? + + + True if this component can be Previewed in its current state. + + + + + Called when the Preview gets created with the objects being previewed. + + The objects being previewed. + + + + Called to iterate through the targets, this will be used when previewing more than one target. + + + True if there is another target available. + + + + + Implement to create your own interactive custom preview. Interactive custom previews are used in the preview area of the inspector and the object selector. + + Rectangle in which to draw the preview. + Background image. + + + + Implement to create your own custom preview for the preview area of the inspector, primary editor headers and the object selector. + + Rectangle in which to draw the preview. + Background image. + + + + Override this method if you want to show custom controls in the preview header. + + + + + Called to Reset the target before iterating through them. + + + + + Where is the tool handle placed. + + + + + The tool handle is at the graphical center of the selection. + + + + + The tool handle is on the pivot point of the active object. + + + + + How is the tool handle oriented. + + + + + The tool handle is aligned along the global axes. + + + + + The tool handle is oriented from the active object. + + + + + Player Settings is where you define various parameters for the final game that you will build in Unity. Some of these values are used in the Resolution Dialog that launches when you open a standalone game. + + + + + Accelerometer update frequency. + + + + + Sets the crash behavior on .NET unhandled exception. + + + + + Is the advanced version being used? + + + + + Is auto-rotation to landscape left supported? + + + + + Is auto-rotation to landscape right supported? + + + + + Is auto-rotation to portrait supported? + + + + + Is auto-rotation to portrait upside-down supported? + + + + + Additional AOT compilation options. Shared by AOT platforms. + + + + + .NET API compatibility level. + + + + + Pre bake collision meshes on player build. + + + + + Application bundle identifier shared between iOS & Android platforms. + + + + + Application bundle version shared between iOS & Android platforms. + + + + + Defines if fullscreen games should darken secondary displays. + + + + + A unique cloud project identifier. It is unique for every project (Read Only). + + + + + Set the color space for the current project. + + + + + The name of your company. + + + + + Define how to handle fullscreen mode in Windows standalones (Direct3D 11 mode). + + + + + Define how to handle fullscreen mode in Windows standalones (Direct3D 9 mode). + + + + + Default screen orientation for mobiles. + + + + + If enabled, the game will default to fullscreen mode. + + + + + Default vertical dimension of stand-alone player window. + + + + + Default horizontal dimension of stand-alone player window. + + + + + Default vertical dimension of web player window. + + + + + Default horizontal dimension of web player window. + + + + + Defines the behaviour of the Resolution Dialog on product launch. + + + + + Enables CrashReport API. + + + + + Enables internal profiler. + + + + + First level to have access to all Resources.Load assets in Streamed Web Players. + + + + + Restrict standalone players to a single concurrent running instance. + + + + + Enable GPU skinning on capable platforms. + + + + + The bundle identifier of the iPhone application. + + + + + Password for the key used for signing an Android application. + + + + + Password used for interacting with the Android Keystore. + + + + + Describes the reason for access to the user's location data. + + + + + Are ObjC uncaught exceptions logged? + + + + + Define how to handle fullscreen mode in Mac OS X standalones. + + + + + The name of your product. + + + + + Which rendering path is enabled? + + + + + Use resizable window in standalone player builds. + + + + + The image to display in the Resolution Dialog window. + + + + + If enabled, your game will continue to run after lost focus. + + + + + Should the builtin Unity splash screen be shown? + + + + + Should status bar be hidden. Shared between iOS & Android platforms. + + + + + Should player render in stereoscopic 3d on supported hardware? + + + + + Remove unused Engine code from your build (IL2CPP-only). + + + + + Managed code stripping level. + + + + + Should unused Mesh components be excluded from game build? + + + + + iOS Graphics API. + + + + + 32-bit Display Buffer is used. + + + + + Let the OS autorotate the screen as the device orientation changes. + + + + + Should Direct3D 11 be used when available? + + + + + Enable receipt validation for the Mac App Store. + + + + + Write a log file with debugging information. + + + + + Enable virtual reality support. + + + + + On Windows, show the application in the background if Fullscreen Windowed mode is used. + + + + + Xbox 360 Kinect Head Orientation file deployment. + + + + + Xbox 360 Kinect Head Position file deployment. + + + + + Xbox 360 Kinect resource file deployment. + + + + + Xbox 360 Avatars. + + + + + Xbox 360 Kinect title flag - if false, the Kinect APIs are inactive. + + + + + Xbox 360 Kinect automatic skeleton tracking. + + + + + Xbox 360 Kinect Enable Speech Engine. + + + + + Xbox 360 auto-generation of _SPAConfig.cs. + + + + + Xbox 360 ImageXex override configuration file path. + + + + + Xbox 360 SPA file path. + + + + + Xbox 360 Kinect Speech DB. + + + + + Xbox 360 splash screen. + + + + + Xbox 360 title id. + + + + + Android specific player settings. + + + + + Publish the build as a game rather than a regular application. This option affects devices running Android 5.0 Lollipop and later + + + + + Provide a build that is Android TV compatible. + + + + + Android bundle version code. + + + + + Disable Depth and Stencil Buffers. + + + + + Force internet permission flag. + + + + + Force SD card permission. + + + + + Android key alias name. + + + + + Android key alias password. + + + + + Android keystore name. + + + + + Android keystore password. + + + + + License verification flag. + + + + + Minimal Android SDK version. + + + + + Preferred application install location. + + + + + Application should show ActivityIndicator when loading. + + + + + Android splash screen scale mode. + + + + + Android target device. + + + + + 24-bit Depth Buffer is used. + + + + + Use APK Expansion Files. + + + + + BlackBerry specific player settings. + + + + + The keystore password used when communicating with BlackBerry. + + + + + The address used when accessing the device. + + + + + The password used when accessing the device. + + + + + The file system path that the device log will be saved to when it is downloaded. + + + + + The plaintext name of the author that is associated with the application. + + + + + The date in which the debug token is set to expire. + + + + + File system path to the debug token that the editor is currently sourcing. + + + + + Returns true when camera access has been requested in the player settings. + + + + + Returns true when GPS permission has been requested in the player settings. + + + + + Returns true when access the device's Unique identifier has been requested. + + + + + Returns true if microphone access has been requested in player settings. + + + + + Returns true if shared permissions are requested in player settings. + + + + + Enable or disable camera permissions. (Will prompt user for access). + + New permission value. + + + + Enable / Disable access to the device GPS. (Will prompt for user for access). + + New permission value. + + + + Enable / Disable device identification permission. (Will prompt user for access). + + New permission value. + + + + Enable / Disable microphone permission level. (Will prompt user for access). + + New permission value. + + + + Enable Disable access to QNX shared folders (accesible via the rst:/drive). + + New permission value. + + + + Get graphics APIs to be used on a build platform. + + Platform to get APIs for. + + Array of graphics APIs. + + + + + Returns the list of assigned icons for the specified platform. + + + + + + Returns a list of icon sizes for the specified platform. + + + + + + Returns a PlayerSettings named bool property (with an optional build target it should apply to). + + Name of the property. + BuildTarget for which the property should apply (use default value BuildTargetGroup.Unknown to apply to all targets). + + The current value of the property. + + + + + Returns a PlayerSettings named int property (with an optional build target it should apply to). + + Name of the property. + BuildTarget for which the property should apply (use default value BuildTargetGroup.Unknown to apply to all targets). + + The current value of the property. + + + + + Searches for property and assigns it's value to given variable. + + Name of the property. + Variable, to which to store the value of the property, if set. + An optional build target group, to which the property applies. + + True if property was set and it's value assigned to given variable. + + + + + Searches for property and assigns it's value to given variable. + + Name of the property. + Variable, to which to store the value of the property, if set. + An optional build target group, to which the property applies. + + True if property was set and it's value assigned to given variable. + + + + + Searches for property and assigns it's value to given variable. + + Name of the property. + Variable, to which to store the value of the property, if set. + An optional build target group, to which the property applies. + + True if property was set and it's value assigned to given variable. + + + + + Returns a PlayerSettings named string property (with an optional build target it should apply to). + + Name of the property. + BuildTarget for which the property should apply (use default value BuildTargetGroup.Unknown to apply to all targets). + + The current value of the property. + + + + + Get user-specified symbols for script compilation for the given build target group. + + + + + + Is a build platform using automatic graphics API choice? + + Platform to get the flag for. + + Should best available graphics API be used. + + + + + Returns whether or not the specified aspect ratio is enabled. + + + + + + iOS specific player settings. + + + + + Should unsecure HTTP downloads be allowed. + + + + + iOS application display name. + + + + + The build number of the bundle. + + + + + Application should exit when suspended to background. + + + + + Determines iPod playing behavior. + + + + + Icon is prerendered. + + + + + Application requires persistent WiFi. + + + + + Script calling optimization. + + + + + Active iOS SDK version used for build. + + + + + Application should show ActivityIndicator when loading. + + + + + Status bar style. + + + + + Targeted device. + + + + + Deployment minimal version of iOS. + + + + + Targeted resolution. + + + + + Indicates whether application will use On Demand Resources (ODR) API. + + + + + Is multi-threaded rendering enabled? + + + + + Nintendo 3DS player settings. + + + + + The unique ID of the application, issued by Nintendo. (0x00300 -> 0xf7fff) + + + + + Specify true to enable static memory compression or false to disable it. + + + + + Disable depth/stencil buffers, to free up memory. + + + + + Disable sterescopic (3D) view on the upper screen. + + + + + Enable shared L/R command list, for increased performance with stereoscopic rendering. + + + + + Enable vsync. + + + + + Specify the expanded save data number using 20 bits. + + + + + Application Logo Style. + + + + + Distribution media size. + + + + + Specifies the product code, or the add-on content code. + + + + + Specifies the title region settings. + + + + + Specify the stack size of the main thread, in bytes. + + + + + The 3DS target platform. + + + + + The title of the application. + + + + + Specify true when using expanded save data. + + + + + Nintendo 3DS logo style specification. + + + + + For Chinese region titles. + + + + + For titles for which Nintendo purchased the publishing license from the software manufacturer, etc. + + + + + For all other titles. + + + + + For Nintendo first-party titles. + + + + + Nintendo 3DS distribution media size. + + + + + 128MB + + + + + 1GB + + + + + 256MB + + + + + 2GB + + + + + 512MB + + + + + Nintendo 3DS Title region. + + + + + For all regions. + + + + + For the American region. + + + + + For the Chinese region. + + + + + For the European region. + + + + + For the Japanese region. + + + + + For the Korean region. + + + + + For the Taiwanese region. + + + + + Nintendo 3DS target platform. + + + + + Target the New Nintendo 3DS platform. + + + + + Target the Nintendo 3DS platform. + + + + + PS3 specific player settings. + + + + + backgroundPath + + + + + bootCheckMaxSaveGameSizeKB + + + + + dlcConfigPath + + + + + npAgeRating + + + + + npCommunicationPassphrase + + + + + npTrophyCommId + + + + + npTrophyCommSig + + + + + npTrophyPackagePath + + + + + Texture to use for PS3 Splash Screen on boot. + + + + + saveGameSlots + + + + + soundPath + + + + + thumbnailPath + + + + + titleConfigPath + + + + + TrialMode. + + + + + Amount of video memory (in MB) to use as audio storage. + + + + + The amount of video memory (in MB) that is set aside for vertex data allocations. Allocations which do not fit into the area are allocated from system memory. + + + + + DisableDolbyEncoding + + + + + EnableMoveSupport + + + + + Toggle for verbose memory statistics. + + + + + UseSPUForUmbra + + + + + Player Settings for the PlayStation®4. + + + + + User-defined parameter 1. + + + + + User-defined parameter 2. + + + + + User-defined parameter 3. + + + + + User-defined parameter 4. + + + + + PS4 package application type. + + + + + The PS4 application version. + + + + + Enables .SFO attribute 3DSupport. + + + + + Enables .SFO attribute MoveSupport. + + + + + Enables .SFO attribute ShareSupport. + + + + + Enables .SFO attribute UserManagement. + + + + + The number of virtual speakers to mix to for use with the Audio3dOut backend. + + + + + The package build category. + + + + + The applications content ID. + + + + + HDD Size to allocate for downloadData. (Kb) + + + + + Choice of controller button to be used as enter. + + + + + Initial heap size for Garlic (GPU) memory. + + + + + List of paths to include SDK modules. + + + + + PS4 content master version. + + + + + PS4 Mono and .NET runtime environment variables. + + + + + PSN Age rating. + + + + + PS4 TitleSecret value. + + + + + Path specifying where to copy a trophy pack from. + + + + + Path specifying where to copy the package parameter file (param.sfx) from. + + + + + PS4 parental level. + + + + + Package passcode. + + + + + Enables PlayerPrefs support using PS4 SDK SaveDataMemory system. + + + + + PS4 NPToolkit friends push notifications. + + + + + PS4 NPToolkit game custom data push notifications. + + + + + PS4 NPToolkit presence push notifications. + + + + + PS4 NPToolkit sessions push notifications. + + + + + Remote Play key assignment. + + + + + Remote Play key mapping images folder. + + + + + If we should use reprojection when running in VR mode with Project Morpheus. + + + + + True to use the Sony Audio3dOut backend libs otherwise it will use the default AudioOut backend. + + + + + PS4 video output format. + + + + + PS4 video output resolution. + + + + + Background image path. + + + + + Path the background music used by package. + + + + + Path to nptitle.dat. + + + + + Path to image used on share screen to mask parts of the display. + + + + + Path to pronunciation.sig file. + + + + + Path to pronunciation.xml file. + + + + + PS4 application category. + + + + + Application. + + + + + PS4 enter button assignment. + + + + + Circle button. + + + + + Cross button. + + + + + Remote Play key assignment. + + + + + No Remote play key assignment. + + + + + Remote Play key layout configuration A. + + + + + Remote Play key layout configuration B. + + + + + Remote Play key layout configuration C. + + + + + Remote Play key layout configuration D. + + + + + Remote Play key layout configuration E. + + + + + Remote Play key layout configuration F. + + + + + Remote Play key layout configuration G. + + + + + Remote Play key layout configuration H. + + + + + Save Data Image path. + + + + + Folder containing PS4 SDK. + + + + + Path to the share parameter file, as generated by the share file editor. + + + + + Path to file used for share screen overlay. + + + + + Startup Image path. + + + + + PS Vita specific player settings. + + + + + Aquire PS Vita background music. + + + + + The PS Vita application version. + + + + + The package build category. + + + + + The applications content ID. + + + + + PS Vita DRM Type. + + + + + Specifies whether circle or cross will be used as the default enter button. + + + + + Specifies whether or not a health warning will be added to the software manual. + + + + + Specifies the color of the PS Vita information bar, true = white, false = black. + + + + + Specifies whether or not to show the PS Vita information bar when the application starts. + + + + + Keystone file. + + + + + PS Vita Live area background image. + + + + + PS Vita Live area gate image. + + + + + PS Vita Live area path. + + + + + PS Vita Live area trial path. + + + + + PS Vita sofware manual. + + + + + PS Vita content master version. + + + + + Should always = 01.00. + + + + + PS Vita memory expansion mode. + + + + + PSN Age rating. + + + + + PS Vita NP Passphrase. + + + + + PS Vita NP Signature. + + + + + PS Vita NP Communications ID. + + + + + Support Game Boot Message or Game Joining Presence. + + + + + PS Vita NP Title Data File. + + + + + Path specifying wher to copy a trophy pack from. + + + + + 32 character password for use if you want to access the contents of a package. + + + + + Path specifying where to copy the package parameter file (param.sfx) from. + + + + + PS Vita parental level. + + + + + For cumlative patch packages. + + + + + For building cumulative patch packages. + + + + + PS Vita power mode. + + + + + Save data quota. + + + + + The applications short title. + + + + + PS Vita media type. + + + + + PS Vita TV boot mode. + + + + + PS Vita TV Disable Emu flag. + + + + + Indicates that this is an upgradable (trial) type application which can be converted to a full application by purchasing an upgrade. + + + + + Indicates that the application makes use of libLocation. + + + + + Allow Twitter Dialog. + + + + + Application package category enum. + + + + + An application package. + + + + + Application patch package. + + + + + DRM type enum. + + + + + Free content. + + + + + Paid for content. + + + + + Enter button assignment enum. + + + + + Circle button. + + + + + Cross button. + + + + + Default. + + + + + Memory expansion mode enum. + + + + + Enable 29MB memory expansion mode. + + + + + Enable 77MB memory expansion mode. + + + + + Memory expansion disabled. + + + + + Power mode enum. + + + + + Mode A - default. + + + + + Mode B - GPU High - No WLAN or COM. + + + + + Mode C - GPU High - No Camera, OLED Low brightness. + + + + + PS Vita TV boot mode enum. + + + + + Default (Managed by System Software) (SCEE or SCEA). + + + + + PS Vita Bootable, PS Vita TV Bootable (SCEJ or SCE Asia). + + + + + PS Vita Bootable, PS Vita TV Not Bootable (SCEJ or SCE Asia). + + + + + Samsung Smart TV specific Player Settings. + + + + + The address used when accessing the device. + + + + + Author of the created product. + + + + + Product author's e-mail. + + + + + The category of the created product. + + + + + The description of the created product. + + + + + The author's website link. + + + + + Types of available product categories. + + + + + The education category. + + + + + The games category (default). + + + + + The information category. + + + + + The kids category. + + + + + The lifestyle category. + + + + + The sports category. + + + + + The videos category. + + + + + Enables the specified aspect ratio. + + + + + + + Set graphics APIs to be used on a build platform. + + Platform to set APIs for. + Array of graphics APIs. + + + + Assign a list of icons for the specified platform. + + + + + + + Sets a PlayerSettings named bool property. + + Name of the property. + Value of the property (bool). + BuildTarget for which the property should apply (use default value BuildTargetGroup.Unknown to apply to all targets). + + + + Sets a PlayerSettings named int property. + + Name of the property. + Value of the property (int). + BuildTarget for which the property should apply (use default value BuildTargetGroup.Unknown to apply to all targets). + + + + Sets a PlayerSettings named string property. + + Name of the property. + Value of the property (string). + BuildTarget for which the property should apply (use default value BuildTargetGroup.Unknown to apply to all targets). + + + + Set user-specified symbols for script compilation for the given build target group. + + + + + + + Should a build platform use automatic graphics API choice. + + Platform to set the flag for. + Should best available graphics API be used? + + + + Tizen specific player settings. + + + + + Description of your project to be displayed in the Tizen Store. + + + + + URL of your project to be displayed in the Tizen Store. + + + + + Name of the security profile to code sign Tizen applications with. + + + + + Tizen application capabilities. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Wii U specific player settings. + + + + + Account's size in kiB for BOSS. + + + + + Account's size in kiB for SAVE. + + + + + Unique IDs of Add-ons. + + + + + Allow screen capture during gameplay. + + + + + Common account's size in kiB for BOSS. + + + + + Common account's size in kiB for SAVE. + + + + + Max number of supported Wii controllers. + + + + + GamePad's MSAA quality. + + + + + Image displayed on GamePad during startup. + + + + + Group ID. + + + + + Join-in game ID (game server ID) provided by Nintendo. + + + + + Join-in game mode mask. + + + + + Stack size for the loader thread in kilobytes. + + + + + Stack size for the main thread in kilobytes. + + + + + OLV access key provided by Nintendo. + + + + + Path to CPU profiler library that should be passed to linker. + + + + + Is Balance Board is supported? + + + + + Is Classic Controller supported? + + + + + Is Motion Plus extension controller supported? + + + + + Is Nunchuk extension supported? + + + + + Is Pro Controller supported? + + + + + System heap size in kilobytes. + + + + + TIN (Title Identification Number) provided by Nintendo. + + + + + Title ID. + + + + + TV resolution. + + + + + Image displayed on TV during startup. + + + + + Compilation overrides for C# files. + + + + + C# files are compiled using Mono compiler. + + + + + C# files are compiled using Microsoft compiler and .NET Core, you can use Windows Runtime API, but classes implemented in C# files aren't accessible from JS or Boo languages. + + + + + C# files not located in Plugins, Standard Assets, Pro Standard Assets folders are compiled using Microsoft compiler and .NET Core, all other C# files are compiled using Mono compiler. The advantage is that classes implemented in C# are accessible from JS and Boo languages. + + + + + Xbox One Specific Player Settings. + + + + + Add a ProductId to the list of products that can load the content package created from your project. This setting is only available for content packages. + + + + Returns false if the product Id was already in the allowed list. + + + + + Get the list of projects that can load this content package. This setting is only available for content packages. + + + + + Xbox One optional parameter that lets you use a specified Manifest file rather than generated for you. + + + + + Xbox One Content ID to be used in constructing game package. + + + + + A friendly description that can be displayed to users. + + + + + Disabling the kinect frees up additional GPU resources for use. + + + + + Turns on notifications that you are gaining/losing GPU resources. + + + + + (optional override) Location of Xbox One Game OS image file to link into ERA package being created. + + + + + Returns a bool indicating if the given capability is enabled or not. Please see the XDK whitepaper titled "Xbox One Submission Validator" for valid capability names. + + + + + + Get the rating value that is specified in the appxmanifest.xml file for the given ratings board. + + The name of the ratings board that you want the rating value for. + + The current rating level. The meaning of the value depends on the name of the ratings board. The value corresponds to the entries the rating board's drop down menu, top most entry being 0 and each item lower in the list being 1 higher than the previous. + + + + + Get the values for the socket description with the given name. + + The name of the socket description. + The port or port range the socket can use. + The protocol the socket uses. + The allowed usage flags for this socket description. + The name of the device association template. + Mutiplayer requirement setting for the device association template. + The allowed usage flags for the device association template. + + + + Indicates if the game is a standalone game or a content package to an existing game. + + + + + The update granularity the package will be built with. + + + + + Xbox One optional parameter that causes the makepkg process to encrypt the package for performance testing or with final retail encryption. + + + + + Xbox One optional parameter that causes the makepkg process to use your specified layout file rather than generating one for you. Required if working with asset bundles. + + + + + Sets the size of the persistent local storage. + + + + + Xbox One Product ID to use when building a streaming install package. + + + + + Remove a ProductId from the list of products that can load the content package created from your project. This setting is only available for content packages. + + + + + + Remove the socket description with the given name. + + + + + + Xbox One makepkg option. Specifies the Sandbox ID to be used when building a streaming install package. + + + + + The service configuration ID for your title. + + + + + Mark a specific capability as enabled or enabled in the appxmanifest.xml file. Please see the XDK whitepaper titled "Xbox One Submission Validator" for valid capability names. + + The name of the capability to set. + Whether or not to enable the capability. + + + + Set the rating value that is specified in the appxmanifest.xml file. + + The name of the ratings board that you are setting the rating value for. + The new rating level. The meaning of the value depends on the name of the ratings board. The value corresponds to the entries the rating board's drop down menu, top most entry being 0 and each item lower in the list being 1 higher than the previous. + + + + Set the values for the socket description with the given name. + + The name of the socket description. + The port or port range the socket can use. + The protocol the socket uses. + The allowed usage flags for this socket description. + The name of the device association template. + Mutiplayer requirement setting for the device association template. + The allowed usage flags for the device association template. + + + + Get the names of the socket descriptions for the project. + + + + + The TitleID uniquely identifying your title to Xbox Live services. + + + + + Update the value at the given index in the list of products that can load this content package. You can use the PlayerSettings.XboxOne.AllowedProductIds property to get the existing productIds and determine their indexes. + + + + + + + Xbox One makepkg.exe option. Specifies the update key required when building game updates. + + + + + Xbox One Version Identifier used in the Application Manifest. + + + + + Represents plugin importer. + + + + + Is plugin native or managed? Note: C++ libraries with CLR support are treated as native plugins, because Unity cannot load such libraries. You can still access them via P/Invoke. + + + + + Constructor. + + + + + Returns all plugin importers for all platforms. + + + + + Is plugin comptabile with any platform. + + + + + Is plugin compatible with editor. + + + + + Is plugin compatible with specified platform. + + Target platform. + + + + + Is plugin compatible with specified platform. + + Target platform. + + + + + Returns editor specific data for specified key. + + Key value for data. + + + + Returns all plugin importers for specfied platform. + + Target platform. + Name of the target platform. + + + + Returns all plugin importers for specfied platform. + + Target platform. + Name of the target platform. + + + + Get platform specific data. + + Target platform. + Key value for data. + + + + + Get platform specific data. + + Target platform. + Key value for data. + + + + + Set compatiblity with any platform. + + Is plugin compatible with any platform. + + + + Set compatiblity with any editor. + + Is plugin compatible with editor. + + + + Set compatiblity with specified platform. + + Target platform. + Is plugin compatible with specified platform. + Target platform. + + + + Set compatiblity with specified platform. + + Target platform. + Is plugin compatible with specified platform. + Target platform. + + + + Set editor specific data. + + Key value for data. + Data. + + + + Set platform specific data. + + Target platform. + Key value for data. + Data. + + + + + Set platform specific data. + + Target platform. + Key value for data. + Data. + + + + + Class used to display popup windows that inherit from PopupWindowContent. + + + + + Show a popup with the given PopupWindowContent. + + The rect of the button that opens the popup. + The content to show in the popup window. + + + + Class used to implement content for a popup window. + + + + + The EditorWindow that contains the popup content. + + + + + The size of the popup window. + + + + + Callback when the popup window is closed. + + + + + Callback for drawing GUI controls for the popup window. + + The rectangle to draw the GUI inside. + + + + Callback when the popup window is opened. + + + + + The type of a prefab object as returned by EditorUtility.GetPrefabType. + + + + + The object is an instance of an imported 3D model, but the connection is broken. + + + + + The object is an instance of a user created prefab, but the connection is broken. + + + + + The object was an instance of a prefab, but the original prefab could not be found. + + + + + The object is an imported 3D model asset. + + + + + The object is an instance of an imported 3D model. + + + + + The object is not a prefab nor an instance of a prefab. + + + + + The object is a user created prefab asset. + + + + + The object is an instance of a user created prefab. + + + + + Utility class for any prefab related operations. + + + + + Called after prefab instances in the scene have been updated. + + + + + Creates an empty prefab at given path. + + + + + + Creates a prefab from a game object hierarchy. + + + + + + + + Creates a prefab from a game object hierarchy. + + + + + + + + Disconnects the prefab instance from its parent prefab. + + + + + + Helper function to find the prefab root of an object (used for picking niceness). + + + + + + Returns the topmost game object that has the same prefab parent as target. + + + + + + Returns root game object of the prefab instance if that root prefab instance is a parent of the prefab. + + + + + + Retrieves the enclosing prefab for any object contained within. + + An object contained within a prefab object. + + The prefab the object is contained in. + + + + + Returns the parent asset object of source, or null if it can't be found. + + + + + + Given an object, returns its prefab type (None, if it's not a prefab). + + + + + + Extract all modifications that are applied to the prefab instance compared to the parent prefab. + + + + + + Instantiate an asset that is referenced by a prefab and use it on the prefab instance. + + + + + + Instantiates the given prefab. + + + + + + Force re-merging all prefab instances of this prefab. + + + + + + Delegate for method that is called after prefab instances in the scene have been updated. + + + + + + Connects the game object to the prefab that it was last connected to. + + + + + + Force record property modifications by comparing against the parent prefab. + + + + + + Replaces the targetPrefab with a copy of the game object hierarchy go. + + + + + + + + Replaces the targetPrefab with a copy of the game object hierarchy go. + + + + + + + + Resets the properties of the component or game object to the parent prefab state. + + + + + + Resets the properties of all objects in the prefab, including child game objects and components that were added to the prefab instance. + + + + + + Assigns all modifications that are applied to the prefab instance compared to the parent prefab. + + + + + + + The PreferenceItem attribute allows you to add preferences sections to the Preferences Window. + + + + + Creates a section in the Preferences Window called name and invokes the static function following it for the section's GUI. + + + + + + Base class to derive custom property drawers from. Use this to create custom drawers for your own Serializable classes or for script variables with custom PropertyAttributes. + + + + + The PropertyAttribute for the property. Not applicable for custom class drawers. (Read Only) + + + + + The reflection FieldInfo for the member this property represents. (Read Only) + + + + + Override this method to specify how tall the GUI for this field is in pixels. + + The SerializedProperty to make the custom GUI for. + The label of this property. + + The height in pixels. + + + + + Override this method to make your own GUI for the property. + + Rectangle on the screen to use for the property GUI. + The SerializedProperty to make the custom GUI for. + The label of this property. + + + + Defines a single modified property. + + + + + The value being applied when it is a object reference (which can not be represented as a string). + + + + + Property path of the property being modified (Matches as SerializedProperty.propertyPath). + + + + + Object that will be modified. + + + + + The value being applied. + + + + + Type of build to generate. + + + + + Package build for installation on either a dev or test kit. + + + + + Build hosted on a PC, for file serving to a dev or test kit. + + + + + Target PS Vita build type. + + + + + For building a PS Vita package that can be installed on a PS Vita memory card. + + + + + For general development, creates a build stored on the host PC which the Vita reads from. + + + + + Options for removing assets + + + + + Delete the asset without moving it to the trash. + + + + + The asset should be moved to trash. + + + + + Flags for the PrefabUtility.ReplacePrefab function. + + + + + Connects the passed objects to the prefab after uploading the prefab. + + + + + Replaces prefabs by matching pre-existing connections to the prefab. + + + + + Replaces the prefab using name based lookup in the transform hierarchy. + + + + + Resolution dialog setting. + + + + + Never show the resolution dialog. + + + + + Show the resolution dialog on first launch. + + + + + Hide the resolution dialog on first launch. + + + + + Target PS3 or PS4 build type. + + + + + Build a package suited for BluRay Submission. + + + + + Build a package suited for DLC Submission. + + + + + Build package that it's hosted on the PC. + + + + + Derive from this class to create an editor wizard. + + + + + Allows you to set the text shown on the create button of the wizard. + + + + + Allows you to set the error text of the wizard. + + + + + Allows you to set the help text of the wizard. + + + + + Allows you to enable and disable the wizard create button, so that the user can not click it. + + + + + Allows you to set the text shown on the optional other button of the wizard. Leave this parameter out to leave the button out. + + + + + Creates a wizard. + + The title shown at the top of the wizard window. + + The wizard. + + + + + Creates a wizard. + + The title shown at the top of the wizard window. + The text shown on the create button. + The text shown on the optional other button. Leave this parameter out to leave the button out. + + The wizard. + + + + + Creates a wizard. + + The title shown at the top of the wizard window. + The text shown on the create button. + The text shown on the optional other button. Leave this parameter out to leave the button out. + + The wizard. + + + + + Creates a wizard. + + The title shown at the top of the wizard window. + The class implementing the wizard. It has to derive from ScriptableWizard. + The text shown on the create button. + The text shown on the optional other button. Leave this parameter out to leave the button out. + + The wizard. + + + + + Will be called for drawing contents when the ScriptableWizard needs to update its GUI. + + + Returns true if any property has been modified. + + + + + Script call optimization level. + + + + + Script method call overhead decreased at the expense of limited compatibility. + + + + + Default setting. + + + + + Scripting implementation (backend). + + + + + Unity's .NET runtime. + + + + + The standard Mono 2.6 runtime. + + + + + Microsoft's .NET runtime. + + + + + Access to the selection in the editor. + + + + + Returns the active game object. (The one shown in the inspector). + + + + + Returns the instanceID of the actual object selection. Includes prefabs, non-modifyable objects. + + + + + Returns the actual object selection. Includes prefabs, non-modifyable objects. + + + + + Returns the active transform. (The one shown in the inspector). + + + + + Returns the guids of the selected assets. + + + + + Returns the actual game object selection. Includes prefabs, non-modifyable objects. + + + + + The actual unfiltered selection from the Scene returned as instance ids instead of objects. + + + + + The actual unfiltered selection from the Scene. + + + + + Delegate callback triggered when currently active/selected item has changed. + + + + + Returns the top level selection, excluding prefabs. + + + + + Returns whether an object is contained in the current selection. + + + + + + + Returns whether an object is contained in the current selection. + + + + + + + Returns the current selection filtered by type and mode. + + Only objects of this type will be retrieved. + Further options to refine the selection. + + + + Allows for fine grained control of the selection type using the SelectionMode bitmask. + + Options for refining the selection. + + + + SelectionMode can be used to tweak the selection returned by Selection.GetTransforms. + + + + + Only return objects that are assets in the Asset directory. + + + + + Return the selection and all child transforms of the selection. + + + + + If the selection contains folders, also include all assets and subfolders within that folder in the file hierarchy. + + + + + Excludes any objects which shall not be modified. + + + + + Excludes any prefabs from the selection. + + + + + Only return the topmost selected transform. A selected child of another selected transform will be filtered out. + + + + + Return the whole selection. + + + + + Behavior of semantic merge. + + + + + Disable use of semantic merging. + + + + + SerializedObject and SerializedProperty are classes for editing properties on objects in a completely generic way that automatically handles undo and styling UI for prefabs. + + + + + Does the serialized object represents multiple objects due to multi-object editing? (Read Only) + + + + + The inspected object (Read Only). + + + + + The inspected objects (Read Only). + + + + + Apply property modifications. + + + + + Applies property modifications without registering an undo operation. + + + + + Copies a value from a SerializedProperty to the same serialized property on this serialized object. + + + + + + Create SerializedObject for inspected object. + + + + + + Create SerializedObject for inspected object. + + + + + + Find serialized property by name. + + + + + + Get the first serialized property. + + + + + Update hasMultipleDifferentValues cache on the next Update() call. + + + + + Update serialized object's representation. + + + + + Update serialized object's representation, only if the object has been modified since the last call to Update or if it is a script. + + + + + SerializedProperty and SerializedObject are classes for editing properties on objects in a completely generic way that automatically handles undo and styling UI for prefabs. + + + + + Value of a animation curve property. + + + + + The number of elements in the array. If the SerializedObject contains multiple objects it will return the smallest number of elements. So it is always possible to iterate through the SerializedObject and only get properties found in all objects. + + + + + Value of a boolean property. + + + + + Value of bounds property. + + + + + Value of a color property. + + + + + Nesting depth of the property. (Read Only) + + + + + Nice display name of the property. (Read Only) + + + + + Value of a float property as a double. + + + + + Is this property editable? (Read Only) + + + + + Display-friendly names of enumeration of an enum property. + + + + + Names of enumeration of an enum property. + + + + + Enum index of an enum property. + + + + + Value of a float property. + + + + + Does it have child properties? (Read Only) + + + + + Does this property represent multiple different values due to multi-object editing? (Read Only) + + + + + Does it have visible child properties? (Read Only) + + + + + Value of an integer property. + + + + + Is this property an array? (Read Only) + + + + + Is this property expanded in the inspector? + + + + + Is property part of a prefab instance? (Read Only) + + + + + Value of a integer property as a long. + + + + + Name of the property. (Read Only) + + + + + Value of an object reference property. + + + + + Is property's value different from the prefab it belongs to? + + + + + Full path of the property. (Read Only) + + + + + Type of this property (Read Only). + + + + + Value of a quaternion property. + + + + + Value of a rectangle property. + + + + + SerializedObject this property belongs to (Read Only). + + + + + Value of a string property. + + + + + Tooltip of the property. (Read Only) + + + + + Type name of the property. (Read Only) + + + + + Value of a 2D vector property. + + + + + Value of a 3D vector property. + + + + + Value of a 4D vector property. + + + + + Remove all elements from the array. + + + + + Returns a copy of the SerializedProperty iterator in its current state. This is useful if you want to keep a reference to the current property but continue with the iteration. + + + + + Count visible children of this property, including this property itself. + + + + + Count remaining visible properties. + + + + + Delete the element at the specified index in the array. + + + + + + Deletes the serialized property. + + + + + Duplicates the serialized property. + + + + + See if contained serialized properties are equal. + + + + + + + Retrieves the SerializedProperty at a relative path to the current property. + + + + + + Returns the element at the specified index in the array. + + + + + + Retrieves the SerializedProperty that defines the end range of this property. + + + + + + Retrieves the SerializedProperty that defines the end range of this property. + + + + + + Retrieves an iterator that allows you to iterator over the current nexting of a serialized property. + + + + + Insert an empty element at the specified index in the array. + + + + + + Move an array element from srcIndex to dstIndex. + + + + + + + Move to next property. + + + + + + Move to next visible property. + + + + + + Move to first property of the object. + + + + + Type of a SerializedProperty. + + + + + AnimationCurve property. + + + + + Array size property. + + + + + Boolean property. + + + + + Bounds property. + + + + + Character property. + + + + + Color property. + + + + + Enumeration property. + + + + + Float property. + + + + + Gradient property. + + + + + Integer property. + + + + + LayerMask property. + + + + + Reference to another object. + + + + + Quaternion property. + + + + + Rectangle property. + + + + + String property. + + + + + 2D vector property. + + + + + 3D vector property. + + + + + 4D vector property. + + + + + Abstract class to derive from for defining custom GUI for shader properties and for extending the material preview. + + + + + This method is called when a new shader has been selected for a Material. + + The material the newShader should be assigned to. + Previous shader. + New shader to assign to the material. + + + + Find shader properties. + + Name of the material property. + The array of available properties. + If true then this method will throw an exception if a property with propertyName was not found. + + The material property found, otherwise null. + + + + + Find shader properties. + + Name of the material property. + The array of available properties. + If true then this method will throw an exception if a property with propertyName was not found. + + The material property found, otherwise null. + + + + + To define a custom shader GUI use the methods of materialEditor to render controls for the properties array. + + The MaterialEditor that are calling this OnGUI (the 'owner'). + Material properties of the current selected shader. + + + + Override for extending the rendering of the Preview area or completly replace the preview (by not calling base.OnMaterialPreviewGUI). + + The MaterialEditor that are calling this method (the 'owner'). + Preview rect. + Style for the background. + + + + Override for extending the functionality of the toolbar of the preview area or completly replace the toolbar by not calling base.OnMaterialPreviewSettingsGUI. + + The MaterialEditor that are calling this method (the 'owner'). + + + + Utility functions to assist with working with shaders from the editor. + + + + + Does the current hardware support render textues. + + + + + Get the number of properties in Shader s. + + The shader to check against. + + + + Get the description of the shader propery at index propertyIdx of Shader s. + + The shader to check against. + The property index to use. + + + + Get the name of the shader propery at index propertyIdx of Shader s. + + The shader to check against. + The property index to use. + + + + Get the ShaderProperyType of the shader propery at index propertyIdx of Shader s. + + The shader to check against. + The property index to use. + + + + Get Limits for a range property at index propertyIdx of Shader s. + + Which value to get: 0 = default, 1 = min, 2 = max. + The shader to check against. + The property index to use. + + + + Gets the ShaderPropertyTexDim of the texture at property index propertyIdx of Shader s. + + The shader to check against. + The property index to use. + + + + Is the shader propery at index propertyIdx of Shader s hidden? + + The shader to check against. + The property index to use. + + + + Representation of the texture dimensions. + + + + + 2D Texture. + + + + + 3D Texture. + + + + + Any texture dimension (catch all). + + + + + Texure Cube (Cubemap). + + + + + Texture Rect. + + + + + Unknown Texture dimension. + + + + + Type of a given texture property. + + + + + Color Property. + + + + + Float Property. + + + + + Range Property. + + + + + Texture Property. + + + + + Vector Property. + + + + + Structure to hold camera data extracted from a SketchUp file. + + + + + Aspect ratio of the camera. + + + + + Field of view of the camera. + + + + + Indicate if the camera is using a perspective or orthogonal projection. + + + + + The position the camera is looking at. + + + + + The orthogonal projection size of the camera. This value only make sense if SketchUpImportCamera.isPerspective is false. + + + + + The position of the camera. + + + + + Up vector of the camera. + + + + + Derives from AssetImporter to handle importing of SketchUp files. + + + + + Retrieves the latitude Geo Coordinate imported from the SketchUp file. + + + + + Retrieves the longitude Geo Coordinate imported from the SketchUp file. + + + + + Retrieves the north correction value imported from the SketchUp file. + + + + + The default camera or the camera of the active scene which the SketchUp file was saved with. + + + The default camera. + + + + + The method returns an array of SketchUpImportScene which represents SketchUp scenes. + + + Array of scenes extracted from a SketchUp file. + + + + + Structure to hold scene data extracted from a SketchUp file. + + + + + The camera data of the SketchUp scene. + + + + + The name of the SketchUp scene. + + + + + AssetImportor for importing SpeedTree model assets. + + + + + Gets and sets a default alpha test reference values. + + + + + Indicates if the cross-fade LOD transition, applied to the last mesh LOD and the billboard, should be animated. + + + + + Returns the best-possible wind quality on this asset (configured in SpeedTree modeler). + + + + + Proportion of the last 3D mesh LOD region width which is used for cross-fading to billboard tree. + + + + + Gets and sets an array of booleans to enable shadow casting for each LOD. + + + + + Gets and sets an array of booleans to enable normal mapping for each LOD. + + + + + Gets and sets an array of booleans to enable Hue variation effect for each LOD. + + + + + Enables smooth LOD transitions. + + + + + Proportion of the billboard LOD region width which is used for fading out the billboard. + + + + + Tells if there is a billboard LOD. + + + + + Tells if the SPM file has been previously imported. + + + + + Gets and sets a default Hue variation color and amount (in alpha). + + + + + Gets and sets a default main color. + + + + + Returns the folder path where generated materials will be placed in. + + + + + Gets and sets an array of booleans to enable shadow receiving for each LOD. + + + + + Gets and sets an array of Reflection Probe usages for each LOD. + + + + + How much to scale the tree model compared to what is in the .spm file. + + + + + Gets and sets a default Shininess value. + + + + + Gets and sets a default specular color. + + + + + Gets and sets an array of booleans to enable Light Probe lighting for each LOD. + + + + + Gets and sets an array of integers of the wind qualities on each LOD. Values will be clampped by BestWindQuality internally. + + + + + Gets an array of name strings for wind quality value. + + + + + Construct a new SpeedTreeImporter object. + + + + + Generates all necessary materials under materialFolderPath. If Version Control is enabled please first check out the folder. + + + + + Gets and sets an array of floats of each LOD's screen height value. + + + + + Texture importer modes for Sprite import. + + + + + Graphic is not a Sprite. + + + + + Sprite is a single image section extracted automatically from the texture. + + + + + Editor data used in producing a Sprite. + + + + + Edge-relative alignment of the sprite graphic. + + + + + Edge border size for a sprite (in pixels). + + + + + Name of the Sprite. + + + + + Pivot point of the Sprite relative to its bounding rectangle. + + + + + Bounding rectangle of the sprite's graphic within the atlas image. + + + + + Sprite Packer mode for the current project. + + + + + Always maintain an up-to-date sprite atlas cache. + + + + + Updates sprite atlas cache when building player/bundles. + + + + + Doesn't pack sprites. + + + + + Describes the final atlas texture. + + + + + Marks this atlas so that it contains textures that have been flagged for Alpha splitting when needed (for example ETC1 compression for textures with transparency). + + + + + Anisotropic filtering level of the atlas texture. + + + + + Desired color space. + + + + + Quality of atlas texture compression in the range [0..100]. + + + + + Allows Sprite Packer to rotate/flip the Sprite to ensure optimal Packing. + + + + + Filtering mode of the atlas texture. + + + + + The format of the atlas texture. + + + + + Should sprite atlas textures generate mip maps? + + + + + Maximum height of the atlas texture. + + + + + Maximum width of the atlas texture. + + + + + The amount of extra padding between packed sprites. + + + + + Sprite packing policy interface. Provide a custom implementation to control which Sprites go into which atlases. + + + + + Return the version of your policy. Sprite Packer needs to know if atlas grouping logic changed. + + + + + Implement custom atlas grouping here. + + + + + + + + Sprite Packer helpers. + + + + + Array of Sprite atlas names found in the current atlas cache. + + + + + Name of the default Sprite Packer policy. + + + + + Sprite Packer execution mode. + + + + + Will always trigger IPackerPolicy.OnGroupAtlases. + + + + + Normal execution. Will not trigger IPackerPolicy.OnGroupAtlases unless IPackerPolicy, IPackerPolicy version or TextureImporter settings have changed. + + + + + Returns atlasing data for the specified Sprite. + + Sprite to query. + Gets set to the name of the atlas containing the specified Sprite. + Gets set to the Texture containing the specified Sprite. + + + + Returns all atlas textures generated for the specified atlas. + + Atlas name. + + + + Available Sprite Packer policies for this project. + + + + + Rebuilds the Sprite atlas cache. + + + + + + + + The active Sprite Packer policy for this project. + + + + + Current Sprite Packer job definition. + + + + + Registers a new atlas. + + + + + + + Assigns a Sprite to an already registered atlas. + + + + + + + + + Helper utilities for accessing Sprite data. + + + + + Returns the generated Sprite mesh indices. + + If Sprite is packed, it is possible to access data as if it was on the atlas texture. + + + + + Returns the generated Sprite mesh positions. + + If Sprite is packed, it is possible to access data as if it was on the atlas texture. + + + + + Returns the generated Sprite texture. If Sprite is packed, it is possible to query for both source and atlas textures. + + If Sprite is packed, it is possible to access data as if it was on the atlas texture. + + + + + Returns the generated Sprite mesh uvs. + + If Sprite is packed, it is possible to access data as if it was on the atlas texture. + + + + + Static Editor Flags. + + + + + Consider for static batching. + + + + + Considered static for lightmapping. + + + + + Considered static for navigation. + + + + + Considered static for occlusion. + + + + + Considered static for occlusion. + + + + + Auto-generate OffMeshLink. + + + + + Consider static for reflection probe. + + + + + StaticOcclusionCulling lets you perform static occlusion culling operations. + + + + + Does the scene contain any occlusion portals that were added manually rather than automatically? + + + + + Used to check if asynchronous generation of static occlusion culling data is still running. + + + + + Returns the size in bytes that the PVS data is currently taking up in this scene on disk. + + + + + Used to cancel asynchronous generation of static occlusion culling data. + + + + + Clears the PVS of the opened scene. + + + + + Used to generate static occlusion culling data. + + + + + Used to compute static occlusion culling data asynchronously. + + + + + Used to compute static occlusion culling data asynchronously. + + + + + Used to visualize static occlusion culling at development time in scene view. + + + + + If set to true, culling of geometry is enabled. + + + + + If set to true, visualization of target volumes is enabled. + + + + + If set to true, visualization of portals is enabled. + + + + + If set to true, the visualization lines of the PVS volumes will show all cells rather than cells after culling. + + + + + If set to true, visualization of view volumes is enabled. + + + + + If set to true, visualization of portals is enabled. + + + + + Managed code stripping level. + + + + + Managed code stripping is disabled. + + + + + Unused parts of managed code are stripped away. + + + + + Managed method bodies are stripped away. AOT platforms only. + + + + + Lightweight mscorlib version will be used at expense of limited compatibility. + + + + + Class for Substance Archive handling. + + + + + The SubstanceImporter class lets you access the imported ProceduralMaterial instances. + + + + + Clone an existing ProceduralMaterial instance. + + + + + + Destroy an existing ProceduralMaterial instance. + + + + + + Get the ProceduralMaterial animation update rate in millisecond. + + + + + + Check if the ProceduralMaterial needs to force generation of all its outputs. + + + + + + Return true if the mipmaps are generated for this ProceduralMaterial. + + + + + + Get the number of ProceduralMaterial instances. + + + + + Get the material offset, which is used for all the textures that are part of this ProceduralMaterial. + + + + + + Get an array with the ProceduralMaterial instances. + + + + + Get the material scale, which is used for all the textures that are part of this ProceduralMaterial. + + + + + + Get the import settings for a given ProceduralMaterial for a given platform (width and height, RAW/Compressed format, loading behavior). + + The name of the ProceduralMaterial. + The name of the platform (can be empty). + The maximum texture width for this ProceduralMaterial (output value). + The maximum texture height for this ProceduralMaterial (output value). + The texture format (0=Compressed, 1=RAW) for this ProceduralMaterial (output value). + The load behavior for this ProceduralMaterial (output value). +Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. + + + + Get a list of the names of the ProceduralMaterial prototypes in the package. + + + + + Get the alpha source of the given texture in the ProceduralMaterial. + + + + + + + Instantiate a new ProceduralMaterial instance from a prototype. + + + + + + After modifying the shader of a ProceduralMaterial, call this function to apply the changes to the importer. + + + + + + Rename an existing ProceduralMaterial instance. + + + + + + + Reset the ProceduralMaterial to its default values. + + + + + + Set the ProceduralMaterial animation update rate in millisecond. + + + + + + + Specify if the ProceduralMaterial needs to force generation of all its outputs. + + + + + + + Force the generation of mipmaps for this ProceduralMaterial. + + + + + + + Set the material offset, which is used for all the textures that are part of this ProceduralMaterial. + + + + + + + Set the material scale, which is used for all the textures that are part of this ProceduralMaterial. + + + + + + + Set the import settings for the input ProceduralMaterial for the input platform (width and height, RAW/Compressed format, loading behavior). + + The name of the Procedural Material. + The name of the platform (can be empty). + The maximum texture width for this Procedural Material. + The maximum texture height for this Procedural Material. + The texture format (0=Compressed, 1=RAW) for this Procedural Material. + The load behavior for this Procedural Material. +Values match the ProceduralMaterial::ProceduralLoadingBehavior enum. + + + + Set the alpha source of the given texture in the ProceduralMaterial. + + + + + + + + A Takeinfo object contains all the information needed to describe a take. + + + + + Start time in second. + + + + + Stop time in second. + + + + + This is the default clip name for the clip generated for this take. + + + + + Take name as define from imported file. + + + + + Sample rate of the take. + + + + + Start time in second. + + + + + Stop time in second. + + + + + Texture importer lets you modify Texture2D import settings from editor scripts. + + + + + Anisotropic filtering level of the texture. + + + + + Keep texture borders the same when generating mipmaps? + + + + + Quality of Texture Compression in the range [0..100]. + + + + + Convert heightmap to normal map? + + + + + Fade out mip levels to gray color? + + + + + Filtering mode of the texture. + + + + + Cubemap generation mode. + + + + + Should mip maps be generated with gamma correction? + + + + + Generate alpha channel from intensity? + + + + + Amount of bumpyness in the heightmap. + + + + + Is texture data readable from scripts. + + + + + Is this texture a lightmap? + + + + + When in linear rendering should this texture be sampled with hardware gamma correction (sRGB) or without (linear)? + + + + + Maximum texture size. + + + + + Mip map bias of the texture. + + + + + Generate mip maps for the texture? + + + + + Mip level where texture is faded out completely. + + + + + Mip level where texture begins to fade out. + + + + + Mipmap filtering mode. + + + + + Is this texture a normal map? + + + + + Normal map filtering mode. + + + + + Scaling mode for non power of two textures. + + + + + Returns true if this TextureImporter is setup for Sprite packing. + + + + + Border sizes of the generated sprites. + + + + + Selects Single or Manual import mode for Sprite textures. + + + + + Selects the Sprite packing tag. + + + + + The point in the Sprite object's coordinate space where the graphic is located. + + + + + The number of pixels in the sprite that correspond to one unit in world space. + + + + + Scale factor for mapping pixels in the graphic to units in world space. + + + + + Array representing the sections of the atlas corresponding to individual sprite graphics. + + + + + Format of imported texture. + + + + + Which type of texture are we dealing with here. + + + + + Wrap mode (Repeat or Clamp) of the texture. + + + + + Clear specific target platform settings. + + The platform whose settings are to be cleared (see below). + + + + Does textures source image have alpha channel. + + + + + Does textures source image have RGB channels. + + + + + Getter for the flag that allows Alpha splitting on the imported texture when needed (for example ETC1 compression for textures with transparency). + + + True if the importer allows alpha split on the imported texture, False otherwise. + + + + + Get platform specific texture settings. + + The platform whose settings are required (see below). + Maximum texture width/height in pixels. + Data format of the texture. + Value from 0..100, equivalent to the standard JPEG quality setting. + + + + Get platform specific texture settings. + + The platform whose settings are required (see below). + Maximum texture width/height in pixels. + Data format of the texture. + + + + Reads the active texture output instructions of this TextureImporter. + + + + + Read texture settings into TextureImporterSettings class. + + + + + + Setter for the flag that allows Alpha splitting on the imported texture when needed (for example ETC1 compression for textures with transparency). + + + + + + Set specific target platform settings. + + The platforms whose settings are to be changed (see below). + Maximum texture width/height in pixels. + Data format for the texture. + Value from 0..100, equivalent to the standard JPEG quality setting. + Allows splitting of imported texture into RGB+A so that ETC1 compression can be applied (Android only, and works only on textures that are a part of some atlas). + + + + Set specific target platform settings. + + The platforms whose settings are to be changed (see below). + Maximum texture width/height in pixels. + Data format for the texture. + Value from 0..100, equivalent to the standard JPEG quality setting. + Allows splitting of imported texture into RGB+A so that ETC1 compression can be applied (Android only, and works only on textures that are a part of some atlas). + + + + Set texture importers settings from TextureImporterSettings class. + + + + + + Defines Cubemap convolution mode. + + + + + Diffuse convolution (aka irradiance Cubemap). + + + + + No convolution needed. This Cubemap texture represents mirror reflection or Skybox. + + + + + Specular convolution (aka Prefiltered Environment Map). + + + + + Imported texture format for TextureImporter. + + + + + Alpha 8 bit texture format. + + + + + RGBA 16 bit texture format. + + + + + ARGB 32 bit texture format. + + + + + ASTC compressed RGB texture format, 10x10 block size. + + + + + ASTC compressed RGB texture format, 12x12 block size. + + + + + ASTC compressed RGB texture format, 4x4 block size. + + + + + ASTC compressed RGB texture format, 5x5 block size. + + + + + ASTC compressed RGB texture format, 6x6 block size. + + + + + ASTC compressed RGB texture format, 8x8 block size. + + + + + ASTC compressed RGBA texture format, 10x10 block size. + + + + + ASTC compressed RGBA texture format, 12x12 block size. + + + + + ASTC compressed RGBA texture format, 4x4 block size. + + + + + ASTC compressed RGBA texture format, 5x5 block size. + + + + + ASTC compressed RGBA texture format, 6x6 block size. + + + + + ASTC compressed RGBA texture format, 8x8 block size. + + + + + ATC (Android) 4 bits/pixel compressed RGB texture format. + + + + + ATC (Android) 8 bits/pixel compressed RGBA texture format. + + + + + Choose a 16 bit format automatically. + + + + + Choose a compressed format automatically. + + + + + Choose a crunched format automatically. + + + + + Choose a Truecolor format automatically. + + + + + DXT1 compresed texture format. + + + + + DXT1 compresed texture format with crunch compression for small storage sizes. + + + + + DXT5 compresed texture format. + + + + + DXT5 compresed texture format with crunch compression for small storage sizes. + + + + + ETC2EAC compressed 4 bits pixel unsigned R texture format. + + + + + ETC2EAC compressed 4 bits pixel signed R texture format. + + + + + ETC2EAC compressed 8 bits pixel unsigned RG texture format. + + + + + ETC2EAC compressed 4 bits pixel signed RG texture format. + + + + + ETC (GLES2.0) 4 bits/pixel compressed RGB texture format. + + + + + ETC2 compressed 4 bits / pixel RGB texture format. + + + + + ETC2 compressed 4 bits / pixel RGB + 1-bit alpha texture format. + + + + + ETC2 compressed 8 bits / pixel RGBA texture format. + + + + + PowerVR (iPhone) 2 bits/pixel compressed color texture format. + + + + + PowerVR (iPhone) 4 bits/pixel compressed color texture format. + + + + + PowerVR (iPhone) 2 bits/pixel compressed with alpha channel texture format. + + + + + PowerVR (iPhone) 4 bits/pixel compressed with alpha channel texture format. + + + + + RGB 16 bit texture format. + + + + + RGB 24 bit texture format. + + + + + RGBA 16 bit (4444) texture format. + + + + + RGBA 32 bit texture format. + + + + + Cubemap generation mode for TextureImporter. + + + + + Automatically determine type of cubemap generation from the source image. + + + + + Generate cubemap from cylindrical texture. + + + + + Generate cubemap from vertical or horizontal cross texture. + + + + + Do not generate cubemap (default). + + + + + Generate cubemap from spheremap texture. + + + + + Mip map filter for TextureImporter. + + + + + Box mipmap filter. + + + + + Kaiser mipmap filter. + + + + + Normal map filtering mode for TextureImporter. + + + + + Sobel normal map filter. + + + + + Standard normal map filter. + + + + + Scaling mode for non power of two textures in TextureImporter. + + + + + Keep non power of two textures as is. + + + + + Scale to larger power of two. + + + + + Scale to nearest power of two. + + + + + Scale to smaller power of two. + + + + + RGBM encoding mode for HDR textures in TextureImporter. + + + + + Do RGBM encoding when source data is HDR in TextureImporter. + + + + + Source texture is already RGBM encoded in TextureImporter. + + + + + Do not perform RGBM encoding in TextureImporter. + + + + + Do RGBM encoding in TextureImporter. + + + + + Stores settings of a TextureImporter. + + + + + Allow Alpha splitting on the imported texture when needed (for example ETC1 compression for textures with transparency). + + + + + Convolution mode. + + + + + Defines how fast Phong exponent wears off in mip maps. Higher value will apply less blur to high resolution mip maps. + + + + + Defines how many different Phong exponents to store in mip maps. Higher value will give better transition between glossy and rough reflections, but will need higher texture resolution. + + + + + RGBM encoding mode for HDR textures in TextureImporter. + + + + + Edge-relative alignment of the sprite graphic. + + + + + Border sizes of the generated sprites. + + + + + The number of blank pixels to leave between the edge of the graphic and the mesh. + + + + + Sprite texture import mode. + + + + + Pivot point of the Sprite relative to its graphic's rectangle. + + + + + The number of pixels in the sprite that correspond to one unit in world space. + + + + + Scale factor between pixels in the sprite graphic and world space units. + + + + + Configure parameters to import a texture for a purpose of type, as described TextureImporterType|here. + + Texture type. See TextureImporterType. + If false, change only specific properties. Exactly which, depends on type. + + + + Copy parameters into another TextureImporterSettings object. + + TextureImporterSettings object to copy settings to. + + + + Test texture importer settings for equality. + + + + + + + Select this to set basic parameters depending on the purpose of your texture. + + + + + Select this when you want to have specific parameters on your texture and you want to have total control over your texture. + + + + + Select this to turn the color channels into a format suitable for real-time normal mapping. + + + + + This sets up your texture with the basic parameters used for the Cookies of your lights. + + + + + This converts your texture into Cubemap suitable for Skyboxes, Environment Reflections or Image Based Lighting (IBL). + + + + + Use this if your texture is going to be used as a cursor. + + + + + Use this if your texture is going to be used on any HUD/GUI Controls. + + + + + This is the most common setting used for all the textures in general. + + + + + This sets up your texture with the parameters used by the lightmap. + + + + + Select this if you will be using your texture for Sprite graphics. + + + + + Which tool is active in the editor. + + + + + The move tool is active. + + + + + No tool is active. Set this to implement your own in-inspector toolbar (like the terrain editor does). + + + + + The rect tool is active. + + + + + The rotate tool is active. + + + + + The scale tool is active. + + + + + The view tool is active - Use Tools.viewTool to find out which view tool we're talking about. + + + + + Class used to manipulate the tools used in Unity's Scene View. + + + + + The tool that is currently selected for the Scene View. + + + + + The position of the tool handle in world space. + + + + + The rectangle used for the rect tool. + + + + + The rotation of the rect tool handle in world space. + + + + + The rotation of the tool handle in world space. + + + + + Hides the Tools(Move, Rotate, Resize) on the Scene view. + + + + + Are we in Center or Pivot mode. + + + + + What's the rotation of the tool handle. + + + + + Is the rect handle in blueprint mode? + + + + + The option that is currently active for the View tool in the Scene view. + + + + + Which layers are visible in the scene view. + + + + + Is the default sorting method used by the hierarchy. + + + + + Content to visualize the transform sorting method. + + + + + AssetImporter for importing Fonts. + + + + + Border pixels added to character images for padding. This is useful if you want to render text using a shader which needs to render outside of the character area (like an outline shader). + + + + + Spacing between character images in the generated texture in pixels. This is useful if you want to render text using a shader which samples pixels outside of the character area (like an outline shader). + + + + + A custom set of characters to be included in the Font Texture. + + + + + An array of font names, to be used when includeFontData is set to false. + + + + + References to other fonts to be used looking for fallbacks. + + + + + Font rendering mode to use for this font. + + + + + Font size to use for importing the characters. + + + + + Use this to adjust which characters should be imported. + + + + + The internal font name of the TTF file. + + + + + If this is enabled, the actual font will be embedded into the asset for Dynamic fonts. + + + + + Create an editable copy of the font asset at path. + + + + + + Default mobile device orientation. + + + + + Auto Rotation Enabled. + + + + + Landscape : counter-clockwise from Portrait. + + + + + Landscape: clockwise from Portrait. + + + + + Portrait. + + + + + Portrait upside down. + + + + + Lets you register undo operations on specific objects you are about to perform changes on. + + + + + Callback that is triggered after an undo or redo was executed. + + + + + Invoked before the Undo system performs a flush. + + + + + Adds a component to the game object and registers an undo operation for this action. + + The game object you want to add the component to. + The type of component you want to add. + + The newly added component. + + + + + Generic version. + + The game object you want to add the component to. + + The newly added component. + + + + + Removes all Undo operation for the identifier object registered using Undo.RegisterCompleteObjectUndo from the undo stack. + + + + + + Collapses all undo operation up to group index together into one step. + + + + + + Destroys the object and records an undo operation so that it can be recreated. + + The object that will be destroyed. + + + + Ensure objects recorded using RecordObject or ::ref:RecordObjects are registered as an undoable action. In most cases there is no reason to invoke FlushUndoRecordObjects since it's automatically done right after mouse-up and certain other events that conventionally marks the end of an action. + + + + + Unity automatically groups undo operations by the current group index. + + + + + Get the name that will be shown in the UI for the current undo group. + + + Name of the current group or an empty string if the current group is empty. + + + + + Unity automatically groups undo operations by the current group index. + + + + + Perform an Redo operation. + + + + + Perform an Undo operation. + + + + + Records any changes done on the object after the RecordObject function. + + + + + + + Records multiple undoable objects in a single call. This is the same as calling Undo.RecordObject multiple times. + + + + + + + Stores a copy of the object states on the undo stack. + + The object whose state changes need to be undone. + The name of the undo operation. + + + + This is equivalent to calling the first overload mutiple times, save for the fact that only one undo operation will be generated for this one. + + An array of objects whose state changes need to be undone. + The name of the undo operation. + + + + Register an undo operations for a newly created object. + + The object that was created. + The name of the action to undo. Think "Undo ...." in the main menu. + + + + Copy the states of a hierarchy of objects onto the undo stack. + + The object used to determine a hierarchy of objects whose state changes need to be undone. + The name of the undo operation. + + + + This overload is deprecated. Use Undo.RegisterFullObjectHierarchyUndo(Object, string) instead. + + + + + + Performs all undo operations up to the group index without storing a redo operation in the process. + + + + + + Performs the last undo operation but does not record a redo operation. + + + + + Set the name of the current undo group. + + New name of the current undo group. + + + + Sets the parent of transform to the new parent and records an undo operation. + + + + + + + + Delegate used for undoRedoPerformed. + + + + + Delegate used for willFlushUndoRecord. + + + + + See Also: Undo.postprocessModifications. + + + + + Unwrapping settings. + + + + + Maximum allowed angle distortion (0..1). + + + + + Maximum allowed area distortion (0..1). + + + + + This angle (in degrees) or greater between triangles will cause seam to be created. + + + + + How much uv-islands will be padded. + + + + + Will set default values for params. + + + + + + This class holds everything you may need in regard to uv-unwrapping. + + + + + Will generate per-triangle uv (3 uv pairs for each triangle) with default settings. + + + + + + Will generate per-triangle uv (3 uv pairs for each triangle) with provided settings. + + + + + + + Will auto generate uv2 with default settings for provided mesh, and fill them in. + + + + + + Will auto generate uv2 with provided settings for provided mesh, and fill them in. + + + + + + + This class containes information about the version control state of an asset. + + + + + Gets the full name of the asset including extension. + + + + + Returns true if the asset is a folder. + + + + + Returns true if the assets is in the current project. + + + + + Returns true if the instance of the Asset class actually refers to a .meta file. + + + + + Returns true if the asset is locked by the version control system. + + + + + Get the name of the asset. + + + + + Gets the path of the asset. + + + + + Returns true is the asset is read only. + + + + + Gets the version control state of the asset. + + + + + Opens the assets in an associated editor. + + + + + Returns true if the version control state of the assets is one of the input states. + + Array of states to test for. + + + + Returns true if the version control state of the asset exactly matches the input state. + + State to check for. + + + + Loads the asset to memory. + + + + + Describes the various version control states an asset can have. + + + + + The was locally added to version control. + + + + + Remotely this asset was added to version control. + + + + + The asset has been checked out on the local machine. + + + + + The asset has been checked out on a remote machine. + + + + + There is a conflict with the asset that needs to be resolved. + + + + + The asset has been deleted locally. + + + + + The asset has been deleted on a remote machine. + + + + + The asset is not under version control. + + + + + The asset is locked by the local machine. + + + + + The asset is locked by a remote machine. + + + + + This instance of the class actaully refers to a .meta file. + + + + + The asset exists in version control but is missing on the local machine. + + + + + The version control state is unknown. + + + + + A newer version of the asset is available on the version control server. + + + + + The asset is read only. + + + + + The asset is up to date. + + + + + The state of the asset is currently being queried from the version control server. + + + + + A list of version control information about assets. + + + + + Based on the current list and the states a new list is returned which only contains the assets with the requested states. + + Whether or not folders should be included. + Which states to filter by. + + + + Create an optimised list of assets by removing children of folders in the same list. + + + + + Count the list of assets by given a set of states. + + Whether or not to include folders. + Which states to include in the count. + + + + Wrapper around a changeset description and ID. + + + + + The ID of the default changeset. + + + + + Description of a changeset. + + + + + Version control specific ID of a changeset. + + + + + Simply a list of changetsets. + + + + + What to checkout when starting the Checkout task through the version control Provider. + + + + + Checkout the asset only. + + + + + Checkout both asset and .meta file. + + + + + Checkout. + + + + + Checkout .meta file only. + + + + + Different actions a version control task can do upon completion. + + + + + Refresh windows upon task completion. + + + + + Update the content of a pending changeset with the result of the task upon completion. + + + + + Update the pending changesets with the result of the task upon completion. + + + + + Show or update the checkout failure window. + + + + + Refreshes the incoming and pensing changes window upon task completion. + + + + + Update incoming changes window with the result of the task upon completion. + + + + + Refresh the submit window with the result of the task upon completion. + + + + + Update the list of pending changes when a task completes. + + + + + This class describes the. + + + + + Descrition of the configuration field. + + + + + This is true if the configuration field is a password field. + + + + + This is true if the configuration field is required for the version control plugin to function correctly. + + + + + Label that is displayed next to the configuration field in the editor. + + + + + Name of the configuration field. + + + + + Mode of the file. + + + + + Binary file. + + + + + No mode set. + + + + + Text file. + + + + + Which method to use when merging. + + + + + Merge all changes. + + + + + Merge non-conflicting changes. + + + + + Don't merge any changes. + + + + + Messages from the version control system. + + + + + The message text. + + + + + The severity of the message. + + + + + Severity of a version control message. + + + + + Error message. + + + + + Informational message. + + + + + Verbose message. + + + + + Warning message. + + + + + Write the message to the console. + + + + + Represent the connection state of the version control provider. + + + + + Connection to the version control server could not be established. + + + + + Connection to the version control server has been established. + + + + + The version control provider is currently trying to connect to the version control server. + + + + + The plugin class describes a version control plugin and which configuratin options it has. + + + + + Configuration fields of the plugin. + + + + + This class provides acces to the version control API. + + + + + Gets the currently executing task. + + + + + Returns true if the version control provider is enabled and a valid Unity Pro License was found. + + + + + Returns true if a version control plugin has been selected and configured correctly. + + + + + Returns the reason for the version control provider being offline (if it is offline). + + + + + Returns the OnlineState of the version control provider. + + + + + This is true if a network connection is required by the currently selected version control plugin to perform any action. + + + + + Adds an assets or list of assets to version control. + + List of assets to add to version control system. + Set this true if adding should be done recursively into subfolders. + Single asset to add to version control system. + + + + Adds an assets or list of assets to version control. + + List of assets to add to version control system. + Set this true if adding should be done recursively into subfolders. + Single asset to add to version control system. + + + + Given a list of assets this function returns true if Add is a valid task to perform. + + List of assets to test. + + + + Given a changeset only containing the changeset ID, this will start a task for quering the description of the changeset. + + Changeset to query description of. + + + + Move an asset or list of assets from their current changeset to a new changeset. + + List of asset to move to changeset. + Changeset to move asset to. + Asset to move to changeset. + ChangesetID to move asset to. + + + + Move an asset or list of assets from their current changeset to a new changeset. + + List of asset to move to changeset. + Changeset to move asset to. + Asset to move to changeset. + ChangesetID to move asset to. + + + + Move an asset or list of assets from their current changeset to a new changeset. + + List of asset to move to changeset. + Changeset to move asset to. + Asset to move to changeset. + ChangesetID to move asset to. + + + + Move an asset or list of assets from their current changeset to a new changeset. + + List of asset to move to changeset. + Changeset to move asset to. + Asset to move to changeset. + ChangesetID to move asset to. + + + + Get a list of pending changesets owned by the current user. + + + + + Retrieves the list of assets belonging to a changeset. + + Changeset to query for assets. + ChangesetID to query for assets. + + + + Retrieves the list of assets belonging to a changeset. + + Changeset to query for assets. + ChangesetID to query for assets. + + + + Checkout an asset or list of asset from the version control system. + + List of assets to checkout. + Tell the Provider to checkout the asset, the .meta file or both. + Asset to checkout. + + + + Checkout an asset or list of asset from the version control system. + + List of assets to checkout. + Tell the Provider to checkout the asset, the .meta file or both. + Asset to checkout. + + + + Checkout an asset or list of asset from the version control system. + + List of assets to checkout. + Tell the Provider to checkout the asset, the .meta file or both. + Asset to checkout. + + + + Checkout an asset or list of asset from the version control system. + + List of assets to checkout. + Tell the Provider to checkout the asset, the .meta file or both. + Asset to checkout. + + + + Checkout an asset or list of asset from the version control system. + + List of assets to checkout. + Tell the Provider to checkout the asset, the .meta file or both. + Asset to checkout. + + + + Checkout an asset or list of asset from the version control system. + + List of assets to checkout. + Tell the Provider to checkout the asset, the .meta file or both. + Asset to checkout. + + + + Given an asset or a list of assets this function returns true if Checkout is a valid task to perform. + + List of assets. + Single asset. + + + + Given an asset or a list of assets this function returns true if Checkout is a valid task to perform. + + List of assets. + Single asset. + + + + This will invalidate the cached state information for all assets. + + + + + This will statt a task for deleting an asset or assets both from disk and from version control system. + + Project path of asset. + List of assets to delete. + Asset to delete. + + + + This will statt a task for deleting an asset or assets both from disk and from version control system. + + Project path of asset. + List of assets to delete. + Asset to delete. + + + + This will statt a task for deleting an asset or assets both from disk and from version control system. + + Project path of asset. + List of assets to delete. + Asset to delete. + + + + Starts a task that will attempt to delete the given changeset. + + List of changetsets. + + + + Test if deleting a changeset is a valid task to perform. + + Changeset to test. + + + + Starts a task for showing a diff of the given assest versus their head revision. + + List of assets. + Whether or not to include .meta. + + + + Return true is starting a Diff task is a valid operation. + + List of assets. + + + + Returns the configuration fields for the currently active version control plugin. + + + + + Gets the currently user selected verson control plugin. + + + + + Returns version control information about an asset. + + GUID of asset. + + + + Returns version control information about an asset. + + Path to asset. + + + + Return version control information about the currently selected assets. + + + + + Start a task for getting the latest version of an asset from the version control server. + + List of assets to update. + Asset to update. + + + + Start a task for getting the latest version of an asset from the version control server. + + List of assets to update. + Asset to update. + + + + Returns true if getting the latest version of an asset is a valid operation. + + List of assets to test. + Asset to test. + + + + Returns true if getting the latest version of an asset is a valid operation. + + List of assets to test. + Asset to test. + + + + Start a task for quering the version control server for incoming changes. + + + + + Given an incoming changeset this will start a task to query the version control server for which assets are part of the changeset. + + Incoming changeset. + Incoming changesetid. + + + + Given an incoming changeset this will start a task to query the version control server for which assets are part of the changeset. + + Incoming changeset. + Incoming changesetid. + + + + Returns true if an asset can be edited. + + Asset to test. + + + + Attempt to lock an asset for exclusive editing. + + List of assets to lock/unlock. + True to lock assets, false to unlock assets. + Asset to lock/unlock. + + + + Attempt to lock an asset for exclusive editing. + + List of assets to lock/unlock. + True to lock assets, false to unlock assets. + Asset to lock/unlock. + + + + Return true if the task can be executed. + + List of assets to test. + Asset to test. + + + + Return true if the task can be executed. + + List of assets to test. + Asset to test. + + + + This method will initiate a merge task handle merging of the conflicting assets. + + The list of conflicting assets to be merged. + How to merge the assets. + + + + Uses the version control plugin to move an asset from one path to another. + + Path to source asset. + Path to destination. + + + + Start a task that will resolve conflicting assets in version control. + + The list of asset to mark as resolved. + How the assets should be resolved. + + + + Tests if any of the assets in the list is resolvable. + + The list of asset to be resolved. + + + + Reverts the specified assets by undoing any changes done since last time you synced. + + The list of assets to be reverted. + How to revert the assets. + The asset to be reverted. + + + + Reverts the specified assets by undoing any changes done since last time you synced. + + The list of assets to be reverted. + How to revert the assets. + The asset to be reverted. + + + + Return true if Revert is a valid task to perform. + + List of assets to test. + Revert mode to test for. + Asset to test. + + + + Return true if Revert is a valid task to perform. + + List of assets to test. + Revert mode to test for. + Asset to test. + + + + Start a task that will fetch the most recent status from revision control system. + + The assets fetch new state for. + The asset path to fetch new state for. + If any assets specified are folders this flag will get status for all descendants of the folder as well. + + + + Start a task that will fetch the most recent status from revision control system. + + The assets fetch new state for. + The asset path to fetch new state for. + If any assets specified are folders this flag will get status for all descendants of the folder as well. + + + + Start a task that will fetch the most recent status from revision control system. + + The assets fetch new state for. + The asset path to fetch new state for. + If any assets specified are folders this flag will get status for all descendants of the folder as well. + + + + Start a task that will fetch the most recent status from revision control system. + + The assets fetch new state for. + The asset path to fetch new state for. + If any assets specified are folders this flag will get status for all descendants of the folder as well. + + + + Start a task that will fetch the most recent status from revision control system. + + The assets fetch new state for. + The asset path to fetch new state for. + If any assets specified are folders this flag will get status for all descendants of the folder as well. + + + + Start a task that will fetch the most recent status from revision control system. + + The assets fetch new state for. + The asset path to fetch new state for. + If any assets specified are folders this flag will get status for all descendants of the folder as well. + + + + Start a task that will fetch the most recent status from revision control system. + + The assets fetch new state for. + The asset path to fetch new state for. + If any assets specified are folders this flag will get status for all descendants of the folder as well. + + + + Start a task that will fetch the most recent status from revision control system. + + The assets fetch new state for. + The asset path to fetch new state for. + If any assets specified are folders this flag will get status for all descendants of the folder as well. + + + + Start a task that submits the assets to version control. + + The changeset to submit. + The list of assets to submit. + The description of the changeset. + If true then only save the changeset to be submitted later. + + + + Returns true if submitting the assets is a valid operation. + + The changeset to submit. + The asset to submit. + + + + Returns true if locking the assets is a valid operation. + + The assets to lock. + The asset to lock. + + + + Returns true if locking the assets is a valid operation. + + The assets to lock. + The asset to lock. + + + + Start a task that sends the version control settings to the version control system. + + + + + How assets should be resolved. + + + + + Use merged version. + + + + + Use "mine" (local version). + + + + + Use "theirs" (other/remote version). + + + + + Defines the behaviour of the version control revert methods. + + + + + Revert files but keep locally changed ones. + + + + + Use the version control regular revert approach. + + + + + Revert only unchanged files. + + + + + The status of an operation returned by the VCS. + + + + + Files conflicted. + + + + + An error was returned. + + + + + Submission worked. + + + + + Files were unable to be added. + + + + + A UnityEditor.VersionControl.Task is created almost everytime UnityEditor.VersionControl.Provider is ask to perform an action. + + + + + The result of some types of tasks. + + + + + List of changesets returned by some tasks. + + + + + A short description of the current task. + + + + + May contain messages from the version control plugins. + + + + + Progress of current task in precent. + + + + + Some task return result codes, these are stored here. + + + + + Total time spent in task since the task was started. + + + + + Get whether or not the task was completed succesfully. + + + + + Will contain the result of the Provider.ChangeSetDescription task. + + + + + Upon completion of a task a completion task will be performed if it is set. + + Which completion action to perform. + + + + A blocking wait for the task to complete. + + + + + This enum is used to build a bitmask for controlling per-channel vertex compression. + + + + + Vertex color. + + + + + Vertex normal. + + + + + Position. + + + + + Tangent. + + + + + Texture coordinate channel 0. Usually used for Albedo texture. + + + + + Texture coordinate channel 1. Usually used for baked lightmap. + + + + + Texture coordinate channel 2. Usually used for realtime GI. + + + + + Texture coordinate channel 3. + + + + + Enum for Tools.viewTool. + + + + + The FPS tool is selected. + + + + + View tool is not selected. + + + + + The orbit tool is selected. + + + + + The pan tool is selected. + + + + + The zoom tool is selected. + + + + + Wii U Player debugging level. + + + + + Asserts enabled, memory profiling enabled, Nintendo Wii U profiler linked, no optimizations. + + + + + Asserts enabled, memory profiling enabled, Nintendo Wii U profiler linked, optimized build. + + + + + Memory profiling enabled, Nintendo Wii U profiler linked, optimizations enabled. + + + + + Optimizations enabled. + + + + + Player packaging. + + + + + Download image. + + + + + Unpacked. + + + + + WUMAD package. + + + + + Resolution setting for TV output. + + + + + 1920×1080 (Full HD). + + + + + 1280×720 pixels. + + + + + Specifies Windows SDK which used when building Windows Store Apps. + + + + + Target Xbox build type. + + + + + Debug player (for building with source code). + + + + + Development player. + + + + + Master player (submission-proof). + + + + diff --git a/Roguelike/Library/UnityAssemblies/UnityEngine.Networking.xml b/Roguelike/Library/UnityAssemblies/UnityEngine.Networking.xml new file mode 100644 index 00000000..39fb6138 --- /dev/null +++ b/Roguelike/Library/UnityAssemblies/UnityEngine.Networking.xml @@ -0,0 +1,3926 @@ + + + + + UnityEngine.Networking + + + + An enumeration of the options that can be set on a network channel. + + + + + The option to set the numbet of pending buffers for a channel. + + + + + Class containing constants for default network channels. + + + + + The id of the default reliable channel used by the UNet HLAPI, This channel is used for state updates and spawning. + + + + + The id of the default unreliable channel used for the UNet HLAPI. This channel is used for movement updates. + + + + + A Custom Attribute that can be added to member functions of NetworkBehaviour scripts, to make them only run on clients. + + + + + A Custom Attribute that can be added to member functions of NetworkBehaviour scripts, to make them only run on clients, but not generate warnings. + + + + + This is an attribute that can be put on methods of NetworkBehaviour classes to allow them to be invoked on clients from a server. + + + + + The channel ID which this RPC transmission will use. + + + + + A client manager which contains non-instance centrict client information and functions. + + + + + A list of all players added to the game. + + + + + This is a dictionary of networked objects that have been spawned on the client. + + + + + This is a dictionary of the prefabs that are registered on the client. + + + + + Return true when a client connection has been set as ready. + + + + + The NetworkConnection object that is currently "ready". This is the connection being used connect to the server where objects are spawned from. + + + + + This is dictionary of the disabled NetworkIdentity objects in the scene that could be spawned by messages from the server. + + + + + This adds a player object for this client. This causes an AddPlayer message to be sent to the server, and NetworkManager.OnServerAddPlayer will be called. If an extra message was passed to AddPlayer, then OnServerAddPlayer will be called with a NetworkReader that contains the contents of the message. + + The connection to become ready for this client. + The local player ID number. + An extra message object that can be passed to the server for this player. + + True if player was added. + + + + + This adds a player object for this client. This causes an AddPlayer message to be sent to the server, and NetworkManager.OnServerAddPlayer will be called. If an extra message was passed to AddPlayer, then OnServerAddPlayer will be called with a NetworkReader that contains the contents of the message. + + The connection to become ready for this client. + The local player ID number. + An extra message object that can be passed to the server for this player. + + True if player was added. + + + + + This adds a player object for this client. This causes an AddPlayer message to be sent to the server, and NetworkManager.OnServerAddPlayer will be called. If an extra message was passed to AddPlayer, then OnServerAddPlayer will be called with a NetworkReader that contains the contents of the message. + + The connection to become ready for this client. + The local player ID number. + An extra message object that can be passed to the server for this player. + + True if player was added. + + + + + This clears the registered spawn prefabs and spawn handler functions for this client. + + + + + Create and connect a local client instance to the local server. + + + A client object for communicating with the local server. + + + + + Destroys all networked objects on the client. + + + + + This finds the local NetworkIdentity object with the specified network Id. + + The id of a networked object. + + The game object that matches the netId. + + + + + Signal that the client connection is ready to enter the game. + + The client connection which is ready. + + + + Registers a prefab with the UNET spawning system. + + A Prefab that will be spawned. + A method to use as a custom spawnhandler on clients. + A method to use as a custom un-spawnhandler on clients. + + + + Registers a prefab with the UNET spawning system. + + A Prefab that will be spawned. + A method to use as a custom spawnhandler on clients. + A method to use as a custom un-spawnhandler on clients. + + + + This is an advanced spawning funciotn that registers a custom assetId with the UNET spawning system. + + Custom assetId string. + A method to use as a custom spawnhandler on clients. + A method to use as a custom un-spawnhandler on clients. + + + + Remove the specified player ID from the game. + + The local player ID number . + + + Returns true if the player was successfully destoyed and removed. + + + + + NetId is a unique number assigned to all objects with NetworkIdentity components in a game. + + NetId of object. + Networked object. + + + + Removes a registered spawn prefab. + + + + + + Removes a registered spawn handler function. + + + + + + This is an attribute that can be put on methods of NetworkBehaviour classes to allow them to be invoked on the server by sending a command from a client. + + + + + The QoS channel to use to send this command on, see Networking.QosType. + + + + + FilterLog is a utility class that controls the level of logging generated by UNET clients and servers. + + + + + The current logging level that UNET is running with. + + + + + The current logging level that UNET is running with. + + + + + Checks if debug logging is enabled. + + + + + Checks if error logging is enabled. + + + + + Checks if info level logging is enabled. + + + + + Checks if wanring level logging is enabled. + + + + + Setting LogFilter.currentLogLevel to this will enable verbose debug logging. + + + + + Setting LogFilter.currentLogLevel to this will error and above messages. + + + + + Control how verbose the network log messages are. + + + + + Show log messages with priority Debug and higher. + + + + + Show log messages with priority Developer and higher, this it the most verbose setting. + + + + + Show log messages with priority Error and higher. + + + + + Show log messages with priority Fatal and higher. this is the least verbose setting. + + + + + Show log messages with priority Info and higher. This is the default setting. + + + + + Show log messages with priority Warning and higher. + + + + + Setting LogFilter.currentLogLevel to this will log only info and above messages. This is the default level. + + + + + Setting LogFilter.currentLogLevel to this will log wanring and above messages. + + + + + Network message classes should be derived from this class. These message classes can then be sent using the various Send functions of NetworkConnection, NetworkClient and NetworkServer. + + + + + This method is used to populate a message object from a NetworkReader stream. + + Stream to read from. + + + + The method is used to populate a NetworkWriter stream from a message object. + + Stream to write to. + + + + Container class for networking system built-in message types. + + + + + Internal networking system message for adding player objects to client instances. + + + + + Internal networking system message for sending synchronizing animation state. + + + + + Internal networking system message for sending synchronizing animation parameter state. + + + + + Internal networking system message for sending animation triggers. + + + + + Internal networking system message for sending a command from client to server. + + + + + Internal networking system message for communicating a connection has occurred. + + + + + Internal networking system message for HLAPI CRC checking. + + + + + Internal networking system message for communicating a disconnect has occurred,. + + + + + Internal networking system message for communicating an error. + + + + + The highest value of built-in networking system message ids. User messages must be above this value. + + + + + The highest value of internal networking system message ids. User messages must be above this value. User code cannot replace these handlers. + + + + + Internal networking system message for communicating failing to add lobby player. + + + + + Internal networking system message for communicating a player is ready in the lobby. + + + + + Internal networking system messages used to return the game to the lobby scene. + + + + + Internal networking system message for communicating a lobby player has loaded the game scene. + + + + + Internal networking system message for sending tranforms for client object from client to server. + + + + + Internal networking system message for setting authority to a client for an object. + + + + + Internal networking system message for sending tranforms from client to server. + + + + + Returns the name of internal message types by their id. + + A internal message id value. + + The name of the internal message. + + + + + Internal networking system message for sending information about network peers to clents. + + + + + Internal networking system message for server to tell clients they are no longer ready. + + + + + Internal networking system message for destroying objects. + + + + + Internal networking system message for hiding objects. + + + + + Internal networking system message for spawning objects. + + + + + Internal networking system message for spawning scene objects. + + + + + Internal networking system message for telling clients they own a player object. + + + + + Internal networking system message for clients to tell server they are ready. + + + + + Internal networking system message for removing a player object which was spawned for a client. + + + + + Internal networking system message for sending a ClientRPC from server to client. + + + + + Internal networking system message that tells clients which scene to load when they connect to a server. + + + + + Internal networking system messages used to tell when the initial contents of a scene is being spawned. + + + + + Internal networking system message for sending a SyncEvent from server to client. + + + + + Internal networking system message for sending a USyncList generic list. + + + + + Internal networking system message for updating SyncVars on a client from a server. + + + + + A component to synchronize Mecanim animation states for networked objects. + + + + + The animator component to synchronize. + + + + + Gets whether an animation parameter should be auto sent. + + Index of the parameter in the Animator. + + True if the parameter should be sent. + + + + + Sets whether an animation parameter should be auto sent. + + Index of the parameter in the Animator. + The new value. + + + + Causes an animation trigger to be invoked for a networked object. + + Name of trigger. + Hash id of trigger (from the Animator). + + + + + Causes an animation trigger to be invoked for a networked object. + + Name of trigger. + Hash id of trigger (from the Animator). + + + + + Base class which should be inherited by scripts which contain networking functionality. + + + + + The NetworkConnection associated with this NetworkIdentity. This is only valid for player objects on the server. + + + + + The NetworkConnection associated with this NetworkIdentity. This is only valid for player objects on the server. + + + + + This returns true if this object is the authoritative version of the object in the distributed network application. + + + + + Returns true if running as a client and this object was spawned by a server. + + + + + This returns true if this object is the one that represents the player on the local machine. + + + + + Returns true if this object is active on an active server. + + + + + This value is set on the NetworkIdentity and is accessible here for convenient access for scripts. + + + + + The unique network Id of this object. + + + + + The id of the player associated with thei behaviour. + + + + + This clears all the dirty bits that were set on this script by SetDirtyBits(); + + + + + Delegate for Command functions. + + + + + + + Delegate for Event functions. + + + + + + + This virtual function is used to specify the QoS channel to use for SyncVar updates for this script. + + + The QoS channel for this script. + + + + + This virtual function is used to specify the send interval to use for SyncVar updates for this script. + + + The time in seconds between updates. + + + + + Manually invoke a Command. + + Hash of the Command name. + Parameters to pass to the command. + + Returns true if successful. + + + + + Manually invoke an RPC function. + + Hash of the RPC name. + Parameters to pass to the RPC function. + + Returns true if successful. + + + + + Manually invoke a SyncEvent. + + Hash of the SyncEvent name. + Parameters to pass to the SyncEvent. + + Returns true if successful. + + + + + Callback used by the visibility system to determine if an observer (player) can see this object. + + Network connection of a player. + + True if the player can see this object. + + + + + Virtual function to override to receive custom serialization data. + + Reader to read from the stream. + True if being sent initial state. + + + + This is invoked on clients when the server has caused this object to be destroyed. + + + + + Callback used by the visibility system to (re)construct the set of observers that can see this object. + + The new set of observers for this object. + True if the set of observers is being built for the first time. + + Return true if this function did work. + + + + + Virtual function to override to send custom serialization data. + + Writer to use to write to the stream. + If this is being called to send initial state. + + True if data was written. + + + + + Callback used by the visibility system for objects on a host. + + New visibility state. + + + + This is invoked on behaviours that have authority, based on context and the LocalPlayerAuthority value on the NetworkIdentity. + + + + + Called on every NetworkBehaviour when it is activated on a client. + + + + + Called when the local player object has been set up. + + + + + Called when the server starts listening. + + + + + This is invoked on behaviours when authority is removed. + + + + + An internal method called on client objects to resolve GameObject references. + + + + + Used to set the behaviour as dirty, so that a network update will be sent for the object. + + Bit mask to set. + + + + A structure that contains data from a NetworkDiscovery server broadcast. + + + + + The data broadcast by the server. + + + + + The IP address of the server that broadcasts this data. + + + + + High level UNET client. + + + + + True if a network client is currently active. + + + + + A list of all the active network clients in the current process. + + + + + The NetworkConnection object this client is using. + + + + + The registered network message handlers. + + + + + The host topology that this client is using. + + + + + This gives the current connection status of the client. + + + + + The class to use when creating new NetworkConnections. + + + + + The number of QoS channels currently configured for this client. + + + + + The other network participants in the current game. + + + + + The IP address of the server that this client is connected to. + + + + + The port of the server that this client is connected to. + + + + + This configures the transport layer settings for a client. + + Transport layer configuration object. + The maximum number of connections to allow. + Transport layer topology object. + + True if the configuration was successful. + + + + + This configures the transport layer settings for a client. + + Transport layer configuration object. + The maximum number of connections to allow. + Transport layer topology object. + + True if the configuration was successful. + + + + + Connect client to a NetworkServer instance. + + Target IP address or hostname. + Target port number. + + + + Connect client to a NetworkServer instance with simulated latency and packet loss. + + Target IP address or hostname. + Target port number. + Simulated latency in milliseconds. + Simulated packet loss percentage. + + + + Creates a new NetworkClient instance. + + + + + Disconnect from server. + + + + + Retrieves statistics about the network packets sent on this connection. + + + Dictionary of packet statistics for the client's connection. + + + + + Gets the Return Trip Time for this connection. + + + Return trip time in milliseconds. + + + + + Get inbound network statistics for the client. + + Number of messages received so far. + Number of bytes received so far. + + + + Get outbound network statistics for the client. + + Number of messages sent so far (including collated messages send through buffer). + Number of messages sent through buffer. + Number of bytes sent so far. + Number of messages buffered for sending per second. + + + + Retrieves statistics about the network packets sent on all connections. + + + Dictionary of stats. + + + + + Register a handler for a particular message type. + + Message type number. + Function handler which will be invoked for when this message type is received. + + + + Resets the statistics return by NetworkClient.GetConnectionStats() to zero values. + + + + + This sends a network message with a message Id to the server. This message is sent on channel zero, which be default is the reliable channel. + + The id of the message to send. + A message instance to send. + + True if message was sent. + + + + + This sends a network message with a message Id to the server on a specific channel. + + The id of the message to send. + The message to send. + The channel to send the message on. + + True if the message was sent. + + + + + This sends the data in an array of bytes to the server that the client is connected to. + + Data to send. + Number of bytes of data. + The QoS channel to send data on. + + True if successfully sent. + + + + + This sends a network message with a message Id to the server on channel one, which be default is the un-reliable channel. + + The message id to send. + The message to send. + + True if the message was sent. + + + + + This sends the contents of the NetworkWriter's buffer to the connected server on the specified channel. + + Writer object containing data to send. + QoS channel to send data on. + + True if data successfully sent. + + + + + Set the maximum amount of time that can pass for transmitting the send buffer. + + Delay in seconds. + + + + This sets the class that is used when creating new network connections. + + + + + Shut down a client. + + + + + Shuts down all network clients. + + + + + Unregisters a network message handler. + + The message type to unregister. + + + + High level network connection. + + + + + The IP address associated with the connection. + + + + + A list of the NetworkIdentity objects owned by this connection. + + + + + Unique identifier for this connection. + + + + + Transport level host id for this connection. + + + + + Flag that tells if the connection has been marked as "ready" by a client calling ClientScene.Ready(). + + + + + The last time that a message was received on this connection. + + + + + Setting this to true will log the contents of network message to the console. + + + + + The list of players for this connection. + + + + + Disconnects this connection. + + + + + Disposes of this connection, releasing channel buffers that it holds. + + + + + This causes the channels of the network connection to flush their data to the transport layer. + + + + + Get statistics for incoming traffic. + + Number of messages received. + Number of bytes received. + + + + Get statistics for outgoing traffic. + + Number of messages sent. + Number of messages currently buffered for sending. + Number of bytes sent. + How many messages were buffered in the last second. + + + + This makes the connection process the data contained in the buffer, and call handler functions. + + Data to process. + Size of the data to process. + Channel the data was recieved on. + + + + This makes the connection process the data contained in the stream, and call handler functions. + + Stream that contains data. + Size of the data. + Channel the data was received on. + + + + This inializes the internal data structures of a NetworkConnection object, including channel buffers. + + The host or IP connected to. + The transport hostId for the connection. + The transport connectionId for the connection. + The topology to be used. + + + + + + + This function invokes the registered handler function for a message. + + The message type of the handler to use. + The stream to read the contents of the message from. + The channel that the message arrived on. + The message object to process. + + True if a handler function was found and invoked. + + + + + This function invokes the registered handler function for a message. + + The message type of the handler to use. + The stream to read the contents of the message from. + The channel that the message arrived on. + The message object to process. + + True if a handler function was found and invoked. + + + + + This function invokes the registered handler function for a message, without any message data. + + The message id of the handler to invoke. + + True if a handler function was found and invoked. + + + + + Structure used to track the number and size of packets of each packets type. + + + + + Total bytes of all messages of this type. + + + + + The total number of messages of this type. + + + + + The message type these stats are for. + + + + + This registers a handler function for a message Id. + + The message Id to register. + The handler function to register. + + + + Resets the statistics that are returned from NetworkClient.GetConnectionStats(). + + + + + This sends a network message with a message Id on the connection. This message is sent on channel zero, which be default is the reliable channel. + + The id of the message to send. + The message to send. + + True if the message was sent. + + + + + This sends a network message on the connection using a specific transport layer channel. + + The message id to send. + The message to send. + The transport layer channel to send on. + + True if the message was sent. + + + + + This sends an array of bytes on the connection. + + The array of data to be sent. + The number of bytes in the array to be sent. + The transport channel to send on. + + Success if data was sent. + + + + + This sends a network message with a message Id on the connection. This message is sent on channel one, which be default is the un-reliable channel. + + The message id to send. + The message to send. + + True if the message was sent. + + + + + This sends the contents of a NetworkWriter object on the connection. + + A writer object containing data to send. + The transport channel to send on. + + True if the data was sent. + + + + + This sets an option on the network channel. + + The channel the option will be set on. + The option to set. + The value for the option. + + True if the option was set. + + + + + The maximum time in seconds that messages are buffered before being sent. + + Time in seconds. + + + + Returns a string representation of the NetworkConnection object state. + + + + + This virtual function allows custom network connection classes to process data from the network before it is passed to the application. + + The data recieved. + The size of the data recieved. + The channel that the data was received on. + + + + This virtual function allows custom network connection classes to process data send by the application before it goes to the network transport layer. + + Data to send. + Size of data to send. + Channel to send data on. + Error code for send. + + True if data was sent. + + + + + This removes the handler registered for a message Id. + + The message id to unregister. + + + + This class holds information about which networked scripts use which QoS channels for updates. + + + + + Enables a CRC check between server and client that ensures the NetworkBehaviour scripts match. + + + + + A dictionary of script QoS channels. + + + + + This is used to setup script network settings CRC data. + + Script name. + QoS Channel. + + + + This can be used to reinitialize the set of script CRCs. + + + + + The NetworkDiscovery component allows Unity games to find each other on a local network. It can broadcast presence and listen for broadcasts, and optionally join matching games using the NetworkManager. + + + + + The data to include in the broadcast message when running as a server. + + + + + How often in milliseconds to broadcast when running as a server. + + + + + A key to identify this application in broadcasts. + + + + + The network port to broadcast on and listen to. + + + + + A dictionary of broadcasts received from servers. + + + + + The sub-version of the application to broadcast. This is used to match versions of the same application. + + + + + The version of the application to broadcast. This is used to match versions of the same application. + + + + + The TransportLayer hostId being used (read-only). + + + + + True if running in client mode (read-only). + + + + + True if running in server mode (read-only). + + + + + The horizontal offset of the GUI if active. + + + + + The vertical offset of the GUI if active. + + + + + True is broadcasting or listening (read-only). + + + + + True to draw the default Broacast control UI. + + + + + True to integrate with the NetworkManager. + + + + + Initializes the NetworkDiscovery component. + + + Return true if the network port was available. + + + + + This is a virtual function that can be implemented to handle broadcast messages when running as a client. + + The IP address of the server. + The data broadcast by the server. + + + + Starts listening for broadcasts messages. + + + True is able to listen. + + + + + Starts sending broadcast messages. + + + True is able to broadcast. + + + + + Stops listening and broadcasting. + + + + + A 128 bit number used to represent assets in a networking context. + + + + + A valid NetworkHash has a non-zero value. + + + True if the value is non-zero. + + + + + This parses the string representation of a NetworkHash into a binary object. + + A hex string to parse. + + A 128 bit network hash object. + + + + + Resets the value of a NetworkHash to zero (invalid). + + + + + Returns a string representation of a NetworkHash object. + + + A hex asset string. + + + + + A component used to add an object to the UNET networking system. + + + + + Unique identifier used to find the source assets when server spawns the on clients. + + + + + The client that has authority for this object. This will be null if no client has authority. + + + + + The UConnection associated with this NetworkIdentity. This is only valid for player objects on the server. + + + + + The UConnection associated with this NetworkIdentity. This is only valid for player objects on a local client. + + + + + This returns true if this object is the authoritative version of the object in the distributed network application. + + + + + Returns true if running as a client and this object was spawned by a server. + + + + + This returns true if this object is the one that represents the player on the local machine. + + + + + Returns true if running as a server, which spawned the object. + + + + + LocalPlayerAuthority means that the client of the "owning" player has authority over their own player object. + + + + + Unique identifier for this particular object instance, used for tracking objects between networked clients and the server. + + + + + The set of network connections (players) that can see this object. + + + + + The id of the player associated with this object. + + + + + A unique identifier for NetworkIdentity objects within a scene. + + + + + Flag to make this object only exist when the game is running as a server (or host). + + + + + This assigns control of an object to a client via the client's NetworkConnection. + + The connection of the client to assign authority to. + + True if authority was assigned. + + + + + Force the scene ID to a specific value. + + The new scene ID. + + + + + This causes the set of players that can see this object to be rebuild. The OnRebuildObservers callback function will be invoked on each NetworkBehaviour. + + True if this is the first time. + + + + Removes ownership for an object for a client by its conneciton. + + The connection of the client to remove authority for. + + True if authority is removed. + + + + + This is used to identify networked objects across all participants of a network. It is assigned at runtime by the server when an object is spawned. + + + + + A static invalid NetworkInstanceId that can be used for comparisons. + + + + + Returns true if the value of the NetworkInstanceId is zero. + + + True if zero. + + + + + Returns a string of "NetID:value". + + + String representation of this object. + + + + + The internal value of this identifier. + + + + + This is a specialized NetworkManager that includes a networked lobby. + + + + + This is the prefab of the player to be created in the PlayScene. + + + + + This is the prefab of the player to be created in the LobbyScene. + + + + + The scene to use for the lobby. This is similar to the offlineScene of the NetworkManager. + + + + + These slots track players that enter the lobby. + + + + + The maximum number of players allowed in the game. + + + + + The maximum number of players per connection. + + + + + The minimum number of players required to be ready for the game to start. + + + + + The scene to use for the playing the game from the lobby. This is similar to the onlineScene of the NetworkManager. + + + + + This flag enables display of the default lobby UI. + + + + + CheckReadyToBegin checks all of the players in the lobby to see if their readyToBegin flag is set. + + + + + Called on the client when adding a player to the lobby fails. + + + + + This is called on the client when it connects to server. + + The connection that connected. + + + + This is called on the client when disconnected from a server. + + The connection that disconnected. + + + + This is a hook to allow custom behaviour when the game client enters the lobby. + + + + + This is a hook to allow custom behaviour when the game client exits the lobby. + + + + + This is called on the client when the client is finished loading a new networked scene. + + + + + + This is called on the server when a new client connects to the server. + + The new connection. + + + + This allows customization of the creation of the GamePlayer object on the server. + + The connection the player object is for. + The controllerId of the player on the connnection. + + A new GamePlayer object. + + + + + This allows customization of the creation of the lobby-player object on the server. + + The connection the player object is for. + The controllerId of the player. + + The new lobby-player object. + + + + + This is called on the server when a client disconnects. + + The connection that disconnected. + + + + This is called on the server when a player is removed. + + + + + + + This is called on the server when all the players in the lobby are ready. + + + + + This is called on the server when a networked scene finishes loading. + + Name of the new scene. + + + + This is called on the server when it is told that a client has finished switching from the lobby scene to a game player scene. + + The lobby player object. + The game player object. + + False to not allow this player to replace the lobby player. + + + + + This is called on the client when a client is started. + + + + + + This is called on the host when a host is started. + + + + + This is called on the server when the server is started - including when a host is started. + + + + + This is called on the client when the client stops. + + + + + This is called on the host when the host is stopped. + + + + + Sends a message to the server to make the game return to the lobby scene. + + + True if message was sent. + + + + + Calling this causes the server to switch back to the lobby scene. + + + + + This is used on clients to attempt to add a player to the game. + + + + + This component works in conjunction with the NetworkLobbyManager to make up the multiplayer lobby system. + + + + + This is a flag that control whether this player is ready for the game to begin. + + + + + The slot within the lobby that this player inhabits. + + + + + This is a hook that is invoked on all player objects when entering the lobby. + + + + + This is a hook that is invoked on all player objects when exiting the lobby. + + + + + This removes this player from the lobby. + + + + + This is used on clients to tell the server that this player is not ready for the game to begin. + + + + + This is used on clients to tell the server that this player is ready for the game to begin. + + + + + This is used on clients to tell the server that the client has switched from the lobby to the GameScene and is ready to play. + + + + + This flag controls whether the default UI is shown for the lobby player. + + + + + The NetworkManager is a convenience class for the HLAPI for managing networking systems. + + + + + A flag to control whether or not player objects are automatically created on connect, and on scene change. + + + + + The Quality-of-Service channels to use for the network transport layer. + + + + + The current NetworkClient being used by the manager. + + + + + The custom network configuration to use. + + + + + Flag to enable custom network configuration. + + + + + A flag to control whether the NetworkManager object is destroyed when the scene changes. + + + + + True if the NetworkServer or NetworkClient isactive. + + + + + The log level specifically to user for network log messages. + + + + + The list of matches that are available to join. + + + + + The hostname of the matchmaking server. + + + + + A MatchInfo instance that will be used when StartServer() or StartClient() are called. + + + + + The UMatch matchmaker object. + + + + + The name of the current match. + + + + + The port of the matchmaking service. + + + + + The maximum number of players in the current match. + + + + + The maximum number of concurrent network connections to support. + + + + + The maximum delay before sending packets on connections. + + + + + The network address currently in use. + + + + + The network port currently in use. + + + + + The name of the current network scene. + + + + + NumPlayers is the number of active player objects across all connections on the server. + + + + + The scene to switch to when offline. + + + + + The scene to switch to when online. + + + + + The percentage of incoming and outgoing packets to be dropped for clients. + + + + + The default prefab to be used to create player objects on the server. + + + + + The current method of spawning players used by the NetworkManager. + + + + + Controls whether the program runs when it is in the background. + + + + + Flag for using the script CRC check between server and clients. + + + + + Allows you to specify an EndPoint object instead of setting networkAddress and networkPort (required for some platforms such as Xbox One). + + + + + A flag to control sending the network information about every peer to all members of a match. + + + + + The IP address to bind the server to. + + + + + Flag to tell the server whether to bind to a specific IP address. + + + + + The delay in milliseconds to be added to incoming and outgoing packets for clients. + + + + + The NetworkManager singleton object. + + + + + List of prefabs that will be registered with the spawning system. + + + + + The list of currently registered player start positions for the current scene. + + + + + Flag that control whether clients started by this NetworkManager will use simulated latency and packet loss. + + + + + This makes the NetworkServer listen for WebSockets connections instead of normal transport layer connections. + + + + + This finds a spawn position based on NetworkStartPosition objects in the scene. + + + Returns the transform to spawn a player at, or null. + + + + + This checks if the NetworkManager has a client and that it is connected to a server. + + + True if the NetworkManagers client is connected to a server. + + + + + Called on the client when connected to a server. + + Connection to the server. + + + + Called on clients when disconnected from a server. + + Connection to the server. + + + + Called on clients when a network error occurs. + + Connection to a server. + Error code. + + + + Called on clients when a servers tells the client it is no longer ready. + + Connection to a server. + + + + Called on clients when a scene has completed loaded, when the scene load was initiated by the server. + + The network connection that the scene change message arrived on. + + + + This is invoked when a match has been created. + + Info about the match that has been created. + + + + This is invoked when a match is joined. + + + + + + This is invoked when a list of matches is returned from ListMatches(). + + A list of available matches. + + + + Called on the server when a client adds a new player with ClientScene.AddPlayer. + + Connection from client. + Id of the new player. + An extra message object passed for the new player. + + + + Called on the server when a new client connects. + + Connection from client. + + + + Called on the server when a client disconnects. + + Connection from client. + + + + Called on the server when a network error occurs for a client connection. + + Connection from client. + Error code. + + + + Called on the server when a client is ready. + + Connection from client. + + + + Called on the server when a client removes a player. + + The connection to remove the player from. + The controller id of the player to remove. + + + + Called on the server when a scene is completed loaded, when the scene load was initiated by the server with ServerChangeScene(). + + The name of the new scene. + + + + This is a hook that is invoked when the client is started. + + The NetworkClient object that was started. + + + + This hook is invoked when a host is started. + + + + + This hook is invoked when a server is started - including when a host is started. + + + + + This hook is called when a client is stopped. + + + + + This hook is called when a host is stopped. + + + + + This hook is called when a server is stopped - including when a host is stopped. + + + + + Registers the transform of a game object as a player spawn location. + + Transform to register. + + + + This causes the server to switch scenes and sets the networkSceneName. + + The name of the scene to change to. The server will change scene immediately, and a message will be sent to connected clients to ask them to change scene also. + + + + This set the address of the matchmaker service. + + Hostname of matchmaker service. + Port of matchmaker service. + Protocol used by matchmaker service. + + + + Shuts down the NetworkManager completely and destroy the singleton. + + + + + This starts a network client. It uses the networkAddress and networkPort properties as the address to connect to. + + + The client object created. + + + + + This starts a network "host" - a server and client in the same application. + + + The client object created - this is a "local client". + + + + + This starts matchmaker for the NetworkManager. + + + + + This starts a new server. + + + True is the server was started. + + + + + Stops the client that the manager is using. + + + + + This stops both the client and the server that the manager is using. + + + + + Stops the matchmaker that the NetworkManager is using. + + + + + Stops the server that the manager is using. + + + + + Unregisters the transform of a game object as a player spawn location. + + + + + + This allows the NetworkManager to use a client object created externally to the NetworkManager instead of using StartClient(). + + The NetworkClient object to use. + + + + An extension for the NetworkManager that displays a default HUD for controlling the network state of the game. + + + + + The NetworkManager associated with this HUD. + + + + + The horizontal offset in pixels to draw the HUD runtime GUI at. + + + + + The vertical offset in pixels to draw the HUD runtime GUI at. + + + + + Whether to show the default control HUD at runtime. + + + + + The details of a network message received by a client or server on a network connection. + + + + + The transport layer channel the message was sent on. + + + + + The connection the message was recieved on. + + + + + The id of the message type of the message. + + + + + A NetworkReader object that contains the contents of the message. + + + + + Returns a string with the numeric representation of each byte in the payload. + + Network message payload to dump. + Length of payload in bytes. + + Dumped info from payload. + + + + + ReadMessage is used to extract a typed network message from the NetworkReader of a NetworkMessage object. + + + The type of the Network Message, must be derived from MessageBase. + + + + + The callback delegate used in message handler functions. + + Network message for the message callback. + + + + Component that controls visibility of networked objects for players. + + + + + Which method to use for checking proximity of players. + + + + + Flag to force this object to be hidden for players. + + + + + The maximim range that objects will be visible at. + + + + + How often (in seconds) that this object should update the set of players that can see it. + + + + + Enumeration of methods to use to check proximity. + + + + + Use 2D physics to determine proximity. + + + + + Use 3D physics to determine proximity. + + + + + General purpose serializer for UNET (for reading byte arrays). + + + + + Creates a new NetworkReader object. + + A buffer to construct the reader with, this buffer is NOT copied. + + + + Creates a new NetworkReader object. + + A buffer to construct the reader with, this buffer is NOT copied. + + + + The current position within the buffer. + + + + + Reads a boolean from the stream. + + + The value read. + + + + + Reads a byte from the stream. + + + The value read. + + + + + Reads a number of bytes from the stream. + + Number of bytes to read. + + Bytes read. (this is a copy). + + + + + This read a 16-bit byte count and a array of bytes of that size from the stream. + + + The bytes read from the stream. + + + + + Reads a char from the stream. + + + Value read. + + + + + Reads a unity Color objects. + + + The color read from the stream. + + + + + Reads a unity color32 objects. + + + The colo read from the stream. + + + + + Reads a double from the stream. + + + Value read. + + + + + Reads a reference to a GameObject from the stream. + + + The GameObject referenced. + + + + + Reads a signed 16 bit integer from the stream. + + + Value read. + + + + + Reads a signed 32bit integer from the stream. + + + Value read. + + + + + Reads a signed 64 bit integer from the stream. + + + Value read. + + + + + Reads a unity Matrix4x4 object. + + + The matrix read from the stream. + + + + + This is a utility function to read a typed network message from the stream. + + + The type of the Network Message, must be derived from MessageBase. + + + + + Reads a NetworkHash128 assetId. + + + The assetId object read from the stream. + + + + + Reads a NetworkInstanceId from the stream. + + + The NetworkInstanceId read. + + + + + Reads a reference to a NetworkIdentity from the stream. + + + The NetworkIdentity object read. + + + + + Reads a 32-bit variable-length-encoded value. + + + The 32 bit value read. + + + + + Reads a 64-bit variable-length-encoded value. + + + The 64 bit value read. + + + + + Reads a unity Plane object. + + + The plane read from the stream. + + + + + Reads a Unity Quaternion object. + + + The quaternion read from the stream. + + + + + Reads a Unity Ray object. + + + The ray read from the stream. + + + + + Reads a Unity Rect object. + + + The rect read from the stream. + + + + + Reads a signed byte from the stream. + + + Value read. + + + + + Reads a NetworkSceneId from the stream. + + + The NetworkSceneId read. + + + + + Reads a float from the stream. + + + Value read. + + + + + Reads a string from the stream. (max of 32k bytes). + + + Value read. + + + + + Reads a reference to a Transform from the stream. + + + The transform object read. + + + + + Reads an unsigned 16 bit integer from the stream. + + + Value read. + + + + + Reads an unsigned 32 bit integer from the stream. + + + Value read. + + + + + Reads an unsigned 64 bit integer from the stream. + + + Value read. + + + + + Reads a Unity Vector2 object. + + + The vector read from the stream. + + + + + Reads a Unity Vector3 objects. + + + The vector read from the stream. + + + + + Reads a Unity Vector4 object. + + + The vector read from the stream. + + + + + Sets the current position of the reader's stream to the start of the stream. + + + + + Returns a string representation of the reader's buffer. + + + Buffer contents. + + + + + This is used to identify networked objects in a scene. These values are allocated in the editor and are persistent for the lifetime of the object in the scene. + + + + + Returns true if the value is zero. Non-scene objects - ones which are spawned at runtime will have a sceneId of zero. + + + True if zero. + + + + + Returns a string like SceneId:value. + + + String representation of this object. + + + + + The internal value for this object. + + + + + High level network server. + + + + + Checks if the server has been started. + + + + + A list of all the current connections from clients. + + + + + Dictionary of the message handlers registered with the server. + + + + + The host topology that the server is using. + + + + + True is a local client is currently active on the server. + + + + + A list of local connections on the server. + + + + + The maximum delay before sending packets on connections. + + + + + The class to be used when creating new network connections. + + + + + The number of channels the network is configure with. + + + + + This is a dictionary of networked objects that have been spawned on the server. + + + + + Setting this true will make the server send peer info to all participants of the network. + + + + + This makes the server listen for WebSockets connections instead of normal transport layer connections. + + + + + This accepts a network connection from another external source and adds it to the server. + + Network connection to add. + + True if added. + + + + + When an AddPlayer message handler has received a request from a player, the server calls this to assoicate the player object with the connection. + + Connection which is adding the player. + Player object spawned for the player. + The player controller ID number as specified by client. + + True if player was added. + + + + + When an AddPlayer message handler has received a request from a player, the server calls this to assoicate the player object with the connection. + + Connection which is adding the player. + Player object spawned for the player. + The player controller ID number as specified by client. + + True if player was added. + + + + + Clear all registered callback handlers. + + + + + This clears all of the networked objects that the server is aware of. This can be required if a scene change deleted all of the objects without destroying them in the normal manner. + + + + + Clears all registered spawn prefab and spawn handler functions for this server. + + + + + This configures the transport layer settings for the server. + + Transport layer confuration object. + The maximum number of client connections to allow. + Transport layer topology object to use. + + True if successfully configured. + + + + + This configures the transport layer settings for the server. + + Transport layer confuration object. + The maximum number of client connections to allow. + Transport layer topology object to use. + + True if successfully configured. + + + + + Destroys this object and corresponding objects on all clients. + + Game object to destroy. + + + + This destroys all the player objects associated with a NetworkConnections on a server. + + The connections object to clean up for. + + + + Disconnect all currently connected clients. + + + + + This finds the NetworkIdentity game object that matches a netId. + + The netId of the NetworkIdentity object to find. + + The game object that matches the netId. + + + + + Gets aggregate packet stats for all connections. + + + Dictionary of msg types and packet statistics. + + + + + Get inbound network statistics for the server. + + Number of messages received so far. + Number of bytes received so far. + + + + Get outbound network statistics for the client. + + Number of messages sent so far (including collated messages send through buffer). + Number of messages sent through buffer. + Number of bytes sent so far. + Number of messages buffered for sending per second. + + + + Start the server on the given port number. Note that if a match has been created, this will listen using the relay server instead of a local socket. + + The IP address to bind to (optional). + Listen port number. + + True if listen succeeded. + + + + + Start the server on the given port number. Note that if a match has been created, this will listen using the relay server instead of a local socket. + + The IP address to bind to (optional). + Listen port number. + + True if listen succeeded. + + + + + Starts a server using a relay server. This is the manual way of using the relay server, as the regular NetworkServer.Connect() will automatically use the relay server if a match exists. + + Relay server IP Address. + Relay server port. + GUID of the network to create. + This server's sourceId. + The node to join the network with. + + + + Register a handler for a particular message type. + + Message type number. + Function handler which will be invoked for when this message type is received. + + + + This removes an external connection added with AddExternalConnection(). + + The id of the connection to remove. + + + + This replaces the player object for a connection with a different player object. The old player object is not destroyed. + + Connection which is adding the player. + Player object spawned for the player. + The player controller ID number as specified by client. + + True if player was replaced. + + + + + This replaces the player object for a connection with a different player object. The old player object is not destroyed. + + Connection which is adding the player. + Player object spawned for the player. + The player controller ID number as specified by client. + + True if player was replaced. + + + + + Reset the NetworkServer singleton. + + + + + Resets the packet stats on all connections. + + + + + Sends a network message to all connected clients on a specified transport layer QoS channel. + + The message id. + The message to send. + The transport layer channel to use. + + True if the message was sent. + + + + + Sends a network message to all connected clients that are "ready" on a specified transport layer QoS channel. + + An object to use for context when calculating object visibility. If null, then the message is sent to all ready clients. + The message id. + The message to send. + The transport layer channel to send on. + + True if the message was sent. + + + + + This sends an array of bytes to a specific player. + + The player to send he bytes to. + Array of bytes to send. + Size of array. + Transport layer channel id to send bytes on. + + + + This sends an array of bytes to all ready players. + + Array of bytes to send. + Size of array. + Transport layer channel id to send bytes on. + + + + This sends information about all participants in the current network game to the connection. + + Connection to send peer info to. + + + + Send a message structure with the given type number to all connected clients. + + Message structure. + Message type. + + Success if message is sent. + + + + + Send a message to the client which owns the given connection ID. + + Client connection ID. + Message struct to send. + Message type. + + + + Send a message to the client which owns the given player object instance. + + The players game object. + Message struct. + Message type. + + + + Send a message structure with the given type number to only clients which are ready. + + Message structure. + Message type. + + Success if message is sent. + + + + + Send given message structure as an unreliable message to all connected clients. + + Message structure. + Message type. + + Success if message is sent. + + + + + Send given message structure as an unreliable message only to ready clients. + + Message structure. + Message type. + + Success if message is sent. + + + + + Sends the contents of a NetworkWriter object to the ready players. + + The writer object to send. + The QoS channel to send the data on. + + + + Marks all connected clients as no longer ready. + + + + + Sets the client of the connection to be not-ready. + + The connection of the client to make not ready. + + + + Sets the client to be ready. + + The connection of the client to make ready. + + + + This sets the class used when creating new network connections. + + + + + This shuts down the server and disconnects all clients. + + + + + Spawn the given game object on all clients which are ready. + + Game object with NetworkIdentity to spawn. + + + + Spawn the given game object on all clients which are ready. + + Game object with NetworkIdentity to spawn. + + + + This causes NetworkIdentity objects in a scene to be spawned on a server. + + + Success if objects where spawned. + + + + + This spawns an object like NetworkServer.Spawn() but also assigns Client Authority to the specified client. + + The object to spawn. + The player object to set Client Authority to. + The assetId of the object to spawn. Used for custom spawn handlers. + The connection to set Client Authority to. + + True if the object was spawned. + + + + + This spawns an object like NetworkServer.Spawn() but also assigns Client Authority to the specified client. + + The object to spawn. + The player object to set Client Authority to. + The assetId of the object to spawn. Used for custom spawn handlers. + The connection to set Client Authority to. + + True if the object was spawned. + + + + + This spawns an object like NetworkServer.Spawn() but also assigns Client Authority to the specified client. + + The object to spawn. + The player object to set Client Authority to. + The assetId of the object to spawn. Used for custom spawn handlers. + The connection to set Client Authority to. + + True if the object was spawned. + + + + + Unregisters a handler for a particular message type. + + The message type to remove the handler for. + + + + This takes an object that has been spawned and un-spawns it. + + The spawned object to be unspawned. + + + + This attribute is used to configure the network settings of scripts that are derived from the NetworkBehaviour base class. + + + + + The QoS channel to use for updates for this script. + + + + + The sendInterval control how frequently updates are sent for this script. + + + + + This component is used to make a gameObject a starting position for spawning player objects in multiplayer games. + + + + + This is passed to handler funtions registered for the SYSTEM_ADD_PLAYER built-in message. + + + + + The extra message data included in the AddPlayerMessage. + + + + + The size of the extra message data included in the AddPlayerMessage. + + + + + The playerId of the new player. + + + + + A utility class to send a network message with no contents. + + + + + This is passed to handler functions registered for the SYSTEM_ERROR built-in message. + + + + + The error code. + + + + + A utility class to send simple network messages that only contain an integer. + + + + + The integer value to serialize. + + + + + This is passed to handler funtions registered for the SYSTEM_NOT_READY built-in message. + + + + + Information about another participant in the same network game. + + + + + The IP address of the peer. + + + + + The id of the NetworkConnection associated with the peer. + + + + + True if this peer is the host of the network game. + + + + + True if the peer if the same as the current client. + + + + + The network port being used by the peer. + + + + + Internal UNET message for sending information about network peers to clients. + + + + + The list of participants in a networked game. + + + + + This is passed to handler funtions registered for the SYSTEM_READY built-in message. + + + + + This is passed to handler funtions registered for the SYSTEM_REMOVE_PLAYER built-in message. + + + + + The player ID of the player object which should be removed. + + + + + This is a utility class for simple network messages that contain only a string. + + + + + The string that will be serialized. + + + + + A component to synchronize the position of networked objects. + + + + + Cached CharacterController. + + + + + A callback that can be used to validate on the server, the movement of client authoritative objects. + + + + + A callback that can be used to validate on the server, the movement of client authoritative objects. + + + + + Tells the NetworkTransform that it is on a surface (this is the default). + + + + + Enables interpolation of the synchronized movement. + + + + + Enables interpolation of the synchronized rotation. + + + + + The most recent time when a movement synchronization packet arrived for this object. + + + + + The distance that an object can move without sending a movement synchronization update. + + + + + Cached Rigidbody2D. + + + + + Cached Rigidbody. + + + + + How much to compress rotation sync updates. + + + + + The sendInterval controls how often state updates are sent for this object. + + + + + If a movement update puts an object further from its current position that this value, it will snap to the position instead of moving smoothly. + + + + + Which axis should rotation by synchronized for. + + + + + The target position interpolating towards. + + + + + The target rotation interpolating towards. + + + + + The target position interpolating towards. + + + + + The velocity send for synchronization. + + + + + What method to use to sync the object's position. + + + + + An axis or set of axis. + + + + + Only x axis. + + + + + The x and y axis. + + + + + The x, y and z axis. + + + + + The x and z axis. + + + + + Only the y axis. + + + + + The y and z axis. + + + + + Only the z axis. + + + + + Do not sync. + + + + + This is the delegate use for the movement validation callback function clientMoveCallback2D on NetworkTransforms. + + The new position from the client. + The new velocity from the client. + The new rotation from the client. + + + + This is the delegate use for the movement validation callback function clientMoveCallback3D on NetworkTransforms. + + The new position from the client. + The new velocity from the client. + The new rotation from the client. + + + + How much to compress sync data. + + + + + High Compression - sacrificing accuracy. + + + + + A low amount of compression that preserves accuracy. + + + + + Do not compress. + + + + + How to synchronize an object's position. + + + + + Sync using the CharacterController component. + + + + + Dont synchronize. + + + + + Sync using the Rigidbody2D component. + + + + + Sync using the Rigidbody component. + + + + + Sync using the game object's base transform. + + + + + A component to synchronize the position of child transforms of networked objects. + + + + + A unique Identifier for this NetworkTransformChild component on this root object. + + + + + A callback function to allow server side validation of the movement of the child object. + + + + + The rate to interpolate towards the target position. + + + + + The rate to interpolate to the target rotation. + + + + + The most recent time when a movement synchronization packet arrived for this object. + + + + + The distance that an object can move without sending a movement synchronization update. + + + + + How much to compress rotation sync updates. + + + + + The sendInterval controls how often state updates are sent for this object. + + + + + Which axis should rotation by synchronized for. + + + + + The child transform to be synchronized. + + + + + The target position interpolating towards. + + + + + The target rotation interpolating towards. + + + + + This is a helper component to help understand and debug networked movement synchronization with the NetworkTransform component. + + + + + The prefab to use for the visualization object. + + + + + General purpose serializer for UNET (for serializing data to byte arrays). + + + + + Returns the internal array of bytes the writer is using. This is NOT a copy. + + + Internal buffer. + + + + + Creates a new NetworkWriter object. + + A buffer to write into. This is not copied. + + + + Creates a new NetworkWriter object. + + A buffer to write into. This is not copied. + + + + This fills out the size header of a message begun with StartMessage(), so that it can be send using Send() functions. + + + + + The current position of the internal buffer. + + + + + Seeks to the start of the internal buffer. + + + + + This begins a new message, which should be completed with FinishMessage() once the payload has been written. + + Message type. + + + + Returns a copy of internal array of bytes the writer is using, it copies only the bytes used. + + + Copy of data used by the writer. + + + + + This writes the a reference to a GameObject with a NetworkIdentity component to the stream. The object should have been spawned for clients to know about it. + + The GameObject to write. + + + + This writes a 16-bit count and a array of bytes of that length to the stream. + + Array of bytes to write. + Number of bytes from the array to write. + + + + This writes a 16-bit count and an array of bytes of that size to the stream. + + Bytes to write. + + + + This writes the 32-bit value to the stream using variable-length-encoding. + + Value to write. + + + + This writes the 64-bit value to the stream using variable-length-encoding. + + Value to write. + + + + This represents a networked player. + + + + + The game object for this player. + + + + + The local player ID number of this player. + + + + + The NetworkIdentity component of the player. + + + + + Checks if this PlayerController has an actual player attached to it. + + + + + The maximum number of local players that a client connection can have. + + + + + String representation of the player objects state. + + + String with the object state. + + + + + Enumeration of methods of where to spawn player objects in multiplayer games. + + + + + Spawn players at a randomly chosen starting position. + + + + + Spawn players at the next start position. + + + + + A Custom Attribute that can be added to member functions of NetworkBehaviour scripts, to make them only run on servers. + + + + + A Custom Attribute that can be added to member functions of NetworkBehaviour scripts, to make them only run on servers, but not generate warnings. + + + + + Signature of spawn functions that are passed to NetworkClient.RegisterSpawnFunction(). This is optional, as in most cases RegisterPrefab will be used instead. + + + + + + + This is an attribute that can be put on events in NetworkBehaviour classes to allow them to be invoked on client when the event is called on the sserver. + + + + + The UNET QoS channel that this event should be sent on. + + + + + This is the base class for type-specific SyncList classes. + + + + + Same as List:Add() but the item is added on clients. + + Item to add. + + + + The delegate type used for SyncListChanged. + + + + + Same as List:Clear() but the list is cleared on clients. + + + + + This method is used when deserializing SyncList items from a stream. + + Stream to read from. + + New instance of the SyncList value type. + + + + + Marks an item in the list as dirty, so it will be updated on clients. + + Index of item to dirty. + + + + Internal function used for remote list operations. + + List operation. + The index of the item being operated on. + The item being operated on. + + + + Internal function. + + The behaviour the list belongs to. + Identifies this list. + + + + Same as List::Insert() but also inserts into list on clients. + + Where to insert the item. + Item to insert. + + + + The types of operations that can occur for SyncLists. + + + + + Item was added to the list. + + + + + The list was cleared. + + + + + An item in the list was manually marked dirty. + + + + + An item was inserted into the list. + + + + + An item was removed from the list. + + + + + An item was removed at an index from the list. + + + + + An item was set to a new value in the list. + + + + + Same as List:Remove except removes on clients also. + + Item to remove. + + Success if removed. + + + + + Same as List:Remove except it removes the index on clients also. + + Index to remove. + + + + This is used to write a value object from a SyncList to a stream. + + Stream to write to. + Item to write. + + + + A delegate that can be populated to recieve callbacks when the list changes. + + The operation that occurred. + The index of the item that was effected. + + + + A list of booleans that will be synchronized from server to clients. + + + + + A list of floats that will be synchronized from server to clients. + + + + + A list of integers that will be synchronized from server to clients. + + + + + This is a list of strings that will be synchronized from the server to clients. + + + + + This class is used for lists of structs that are synchronized from the server to clients. + + + + + A list of unsigned integers that will be synchronized from server to clients. + + + + + [SyncVar] is an attribute that can be put on member variables of UNeBehaviour classes. These variables will have their values sychronized from the server to clients in the game that are in the ready state. + + + + + + The hook attribute can be used to specify a function to be called when the sync var changes value on the client. + + + + + Delegate for a function which will handle destruction of objects created with NetworkServer.Spawn. + + + + + + Enumeration of Networking versions. + + + + + The current UNET version. + + + + diff --git a/Roguelike/Library/UnityAssemblies/UnityEngine.UI.xml b/Roguelike/Library/UnityAssemblies/UnityEngine.UI.xml new file mode 100644 index 00000000..027ecd53 --- /dev/null +++ b/Roguelike/Library/UnityAssemblies/UnityEngine.UI.xml @@ -0,0 +1,5843 @@ + + + + + UnityEngine.UI + + + + Event Data associated with Axis Events (Controller / Keyboard). + + + + + MoveDirection for this event. + + + + + Raw input vector associated with this event. + + + + + A class that contains the base event data that is common to all event types in the new EventSystem. + + + + + A reference to the BaseInputModule that sent this event. + + + + + The object currently considered selected by the EventSystem. + + + + + Has the event been marked as used? + + + + + Construct a BaseEventData tied to the passed EventSystem. + + + + + + Reset the Event to the default state. + + + + + Use the event. + + + + + A base module that raises events and sends them to GameObjects. + + + + + Called when the module is activated. Override this if you want custom code to execute when you activate your module. + + + + + Called when the module is deactivated. Override this if you want custom code to execute when you deactivate your module. + + + + + Given an input movement, determine the best MoveDirection. + + X movement. + Y movement. + Dead zone. + + + + Given an input movement, determine the best MoveDirection. + + X movement. + Y movement. + Dead zone. + + + + Given 2 GameObjects, return a common root GameObject (or null). + + + + + + + Return the first valid RaycastResult. + + + + + + Given some input data generate an AxisEventData that can be used by the event system. + + X movement. + Y movement. + Dead Zone. + + + + Generate a BaseEventData that can be used by the EventSystem. + + + + + Handle sending enter and exit events when a new enter targer is found. + + + + + + + Check to see if the module is supported. Override this if you have a platfrom specific module (eg. TouchInputModule that you do not want to activate on standalone. + + + Is the module supported. + + + + + Is the pointer over a GameObject that is controlled by the EventSystem. + + Pointer id. + + + + See MonoBehaviour.OnDisable. + + + + + Process the current tick for the module. + + + + + Should be activated. + + + Should the module be activated. + + + + + Update the internal state of the Module. + + + + + Base class for any RayCaster. + + + + + The camera that will generate rays for this raycaster. + + + + + Priority of the caster relative to other casters. + + + + + Priority of the raycaster based upon render order. + + + + + Priority of the raycaster based upon sort order. + + + + + See MonoBehaviour.OnDisable. + + + + + Raycast against the scene. + + Current event data. + List of hit Objects. + + + + Enum that tracks event State. + + + + + Unused. + + + + + Used. + + + + + Handles input, raycasting, and sending events. + + + + + Returns true if the EventSystem is already in a SetSelectedGameObject. + + + + + Return the current EventSystem. + + + + + The currently active EventSystems.BaseInputModule. + + + + + The GameObject currently considered active by the EventSystem. + + + + + The GameObject that was selected first. + + + + + The soft area for dragging in pixels. + + + + + Should the EventSystem allow navigation events (move submit cancel). + + + + + Is the pointer with the given id over an EventSystem object? + + Pointer (touch / mouse) id. + + + + Is the pointer with the given id over an EventSystem object? + + Pointer (touch / mouse) id. + + + + See MonoBehaviour.OnDisable. + + + + + Raycast into the scene using all configured BaseRaycasters. + + Current pointer data. + List of 'hits' to populate. + + + + Set the object as selected. Will send an OnDeselect the the old selected object and OnSelect to the new selected object. + + GameObject to select. + Associated EventData. + + + + Recalculate the internal list of BaseInputModules. + + + + + Receives events from the EventSystem and calls registered functions for each event. + + + + + All the functions registered in this EventTrigger. + + + + + All the functions registered in this EventTrigger. + + + + + An Entry in the EventSystem delegates list. + + + + + The desired UnityEvent to be Invoked. + + + + + What type of event is the associated callback listening for. + + + + + See IBeginDragHandler.OnBeginDrag. + + + + + + See ICancelHandler.OnCancel. + + + + + + See IDeselectHandler.OnDeselect. + + + + + + See IDragHandler.OnDrag. + + + + + + See IDropHandler.OnDrop. + + + + + + See See IBeginDragHandler.OnEndDrag. + + + + + + Called by a BaseInputModule when a drag has been found but before it is valid to begin the drag. + + + + + + See IMoveHandler.OnMove. + + + + + + See IPointerClickHandler.OnPointerClick. + + + + + + See IPointerDownHandler.OnPointerDown. + + + + + + See IPointerEnterHandler.OnPointerEnter. + + + + + + See IPointerExitHandler.OnPointerExit. + + + + + + See IPointerUpHandler.OnPointerUp. + + + + + + See IScrollHandler.OnScroll. + + + + + + See ISelectHandler.OnSelect. + + + + + + See ISubmitHandler.OnSubmit. + + + + + + See IUpdateSelectedHandler.OnUpdateSelected. + + + + + + UnityEvent class for Triggers. + + + + + The type of event the TriggerEvent is intercepting. + + + + + Intercepts IBeginDragHandler.OnBeginDrag. + + + + + Intercepts ICancelHandler.OnCancel. + + + + + Intercepts a IDeselectHandler.OnDeselect. + + + + + Intercepts a IDragHandler.OnDrag. + + + + + Intercepts a IDropHandler.OnDrop. + + + + + Intercepts IEndDragHandler.OnEndDrag. + + + + + Intercepts IInitializePotentialDrag.InitializePotentialDrag. + + + + + Intercepts a IMoveHandler.OnMove. + + + + + Intercepts a IPointerClickHandler.OnPointerClick. + + + + + Intercepts a IPointerDownHandler.OnPointerDown. + + + + + Intercepts a IPointerEnterHandler.OnPointerEnter. + + + + + Intercepts a IPointerExitHandler.OnPointerExit. + + + + + Intercepts a IPointerUpHandler.OnPointerUp. + + + + + Intercepts a IScrollHandler.OnScroll. + + + + + Intercepts a ISelectHandler.OnSelect. + + + + + Intercepts ISubmitHandler.Submit. + + + + + Intercepts a IUpdateSelectedHandler.OnUpdateSelected. + + + + + Helper class that can be used to send IEventSystemHandler events to GameObjects. + + + + + IBeginDragHandler execute helper function. + + + + + ICancelHandler execute helper function. + + + + + IDeselectHandler execute helper function. + + + + + IDragHandler execute helper function. + + + + + IDropHandler execute helper function. + + + + + IEndDragHandler execute helper function. + + + + + IInitializePotentialDragHandler execute helper function. + + + + + IMoveHandler execute helper function. + + + + + IPointerClickHandler execute helper function. + + + + + IPointerDownHandler execute helper function. + + + + + IPointerEnterHandler execute helper function. + + + + + IPointerExitHandler execute helper function. + + + + + IPointerUpHandler execute helper function. + + + + + IScrollHandler execute helper function. + + + + + ISelectHandler execute helper function. + + + + + ISubmitHandler execute helper function. + + + + + IUpdateSelectedHandler execute helper function. + + + + + Can the given GameObject handle the IEventSystemHandler of type T. + + GameObject. + + Can Handle. + + + + + Funtion definition for an EventFunction that is used to map a given EventInterface into a specific event call. + + + + + + + Execute the event of type T : IEventSystemHandler on GameObject. + + Target GameObject. + Data associated with the Executing event. + Function to execute on the gameObject components. + + Was there a handler for the event. + + + + + Recurse up the hierarchy calling Execute<T> until there is a GameObject that can handle the event. + + Start GameObject. + Data associated with the Executing event. + Function to execute on the gameObject components. + + GameObject that handled the event. + + + + + Starting the hierarchy (starting at root) for a GameObject that can handle <T> + + Root GameObject. + + Handling GameObject. + + + + + Attempt to convert the data to type T. If conversion fails an ArgumentException is thrown. + + Data to validate. + + Data as T. + + + + + Interface to implement if you wish to receive OnBeginDrag callbacks. + + + + + Called by a BaseInputModule before a drag is started. + + Current event data. + + + + Interface to implement if you wish to receive OnCancel callbacks. + + + + + Called by a BaseInputModule when a Cancel event occurs. + + Current event data. + + + + Interface to implement if you wish to receive OnDeselect callbacks. + + + + + Called by the EventSystem when a new object is being selected. + + Current event data. + + + + Interface to implement if you wish to receive OnDrag callbacks. + + + + + When draging is occuring this will be called every time the cursor is moved. + + Current event data. + + + + Interface to implement if you wish to receive OnDrop callbacks. + + + + + Called by a BaseInputModule on a target that can accept a drop. + + Current event data. + + + + Interface to implement if you wish to receive OnEndDrag callbacks. + + + + + Called by a BaseInputModule when a drag is ended. + + Current event data. + + + + Base class that all EventSystem events inherit from. + + + + + Interface to implement if you wish to receive OnInitializePotentialDrag callbacks. + + + + + Called by a BaseInputModule when a drag has been found but before it is valid to begin the drag. + + + + + + Interface to implement if you wish to receive OnMove callbacks. + + + + + Called by a BaseInputModule when a move event occurs. + + Current event data. + + + + Interface to implement if you wish to receive OnPointerClick callbacks. + + + + + + + Current event data. + + + + Interface to implement if you wish to receive OnPointerDown callbacks. + + + + + + + Current event data. + + + + Interface to implement if you wish to receive OnPointerEnter callbacks. + + + + + + + Current event data. + + + + Interface to implement if you wish to receive OnPointerExit callbacks. + + + + + + + Current event data. + + + + Interface to implement if you wish to receive OnPointerUp callbacks. + + + + + + + Current event data. + + + + Interface to implement if you wish to receive OnScroll callbacks. + + + + + + + Current event data. + + + + Interface to implement if you wish to receive OnSelect callbacks. + + + + + + + Current event data. + + + + Interface to implement if you wish to receive OnSubmit callbacks. + + + + + + + Current event data. + + + + Interface to implement if you wish to receive OnUpdateSelected callbacks. + + + + + + + Current event data. + + + + 8 direction movement enum. + + + + + Down. + + + + + Left. + + + + + None. + + + + + Right. + + + + + Up. + + + + + Raycaster for casting against 2D Physics components. + + + + + See: BaseRaycaster. + + + + + + + Raycaster for casting against 3D Physics components. + + + + + Get the depth of the configured camera. + + + + + Get the camera that is used for this module. + + + + + Mask of allowed raycast events. + + + + + Logical and of Camera mask and eventMask. + + + + + See: BaseRaycaster. + + + + + + + Event payload associated with pointer (mouse / touch) events. + + + + + The EventSystems.PointerEventData.InputButton for this event. + + + + + Number of clicks in a row. + + + + + The last time a click event was sent. + + + + + Pointer delta since last update. + + + + + Is a drag operation currently occuring. + + + + + The camera associated with the last OnPointerEnter event. + + + + + List of objects in the hover stack. + + + + + The GameObject for the last press event. + + + + + RaycastResult associated with the current event. + + + + + The object that is receiving 'OnDrag'. + + + + + The object that received 'OnPointerEnter'. + + + + + Id of the pointer (touch id). + + + + + The GameObject that received the OnPointerDown. + + + + + RaycastResult associated with the pointer press. + + + + + Current pointer position. + + + + + The camera associated with the last OnPointerPress event. + + + + + Position of the press. + + + + + The object that the press happened on even if it can not handle the press event. + + + + + The amount of scroll since the last update. + + + + + Should a drag threshold be used? + + + + + The state of a press for the given frame. + + + + + Same as last frame. + + + + + Button was pressed this frame. + + + + + Button was pressed and released this frame. + + + + + Button was released this frame. + + + + + Input press tracking. + + + + + Left button. + + + + + Middle button. + + + + + Right button. + + + + + Is the pointer moving. + + + Moving. + + + + + Is scroll being used on the input device. + + + Scrolling. + + + + + A BaseInputModule for pointer input. + + + + + Touch id for when simulating touches on a non touch device. + + + + + Id of the cached left mouse pointer event. + + + + + Id of the cached middle mouse pointer event. + + + + + Id of the cached right mouse pointer event. + + + + + Clear all pointers and deselect any selected objects in the EventSystem. + + + + + Copy one PointerEventData to another. + + + + + + + Deselect the current selected GameObject if the currently pointed-at GameObject is different. + + The GameObject the pointer is currently over. + Current event data. + + + + Return the last PointerEventData for the given touch / mouse id. + + + + + + Return the current MouseState. + + + + + + Return the current MouseState. + + + + + + Seach the cache for currently active pointers, return true if found. + + Touch ID. + Found data. + If not found should it be created. + + True if a pointer is found. + + + + + Given a touch populate the PointerEventData and return if we are pressed or released. + + Processing Touch. + Are we pressed. + Are we released. + + + + Information about a mouse button event. + + + + + Pointer data associated with the mouse event. + + + + + The state of the button this frame. + + + + + Was the button pressed this frame? + + + + + Was the button released this frame? + + + + + Process the drag for the current frame with the given pointer event. + + + + + + Process movement for the current frame with the given pointer event. + + + + + + Remove the PointerEventData from the cache. + + + + + + Given a mouse button return the current state for the frame. + + Mouse Button id. + + + + A hit result from a BaseRaycastModule. + + + + + The relative depth of the element. + + + + + Distance to the hit. + + + + + The GameObject that was hit by the raycast. + + + + + Hit index. + + + + + Is there an associated module and a hit GameObject. + + + + + BaseInputModule that raised the hit. + + + + + The screen position from which the raycast was generated. + + + + + The SortingLayer of the hit object. + + + + + The SortingOrder for the hit object. + + + + + The normal at the hit location of the raycast. + + + + + The world position of the where the raycast has hit. + + + + + Reset the result. + + + + + A BaseInputModule designed for mouse keyboard controller input. + + + + + Is this module allowed to be activated if you are on mobile. + + + + + Input manager name for the 'cancel' button. + + + + + Force this module to be active. + + + + + Input manager name for the horizontal axis button. + + + + + Number of keyboard / controller inputs allowed per second. + + + + + Delay in seconds before the input actions per second repeat rate takes effect. + + + + + Maximum number of input events handled per second. + + + + + Input manager name for the vertical axis. + + + + + See BaseInputModule. + + + + + See BaseInputModule. + + + + + See BaseInputModule. + + + Supported. + + + + + See BaseInputModule. + + + + + Iterate through all the different mouse events. + + The mouse pointer Event data id to get. + + + + Iterate through all the different mouse events. + + The mouse pointer Event data id to get. + + + + Calulate and process any mouse button state changes. + + The data pertaining to the current mouse state. + + + + Calculate and send a move event to the current selected object. + + + If the move event was used by the selected object. + + + + + Calculate and send a submit event to the current selected object. + + + If the submit event was used by the selected object. + + + + + Send a update event to the currently selected object. + + + If the update event was used by the selected object. + + + + + See BaseInputModule. + + + Should activate. + + + + + See BaseInputModule. + + + + + Input module used for touch based input. + + + + + Can this module be activated on a standalone platform? + + + + + Force this module to be active. + + + + + See BaseInputModule. + + + + + See BaseInputModule. + + + Supported. + + + + + See BaseInputModule. + + + + + See BaseInputModule. + + + Should activate. + + + + + See BaseInputModule. + + + + + Base behaviour that has protected implementations of Unity lifecycle functions. + + + + + See MonoBehaviour.Awake. + + + + + Returns true if the GameObject and the Component are active. + + + Active. + + + + + Returns true if the native representation of the behaviour has been destroyed. + + + True if Destroyed. + + + + + See MonoBehaviour.OnBeforeTransformParentChanged. + + + + + See MonoBehaviour.OnCanvasGroupChanged. + + + + + Called when the state of the parent Canvas is changed. + + + + + See MonoBehaviour.OnDestroy. + + + + + See MonoBehaviour.OnDidApplyAnimationProperties. + + + + + See MonoBehaviour.OnDisable. + + + + + See MonoBehaviour.OnEnable. + + + + + See MonoBehaviour.OnRectTransformDimensionsChange. + + + + + See MonoBehaviour.OnRectTransformParentChanged. + + + + + See MonoBehaviour.OnValidate. + + + + + See MonoBehaviour.Reset. + + + + + See MonoBehaviour.Start. + + + + + Structure to store the state of an animation transition on a Selectable. + + + + + Trigger to send to animator when entering disabled state. + + + + + Trigger to send to animator when entering highlighted state. + + + + + Trigger to send to animator when entering normal state. + + + + + Trigger to send to animator when entering pressed state. + + + + + Resizes a RectTransform to fit a specified aspect ratio. + + + + + The mode to use to enforce the aspect ratio. + + + + + The aspect ratio to enforce. This means width divided by height. + + + + + Specifies a mode to use to enforce an aspect ratio. + + + + + Sizes the rectangle such that the parent rectangle is fully contained within. + + + + + Sizes the rectangle such that it's fully contained within the parent rectangle. + + + + + Changes the width of the rectangle to match the aspect ratio. + + + + + The aspect ratio is not enforced. + + + + + Changes the height of the rectangle to match the aspect ratio. + + + + + See MonoBehaviour.OnDisable. + + + + + Mark the AspectRatioFitter as dirty. + + + + + Method called by the layout system. + + + + + Method called by the layout system. + + + + + Base class for effects that modify the generated Mesh. + + + + + See:IMeshModifier. + + + + + + See MonoBehaviour.OnDisable. + + + + + Base class for effects that modify the the generated Vertex Buffers. + + + + + See:IVertexModifier. + + + + + + A standard button that can be clicked in order to trigger an event. + + + + + UnityEvent to be fired when the buttons is pressed. + + + + + Function definition for a button click event. + + + + + Registered IPointerClickHandler callback. + + Data passed in (Typically by the event system). + + + + Registered ISubmitHandler callback. + + Data passed in (Typically by the event system). + + + + The Canvas Scaler component is used for controlling the overall scale and pixel density of UI elements in the Canvas. This scaling affects everything under the Canvas, including font sizes and image borders. + + + + + The pixels per inch to use for sprites that have a 'Pixels Per Unit' setting that matches the 'Reference Pixels Per Unit' setting. + + + + + The amount of pixels per unit to use for dynamically created bitmaps in the UI, such as Text. + + + + + The DPI to assume if the screen DPI is not known. + + + + + Setting to scale the Canvas to match the width or height of the reference resolution, or a combination. + + + + + The physical unit to specify positions and sizes in. + + + + + If a sprite has this 'Pixels Per Unit' setting, then one pixel in the sprite will cover one unit in the UI. + + + + + The resolution the UI layout is designed for. + + + + + Scales all UI elements in the Canvas by this factor. + + + + + A mode used to scale the canvas area if the aspect ratio of the current resolution doesn't fit the reference resolution. + + + + + Determines how UI elements in the Canvas are scaled. + + + + + Method that handles calculations of canvas scaling. + + + + + Handles canvas scaling for a constant physical size. + + + + + Handles canvas scaling for a constant pixel size. + + + + + Handles canvas scaling that scales with the screen size. + + + + + Handles canvas scaling for world canvas. + + + + + See MonoBehaviour.OnDisable. + + + + + Determines how UI elements in the Canvas are scaled. + + + + + Using the Constant Physical Size mode, positions and sizes of UI elements are specified in physical units, such as millimeters, points, or picas. + + + + + Using the Constant Pixel Size mode, positions and sizes of UI elements are specified in pixels on the screen. + + + + + Using the Scale With Screen Size mode, positions and sizes can be specified according to the pixels of a specified reference resolution. +If the current screen resolution is larger then the reference resolution, the Canvas will keep having only the resolution of the reference resolution, but will scale up in order to fit the screen. If the current screen resolution is smaller than the reference resolution, the Canvas will similarly be scaled down to fit. + + + + + Scale the canvas area with the width as reference, the height as reference, or something in between. + + + + + Expand the canvas area either horizontally or vertically, so the size of the canvas will never be smaller than the reference. + + + + + Scale the canvas area with the width as reference, the height as reference, or something in between. + + + + + Crop the canvas area either horizontally or vertically, so the size of the canvas will never be larger than the reference. + + + + + Sets the referencePixelsPerUnit on the Canvas. + + + + + + Sets the scale factor on the canvas. + + The scale factor to use. + + + + Settings used to specify a physical unit. + + + + + Use centimeters. +A centimeter is 1/100 of a meter. + + + + + Use inches. + + + + + Use millimeters. +A millimeter is 110 of a centimeter, and 11000 of a meter. + + + + + Use picas. +One pica is 1/6 of an inch. + + + + + Use points. +One point is 112 of a pica, and 172 of an inch. + + + + + Handles per-frame checking if the canvas scaling needs to be updated. + + + + + Values of 'update' called on a Canvas update. + + + + + Called late, before render. + + + + + Called for layout. + + + + + Max enum value. + + + + + Called after layout. + + + + + Called before layout. + + + + + Called before rendering. + + + + + A place where CanvasElements can register themselves for rebuilding. + + + + + Get the singleton registry. + + + + + Are graphics being rebuild. + + + Rebuilding graphics. + + + + + Is layout being rebuilt? + + + Rebuilding layout. + + + + + Rebuild the graphics of the given element. + + Element to rebuild. + + + + Rebuild the layout of the given element. + + Element to rebuild. + + + + Rebuild the layout of the given element. + + Element to rebuild. + + Was the element scheduled. + + + + + Was the element scheduled. + + Element to rebuild. + + Was the element scheduled. + + + + + Remove the given element from rebuild. + + Element to remove. + + + + Registry class to keep track of all IClippers that exist in the scene. + + + + + Singleton instance. + + + + + Perform the clipping on all registered IClipper. + + + + + Register an IClipper. + + + + + + Unregister an IClipper. + + + + + + Utility class to help when clipping using IClipper. + + + + + Find the Rect to use for clipping. + + RectMasks to build the overlap rect from. + Was there a valid Rect found. + + The compound Rect. + + + + + Structure to store the state of a color transition on a Selectable. + + + + + Multiplier applied to colors (allows brightening greater then base color). + + + + + Simple getter for the default ColorBlock. + + + + + Disabled Color. + + + + + How long a color transition should take. + + + + + Highlighted Color. + + + + + Normal Color. + + + + + Pressed Color. + + + + + Resizes a RectTransform to fit the size of its content. + + + + + The fit mode to use to determine the width. + + + + + The fit mode to use to determine the height. + + + + + The size fit mode to use. + + + + + Resize to the minimum size of the content. + + + + + Resize to the preferred size of the content. + + + + + Don't perform any resizing. + + + + + See MonoBehaviour.OnDisable. + + + + + Mark the ContentSizeFitter as dirty. + + + + + Method called by the layout system. + + + + + Method called by the layout system. + + + + + Utility class for creating default implementations of builtin UI controls. + + + + + Create a button. + + Object with resources to use. + + The root GameObject of the created element. + + + + + Create a dropdown. + + Object with resources to use. + + The root GameObject of the created element. + + + + + Create an image. + + Object with resources to use. + + The root GameObject of the created element. + + + + + Create an input field. + + Object with resources to use. + + The root GameObject of the created element. + + + + + Create a panel. + + Object with resources to use. + + The root GameObject of the created element. + + + + + Create a raw image. + + Object with resources to use. + + The root GameObject of the created element. + + + + + Create a scrollbar. + + Object with resources to use. + + The root GameObject of the created element. + + + + + Create a scroll view. + + Object with resources to use. + + The root GameObject of the created element. + + + + + Create a slider. + + Object with resources to use. + + The root GameObject of the created element. + + + + + Create a text object. + + C. + + The root GameObject of the created element. + + + + + Create a toggle. + + Object with resources to use. + + The root GameObject of the created element. + + + + + Object used to pass resources to use for the default controls. + + + + + Sprite used for background elements. + + + + + Sprite used for representation of an "on" state when present, such as a checkmark. + + + + + Sprite used to indicate that a button will open a dropdown when clicked. + + + + + Sprite used as background for input fields. + + + + + Sprite used for knobs that can be dragged, such as on a slider. + + + + + Sprite used for masking purposes, for example to be used for the viewport of a scroll view. + + + + + The primary sprite to be used for graphical UI elements, used by the button, toggle, and dropdown controls, among others. + + + + + A standard dropdown that presents a list of options when clicked, of which one can be chosen. + + + + + The Image component to hold the image of the currently selected option. + + + + + The Text component to hold the text of the currently selected option. + + + + + The Image component to hold the image of the item. + + + + + The Text component to hold the text of the item. + + + + + A UnityEvent that is invoked when when a user has clicked one of the options in the dropdown list. + + + + + The list of possible options. A text string and an image can be specified for each option. + + + + + The Rect Transform of the template for the dropdown list. + + + + + The index of the currently selected option. 0 is the first option, 1 is the second, and so on. + + + + + Override this method to implement a different way to obtain a blocker GameObject. + + The root canvas the dropdown is under. + + The obtained blocker. + + + + + Override this method to implement a different way to obtain a dropdown list GameObject. + + The template to create the dropdown list from. + + The obtained dropdown list. + + + + + Override this method to implement a different way to obtain an option item. + + The template to create the option item from. + + The obtained option item. + + + + + Override this method to implement a different way to dispose of a blocker GameObject that blocks clicks to other controls while the dropdown list is open. + + The blocker to dispose of. + + + + Override this method to implement a different way to dispose of a dropdown list GameObject. + + The dropdown list to dispose of. + + + + Override this method to implement a different way to dispose of an option item. + + The option item to dispose of. + + + + UnityEvent callback for when a dropdown current option is changed. + + + + + Hide the dropdown list. + + + + + Called by a BaseInputModule when a Cancel event occurs. + + + + + + Handling for when the dropdown is 'clicked'. + + Current event. + + + + What to do when the event system sends a submit Event. + + Current event. + + + + Class to store the text and/or image of a single option in the dropdown list. + + + + + The image associated with the option. + + + + + The text associated with the option. + + + + + Create an object representing a single option for the dropdown list. + + Optional text for the option. + Optional image for the option. + + + + Create an object representing a single option for the dropdown list. + + Optional text for the option. + Optional image for the option. + + + + Create an object representing a single option for the dropdown list. + + Optional text for the option. + Optional image for the option. + + + + Create an object representing a single option for the dropdown list. + + Optional text for the option. + Optional image for the option. + + + + Class used internally to store the list of options for the dropdown list. + + + + + The list of options for the dropdown list. + + + + + Show the dropdown list. + + + + + Struct for storing Text generation settings. + + + + + How is the text aligned. + + + + + Is best fit used. + + + + + Get a font data with sensible defaults. + + + + + Font to use. + + + + + Font size. + + + + + Font Style. + + + + + Horizontal overflow mode. + + + + + Line spacing. + + + + + Maximum text size. + + + + + Minimum text size. + + + + + Should RichText be used? + + + + + Vertical overflow mode. + + + + + Utility class that is used to help with Text update. + + + + + Register a Text element for receiving texture atlas rebuild calls. + + + + + + Deregister a Text element from receiving texture atlas rebuild calls. + + + + + + Base class for all visual UI Component. + + + + + A reference to the Canvas this Graphic is rendering to. + + + + + The CanvasRenderer used by this Graphic. + + + + + Base color of the Graphic. + + + + + Default material used to draw UI elements if no explicit material was specified. + + + + + Returns the default material for the graphic. + + + + + Absolute depth of the graphic in the hierarchy, used by rendering and events. + + + + + The graphic's texture. (Read Only). + + + + + The Material set by the user. + + + + + The material that will be sent for Rendering (Read only). + + + + + Should this graphic be considered a target for raycasting? + + + + + The RectTransform component used by the Graphic. + + + + + Tweens the alpha of the CanvasRenderer color associated with this Graphic. + + Target alpha. + Duration of the tween in seconds. + Should ignore Time.scale? + + + + Tweens the CanvasRenderer color associated with this Graphic. + + Target color. + Tween duration. + Should ignore Time.scale? + Should also Tween the alpha channel? + + + + Returns a pixel perfect Rect closest to the Graphic RectTransform. + + + Pixel perfect Rect. + + + + + See ICanvasElement.GraphicUpdateComplete. + + + + + See ICanvasElement.LayoutComplete. + + + + + See MonoBehaviour.OnDisable. + + + + + Callback function when a UI element needs to generate vertices. + + Mesh to populate with UI data. + + + + + Callback function when a UI element needs to generate vertices. + + Mesh to populate with UI data. + + + + + Editor-only callback that is issued by Unity if a rebuild of the Graphic is required. + + + + + Adjusts the given pixel to be pixel perfect. + + Local space point. + + Pixel perfect adjusted point. + + + + + When a GraphicRaycaster is raycasting into the scene it will first filter the elments using their RectTransform rect and then it will use this function to determine the elements hit mby the raycast. + + Screen point. + Camera. + + True if the provided point is a valid location for GraphicRaycaster raycasts. + + + + + Rebuilds the graphic geometry and its material on the PreRender cycle. + + The current step of the rendering CanvasUpdate cycle. + + + + Add a listener to receive notification when the graphics layout is dirtied. + + + + + + Add a listener to receive notification when the graphics material is dirtied. + + + + + + Add a listener to receive notification when the graphics vertices are dirtied. + + + + + + Mark the Graphic as dirty. + + + + + Mark the layout as dirty. + + + + + Mark the Material as dirty. + + + + + Adjusts the graphic size to make it pixel-perfect. + + + + + Mark the vertices as dirty. + + + + + Remove a listener from receiving notifications when the graphics layout is dirtied. + + + + + + Remove a listener from receiving notifications when the graphics material is dirtied. + + + + + + Remove a listener from receiving notifications when the graphics vertices are dirtied. + + The delegate function to remove. + + + + Call to update the geometry of the Graphic onto the CanvasRenderer. + + + + + Call to update the Material of the graphic onto the CanvasRenderer. + + + + + A BaseRaycaster to raycast against Graphic elements. + + + + + Type of objects that will block graphic raycasts. + + + + + See: BaseRaycaster. + + + + + Should graphics facing away from the raycaster be considered? + + + + + List of Raycasters to check for canvas blocking elements. + + + + + Blocked by 2D and 3D. + + + + + Not blocked. + + + + + 3D physics blocking. + + + + + 2D physics blocking. + + + + + See: BaseRaycaster. + + + + + + + EditorOnly class for tracking all Graphics. + + + + + Track a Graphic. + + + + + + Untrack a Graphic. + + + + + + Registry which maps a Graphic to the canvas it belongs to. + + + + + Singleton instance. + + + + + Return a list of Graphics that are registered on the Canvas. + + Input canvas. + + Graphics on the input canvas. + + + + + Store a link between the given canvas and graphic in the registry. + + Canvas to register. + Graphic to register. + + + + Deregister the given Graphic from a Canvas. + + Canvas. + Graphic to deregister. + + + + Layout child layout elements in a grid. + + + + + The size to use for each cell in the grid. + + + + + Which constraint to use for the GridLayoutGroup. + + + + + How many cells there should be along the constrained axis. + + + + + The spacing to use between layout elements in the grid. + + + + + Which axis should cells be placed along first? + + + + + Which corner should the first cell be placed in? + + + + + An axis that can be horizontal or vertical. + + + + + Horizontal. + + + + + Vertical. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + A constraint on either the number of columns or rows. + + + + + Constraint the number of columns to a specified number. + + + + + Constraint the number of rows to a specified number. + + + + + Don't constrain the number of rows or columns. + + + + + One of the four corners in a rectangle. + + + + + Lower left. + + + + + Lower right. + + + + + Upper left. + + + + + Upper right. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + Layout child layout elements side by side. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + Abstract base class for HorizontalLayoutGroup and VerticalLayoutGroup. + + + + + Whether to force the children to expand to fill additional available vertical space. + + + + + Whether to force the children to expand to fill additional available horizontal space. + + + + + The spacing to use between layout elements in the layout group. + + + + + Calculate the layout element properties for this layout element along the given axis. + + The axis to calculate for. 0 is horizontal and 1 is vertical. + Is this group a vertical group? + + + + Set the positions and sizes of the child layout elements for the given axis. + + The axis to handle. 0 is horizontal and 1 is vertical. + Is this group a vertical group? + + + + This is an element that can live on a Canvas. + + + + + Get the transform associated with the ICanvasElement. + + + + + Callback sent when this ICanvasElement has completed Graphic rebuild. + + + + + Return true if the element is considered destroyed. +Used if the native representation has been destroyed. + + + + + Callback sent when this ICanvasElement has completed layout. + + + + + Rebuild the element for the given stage. + + Stage being rebuild. + + + + Interface for elements that can be clipped if they are under an [[IClipper]. + + + + + RectTransform of the clippable. + + + + + Clip and cull the IClippable given the clipRect. + + Rectangle to clip against. + Is the Rect valid. If not then the rect has 0 size. + + + + Called when the state of a parent IClippable changes. + + + + + Set the clip rect for the IClippable. + + + + + + + Interface that can be used to recieve clipping callbacks as part of the canvas update loop. + + + + + Called after layout and before Graphic update of the Canvas update loop. + + + + + Base interface to implement by componets that control the layout of RectTransforms. + + + + + Callback invoked by the auto layout system which handles horizontal aspects of the layout. + + + + + Callback invoked by the auto layout system which handles vertical aspects of the layout. + + + + + A component is treated as a layout element by the auto layout system if it implements ILayoutElement. + + + + + The extra relative height this layout element should be allocated if there is additional available space. + + + + + The extra relative width this layout element should be allocated if there is additional available space. + + + + + The layout priority of this component. + + + + + The minimum height this layout element may be allocated. + + + + + The minimum width this layout element may be allocated. + + + + + The preferred height this layout element should be allocated if there is sufficient space. + + + + + The preferred width this layout element should be allocated if there is sufficient space. + + + + + The minWidth, preferredWidth, and flexibleWidth values may be calculated in this callback. + + + + + The minHeight, preferredHeight, and flexibleHeight values may be calculated in this callback. + + + + + ILayoutGroup is an ILayoutController that should drive the RectTransforms of its children. + + + + + A RectTransform will be ignored by the layout system if it has a component which implements ILayoutIgnorer. + + + + + Should this RectTransform be ignored bvy the layout system? + + + + + ILayoutSelfController is an ILayoutController that should drive its own RectTransform. + + + + + Displays a Sprite for the UI System. + + + + + The alpha threshold specifying the minimum alpha a pixel must have for the event to be passed through. + + + + + Amount of the Image shown when the Image.type is set to Image.Type.Filled. + + + + + Whether or not to render the center of a Tiled or Sliced image. + + + + + Whether the Image should be filled clockwise (true) or counter-clockwise (false). + + + + + What type of fill method to use. + + + + + Controls the origin point of the Fill process. Value means different things with each fill method. + + + + + See ILayoutElement.flexibleHeight. + + + + + See ILayoutElement.flexibleWidth. + + + + + True if the sprite used has borders. + + + + + See ILayoutElement.layoutPriority. + + + + + The image's texture. (ReadOnly). + + + + + See ILayoutElement.minHeight. + + + + + See ILayoutElement.minWidth. + + + + + Set an override sprite to be used for rendering. + + + + + The number of pixels in the Image that correspond to one unit in world space. + + + + + See ILayoutElement.preferredHeight. + + + + + See ILayoutElement.preferredWidth. + + + + + Whether this image should preserve its Sprite aspect ratio. + + + + + The sprite that is used to render this image. + + + + + How the Image is draw. + + + + + See ILayoutElement.CalculateLayoutInputHorizontal. + + + + + See ILayoutElement.CalculateLayoutInputVertical. + + + + + Fill method to be used by the Image. + + + + + The Image will be filled Horizontally. + + + + + The Image will be filled Radially with the radial center in one of the edges. + + + + + The Image will be filled Radially with the radial center at the center. + + + + + The Image will be filled Radially with the radial center in one of the corners. + + + + + The Image will be filled Vertically. + + + + + See:ICanvasRaycastFilter. + + + + + + + Serialization Callback. + + + + + Serialization Callback. + + + + + Origin for the Image.FillMethod.Radial180. + + + + + Center of the radial at the center of the Bottom edge. + + + + + Center of the radial at the center of the Left edge. + + + + + Center of the radial at the center of the Right edge. + + + + + Center of the radial at the center of the Top edge. + + + + + One of the points of the Arc for the Image.FillMethod.Radial360. + + + + + Arc starting at the center of the Bottom edge. + + + + + Arc starting at the center of the Left edge. + + + + + Arc starting at the center of the Right edge. + + + + + Arc starting at the center of the Top edge. + + + + + Origin for the Image.FillMethod.Radial90. + + + + + Radial starting at the Bottom Left corner. + + + + + Radial starting at the Bottom Right corner. + + + + + Radial starting at the Top Left corner. + + + + + Radial starting at the Top Right corner. + + + + + Origin for the Image.FillMethod.Horizontal. + + + + + Origin at the Left side. + + + + + Origin at the Right side. + + + + + Origin for the Image.FillMethod.Vertical. + + + + + Origin at the Bottom edge. + + + + + Origin at the Top edge. + + + + + Adjusts the image size to make it pixel-perfect. + + + + + Image Type. + + + + + Display portion of the Image. + + + + + Displayes the full Image. + + + + + Displays the Image as a 9-sliced Image. + + + + + Displays the Image Tiling the central part of the Sprite. + + + + + Is this element a mask. + + + + + Return the RectTransform associated with this mask. + + + + + Is the mask enabled. + + + + + This element is capable of being masked out. + + + + + Recalculate masking for this element and all children elements. + + + + + Interface which allows for the modification of the Material used to render a Graphic before they are passed to the CanvasRenderer. + + + + + Perform material modification in this function. + + Configured Material. + + Modified material. + + + + + Interface which allows for the modification of verticies in a Graphic before they are passed to the CanvasRenderer. + + + + + Call used to modify mesh. + + + + + + Turn a simple label into a interactable input field. + + + + + The character used for password fields. + + + + + The blinking rate of the input caret, defined as the number of times the blink cycle occurs per second. + + + + + Current InputField caret position (also selection tail). + + + + + Current InputField selection head. + + + + + How many characters the input field is limited to. 0 = infinite. + + + + + The type of validation to perform on a character. + + + + + Specifies the type of the input text content. + + + + + The type of input expected. See InputField.InputType. + + + + + Does the InputField currently have focus and is able to process events. + + + + + They type of mobile keyboard that will be used. + + + + + The LineType used by the InputField. + + + + + If the input field supports multiple lines. + + + + + The Unity Event to call when editing has ended. + + + + + The function to call to validate the input characters. + + + + + Accessor to the OnChangeEvent. + + + + + Optional graphic to show when the InputField text is empty. +A placeholder graphic can be used to show subtle hints or make it more obvious that the control is an InputField. + + + + + The beginning point of the selection. + + + + + The color of the highlight to show which characters are selected. + + + + + The the end point of the selection. + + + + + Should the mobile keyboard input be hidden. + + + + + The current value of the input field. + + + + + The Text component that is going to be used to render the text to screen. + + + + + If the UI.InputField was canceled and will revert back to the original text upon DeactivateInputField. + + + + + Function to activate the InputField to begin processing Events. + + + + + Append a character to the input field. + + Character / string to append. + + + + Append a character to the input field. + + Character / string to append. + + + + The type of characters that are allowed to be added to the string. + + + + + Allows letters A-Z, a-z and numbers 0-9. + + + + + Allows decimal numbers (positive or negative). +Characters 0-9, . (dot), and - (dash / minus sign) are allowed. The dash is only allowed as the first character. Only one dot in the string is allowed. + + + + + Allows the characters that are allowed in an email address. + + + + + Allow whole numbers (positive or negative). + + + + + Only allow names and enforces capitalization. + + + + + No validation. Any input is valid. + + + + + Clamp the pos to be between 0 and the current text length. + + The position represenation to be clamped. + + + + Specifies the type of the input text content. + + + + + Allows letters A-Z, a-z and numbers 0-9. + + + + + Allows all input and performs auto-correction on platforms that support it. + + + + + Custom types that allows user-defined settings. + + + + + Allows decimal numbers (positive or negative). + + + + + The input is used for typing in an email address. + + + + + Allow whole numbers (positive or negative). + + + + + The InputField is used for typing in a name and enforces capitalization. + + + + + Allows all input and hides the typed characters by showing them as asterisks characters. + + + + + Allows integer numbers and hides the typed characters by showing them as asterisks characters. + + + + + Allows all input. + + + + + Function to deactivate the InputField to stop the processing of Events and send OnSubmit if not canceled. + + + + + The character that is under the mouse. + + Mouse position. + + Character index with in value. + + + + + See ICanvasElement.GraphicUpdateComplete. + + + + + Type of data expected by the input field. + + + + + The mobile autocorrect keyboard. + + + + + The mobile password keyboard. + + + + + The standard mobile keyboard. + + + + + Process the Event and perform the appropreate action for that key. + + The Event that is currently being processed. + + If we should continue processing events or we have hit an end condition. + + + + + See ICanvasElement.LayoutComplete. + + + + + The LineType is used to describe the behavior of the InputField. + + + + + Is a multiline InputField with vertical scrolling and overflow. Pressing the return key will insert a new line character. + + + + + Is a multiline InputField with vertical scrolling and overflow. Pressing the return key will submit. + + + + + Only allows 1 line to be entered. Has horizontal scrolling and no word wrap. Pressing enter will submit the InputField. + + + + + Move the caret index to end of text. + + Only move the selectionPosition. + + + + Move the caret index to start of text. + + Only move the selectionPosition. + + + + Capture the OnBeginDrag callback from the EventSystem and ensure we should listen to the drag events to follow. + + The data passed by the EventSystem. + + + + The callback sent anytime the Inputfield is updated. + + + + + What to do when the event system sends a Deselect Event. + + + + + + See MonoBehaviour.OnDisable. + + + + + What to do when the event system sends a Drag Event. + + + + + + Capture the OnEndDrag callback from the EventSystem and cancel the listening of drag events. + + The eventData sent by the EventSystem. + + + + Focus the input field initializing properties. + + + + + What to do when the event system sends a pointer click Event. + + + + + + What to do when the event system sends a pointer down Event. + + + + + + What to do when the event system sends a submit Event. + + + + + + What to do when the event system sends a Update selected Event. + + + + + + Custom validation callback. + + + + + + + + Helper function to allow separate events to be processed by the InputField. + + The Event to be processed. + + + + Rebuild the input fields geometry. (caret and highlight). + + + + + + Convert screen space into input field local space. + + + + + + Highlight the whole InputField. + + + + + Convenience function to make functionality to send the SubmitEvent easier. + + + + + Unity Event with a inputfield as a param. + + + + + Update the Text associated with this input field. + + + + + Predefined validation functionality for different characterValidation types. + + The whole text string to validate. + The position at which the current character is being inserted. + The character that is being inserted. + + The character that should be inserted. + + + + + Interface which allows for the modification of verticies in a Graphic before they are passed to the CanvasRenderer. + + + + + Call used to modify vertices. + + To modify. + + + + Add this component to a GameObject to make it into a layout element or override values on an existing layout element. + + + + + The extra relative height this layout element should be allocated if there is additional available space. + + + + + The extra relative width this layout element should be allocated if there is additional available space. + + + + + Should this RectTransform be ignored by the layout system? + + + + + Called by the layout system. + + + + + The minimum height this layout element may be allocated. + + + + + The minimum width this layout element may be allocated. + + + + + The preferred height this layout element should be allocated if there is sufficient space. + + + + + The preferred width this layout element should be allocated if there is sufficient space. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + See MonoBehaviour.OnDisable. + + + + + Mark the LayoutElement as dirty. + + + + + Abstract base class to use for layout groups. + + + + + The alignment to use for the child layout elements in the layout group. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + The padding to add around the child layout elements. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + Returns the calculated position of the first child layout element along the given axis. + + The axis index. 0 is horizontal and 1 is vertical. + The total space required on the given axis for all the layout elements including spacing and excluding padding. + + The position of the first child along the given axis. + + + + + The flexible size for the layout group on the given axis. + + The axis index. 0 is horizontal and 1 is vertical. + + The flexible size. + + + + + The min size for the layout group on the given axis. + + The axis index. 0 is horizontal and 1 is vertical. + + The min size. + + + + + The preferred size for the layout group on the given axis. + + The axis index. 0 is horizontal and 1 is vertical. + + The preferred size. + + + + + Callback for when properties have been changed by animation. + + + + + See MonoBehaviour.OnDisable. + + + + + Set the position and size of a child layout element along the given axis. + + The RectTransform of the child layout element. + The axis to set the position and size along. 0 is horizontal and 1 is vertical. + The position from the left side or top. + The size. + + + + Mark the LayoutGroup as dirty. + + + + + Called by the layout system. + + + + + Used to set the calculated layout properties for the given axis. + + The min size for the layout group. + The preferred size for the layout group. + The flexible size for the layout group. + The axis to set sizes for. 0 is horizontal and 1 is vertical. + + + + Called by the layout system. + + + + + Helper method used to set a given property if it has changed. + + A reference to the member value. + The new value. + + + + Wrapper class for managing layout rebuilding of CanvasElement. + + + + + See ICanvasElement. + + + + + Does the passed rebuilder point to the same CanvasElement. + + Other. + + Equal. + + + + + Forces an immediate rebuild of the layout element and child layout elements affected by the calculations. + + The layout element to perform the layout rebuild on. + + + + See ICanvasElement.GraphicUpdateComplete. + + + + + Has the native representation of this LayoutRebuilder been destroyed? + + + + + See ICanvasElement.LayoutComplete. + + + + + Mark the given RectTransform as needing it's layout to be recalculated during the next layout pass. + + Rect to rebuild. + + + + See ICanvasElement.Rebuild. + + + + + + Utility functions for querying layout elements for their minimum, preferred, and flexible sizes. + + + + + Returns the flexible height of the layout element. + + The RectTransform of the layout element to query. + + + + Returns the flexible size of the layout element. + + The RectTransform of the layout element to query. + The axis to query. This can be 0 or 1. + + + + Returns the flexible width of the layout element. + + The RectTransform of the layout element to query. + + + + Gets a calculated layout property for the layout element with the given RectTransform. + + The RectTransform of the layout element to get a property for. + The property to calculate. + The default value to use if no component on the layout element supplies the given property. + Optional out parameter to get the component that supplied the calculated value. + + The calculated value of the layout property. + + + + + Gets a calculated layout property for the layout element with the given RectTransform. + + The RectTransform of the layout element to get a property for. + The property to calculate. + The default value to use if no component on the layout element supplies the given property. + Optional out parameter to get the component that supplied the calculated value. + + The calculated value of the layout property. + + + + + Returns the minimum height of the layout element. + + The RectTransform of the layout element to query. + + + + Returns the minimum size of the layout element. + + The RectTransform of the layout element to query. + The axis to query. This can be 0 or 1. + + + + Returns the minimum width of the layout element. + + The RectTransform of the layout element to query. + + + + Returns the preferred height of the layout element. + + The RectTransform of the layout element to query. + + + + Returns the preferred size of the layout element. + + The RectTransform of the layout element to query. + The axis to query. This can be 0 or 1. + + + + Returns the preferred width of the layout element. + + The RectTransform of the layout element to query. + + + + A component for masking children elements. + + + + + The graphic associated with the Mask. + + + + + Cached RectTransform. + + + + + Show the graphic that is associated with the Mask render area. + + + + + See: IMaterialModifier. + + + + + + See:ICanvasRaycastFilter. + + + + + + + See:IMask. + + + + + See MonoBehaviour.OnDisable. + + + + + See:IGraphicEnabledDisabled. + + + + + A Graphic that is capable of being mased out. + + + + + Does this graphic allow masking. + + + + + Callback issued when culling changes. + + + + + See IClippable.Cull. + + + + + + + See IMaterialModifier.GetModifiedMaterial. + + + + + + See MonoBehaviour.OnDisable. + + + + + See: IMaskable. + + + + + See: IClippable.RecalculateClipping. + + + + + See: IMaskable.RecalculateMasking. + + + + + See IClippable.SetClipRect. + + + + + + + Mask related utility class. + + + + + Find a root Canvas. + + Search start. + + Canvas transform. + + + + + Find the correct RectMask2D for a given IClippable. + + Clippable to search from. + + + + Search for all RectMask2D that apply to the given RectMask2D (includes self). + + + + + + + Find the stencil depth for a given element. + + + + + + + Notify all IClippables under the given component that they need to recalculate clipping. + + + + + + Notify all IMaskable under the given component that they need to recalculate masking. + + + + + + Structure storing details related to navigation. + + + + + Return a Navigation with sensible default values. + + + + + Navitation mode. + + + + + Selectable to select on down. + + + + + Selectable to select on left. + + + + + Selectable to select on right. + + + + + Selectable to select on up. + + + + + Navigation mode. Used by Selectable. + + + + + Automatic navigation. + + + + + Explicit navigaion. + + + + + Horizontal Navigation. + + + + + No navigation. + + + + + Vertical navigation. + + + + + Adds an outline to a graphic using IVertexModifier. + + + + + An IVertexModifier which sets the raw vertex position into UV1 of the generated verts. + + + + + Displays a Texture2D for the UI System. + + + + + The RawImage's texture. (ReadOnly). + + + + + The RawImage's texture. + + + + + The RawImage texture coordinates. + + + + + Adjusts the raw image size to make it pixel-perfect. + + + + + A 2D rectangular mask that allows for clipping / masking of areas outside the mask. + + + + + Get the Rect for the mask in canvas space. + + + + + Get the RectTransform for the mask. + + + + + Add a [IClippable]] to be tracked by the mask. + + + + + + See:ICanvasRaycastFilter. + + + + + + + See: IClipper.PerformClipping. + + + + + Remove an IClippable from being tracked by the mask. + + + + + + A standard scrollbar with a variable sized handle that can be dragged between 0 and 1. + + + + + The direction of the scrollbar from minimum to maximum value. + + + + + The RectTransform to use for the handle. + + + + + The number of steps to use for the value. A value of 0 disables use of steps. + + + + + Handling for when the scrollbar value is changed. + + + + + The size of the scrollbar handle where 1 means it fills the entire scrollbar. + + + + + The current value of the scrollbar, between 0 and 1. + + + + + Coroutine function for handling continual press during OnPointerDown. + + + + + + Setting that indicates one of four directions. + + + + + From bottom to top. + + + + + From left to right. + + + + + From right to left. + + + + + From top to bottom. + + + + + See member in base class. + + + + + See member in base class. + + + + + See member in base class. + + + + + See member in base class. + + + + + See ICanvasElement.GraphicUpdateComplete. + + + + + See ICanvasElement.LayoutComplete. + + + + + Handling for when the scrollbar value is begin being dragged. + + + + + + See MonoBehaviour.OnDisable. + + + + + Handling for when the scrollbar value is dragged. + + + + + + See: IInitializePotentialDragHandler.OnInitializePotentialDrag. + + + + + + Handling for movement events. + + + + + + Handling for when the canvas is rebuilt. + + + + + + UnityEvent callback for when a scrollbar is scrolled. + + + + + Set the direction of the scrollbar, optionally setting the layout as well. + + The direction of the scrollbar. + Should the layout be flipped together with the direction? + + + + A component for making a child RectTransform scroll. + + + + + The content that can be scrolled. It should be a child of the GameObject with ScrollRect on it. + + + + + The rate at which movement slows down. + + + + + The amount of elasticity to use when the content moves beyond the scroll rect. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + Should horizontal scrolling be enabled? + + + + + The horizontal scroll position as a value between 0 and 1, with 0 being at the left. + + + + + Optional Scrollbar object linked to the horizontal scrolling of the ScrollRect. + + + + + The space between the scrollbar and the viewport. + + + + + The mode of visibility for the horizontal scrollbar. + + + + + Should movement inertia be enabled? + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + The behavior to use when the content moves beyond the scroll rect. + + + + + The scroll position as a Vector2 between (0,0) and (1,1) with (0,0) being the lower left corner. + + + + + Callback executed when the scroll position of the slider is changed. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + The sensitivity to scroll wheel and track pad scroll events. + + + + + The current velocity of the content. + + + + + Should vertical scrolling be enabled? + + + + + The vertical scroll position as a value between 0 and 1, with 0 being at the bottom. + + + + + Optional Scrollbar object linked to the vertical scrolling of the ScrollRect. + + + + + The space between the scrollbar and the viewport. + + + + + The mode of visibility for the vertical scrollbar. + + + + + Reference to the viewport RectTransform that is the parent of the content RectTransform. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + See ICanvasElement.GraphicUpdateComplete. + + + + + See member in base class. + + + + + See ICanvasElement.LayoutComplete. + + + + + A setting for which behavior to use when content moves beyond the confines of its container. + + + + + Clamped movement. The content can not be moved beyond its container. + + + + + Elastic movement. The content is allowed to temporarily move beyond the container, but is pulled back elastically. + + + + + Unrestricted movement. The content can move forever. + + + + + Handling for when the content is beging being dragged. + + + + + + See MonoBehaviour.OnDisable. + + + + + Handling for when the content is dragged. + + + + + + Handling for when the content has finished being dragged. + + + + + + See: IInitializePotentialDragHandler.OnInitializePotentialDrag. + + + + + + See IScrollHandler.OnScroll. + + + + + + Rebuilds the scroll rect data after initialization. + + The current step of the rendering CanvasUpdate cycle. + + + + Enum for which behavior to use for scrollbar visibility. + + + + + Automatically hide the scrollbar when no scrolling is needed on this axis. The viewport rect will not be changed. + + + + + Automatically hide the scrollbar when no scrolling is needed on this axis, and expand the viewport rect accordingly. + + + + + Always show the scrollbar. + + + + + Event type used by the ScrollRect. + + + + + Sets the anchored position of the content. + + + + + + Override to alter or add to the code that keeps the appearance of the scroll rect synced with its data. + + + + + Override to alter or add to the code that caches data to avoid repeated heavy operations. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + Sets the velocity to zero on both axes so the content stops moving. + + + + + Simple selectable object - derived from to create a selectable control. + + + + + List of all the selectable objects currently active in the scene. + + + + + The AnimationTriggers for this selectable object. + + + + + Convenience function to get the Animator component on the GameObject. + + + + + The ColorBlock for this selectable object. + + + + + Convenience function that converts the referenced Graphic to a Image, if possible. + + + + + UI.Selectable.interactable. + + + + + The Navigation setting for this selectable object. + + + + + The SpriteState for this selectable object. + + + + + Graphic that will be transitioned upon. + + + + + The type of transition that will be applied to the targetGraphic when the state changes. + + + + + Transition the Selectable to the entered state. + + State to transition to. + Should the transition occur instantly. + + + + Finds the selectable object next to this one. + + The direction in which to search for a neighbouring Selectable object. + + The neighbouring Selectable object. Null if none found. + + + + + Find the selectable object below this one. + + + The Selectable object below current. + + + + + Find the selectable object to the left of this one. + + + The Selectable object to the left of current. + + + + + Find the selectable object to the right of this one. + + + The Selectable object to the right of current. + + + + + Find the selectable object above this one. + + + The Selectable object above current. + + + + + Clear any internal state from the Selectable (used when disabling). + + + + + Is the selectable currently 'highlighted'. + + + + + + UI.Selectable.IsInteractable. + + + + + Unset selection and transition to appropriate state. + + The eventData usually sent by the EventSystem. + + + + See MonoBehaviour.OnDisable. + + + + + Determine in which of the 4 move directions the next selectable object should be found. + + The EventData usually sent by the EventSystem. + + + + Evaluate current state and transition to pressed state. + + The EventData usually sent by the EventSystem. + + + + Evaluate current state and transition to appropriate state. + + The EventData usually sent by the EventSystem. + + + + Evaluate current state and transition to normal state. + + The EventData usually sent by the EventSystem. + + + + Evaluate eventData and transition to appropriate state. + + The EventData usually sent by the EventSystem. + + + + Set selection and transition to appropriate state. + + The EventData usually sent by the EventSystem. + + + + Selects this Selectable. + + + + + Transition mode for a Selectable. + + + + + Use an animation transition. + + + + + Use an color tint transition. + + + + + No Transition. + + + + + Use a sprite swap transition. + + + + + Internally update the selection state of the Selectable. + + + + + + Adds an outline to a graphic using IVertexModifier. + + + + + Color for the effect. + + + + + How far is the shadow from the graphic. + + + + + Should the shadow inherit the alpha from the graphic? + + + + + Duplicate vertices from start to end and turn them into shadows with the given offset. + + Verts List. + Shadow Color. + Start Index. + End Index. + Shadow x offset. + Shadow y offset. + + + + See: IMeshModifier. + + + + + A standard slider that can be moved between a minimum and maximum value. + + + + + The direction of the slider, from minimum to maximum value. + + + + + Optional RectTransform to use as fill for the slider. + + + + + Optional RectTransform to use as a handle for the slider. + + + + + The maximum allowed value of the slider. + + + + + The minimum allowed value of the slider. + + + + + The current value of the slider normalized into a value between 0 and 1. + + + + + Callback executed when the value of the slider is changed. + + + + + The current value of the slider. + + + + + Should the value only be allowed to be whole numbers? + + + + + Setting that indicates one of four directions. + + + + + From bottom to top. + + + + + From left to right. + + + + + From right to left. + + + + + From top to bottom. + + + + + See member in base class. + + + + + See member in base class. + + + + + See member in base class. + + + + + See member in base class. + + + + + See ICanvasElement.GraphicUpdateComplete. + + + + + See ICanvasElement.LayoutComplete. + + + + + See MonoBehaviour.OnDisable. + + + + + Handling for when the slider is dragged. + + + + + + See: IInitializePotentialDragHandler.OnInitializePotentialDrag. + + + + + + Handling for movement events. + + + + + + Handling for when the canvas is rebuilt. + + + + + + Set the value of the slider. + + The new value for the slider. + If the OnValueChanged callback should be invoked. + + + + Sets the direction of this slider, optionally changing the layout as well. + + The direction of the slider. + Should the layout be flipped together with the slider direction? + + + + Event type used by the Slider. + + + + + Structure to store the state of a sprite transition on a Selectable. + + + + + Disabled sprite. + + + + + Highlighted sprite. + + + + + Pressed sprite. + + + + + The default Graphic to draw font data to screen. + + + + + The positioning of the text reliative to its RectTransform. + + + + + The cached TextGenerator used when generating visible Text. + + + + + The cached TextGenerator used when determine Layout. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + The Font used by the text. + + + + + The size that the Font should render at. + + + + + FontStyle used by the text. + + + + + Horizontal overflow mode. + + + + + Called by the layout system. + + + + + Line spacing, specified as a factor of font line height. A value of 1 will produce normal line spacing. + + + + + The Texture that comes from the Font. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + (Read Only) Provides information about how fonts are scale to the screen. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + Should the text be allowed to auto resized. + + + + + The maximum size the text is allowed to be. 1 = infinitly large. + + + + + The minimum size the text is allowed to be. + + + + + Whether this Text will support rich text. + + + + + The string value this text will display. + + + + + Vertical overflow mode. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + Called by the [FontUpdateTracker] when the texture associated with a font is modified. + + + + + Convenience function to populate the generation setting for the text. + + The extents the text can draw in. + + Generated settings. + + + + + Convenience function to determine the vector offset of the anchor. + + + + + + See MonoBehaviour.OnDisable. + + + + + A standard toggle that has an on / off state. + + + + + Graphic affected by the toggle. + + + + + Group the toggle belongs to. + + + + + Is the toggle on. + + + + + Callback executed when the value of the toggle is changed. + + + + + Transition mode for the toggle. + + + + + See ICanvasElement.GraphicUpdateComplete. + + + + + See ICanvasElement.LayoutComplete. + + + + + See MonoBehaviour.OnDisable. + + + + + Handling for when the toggle is 'clicked'. + + Current event. + + + + Handling for when the submit key is pressed. + + Current event. + + + + Handling for when the canvas is rebuilt. + + + + + + UnityEvent callback for when a toggle is toggled. + + + + + Display settings for when a toggle is activated or deactivated. + + + + + Fade the toggle in / out. + + + + + Show / hide the toggle instantly. + + + + + A component that represents a group of Toggles. + + + + + Is it allowed that no toggle is switched on? + + + + + Returns the toggles in this group that are active. + + + The active toggles in the group. + + + + + Are any of the toggles on? + + + + + Notify the group that the given toggle is enabled. + + + + + + Register a toggle with the group. + + To register. + + + + Switch all toggles off. + + + + + Toggle to unregister. + + Unregister toggle. + + + + A utility class that can aid in the generation of meshes for the UI. + + + + + Get the number of indices set on the VertexHelper. + + + + + Current number of vertices in the buffer. + + + + + Add a triangle to the buffer. + + Index 0. + Index 1. + Index 2. + + + + Add a quad to the stream. + + 4 Vertices representing the quad. + + + + Add a stream of custom UIVertex and corrisponding indices. + + The custom stream of verts to add to the helpers internal data. + The custom stream of indices to add to the helpers internal data. + + + + + Add a list of triangles to the stream. + + Vertices to add. Length should be divisible by 3. + + + + Add a single vertex to the stream. + + + + + + + + + + + + Add a single vertex to the stream. + + + + + + + + + + + + Add a single vertex to the stream. + + + + + + + + + + + + Clear all vertices from the stream. + + + + + Cleanup allocated memory. + + + + + Fill the given mesh with the stream data. + + + + + + Create a stream of UI vertex (in triangles) from the stream. + + + + + + Fill a UIVertex with data from index i of the stream. + + Vertex to populate. + Index to populate from. + + + + Set a UIVertex at the given index. + + + + + + + Layout child layout elements below each other. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + + Called by the layout system. + + + + diff --git a/Roguelike/Library/UnityAssemblies/version.txt b/Roguelike/Library/UnityAssemblies/version.txt new file mode 100644 index 00000000..e313b26e --- /dev/null +++ b/Roguelike/Library/UnityAssemblies/version.txt @@ -0,0 +1,23 @@ +5.2.2f1:2.1.0.0 +StandaloneWindows +C:/Program Files/Unity/Editor/Data/Managed/UnityEngine.dll +C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll +C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll +C:/Program Files/Unity/Editor/Data/Managed/UnityEditor.dll +C:/Program Files/Unity/Editor/Data\Managed/Mono.Cecil.dll +C:/Program Files/Unity/Editor/Data/PlaybackEngines/iOSSupport\UnityEditor.iOS.Extensions.Xcode.dll +C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/Advertisements/Editor/UnityEditor.Advertisements.dll +C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll +C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/Networking/Editor/UnityEditor.Networking.dll +C:/Program Files/Unity/Editor/Data/Managed/UnityEditor.Graphs.dll +C:\Program Files\Unity\Editor\Data\PlaybackEngines\androidplayer/UnityEditor.Android.Extensions.dll +C:/Program Files/Unity/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.dll +C:\Program Files\Unity\Editor\Data\PlaybackEngines\wp8support/UnityEditor.WP8.Extensions.dll +C:\Program Files\Unity\Editor\Data\PlaybackEngines\metrosupport/UnityEditor.Metro.Extensions.dll +C:\Program Files\Unity\Editor\Data\PlaybackEngines\TizenPlayer/UnityEditor.Tizen.Extensions.dll +C:\Program Files\Unity\Editor\Data\PlaybackEngines\stvplayer/UnityEditor.SamsungTV.Extensions.dll +C:\Program Files\Unity\Editor\Data\PlaybackEngines\webglsupport/UnityEditor.WebGL.Extensions.dll +C:\Program Files\Unity\Editor\Data\PlaybackEngines\linuxstandalonesupport/UnityEditor.LinuxStandalone.Extensions.dll +C:\Program Files\Unity\Editor\Data\PlaybackEngines\windowsstandalonesupport/UnityEditor.WindowsStandalone.Extensions.dll +C:\Program Files\Unity\Editor\Data\PlaybackEngines\macstandalonesupport/UnityEditor.OSXStandalone.Extensions.dll +C:\Program Files (x86)\Microsoft Visual Studio Tools for Unity\2015\Editor\SyntaxTree.VisualStudio.Unity.Bridge.dll \ No newline at end of file diff --git a/Roguelike/Library/assetDatabase3 b/Roguelike/Library/assetDatabase3 index 5ed3821efd822d8fc1fd40f68339be2ed44a388e..8b3a9c7206be3c55664392d74228ea2ab1a1faa0 100644 GIT binary patch delta 8237 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 delta 1532 zcmZ8hdrVVT9KNNkV(ESK{oqkRP++`jec_^lqM}1kd9-e0Sfx6AAlS}Fbb`a#Rt+M@ zc`;*36e&@Rg$}PHijWED#6@Gaw17I7%}0FHAw)qZJLlFv$WHRhcXICUeBbZ;PTGTm z26uC&3d6(#OyV(M7)HWpyf$9fr1FZmGrJ`qK&;|KgC>mvtO^+?%Q9Ikg+=Sk z@kX=RWWg|Qr_hrM^x_0^OJ3XE)LabP>_!*}I)WwOrI^5{Ep6yS=go@MeW@T{V&Yk1 z@8p1F>2$s}9fy~9N_Avn)c$_d^u^bu5S8e%Dq)4GAbyh(ikwyXC_a{d2B|c_C|1z1 znYa*6Jn`IZR<*_p5uA`~$cWoftX_W-!U)=Uno@&Da+0hm_i30v{T6BjBNh;(AV_ni zhoz|4-wQDuqy$QUO(7>17@;*dlW!dzlm&?}j1a`J>_`4Z7|Aw2Q>ghKKFT3LS;8wu z?#h(Y$;fv;y+8L@p?sn2Jnh*5L5)Yu4@d84$tTz{v!7HTD+0>NFJ#2YX!k;iXR4`%}UFz=`~WvysmD zpdC1}{vj^R7fp4rnt!wqeP@C-q{F&|wb1NB$od6uf(f!%=QA6(p#+{sv!SjE3E|() zL^sPr5(xKVm>GPFPMsG{S*3{~!wqAn^JSOVB|zEr-SN>KxR(R7qcw}j+TO9vIlw4c z2y~$;-&-vUjVE5zUtsy?{*92XUWx}nB3qt=J>BPq2=c=c$ZfxmC5on-It3Eo3`?UE z2W31uyGua1g2L<4fO}IlrFE2vze?J9=I51}O4&N+U0~SUKsEee$X@9FspjF%_krot zZLQ$1;!B{hxt1CY_+vxtaPZk1OX|K)8<`OYK6g1qQCHfFO()-f*I!Zf@Yh+h%SVB6 zNCF=Jn9iBxn%45DjInLySdyg_41J!_Y|1rlv6!|mSi9D=#^PGm5|zxuc6hcPZRG}1 z|NqRqy};3SSZx>mU~ysbVDTB-#c|KNt?u^mu>4_7VBGD38a|cLT6unN!_jU>DL^Z4RPw=NieA|rutq%(3H;vN&ED=g*|7(J5jz5!kP4KqNddnWb+_DP| z^Oy!9o}NN^-r#qmD_#0xu`v6eWdF>QKHpp{a4b1L$V`O z>7)|B>z)ZOKhnO_dtYzMqHQzf&Z*A(4H3;%h1Q@w_>F;5`}tA04qf&W%Ao#pE{08U xoym9s@o?*X!VB@HV{;$9F-g8FVvZv3h=GS;oYhzR3m~FS^qY)^B}W^${sS7vKs5jW diff --git a/Roguelike/Library/expandedItems b/Roguelike/Library/expandedItems index 3af15a46ec42a3e920639afdb48f444909111e5a..174ac734a37c02fb653c6e6a97dbf230a03980bf 100644 GIT binary patch delta 59 zcmX@2a6v(mfq^NEfk7aEfq{V^NCPPb22(vFJ)@11{7j4in>Cqk^YXHSg`vb`Rsnke D07eI; delta 47 zcmcbha700pfq^NEfkD89fq{V^NCPPb22(vlJ>!j%{7j54n>Cqk^D?qb78I}t0IdiI Ai~s-t diff --git a/Roguelike/Library/metadata/00/00000000000000002000000000000000 b/Roguelike/Library/metadata/00/00000000000000002000000000000000 index b5b815246194edcd5e95e35e4bf2d909179a20a5..9beeff2be9817c5863368767ba1c4819fb83d749 100644 GIT binary patch delta 27 jcmaE;_)u|z7_*U{(MCyS0TvxgudvC6+&z=e2#5jzcH0Og delta 27 jcmaE;_)u|z7_*_C@kU8y0T$kyE@6`mxqBv`5fB9cdX delta 27 jcmcbqcvEqL7_*_C@kU8$0T$kyE@6`uxeF$*5HJJ)c%=wb diff --git a/Roguelike/Library/metadata/00/00000000000000005100000000000000 b/Roguelike/Library/metadata/00/00000000000000005100000000000000 index 7a9368ff7503b4138aac839c1f5494ee7762ff29..f0280c2ea983a49a4627dee5ad8a99f45b6e3ba9 100644 GIT binary patch delta 27 jcmaE<_)>9#7_*U{(MCyi0TvxgudvC6+#Qq82*?5ec&i9K delta 27 jcmaE<_)>9#7_*_C@kU8?0T$kyE@6`mxjQDG5s(D{ec1@O diff --git a/Roguelike/Library/metadata/00/00000000000000006000000000000000 b/Roguelike/Library/metadata/00/00000000000000006000000000000000 index 862ebe86e04ec1179330781e349a7cd007eb6af7..d391106172f34ba2096e05faf5f2edcb1fd27f40 100644 GIT binary patch delta 27 jcmaE;_)u|z7_*U{(MCyS0TvxgudvC6+&z=e2#5jzcH0Og delta 27 jcmaE;_)u|z7_*_C@kU8y0T#ZSE@6`mxqBv`5fB9cd=&_x diff --git a/Roguelike/Library/metadata/00/00000000000000006100000000000000 b/Roguelike/Library/metadata/00/00000000000000006100000000000000 index 2014c782cd09a38be596405e64964c47121f4b6c..915eb0f8cd4daee0e51362811d7b2579ce6000aa 100644 GIT binary patch delta 27 jcmaE=_*8L%7_*U{(MCyi0TvxgudvC6+#Qq82uK0|ch?9p delta 27 jcmaE=_*8L%7_*_C@kU8?0T#ZSE@6`mxjQDG5s(A`eGv$) diff --git a/Roguelike/Library/metadata/00/00000000000000007000000000000000 b/Roguelike/Library/metadata/00/00000000000000007000000000000000 index 473c20b40669d623e031105adcb88bca0ba0cba0..290c65872f6aed52144bc941e74042fee30c4bd3 100644 GIT binary patch delta 27 jcmaE;_)u|z7_*U{(MCyS0TvxgudvC6+&z=e2#5jzcH0Og delta 27 jcmaE;_)u|z7_*_C@kU8y0T#ZSE@6`mxqBv`5fB9cd=&_x diff --git a/Roguelike/Library/metadata/00/00000000000000008000000000000000 b/Roguelike/Library/metadata/00/00000000000000008000000000000000 index 3cb5f5cfc0c62661c121e47a83a57fafb69ced45..eb0a5b47db3a24c67f00ae6973b0340050e46437 100644 GIT binary patch delta 27 jcmaE=_*8L%7_*U{(MCyi0TvxgudvC6+#Qq82uK0|ch?9p delta 27 jcmaE=_*8L%7_*_C@kU8?0T#ZSE@6`mxjQDG5s(A`eGv$) diff --git a/Roguelike/Library/metadata/00/00000000000000008100000000000000 b/Roguelike/Library/metadata/00/00000000000000008100000000000000 new file mode 100644 index 0000000000000000000000000000000000000000..0c8495d077dce42c55d736f3b7541733f1aef2bf GIT binary patch literal 4325 zcmeH~U1%It6vxkGceS;e+WOU6KU!PA+PclAjZLAot=&peQ`uS@L8*0;z1d9JoeeV+ zF)uPt`V=1peNgd1gubZYi%&vTL==39;ETQ}eO2*IG5-JeV>UCcLJ&bDCtU8izqxbn z-E+=8cOtUkR*~y}5Rr}O(TR*yhpWRgHTivcdD$xgl*=NY4SAJMe!l$6M0L}%N1yp- z-4J-)6B*zekb@#A<}d3(D&pbq?UJPLdy?XHj9l~NE6g3ln9I5MJ!qVN0~qIXU5ew| zpp&yv9N!6@tU?HJd=GT;s|X?7&lv3Qht7RoO_=KWUJV)>`8r_l71&qXlFgS zZY4Pbei4o1YclT1tC)KjW7^n&Msa=^gHAiw5<=X5o`TMGuOm#!2XgzNpZe_w(ZXD| z{C?{pKmlcI+ zEMm<4-BRGMSiYse->`gZfxlxpvR4cDN&D|v&fh_C{6npa+@@)dU$*@A0{_DDI|_Ws z@;eJ0xuSp9_5#0R`Hlkr$@04j{8!8AZ;IQ01x};ic4^w<8!f-Pz_(g{PsTl2f`4{` zGvDqdPqm#~zTKDceE#204q?9W95MfCXE$L=Ue4KJUYNYCiE2tW3R*$vw@=LaVN1bgM)XwoxZy`COk~WDXKTZw*_?WScM_ReNL0+F zje@m}g2j!3)s1q%DI-pK&?yITJ@D z)Z=PK+QGC6WA((soRSJ0x_-yYpPt&h{iXVMZ!I4Ae%BJ~#iQEq#?h;(@2q7@sQavS ztnZ8+^O*5-b)>X{SCLQ53&xwVHS;}raX`|KtsU0)es);j9bajO_1)QFzFvYI<}26m zQa;PqSzX_ck>~TiSKsq>mi67_vAI`9Fs6O}W^*3$_URLI9`g2eedjZ*dj@avT+wc? zzI!qOc2v)CS2XTkHRI2>6P^CjXe80$lg$9ZJ^6fsxCY(uA?aLrBxtMgI+O-dUMr_n z9Q!Q=G#)?cM_~}QWDq|8?aS9c_;JgX#l_FV*Y-?*J;^fMwM(K~)%DJ+;IG2(u8U&$ z58$2Egx}dIhTqxw+wgxxcjv?NPs4u%`~SDX&-5L$_IaiDOD`VRe(A;Q-K1$gy?DK^ zOkejIqObS#&;DUd``PF9-p@X-ck+o~D)OTRou=cRxo(uGXcg&tE>@8)?41kR#KZGp zv#oSR&XGw!3VhUMrj=foJtals=WDraK27xm%UN=m`-AqG`-FTKoX44Ev0|TLxF%~J zSo6S|2mZGnaQ}MoUxr51y{M*>vnomOi4gBQ7Y50~@n-BmRew#2>^*d9^1tE`-i^h5 H>b?B|Bj)Nm literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/00/00000000000000008100000000000000.info b/Roguelike/Library/metadata/00/00000000000000008100000000000000.info new file mode 100644 index 0000000000000000000000000000000000000000..39b42c9e200fce937aed3f78a6d96bcdd268772a GIT binary patch literal 558 zcmZ8e%T5C^46HbC;4AV81%y=g)>2ihgb*sC91vQ$UGLUXl3m4KO8*`w5q;p1-0in)E)EFOm^WjPM)0*E=gnY}1lI`Hu z9>`{;dQ^)pIFQ1OlOQ6WRLk}hct&csXOd;No9zYps3Hd~np(#^VwLQBw8)&{)Sw-x zR>eh4ZqI=v?IDhlj<(x?Eo=QJHH4us4+%be=g9(dIWNrZ`0g=LjfM6w9&ZBml0+%I zXd2FvQ|Z^Yq88R@Ij7^Qmwd~Vc0egz-vz;N((rzw?-Ds1d~Irv2yiiaS0QV_(G5ET&xFDrP_i;$~|o)p*rzq+euyB&o^1d)A9(XW18 z{i^1@SFdVCHry<7?Jpv-5l=isMykWr;aOLHUtV5zN&w}u$Y(=N<&&Q-{X9|K^z_lE zzF9W}UUNhS_yy#kNR08zrW1=e_`6t=_&rBre2$)Nj(ml&gXnWQ`@I8=eFfHj3ptp_5ezA(rofPJRU;gzFiD{r%9n&MOIHGv0Bbv5~I>c8-ykdg)9TdwyG`h$whW7ZSl;2w5U!?rD z0$)n`?FEipF~4hjfnQGfjspKN<#!bLuPLX$DR%u8IE{YWWoVCYO!=J!zBT1{W!#Y^ z_-7|L^X+c(*x1SC+dUc2=l{Lr5at{A5%ZsRb`!?r<(wVnMUuCb+&;KznlNT=I0&=WzPme@^B- zJ@<&$R-*m3IuR;QtA=z!zv%~F>%^QFG!<-S#0<5s>t3h=En{9Z=MIl%V`@IW(K6lD zD&o|Mg1Hj~lP3yhPm}{z8L`U!Ryk;uQL7xXirX`t*>*GIZf4!h%)7AP@}^ZQ5|5rb zqdTE`RLx4upHV@i9_!94slcJ@cf9=Rsm zpS6zlov~vcGk&&?lveO6@`-uDcr&)ict>6skoe=&4(oeAJFM@Pue8JZZtXB%-+>+G zE9Y=xzRTBHQ{Rt~=kvZ--}7~r^*zbs}MC0sLv))2WoAj4@U5AHHHhcv4(mwx?-%{f>D0QT~ zQ6^Osc})d09zE`bfgdzw5I+Cy%h%ukVaw&k#m|G+_RM@e#WLJUr^I7b$2*ULzY4!S zE{fqlfNxe4eru-~erxA%!~YT8oe$4H4gV3W|KAEf(|0Vj&m*;8dU3ndnvS>UJE2zLD$@0Aq(W2J+vkmm z2N!}yOPPwCBU4`Jd#KAyD>E;jl;_cSeJz)htEm|P_7WOP4s(AneP^$bAAmESEQ^)& z9lC3>=7BX2ta;#n>jC>O7SGmt*twu)^ckf!t_ab-vw^R>$8kUIYJVo0^a5NW!m7Da U%HBh#rv6J#;aSypy>^j*0LOyvW&i*H literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/00/00000000000000009100000000000000.info b/Roguelike/Library/metadata/00/00000000000000009100000000000000.info new file mode 100644 index 0000000000000000000000000000000000000000..b8864a1656d9604432f1395141100be1ea1f775b GIT binary patch literal 563 zcmZ8e%TB{E5Ue=DPxupB5E9L;4^>10gd$N62u0guldfbtk-eeh?^)ZTuRYl_ zyTc#C!@_&yH84!1mf-OX3}&}V86aC=@6e-VVCrl@m9l|XAC`DrSkNO=`?oZjwxT#Em6_|IX8Xh7~NUJhbMU#$>m^cjhjL1|2>5`;}R2f uY<`7r!4X(VSe)=z>}7WaHt5h+=w(A&&?F&-J%?eUWp10UOm%lNnfw8sL8%)6 literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/00/0000000000000000a000000000000000 b/Roguelike/Library/metadata/00/0000000000000000a000000000000000 index 5aaf2e24896775700a50090d3948557191e959ad..fe36aa4ddf457beb9dba601b3ac05ad4638af18a 100644 GIT binary patch delta 27 jcmaE=_*8L%7_*U{(MCyS0TvxgudvC6+&z=e2uK0|cdrOB delta 27 jcmaE=_*8L%7_*_C@kU8y0T#ZSE@6`mxqBv`5s(A`eCY_S diff --git a/Roguelike/Library/metadata/00/0000000000000000b000000000000000 b/Roguelike/Library/metadata/00/0000000000000000b000000000000000 index a51b505dc1df8422bebf3b5ca1fc7e5f584df273..c77b8c2d1e71f239647d4888f3ad95f3c9f0ea83 100644 GIT binary patch delta 27 jcmeyU_)&3!7_*U{(MCya0TvxgudvC6+&z=82*?5edb0>! delta 27 jcmeyU_)&3!7_*_C@kU8)0T#ZSE@6`mxqBvG5s(D{f9(j_ diff --git a/Roguelike/Library/metadata/00/0000000000000000c000000000000000 b/Roguelike/Library/metadata/00/0000000000000000c000000000000000 index ff0a4ef2e17e81d2617323157b9ca5faa8547fb0..66aa1aa7ac61d4efad1e44522b158b6772f56afe 100644 GIT binary patch delta 27 jcmaE=_*8L%7_*U{(MCyS0TvxgudvC6+&z=e2uK0|cdrOB delta 27 jcmaE=_*8L%7_*_C@kU8y0T#ZSE@6`mxqBv`5s(A`eCY_S diff --git a/Roguelike/Library/metadata/04/0401554a0e6f9466db3c1a798d358b8c b/Roguelike/Library/metadata/04/0401554a0e6f9466db3c1a798d358b8c new file mode 100644 index 0000000000000000000000000000000000000000..96d55797cc67d1d4753fffdbf36f4b0b31c78503 GIT binary patch literal 21181 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 ajh2tP0Y$ub{~`P^p=6<(zKoGwjYi*#_PQ?s literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/08/085d9842593af44d8a507541ce47bc6e b/Roguelike/Library/metadata/08/085d9842593af44d8a507541ce47bc6e new file mode 100644 index 0000000000000000000000000000000000000000..8c2180b77f94d9b30e50bdad28f81fceba6ae3de GIT binary patch literal 277621 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 literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/08/085d9842593af44d8a507541ce47bc6e.info b/Roguelike/Library/metadata/08/085d9842593af44d8a507541ce47bc6e.info new file mode 100644 index 0000000000000000000000000000000000000000..fa193e9dd9c50e0aa488acbd08ca4c1521383b4a GIT binary patch literal 589 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 literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/2c/2cd963efa0be1416c93438361364da95.info b/Roguelike/Library/metadata/2c/2cd963efa0be1416c93438361364da95.info new file mode 100644 index 0000000000000000000000000000000000000000..c6439b8e079f35321206020bfd21f70027ae736e GIT binary patch literal 603 zcmZ8f%WlFj5JWxpEBpn85E?bPl>%y{szM0SLsdmfyh&EFoyc|y{C#al4YYgn%J2!g9!ro>|`xByCbF!_TuFoJlS9m&Z_s}b{ zmyjmf5=73O8B`JKj776~I`a|e(SjEN#^fu{$MZl{0_t%kQ)=pL5Cx~1ljuJ-JL%__ zLj@dBn88t5ybZ5`avjj-vTL#P2=*3Bu9?H8%f;A3zf*cNJF& k&#t@zvBL^AsuGR6>H!2fV8O84b1xt%F^U@VU z^D;{+UGvg2^HQyOC;t+VV&>)Ioh&M-4W=Ch6=Zq2ILq=gQxt+r5{pU{G&B{efg(Uu g3!)}h3aZG%RD>3!B$lM2DgmmR+{iCB`HY}00H_2bo&W#< delta 144 zcmeBF`Kc_)z`&oyz##aO0mxur5CBpP45oU9dd3?i{rMRkH)rx!Gm4!D3YHdU=A|oy z=4F;ty5^;4=A~Ls{w*NI$Te9)P#Z|P2`Wf%ahBz0rYHoLBo>t@XlN=_b8&KU)^c%9 dZWdILf=Y%Kq$HN4BFWZrO>X2DoqR`77XXu?BfbCt diff --git a/Roguelike/Library/metadata/3d/3d2e08407829a435b84ff5ac7f8b3aef b/Roguelike/Library/metadata/3d/3d2e08407829a435b84ff5ac7f8b3aef new file mode 100644 index 0000000000000000000000000000000000000000..f67528f5d27835530636e6da62478386f99e1143 GIT binary patch literal 55277 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 literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/3d/3d2e08407829a435b84ff5ac7f8b3aef.info b/Roguelike/Library/metadata/3d/3d2e08407829a435b84ff5ac7f8b3aef.info new file mode 100644 index 0000000000000000000000000000000000000000..93253daf823a7dc1de747f5ad4414bb96ffcd4fe GIT binary patch literal 640 zcmZuvT~ER=6eT|TEBXs$Fc#+CL?A3tLx@omW0t$^b~I_brY#`<-hM=J(Z21R)7x{; z*;eC`;pxs8v`ersa%TYspFm)7O^5&{cc?TPlol-OrAG;oo+qoLL${zoJc3e8b|#Q^ ze-O0<#-r9vsn)#~U<;B2fk$3hYxlo_4YF=OknH-?;%w1eR7^mJq;*CwSY^)&IT{n; z@IZH9Z9&p@ib+08=K1s%W@%REGfFdP<}|NUKpLb9yp0fm8MEgTqFlAi_IkWQu27SE z4lW%t{=4i=6ZhqP1H5cq7K}2~1({5;#GhdrVNkgYbYLil?q@mEXr^q?gz*0lR}Z>y zm)}3!C=NAp6Vn#eL;Q-A_ijs}dTmi(93*Mx?gesjkS)jcf%EUueLW$NNJTrr@c@4T q%|N=w9EG25yac{OiW+5u#x?!|oVil`Pvgymk)@=470=t%X!HfaQOL0X literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/46/469ffe30a4f3a43d99d202b74660b1e5 b/Roguelike/Library/metadata/46/469ffe30a4f3a43d99d202b74660b1e5 new file mode 100644 index 0000000000000000000000000000000000000000..12a9f7764e251ed596134593e1f74967546e99ab GIT binary patch literal 6045 zcmd5=UyK_^86W5F()Lo423kr9(8)E>q&W94gr+2+_St*!wm#dneMv)=&^>#6-m>03 z?XHtLQPCkGo{HcJQK1SXB!t8Rf=3>BDV6$w5E6<6F9-<n-*5Jhy%#4^ zg^)V!WM+Q*&2PT>=9_OmpAd&$5#rG|g%F2?cnFOUrx#ZjS9>esKeun+&dmS_P;Z|( z={&jn!@qp}YyH=M^X=kn9@y)sv#5{c#O~8V>_YxFhUf{A!+$@T5xYOfH_GJF%AOFn zfIocn@nH$C!HZ2&eHMPVub%A5M8@#N)6h^(W6qQu$eJpYO%^ z!zn(OvCkvK3)E?U#y&jH$Ugfs_IWhLXT=EX&cmLx&Bs!FF5?f6P2iK~`0*6aX`XW! zljjI3%U-|wgvKI#lIN2tp401=Fy{Gw3RT+_O!SjB#;G@~`Tr|e3sxu5Rv+j4551`~&K~S>>3Vk-gj@4nm7zApt<&5G_W)Q91>iG6f zC}we>?=0u$-u}m1|Ew+^e)-v}f4F}cdX}Lu;}FaHiDSRTetAFXAIW_B8{;1D5B+Bb zl_kOHm&93F5}fBvY>psGg42$~8OK-{`{;+K(C0Zaj)`3@pYcN-#|p%=eyHOZrtI~T zaU9EuH^9$(L=MI=7Ou;ERnVtCykjhhK3_tg`Y?`7(?`d#!kzkz<5+068Z1zz7ULKED8Q&-4}v!j3vQ;ru*4A#&v%YNP&$$Q5*7V*qx?vajT z18OLXqYf62I#@mGd@kvnPCB1YI!`B^GfC%}q_Z-n zPPtc7@|Bc*C8b{hzhiAFClHAIDs16BQFtnZV|VbVsP9jo2Mo`_f7Ep zzw=bytJ7GI_v%5k(S69~!Q=Rzy;qFyEWB5fc_ia|#FNb<8B-%Xn@2Lf=L+P>=8@w( zHJe8=zVqJYVDZU3ava~Idz;u<=c!tLE^}VvJT)gI>|jEMKBMD%f&4k~OXR690;6qo zeAjsNyCvZt=c!qLn9Ngoj#t1zJM*2IW@nwJYW}R9$9Zb@y=0ym*&)gg`WTa6$M;=+ z%bug8e1UkD|0r=?v;2(jll(U@CO`K*P5)z*FWkw`_&$xF@tydF=X&N~$MZuZdjCuE zsIobu9c7Z6f%0{PjdI0sZRmC#6{m|j21m$6%eO5A$eCCzG`f5j|1yo7osE9#@;eLh z0xCn$f%w~>Mn452#P3nx#{CY^1~3}24^rv=>)n~>o_+3jZ=94jyZet^JrCuyDS{=t zeO)OxN}`u4%GpuA)Va3`mM*Feg7B%j-}Wsx=z0F2==;`avBQ0SkPEN$U6dE+a8650 zvgGZI@R0UHdAxH%t}ZV>Bg@t`yDOjfJU6^C50QqWtU$@G?ZXbzaz}D&xE(BYyuko3 zYp@gyxA~UhM@t|>Pj)%I@D)A1XANv;wCMTUB+_KcAJ_qZ8%aBmef$908p&9`&aBftc2E3|CacDJP^JJ6ea5Dxob3cOx;9Zx;vyAltl*Rh!; z$gbBJQca8c$sT@-1@d^XK;bZydreAvP;z*eYmUJksj-D9it{&t32jve&#FfQ4*h9M*ag8Hq` zb2m$#F9YRh6vva#80)LRCWD1*6X*4CR?$k;Gy?L{mMOd1z4kgZCwTIFh_D{f*NO)4r&^~U9< zd7;vlm3p;o09-SmUvaH!M5|$UrE1aK$jfqZqj-TjHf0?|dXtol)RdPh22rkB#Q&wX zS+8+FrFyO1#4wNTHrwg!OJ>W+%VN`P(K74J`i9;qt&2%m13Z{oGa@2dUK=YtAc)X- zo7jD#kt`dN_wM!HP@X9)-&_9S>SU>fAiuNNbsQo73t?ZyPXGV_ literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/46/469ffe30a4f3a43d99d202b74660b1e5.info b/Roguelike/Library/metadata/46/469ffe30a4f3a43d99d202b74660b1e5.info new file mode 100644 index 0000000000000000000000000000000000000000..14378735ab761f95a8bebf6b0fa7bf9174e2c557 GIT binary patch literal 655 zcmaJ<%WlFj5JWxpEBpl|kU#}DC`Cl7+6p0hsH$iauY)DWiPlaje_uaTD2LX!%uL3! zvwkJ~lz3bigLVZL2JS4u;4?Hhzh$feskhh>8q^l7Y_&%j)1GI0tZYl^3+)KB5iK zhJR|NtJOG%_Ydc%phRV2?@jR(zar(QuzAz9WRWg0lGOJQ$Yrm&!ga6I&l~WI3e`j^ wW(u*d@I8I#k9{T`Hb>+x^MhY6Os7HttveKQz*1CgE1CjbBd literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/5f/5f32cd94baa94578a686d4b9d6b660f7 b/Roguelike/Library/metadata/5f/5f32cd94baa94578a686d4b9d6b660f7 index a0b530615db08ed16738a9ee5db966ea25f99ac0..1de42c562bc3909440686586e6cf8eb30192f432 100644 GIT binary patch delta 342 zcmbPhvD8|UfkAW=1B2{R1_lOxAo~K4W-!$=(lgp9X)40VJK0}Ek@tD*wCVqWU;$8W z>EuKaaV8JO$yFj!mM<6?7;J%ptSlh>|38q)&@{K|97wSS6HqabUkt_&xe2<5UV`K< zOg<|j%~ZfV`IU&2tOQW=0iYrlAk6|bgc-;Ofg6(*MWy8uSQ!}R0(r}C+C-?7FB{YO|BQ?5rB)hrev1n Q7cor!EgHC)MOu;(0B~+%v;Y7A delta 260 zcmZ2#J=a2#fkCv2fk8%=fq{V^$esYC8BFyI^^7-4nu;)TPxcp4oZKVAA-e!5J{O3K z!TA4wAjR-+rP|*AK;STWqlh$91LNd#B2tVRlV6HRTb^KIU|5Q#oDrl42nv`P7!Ckw z78VeO7zGpp1B1!7qS977fHLToExqaF3{n!o%D^xcNFzIB9Z#e?NbUpcTxVcA0k`Vx@LOjO+ diff --git a/Roguelike/Library/metadata/5f/5f32cd94baa94578a686d4b9d6b660f7.info b/Roguelike/Library/metadata/5f/5f32cd94baa94578a686d4b9d6b660f7.info index de89aaeb27cdfa42826f551a70080efe0849c003..8c5318dedaeb83f2f55c680267f9716229bf5817 100644 GIT binary patch delta 130 zcmX>!OQ3gwNW&J!5Ef3C%;Mzyvecr=?e^WwcN(}14J-@|%uUSq=jQYy*- delta 36 qcmeBOAaZDyK*JWs5SI2Wt&Bj-w0%n}^XsV8O84d1xt%F^U@VU z^D;{+UGvg2^HQyOC;t+VV&>)Ioh&M-;{c?&IQ8`vLW@%sN-{Ew71HvH6f%LzGZS+% zs}f5x^YefT%JMT)6oN|s7sgchVEmZYL80jiqZ$S*qi HjG!(62P7@P delta 144 zcmeBF`Kc_)z`&oyz##aO0mxur5CBpP45oU9dd3?i{rMRkH)rx!Gm2dR3YHdU=A|oy z=4F;ty5^;4=A~Ls{w*NI$Te9)PzOl53o1x(ahBz0rYHoLBo>t@XlN=_b8&KU)^c%9 dZV^X2DnS4i37XXy9Bf$Uw diff --git a/Roguelike/Library/metadata/6a/6a8c0b05903578e4aa1289285ffee5cb b/Roguelike/Library/metadata/6a/6a8c0b05903578e4aa1289285ffee5cb index dda37b13df162efd5fbb219e38cd455a24f3bb9a..bc575fa30a3a2f660160fc26b1440c8ee2119a29 100644 GIT binary patch delta 1116 zcmb7D&2G~`5Z*#Bi4>(d04iKos)QV2ZJ?;9s+TsX64%q#HTA#$G3JP-SuG z6ZlCGS6+ih;L0;F<6Rf04F`PLWOnBJ^Z3`^?W02DioZu$eyXv{Mx*C3%7@Wh-+L$9S-zpLm>%;zF3;TpXjy^Kb@_}qB`88qfv zj>>`&)azR0FZMtZG)IrY7f4IY&{)sWDph^+I`Xy3PgC)tum892{I{i3}13 zOgRSUfh3>mw2ZGlyI~$nHcK#}#DcnjJxHEK=zuMK$_~apz6)1bp?I9EKV`1@QLU{W zXVvLqtzq4Rx>-lIYii#`T^_Re^mQo=F`c5k;-PZ5fOo*o^;`_KH@RDU-)(+5U#;bR zKUEzvae1)5+hEV8I~=P`<%0*aOvXXd3V zgyv(ORiPv!vsfW5zephys4_D#C$lQC zBr`vci?b|0Gese|B(bPOK|@oanv0W*vzCid FO#oh6ETRAa diff --git a/Roguelike/Library/metadata/6b/6bf45a0ab38a1458999f7d05487b4d52 b/Roguelike/Library/metadata/6b/6bf45a0ab38a1458999f7d05487b4d52 new file mode 100644 index 0000000000000000000000000000000000000000..6da24169bd9ff3a8398bbe797e55a595c410cb61 GIT binary patch literal 5037 zcmd5JQr(Pp~0yIX2+{do4p z$#Y+x?@4U~b`C9tw#E{*-9pqbeg<85LRk2Fr%BX4#66C&qDD`MYrvP{x&V!1EqLGI z$ve>Jc+P9^40zU~zc{?7aZ9|sK-4}9d75M6<2(yvc${ZZgj-?|{O^K?>*pL+jdL%s zvRDrr@fPAa;!SFu>+lTM*-BisCUF2`5zQL=OCntJ{~Yr3og4ArMm#r{e_6zn z^IGCM=4?lw>*N+T;$Ioz$@SkJ@id9`h$q)io>kHKl#0*mA-+1on-lR_Lp;YdElk9R z`>ErzFcF_SBRnOln70-2WNhw=@a9B5tc~IEeY`uuEyeRF`s7)MMw^{i_b5!`ah`i4 z+*0%Qq0jxj4^71sOw5ym=rcad#}zfjlZZna_{tpdWSln;M}xke=@py~o7VvwIy^4)wzswS!6J^vmOR#SNa6$7NZ1dFkWkP`>ElGH_Dn zD*>JyDHmiJK%Z;-{uB0;gwKm#vh(zNd|ytDyVda4kgsPR%a@%}AX3=SD?6>`&wso8 z`*3FEvB!^ovv?=g*^dQNhiEsWV^{IMJfF-D^E~s7y2taw{Aog?8Ju}ZoQ-C1?l-Y! zf-r+Kj>M^BG-@C7a2I^;BXvyF)c8amDjmxaPv)W0F+4ImPwF~mi3{N8IU)yjjK+ES zUW4$t9-c9pSs!Zu4Bo((q~TdGtLvBCB_`5nfRDEQ^#lqH*w~D zn!!z+S8F)JO`NG?G``m~t}mc*Ug{W)JQop%SClUVb&O{4*OaeyERMe!;?yyk8GlLn zLQuzO2LC|$Ngd<7pM*GdjAq7PR=yC_F`B`@P`=i&IDRd}sbe%V9^X#*LZs1X2LDO< zLTpfI9lsvp)G?YF|EKbWV7zGtZw5K}Hz~A^FAs6*7|o1d8{*V48u#TI;;<1o^Nl*z zDBs#6JemL0F&guq=g55TsAHNZl{iOA$8sF6zenb~zfEyy`~aRL58rEhgzIy(6(G-1 z293t`vp(qto6EHPqZ5wV|=4Br!pPla%u zJU%M&V6`O05(ISFDeLsIUvs}SU-_ZyX!{$3%#T;mj6UCtzEjKQt5c1RG+_+)l=;ef zf_cIH=H6=jpX*e^GrLYTJd0vH|973rbJd0Uc&?V>s?S5R4zBBa@?25hX*^f)I+FUX zd6IP`HC5xuI+FTs<;at)BkOf)vW}#_^W0g8c)X6R>$^U;CeEr(RpXlz`&F+~Es;hX zhA@UXqx3yTeoK6cI`wH_j1B8lkt42uw;29Lo6`d(A(Oz2vg<8#E5{2Pd?mgJ|t$N5j8Pkz34qxEm%_}pB6 z>U$%8>O1lMMXxwCRVtPP6ng)qc$CSS(b1LUAzzl2!s=Qv=&g7KSBB-H(qN4|WtSZr z0@)NU3m0YQ@SkO5Dy4tw@;>c6S`Lj8v?RRuef51HLR>}r7P;i(>LX~xZYBF@>0;g7FJ&wl*X<}4PcLgDXl4n8lXr;F$v11IgNk}LfkV}V@`db|QexTFST@_e^j z-6$<{mJaMN_NL-H-bDJ4=LFRO4nZnZBay$~=F9_?dmulVvAA|A<+4 zh8^#@J*};!$~Zn&={$eBr01+7{YaXr-zz8WX{T5zr%$)Gw6=uL?88r-k?|8)KpLT+ zkij0_oGv8%7o(Q9v0Go^cr75t=X>(B#R!hM}a z4S?4P2I#bF>TT&ZGdMHq+ST?BOxAJ+ZT=aGrGGgAGw4PpK)$811;uiDuU)v&*N8uG uGp`bV?uOzOe;|{1r8BK(8lQ^!a*?C?N#ptB583T~W0Q8dlqtBb5Pt)IAbLdr literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/6b/6bf45a0ab38a1458999f7d05487b4d52.info b/Roguelike/Library/metadata/6b/6bf45a0ab38a1458999f7d05487b4d52.info new file mode 100644 index 0000000000000000000000000000000000000000..c35714fdb192f88817f9b6b650bb2bf4e95a71ca GIT binary patch literal 631 zcmZuv+fKqj5G6kP75fEJq!s8J2*f5v4H|qfrkQr9Ws|)$yIX<3cP|knI&VGa%EGJR@!5S9F2)^ zc%bbW&Buk^j)BiP9Uqs+~ zKR(?g4i$0}T^8kI{EC!&5p5wlr7i070?9aYeSuu`l5$-4od0C)V+lq?DsB@NzQDJj p8Az9uqwwIyOW+%9P@}BTxTLqhnG3`JD}I?UvXG4`V?AFD2H$sH#MJ-* literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/73/739bbd9f364b4268874f9fd86ab3beef b/Roguelike/Library/metadata/73/739bbd9f364b4268874f9fd86ab3beef new file mode 100644 index 0000000000000000000000000000000000000000..0b13f448f156d099f7ba2fc11663cf1c148bd346 GIT binary patch literal 5920 zcmcgwTWnNC7@pJJg;K9z5y4w46>r$GRiuE*mbQcsq z@dx_68D)<1a^ex|?C~#7aC`hqh^v$m*TbG1KY6Z5+NYI$UW@V01kYIZSxP)dt_7BT zxSpDSfn}d%37!_y=(hv*q;0NB@Qk$|mN(#y>$oDp9mR7u%H+8ki86OzU869KH}YJY z;Ew8d2xYGCbx6vlVB$V`0A<>T`|c-@!yj0*yF!7!5y(3d*msUx!$+M`Pf+K z-#t<&h82J0Kq$*Wu~NQQl=f{YdUA9a%9tBYDP>qrxHT`_EhnTe%Xt}~ax`BlBO5s& z^R*CP?(_@N2QcKhL2$oYlF*q2RX0z4FbHI6+?$T8Mg!gRp1fbIh9ZpxJ-NooocQzj zU)y^Z@89&;srEG(=P(9LKSVhnKL&3Z@qBWBnD4pY==XSjxPMYe6oYeL5@(_qoa;?2 zLl9zc+L1W@7=^x%`|u9vTu1sb5vlgpK2&}zN8H|r%8%ibx%;H<#~kr0_<4@VK|e-e zzns@r=o}Bv7{!d|VdxwW{aCBh_c+Da$Jm*EjAC$O zXVy~;ZtUEt;RH8!rXQnlUQZx@8j1bVk5S0;2JCQH=?I+)t>dr6IQ-ZlrPCrI5?f+4_5VSYN;2DsUzek~U{IVFQAETJ|%VV5=jKX!9fgM%? z=YFFfYqj5QPH=nw(~nWO|9Or~yrUn}JZbA3DLFp*!q`u9&P93!(t+ku{I%JR9fzael|6q6*Kc z99>u}$su35p)81sUz{wKU2ka0El)~tCWvZks>fXT*idYBgQ;x)K+YXzNa1-)zKPNS?f%3VfTXOsb>tT#%wPMvUP6Y^}ro=xbp;P>2d=>-CwUxs@S zPb5Nx@QQf^75Tt)Rf-G@x~ThwFSae|dT#jpHxJ+QL(dHT#eK@|+R*3Y-|5TdyQdmI zl2Y7U)i%NV1os8kn`=vyfB$t)H9T|gsfLIC-SAw9d+J*B$8&Wta(y1`dn9e*Y1Y2XVh^ucCJ5D^mA$uZFme+ct1vd`xvP39uc?gP!I3+b4rDG)!w!PuPNF-wjIZ3jM6j2#$W_?+VYtcQ1fJ>MO->q0Ja{6^1rKZ=}hH*!55d%h~XN6qu4 z`=ZbejqBb+Fd}Zxm+PQ$d%g_st=664UC+y&FT=Z;Zv{H%%kiu59C*N`Jeyu;$p z5?86idM5TKxaK$W+#s7 z<99R|^QBjD3%Ks#{p`8nM8z+ud!s4rkzt6C7${Jd-Ej|XacxqdXdKkeT3D@x;E9#0 z8nC)fmG(UtNMBLtmvy+gRxWrleq5`Nt&zR1UvzPuOk>tUoF3Tx5^YKSC{m!3E}wa4 z)u*gG28_1ml`WIjb+jX;9m+A}e6FYCx)duQCsFr2a>n`#!_x)ev zKU+U_7Oky2diwADhds|8`0MY(Z*TnV%mm<}4Si#NWzu&`UHk%D)x860raP literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/73/739bbd9f364b4268874f9fd86ab3beef.info b/Roguelike/Library/metadata/73/739bbd9f364b4268874f9fd86ab3beef.info new file mode 100644 index 0000000000000000000000000000000000000000..215c5c8c392fe038246825336ee91fbd46c23079 GIT binary patch literal 33717 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 J{m&O){0|4oFzo;U literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/76/766f29702ce4e4a1584e5147c88629a2 b/Roguelike/Library/metadata/76/766f29702ce4e4a1584e5147c88629a2 new file mode 100644 index 0000000000000000000000000000000000000000..8eaf6ff31e931617e306ca51a2734c0647d18e41 GIT binary patch literal 7389 zcmd5=O^h5z6|V8_+L=jkVu*qKK*|$?XT7^UJ5EfD|1$RO8n19Ro2(rnA}8scsom+g zr+d`h>)o+sv`BzBI0AA&LI{C`gpfEOIC9`XK*|9jEaSnFdiCnPuU?N3_rEH{qrVkG+%LofxCn97IpQ2yYlwf}zJ0qi1|UYi zeQd@*wEf*bec|(+o4@+%nel00H_^w@_m{->Q$lP*{x)tg5~75E-y0L#KgKi4l(No| z5VwHehwCnM%9b$t9p3yP?kUfCE$%?iW4OO3eP-~I_|h)1{qt1ML{2`hXLk)Dgx zC2=15e*itSpL3M9Irpwo1NN{JFB5MPAJcX|f_G?Vg}Clx;yK8|o7=pIQz89q_)&wk=f+O)giAMU5|&+dYMK9u3(qK|ni@F#uq;S8TB#KS{5Jim_*XLw2L zIf;Afc?6wpIIbSmn8EXUK9b=jJ?|XuxxXJp*FJ?N#>qw8(?5*I2e!4If*&OCeNEy; zKOZ2DPCOqc)eJZKU%@@~KaT4t{Rb)E+^PR##L}sDejoSLe+bu6`WZ)~^iO7b ziuNDQ@RGQI7`cvn?)OxBU0zP2lM8Jx38RIrL$YX4rm+Lx@G3{ZFu~~aQi!tpXkBzcN^H_7IJp&#q#+AuA zqo00WhgxEcaW?B8>u2&9o5ii4`JBz-*3S*Hv6Uht7G)V{Fv(9r)oj zJr;sI#%A%a>#^anJpSzzCy%jN`S0to5acm7i~mTEi#*18f0E+lF*Ymzh8_z+9%Hlk zFZI~)SRTKX;^Z+lE041iV<99uo5laE$3h&?=m38!#mQrAR{mdlECl_{X7LFqr~ZQ) z9pLw;IC+fC%0HCifu(jDO~lJ@3e4M$dR5k2H@p zDR0grd+twb9R`06Z&DA}HIv~cj}8N59y#c2w4e3KG2r94uWM8YGFS49O5AxjamD(E z*A{JzUYxybu8s71B)vXyS@gi1n&=X*tL7r*CaNvM$XoXU*PrXS!McLZ4AG+Y@v;k! zO~iRO?lg`Z%Vg#~ypxF4exhPdZ3dXz3^2JFV0JTj(hiQ=!6)qCDLXi32cNWq#z1wZ zyOAkxWZD~<`Udp-?yB-*0p?f93eFRSqeA#z3x|rj*zYNEFC4n}TIu@Uzcv3l@#Y_n zzEu0xdB(?A&@DgT4ZoAi-mXryJTe9u?kVGy^#tRB`^~*I_?_!it7o`QwR-mC^!&f; zROZ!D%*VXC4_A{9#X5Mv@5Q_#zq2u~@^vKn-RLRSk>pf^7wbs!d#Oo1#X53Orxxo- z@;mdc1dr$I$N|5bytRJTb*h%1DD2muPAv%uKP*CqF{AmtN&O}9Q`D)S0Y=}jP8Ch! z=DWq}AJnPEc*xhO+{ep!oqpyyHOkMrPSyI0eje1R#q*MNs_}!V4?4J~e$DUO+Rg&6 zNy;~g7xfmFtQLCQCG>LKuI`+fh1Ku~g`??=qUxW;fAvG-D2|L5y_ezvsq@E8BMKe^d?{VyTy8)aQ7xo@*q?%!)zlOTDUSI9Yv*D^dtD-Av6(1z>xLo$Ol;895Inl)d z380fCz2o)z=H{l;D?D>rVYgD*h`nH4UJAUVzYyT$RVNCN{_wHTNC3aDGwgXmlHQy zSILP=`BRq`SCT$f7wf;LWS};s1#6R#NGFIBH^Dp}*4+v>@b{FQ#nVdpYUs7)v%x~( zuKKDriHXYfx+i__iju3L-E5b$usMTM671MiA9kXS3ra@Nv1Et`86L-pUpYt6`%bwyt13(v@xV zbtzdi$pD{>w8vYk9Z2;!9=6bPeearT>jl~g@((as5^d<|v&Xgy!?WrV9LvOzRXHW6 zrnD1jYbKmdLcW2#o!Y9P=#2{hXIm0pRZ--%l}xu_F^GGJoiM`wVI#_BnT17}Xu$Ie zZa>^eoU;mHc^-w|HTc@~^@f*+g_a|==51YIg;lHSCD6tygCjHEnhDE?U%!ZbI_D|B zT^nAL)-Wu-5VVI4GP^PSwmb!|R*UDavv0*wq zi^g~QM#FdEoO)et^{^0RXc)*?t!sKRX^NvQi9-K>v&N+m(Kg5QFRn2Fu3>DydmlWV+?)ET4$Q zpjoWJgw7fWq()lvVEpU}Tuv5*&AMg^SgHWRQ&W@jI%XYYf|=k&H5G-E zCm3~1Uz5V%pGb9)!FRU1XiC9u@RRZGrNr}b!Z`C@jI*gf526a!Yt`qCdXxV2O?A4u z(qZiskad%enHoeLCvwyCec4ms)d0^EzYk8t$rJU#iBS^Ea7}_QBF&JFyx8#oLEHpf z%MF4sk*i9gUY7t~edBd(t0 z0^TXoMnqM?JuiBfN6>2;WrjtnOEiclOwF5WAeV*}=+!d{wfP%8{Ena`4rpvkJ90PE zgAWIU)6zc@q~~2R(pFS5??p-9x*fr-725MDJ&#uK^{vcVgxL_U))=L0g*Gxr*6Xr; zB?L!ZgGgQ`9}uVIY#KoIy6gMlra7tI_Nyq5G}kfkXnVPQ2_pvvt^{r`?u5xjUFq1V zr>kf5OKGK~4`f4SdI8*0oiM9B7qwp$d}B%%qyN0FW@5)2hjvBUTKp)2kUvE4TRc0D zrtko@B(x$ebg5(FuzV+dR!hzoGmUqc1IOpk4B9PesHU}8E@IzRSPrG42~4|^DjH=%$%1>&3r|<{= UnYopY8}(*P5Ib$($LHjK0Eky}zyJUM literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/76/766f29702ce4e4a1584e5147c88629a2.info b/Roguelike/Library/metadata/76/766f29702ce4e4a1584e5147c88629a2.info new file mode 100644 index 0000000000000000000000000000000000000000..b8a3a55fc0c48c849273a3237c7f58a9ff5a173f GIT binary patch literal 626 zcmZuv+fIW(5N&+)EA|U)LFk1yYi-0BV;WN*j3HAPV3K7ayNk7d?=q{cHO|Y1bI#n( z@T~EJaDQVA+7(zBxmbe1CulIa6rurA8|*Y1R2D3?YCwfh125=hkEou()^`QjRx@Sm zzS$`t>6NZVwr+I;HW3pR49F`Lw*C#=BUSa8WYg}K2aD#Uq6R7yg&XsPW%kgaL}NV6 z4XU1sM9iksGF;3iVU7_-5XAEc;~<*l^Z7JfK*-Y0&7KHe-;Dh_ewFd}^LNFo+;F07 zbC7A_T%nRsCn5;q$q>vQJ-C%%OuAy4nNmV^T*>5`I?Eb1{69nWnfosF?cEiUutRCQ z!%g<+zdYp{qD`Bw)fV-s|KvJ$c}y;QRY+X-QvRHII0>8JDL)L)dxmd86DW5jN8zU{ iuRw0FM2#v(Epm6vv;lyP>5(Y56RLHfai!LN{?j$RhQVY-ti&NTDqVR9csvY>f6JvK?qS zR6fC}95{eDwch~5m}EbE+V7l;qvf|D}O94Eja~%Vo~I)A*b}kuh)J%T;6bc-^<^w z83M05B0YQpGA0sZ{F3g(A`bpOEJ%FSkrkN`w&0ABIleO9b4$43uD=` z>!D8#H-4_8PqqP#V*O+NywTv4TR-zY#g4arzTM!ITR-2Caz|c+ejbhUBD=KE&L#Ng z0(xBET?T7AIpO!@_?3k7Jt%hGPqi*`ucjS-E#dd&_}2;FlH=Sd zT>sV_N3Lkzm*YPtyg$c(N%*!L|2^UKH^r{Mgh@H?c1=5ceZue0@l6STAmxrM!p{TX z%(n;0V{IpsZ#z<+&HsnUA?DlIiy1r23zN5{%szUAT(?qYAMHxH*+)Au zi2JCFM&W+peyo5O(I3=Qu_=%IVp2qH2bvI zR1*13H6AE0QZ;D@e%)_*jqzEpRadZ?5H8+)b^!sd*Rn8{Qe!2*snPo{QRn zdREOy!+%A!LUruioRSh8y0-uAFQ+#4y;c4GgA03p+P=to@s#$var8>+J8Rh@>ON~7 z>pNq|JZAiC9Vsm1W#kj{g7Ic-&3H%N?2-8M#189wH#@BFmM^!%`flwoUq6B!<}2rL zV&2QvSzX`vlV|h3Q{S_7mi67_u{l>p(WiaBv)K<>`}B#~4_W)VzVjaDJ&Gr}uV}YZ z-yJy&woi|-M>Nh}HRH`UBAxy+JskzR57vAH_u$zGarN7+z0y4Oq~B1JRVdR)d955# zVd&Kr&}8_$7qt9VU3%g3v+n7S2hQ($=Y>OKd&+yaMl8cvihf00R&>0x>|ZbZEJqA+ zKK$IyD+#}~lMlbO^S9yujPI2V&%X_S1?&H>!q4;_PwdmT-O`KOwOe}ecsFU9O)nnr z%hUHb`dq(0-s8XehsS$2`#j#e+2`?2o}}qybFLjkDp*0L9uHNZYkKpPPVy(_TeXJL z#W+Jwc!BSsBr~JToLa%Z2#uev#iIEvH6xJg;4C-H``+YUU;j3yl3YgPQN)s1O74-b z%BlxeJ+SJ5|Dy-qTPRnyEKKcK82MrJ$7enn<4-DGa>GIY*y~EQ%$LRBA^(kLI~2Ki aVCuv_^@IJnztZRVZE!td;kIkjWBvqDTH(9^ literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/79/797ae283e17aa4827a330e531ef47b73.info b/Roguelike/Library/metadata/79/797ae283e17aa4827a330e531ef47b73.info new file mode 100644 index 0000000000000000000000000000000000000000..2e852e4caf93976c0dde877518548bf12e07cc59 GIT binary patch literal 582 zcmZ8e%TB{E5Ue=z5y*egG$~4(8>JK?A%rSa4hTitWRtGsM`Syc^7Z&3`e1LK8Sn1Q zzH0m;+}|04b_o_nt`=bM1q2q?j0qsQ#$KaAX~B|`9%W2=o;}i!P$mF&H;AnS;*obh ztCi9MY{8Ns@W?wgc6SauA$7Y8$y)6f2aD#UA^{z;#w~ZkDtqXWqcIT<1G<5lg5~oZ zFr8&M$pNObG>0rp@HU%ZJI%Lw7NkA+HG*j~rnfz!d}zojJw9{9RSmpsoNsCgb-^Y{ zI!}CE8ouXXOu3AFpjr;y(SWHn^)`q?sLV<9MWRmn@##s)A_)I#Yi28|HC(+38cG$>xAE~y#&6-7B$Kmjl1CnIJubp S>HRXHWhq-##k#o~jeY^0eX$|{ literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/7f/7f294180677264249b663e086b83af75 b/Roguelike/Library/metadata/7f/7f294180677264249b663e086b83af75 index 0ae5d506953443f06c7a37c560f8ece2aa584504..750c05ceb885c722660bd25eb64801e5c98436f5 100644 GIT binary patch delta 35 pcmX@Bcvf+O7_*U{(MHMt`~r@}#i=F5`T<3$X^BZdda{PVQUKn83{(IB delta 35 pcmX@Bcvf+O7_*_C@kYu2`~r!^#i=F5`UOR)X^BZdda{PVQUK#W4730M diff --git a/Roguelike/Library/metadata/7f/7f294180677264249b663e086b83af75.info b/Roguelike/Library/metadata/7f/7f294180677264249b663e086b83af75.info index 9165b19a3e5119e5f44eba55c603768718f97056..94e99bc9b3dbb9ce1493dd4baffac300145c65ed 100644 GIT binary patch delta 23 ecmdnVa*$;M3nOb$YFc8_W=2L6MixmX1_l694+Ta5 delta 17 YcmX@evXf;43*%-UMngsxK_&(U04j+CK>z>% diff --git a/Roguelike/Library/metadata/80/80a3616ca19596e4da0f10f14d241e9f b/Roguelike/Library/metadata/80/80a3616ca19596e4da0f10f14d241e9f index 0dcd9b8a1d55650d220638409522f18b2c0b76c0..9aad16b24b811f3c06e65135882e8092bc988da4 100644 GIT binary patch delta 186 zcmZql*yt(Az##UFfk9;>0|Ns;1A{n_Vqh@UGtx8KC}}FfD6!dJ#FR<3%&{{RBoV>Q zz|aY#i^2H+e~{RE;f@Rt{bF*jm^4!d&*W8NQi2k^3=A`Yf^dbCH_B^IHV~JYd_YlR zvw`>#b`~8=udvCC^2w7wh;eRCk^jKN!w1yhQj}kil3$)TnO|H1RX|5JVseL)%;o~6 GiHrdIf-W`y delta 145 zcmdn!+2|q3z#w*tfkB0lfq{V^$bJB%8BFyI^^7-4nu;)rZ}t~4WtzM|jDs;^@=7sj z!ynuX44ptF#bEsZKS=o|zeo_5p@WBkVJ479mSdQFP(pcffVj-$2Z|D#1H_N8v+&(? d37f1apFCMWoO5%F{0FAV7RoZ46_h730ss!tBX(6GBhzZH88a>H8q&-ID^9nF5Ui= jjR}aEftUq|S%H`hh}nUd1Bf}dKV{>J6=Nx!$Hf2um1QAu delta 56 zcmbQaSL@g=jfNJ+Ell6o+C4j%fS4JGS%8=oh(TiPK+FNeoZCG+xO~J|<{9 diff --git a/Roguelike/Library/metadata/85/852e56802eb941638acbb491814497b0 b/Roguelike/Library/metadata/85/852e56802eb941638acbb491814497b0 new file mode 100644 index 0000000000000000000000000000000000000000..5df196086c8d575f7ab48d190488fe5bd4b67333 GIT binary patch literal 5865 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 IoBCG%0RR^Fx&QzG literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/85/852e56802eb941638acbb491814497b0.info b/Roguelike/Library/metadata/85/852e56802eb941638acbb491814497b0.info new file mode 100644 index 0000000000000000000000000000000000000000..986d4071a4492203447c69fb28346491d782629b GIT binary patch literal 33680 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 literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/86/861b2dd019953d64f84df72a7b2f8372 b/Roguelike/Library/metadata/86/861b2dd019953d64f84df72a7b2f8372 index b3c82830b3ded08cf2746b48f9f8625ca9ebd9e2..b2d8742d042fd8434ceb66fd94963d98d5fc6474 100644 GIT binary patch delta 14 VcmZ3ZxJGe;7_*U{(MHM10stb-1VaD- delta 14 VcmZ3ZxJGe;7_*_C@kYtX0stb*1VaD- diff --git a/Roguelike/Library/metadata/86/861b2dd019953d64f84df72a7b2f8372.info b/Roguelike/Library/metadata/86/861b2dd019953d64f84df72a7b2f8372.info index 9ce4a159637ee6875ae8876e49dfb82b47194c2a..cbfc68105757c5f8f8816f95449188f53b944564 100644 GIT binary patch delta 2228 zcmZ|Pc|6nq1Hke3W-^+^hUA>Ga)sm;mZs*OFh_DkB?0#@IY`+5tB)^TUaZ=)^c%lVc2;3xX&FF^kz z{|_MPkzX;ZX`Y@dlV3&_RyP}Tb{&iN0xbiDxdLoCciWCV=PjvTVpAgZ7iqL7z6w*y zyDL)39`Yu64$VZ_gPZ57vTcu2RG7D~iO`9iPS`$oKB3xnE*3 zFn#;ic01nKc6EyNqQe(Sl?8z3PO)Bmd>!|ES`uV9C$v8drK}%ASBCb+;Hzm*C&xN! z*C&EUZhww~T71{VK>Mhx;KK2qH?f|~OnYonEMaS+Ztbnl_+EIdPhIWk^gVYiDO5ea z0>|$opP#kEc>?)quL{Nfc*QI>FUNp7&=u~cVB>V`1T?G0qERhw_m(mE_F;e&?Nj5) zJKL&kSy?;j*H$}o{hr+U3*PtlZH(%Hl2%!66I5Ql;pyprcEp6?T*plPrfZ4TlH@P; z7e1wOXahA7PS_JLB|SOtH6rhWEq}tc&BnHoZ;djQ@6yPM2VYw*hz3--J1~%IJ4CD; zin?OHNISS>SY|z!>-&HB`(ss9NxS zi%t~GJdorDw&NGyFy;C$D$;KzE@mwva0YV-94!42A$V02ei0FKSGK5RzE zWL_}h$olLE$kdW7cQKOI*E!oc;{=zw6$;M=f=X`F_fiDM6T_mjY%ek6#-{;IIpL)z7>BI9L%qaBzvhWk7^+!tvH zOy)}|gC8j&a4Bf?J~I6^4kmwyE{LU&iEGl?Dm*3%SF$+}OGBt=Z%obWixGs_GnKQiTw4V$|ZYW&OH$)oTIermHc`HcBFc)*h$=<&<% zBmbPqqLy+V1BqU#?ZcGxDfvE zPb|%A#C=*5igo0}yFTv=d{!@q!C$$P>Vopt~pr>42@Cz1te!j<-PN&!|BcWAy{UG=YQ znYv_>{ehnaRXu@N##Z~SGXHHI(J_Ok=k`HO!%gr>Y>Z{WV^F-L80bZE{L^d8%1%Zy->H)Z33zu#=)ORDNM6US3{!gGz!*=DTK|kGq2(r;i?H+KQ{#nnKdmKN$}lZ zSDiArcfL|#K;m#iDIo6z&+NYC{QA7ILIG=mB`|Q=h&A+ZexCIT|0_*<@e6v%6mfmo z{^C-Kvl?N*qR(}RuG3`MiX}lb!*Kx2m>I~&WB97#);Y`zLPk>QWdBgGQG*$Wnqc*? zC2iPb8`pV3BSVR<+0+xXP|j+O10|nkqqn|~xGhDc6BEEfZ+MQWMz}5a_fPZ@vn?uY zOznNp@4o(hqrC+29boui3Zha@#Mh`>Grf(Fb=h)ZJ1&$RZO++*zIO9QpGAt_1;Y-z zb7sGIe7l>BW~L&z==n8Peu{ezGd*!2tpEqy^_WhUgQn^jMVQQ+>8p3IcCzZ#qj#Hv zB`$#^0|WxMrR%q&_t(b?zJ8k4Y*IGwQw2+Qz8GvH@=Gq-?8Q)W*tf5pR`1g`k)TX{ z>u2OKY3|0JDCn$V@(=5ickZm4tanE{0>?HlD^cOi{ooT;O0@mktljUqBT0wBOjZX! zf+Yc7JS_@>%}sF9SFz99;Zpesf#!sR!yM-ds>J2c! z(MG72(XvLAFH_aLXFV-c%cQNug@K!h{dc+TxFjQ93S0ffaPw`fJ{m>Xo?+W@eR@5XkgS26EV@^fqE@PD7t;iZlEE)bUhT010 delta 4892 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 diff --git a/Roguelike/Library/metadata/87/870353891bb340e2b2a9c8707e7419ba b/Roguelike/Library/metadata/87/870353891bb340e2b2a9c8707e7419ba index 06bcb269a3d4e1ebe364cf9499010c88dbe26c2f..925c426f71a71a86f63b5a84c4f520bed725df29 100644 GIT binary patch delta 438 zcmbPeJJCUsfkBLofk8o#fq{V^$W{Q-45oTUdPW;1O+^?5Ci{yhavr&mu=qa^ESMZC zBCY7a$iOfYsHzx@|NjT+xcaty3rNKSpxnyIwIbqH6POqnY=JVYEFcU~^(86#AV}2( zpxi>RZjdPuIp^SgXFzfl%#+WFNHHm}OnxOIWpx9n8{ICT6<|=o%D}J#$YKGiVS(Df z43#rrn`|d4#k7NMa+Ii)RRTMveGbKXVj#sF9GEtIGq~;!l3T$sc^%M{2+ql;MCB%b z5IxT6l3ARbUzS=_Ir*cg#AF^ZZZ5cp*yNAml9S(wyG>prwm?!8sNFBMq&&YUJESNv xuQ)BgDAze7GbaV8QCb$KEKnERoXtMsF3c=CmR@0#7fMA>-XO)h`H$38W&r%LeZK$z delta 309 zcmbQ}Fws_$fkE^f1B2W|1_lOxAo~N5W-!$=)HB{FX)40VH`!lAadM9chui|7_)H)! z2IK$#ffU2Pm1=wc1AznMnpAwbQiC|}7SP7Isc6i+7^Kl@>92}^gnye@$FGy!wp+8X>T$C=XJqE2!1WuMnHw2cn46fx^iN+mft3@g$d8{@r-?;j H3L66eRV65t delta 44 vcmX@HLh9clv4$;-zAWu)TN#0v35c12m}UFgR#qAA?Z!fEf=w)86ImGmrvngA diff --git a/Roguelike/Library/metadata/8a/8a32d65a6a0c443f79048586c9648b05 b/Roguelike/Library/metadata/8a/8a32d65a6a0c443f79048586c9648b05 new file mode 100644 index 0000000000000000000000000000000000000000..44c26cd5bac271a55afe6055ef7fb50bc02a29ca GIT binary patch literal 5925 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 I9Y=`&0=WH~+yDRo literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/8a/8a32d65a6a0c443f79048586c9648b05.info b/Roguelike/Library/metadata/8a/8a32d65a6a0c443f79048586c9648b05.info new file mode 100644 index 0000000000000000000000000000000000000000..d91d6c5fd2a509f7566d3c8ace71c720fea739a3 GIT binary patch literal 640 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

N7HBjqq4_w+C2_o$&C4vim|i>HQj7^$^yP znrKMaoK0492IC4hXMZ{n>D0psd5wn|;lYDp`d@1sa0Oq4YLBVwZYC$MNAMxsJExvJ zloJmq>lj`jnF}haOK#wVXVMMR_F=}iAWEliPM)2|zU|jXaJ?-a-!gPDU_ZNRk;wz1*o@4A!9#MR#j^t=@#Tg1{|EYAq<5R z1aE9^2JsHu`hVru_U_jF!%C?vE5D3Ono!x!zEGd{#T}-~~7lT%E4^;I?)LY}|0a9pthpQg+gvNJ7;?(T~i&(`Qb(w?qFQ zqA4mZf2ufmx7*IMwBO`aWPV7#x_DzP>4S%>^^Uu_)Sy$Jy8fcvd7H$35 z+d1M^G!sYSYifam67Bf0p7Xz7zaquDYxU%-efk_hmdne z{YB!BvVZ6?257h^hJ#*l#4-F`RJiq{cos)X10Vy*I2~FSC5?!seQZK6fsZgrPc3D| zk%0UXXP&_#VI2g*9e@s4g4Lhmr8CUDc?WoNQT+(yah#N-U{p}2JQ|rc44VNtqlm=t zkMZG44%L_nY)Ja6kca~iy?^432|4UU?=RhQ>3`OK7Xer;%9Zc1nIrn)vRY{jB z51mG1Gn71`l5$|t;h+nRK(WlQRCa`5FF>_^>9y%!dxF`tG~h<#i%<|MWanS~Fd{A& zQ%|fq)mnHK>wzFn@b$%?_V||w;uHc&%QGM_or2~2Zik1tbq6Zy!YWdPqJ{*lc7OEm zm4BbiqxulEp#iI(orQDx%w+lHyKlUCRWfcJ?N?o`hO@zA19Wk1mBBsj54Si(b@S>A zbE-bXY-oTfz{ZV}aQ5m1uIj3lT?I1fG+(_P0M@+XDJ0#MXyxMv13Jb#lVi8mUuX_f zZP45R>$#;9T+w+J*5*|pumMn9Nk#f$>VFMV(-1~%PoDnQ-_901PN(kQ02{Zn6YZs! z(pdkqCAi|e!0|zB{8Lz}J{2Ffz|MEa{`tjxs}G@P&;VPYpcC}8n6%Zi4Q(Sg5aY3X z@x$8NKjztF*zsuR&eA`=X!t2?Lk2!{mJP6;O(#YpTt4UDTwgwOcll-af9qM;Ab*71 zb1*nn8!vds>L>C3-#O1`W(!x_33yzeJ~Nr(!<}_mCSV6(1F-t81IFy~ zg%`Ir>;D(ta;zG}kPWc;nTPh;=jRTf6Vd=$`Fz*Gj@;cm3a3r!z=%W906W`xcVcJj zWY_@e0hIpIpOjZoc2!FRJt8FH* z{PYN*0X~#XHlJGg{-Vi4l7X@IT{ zJg(P1M?q^R?E4RHgz;#7wfUcV)@jUyek>bcXWpX|yaUFgFF!s#+352hr`zZ=As+7r z*b+2!f;wK=x*Z*qRp8elsi4{iJ5Zk<&7E1xXGd#8mB zPCT&dzQUWPyAh7@d diff --git a/Roguelike/Library/metadata/95/95eeb1bd7377a64459d7663226831e8d b/Roguelike/Library/metadata/95/95eeb1bd7377a64459d7663226831e8d index f10c87aa36c8c021ca9eff9570f2ac60aaefaceb..32c9c003a09c55f7e0b1081bb1b76705a435954d 100644 GIT binary patch delta 14 VcmZ3YxI}S+7_*U{(MHK`0RSQG1S

gQ{vPL?+xO1Jiv$U76`Rd-&#O;&|4w(`I}ZSx zpM3Jk#+!0=2u!Z7>o+|Ufj0@b;&t#Q0dEp;#Ryz+_uE(8|9?fg|H173YGY%yu|h?= zK0^^YDL1~HKDtQYtMq++6Y%5NpDZ_4w-0Z=HNOE^!LK%!$rxxTp#ktqSuK*@nca|S z_1)glll>#KdN_S{l`x;&_v@8_JBM%Gp5GGmL#&Cj%4SXm@+SUKzbWNPB9%6Q?##EZ z&$p0_TeEA6jeq5%>Cw^N;&>mH*QLA`3Ha&k&j9^9^P67aTF%0?L#bd7l^||;Dk=?l zv{*`@U)U!fZp9cNRdaA(5Fc}7;cEw#^l-z_m9Q# z-fB7B+StE>hw@jQfS=F){HL=YV9trVmv$iyP>7_VPjGu_s8oST&;>jRGY6DS5kySk z&gEYT$bTHbeX=!QY#cnp(X^UwPo~!y=~b0imjJB#cV|DqnFI8NvZqL_0TVz2B3k3* zji8zEiyT4XJvNoNQp!vaYe)!XDzOsatpKsB+6UMT6LgIri`mif;W2VB*?&dIyozq_ zAKo_fnk47hFMxvp8vP~*@Un?a(+W6tMalEw<9{?bd6B~01OhfuGNQ_?Q3qlikPHy~Ju3wKk=pq-7hl#KtOC#GnV; zUc4Q&mZ3(EHtG_5xX57ArWU;G^6}#6vnSxUUvds!;tue_zdL_h(09`W*m>rV(IO@8 zUVr4P(UOZ(wLbRTG#?-Eh*vpc+_XJc&DU5xXR}!URui7~3}of1K=HyZiBe z)9vN3m%IaT?EL57{2d;A0GV0f=`)Pr@fWRDaPzLZUJO; zdSY05Q^WiRrE4g|n%&_CjT%vadNdvGwtJAGa0uu#2RN)Y|9J5E)5GtYU@yvES^|td z-uA+X2I$uq1=Wdom7$nw*f5>3<9`}+v9_jq~SeWqda@Zj?& zmzRUfNx*xvAANW*)jPl^qHk#0d5*330`MfJx3Nxgy11U0YsmwU;t__KtF4gC#vcy; z&lj`9i}y0p;u3DcfA`=&;yvViYhk31H5Ddx2{^u3h;|GuPx!MC{Y;G0(|^&gXJ0)$ zeE6e}f0EA6d416xfHxR`etXMp27>XsHo6P5>#v-Ne4>wQvi-=`j@uefEo#cbIt;~^ z)oIWvWM`a68%Oh}j}Kq;qqi4I03P;n*Y#&lG4{N8=m~$#D9v&0;Uj^hr^aM%5n&>uuRhu8rpXNx^$ z|27^bTzXE~Q>$$GwBve$y76dO0PRYhGC?u5aSGXlJ@MOvPahtB+cduz` zi_P<@NfdKZcXH@?bsA4j%gL)tREtb+UBc6KJ$S1ZPlEqh8kRvUwhnOY`K*Z?-txl%$QBMAPk-EnGTk>hIf>v@A{R2& ztRpglxLVFVK`FY?MoE!~8~wDpc`G@R=}CH8In40wMz5hyW(WTgmUCY&mVgf)yq_<) zY7rIFL!<_fGmk0hBGMvHyg7wIQ9fjHI8D6?NVbJuB3!L!8-eZ-_Qolna8N+EqQ<2k zHnq*Q(%^YW+<(Lk`JW&BQ{#0udw~SpJ$yUgWOm$cO4(1$+*17 zc`~vh6MP?%O>#20F=Swj$JO1ndi6)*-i?uID(#+)7_;Rm_sfV?gNl*if*kzUga6WR zb((bE1pM;Bd-dF@Q5f`sJ|;Qn3ZANY^*Fh<@$O=*dcjVzy}iAKf10F>owxmYeY@hu)i z1lG&R=F*>43DA`&0+NYJLExcxE5(>_T*6unV}GdT?Oc>L)x4G>^oTSl4Bi&p3BI0x z^~K>A_xA6#`ceK|3DCC(`9?pdOt>-hqEJ(`bvV$~7P0|v`HEAIewB6h3Q z0+25kDExc@U#IdHM)+0eEMx;ga;zjR^r=xyTFb|bBRB}HDvFdGuAOW|m*YO#TAfD@YfW}7$!XO|oeLAOW^du=sglD@UtjhbxBR`kvY=Iuczaqe8a6=m-+ z*x+BzzdX+-IC}^DhuQbD*UAA$qupS{;(xh>%eN^dU}basTHqkL@Oj+x#J|SlANjyR z#Gn9tiSuW%d3=lmRUPm|Lfu?(lgLLs1@z=KLLNV0WJP9E-oRI)5|6@3>jyUJVYB9k*0O%70?h=A3QaI8=9jIX<5cYz`&QPR= zZW8g;;4o5_Lq?EC1W6}eQ5>iItqdwCNU+krn16BRCO9Jj_*sdXfTqq~`#E4=ni!b8 z#$a>-ax`cg=m65$&jg@eL%EIwFnQZmPqV!Mqt&UGzv&jO8ZnRKYYu(bFgDeD>xZtV&l`EZuPD?=j&;&X$=*46X zFdV^~{k6kMUOPZ7>5H9-!-fy~+yPtM1k3@FfyBUpN6lh_q~WO-_hGL6g@0}j{A#m8 z;-up~VV9byPa?2U;Y8#_L_>rU>eR5Qngn&DR5}zJx>zqCD`}B6T;igb*@%&`3BEl1 z^6viKQVy8YUI+YW_B}uQBYKXz81|U@;;k7_5YfViN7}j&G`EtUcG(%a17WjLx-~k}+ z1h$RR({{ky`sp~$9^+$7tvN7p3Q6PhM?)Ixq1`%+!RiMgra`X&@FGBn^PI<5GI7z8 zx3l_)+4ev;03C>eDU|j%Onn*v;UaK}J9-cw8jH~*XXGyEm(J35`F|@tL%GN^L~Mdo zk6cgO0b2eXpQ{I?kRA~Ah*u7y3^OJ-L(c}0gO1Sxr|4yqaoA9A{PFxnL)93JVtN1_ z&4zZ4AH3{b!<`^C!|RC&c>C~Xo3`OaJDM+X+tqVtP`w7mgAha(J%A>S?ifucf5z`dQW_66#in6G z4^#SdZ*Zlu0?J9~3h_=7*Fj2q_JPVb1z?^sly*=N>0_1rSeV`#$FEtIN zQnH6P2yQX_HA)OlKhui`oCJEYJjN3a9yW3EAhMr9k5TX}x_>-A#_QpJCJa3{hjU;W zC}0?@MnppJR$@Rx1WGdD&0&^?52p6f=-s@d@o`Ea=uvV7h@IzB#9d3N+HDz3+<)j1!|>7#|=;a^ehJBgg)F5xg1JKkAHqm4b*NJ&DEEk8PlP7J-Li0 z;7@1wG}a!(Dde@60VoGW1L%?j=m9pO@;x>_jpDg}f}fb?DL+}_F^Es8JfN^S7Rms3 z0282!gNU0T(8n%vtW1DK(H0B#*HoIC0DmKh;|cIWkaq`n0WQ^uemy#;uhd|0d>!QpVQYb1tZ?dUH!S^592}vRhDQ^3 z!9s@+GQ!G(3szRSaguo!L6dU^Q;1kO5Z4`|ErRq>j)tX7rf%BNP+eCqiqedS!{L9@ z^)ixxw+{K6F5oKYe2vB}>KSWHmo{H9Ooh_A#eX8k;DEm1<5}d_y7165E9_9B9ODj* zy#UI)G0qYHRW>a0Z1F9@K=db+DV!DSs=wUe3&}rpYn5s$T~Q+@OKa=u6_U z1k88cpn~}I%4>aCYLRiG55f7vYJfrK99~H0mQc=P?!Up`%D9uK1Cit zSbzK7@<*yPRnk62oxU8>CvX|udu1&XniDX$)ulxEf)q9KrQe6M4~k%rGg>+ea7 zBtWC#TVJO_YU7!iAV_@a%TX`~_)&Gd<3pZ@3H1CNhF>+-(=PPRPUe8ufS&%W^ypT1 zw@w>n>tH^>YJAo;ZL2Psleil>+Yy`sfA#Zy)i2b$>w* z(3Jy2kmxHDCxBA8Gi0yE>Mn=AwdXwQ(+@bny=(5aXC5S@3E*11;94h!ZAsumhjDT5 z1Pvo!L-T*2k86W3S3N;D^rEnGRwx8?1pQIGtX!v~xVI7dKywB$yk0sz7}B;2d&cB_ ziN)8`K^RE@<~EAH(HjIfNhvo1&42$M~5gjl*l`7}*+sk3xt!ms+}vGk~;0 z+mcp-%ED&J(?eQb_^ir>#HDT8WddqewqtD|3(bX;4l>qcWLKp#N7yzQjDMjK>rbM?1l*kOpc{bXU4Q^tkrjm_ig4hfJ@ur*aJ%A|Yzei(P?K6FoQI56 zyrQirdCo1NFJ;R#lTZKt0cD4ET0sU8e7?z=TTlVZznE+oqlH*i_z)vbj!)Wr*8Xb# z)!<2Vm;i*v-oe*EI`D!+9Dhy^Q6jYSfUb>buK^LPf>!2(@x_ls!kP#t;_!sMs{wsq z**GKw(PSWIoWijp4>Y~_1~J=KlkuGgH+Rb0RpcocV8u%G`6=vV#c!V#EM`U$pooo<02J6@MRmsCinrJ-{CRyDOv|6!=8`>fHaKM)+efU6+ z0lVn%-@1P7`p)i+Z6tv2y7bC00WhMyykhC=H=qJ~qK^@XK?n5|gcjucB^0U0&|S=s zO2a9^AS`$tFnXUa}rf6I#-2f2I(o&A)GTH#L|%QY>5@V^0Bpj z{rb+0-5clK0Z1d(y_bKp0|*l$3ML*wg}Zq7*wGjQ6_|iaFdm;~QdUpWBHd)QzfIwg z`c^qaN}v=R^lUYSR51x+#fi3XNE4Y10-g>wH9pYLB!BccUt&f4CpdqYfSb4Y#`|PJ zTT_NRz@f1X(3)RV+rY1k;sq!}L)2A;sq>NPZh{tzXy)w?-kPG;7lpntodSAgXfzWo zKm}YtmYDVu)1nDJ#qt4zm|fTm;=}~*M&IN2tg%j+fUWJFo!y%^-oh_ZI@%omZi&$Z za0lQN5`XmkMZdt@HvpgePDY{0RIinG9Bb&aX@PFO4}IV(6FqG`g$fb45hK(>P)rM4 z@x-q23^BVfvWU~uw@uO%0gXOr9|>%M2_ArUaR<0@^Y|$~WPRLs7{3W4C?YX`nFj6v z<$#BepMsDT1CK!uf|h8MA*Kh~Qfl<%9YK>f4}WFo#ZXib>w^}`MHq&lj$&;-!QwCMN1^)o0QLis&>eEoat+T!@z8*lFtgQg6RApBByj9xck z9zL}XFt|(u&;#HYilHZ}LblC<6bn2XzhvdEq|n9-*Yda9x7&K+|L;sr13555%f;IHe|h;ge$Ei-yt^+(x;U zwwVs@rlazSOk^71Y=1L!i;3!@^-35~F(!P+~t4^5$yD7RJv4Gq!hdxi$UL2s+GVzGFMhBZJ} z6Kc|vp;W2luU%h5AL9lrzy&6Jzu@VUCyyTwAA#U8vIB4%*q-|ZFroK8z{Sg7_W&l= z_^JcMY0+lSRnh<~P=b=v$Vy`|eSZv`{e$N;qM|J)oJ~UChp(Isbc=ZL1TmL08N^IX z&43orj$;i$S3@$cXv_Ka3b4^Mmn(e3?9ro#*LJshb_pX1z@J!|%zZyW0%9KkaaDBF zGHti)uU}$Jx{#Q$)*~+3GU*0T(4>RXB6I?-)pvYrGQNmVN&#n)$hPR0vwwOdzS*_; zLfkpPmk9!TGyRD-5&|uj&z?R#T0GskHS!CnM-t!>D+aJeG2%rrZt?)aR`;eGgV~@4 z+OQWd1`$}$k!izFp_vEt5(jBubNSelv>=w=;D$9#p&aC((vZn8tPGf|+k8>RNfQqr z@SMzA0XW2HwZiwyo;>;P=zq!4&F!5vudyR&F`Z0iM{=zM;E}YRf($)PdJrOr;vF2U zi@{Bau(ALktArF4k_ncrxX8q7^3Y%bhThgunpiVh!w2+Ia$U=09N}rJ#ZIXn4LX#) zy5gVzphoDoe~iL2Bh>;06#VuRzT^4?<=e;84}acyBsa1HU_xkwz<-}u!6Oi&AQDa@ zFMNk~KB!ZX(rjoffMUXpfxI=+5@H3xRLMY;H5iM~q>@alw5h?G4k;Gar6j&`D3djz zSF|v}6A&v6#Ja6s^+q3V9C*JN4X#9dmtcV%aP)M!`Q4M@YhX7TPXPX+&0>b1R7Z6D zh&taw75cFWoRS3HTYq6>95pIT%)Bln4HJNJu+-ZcyhK8#O6ypKz5op#ZkYx)5tN~6 z_zwM4Qqy8Bkqxs(CQd=WX3c4`Z~O!V{*v7Chd=*eYbt&`0js@D^uZ8Z`^+WaR%H$# zL5bjs!USY#SgP!hm%4I3w94F32ZU09+JRQ++X@5VXf-Y0H-8yoI!hm7!VP^OE{EWi zfFa^-R*XI*gXJ#oBLbGIEQrd5d1CyWD#8(LhAVN zAb4EX3g%fOC9h(}ChFuvA~dP6Mq;Zp-_ptl5kYNpkbFT82lJ)z?kV&QJ;d=U^hX~2 zJu6eA@0E%X;eV_37~8)%i+?<9$U;daf>v{r!VxbSKC$mmt z?Q76LgWql1SlzjQXWi496BB^HYIZz7#;?9nD11hS2Y(@-LQV!hu`z(^GT_Ywuw{4(FuUwKpXcC^jh`!!xXNF(9LR$(~6YA zk1ng_=np5k>B&0)*iUyCv!|LoL2*|56hV-MMYHfJyEMZjn_}^pGu5D;QbR)tjjdw9 zyDgcv0!PG1=sN~JhS<()a3hG(k39hgZvul39)F07Mn0fND9>(`8XTAkCAgo0K0HrL zz|QpMx3fq14QT4MjvyaIr0z)+B(7r#fC;m$61*oPbm*Y}MwTo=ZGdj9_USnk`aYBz zvGPHz5l|3=Sr;Q24f@1AcL0|^L=5B1Qs|p`{sf?>Ytx%Yv&X`&y$wVT;2^l2iIk*l z;D3$*8*U5cQ&UjF7<@7CaqnWlyY_NpWeYkq65}93G>CxD`eb?wU#5UNap!ML6Hf*; zW^(dn06iQ}M;{KS?EsiJ_wd(u{YQBwcq^~pfkk@Zzb>`{tX*re)iX?AMQ6(U7mn&8%MUYB{#RS*Rg9LD0qrwLb z?J3$pFKZ_v6RJ!})&AN)8-33>(U0T$-rl{zccJap(lZhO*BjHfzd4xWPJsE~;eSW3 zfx83Jbw`N>;zyFO!l^q=Xie zG6V6X1i&q}0v0&h>X0E#zA^!ZI{@gLLTpEV3NJtc2lJrkS^kK5t_1At-+#C@edpl} zf2D(uq=>FxoTjp5FU%_D4(%Hv=3#7=4{|=+z?-B~d28 z^h%-+)4HR5S4r4!JkfzV5IZo1_UWpC(b2|!>_ z&$;{&_`C^#>pRmsU(fi9hwwoSjv#zjMLFPek-CS)nFt1#6AIB(;Wd#ZD}7NiM$@Ji zYn!0&1C1s=TfnfUHL#XufP0q%A3iUFel34b?>zJZ3Ai`ie{}fh*?;^gelaq70_e_! z(Fa9;re@lGAY`E?rd0q3Rg|sos7w^WB;{3Nr%93e#2P#xM#IWPFkbt)`$hD`hV@=H~2G(x*PLTd;LHe zx1o1HWup2xfg!9YNeKbaG?mg0gjIEzgVcwE(h#SOO$j<2ya~q9hcm}<@gm&gMK935 zzjyyahmSkFa01Zm-H+e<$KU+@?#8Y+9ddxrZB9r4_k&NO{wzc40}Wq*MXLYg8P+QaKv|v3yvwLgz*4|rx`0R77?|=r)3x$NnXn(dKwnuiL=2i)uj}g*5I;x44 zjusBOOLuV)1kqH%L@48~r%XVPxAhs}{F5Dc7U;G1fA!I?PX86@g9xqoJV%h*-`>CT zi;t%Ndhp+`;ioS*wr~pJEb`!VGvM-v*mkzg3kDJ+(x+|m$TxK$IzyF)$WtbRnQ#t3 z-NpJyE`Ox)G(nMr7eODLKIabbaIp{G-h2D^pZ#95GC&1Qz|o)vhq8h%n8<5YMiZ}4 zgQc|$e2HN4C0bdu^zqGEoHKsfDds{bk2)LlTKgY<^x<=_eaC;H1R#WS@b91fyMczL zMch!Pre{heQ4>#m!6db4aH&*nu`VT;(#H`Gjem|B=y}|`i%~!?r1Zki$G^#oqmSNS zGyw>)d+WwKd$)i0+3x_pUV;WR4aC$N*;0x@N`Ox62E$~rD3}J{h}>uhu75<`Kuf&* zg^y_(eXo7w;8M`PoCF}sjaxTv@7?+BXTJqs=Zvr;WYGD*5v*M1S-JM5j5OE*Aj*Nt z#DCh*6YfDB95Q}CCzt>8yu88`)=P^%a`3kw{p|~$Jk`Y|>;T7d4nF7K;k;XfB>PsP!(M&o}@^zRH6K5Aa)J^>~W!Qt$%`RL`VZK`dSj(!hcZAxa{Rw+QK=X8wF$T{`j{OpE^h z-u{Ole@N}6mdo4$HLxH5_{RY2^ZDm>KXT1BsUl zh6m_>G5tm9Uk0=J$tRz@jJSiCxPL2nD-86no2d1{lLsgMuRs3vD;VBOxd*I|8+Qfl z<;N=P*4ISih5x<1@BPg$|K=Be@p2b_P5C7rLDh$uI*|?!4_~+4;DwJ>kMgq5oB=Ga z=m;A0iX7m^@H(WSpnre*{{8*?gK@qB@zw2sb~4@#-U`S>YkFn8p$G0*_?f``wvof9-2uYkg2|9s-@4H}wZI6MumZ9B`B4-~$JI;DDQq zz)haMca!J8mgyhrJk%Psc#QKX-P^5JIXbOxj=xzXw>WX@I^d!1L#^G`J>z@UhHD^N zLmi{m7{^#H7+1b%i_>nkadcY$u6w%EZMA!?$9s=G(f&=R-}>h07IjJcmbwjHYp<;h z)=rO4x3*iYoqtwqpm-k=^bz15wT7sL{%A}u;IKPPkLiXnw!*lBy4~)yTW~|C-RX6D z{dRA$^S7OEKHYol@z!Iv&bGKE9DrcIXK>Hj_F8MJ6~Qj(N5jCK=<^us7>#fy`tV4& zAssNL587ZdBgqX)O34ez z-G#-4?=1Z7bN#bVj&ItYxH%3$ssZk68*5B8#$74i&@;~<+Ysr*9SO&X7u?aF3IE{O z6Tlq`+J6wm4dD!WqJt|$r`NS7URZhVANt>V>Sm;-_uB!;Hm7$_x87|<)cexvEI$P3 zJec1BG>S+%f^duNq>nb5%>{s|pGP~r5-k`uk^EPrN^Fct0Gl)>XoJ zJFl@-&S8-IVA^5AG2D)N;7CG9_}0Gx#avxtlVp?wYkDO9gQ6SAN*{>exVlQ~*47(h z*ne&h+MV6b?b~<$$EE-L+UkqnU--`1;p5GWH-_qd`qQ7jF(b#Q549fp`o`B!ymg|r z(Q0lk2d(j-#hV--fSD=Z9*_$JB5)MK8cHx1tZSR6n59W)a0t}7Z*;CI`x^{xJy zA;ZCNu(Gpy@90atUhlc~Q}tZ?PT#;Cz<->xb9(KP0^c_|b;fT3pJC2OXIL6EE>k!% zren={-Wvh}J$X=<7h`-nlM`6k8L=VKGng6KX{g&IBr@)X!R}!9{_U@vI(YX#FMjvA z*4e%1eNU1bwFB11YiBmjoOtI1FSg}Y2T9+7pXf8{6@3B@caMaNCEzApYOqErbbn1a z#@(;!%FNRg(MUw(#3<~R{)o|a?dLqSYQ+68SlL~@cl^MM{pT;X*PG$?kGdf{;LP~U z8Z!Q7-rZ;5-lYWF{#JAeGjf9?L4y{))T$v*D@q@8aJzj5N?38G&D-wr6( zTM?0Plp(NGE*XWDY1O%?4BQ6R0&l7i*}|-dAWQ69UrmaHGo2o@H)c2|B1E(oM#BSx zLl1WU{KejL7hC(e7538sK>y6Y)u zK|*{JQ8!A-CZ};1xzZ`~scBas@ZC#IO-wI=Dr=?p(%O$9!DkQpEOCl@W02tX{>I7Mw-1dr2;8L9)ciZjs(d}{3N1NZk1 zux9G>3IRGjK>{t*vYHzKK7SYv2Y)d7{3{DDyw$!?+i>0V{x|@iZ@>P|*ISno{VM4P z`i7o2-$qC)%f*VN^_F!ImDw`m4kInax(8`(95YkYT!bMP+?2=}uJz%7)|7oftF$fT z30<^spL);e^9#!hFSMT3%dFH9!qkKu`yzKJu&ex{nw|)cYkO9>p5S)19;D~aVGLU z(0A19k_)@-0EB-6EyAGJIFl2uh-5syiUzw0u&73q@_&P>I+!go2Bhco&pjoInVE^Q zxJ&6M^m!kY$B+a*qH!N=?`&>ve)ZkIKGphIcE9HHbvgjwrJUK$dmhI=u&&UrZ+K`F zKsVMr)gFMXtbevxPgtkQB>Iqxp))jR^|L!AA+1PBwOc}OLPmcyE)n#+5LZ6X{Sch6 z10P)4`0B=gIMum3M!Lq+bvoem=IPeky62h7Jcic`@EQ!gX!*bfhC3>26Ho3zHY4QI`KrNx@PIyb3X4Zhzj5Hg3Q@seQ2V&c87u)QZ(ySH_lEKe|sJROG3cu-S)pJXlXs>&v)wt`%MeXxD>(usew`&SbkudZ>;4p7s$MsfGtne)I~7S~bn( zpl~_418`LU>4(?5gPqOoC3ElK$sZQ7n{RwvdshG z)e&UHxogHeo#3l78TkZs(&W+tESD66;iE5?#sHmM8^t0-y4`f(b2{a6ROcqV0{X z2YSmPD9zHXp3@_!c3{y;TH9(5JA=;d_6{xvC;E52(S14k zU+HuWJK)Tgl25tmgc;?)G^S_fv$0;hXn$xZk{#Z7ZLQPp;(e(&@ZJuQeJ3Ahd}n{#s9IJvPO&7`UQRFx>s59kxB+#$*NdauYj^P`A^gCD`G`vJQhx_8 zFEAkyJb5rsOW<<4sWqqAY_u9iQhBar6QeW=6YR27e@uf9_yG;yWNz+!W&3JvAEk}Wdz4-~WJsjbkLfirJd$SIAI8o-;yglfoUjpAY(gGeZqcCzN*{22#h1n{24+n3}0(ZuAS1;$d#%|QY2s2(P z93ijbJ*`e_#IK6+R1zHc0wfm-4U{>P7IZAy(L@Gr>+6Ji<^TQp-A4N9RGXcfo4(FgQ+eH^bYw-5j( z>;ry5*Z3lz>l}{p@%U5Q_nupRZw|l%XJ&tgKW3Ra!Y-cnk}xV@Hh&MmuZ-`IH~Rfn zYau=16oi2ieRo9g^L76*o>_L7W}SREr{I9TN}i($;WQ_~qecTI81lohs5TjcP{g zc@JCYo9WcX#!v+vZdyO!I#ee)6DI`?LT@uRHN6jK< zC+YKLYpz>Kk+p6~N4O(h-8_D>b?P!5FXw>Mqs;z}eNLgF8hbA@a;%UViGn~(^z8uq zpm+k%8+X*sRHzBPdZE8@!P&#AIb{yb%o(9oq=hK<$TAI8sZomJTH}XC!>p)Kql(8T z{3`lXFx=eQynko-1&a45Sm>UG;g5%IK;K8q(CGWx(=4n=5Lpvkni>CbGMcUn%4mYN z9{L92>gGk(bx{Ko$`+~j#Iy-Ytst$c%1r!l}9sAF_cPaTFBHTX5$ zr3;9u;-SQhxnR*Gv+l9yJ^<)4rtZs*VsbnYI+-S~DU&UjP(y(h3J~E*&nGrEH|}lk z`E|{nI{-g5$D5zo*yqsUiHV7Apkp5%paq_$k${?Dm0*u9lu{vQag&iwBnU=T*aVYLNO3uC^G&Ypot@iuPcpU6 zD|@h8E&j}+A3Vf_>W#7E9D{j&tK|4r$rjJp&dtqZBXBqS7<0K_X_gP(co!$u>IJj5 zHhrvK?pj8UW`$r8kw`ws(ve{+QQ@$OlFHyui+`*jodgC-%0kek&3cz*I5@s_`(9aS zehT6bNhAN1@b}C)Nw&hEVwOUlsgoQ6u7kJkjV71rqX3P^t3GhODTg`o0lweop}V`% zTLdZs#CfZuX;K_hTfriAOMaz5X(`wT9+MpRD6+;YW+gDOGT@Fvt93()_lY((Hty^E z>wl_$L+-HykbInfv{0&Rk}1>0woo=@P`Ye5T#e} zLlgYTJwBV$HsHX}z@d(1>CxGOY^3AeRv%R<&)yyr+#FU4p;~(-J6aVAIzllGBM-C- z6VYgdA3#Hyn}z1@0N#K)19*nXvFqtgdwkEzL$VOENPk`E+`}F?eDq<6F$Jt z6AbWl3qIgpX0aPM6vwn(B8-K+f~j?QQd>pZ%%+xYXsTGD*#rm^X@+?66eF{*$>Kul z1^V&<;nx>tpB>D<8Qo(CIR9X9EtHd(h?zYNYZRd%0!HH>%yNeaK&~WtZGlo9@AD?kAv9m7Fuci0*bec>Zpvf(Ow?VZ#GO&6Ej!ECWv9#>Hca ztvlNvd1d@Ujuz*64jAk41ER9n?#Va_CJ5YeAVQ#$1mt8D%R)?+EXOlV?0*2*hV+Mp zU@P#0uKlEb@ssk7ec@krKwgTq7c>uTRLo*dTOz_>k;4N@@(}H>(5JqdjfotMEs9jK zBL|r(>Q0_uQPgWHnk4M;MFv*J{faC!7~V0w^Oeq3IH27A(}|i_XVEeu5N^zoZQ@cB z1*_FLDlQ2NMGLm@_F_DO3x60SbO1b!26e1KKHtD(;3)Ml=kNe827w}h^TCeUl~9ZJ zDVkvBk>WHE+Abz?6JY!llyh=4K|K+>YF?gmA~0!iYux2hX!-~r2xha;oE>m_c-qMa z-H4d~({laiTwx1YEGYsTLN)0F3rjCIr9kxfWFIi<`T$WzC?%LQK!2y*I+}%X@*Emx zjK{i~E)1HOJsWAb2C0MHBdX4!XldxHyDVo_rq}G6jsZbSP}qxglfT7A^||2}9&i0D zO^Ndy2lxVD6flK`#Hjv9lWc4m$cvF33S^0k4!ccsK@$ezi!MN~^?8x8Y|O?fb>A=a z)#4IBa7xL&S~guInSa};5M)mr?8`#4v(y|LZ0OCm7O$u%QQ00gsPE{}2Bn=Sn8i)B zL30a?wzjrg2Rv9)&vO870pq?KTb@OO@*Go%NwBd7OcYI9BOka=@X?)xhMLH;RbznK z0a^on5Jaw)tIAP4q+5g%gYu9(CNNiX8gA=IPv}#-af5qtiGS*-ro6>&P*oAKL5CVG zhn$0zBP|IPUz7P!V5ZD-0DpH0#$)D+nQ`Xm8dj(aJ1}6Ztbq{{YeG#D%ZLf3WK|AI z3J)jPNBv@84-QR$WHFcF#)*wO@k{4sU|gOQW&6tNoFeC+|dO9DsXJ<$s^J26!qBfKgE}nNv@_dnrf+ zNz25!gvZdRRwG0I%Ox@9$rYA}qgpbl!(OgPzyR~Sc(Yhjt$~#~7$iGVsE$0VftqKB zIk{GLpT-B$DR9di*+w_;DG+aCVqV^CfK)j-KJ{{I;!bqh0k{HltLUns5oML8mo*#; z3gH8?nt#Pfl3KYQv^4}3!)kJ9GR_uxcs3&Eh9XXl4eU)m3+GHa`4$Jaa)vZ1`U)1vk(Wn%ef_#Xi2>hoA17x)Yso0Pmi3 z1<>7~2Z>d2s2CHY%Lmz(g!o~FToFs@MM5h#fq$AyphBq1)F70=CXJ8*GJFjTk( zYz|gJ0==xDE}<(}ErK-V8plQz7KrS_v42HJ?eWF57KfTWte|*jdSPMgNAfA0OhMc* zc-W%w@Ad#c%MxEPo-Fem5YFU16UL?CwAUzWALG4> zlTDtdIHd_IB-I6wYD5sMs-{R2k(~-bkTdC+qEIV4dxQx3Tw``Lo%j;yqKiV6d$<7KykRn#-= zHHd|iO-ng34dWcBbXKzh*9w$MGvO=EATn|b%F_z!ZYhC|&=w|WdvG!%;}fe;<1eJb zQx+M?)$7;9;-?)J78jS7SC$u-JA*E_M^$Ea0M^OhzUhmwOyf8t=u$2n6@Lh{BOT>v z28C+Dp$f?&s0fWm5qaWIb5dkJ>x!c$V<7l~fC@gyucBUR7A5+G6*^5UqbWeePuz(^ zIv}N!$!9Y2@bYOZuqvkuWT0MeabfYm%E9ISQfC8i+Y^&gW*orBl(G!=vE;fnAd&L( zWca{)!02(j#J%BA*?Whh@P9vaSaDcVK9f+Bl_W*f%%94^$qnI-U?v}gpx035mwFO? zcCoT!nNr=@fS5SI4D=oBY|0J3T@)?o!Ng;nTmcu$w<#BTy(Mgb<&_2e#Lt!Qf|#Q? zpFAIf5g+14h*5)N&542oN>@3a%`}B2u`jiFcI81O2&PAx;3(m^1AqBydIZ!N-4I|f zj@J-X;3v~Mv*?S{BoL?(_a^EYex)y!%O;@a4Ep%$ny&GhXgXsLKVOAgAnbspg(X0% zB@l>GrmqQ)bsxhkg0h3ZM3{$WvSndk&P_YgVp`;*a40Qns8_;XDVjrQou#7{s+!*` z7wIIir>Jy+jVO(=UVnmD5j3UJ(CUf;d5K2GyTBnDdTW3R{O1EP%3C0$ApGw9ejmSr z6c5;596n#5H!+=p-~e>OFqi|2^MI%s#7sUY4u8^RSD5b+IX%?Hk}Vn}ni7fuB`Ovg z4R0!OIJH7Z3nJc@qM0<$auvn_t%KSmm_-XScQbKiaLlg>dVhmBb)+2e7qM8yRtZhM zG9W$&@Pc%L{a7?U1LJ2t`52K#!TxPg6nO0Bt7tI&g}3PmcJGafysOr1nQiM}^>4h@-?f5l?2| zo*Y4sYkzMEe+*6QP>4rB2P^Q~oi;Z&p5J+zqRBGX0Z*Rn+@akK_d>l4gr85e14=C^ z<#qtzOl2?(Fc=NfJPI^&NYEyFRUJ}j#SVmKC`g2=@kGX+m>if#hJOJa%m{OdCO~J5 z+AAg7OyKUQN0-S>Ab;rHN$sCl0`cOZ%zzqic7GuJH!r>W!tQegODxu9jsx)A6o2&w z3s&qvEifgLM2v$ws!eNNaIKbS!X=u7iu!{xBbf%XNT1CT@6IjL8v-w!^PMreL_`z*VKrBgOO=uM;rX4dE&SYM z{C@-r^_nur0e{o^n?GB8kjs`2IGnH%K5#6~wF58~ftFMi@ynKJwF3Cu7z9ja@GK_q zpuuKFZex=`SwVg555ry6l;vSqqnR!-;*P2scX60ZNJOn08=(vi4hBA&Mm)1WF9YDf zb6SZFhq=N7mqV-?2Jw}w!S>EJBKpzge}B>9CaO6OfV{ud=XF@&AoK|UVPuUn2QM|r zxcrjICJN3GaCjPkutY{D_u?aW+VKyqU;u+3}UP?QbHE>f1Q&HDP%>jrODY~IX zpi8ap$;ouDUk;iHhgm*7k!dHLQGN3AvS@F>z~zocxB%eg=;a0cDCnFr-vR$~;eUU9 zx%Wr-I-lW&)it1l!mx5cx#!WaWf#QcL@os3384?EBq279x)4SmprEr*;~+tVCyEFl zT14n;#HG)OHX*6!1VGuDdU79lAkID!@-intFH_fA8dxg;MNoyNYEFq3 z@rA#nXzkP_;*_$EW7Yu>InoP(W^MxXQq(ioAv<{oK%dZOif5vC3W^OOXE^qid@wK# zr6F1Q#vkj1;Sp=H;#~h#>dch+4tS#d#KOwbyYIfs%K#zZ1aXh4!1q2NlYb+!Dg+s& zgnbYzi-XVCfpEhAkckpcfY!2@II)(9nqIf0X!4kge$Dr8Aey-eD2=C~;Q;RgIfK8a zJDafyd<~F?ocfz3z_7YRq+-eN2DC=wrKQDJ+Aq~Qg`V#Kh@U_B+aqtT;!1$vfUSwL zvF6wsLK6f%;{&UBDhz-U=zoI>#O($xB{-TZoC8|@Sd+#{?lWJS;O&V%Ma){(ag5sm z;6%tf{M|I-k?y%C=mYNtiP+R100Dt(??fqUCE{o(N%+Uhp?6{V{DgMZ*wX>eE)1#HK%0bqMKgo005&o$PlS;Y#fi5g1ygN=eC(Tw~fG=Cv1(9aMOFT6zHQ^fHq&nW8@@(lo5|(a*#tm@|o47{CUqDReksSqK~W9}|I=h&U!KG_zUw zASMrXfod=r?0<@M<{zXQLJU!R4kWgq^cJG_jw zxVZGIrRkpusQX{e0nq#Y;eUEy;|u(v4VI@5I9K%{K&X0p*?>wmRnuU>DmY1-Dg;Pp zH%L<&TnxdTW+n2%ACza)K!?bD)r7KYD!>Un7r}5Q;eVPdBFFm1owe^oors#`qt9F! zY`G5GE!&lU^ePblUMtYY@zmif{4KsKIN;^Oue9H6>#yDsG3DP#IFq;wJce%&ja^A$ z*(6ozOdRP5*2Gs0)u8AJ(~TN*7z9!$%|5KkF^N0*3U}$qJ7vkKK5@Q+1D+W_{o3(!$6h^*KaPx8@%o7} zjPNB#cuYEDHaIw?fh&`v34p|}YckYkT@>o8wBWYL(338hO6nN5lu@4wf*$M8r%QEV z_9yQ2E73;^a;nMQ;LC5KZ|k}6vW_5_eDo$9@_!G)AMYaKFBWed-<*0GeY)Fa?t+Ty z!-xL)FV_EkYcPOy%0f&I&i*(TwV+c}_$G*Hlpu8?$|%M(ptl25gCA0D2Q}G6`ZWPM zj>;2)dx9SvU2;hS@%RLw3j-ZMH#pr#-bePAjeAxR{#dw^zutq!pT}KTSp4OopX}K! z1%FrA0Z@Ck{p_oUUpu~Y3}3o&J1aG73&;&{fl#cRF%chzIH&WO*r^1OKoeQ;OD#1c zOQsJiWV7L$Q#rufg5i(Dd?6luJ0Lmq2X8$ix?jU`_%DNB5kRQYFr2wbP|Ym?x@4w< zgE8HO!$+9&Y`*HEKgD!2P)^OdNqoVt;jTaZ7H0tQbi*F#Pi*>FG^3v|#H}Y@M8tb2 zzgqq2-1Sc}ugU>0^ndrG<3GB0=UzM<#4cdbF!X^OA!o2E#MCrZGx~}n8l$P3fqw=c zglo-0oq}m{z?|ZfW0Z?>-JFHqNxwi}Vjm9h1)#E-WGqdm5GmvmdZvDq9{)D?!n4Po zI@f=FYJ|DXt8xH(KC=4A{cqim-$JL08kb|(BJ})KapuAMn3Vg;s(eL0r-2U>?^4UX=O=$1k zxLOBbgh!A4?(6Q)8+-b)==)vD}5r#SC_Da?qj#$!SdP3w}A5c^ub-aUL zH5>HBH|S1B6gl3D13+-{3?|W~0lT>3{11v(Uf=oPx4uYep zBP%~RdF15L-6Q;t; z_v|6ZiSso$06iW(^ypVNzJIDsz#PQ8Qi9Dur7gNa^}zOl7SU8wa~FY$s>Voc6~sZJ zt)>V8oeJO-#7)PYPt7;h>4RnyB%f}8eprZefZR~UcuKTtWPfKKz50gavv}aZfgd0K zMbW$(;@TYWQt!oI-1f`Q?0i}u3g`ml{@AfJRi3bUW%689VHCm(mVcbEqReo}2h)cY zL^sSzp^o?Bl3)sG#=Z}12tHm>Q_w?gvY;&=WN=C9u(Cuxh+9v*{n_iUEG_@;w&&jH zy*4?}6>OO(@voqe}4$*fP0Fb2>fE#G=WJS_Ym-Y6SXoAZuyb-@!l;{|IYF4UoZW9 zy6ctN({D##NuTm>ANtnv@s)9}jbFtw>hP024+mG9nbemx5&ZIKguleV&p6YE)x>uS zb`3Qq1P=&8soBjCNlLmLGy1f_Oxsh85g*bxuod-?d zBM%?_UMgSP`F}e9pz}NJcivce<73+&$1f(u@^m$b#RDH8&*kw6*Tj*~%rZ;5XiyWB z&8uXp$S(s7T8f_>kr@cf4=n69|ISx7GIY#8@a$82pP0$+-o{*QwJi80@PGTC7{Vn z{v7Bnoqxq0e83I94qq@l2`AdC?14Vju^bgX>tEmxUN0^$F8%DTAD{1^+iSF|;lC#b zV1jdt=YDYN;V-`QM_#bMvX&e4#)=WIakp10(+sYo8*Dd=SJb3?K;%)=77=JjOW-GA z2QUR)8GD9`Z`{H-Uj{Pq5PaP4BleMbg#Pl+Pk%kSzW8Rfld8Q0yVh;4dGR~>4mRS|_@I-vj#YoH>ZQ&phL!Zj}u9}+JLl!$2)kqzp}jY>K!jXvGnV?BkmXT20FkdKC^iC znU9|R-1_I2FD&CVQ~bGIJbyjnJ6?Xnf;i@XWgE5#NyYU*Q?+!!(>WVcI%*cIL%H~( zf*v=TihTTXC4Qxj&sn=ix4(DnALfm>&%7J%0NeYEV?Q}^@aTsxesuZm75vCJ{{*|; zz?)V6=Z|jSLLFHOopd>v1$HLz=it%!r0MTChjIoyN&N-~20ovzb$>g^Irzn5n};@@ zIdXP=|86wrSXi;%CkJ50iwhSnp1AOP2S2%T>A>>a%RAdU%1Hd!z&s;IC=oFg(HB{o z4FXQXPH~i_B~#y1N6i`LmhHJ&6@v6 z8hL%0%e$N&?sIsheRB0T>;3(_!7r9wo_N0u&r$S^O+5 z{vi8skXHt}0R`%)<&Fm0xy}fbbF~S&&jP(ve563=`}jqAzkfUY9CFUYg{#0maB?md^4wDj#bd-92__ z^YF(vKe=(~5`R+@{Ge+!zwpsBR&?>UVBd6xGfXBO;g5zsOht~zCAQZ+aNyvx%TK+% zd~vEmKo}{db3+2j`PJzmL@P`-9JHZEoWJ)!rcb%1xP_xCN%8rUt*Q6Thl}PsL!sNbKk04*8x*YJlB5X+|u=b^*S}$t<$`o_kwO6 z>;FHngIP0q?<_zJYiGK46GKaMteGa(A+GYI|b(B?en5JpPg$)d$d-U968$W!tY*b;n0 zJ#)!bP04=n7g5=7O}HaxAiE8H>X?VhV(c)8Huc;=h+^jR9NHZBPQr-1$(j%C)M!4~ zEy%Lk^Px>O*LEI5pKLxVi?NTf^8$?%ZtTqWEJohg`Cg3^ZtQ$t!W}t@_RFXo_x^-8 z$@{R+Y4kb2g?0Sxm_Ja*-;4R8I(|0hi|hFLm~$O0oIl6?RJBDORJ6t~#{8i={&mck z*73=hFRSD56}7JRI{sVCm)G$dF@Ly@{~dGMo5jpO1EbMyD;2HrwwOOs#}~zXRl*&a zgdJ9Z)88H?kCYzE-&QBw_W#GoQRr_xNA!Q{Swk3+r!7773+=ZV>m02mS2bguqbCxs z&(RtP@f>xavhcj{JobR6(eG4Lq_!o6PT_Pe1gW7R@l@@PHZbwoe2@v}RAt~(;* zZg}Epx9CY&D0+Q?=Z0Qh%0XeQP;&jg6K-kDgU*B~QS*A(4ZKn)gKp(Sw!0^h=`Y}$ zP>xT8UWG&J2FBJ646Yj(T{qU7#s<^aXd0VLqsKHhn?|;#I?TbY?`!ehjOvbItlZ*!pP`eI9K6D!%g_ z#@&xEd9J9p7T+D&1GYoSm=ulN>y5fqKUD57!^2^)Z6II3<_??+v9E=4=}9Rb-Bs|t zp?)-m;qt1n*Q-?AF%M{{@~j(_3Z*ew44aSqe)-JOZ^pkr_v@8X&#r}A2Qb_p@sN1T zD!p^+x7vP&DQke5$s88Qk53RoYO? zr&YLp7d^TcQ>x|}E8Oz9YWHfk!Y$LgcGG6dy_nuLPs`^Rw-rZ(u3Jm*I&2#|Grep1 zjPRHlJ2Sm&?g;JBi$3S6()$;DXCDKV-Xn6`4z={2lIeC(>0Qa&c2MbEaoY||?~Uxh z^seV=+kxp_^R%)X?LhymrFVV&4#aZpcuJ1n==B~$m+M`Qr`{KPy(+y&l(*Nrg7PTj z)7QI_Fe10t%YD$?UN6&oqxCYqH(KxNgr}v9HrLDftMnf6n~VxKuf%dHz2`LN{=NZD zd8T(gpJvMs*Cu?9<%dk~ERM{v)=NLqdRi<$?@ahyOMe%2y7?K8u=0WjxS+qSM~_nD>yQ(0`bgE}%_&ZYGS# zZU5NHaKq#N@6_|l{$h+6uuqEG$3 zcsA0%lk&Nl`uoULwe|PMeAutzIyO`sF9)F)%p$=Jjg(7!-Ekzifm7Z{HAE)d7v!OW z8E-i7{IZ+Jbq^`gcf-+gP*nFu(>dscAyQ&RL9gT<_aTdGlY%mRQv0gmcr}EcxG}CK ztgchVqlYS9pi~r(ssz2WTFU#Lx=32&up1OyTqjdlwaCqnR((cWvQ2yPT9!%cK5fM^ zhJi1cmg91hB3fm>|nWu(%n6n1KjowSiA$+g8u*n^o5 zZatljyzgVYwVQVzo;kDshBQGfZQom(NCx12L@&9r6Iu-Z_k$&j*Oxm6w&LU~@iE4GIxWZUYy1@1^& zHqN0-=azllu}eN#bgb;|XFFApr(y2fmGPm2C+!LpKLkOga^} zaXgNvlVm!d1;KH!M+wGct5n3%I0;lGp*}WhO3j@Oq7bOJ*B5Cz>DRYIB@`shkW-Vt z46lK5706~y*J?}ptl-pV7|3O>P|~`W@^5WE*s#-qIu`$je}HCCE^FsRKh9o(+)zcD cR7u9|>H{RZIQ`mvGr=-bRhtjz=4v$h1)jLEE&u=k literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/98/98601a450fc9cbd418cb1091c9027907 b/Roguelike/Library/metadata/98/98601a450fc9cbd418cb1091c9027907 index 4bd2e1f227ff536acebd33bda94f0270e197927d..f62adaec8cba20d103c0a8ccffdc55f0bcb9b3b1 100644 GIT binary patch delta 159 zcmZownW!Skz`&oyz#t^Z0Aw&Q2mmPt22(vFJ)@11{``!Qn=|?A8O0v}1xt%F^U@VU z^D;{+UGvg2^HQyOC;t)Ioh&J+3#Q!#6=Zq2ILq=gQxt+r5{pU{G&B{efg(Uu g3!*013#!P&RD>3!B$lM2DgmmR+{iC7`HG++0Cx~0X#fBK delta 144 zcmbQJ(yAiKz`&oyz#zoR0Aw&Q2mmPt22(vlJ>!j%{``!-n=|?A8O1IF1xt%F^U@VU z^D;{+UGvg2^HQxR{}+&A01QjH>ILq=gQxt+r5{pU{G&B{exj4BvYq>Zl dcM7UVK_x>AQW8s2kz{MRCO7hnPktb12mt5?B9Z_A diff --git a/Roguelike/Library/metadata/99/99aae065ca13f46398c1f65ebc52f413 b/Roguelike/Library/metadata/99/99aae065ca13f46398c1f65ebc52f413 new file mode 100644 index 0000000000000000000000000000000000000000..47a0b1f5e8b536c228690cbae92cb832ac68e3ac GIT binary patch literal 4325 zcmeH~O>Epm6vv;lyP>7fFFs2PO`4XELN{?rnjrO)Y-v(jnnD{8sI)FS*%<9dWINDG zsPYNKp&U3M^;EaUr6Q@co2nh~ca^M0ND$XEoNQD1?#^a667HL6TP+m0go1e#T z#_zp(;}uzTr^wptBC-ZoTtr67!{y-_SN>RBTyzQm#iGd9Lr&?-U$6dlq`dCTz8Ak= zF$7+5M0)rHWK<-^_(k1`MI8LSUy%4SM`ApVo^6hNhq0^C=XCaY2O7uU2FCH6mty%w z=;Uk^%Lky7l?Wl0KMb9`mk`4BOu+t5=v?Pbgs~p)xX{?hR{%Tv$qVuW*hV}4O<&L}p{Q?^2MRsYSop<4% zi|BEEcNwhhkiV1gyL0?20ns|mk1$G=VZeL236 z@Xa}nT+#2Y;e_)H6{l zP*1BFsrxUfW~fe_pHotTLs#~{_0{3^eQ#8LeDC6(pSCWrUOcJ&ZXDfBeP=COK;37p zV|{1rn8%Etts{jcyo`KeUNGK_tr_pg>pc=*OYE?|ce2C!ZuwF>tnbzi^YtUxVZL$> zC+59uoz?YyKY2Fq+x0zLXIbA(9-DJz1by1)JDdHGwNIaz{gAb<>pSmZ-s54x1T#Sx~IH%bHp-?rRZ10rK{teW&cLuXE|bs z^Wo=q?k4=!PCoqB&fkXr3g0Umo_`zuF|7Z;3P00#Jh4yTc1ka9*G}oh-7} zi*bfbdx7tvBr~JToLa%Z*U`|aG5e@^| zftrHlIRGZ}Sq*8%r}HeouTwss;jW%d_%zLevftlYWkc&Yz0#}0&zo+!U2dj}f4gZ60K@%u<3)cz1U3&#$gB&%g8jZW< X76iGt{jcDc2`x*-yDHY*&1m!ko4B_- literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/9a/9a0e6727026ec924da7a25f275a934b5 b/Roguelike/Library/metadata/9a/9a0e6727026ec924da7a25f275a934b5 new file mode 100644 index 0000000000000000000000000000000000000000..240fd20cacf57d4ea6642d30adbbc96acd23880c GIT binary patch literal 4305 zcmeH~O>Epm6vv;lyP>5(Y56P#nl$CB&`q2Y5~O}-3rT5FTKa*gO6#(djnS?X*-mLM zl}~Ug2M$Oeq*gufA;baHQ%^_*#DN1Ga^M0S5S&5WkO=?(jK>?BEz*LxpuA|-Z+;%X z8Nc`DjU%$^PLW%`5s}rn;vzCq9j*>fyYk24;-XUmD3?XP9C9k3|9b7W{na(6cE0%S ziXrftBhtesAfqA)#xLqlBI4lh-I64qIFjIT^lWqFYmB`GeNJbecc5|nZD1VFc`25! zhfdB$v3vkJS%nZ{`J>RudkG<2&jjpmh0b-}K$z(9jth;Ad`1->rj4`$qv1^9UY zocZ<;d7|y)^6lY_=kxy&atQN{`-u5ZJDUj;@^a1&^TOn9CAW_rBiF5x+ece6ZuZe; z4B|ejqEWbCxF5&B%jgekDzZC@RD3|iUd@X=Y0Ud|sY5$Hbi!QS^g5hgx1NwWFP?eU zYblBSmKqP07puC=hJM2jyyp0f7c>-XW<(FQx2L>N1+h$c(TqDhmW`?TcqW$9=VBFc zYNKFoqhNBQV0NQCZj}+MJYkhltBhIYNvpVR)0u5IGwx>A-ORiT`%Uk(YDVJGQ_sb- zp*p0drRl$acmhpy~@{fm8T`(CSkfBC}pA2%(qUOc1yZXDfBeP=COK;37p zV|{1rn8%Etts|u+yo!8cUNGK_tr_pgt38r@mfB%`?_`Jd-SVY&Sl_K3=Ie*B!+hl& zPQrWnI;-pZF7kZdx9fYp&a%FnJT~Xb2>P_ocQ*SWZ=XIf`yp>%*LU8-ya(|l_Z987 z>$@ZS!FK8~_K3#WtERpAW~|d+rl#U>+upj5;O;#eBd-2zutQoWpYoe(vIb=eDX*0S zDvG>@0-B7Dd12rO4e5o?&$_3s44mKc#`8~)Zm;gx5VH(pDf$(0>FRiA*}q=+S&kUu zV)(h8y9vLwQw+bg^S9yul<$=f&%X`-7}oz^g`ep=p4z8xJEa%5Yp3+$@ov&IpI$uP zm!|I#^tpb0yeEJ450Cdw_IbQ_vd`n4JWbQd*4%6utFVhqJrb!<*Yws&o#cDwgL+fx zVw@vKz0mhil9^FvPOadliN;UYa@l;Anh_#%;4C-H``+|kU;jp?l3YS_(O42I={I@Yvhq$9XpBk{b>BhhI@DFkcpOareHX|I`8Y T-~4W$=QqLigr8cu1#;k@I|AY+ literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/9a/9a0e6727026ec924da7a25f275a934b5.info b/Roguelike/Library/metadata/9a/9a0e6727026ec924da7a25f275a934b5.info new file mode 100644 index 0000000000000000000000000000000000000000..4827fd5a2285418ff1e929608129b386181f99ea GIT binary patch literal 581 zcmZWm%TB{E5Ue=z4@mw4Li&i38>Li4LI_o;91w~&@g`l#b|TxM^zZRQ^Z|SG%y@Tp z_EqB-;r`wjv@5VMakT`4FCekFW=sO94GtO&Dhrl+jl#s>Wc3_hk#ZBzmU8H|MSV7K z>b(SVIVvu2Jqq!AIiGacEmFtffAB460_DPYo$%YWS0FanqDIxAamU+&AeXPdyf+hC Nma6TmST|Rb$q#;Au+jhk literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/9b/9b368950d11817b40913157cadb3c1b0 b/Roguelike/Library/metadata/9b/9b368950d11817b40913157cadb3c1b0 index 5cb60f2bd63bedc4dde5e677929caa46fb4fd9d0..915db1b2ecf02f2afc5ee39311ac9f1a903d084c 100644 GIT binary patch delta 14 VcmZ3YxI}S+7_*U{(MHK`0RSQG1S
-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 delta 12264 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 CzQvIM diff --git a/Roguelike/Library/metadata/a0/a0fbd16cf167148268ecb856d017aee7 b/Roguelike/Library/metadata/a0/a0fbd16cf167148268ecb856d017aee7 new file mode 100644 index 0000000000000000000000000000000000000000..e55a91164bf8bccf4f00f6d389bf0e11bc09689d GIT binary patch literal 18149 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 I|E%zT0h(vu`~Uy| literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/a0/a0fbd16cf167148268ecb856d017aee7.info b/Roguelike/Library/metadata/a0/a0fbd16cf167148268ecb856d017aee7.info new file mode 100644 index 0000000000000000000000000000000000000000..47996c76505c94648eb1f8c2f9dc285378865fbe GIT binary patch literal 641 zcmZ`%T~C8B6kUAuSM(P+P{$VD#BGtp7_*oeV+^^_3u{seY0KvRz3r{rFFHrQ)4s4Q5~DUULyJkP}20a2~?j`PJUE^McX zx4WS&6$lyRu2He>bPG0R5eYoqXc8}CDFvx5}NZ}rqZIfq#^77wN{V9aP^;GuA77s zr3qfQ#dG)yl$(k+Z~IPL)R!fqyP2yaG8+_^xE`cDrS8KaI|3CpqNPXp7PJ86@^Tb@ jyY>p?25Z!)Dl{(dElA-a@qdk9hFa#T?uzg}t|pTo*-ObA literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/a5/a5132e76f39f32d4caea99ef7c83d636 b/Roguelike/Library/metadata/a5/a5132e76f39f32d4caea99ef7c83d636 index 98ebf033dbc2b8b08cd0944046999545d80a0712..03f7f0b850c3d8c2becff1666e3d17f0edad11d2 100644 GIT binary patch delta 14 VcmZ3ZxJGe;7_*U{(MHM10stb-1VaD- delta 14 VcmZ3ZxJGe;7_*_C@kYtX0stb*1VaD- diff --git a/Roguelike/Library/metadata/a5/a5132e76f39f32d4caea99ef7c83d636.info b/Roguelike/Library/metadata/a5/a5132e76f39f32d4caea99ef7c83d636.info index d60a367a1112919b82e607f22e57d86bc4ed91f4..00caa656774a7ee49fdce6619ad9f8fcb59ce129 100644 GIT binary patch delta 2124 zcmaKqX*kq-1BQRI7~9w;%h(4aYsZj5A~UikTNsKobd+=uDPx)b6Ir8VIc1Wih?)%1 zkrIuy-W*x7m*EvLcHzWGPUn1hKfcem`?~Ju%X2-gI`?I=G$0`%M;o#y4YqhMH2kB9 z(igH*+gTw-y&eI~4E1i+a4eh@t{m5Mf0HXoe4LaxMl*0D%IjtQjc|NR`2{ z3+({{M}Zjiu`00tXE5sdu4(h*CwC&ZQm#ar#2FVsCFL0!pA10f^fGR~ZvBNIe&c& z@NptQsS57@v}Lh6hB{z{&}BP5u!17Y*8b&3|^VN#b9lZwa%K!3E_TG_P<(>_v`4qwT>m z@66RAfZKKXxlmQ-bhr`X%POR2_uSvK@p?|B~jAjH!Ym$K96HGm#sdv%^j0o`+&P%%ru zIZ0T0`SJ4f7wt%zkA|d_JR$i&&YQPrQF;EvN4*Ntzl;b{P2y_&$61j)|4Udbsy4tIU(iV?UkoUX zrkw7omf*y51p%dYLs&H&Q?ifH&Fab#DO-QnLkEvL(9^@IB8}^x5!6L(itdE>?z1m0 zMQ`>L3_TL;n1kD}-wIk%{#D^5?e*vl%VKU=+9~&e{vFG>tXdrOO?*SG( zg|`i?2?+@o^Ax1#E(7iKs>2Fqf7LMAJw!-aq|PRjFrwFa%TaT=AZm<=+*g5ak>6KXieNQfViL|y=8$&)vspJOd&wC z==2gQ3a?@)0*JtS6n34cox6aVIBt3N{8LmASRYHa2Zjh#PaOD8qj=gZNpV=XK;X`r zX&KXC5WjjBYr9xpoEyP1*eLQHm}Dy3n@jd1;z4lIb zJXBr!J~$Fo-(_)qnbEcA9VB=V}sWZELk5+WW%s3Me!Zl!{t!P%ml3yR;+vO{o>z?94=S z%N=n8am>m|0dml1nuXJoGw+;rPucdnS8JO}We2ypm+h1Fo`4c&ZzLH5!i^+1ohpo+ zMja=?Ytsp6 ztZFFws~p=?7!jAm)z|+WiA?Hxn62;N;?k5^ddQOt7)CNmQVXq`?(pHcog-1gh?QI+ zDo=RN*Vf+N{h+#8+PohN6bNn@5r(8MA3LH%6u-8TaD7wHS9tCKEZyUU}vN$^QEl)fbWZ4kUmDhJs?wx}7G`d}(ZQ>jG zZ5jYZ#hIkNxj7J5Fs;|mqA~b0GgrsYcGxXStOp|doipt3E5IIaUmr?Dxb2pP9cJbh z!Z{s^cysPC#tdW#l$7FQF55jkWL&!pLhv@$DZc47pY_l^-@4!XQ)Td1n?cV&^R$O3 z2G@8@)xXGU_lUvocnb$m;dvfYe8v40*iE!`7f2QZUTa!v4bZ86!EJkZu}ffgm-6P$ zp>=xD+AzQgpWeDwRMNsMx0<_o0f__XS^Uz{Qd}A72OePYgwY(v)~cK9pUfNbXvQ5P o0*6|$nyGX2D8yH_fuC`-b+KVvQxjTF!~enmg)CGXg>i-d4VEs#GXMYp delta 4747 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 Z000000AdmV0000008nyecC%dwMFPV0>Mj5P diff --git a/Roguelike/Library/metadata/a8/a8e673567ac33e04487feec5673c2cc2 b/Roguelike/Library/metadata/a8/a8e673567ac33e04487feec5673c2cc2 index 249dc2a44d0bba35e59c9b9ddaeb1b49f0db1c4b..2945799f6e3e4899462b11b8b1378663a0edbb7a 100644 GIT binary patch delta 14 VcmX@AcvNwM7_*U{(MHKN0stk61dadz delta 14 VcmX@AcvNwM7_*_C@kYrt0stk41dadz diff --git a/Roguelike/Library/metadata/b2/b29345d5dd22ad745af7283665fa4dc4 b/Roguelike/Library/metadata/b2/b29345d5dd22ad745af7283665fa4dc4 index 65bfedd516f8ae757fa5b65ac26a834bfd60272e..2c1ec676693f4d00651525a60c4ddf7d29fc8dac 100644 GIT binary patch delta 14 VcmX@AcvNwM7_*U{(MHKN0stk61dadz delta 14 VcmX@AcvNwM7_*_C@kYrt0stk41dadz diff --git a/Roguelike/Library/metadata/b8/b8485d431406560409afdc9572299190 b/Roguelike/Library/metadata/b8/b8485d431406560409afdc9572299190 index 4cbcb13c41624b85fe83aa76b2a13e2e03c08b05..26f7eaa804c2e246a7befcb46b4b97f82343d917 100644 GIT binary patch delta 14 VcmcbqcvEqL7_*U{(MHJw0stqu1j+ya delta 14 VcmcbqcvEqL7_*_C@kYr50stqs1j+ya diff --git a/Roguelike/Library/metadata/bb/bb289d62091f1ed4f85a8cf05a0608ac b/Roguelike/Library/metadata/bb/bb289d62091f1ed4f85a8cf05a0608ac index 5da24b8e0b2113f640f48ee6f06f80cb23ada1c9..800efe527e51690c08d612bf150fb138a9e1c62e 100644 GIT binary patch delta 14 VcmZ3YxI}S+7_*U{(MHK`0RSQG1S
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 N068xJ0JF6sLjtXNQtJQ! diff --git a/Roguelike/Library/metadata/bb/bb43dfaa5df3fd7499cb08815296d42f b/Roguelike/Library/metadata/bb/bb43dfaa5df3fd7499cb08815296d42f index 394dd91bf003a180d1b0c4d51c9c3ec72ab60fcc..3e620a29101521ed92dafe92b1680c3709e86bb6 100644 GIT binary patch delta 14 VcmZ3ZxJGe;7_*U{(MHM10stb-1VaD- delta 14 VcmZ3ZxJGe;7_*_C@kYtX0stb*1VaD- diff --git a/Roguelike/Library/metadata/bb/bb43dfaa5df3fd7499cb08815296d42f.info b/Roguelike/Library/metadata/bb/bb43dfaa5df3fd7499cb08815296d42f.info index f02c174208775dbccfc3f4e8b2364d165845dbd1..e8c87c00277363480a25469b9cc3172ed66b0d0a 100644 GIT binary patch delta 2488 zcmV;p2}kzKDyJBbBYz2qNkl6o&1jgdlQblc=iHFAXeZK|m1@(iZ*% zznv;7{n!tc$W{~xB}s+0@0{@*kMHBlc)Z>*yWa6!&Y5|ix!7K_317c{9r(?i0&DJE zd(T1v55RFh@Blmj#|k)h??-?K;8+32?)?bx030je*u5VC9)Eyi1suEgBftZ2tbk+p zegt>`jumk1-j4tez_9|3-TM*X0XSB`vHNcv`!9CCahgc`dJud)OvH@iU|0aIk?0$z zA;cB$;*EGLIM>&M#ggK24`BT)Sepk@bX{<$%Uc%4`aD>l>(L17hr!iMH;_JL%gzIC z07%i-&qC;EvVZAXCS*<&PUK1vO&tygPp<$l!$5i^da;rTSW%&G!%YwbEt5&HzZ!<$u1+A*Jc{$~DmI-m9j0NvbB^kfs_BfT*hrAiZH8xu*pzl}1-rQo z(QB-P&x^|~+$gfjx}FXPs#2|eofY@`Mz%$vLVp0;vpoQ~2rluG*53yoWT1qK-gMRO zyf|s7i@k0g_LNiIv_Td1E?O15l(DPh5Hi zrhjrHUSkS{& z)yXkYX~m-}>6-~s3gGa%a{#%m`Vw5?C4Z9&sO;qyOhvktURI_IK&rX}KP;fKiL)8G`g<1CZN4z62L|$s`^te+BRG%FW+@q<=80f6WsfJ%EH9?GNgnhL!=ieh}S; zYhSI^u~6$)C}b%EuyN=CSnoMy0IWOr4$4P>*QW;s{0QhlO6_!NBZ-Djc0 ziV=XvvkHqYZNj-V0NtO4F0IIJDqiuZ^4#FOQ1JQMtMgYciJ7`efM}mYIfDzpe zviE(Y-mlHWMgYvs`J8nX@Br#6)^UChpc_G_vuQI!9zZkQIxDrB09yUDL4Rl3lOZDj zBYQjxzk@6OWq+!sTWQU#jpwHd%-XAR5dkn*h~KM8{br5I)63_o0#M@8uR@1J!3~C0 z2OvR+H6bJn7!Cb`Fj@mtcNzI7Een{NqUottYn$B)g^Lv&0Trh}lpHR^2aN^G1HyC! zjOKsqiT*7ne)%fw<&+%n3V-vpPFTSaAT*=3SA2^8t==Lbxq(2GM=lUJ>Uuz|C;--3 zNK9`VDcbL9Z26&MN#(G?8Y@uNr)kGJ?xTE~DWntyhPJ9+h@*)zGq z0BxpcL8Ey*>pc7yq6^*WO;S^*rwD;3ijM>m8O1*tA4STK{ewwM^SZ04}iX0h)r8*h+U692zUlOGt!x z68*)?7oAA4f&kF1qksNRxIL-ug3^drg0pcvo&^AM zqmi%{hIqv>;#@}^iC}a{!zK)me|e7irxV@TNR1J&G1MPZ=YPhS1ca)zi7&%=+K)=g zBr(;9O>}x068mRAKb!2|ijO-A)d0|uN5^IWKnSeF)fA3!$i)_WN{aG6KY4n~g8HaP z4FLFR9`A^4N#{-Gz6lFC%E@;y0hD> z`jEmU0DmTtI(@QwnJuRvH4&*QClXnRRPH~3*Z8UbOry|XpFf5h(k4-6du zE7HluU9{$+=Mw?+eYfhPbxQ+)Ng%+dPllJ-Qh#?8B;h0Vf#AFEztzn;2`?o8R!S%F z-`OR;s34U&JwE^*Q2);CXlv(YevTevmm2^J#U#!vZ#~h zFE)Egf$l%Oe|rdhU)FhS0GNbaw80}q0;}$D)F0spU;rG@No;&P$C(c&4Iwbv5s(!Z zBqb)p`vbkHZzrx`w Cu86e& delta 4875 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 diff --git a/Roguelike/Library/metadata/bb/bb716fad3585fad448da9b20cee7b0fa b/Roguelike/Library/metadata/bb/bb716fad3585fad448da9b20cee7b0fa index f291fd1e85376f8695e6c4f030c57b692b547be7..b7d7d6423b02c6d249de1c23542330c8d8f94d68 100644 GIT binary patch delta 35 rcmX@Bcvf+O7_*U{(MHMt`~r@}#i=F5`T<3$X^Bb2`mU2T1eO8--bxHf delta 35 rcmX@Bcvf+O7_*_C@kYu2`~r!^#i=F5`UOR)X^Bb2`l*vO1eO8-;|L6? diff --git a/Roguelike/Library/metadata/bb/bb716fad3585fad448da9b20cee7b0fa.info b/Roguelike/Library/metadata/bb/bb716fad3585fad448da9b20cee7b0fa.info index 1b5f984a94e0029d047964edfd9664f21fc10cef..d68f4a5e25415bc5f5cde943f01d985935ba0683 100644 GIT binary patch delta 24 fcmdnZa+qZU3nN=VQEFOZ(q<+`Q$`kPCI$uoS*Q1qK5?S+XSs%LwaEa)Yt;eD@?B+&|yF zvt%dO7Yrd3G7vf>lSwdwHk3&lAnBMSgef#MEv1<@Q}7t$j@?OHF!dD2t^WmVuHWze zd3WzwhIFRGWHsxz`+2|j+kL;?-~Qh2S%_I5331h=5aK)`uBgXVw9j8Sf8j`*_@r1Y z27&;WA>TG_`vdR2_2d6~xMt3b?zK;a+rWMu5TXLtyMv-|gAfJC7g0q?hyebc1^-b% z6e@ursxwPM>;j*LE1#!q0Hu9+@*>nJ&vp%;4?S0)UZd|R9uQxx5QV?ddaBCg%k@;3 z@p3(9xjZ0xp#RUIhy7<8fdbpE2;dzH%;dG?A@ZQ?=S)1qe%6u8929pz_HJa>&vto0 z%t5&onbzeyLxlRpBy@D4M)`Ay%XlAZf^6yKEucVR`Z!Y z{wvKnmsNiPava}9trGciWZI5%i}UB#n$Pm_gPLtv2zYU!Fo6F?c|23LlMR}P6;vN+4MW)`Xk(rF& zJ*wq7SD6g|uIAS$Ecw&W|EHR_lySEEyykOVuI%|!&9C+GH#MJE;(@L3i{0S#yZPYi zebxG4{B8lc%*v09-?eJq-|u8^ULK1(>Fn|e$4=$q>C~+vxqd}FVfS{S&~G_oDD+sl zv9^Va0eX|xsNI=PLD_~@8}LT5UeN!X4pUtu7=#Rd!86HY#BuSjQ; z7G?V4na*@R#bR%6wQa?$4GGGz*pW!2$L$zu9f{1C)td`vtyC^!W$jdSGapcy$nra*72`GFq&`{*64eRe|l6hdaBQ$=ktt8hvBV@(GPmrG+aeNdc7y= z$*3f`H|nXVMERh&0#TUWM?EqsN%=}?pYMRvKC~@UKvc?TTL;@wUPh$?d6lPKMkVF- z)t+d}sHD8U+7oRVl@wR2%_`J6UMec_p5k|EuA)+jqyJJ~MWqsFG^8FCl}h|U%~ez? z@o#9ZqEd-ZYObPEiNCD5ib^H^&zdtTF`53qk23qisKiA6v=D`lQ6^_pVlwizFba7C zA(G)UHE&ed<#RMIk4jwCmuNoQC*P-elaFuEoKcC%^z+M_(+`+Tf4;4GDJrS)!dIE> ze<>;{{xi)>Q7IsP3APWJbFD>cr+yVRexv0}QAzPrnwO$dg|ufC77*I46qS_xd73jS zF`53)(46Z5li^os&Zxv>c$?;J3cGx<<_mqiPxI@@LnS>i%@>u)^Q(KK=Iv#i6Z`ou(6a-a{>ybjhz3w)pTE%ZH~RSVn&0H|0N3fli{KoWB`){sx!K2! zo?CqURjvP4AOCC3m%3c}#p{}fBrn-*kLDdden|6W1UwL;{8^qjVs=sF<#rpQ zJaPr}A4Xiupl#0EHONe~^V8^ong4&Nu*=Q7{i2VLLr*0b;}4V3bFb!W6$Y=8{WSh~ zR~e^2-Vb^D<2uP3Ts@{g>wVnxXV~Rc(jOnu?`65%`(7J-+~|q=xberBj~joqU9NW7 zPoQ1S^AYj_?cnvJQQ$y`-0MeURT##BBN;mw{o@KtPJjOv^w91TKK_E{o5@3zsgVBo3OL7i3wc56_xR(N zfCC|NufKnpT;@uTKi=zdHGkgL`nQ5B{oeVrjq)Mt^3IWwMdD!;Ql#jPl|;+yQO6Hc$<7B&GHK@kA26{K^EP^JKmAE5^;z7eR&>`llB?NfN@vPSIK1Kj;(j;s)F&z=H-@N z-?VdM;msMj$4|sZQ#d1#MvzbT$2X-NtR-whiK|H>wuo^T^~WddL@u0;q~Z>ZJN1c# zHkfW|Sw5bKg{|zU?YL(UQ!&iSlB7^w7#Oo{r_Xk*E*>hFj!Ej)a$2@b4F2MXad{9k zW{zRh`t;e=~|5=9WGjUs|-w<&JJ1Gls-g?7naTnT$!-LDKJ9GN`b5DnSZDF z6=ctaAin_3^Ne)dVeupa%^}XHWcW`we`sfZ`H`KE%w+6i?0kX3E;n}OeI_Gs?93A(Cc}-L%TI*(6~r$I zwtEpW6XhpipRdcZ5En~Y;@{M~bRwkWpVGW^BBc0pn$Pg*`Jv`~4<^&@%d)I~b1Ubs zYhF4LQu=?X`78<}89lpXx%@;($?wy=0aqp?|Gq4%-zm!ZVa=~3L^ARp%d!x(HbG}_oUXXe`^M8)Zyhf)y~W8K(8g2xytiJI?v_Gk6Iu^KbnusM1O&e3yZ<&N9IIGE>~{+7|q9H zf~VO0bwOV71Ax5Z_+MUe_@BWq6!Lq_!BKl>*2X7FOr*2%(KtSUI>)TksEtL@B~sMf z?&sOPjUjx4kL%<&iJ`AdRg`dhvAf5w1fOYsX%3zWiUFLc)@K4YDuxsTr4<|nw z%YEr*aZV{Ye7Obj@VITK)Xz!_y5n1tX~TM>>C}8DK4O%7PFK9jX^G6(LES9edYTXb zr!98LOZhKdjq{aPCd}Yhc`es(4kam1UUrWnIeQhlH5j@tODf#RSDv2$)u_A=-KTfuWf9=W6T+Jg6+%Di-y=1 z!#uCd<%xC5|GuRO(ffE)@8gxth&z!;Wcs3mFIlZ`7K_Id9U`*xp~+(Y1Fk~i=#t~OAmKnlI#%SHCe3QpPq{2fqoHe5N|Iz(AGHn$`+$<_u7lEr9Di2fARXR z=Gvg^?Zx8$Famn%r zJ6h(RU2EEV^7tjocSUwCF!deBZ@BCE^~0~3`p5e=-%|IzqpoKx8F^>XVDbCVCn|?U zUBi~XmSqPH3=e-+`@th`p7+UM>d>)RV@>Tj&8~fS6mJ@-YHokRv{x)%wmT$5$kg}l z`|j4rV0g&XU)eNc-J}R*f=9L;x$x1Gdxnx7HN%-TpE>@RFOOmVHH~1AoDPF8I#_(+ zWOa1rPx6g56=&~^6y*ujW2@Hf{@~Kdmb#;=KH0uw|KFegOrfwI^2P4PX?s7)chnSy z*F`2o59f2!ibf&A(DzyI|9Rh^rTwh~3lQg5{fU>7d)K^Ge5;f7c|z7d_|2p`PdspH&kLvC z`Ag^vukG)zKd~uw{8;Kwj$>q+%f|Pwj!*O*eJJS8zmv~yzGa~J{R8zU9zFH$Q+K_C z|9l|UtXVsV{>bs#fc|j2>Q9_{v>mT-;t8yM^H?u_=Umip+<^!%5sA#w<8dG42O(ek z;Y-QZ_YR$$g>UD`&L3QZ`sF`gdg||9g?wb)ma*Co|1teZb#!lWccYj$ZztrpoqVe? zv3JSVMlqaO8>txXd2H!#w^x4r0RAh=KfHc#CZk61;hXAOB1ivo($sHT_=Sax8~+RJ C^;5L~ literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/be/be10fc2a1b44c42ab8d6af8637b7bb96.info b/Roguelike/Library/metadata/be/be10fc2a1b44c42ab8d6af8637b7bb96.info new file mode 100644 index 0000000000000000000000000000000000000000..c1a910b1230a50b8e572f0f495feb1c61f06833a GIT binary patch literal 3768 zcmds4c~n%_86OnP1VfGs(YVzC#qB7*dE0#t+sG!0QM3qJckkO^beO@J!7WMv6_CoJ z)+AEVT8kJFx400E3gQ~~or<8bDxe}J8l$42-(=XZ?(c<%21O0?s*C=3M3-^i3w~pciS_v6 zi>O&8?()!OJqlB=xMdvmIPVdc+keyMy|tUZwT_7%A6o0LEQ_8U{a63JUq%gyUfD15 zgI#^}eknO)&$XH09Z7ZD=vHy~Xv^@G@&RobTwCW#}RwbU>lv?%mV2^{h*3Ud$Hr#v2^e&l=KKiF#?y0S+>S`C~ zx@9I6J<6(FyZ6=omp_#M;bm!FwU6Fjb}pbC>5r6Fwu}9+1owPaR_oD5AGUSU=3OZP zMcXDUK2({O-Mx3E&(ok$qlW(3n(#Zf9Xr<4n13pL;&%25msC~X`a%7JKk*lWdqr33 zeJ*xbw!m6{FFWsGQgGt(1-oDEstH2dJ6?$#b2e(qxr!Ypu!31%iV(m2X`#Y$bJ8L-PP=sJ&fz} zL#Ev;Yv`I8IlgGj`~0Q8?IL@6+^)FMIB!Cq6N`P9b-UavBg6Oepms;*C7VXyu@$~V zjnysk&u1-}SE}cFuQ-}@8QZElF8xJrOuN6^k7enK z$Civd;dx+&_B{HOS6M~m+*^mY#;SQb;I{)(ZPZHy9IyMm$l9KZ0|lb)II0Bq%Mn6`+K!d&b>Qe#lr!9 z^#jJwZ`FUr`4@5zORwV-+6R^%FG^dqaJ!GMF3UeAXldQHysCZcZ?39J-nR0S>cd}N zxELKXbIdkw{~_w>WRK9%<=;qCua);R_x_xDer!gkJt3#7ACF61TD|+^(r=Tx_Bm6( z;w!^!>y6Ni;PGBVH{kYY%dwAsyJs&I!ff1LoS*pfUk>}$McpWSBu&`xdn#q}!oidG znL|tXqLPQo9;VC4HCIB`)tnlBtu{U-aJe+cf7YX$JvLuEuqxu=XFqm3;~l+akoTvK z*)P(z8k4cd2ByTgsF!upJ9XB_Rt>ez-(T=Ij|8st{+{;pYpUvxWlwu@E!~(_zM-*Y z=cn!=1s^rExc=;V&ziijIjdJDA8h+##!Xw}E1 z`ggkS(r3+^lym&-$gEH2e$e;Ijr>O6q+5ZDT0cE9y={r-v$egGbfapX>*M``eX>t} z_eoi&nxk2>reC0g-lb$IK$EXGcVgyZ!e$Afhm>aK}RlD6Kq5jK{rnv(6 zAEq=#Q;eq3EUhw}rm-APAsVQLkocN{oMnMe^k`aUfKpI&3grKBeuxq&tZAH)myoP! zjDj!*e40Zn20qOqBvDQ(NJb|g0b64!fhK&glM$>bmO_;97ICm(0XQ7ZVhIunSM<^Acq6qvq=C8qafx6MMAW4uP zBVt+xJl=?D32?< zKaYOJIiMwmVIY21!wl&kFUbnQ(I}0Ep1bf#9K43$)dWVN2p%#jNCkZ-g+B9&!l@wV zB#DwqJuyQwzoP$e`dsIa<5fiR;~)>fl~_d}IIsH*yANsL7pko&fP+*8JMj_30c)O? zMFryFc-T+m9%6{+H`l+pKXAM#f-fLO0DK;{1L>=T6-4Smx=i+&YE-cb^$?-T{Bn*BOI-eOJScHTR#zHl6(Aw5kLu|VzxQNW@Ec+g#u;L&1Jo!>U! zw~g!nLf<(o#3Y!M0E46&DNUxaQDRw{r7;{h9%}**=N3tl=$b#`F&RdjgEyz@esjan{#7GUE6%_Ni(Uo00S*JYv&X;&p;t&Y`2Gp5~)+5 znQ;uvGe+maF567;4yTH9(lP+o_Ag@=s7{;=Tr-wbv)wgN#Z4XITDe5vUv-4X#anF- z)z%DWq$rY_Qy83JQOs&sg4z6fo+A^OGh3Ia8T{Y)W3kPIEijXTCv^_Ew_tN5T*x-n gBCB>7>c(QT2_`Nw50YS0*^QY@c;k- literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/ca/ca3447eb3a828184ab4ba5f5996b14c7 b/Roguelike/Library/metadata/ca/ca3447eb3a828184ab4ba5f5996b14c7 index cc79cd2d1acc079692ac6a4d25a0840df009455f..51e1069916ecb7b5e1224bd99ae93d2e67fae283 100644 GIT binary patch delta 14 VcmX@AcvNwM7_*U{(MHKN0stk61dadz delta 14 VcmX@AcvNwM7_*_C@kYrt0stk41dadz diff --git a/Roguelike/Library/metadata/cf/cf4d693f4d204ec448f2bcd7640acba1 b/Roguelike/Library/metadata/cf/cf4d693f4d204ec448f2bcd7640acba1 index 9e9eb648e2b537357ad0fc28546e05a1aff7451c..1867528d7467a5440ab16f5ba0bded5dff5cb731 100644 GIT binary patch delta 14 VcmbQEI7e}U7_*U{(MHK;0RSNl1QP%N delta 14 VcmbQEI7e}U7_*_C@kYsJ0RSNj1QP%N diff --git a/Roguelike/Library/metadata/cf/cf4d693f4d204ec448f2bcd7640acba1.info b/Roguelike/Library/metadata/cf/cf4d693f4d204ec448f2bcd7640acba1.info index 609c70d0ddd1b783c15fa87a62726f112dfdcfa9..3df5b03dbb80fdedbd4e3ee1d043a0b74e622839 100644 GIT binary patch delta 7189 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 diff --git a/Roguelike/Library/metadata/d2/d2ef3b15c32eb43108261a87963b8937 b/Roguelike/Library/metadata/d2/d2ef3b15c32eb43108261a87963b8937 new file mode 100644 index 0000000000000000000000000000000000000000..43f263ba8d9815cb9b83166a282791d30ea59db5 GIT binary patch literal 5421 zcmd5=QEVJX8J>;LX?-b4LmQwJ=-LhRT%2<*Av82jdXDWTR^8UYZiR?kx_3ABE#2Ea zcK32V8>2%)Jhg%+1VU9oNC=6Cs_h#O2&o|T0U=)Uzzaekfy4u-h_^~L-#4?fcVi!w zDumQO8qYu9&VKXHKmYvuUxYaERUuBD5kj00;%;<8TqvI_pWCd6clY=AoiP9j+Wy5e z!9)F@{PkPkY`*xr@6H!yfW3%TKs)7#{v$&4F@GOJXhJyn_tP=ae;v;_$H^NtA#MY| z3;hu^&UK*u5pRA3W6tNg1}}r>0gUg=o@v|>-##Mxzs`8ZhvpCS938@kdG5$@M_dR0 z&%s0cxrWo{+DDuU>|rB5LA*+QOxbxq-l3gE;;M~_8<-1k_BlS5vZAWRBbRe>mqE6A!?jw4XfpqOy^bh0l?!Mx&{NMsVStV}!d6GC9@!>d` z%5lyAJjUdI5dA3r)0|&D%>QZPXb1T}ljE8{z?l3Gp&!N1I2y%2o%7iCKb+%^SV4^J zV$AdYY}T)?rt#cT!%w4lX*-o+;z!{X(fZ2cejt|@p{#moQz?sb)9VE37v-jmWmuO9 z9xm6T5Z%(Ytannp`E=ZnF@S}@OOmI&mW0kOX?u0*^GPCGwV;$$??hkjKg`JBqn0biue)8Dwv0vU##)o;I@y5Kz`@{GdL!%g+ zaY>wwVsM@}v2lVBgVT@1na3#1eT>8N(0Pu`W1_F-TXCrJSe3XPhboWZm4k6I$YYN9 z0r+{3$iX~D;kw+{b?CH*cZ_1}`7(6c!#p<19+k(chwT~UF*~mGozwjE^A>1{F~%vz zKgQ3@V-$lMKl3@o;KtAQYB60?`7QNIHTOGe48qjW@-Ozm{ z>(6EV`3=!V=2VF;^;>cwmR>3wB8vSjKlFlyrWbBWaOQ}bY96n8$g!!o?j_C2xr_On zMIY~^qSi}g!lku>wY7r9wSv{P@;ReiFv{nR@`zC`8s!T{sSK!d?n+Kx$=NG8eFgl1 zSCc^^kojf0hVO~Qr$PjN9Um3B-fK&73=TcMb*f!QGQaElX4jE}{I2h< z@w2K^)jQ+Xc@64RN4W6AGUhO5RDQ2=4M+SEb?TRZ(KoD9MU}Yz-D3C$b*dc?!*wdp zaRaZ@&-_k}^0TT_6~FE0L7i%UFIlIWyhHvb#^hJ|y|3)F@|w%}RpK`PByrVje&+XK z{vC|T&wY=w|1{@U5A!p>kK$*3C;ns*1I`{HH7nZbo z1GHI)cW_v2fc3ta9X?i!CRNj$sG~*7B_6Br5+(VLus1v3GI7z(}TU+$i zroFf~r%j(3+UFHzt6BZMrW=SgI#?lqYz+AMZr`LzxzI@zFGlm!+7M_J>6 zC%88DKw}c@Axu3#OrDUvk~M!?Zz`5)Cl2)i-?S!dl(iS~{gHPMWt`mQ<`!kGvsGS+ zwn|e^Me2RG>!(eef`>rkNy=?Ra5Cx6$I|UZ9XIJ@N;i&D>H4W#kK!1I67(LM(jLpK o2|GccR^wsr6`2hV%fTGM87wK7|M(vXXBO6)UfeD>f0KqE)sQ>@~ literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/d2/d2ef3b15c32eb43108261a87963b8937.info b/Roguelike/Library/metadata/d2/d2ef3b15c32eb43108261a87963b8937.info new file mode 100644 index 0000000000000000000000000000000000000000..d397681d5d12393a2e508b4919bd1ee029fcbbec GIT binary patch literal 601 zcmY*X%TB{E5Ue=z75)Nf8u}nNN~ws1P*tIFKq%TIn`9-&iEM|`zsFufOZMiO+1IRh z8ovmS55}O~fQ5;RH5hz_7L#isS|GK@UZX)}!BVF@DunX9ptmEU+JS8tw9U}w3P=Wx z%g(l)ZowvE$^wtPQ)!$3z%x?aj3oQ+xIS4l7ZtToqbS{g7c8@<9wizRU~W(kR3@UF zVHM}myohI*-^I~%HCsfmTHY_>e03i$S=zg)6Typ{+px$}Nw(9!55Lt-VOT4>0%Te` z3#cO0iHM^4)CaTYwI3xIlWv%1rjk&fw=jjK-m-?>9lNJTCcC7MPgg=hj?x4>+w3L0 z0_9qvP20ZH7WJj`G@iRWCf9>1C2j{P|E}r%=Zymu#^6au_yIJ5awl;Ve!KDtRdrd2=xQ?g0gf2Bn*aa+ literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/da/dae752d8f72c9504082676f59a9ce704 b/Roguelike/Library/metadata/da/dae752d8f72c9504082676f59a9ce704 index 216f0c9866e1c8c45269b8525d78e6fba27bad61..d5eeb960a91ce1ee01890931eca9767f317dc089 100644 GIT binary patch delta 14 VcmZ3ZxJGe;7_*U{(MHM10stb-1VaD- delta 14 VcmZ3ZxJGe;7_*_C@kYtX0stb*1VaD- diff --git a/Roguelike/Library/metadata/da/dae752d8f72c9504082676f59a9ce704.info b/Roguelike/Library/metadata/da/dae752d8f72c9504082676f59a9ce704.info index 56e43b82084a69b3e842841c17d54e5959a10e7d..b324b145688f90d4b3689ff118acd8b60f585f40 100644 GIT binary patch delta 2342 zcmV+>3EB3EDv}qFBYz0@Nklc@z$R3XJ@j z4wgxQ0KjuU2mk^A&kA@pA4Wg`;8_9B=EDdG06Z(;*?brQ0e^sJ1w5M%BOn0qtbk|p zVFUyKo)z$HK8%0>z_S9L&4&>X0C-lwv-!_F+b=f%YU`z*IJuflt`78=VTAhy;MM0O z`fDzIoKpC8>M8<{vBqP4@%RUDe(mIZbSgyGRbFZrX&6X2zjlh3%#p!^_*<6?nTo(+ z`chBw8}f;im1$&E7vmTkFjkFbc+jQh{H+hE$*tw`;{?F@h~}2pY(-Vgb0bzq^=r;&cx09z z@c8D>#cW!4!)6Tt7yT`hUWrl^(%PeUuA=P5@p}Cztbg@iS?k%ldP80Q)0>>S52mx6*n+4s09o zq;ic zh+cn^HQxTZ5I{-Ql~e>FT^cvKA4@XN!`0ZJbxL0>DKJ*GVdLLohH|+MU9mx zl7C_BjIpBdqdgT{(${LwN~SUZldS{q09G8Ph~>ZZ;zt`Qex>LBmjMt>T$7U#l|D#6 zGyu8%B$vw7-w|FtIl_Zko3G=)@afma*bV?ZqYeN90M80|HXlZSO@9EUw?bjN0>FGb^%$N_XNOpq>8;Re07F!% zUu~)w0sV4zh~5MMo~Z@^0YK*pe0txx$zp>QBLI(Q6_;Jtl;wph&rNTI!jB37t~?!R zy{5N90|5UWA&dae3<7`vz_S9L%~y{AJf7v*$3dH~27t%22Caa##x=MV3ft8HtbaK; z^oknX3Jn1KcZx6qJTnLYdJiBxp5+u#^$3`TU64xx)c{;t4|RuasJ%Y0xZUK|eHa1u z2sElG0B9tey+XAB4C!`IuRf0i$65e}bUVo1=aJ1uMJ)i$st%>;Pz7O90SVIy(hx0e=|U<5_VW;g$PMHFi`rsAV``RbbF)o|V2SC{Dh$ zH2tkL#&tC>u!#WVcQlde{9>7kYc8jG$xQ?xRZ^-83<`+M<2ta>0HnC7VW7qZ((6u5 z&2ELlzy<=4{a)%X0wRI03qpA{G_tuZUDw(L!Pa2@w;tR6Kvwz65t7n)x_?M4%bZi* zBx(ak09$v}_6OqfBRktr0!v(~6rNdKCuN(THxU3=O9;;;MpW@eh(-g_mFzY#Y$gC9 zzFcGJnyXw)f@8p{oPbamo;`X-h#DOm2p|?cn)H%05yB*_B9UBCE~z=oL3uO`P`}wz zp;YlE?t&7Hh4!o;liKMiNPqNqL@N>$5(n;OAhe90wo@N<)ZGOQ=kcryHUb0&oan`W zaALZPNUn7fiK|pRuF>(^^nG4`-6?1|k7xZueGXcRKFnlTs_qX4qNi(-O9qCr$^kK( zOws*W=~ln$0%&EVPlZ|kXHyQmN_1!Xu0|G;m`-L-e|c)9SsMp{I)6UXJsAYVfqqhv zDh5enOwhthh0yn(SW+LgZ5#kvK1oJ-EQRzcG7}>%S-BsgKGH05CtX5**;Qz9d*T=S|_ic|RwilYb+jg19)I?2qR+=ShHVJC!*4lo z4Don>{NUbCvYCzo763@kG9=EiTKN7OK+-oE7|FF2QGEJAK=gcm9pg>$cyIsy-TShX zyMRpq(o0Sviht;NRs2!VUXjS3f)XkW1l^SAMt$hx1b`%g0DG*lMF= zAOK%~`G1vOt(Wjx0+33jNPMIZDkw?HE%T)UBt2e7hj(_jcTy=nF4h}>R7{b$sB`Nn z?uq*Fe;@!93Hq~7bnA)U++F5;a)-W;dA|>RpZh#C0Fs2*K5etlP&E?R^Yll3csp1C zxg_3gz3-L!8v!6iV$!?s!A@=sN;gBGTLl7uZWHxhu@(TVNYZV@{~V}^MZC$usFRx# M90D*2v$+yb0%zn-&Hw-a delta 4807 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 diff --git a/Roguelike/Library/metadata/e8/e824886ca6f7c40a4a622b6a82c50c9c b/Roguelike/Library/metadata/e8/e824886ca6f7c40a4a622b6a82c50c9c new file mode 100644 index 0000000000000000000000000000000000000000..49ee99bc50a9f224b7e03af1a5bb02a6134403d9 GIT binary patch literal 4309 zcmeH~Piz!b9LImt-K`)hf`1W}mLej`wo|OF3IDrDi^UWLG%CX2zHW!?Zkw5@!UgA~ zUf|%t#1n)VLgGo{$rA}kH1Xi22QP9V;f(QSV*P&Kn>X7T7n9X^G5s~K^Lw9p^LuZ8 zzu)`4S&OQY3Dvdh+WUy&^hn@gfV$nWmTdq)dr{B`kD7BcD(iT!v?3^`uUNRJMsbaGiaO_*`tC1S$Q8|da{P9}dvp9w!q?~c?+K^BDR%uOOv-sTXxic{6aGw&uSxjElshsHKlgz% z-<~CpwVh19ZAy7I|DPj=FyFY3nE$l1nJ^|VX6!I8Ox~6<`{)I7-Ab8#v?b+cA8p1U z?xQjqh5Lp3aRj`Ge!r$7yTedL2UO%$yvUQ_JNMR8#BcGTTj5lLz#yj$Hm&Df-JFM^R?6AIDzSs`yyS2l7{R(!Nubjh) zc`sXMb$#DOp3VDKeb3fe)_0S~=3E&WbNzv&U={mAfDvDqTN<~ zcVq%=rygUEXq>%j%A2c4I{jsGG77fst@;S=-cu3c>d!QHNaNTmeqD`MpiCm=wQ@j( zp;uEt4wiwxyQfhJG14pxAqNhFYj0vu?%A=`W12M=y+$@zgzfOju_&6 z__>`s3BR?I55KkZx8c9a_sWLn--dq#>;JF9&-5Kl?9;dH(u>=*U3&3&H))zpFCOoU z)Aum?T)#fv9mT#!uH`(R`Mg5y*9LmK)}McXF?%cRf={E~D`%Vo59|_sExI z$pcFsSn|OC(F5o9e0t;LM-vym+<4{ErgyLYz@JpQIeICztiXWZE!bX;kIkjWBvp?<>Jx+ literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/e8/e824886ca6f7c40a4a622b6a82c50c9c.info b/Roguelike/Library/metadata/e8/e824886ca6f7c40a4a622b6a82c50c9c.info new file mode 100644 index 0000000000000000000000000000000000000000..5a243e839c37b006b5199ca0584f1af4d406e17f GIT binary patch literal 582 zcmZ8e%TB{E5Ue=z5y*eg5K2gMqm+tB2%!qW0ikH?Y|@qdh-`<_zsC>J2Yd6(cz0*^ z)!;Yb?%rB-OK>ppwE&ARAhEh+OaiGj4hAhM2adD~C}S${?6D=MO$6L_lp6&k67PRD zD{UmWie*s{kPm9z_7r$R>bGZ-wcaiE4((Az5_)8AE{12e=uOVp}|E_43&9_IZM<_KfgRGV1vS@{ABZ-UWxJ((A9F##-TYG zcoTMsmdnf4>S8isuF;nOTI6@4#o`+>Pfi}qW{;pTpZ~%AEXDmQ zz;d}>t=69UnCoilj@n{K8acq$R;#zG752^5V(~llD8tFgliBPErT3w~7X?@>E^ zZBDtCtNCG;)qg_=%1k${B8HS?<7%<^{bcf6n0Of;&*y(!9pg5ccUget^2*mcP8c*T z`80jynu$(5l%+t!SO&T+9b#v^S*>0#7QaCayckcD(yftqQvjqMs~*|kT=Gn%<}Okx z?#sSR0HBPj`nK^bnl0E-2Vcz@&_7n;(Pa+6Y@q#~1AOg-_y z5D;}b*bQfAuMp3CelnlWG{7x@o31tpP#2CU(J-50?Y%+DpQFX zmP)MzU4LNb=kH#<`rqa9o7*YFjTd0Cz{0=u)N_*ER6PwbWx@%FRN}}HUmz)n1SoYV zMLZI9v7Mj4MHz4?&1N_Ip6&(<;AhU2pE;PS=BC*yJ0(Y=F+k=7B4t~0B#J;03gBVs z8{Z0#Ztg_7sSo3j{j)QBSLIXersU*6MkEqoj(=5!g zkAEN@JMA;RqQbQMX5Pn_?KOfiV?`Ze^#FFAoqf4n;`5AaYu8qQp6n}7PC(=>1Lkqe zpfOHbr5-g{Tw@Kc=Lqs=&FVX>H0SY&NQSpSA~qd37*1Gck-+5Dt6yWI&t`vkcv#o4 z15VHI!OocMSEIeRB}svS)P;%QL!@7wo`3#lbxJ!i4=n&rp4D>i>?2eyw4K7fO=VR= zfTJJzy9E50;h=U<0sP$8hxiA@Q8OM>n=v{y-=lcSxB$$6JM!%8zn4q=fMNf(e*xO; zV{ByM`Vzqjc5~c&ZZV{Y_jU+FWuNg`e|Gj?hty!t0^oTcZ*+Ysnw!8bGvth7FMsQX zdDYFj5pke2Tq5P=Kwv5MCIBj8BhSwMW4Xl774~U+763m^@#pRVnFJ&S>R@~bTtJ>q=|aC*ugX7#x2Ww$9%@OvCwoh^oG9X2D9L@&Mo zH4@nyXpexoPD1*`4f%Jcr(Y!57=Lo-0@!0u^ATI=e_)2Ks5T2`^=NXm2}oL>+fnN+ z3rad^CbHDuiNkmslhx|?%OyU+-mUFifU`4xO9wNlPNtu^5v@h(8Tb6U2 z^}IG4GXuYC<)D!hF>Dgqc{v=No$b5{b}PW?slFq{XseR}GhLR%)QrL8wtrb~UZ;un zB2Y8AF&7GeKx7mpT$14QF)2#D4O}!2aWXwU{kK9i#Mq$#gNM)17%BUV6ifqcn@*3W z)8py!u>o`_gLkc*Ww4ps|JFR$M#Q9-q^Wu<)e@&w9Q)b^(nLgWxEcI*rzfHv3UGFY z?+Rj=6n7$v@D-;^jM7nqTz@0ap7vvFmVXEAtRh|sQ}YAL)9;llhKUS?BtU5*!33vd z%2kpMXu?GE#8c_N%EeYNwg8)lPYNZGy@NK{w{<_^61VIl&)yz9IQ9$O@v;4nM!6S? zC1|JVuRg9J27q3XL?A596k$}L4mgRKOiGga=n>G->FK|e8dc7y?|%ig-y4h`IFdMt zZ24`zKpV8h>xs0K`hQsBc=fgJ0yn%uTd#4gkFJi^N9)P@3ST6;nq1)pZmzDZGlyWA zfg`s>=NuyhN*qO|>J3a@Eu;6fYEEs2GF`2Hvs`{Pn{EFI+Nc8f+b)fYG1$Nn21g35 zJP3JgfMF*I&lS&lyMO#aSRH7AG+Xl5>r4E%zC5z`d~iNRO(ymLdV~_N20jwUMNbeT z5hpSkUeqt8)QNp`75NcIpVP(Se`d3vMR65xFF>*UF^p0han*lddit@DwnqDlZcn1A9+KXJ&9eQ6b?5yx^Yty|9?pR!$%LT`OVk!ZO4nH|MGHraq-Ta*pgpgU1Ig)+(FV&6dSLZe)Hn< z7A`?&&}vGjDvDCKXgcu)N~uKH1o$q+mOH_g0u;+1-kDkfMWBJjF@TJjg0V!6TwFle7rx&Mrqea*gMa&hx$x{;uMx)p_ubabA~P&Q zXAE^x9%<63Ef&8Vz7-D@z?VP2yw7kk=>$NM>5_VfP)x_O?>7J(LH@jNI{??i2dIJP zA2(r~@i_hcZfsk@Hv=l;$I;re4_~-YC+~q-2j!&-#6%##C7GC-3Hec<9;lG`(aNTb zwpy)*H-Ev<`+&_~6@oX7CqO31$jL=v%8*=3pdUj#g>dfM%C}~~wt;Vj_I&_03ZIzV z(7iO%$|KlRLktQg1{N`urRLU+2db%;NT6yZDL_;(j7<>52@mZ6|Lr*H!x86R0y&HW zi`iz((#O`-z|SJPAJ~5Inm`K=`ncQrTVK=1uz#(K7Km=9ig7ixumB>Flz4zt*i{e> z=?Jy+i^kcNp+s>20xd$Gc4JroJ;{3sI5y)e`(}85 zDSvD&*VgxxQPi0Ei+o1q zq(G7ir5ZhSI=Br)`-ppwpzzzdNEJLXVG+Pjo5kp|!;DNi49j{;sNU_`TP}OIg@Xs3 z-*@p4bb&VlcpODZ{A$bK#qfB{35Mbrpf^j&59URUjr*qE%zlGAT+uO`;|-eX6IG)H=|23ia&(Ie&@^ zA54*Ot)(49>4t2P9sbZ&`YroN>+uwee0pIw*{iDu;P_p@HioK#8rVDHOFNhBV)Gh! zvf2^wilW#shWbI2x^AN^6EX*SYH}cYQ=hD&4iY6YsZHty@W09c8(J#qawHDjk<6}J z+Q+u^<3b*fF7Z5XpYzzG4&Li>H-F$Ehy`GEP#f+5yrKXo1GWr|p$vo0W0ygWrg>ID zWCDwnEt%@UPq>|vy_V)tN`+1bJ77NlBx!)G7ohbHdnR2O7l5tu-VM_XKs)#1pB}hE zvjvdIBijQ0Ru@OgdVPGnK1TZK4+ZcIf|c)8xVXTMFrMEunmqvQsqvm;Vt)vRF#w<` zX|$qY6MJ}x{Degkh|~~?!!!opEvyt^xs0E_!I6v!%Djuydfj;Cf;E;ecJp^>Pgvml z$=_P$@wB{G)Wk3x88gAg9W^I2tFL906?5R?UsNypxPQHPu%|U}|(>YDRvONjwXUDnM`=YXH9@ z;~2y$Mk_)9&a+pfs*xj$N1lEr5?RGZ6ZQd7v;J8XJd7gk_ypAR-hU?Fm%kUm%AnlY zOi2>70q}K0WUAg|-ZJE^0}>?@IRT$Iap+u9f|MWnw7#+f7K_&|hYftG2T!ESn{7cH zgCHmN&64%E#mN8V1bMf$jvEAS2>8#&;YeNrTkLjT*=8`{m-7&VXTM$k7)3)9pidy_ zNP+xFZpLhWbX7(2Tz{%n+*a?yl>)Rw!G*F9jMk*c0Z1}kGT3#FENw<%b=#tEKi_Be z>BCh#*PeU-L>jy@`>t-qKtn$gP%WCcgT@2>sHdn@5MP6WBTREyA!$RcS^yl;rJ0HW zcN`3$R11SatNrm6A&wva$(5O7Hvrqw(>(srkRoN=e-!Tz{(mk&XJ=Ovz)<$(&FoyC zpo&|Et{OV>OR4zuCX1*UvE_;Bld3?q0Q9Sj!&k(#W$GasY&4Y$)^Qhz+46t-YPH%F z`(Ee{99JEkeQ2A3w+Ipz2}R&^HTJC&Ny#S}4NE>be8gr?PS@v;B9=>i2!R36Qcse6 zMc|6Lqtw0qu({VGBBRj=Vo{@TE?je+h8onh$Bf8 z(`cJCqex6@QKVi{a!kh(Zc#U-AdqJ zw8Xo8d{sgQ1OrD<(u`+L#7V7(L=M}7hBG#*nLA`1(Q+x1s3F~?#f{YfNw-oU5VIt~ z5!1XEjS5mrB-A4Z*k)#Ha~ED`>KMN1RN#d zr~}L^#VkIR<)Pq$ZL8Q2``el2NCe2&K`AZsk0i<8wybezE*nfH6COE|h2i zjM0ZvpjA>qGgj${p8&}LrW6F|xsL>2B4L?O6r-X}>?w^L;^;&iQ}z=G=MTPl_W0@3 zr}#n0bP9!yR^0(vX~V*ZSP2QiL>sV;qJJtTQ=&+Y#8MMrNFc>2aS~CXuh$$0tSk|p zf7HOfhWYsM2Om8B9)7-Ybi_XZPX+7qk>r7LY)B(Wq~bF#-lW_z8uO^R6+;0{Y9h(( z>!mMSfl?%&6hX68jv^{V9bkSzM$RLUK7ic;a07V!_{j%Pp5oQlZd9n>1K@5<+kd*` z=_GlJq;MY~zpsaXh>}!fACOg4045nHPNw<+L+K%L2~4*+F`3JDC56b?y~E;^8i2P!1Dk0+pnKIdDzKYlR_oq*K5=XkDB*BBNATAexIg3?PjPB=_k3TTYtU2C(mb;7gV`f6yNMQGNu1ZsiEV zKjzWC(NK9~Se$C)jKO_YB_A9zIXZFQ5R@hzktIleq)_tvMAB4ppnuud?3+#a!uOju zufP8K>rX%Zn^Ld31E7XsFhF;Zm6k4r+W3}~MGC+bu{e<&iKR9Sq7;~<<`Ox?)m}?P zh8qA6Klo<%#l>6vJ{m?WCnbQI zm^4Xb)sL7l1MaD(vwt6auP^c24&S|b^T{VatZLPFz{v?dyk?Z8)yNxfX$Vf~lN|B; zKvb*Z#Ox!%=fz<9NbwU;>W9}pQsj4FdS%ApYusP5oMk+p zM_~sbI0g|z5i^Cp2ZxaT=}-aO7zYt1i3n~e?*kdc z_ybaj`qcXPG6YDIs*0ixd~R(#f0{}RXCJ26=|i zSF2(%3Ho|CfhbA)$f!x&#{pkSk3cbx1eU0ilP!O@Z_5st&G1i9qXvvAMiZk<805eu zCj&ZLMSn^?G$Y<>m=vnEijV+3t}zW6-?)(d^0)Gmqb&u1_I&b7UQQ|aR}I_q>UkM`OoK{ZdKi00N(_BV~l8GSSezVlnx|lKw&^chnUNNXNg9t zNgw0Ji+l#derpb?z_s7uG0Pv?+Y11t`TWn@D1Q;3f+G+|p^Hz>0KZQ&8UmxC*SJZV z$f{523`?mN2lByp=yU{)TK;f6ssPvon>8rslO`q-fR{}60P-f=$cb1A0OAW!n#g2A zDf{t>w*$vpQve)3TTg!)j4A+B=kvb|Z;TP2rV)WK=O4*9&k{#Xj7EjXEKR`Ks!+9} zA%ASki~4lS{EY8)1X(e*K7GpX*aEoIzX&zZG$4ud9G{e^$#~-YqtB5zIvi<|)Zl?m zl%Fx6S@n7Z8guWJ-<=BZ*C!|V=cO5?VvU~{VLoVSR()jDlsC>lnv|Ry58i&|5@#XTb{869*r@IwkHv56sK&zhfQS=0yiLgj;$}38R1(H7beLY8vCeZA2 zB{k}xKd@OPu=a=lPHs8IZUun-eE!4YAmSuB6HbgAO|lO}wTPupW>q8|f}{gd9Dm}z zp5|p{#&9;4|H;Y8PNzQy*tq~Od-3AOlL>yGyPOgxL#9Bf6FHnbl}ijwF{MLh5+yZB z1)>5mM7%)m*EX_`<^STvKkeaYp8{Z*=g?F@P97j`E%}r>is}-R5zz4AQPXQYERp$VRVud zNTyWoL~8lN>gf6NpY3||Yp^{F0DG^&PyC$$YS32(W}&ZV`k2|6qsXUJy+jBhGC2gL zC5{0==fI}y8#pBUh-3c(z__ge9!$#`FrjJYN}oWPtdvChk$#lMAtFEG7=Hlp;SEVg zYijWP`Oo)W`wZov0>FjW;B$X-P_02sU&;kZWj1LliBbTN2V(W5NSXrBIlM9ZNE+Av zq1i`3hZX=XyaxZ^_vBcEm=tAU07QLYUT~lI@IX%N>6Rwt5a3@+yXLjen69A!aO5@k zN3Vg7qf`uLXSjzaD8vlHiGRo>5}%+d1@pR^vTw`(@RLVjT~7hv4o9Isis27#;VnYU zKC$|gIFT}msU#le$U_9zn0id^rm_#$$MgAI)i@A5d-fC`Md3H0{I}8I3|U|z)JG1n zdg&)+DU=|ZAp2A}a1y1tvX2kiW7FPk&GSFXkWXX`#5; za8}75Q%`1zm0yY?8I_aI1Idl-zj*QU1KpM8*SQ1a{o{{6241ax9ad$^S4nCKLliMJ zOAh(yZ>}l()A{_f&p*c-&+Bj3yaN;KovF&SOd;`C%85OXTbbVElR z>E94&qV13e2b6K+u7JIK?yZ#G8xB%G^+%nb{OCuY z-A+_Dcm$;h=tNpBmwsbN@;fJO)z4=5p~@|#o)f;MBPeATHGja3;og+NQjfeN`zg*_ zAa8F6#K~|sa4YyNItp(S|>rhUVE z0_*)V9`qXV&cXdEKuiaZro#^?e%N)5A9=+f56Abn0BLSJol$EUpOL&6kc7^WA( z0ws~QU_thaANXj=g8bwcKl%sSfMFY!VN;SNLy%<~;tXf$>7~}(GyN?m;>Nw1S>4ss z%LtgLTX9dEIC0L2??l91Gqe5kpZ~n|O?rC>bl#rnZ!8mmZ+`;tmdC+20r(~WZyABN zY`*uF?cc=ws`F1)tL19Vzcv0_$k$NN#@5ExZg=q4?jWuH<4qL5P1&z+0M@;KI-kv! ztq*34Z_gLAlJ`?`+p1+b@7mGQD{Brr_8Ur5*xUW_K9RXkt^fd!OV+JS~DGZtl zm=4{}sMGy^uiNbpelQ#i2Aw||_C9a7KG_Y(o38m<1Yq6$o!RpJtI505>0~~i1M%eo zIY1}wG2}h)x#}P>02zHl-)gVD7GX)^a>U#dqNO>}>3=ePzt{i4XgD|+J?{5D@2vjl zP2;^`@2v))^S$Zf{qf?blgW5Coi65&mt1J@C)~B%rvLzMF8oM<+qrP(F(3jE^8lce znFG-7v~*z55rV5zXMEK;?_oN8G#dTdUjI)<{YS0!ucYTKWN#+`>-P7?%b#6dd<#P! zxNFpNeSg=GUt*o{YNMkqvsSA@KLxMrK<_J6F~K_n)V;c)nq!&?XYga6rH{r5K+ zgEtodjQY#jZ(W`}m`)$faDbi9u;AzzOWZ+l;Kzy&j1%r0{|24=P0$NY4h$l|<3Y+9 z6io%@E1oAY2JK}FXG+UXd$DNG=N-6&={OvIaIkm#VEDf}tNlZh02+r`N1$Lf;!zcWIEDR(omM0q8zKy=_6nR%d(~MY z9Nlhv+3oP~gDEkePp6}+;jiC5yx1T7`D*#vj}5Oq0E_nToL~Ip^73*vJ)6%7{Ypn# zEjc`?=cw1nFGjtWmsnw{abJx|$07uZNq?XiU?uWoz`+0vMuTN$JTFRNShrRyUNqp8 z3ISOyJ1ay2aaeQ^hS|KozyIq;dw<#Q{Ap$OHBhfH09bRb=07{Xd}lIwmew40P$xNF zc1q|QL!NyN7)j|*JQgxh1xHMs|F{{C2M`4(jtkl$2vU_+Bo#3W!0ccYw3n-PcYoPI z5Euwd)#>|(2X_vJf6;DzE~BqLdtCuowmv$&`u)qxi`nc#msISMMm^SjhxLyFn?|Rn`dWt$Kz+SDX(S?z0gm`+gNm(&DY`|nZzYE$=zKm6e<)VOYc|7!K`o<3`h$5*XC7HX@3j~y96Ks zA@uwM4Bi<^bL3}|zTRm=EE%sw)Wbt@gopJpBkV&`8|JYK2Q)!>nmnHmI=#Q!?>=d_ zF0VI!quN(F1F-0yPX5)!`QzzyibdZmDZtm|6>)b$mk6&@bRRoK1OR0SAP{0n_=S1~ zY^j1tVE`F1fCW`D^NJ(^3V%ZajW`w7xMHJ%4sFvXusB|{CLs(5KfZnNUpuW=wj8~( z0IXWydwThMmzSqNALsZw+u^FOLoSims)H^9ePbh-&_Q3YfiR}H{&{oN-|j;}6pZwD*S9A^wVbBNP?kAIGu%Dn_W zIOJ+pm<*2CmHbwUpx}Q;3dmSXp{Z|UWs`b&+%YS)wiLpQR>1Nzjs}>$msRMA&;Ik*_CwBr{1Uc+LAO9R524esRm%hc@8;wAhQ4)T>Fzftv-cL)^NBZ!Fk+1A|>_QfsaiOBzR-#M|Y3@ zxYK^jnwLsnA%6g!@1I`&-j$EKINA4QR(<6W`sxXsBl>clG&|u!R3|C2n<;^nL7+gz ztc&OK8*8Lk0j^pV<$7Cr(Gyu#aKUGNL}1a{gB1%E-)#5I@@5G*ccW>Jh0ovREi z*Y;95X^1Fz+>78I34+_Ef>6hZ=Uj-XAkhWeG6omCo%i>S5B|q`^)fMd$pD;wWu3P#_wx>u12Adh05pA(kACDrC)tnB7TZCc_R!dZ!k%|imjGx{-y zz-cD*K$YwXUJAfcq^W>XyS3y&qCLd}hP{68M}MRKFPe>?SHAHKSgt=jy?ij4T+F%d z^N9+_eGGn}47W7CL3ndH!|g!8Enrh3p>O^=kZbfwyRTULE$v`Q_<}?`ENPh(< zTI}A*9d<)UX83}Owf1toY`3P9>1A(k)W6;9p6+g6tGPh{&ZfUV9-ra~1+d4;$LKRL zH(pRI3c0Y0Qq3L<>@zd(NJJ7xN{~@4GbHpcxNHtaKwNSKAgfCyAwWZsswQMs6^UPQ zQj5kO*6BI>Oz7#I&Wmt7#!A%2eSi4rY43-3kN!)e-LB$`24J%M!|~M>79T8mT>4>` z$6ltuiaw=CI1W2(3VL<|3l7&BrJ&VBeGBDSX>~cIz0N*R8;5SnDG9X(bc(MfT%&gM z5D6x8l?f`XX+R;1sLi&Fy+^_hU_j||#RKwq+_@V4?ft=@ZEMoxy-)yFt$*)cj`2Fl znHC?OZ^EDr!%O`I_~CTZN>vux1VD)6?HmxwMP;Zs>UEIA<8l$e9w*^O-op<{(EE%N zOq6tGu}0AV20#K`b#SHtyQq>ds<_`w#vZCP9UKD$ptEe@VaVkb7otx4`3unt1z+ak9Z8PV_W76?6nX zFbV`{BqP|MRZN4ufje8__)@jCl2R2_Gcf|quz{8Q;7}kCb{da#7Olx-HXc1Z7`=)B ztkxf1P9ET;5}_Xh)3_(}>Ev@$i9X=gyRw~Lmw!r(2YZT+ar^^)NPppY)5gKAg%GH} zn0v+p9VR425Y#kfX;53CniwuH5<&EHVlY^6Wo8TbXkJLCdQ002<`^%S+ZZ=^Ab2_6 z8x3xEJI{&1^JlVG8+@!d99q+-VaoNPZ~RP5moWu+vcERJMUrCAVG$f)G=DrYa) zq!3mUYi14);RqK_9*{8!rkDh`_P$yG)~ye(#t&w*bHK0TU|3DVB*l%=m-A2K2mRhf5f2MLk0Q?twJC0J09-Z3JswdPk(BGKmVYd6Q3<$hW}d^ zYhvb<1xSb$@eripa|o#<&~vM#Cht+>Bw_eQQO;fTnX4uqj$DoR_eak;5hIwXV7S41{nhZ7E76JMnD-trfF6ixhOg9i1Y9L`Y6VJi=BQbq4|8w|1&$%! zqL^S7%)h-ixNZ_$8-VtA$CGa@7N^zlhmSI0U*)p9p)*AFBC_zGC4uIgG2kTd66871 zXAH0m>3yOFksrTz^I@x2Pl~pdzV6NJ>>~NOKV< z7C`4J>#cH*1YKbge#&VLZC_pOj|O+zt*4b_ow_ani}laOlL?2vUtP}2j*QteXu|@a z+q8j6xU33g_L;Cb0ZT0SiUAJ+N?e1$L?)_0Xn>fe>EOeO*W|A z0qFep)%c2wPd@R7{;yt-XuM*YSLGoj!Ng^Y=Ou|GC*hKoFCxW-Xo*+dXY*Tw z9Z2tBw_20wgXQwEhChQzwHxTGGxmBvNq(>t{BK(!a7T3!5z4}RVki)WJ|g$m)!}9u|s09P)qb&2?V!1rrf#l zWHh*yMC$wP0cdxB8*kU5F%kd@eFVrGbSNU!1x_TPPZw(gv+_8a6HLQS;CZ>lo`2zq zt1g6Lk*_1`ahpQGa{&2}XJImD+cKA2z#jHA0qL0N$hl)8vX#%~RSXLGUovW=%z~NR z&=88eV=cR>Yhw(l@py84^u6`!uWC{%Y!3h)cyayV>Yvc3kFqM|Ns&3s;hG9Tuqbbt z@mfqGa!M0Zw|EvE{Ar@#Rd9Y<2!BEVTR|yekmiAU1S_y(Q&h?%?It&KIbflBt5Os~ zsFbMYZRp&sSYC&QP#XmqdiuNk9Tz*ISKCq99GT=-;*XwI-OVMySW4y^j>rQqkKRupMis6&MC z>myA(7H}z4fT%{!Am5&3Y=5IF3^w^(Ff+~t0n!dO8?a2%td#^ALC`afJbB2yE(y?O zK)S!}baYDq+MN&ak~6}l832W`(I#o9?LSP#|A+AA~3T<}qm!7*!Vk?pI%(0w-(&$RtY>VMfF&jz<9Csorm zM}WgkB@a0~t!%eX*6Zerq+0^8T)mH}uK~vnBT)}>>#Ix^hIM<)UgUXD2%<*apbpId z)Onm}dTRYQJ~X5`!4aR%f=DM<=m$M2`@EHgTpWAs7aQ4z2evhMqFN&HB_>hJ7ad6| z5=#PXoe9>!6mL@b)_)LQY{cNvnZ@#`yYVLPmH_zh%e71E4;`iRb~0Q|MOxOvL%WVS ziA<5rgs8BdilA06TjCbKvDO`)YLvN6UR9Fkb$$Uo8)=CMzK&u`0Px1AKAOWLFcs6Lwb%x%lU<}Z z2-7d$5X^OSE`KMJ@I)LOV>s;n2X~_ub&{aRI^;$Vz>ax^7Nz~dfb^nVRwwHc3t4#u zp|pogw4y*=GPQ>@B-22tOoUEWZ*FM8j$jyJ7URa;;X%@u_FDpgnF4viAl$9Q_GvfU zwzmO!MhErwDa$2W(HOPtjiP3jfN;;&kZv=>G-usZUL) zr)4E+!#?$-x|>U$T%cd!G2JRv@*N8bsaiBGN;e6~CVa)FOcrJ#CpL;Cfx4756|91k zzEqCAcYjhzGU9LbMn7nIk6zJRZaN5~0a~D;2NI5J;aIV22B6*k4kms+0=p$OGL+OE zsiNq&jgUz7wPk|1)Bm#G@LHU$ED`OwOZLoiZ$(>^TjsoC*1U-NRGap>8Hu#26tWFD z7i~OFIWqd-rY)l{-`!(1WdH8Gu#meSZvphD<3S3)SHwm2FSqR+kkx2M?%5-$_4uf=h=zm4_82?#K=e4FC4RXl9vJ0SgmZ@Fh5Kx_s8hIrj6L-fW}*@iT@^#rWsS)H3pC4XLp zXt0Y~E?-4a3TR9)WviJ;2AWOGcS8$rG>N9*S5tw8ip~{UiGyk=U)zjOX0oW^&&Isc z(eTHsAH(5bh*(ffkv0P$?Huw!#F#)EFqBkP_!jK?&h=;#f_3@0OH*r77Yt)$@;}*T zi$quJM&hKZ)QZwYvKaEb<;u(b$tQq|O32cMADlTgUtx_a?3=m2;H{j)vdzdxHjZw6q>$bbLP&WXSz zb=++NWlP`}R>>15wMcsl7owptwUzq1ji?Idb9%yD?8fcR5O@O+# zlqqRQmPOLhF|0p00ATUi+uI+F_Ld7gAqx<^+cpE(4Q!ZSkTDJYAkY`=>iE>OZL3qe zMw>=aI%o`OqpDb-qb?*Ro`2|OVBE^JIR{bE#lSazGcTa$lCUWNPL?r&yJsNO3!MjG zJZlDw_V;gL9$a4X`&Y`;3_#3)Yz%5;%xcLPY)C=P*nQBcSTR-0j;r0Ql?n@SXg4)xq7# zc{2dr&S!i{mI%87edY44 zmTd_D?pY{cXb;s)bclZ<4YYI3fB?+!&^i*QAD8CM7+8mdB$%n9!ab1P98Xuvh)uX* zrtP1LjXW1Y6kE88K9Z^SjanB&0BCT{5!`9T&(NC)jDMuf$Wu3j@p=Ki#1nVo%HEpZ z5`aPf5l&u-Fk34(MVg_l@)(n>@Nz_gF=si#%%VP z-7WJi0e|TAA9XwL>eK=zmEeY)My^hy3=>2n@qrVC2tRwGB$BQmB$>&gs|!l{>$4>( zkrB4AhN`Uu)KKay-^gHeu5rP zd9SWI^TijH`>I8@B>=c>*X!d|DF7npsMDHZgMZ3xf_Va+%w*botw1EzBD@jw(khjy zxeG}L^cI8M+$uH>I$Kcrt~@*sm01#vL2uiFZ-pB2XJ{Y;jr9jF zSz+J*2cYn_3m{wkImSB;`$Y77w zl+-{D2x3yHUh87G%0979l5*9}nFl{{xli3QU6^w~EehK8Ny<2~H9Q8h+{jEDXn&(j zf*m&Wgc~xfQb=+n6adAbLrDQl4}a<;Lx(7=*Zuy5&kW(h;@Gsq}qMyAcNnI@Bt zv4$Iv!&s0siKwzpvN>Rxqbg4ViZzy?%JqtZ6!oyf_~$GTy|*{5Wa`w;0E|Y@hQr%< zo6f5chcCUMBSN2hX!lMui+>`VgLEg^CRo_1bE*psY67~_l-pCxY7$F(sUVe`HHY$4B)RczYjq=^2eF17QHnNe=8X;zp37IH!f+u&y*qtbbaXXsSwTlZrx6 zg-XcM$VKQLBxn_CRRY&y%u_HxvU}XvNPI6uWV*^>aM7IPkbN;69*w&H1Kh#mtGa$w}H%O=4`FSO}70G|f)ZHO(OPNm~Y*98CqN4Nj_YJ9i5=?da# z?wxxM+Q`-FiUN8f{ICzy3Zl?a99W1=(n?b8^3)S2RMqGtnwj!kKvM;5(T1f=xND>n z`gzoYS<-G6J%81xr(dZI$_a}PU&p$AwDW5^*lg>)AXhj)x;=jUWshG~$?wKg&*7>< zQHmuRzFrdpcQwhz9?YCXmqF&3D$5~Uu*}JMCZH2^E|OM=%@qEQ0lDaxC3WUQxUBjQRA`1Rq@8~#rv7_~KWo6#=`Xltg*S&S1d zJyr7XKe^j$ZG0@Uq2+l2XtfRxfBEF`2l~h~hc|Ff{VY_0>7E9!Rw(2eWD<+!8SOYQ zOFGGf0e=+}e#xq3a=uAG6PVsgdXrgz&hh2q?ukt_1WSy4#K6O!FJm1YH6K7yx}KgN zfOh-K+s6-P^DgdbV149os%VTs&yGn@x3II6;kE>Nn^RfkVB}g8TZ>?pwW&xPvyv>} z+FiMEPw2xh2ny@$B1?fjhkxLYo!*4Nx&P5^oPU*F_hn^P_51)p?$)heo}GTg4-eyu z(C~%rUYg;R`sF^+iJ-ERy9t7lQ%RedIU<;uQ|DLqz%K=^DY{Cz14Dx<;*da2F#{_7 z4fM4N*i&>{f5@CL{`FOO!^6Yo3lPzwzI&kn^!ukLcfXj=@8C-u;3R(mR+E63^B;aA z(SI#dbrVI2)eVssELtoJm&L7ggXt*+=I$-x0f8KY_ExP&|67z7^R|5nT)|7tA7vI9u0roc-T8UdeL8ke$fEH7fgcL>~>57 zygH=Ytn5VKp4_d$S_e6cG-Ogy{bp7GkVz6nU~2pXuA90l=O7xiIa~8$-7itEc~0b= zu#c6;$KGBK7hV|tmH6|h8w6l)@0Z8N`}27(KE{M|K|O%isITn6CwG^uZB!*1RDTF* zS2a*&E@l}M4Sr@eiFASweq*z9<&e(;*+FYdLDyax1xVoEi;q?xtUq|{b^Ew={k?~* z-NX$7fCh(0pIwbV#1ozwzF`Sn(jN~8%}F5T_P=4UC{_zo^t90+7aPRZqM68R1Was? zfmeKAi?K;L@Cz47qBg^>Do+4F&wmO=K;J)zPhkuW_79GZZuZ;THw!?ocY5#M8aZsx1Uqj6rpb1tV>l z$w*w2q$Bz7UJ!jkpOzlJ0=;+d-es@1{mIuZ?KcYmvb48^vTgDS<$itO!xAa?bItnUR>3s8;rE&T@cJNT;A2 z_A&VNRj2$6%<%5L-f*<#JF&KDt9Z?iELAnTsl%hcxO;Nc@8gsUH@xv7G#(7Rv14go zr)Qa|lZ2+eF@WVN47yRYynmUwswhH39>rDLQZfsJ$Q#viz(f;wRg4|IPPnt0&@;y= zkH2Y_-+g^@_ukRb|J~90I`)lcfR)`j`K#INy{Au?T!w@aZlVic_ACwkicl*E6sfsV z)oZEEsX=Tlf@%IP!u-uV8L4b-nXZ98Wi;@a;C4YaD&KwhsJQqu%L8FKOFbP$YMZUom`jHjrYw_XGAMEYzJ$Uzv zZttqlax?Pf0{}a?+J5-(vrj%j3^=mGr;FgA3l8C?{9hQUyi*{_J5TE01JcR_~Cn>fAaBt zbsq0Q^1E&_5TN+TPo43Z9_dKwT(e^FBnl}p(!PS#EzNJ_xd_6WHI>C3&_mFMr9Mal zuc|uw__}wDeLiY@_}-JjaLX(IQuCtOR}BE{42P5VzWwOaU)}RO&`&z^@vD&p0KQIe zCq>ttLsx4@fq$)GfSOQP5SdvLpc_TDC=ix{oK+Qq+-+2k(6Ai^1R(jD6dDH8a4v27~E?cb`6e zviIy+cYlhX9$07|Fa*FPkX0arB~Ykc3K&O(K}3`iGocSdf*5;LxptGVJIwTr8Zo`3B833q;bNAmF_Xpp4@|eFS*Iw{f zKd~k?mm^@uP|z6zt`KG4%HwlJ8MO^M7fs~mnSUtIFGy6UQh`4~M@8gI+U?EE*J&w6tqM}nV zSx_P*=DJlulkZ}*YVL$&gPCv#djoodPc|=eW8mxg*1^Hy{dcCL(W^%ve!P|dK<{Yu zfrJ(%pq~RFxQS|7WF#373hpW%!QHVdaF#@^ zoB|U}4S8nz10nSF`--^C9So0;yLV2WcDpZmp}WJwiv79*01Msj)xG;yhevn6_-ufm z!|KfW8}yhBe4fc0sYDv+r(qmaF%i<-NPi+pvhsd|N~msBD7vi85(K;$^?=@sek?jT z*BtG=^I$$4-t7MVrseB7uQ32NJRClL|AW@kC-kqJJat^PEN2Lo}IPMPLJ^O9)JAZDy9g7 zV-T?r{+Jz1X;iaRPK9ddhlCRCsm&==R0Y5kA0mChcz_dpiM09X&rf zY8@S2Oec3Qulko4Z5*ZNb6hxJQSy9HAR-IMBN9@98tesesLV8oGU+hOi(1^oM>@E* zKG4Sz=%_IOqH%WUZD zLwvmgP~tKed^s3^5tpFr^{v@-pbI%&IRO7OBjUhn_&aS3_Q4Rp8C8BZ=mzf!mOi`z z`s*8jM(6R=8_U%8FT7}o{*5ZW%zHt9qdNF?clMhAyyXae6M%05@RkvH%jW+-jy(MK cuN~oO00000NkvXXu9FuV69P*uvn(4$0)+K8$^ZZW diff --git a/Roguelike/Library/metadata/ef/efe8af026bd06914d9826fc55d722275 b/Roguelike/Library/metadata/ef/efe8af026bd06914d9826fc55d722275 index 3cd38d9d88044eff99dfebc3454a45001c40d8a7..7b823aa9cb2741388e0a28b0066533c70de009f2 100644 GIT binary patch delta 514 zcmZ8d!AiqG5MArZLP&$C)YDK!QmlKZ^i(Q%5XDPHsrPNNZMUSmVY6+CBE@gWmlS`) zAMq3Pli znI}SyVIYM`Z{%1=-gUB{+VQSab+QBRyyH{>5zmK_2;h;Wpjq1ele}d!-XBhRU?7fI z$~8{7_MqWZ_ZCWo@MM@a;5T#9E2i1x|Hh(l(0xz7q)plZMpb0-W;gek;r z0j)p}BwyMV-)JV2klIwh#iNoK+awVV>KevLqrKaK%Mrs61F6oN?uk<>h6k08lK7d^g~fF8zApw?pNPCr4ko zx^@7(;)rzd3COTWjPc956N@zRQ4UC_DCHH5Jq@3_#|$kzfp`^XD&4QvaZp`CT) zx)tOI_-knF-;i=gKET-B=+nk}G>Y}Z1a#WDkq~0n^AdE`zP4*d)o=S6mDp`8!m zpR?$3eRmqH?U28p@Vj#ST*5c!`1yq2o#US+obN%g^M0juk$W_4@e2vRH^;wE_G7$L6yTyw89PCVt;)noUGIMGL{~|Pgx)zJ(v($`0u7k7OFz>sQdp*6|m`ZXUjYknnVkx;t zzACF8SoOfF2mX&982vh&zEY{Y^U0gzKOFe-+ZXv0NtfKP-#_|>Qcd$^(LcWEHRkIo bJh%Vgv483Z`*Xk3=lN}LJ>fmOHa+G~s~zNA literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/f3/f3bb37550d4444b87ad7543d746b1c95.info b/Roguelike/Library/metadata/f3/f3bb37550d4444b87ad7543d746b1c95.info new file mode 100644 index 0000000000000000000000000000000000000000..22975c7452e3ac5cca375c7006750c2d2884a852 GIT binary patch literal 586 zcmZ8e%TB{E5Ue=z6&63xlr)6qMrkV|A%rSa4hTh?c#~T4BeEUZ{ylz(wqb9c8Sm`u zzH9tpcz7}f?FuYRTrI)i8wf0J2@$~L7JH2br3K5B^e7?H^JIMl(Q`Bbvim{Q5*UvP z_qW<8Ex;Be2?CFNGHUnNzzec&KayE-EIVLqgqn7p$_U9-Xy`a4_fwMhnuW zb)Du}me9GY`Y{KZXY-Wi^M`uYEV3Z&!H*GQn<@J^Aj&mmR_W;|6ITuJlDh1yWvB}> zOYRqmuW{sO4#t$L$Oo$B(48ZgMzh`qQCKW-5rIePU9KHzuzXleX;OVPNP0Dv@FVVTkf} zn=4`j zejvfZ;Zl@ekdj}X2h=8kDqtfSFu6iQW^;mu4KqJ5<`|q3i&K45i!)r)(k9Dm$qJ!~ Q0bQ`!OM4pAKSj8G!$OcH{Ve~C*eE)Zm3s6q!SohG(O#YzAG1)x*t)tEtXBd4jIU<_cW{CN8JM;?%IzqLS2#$q#hoCI=|62q1)9 S)6!CtOD5-Ng-l+d{}BKk8G^e2 diff --git a/Roguelike/Library/metadata/f5/f5f67c52d1564df4a8936ccd202a3bd8.info b/Roguelike/Library/metadata/f5/f5f67c52d1564df4a8936ccd202a3bd8.info index e7417f5265b6c63bd25fc1b17ef61ada848cdf6c..7b08f1cd2d183d8fdf42e018362b475b13ce00d4 100644 GIT binary patch delta 227 zcmezO!l(OPK*JVBdlnYo)Z&co3tJiQHgKAmSQ;CcnH!rv%8XK4znix$_G#2)SOSYfu zVg_OsAZ7((HXvpPVh$kY1Y#~A=H7m;i^ppwR}jz=-^Aioz!GL6%m4tR_A^lc diff --git a/Roguelike/Library/metadata/fe/fee89e7023b014869aee949adecdc426 b/Roguelike/Library/metadata/fe/fee89e7023b014869aee949adecdc426 new file mode 100644 index 0000000000000000000000000000000000000000..d265815e584008ede2b55310d742b114f9c62b01 GIT binary patch literal 4345 zcmeH}O>Epm6vv;F-83aYY56P#nl$CB&`mZaB$fIVvVjCr6lealDmF+-s zseFP{E5reb6Nm$%;soNvsZs%P;J_sZBm@^E!~qb93qm6N|1%yZ_HL0Pgpg3)YUDRR zkN-3K=FPK3dTtWA?spN{hAS>2!=<6p&|F#mTwPstIspm=k$$6pV|@tl`t z`7Ze6Y&6UJ;gb~!VV2(qpS+6@#`R1>{{Vcha|>at$2(%`37tko}tcG za@{)R3Gf%u*uN^}j=YJnhtQ`+4;szJVG=%dt|o-p^*jro^Ik(3lXqm+!#K5D4|WS< z*|O_lObs`2uAxu19gSw=W8=KT;FQ}q^FGavw{gC~;FQ}q-sT; zxgVVQb~kyfbu#&OPs+3Te=j+V`Nng^{HM-7!kD~}(P3Vgye($V(f#DQ6*K2(f6C1{ z+J`|rMsTjxRRj96#XItQ&&UXxC>%c*!dRWGOVW$4%4Syd0kWu#6- z3xRr4%}L#RLHVINx!hFJg@7)V&wkW@ZvX4gJTh{)bYyqLbBI0Gd&N+1q`vdqub}R; z*0H{G@0iEjKjtI%uX7zQA)mOP+;849;~jaWL*h>o9oF}DI;`)Ouh(IHw>r$%_o2gl z-pkfmUEhz9XY+oozGv$!>$}Ng^IjQ6pZdDK$F2IT@8&#Y^>uyMT3P+I`fl{c z6Me>3;#Pgu_jdZM?`EA@eb)E&>pz7)*RSh)+^Wy|-cFzOy`4VmJ9$OTxr_B^s?l5s zA{EHYOcWfNsCvl5iKPfB=q>n1q;ck9udb#laAt5iwR0*|fj-oYGy0G}wCGpsN}t9I zdCCnu7iY2?sk623!e@`}=zX>F?K|fWf46sqQF$y`2`(GTV(!?LvbZ1j+GR1T+eWh3 z>g2Q7>ilgM$E~~cPqTO!>;Jd1cp7v~{f$!#?2DjYZwxj{7MSMf2~ b9MdC8i@p~v{|C|G%l1mfPoLJMCZqoXb!YKP literal 0 HcmV?d00001 diff --git a/Roguelike/Library/metadata/fe/fee89e7023b014869aee949adecdc426.info b/Roguelike/Library/metadata/fe/fee89e7023b014869aee949adecdc426.info new file mode 100644 index 0000000000000000000000000000000000000000..b62d0a8c2833ea39fb52453ceb8b84fc14b74346 GIT binary patch literal 621 zcmZWn%WlFj5JWxpEBpl|1Vl-0P(VehstPK4sH$j*H^Gu0k-aJK_q83BN4q!AO!hI8 zH;dl_4^!um=0MQ%H3NsQpfJB@Oo7mAY%Ds|1SE_OC}TSCY(rpas`-XYGkrfG>PXVQ zRXYtrc3R)1SQ@K?D5#Nfzvu-k=+vM@=Q=nJ zs9V8vRv}I@d`!~eE*Xp_;|vh9Q3f1KUXIdnlr|97hz7X6h(|2AAY=QBBdEqV?*BjY zq1A#;@q1}XkSp%(5tTrjvq6$(NvKGly?Bz~+-e^9VH&AQLVdo?l~yzqMbUfaCHBU6 zFa7-TsDvF#*IBEIm+sY3ege`;HO3O!>w#gHNX}Z#B`#Yje-jQ_#OpiiJp2#71uH=N nczh>3`t};+8Y{G@OLRWoElA-L2!BXeCbnGZ$`oBK?s~l+4p+el literal 0 HcmV?d00001 diff --git a/Roguelike/ProjectSettings/ProjectSettings.asset b/Roguelike/ProjectSettings/ProjectSettings.asset index 933a2e9808dc0390c2ac3b4086402b7c69fe1ad2..d7ddeae74c5426c3a83fd2ed59d395b9fe22e80b 100644 GIT binary patch literal 41889 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 diff --git a/Roguelike/ProjectSettings/ProjectVersion.txt b/Roguelike/ProjectSettings/ProjectVersion.txt index c609863d..b11ab9b5 100644 --- a/Roguelike/ProjectSettings/ProjectVersion.txt +++ b/Roguelike/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 5.1.3f1 +m_EditorVersion: 5.2.2f1 m_StandardAssetsVersion: 0 diff --git a/Roguelike/ProjectSettings/TagManager.asset b/Roguelike/ProjectSettings/TagManager.asset index 628c056c1961608c1cd34aa58b13a39bbb84f11a..6dc85ab4c2003de5817f211c808e00ff647a80f5 100644 GIT binary patch delta 177 zcmeBCe4{AIz`*p2fkEI60|Ns;kOoo=45oTUdPW;1?=vyJ+5D4!j%_n8=bHveQ|=bfy;%)+QJS&+FM E00vbGg8%>k diff --git a/Roguelike/ProjectSettings/UnityAdsSettings.asset b/Roguelike/ProjectSettings/UnityAdsSettings.asset new file mode 100644 index 0000000000000000000000000000000000000000..62d2ede1f395db26a025e7f2857d95ab3dea4388 GIT binary patch literal 4116 zcmeH~%}T>S6ov0JYW=BI!JXTRyFw%4wp|o0C@QtO5{V?0NSjDAE_9Vw@C6h%?seg# zxb#glo-;`m(I=1@xHI>Db8|8|vx-P*N@Q_aL>91O5!tA_b+_M;k1WfS0;plSeR*1c zC?DUwt{&Z2-h0(5xQF0A$EHY%{>&69xspdm(q|><1R(qJP_l#G6L8ig1PA-cmrO3= z82ZiE3QjF)=A8O2O0r1=2X(f=+sJtyd>vHDOR9m4L0$${O>#%xz*g`Kb*9NpIC21f zfnYuJ#dCe^8U0zTf9cP$zxi9gLT=)x{(QlEQK+w5e$oxJ4x{r#hNm5%&>Ms|!CutW z-bi0vf*uBm-i`eLX*=@H27$jn@N_>O4b3xgvgHkfj*snDwtB@I`F?7z`q}ViN_!H36gL5w@W2a$YkxmFOuRU` z>VP_+4*W|8>|bO4<)0;$T)O}O literal 0 HcmV?d00001 diff --git a/Roguelike/Roguelike.CSharp.Editor.csproj b/Roguelike/Roguelike.CSharp.Editor.csproj new file mode 100644 index 00000000..0a88a6a7 --- /dev/null +++ b/Roguelike/Roguelike.CSharp.Editor.csproj @@ -0,0 +1,144 @@ + + + + Debug + AnyCPU + 10.0.20506 + 2.0 + {CAED324B-6229-B97C-3095-98CF546CD4B6} + Library + Assembly-CSharp-Editor + 512 + {E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + .NETFramework + v3.5 + Unity Full v3.5 + + Editor:5 + StandaloneWindows:5 + 5.2.2f1 + + + + pdbonly + false + Temp\UnityVS_bin\Debug\ + Temp\UnityVS_obj\Debug\ + prompt + 4 + DEBUG;TRACE;UNITY_5_2_2;UNITY_5_2;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_2D_PHYSICS;ENABLE_4_6_FEATURES;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_SPRITES;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_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_REFLECTION_BUFFERS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;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_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN + false + + + pdbonly + false + Temp\UnityVS_bin\Release\ + Temp\UnityVS_obj\Release\ + prompt + 4 + TRACE;UNITY_5_2_2;UNITY_5_2;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_2D_PHYSICS;ENABLE_4_6_FEATURES;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_SPRITES;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_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_REFLECTION_BUFFERS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;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_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN + false + + + + + + + + + + + + Library\UnityAssemblies\UnityEngine.dll + + + Library\UnityAssemblies\UnityEditor.dll + + + Library\UnityAssemblies\UnityEditor.Advertisements.dll + + + Library\UnityAssemblies\UnityEngine.UI.dll + + + Library\UnityAssemblies\UnityEditor.UI.dll + + + Library\UnityAssemblies\UnityEngine.Networking.dll + + + Library\UnityAssemblies\UnityEditor.Networking.dll + + + Library\UnityAssemblies\UnityEditor.Graphs.dll + + + Library\UnityAssemblies\UnityEditor.Android.Extensions.dll + + + Library\UnityAssemblies\UnityEditor.iOS.Extensions.dll + + + Library\UnityAssemblies\UnityEditor.WP8.Extensions.dll + + + Library\UnityAssemblies\UnityEditor.Metro.Extensions.dll + + + Library\UnityAssemblies\UnityEditor.Tizen.Extensions.dll + + + Library\UnityAssemblies\UnityEditor.SamsungTV.Extensions.dll + + + Library\UnityAssemblies\UnityEditor.WebGL.Extensions.dll + + + Library\UnityAssemblies\UnityEditor.LinuxStandalone.Extensions.dll + + + Library\UnityAssemblies\UnityEditor.WindowsStandalone.Extensions.dll + + + Library\UnityAssemblies\UnityEditor.OSXStandalone.Extensions.dll + + + Library\UnityAssemblies\SyntaxTree.VisualStudio.Unity.Bridge.dll + + + Library\UnityAssemblies\UnityEditor.Networking.dll + + + Library\UnityAssemblies\UnityEditor.UI.dll + + + Library\UnityAssemblies\UnityEngine.Networking.dll + + + Library\UnityAssemblies\UnityEditor.Advertisements.dll + + + Library\UnityAssemblies\UnityEngine.UI.dll + + + Library\UnityAssemblies\Mono.Cecil.dll + + + Library\UnityAssemblies\UnityEditor.iOS.Extensions.Xcode.dll + + + + + {3DFE4C14-E1E8-D3F3-25DE-8BBE8DEFCFD5} + Roguelike.CSharp + + + + + + + + + + + diff --git a/Roguelike/Roguelike.CSharp.csproj b/Roguelike/Roguelike.CSharp.csproj new file mode 100644 index 00000000..fbaf34ae --- /dev/null +++ b/Roguelike/Roguelike.CSharp.csproj @@ -0,0 +1,94 @@ + + + + Debug + AnyCPU + 10.0.20506 + 2.0 + {3DFE4C14-E1E8-D3F3-25DE-8BBE8DEFCFD5} + Library + Assembly-CSharp + 512 + {E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + .NETFramework + v3.5 + Unity Subset v3.5 + + Game:1 + StandaloneWindows:5 + 5.2.2f1 + + + + pdbonly + false + Temp\UnityVS_bin\Debug\ + Temp\UnityVS_obj\Debug\ + prompt + 4 + DEBUG;TRACE;UNITY_5_2_2;UNITY_5_2;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_2D_PHYSICS;ENABLE_4_6_FEATURES;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_SPRITES;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_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_REFLECTION_BUFFERS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;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_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN + false + + + pdbonly + false + Temp\UnityVS_bin\Release\ + Temp\UnityVS_obj\Release\ + prompt + 4 + TRACE;UNITY_5_2_2;UNITY_5_2;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_2D_PHYSICS;ENABLE_4_6_FEATURES;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_SPRITES;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_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_REFLECTION_BUFFERS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;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_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN + false + + + + + + + + + + + + Library\UnityAssemblies\UnityEngine.dll + + + Library\UnityAssemblies\UnityEngine.UI.dll + + + Library\UnityAssemblies\UnityEngine.Networking.dll + + + Library\UnityAssemblies\UnityEngine.Networking.dll + + + Library\UnityAssemblies\UnityEngine.UI.dll + + + Library\UnityAssemblies\UnityEditor.dll + + + Library\UnityAssemblies\Mono.Cecil.dll + + + Library\UnityAssemblies\UnityEditor.iOS.Extensions.Xcode.dll + + + + + + + + + + + + + + + + + + + + + diff --git a/Roguelike/Roguelike.sln b/Roguelike/Roguelike.sln new file mode 100644 index 00000000..297f4b33 --- /dev/null +++ b/Roguelike/Roguelike.sln @@ -0,0 +1,26 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2015 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Roguelike.CSharp", "Roguelike.CSharp.csproj", "{3DFE4C14-E1E8-D3F3-25DE-8BBE8DEFCFD5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Roguelike.CSharp.Editor", "Roguelike.CSharp.Editor.csproj", "{CAED324B-6229-B97C-3095-98CF546CD4B6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3DFE4C14-E1E8-D3F3-25DE-8BBE8DEFCFD5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3DFE4C14-E1E8-D3F3-25DE-8BBE8DEFCFD5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3DFE4C14-E1E8-D3F3-25DE-8BBE8DEFCFD5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3DFE4C14-E1E8-D3F3-25DE-8BBE8DEFCFD5}.Release|Any CPU.Build.0 = Release|Any CPU + {CAED324B-6229-B97C-3095-98CF546CD4B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CAED324B-6229-B97C-3095-98CF546CD4B6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CAED324B-6229-B97C-3095-98CF546CD4B6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CAED324B-6229-B97C-3095-98CF546CD4B6}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/gitignore/.gitignore b/gitignore/.gitignore new file mode 100644 index 00000000..1ceb14da --- /dev/null +++ b/gitignore/.gitignore @@ -0,0 +1,22 @@ + +Library/ +Temp/ + +*.csproj +*.sln +*.suo +*.userprefs +*.unityproj +*.meta +*.pidb +*.user +*.booproj +*.svd + +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db \ No newline at end of file diff --git a/z_Misc_Docs/UI/JazzZombieTagScript.cs b/z_Misc_Docs/UI/JazzZombieTagScript.cs new file mode 100644 index 00000000..0525fe94 --- /dev/null +++ b/z_Misc_Docs/UI/JazzZombieTagScript.cs @@ -0,0 +1,15 @@ +using UnityEngine; +using System.Collections; + +public class JazzZombieTagScript : MonoBehaviour { + + // Use this for initialization + void Start () { + + } + + // Update is called once per frame + void Update () { + + } +} diff --git a/z_Misc_Docs/UI/JazzZombieTagScript.cs.meta b/z_Misc_Docs/UI/JazzZombieTagScript.cs.meta new file mode 100644 index 00000000..b3e1c291 --- /dev/null +++ b/z_Misc_Docs/UI/JazzZombieTagScript.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 829bdb58e6c75e747bcec603be63f705 +timeCreated: 1447199543 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/z_Misc_Docs/UI/MainMenu.cs b/z_Misc_Docs/UI/MainMenu.cs new file mode 100644 index 00000000..c90c2dac --- /dev/null +++ b/z_Misc_Docs/UI/MainMenu.cs @@ -0,0 +1,23 @@ +using UnityEngine; +using System.Collections; + +public class MainMenu : MonoBehaviour { + + // Use this for initialization + void Start () { + + } + + // Update is called once per frame + void Update () { + + } + + public void LoadGame(){ + Application.LoadLevel("Level1"); + } + + public void Quit(){ + Application.Quit(); + } +} diff --git a/z_Misc_Docs/UI/MainMenu.cs.meta b/z_Misc_Docs/UI/MainMenu.cs.meta new file mode 100644 index 00000000..a8966f01 --- /dev/null +++ b/z_Misc_Docs/UI/MainMenu.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3bb7d136991c4b84f8cbd34ac3625b71 +timeCreated: 1447197313 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/z_Misc_Docs/UI/MetalZombieTagScript.cs b/z_Misc_Docs/UI/MetalZombieTagScript.cs new file mode 100644 index 00000000..28647552 --- /dev/null +++ b/z_Misc_Docs/UI/MetalZombieTagScript.cs @@ -0,0 +1,15 @@ +using UnityEngine; +using System.Collections; + +public class MetalZombieTagScript : MonoBehaviour { + + // Use this for initialization + void Start () { + + } + + // Update is called once per frame + void Update () { + + } +} diff --git a/z_Misc_Docs/UI/MetalZombieTagScript.cs.meta b/z_Misc_Docs/UI/MetalZombieTagScript.cs.meta new file mode 100644 index 00000000..d560f0a9 --- /dev/null +++ b/z_Misc_Docs/UI/MetalZombieTagScript.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f81307d54116089408411b74b00e9a29 +timeCreated: 1447199556 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/z_Misc_Docs/UI/UI_Tooltip.cs b/z_Misc_Docs/UI/UI_Tooltip.cs new file mode 100644 index 00000000..1084f6e6 --- /dev/null +++ b/z_Misc_Docs/UI/UI_Tooltip.cs @@ -0,0 +1,77 @@ +using UnityEngine; +using System.Collections; +using UnityEngine.UI; + +public class UI_Tooltip : MonoBehaviour { + + + public GameObject mouseTarget; + + public static string updateField; + Text updates; + + //private MetalZombieTagScript metalZombieTagScript; + //private JazzZombieTagScript jazzZombieTagScript; + + public GameObject jazzZombie; + public GameObject metalZombie; + + // Awake---------------------------------------------------------- + void Awake () + { + //metalZombieTagScript = GetComponent(); + //jazzZombieTagScript = mouseTarget.GetComponent(); + updates = GetComponent(); + + + } + + //start ===================================================================== + void Start() + { + updateField = "..."; + } + + // Update-------------------------------------------------------------- + void Update () + { + Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); + + RaycastHit hit; + + //if (Physics.Raycast(ray, out hit)) + //{ + // if (hit.collider.gameObject.name == "JazzZombie") + + // { + // Debug.Log("Jazz, bitch!"); + // } + //} + //if (Physics.Raycast(ray, out hit)) + //{ + // if (hit.collider.gameObject.name == "MetalZombie") + + // { + // Debug.Log("Metal, mate!"); + // } + //} + if (Physics.Raycast(ray, out hit)) + { + if (hit.collider.gameObject.GetComponent("JazzZombieTagScript") == true) + { + updateField = "I like Jazz!"; + } + } + if (Physics.Raycast(ray, out hit)) + { + if (hit.collider.gameObject.GetComponent("MetalZombieTagScript") == true) + { + updateField = "I like Metal!"; + } + } + + //Text Updates------------------------- + updates.text = updateField; + + } +} diff --git a/z_Misc_Docs/UI/UI_Tooltip.cs.meta b/z_Misc_Docs/UI/UI_Tooltip.cs.meta new file mode 100644 index 00000000..9d2fd977 --- /dev/null +++ b/z_Misc_Docs/UI/UI_Tooltip.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 79c68b25dfa74d745aa9cdefebe25049 +timeCreated: 1447198150 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: + - jazzZombie: {fileID: 146796, guid: bf60eaeb030dcbe46a722bf9764c0fe3, type: 2} + - metalZombie: {fileID: 136540, guid: ffa82bb3f0a2fbc4abd3584cfdbe89f5, type: 2} + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/z_Misc_Docs/UI/ZombieNotificationScripts.meta b/z_Misc_Docs/UI/ZombieNotificationScripts.meta new file mode 100644 index 00000000..a8d92a8e --- /dev/null +++ b/z_Misc_Docs/UI/ZombieNotificationScripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4367c5a522b7fd4479749ee2496b6eb4 +folderAsset: yes +timeCreated: 1447199529 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: