Demo Hotfixes

Replaced Unity TAA with PlayDead TAA
Custom keyboard layout test scene
Adjusted Aetheric Drive VFX to be more subtle
Reworked stardust VFX to reduce flickering artifacts
Added Action Bar & weapon groups saving/loading
Implemented security levels and faction safe zone visualization
Improved station placement (now include defensive turrets)
This commit is contained in:
Reinier Vens 2021-05-02 20:59:45 +01:00
commit 2c4520000b
128 changed files with 12821 additions and 561 deletions

View file

@ -27,7 +27,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>Temp\Bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;UNITY_2020_3_2;UNITY_2020_3;UNITY_2020;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_2020_1_OR_NEWER;UNITY_2020_2_OR_NEWER;UNITY_2020_3_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;USE_SEARCH_ENGINE_API;SCENE_TEMPLATE_MODULE;ENABLE_AR;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_EVENT_QUEUE;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_VIRTUALTEXTURING;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;ENABLE_MONO_BDWGC;ENABLE_SCRIPTING_GC_WBARRIERS;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_VIDEO;PLATFORM_STANDALONE;PLATFORM_STANDALONE_WIN;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;PLATFORM_UPDATES_TIME_OUTSIDE_OF_PLAYER_LOOP;GFXDEVICE_WAITFOREVENT_MESSAGEPUMP;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_INPUT_SYSTEM;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;SUBSTANCE_PLUGIN_ENABLED;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER</DefineConstants>
<DefineConstants>DEBUG;TRACE;UNITY_2020_3_2;UNITY_2020_3;UNITY_2020;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_2020_1_OR_NEWER;UNITY_2020_2_OR_NEWER;UNITY_2020_3_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;USE_SEARCH_ENGINE_API;SCENE_TEMPLATE_MODULE;ENABLE_AR;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_EVENT_QUEUE;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_VIRTUALTEXTURING;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;ENABLE_MONO_BDWGC;ENABLE_SCRIPTING_GC_WBARRIERS;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_VIDEO;PLATFORM_STANDALONE;PLATFORM_STANDALONE_WIN;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;PLATFORM_UPDATES_TIME_OUTSIDE_OF_PLAYER_LOOP;GFXDEVICE_WAITFOREVENT_MESSAGEPUMP;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_INPUT_SYSTEM;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;SUBSTANCE_PLUGIN_ENABLED;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER;DEVELOPMENT_BUILD</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<NoWarn></NoWarn>

View file

@ -27,7 +27,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>Temp\Bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;UNITY_2020_3_2;UNITY_2020_3;UNITY_2020;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_2020_1_OR_NEWER;UNITY_2020_2_OR_NEWER;UNITY_2020_3_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;USE_SEARCH_ENGINE_API;SCENE_TEMPLATE_MODULE;ENABLE_AR;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_EVENT_QUEUE;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_VIRTUALTEXTURING;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;ENABLE_MONO_BDWGC;ENABLE_SCRIPTING_GC_WBARRIERS;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_VIDEO;PLATFORM_STANDALONE;PLATFORM_STANDALONE_WIN;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;PLATFORM_UPDATES_TIME_OUTSIDE_OF_PLAYER_LOOP;GFXDEVICE_WAITFOREVENT_MESSAGEPUMP;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_INPUT_SYSTEM;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;SUBSTANCE_PLUGIN_ENABLED;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER</DefineConstants>
<DefineConstants>DEBUG;TRACE;UNITY_2020_3_2;UNITY_2020_3;UNITY_2020;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_2020_1_OR_NEWER;UNITY_2020_2_OR_NEWER;UNITY_2020_3_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;USE_SEARCH_ENGINE_API;SCENE_TEMPLATE_MODULE;ENABLE_AR;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_EVENT_QUEUE;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_VIRTUALTEXTURING;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;ENABLE_MONO_BDWGC;ENABLE_SCRIPTING_GC_WBARRIERS;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_VIDEO;PLATFORM_STANDALONE;PLATFORM_STANDALONE_WIN;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;PLATFORM_UPDATES_TIME_OUTSIDE_OF_PLAYER_LOOP;GFXDEVICE_WAITFOREVENT_MESSAGEPUMP;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_INPUT_SYSTEM;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;SUBSTANCE_PLUGIN_ENABLED;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER;DEVELOPMENT_BUILD</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<NoWarn></NoWarn>

View file

@ -27,7 +27,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>Temp\Bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;UNITY_2020_3_2;UNITY_2020_3;UNITY_2020;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_2020_1_OR_NEWER;UNITY_2020_2_OR_NEWER;UNITY_2020_3_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;USE_SEARCH_ENGINE_API;SCENE_TEMPLATE_MODULE;ENABLE_AR;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_EVENT_QUEUE;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_VIRTUALTEXTURING;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;ENABLE_MONO_BDWGC;ENABLE_SCRIPTING_GC_WBARRIERS;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_VIDEO;PLATFORM_STANDALONE;PLATFORM_STANDALONE_WIN;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;PLATFORM_UPDATES_TIME_OUTSIDE_OF_PLAYER_LOOP;GFXDEVICE_WAITFOREVENT_MESSAGEPUMP;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_INPUT_SYSTEM;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;SUBSTANCE_PLUGIN_ENABLED;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER</DefineConstants>
<DefineConstants>DEBUG;TRACE;UNITY_2020_3_2;UNITY_2020_3;UNITY_2020;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_2020_1_OR_NEWER;UNITY_2020_2_OR_NEWER;UNITY_2020_3_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;USE_SEARCH_ENGINE_API;SCENE_TEMPLATE_MODULE;ENABLE_AR;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_EVENT_QUEUE;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_VIRTUALTEXTURING;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;ENABLE_MONO_BDWGC;ENABLE_SCRIPTING_GC_WBARRIERS;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_VIDEO;PLATFORM_STANDALONE;PLATFORM_STANDALONE_WIN;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;PLATFORM_UPDATES_TIME_OUTSIDE_OF_PLAYER_LOOP;GFXDEVICE_WAITFOREVENT_MESSAGEPUMP;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_INPUT_SYSTEM;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;SUBSTANCE_PLUGIN_ENABLED;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER;DEVELOPMENT_BUILD</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<NoWarn></NoWarn>

View file

@ -27,7 +27,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>Temp\Bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;UNITY_2020_3_2;UNITY_2020_3;UNITY_2020;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_2020_1_OR_NEWER;UNITY_2020_2_OR_NEWER;UNITY_2020_3_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;USE_SEARCH_ENGINE_API;SCENE_TEMPLATE_MODULE;ENABLE_AR;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_EVENT_QUEUE;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_VIRTUALTEXTURING;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;ENABLE_MONO_BDWGC;ENABLE_SCRIPTING_GC_WBARRIERS;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_VIDEO;PLATFORM_STANDALONE;PLATFORM_STANDALONE_WIN;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;PLATFORM_UPDATES_TIME_OUTSIDE_OF_PLAYER_LOOP;GFXDEVICE_WAITFOREVENT_MESSAGEPUMP;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_INPUT_SYSTEM;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;SUBSTANCE_PLUGIN_ENABLED;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER</DefineConstants>
<DefineConstants>DEBUG;TRACE;UNITY_2020_3_2;UNITY_2020_3;UNITY_2020;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_2020_1_OR_NEWER;UNITY_2020_2_OR_NEWER;UNITY_2020_3_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;USE_SEARCH_ENGINE_API;SCENE_TEMPLATE_MODULE;ENABLE_AR;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_EVENT_QUEUE;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_VIRTUALTEXTURING;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;ENABLE_MONO_BDWGC;ENABLE_SCRIPTING_GC_WBARRIERS;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_VIDEO;PLATFORM_STANDALONE;PLATFORM_STANDALONE_WIN;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;PLATFORM_UPDATES_TIME_OUTSIDE_OF_PLAYER_LOOP;GFXDEVICE_WAITFOREVENT_MESSAGEPUMP;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_INPUT_SYSTEM;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;SUBSTANCE_PLUGIN_ENABLED;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER;DEVELOPMENT_BUILD</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<NoWarn></NoWarn>

View file

@ -27,7 +27,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>Temp\Bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;UNITY_2020_3_2;UNITY_2020_3;UNITY_2020;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_2020_1_OR_NEWER;UNITY_2020_2_OR_NEWER;UNITY_2020_3_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;USE_SEARCH_ENGINE_API;SCENE_TEMPLATE_MODULE;ENABLE_AR;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_EVENT_QUEUE;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_VIRTUALTEXTURING;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;ENABLE_MONO_BDWGC;ENABLE_SCRIPTING_GC_WBARRIERS;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_VIDEO;PLATFORM_STANDALONE;PLATFORM_STANDALONE_WIN;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;PLATFORM_UPDATES_TIME_OUTSIDE_OF_PLAYER_LOOP;GFXDEVICE_WAITFOREVENT_MESSAGEPUMP;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_INPUT_SYSTEM;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;SUBSTANCE_PLUGIN_ENABLED;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER</DefineConstants>
<DefineConstants>DEBUG;TRACE;UNITY_2020_3_2;UNITY_2020_3;UNITY_2020;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_2020_1_OR_NEWER;UNITY_2020_2_OR_NEWER;UNITY_2020_3_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;USE_SEARCH_ENGINE_API;SCENE_TEMPLATE_MODULE;ENABLE_AR;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_EVENT_QUEUE;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_VIRTUALTEXTURING;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;ENABLE_MONO_BDWGC;ENABLE_SCRIPTING_GC_WBARRIERS;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_VIDEO;PLATFORM_STANDALONE;PLATFORM_STANDALONE_WIN;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;PLATFORM_UPDATES_TIME_OUTSIDE_OF_PLAYER_LOOP;GFXDEVICE_WAITFOREVENT_MESSAGEPUMP;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_INPUT_SYSTEM;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;SUBSTANCE_PLUGIN_ENABLED;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER;DEVELOPMENT_BUILD</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<NoWarn></NoWarn>

View file

@ -27,7 +27,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>Temp\Bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;UNITY_2020_3_2;UNITY_2020_3;UNITY_2020;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_2020_1_OR_NEWER;UNITY_2020_2_OR_NEWER;UNITY_2020_3_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;USE_SEARCH_ENGINE_API;SCENE_TEMPLATE_MODULE;ENABLE_AR;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_EVENT_QUEUE;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_VIRTUALTEXTURING;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;ENABLE_MONO_BDWGC;ENABLE_SCRIPTING_GC_WBARRIERS;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_VIDEO;PLATFORM_STANDALONE;PLATFORM_STANDALONE_WIN;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;PLATFORM_UPDATES_TIME_OUTSIDE_OF_PLAYER_LOOP;GFXDEVICE_WAITFOREVENT_MESSAGEPUMP;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_INPUT_SYSTEM;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;SUBSTANCE_PLUGIN_ENABLED;AK_ENABLE_TIMELINE;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER</DefineConstants>
<DefineConstants>DEBUG;TRACE;UNITY_2020_3_2;UNITY_2020_3;UNITY_2020;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_2020_1_OR_NEWER;UNITY_2020_2_OR_NEWER;UNITY_2020_3_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;USE_SEARCH_ENGINE_API;SCENE_TEMPLATE_MODULE;ENABLE_AR;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_EVENT_QUEUE;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_VIRTUALTEXTURING;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;ENABLE_MONO_BDWGC;ENABLE_SCRIPTING_GC_WBARRIERS;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_VIDEO;PLATFORM_STANDALONE;PLATFORM_STANDALONE_WIN;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;PLATFORM_UPDATES_TIME_OUTSIDE_OF_PLAYER_LOOP;GFXDEVICE_WAITFOREVENT_MESSAGEPUMP;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_INPUT_SYSTEM;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;SUBSTANCE_PLUGIN_ENABLED;AK_ENABLE_TIMELINE;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER;DEVELOPMENT_BUILD</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<NoWarn></NoWarn>

View file

@ -27,7 +27,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>Temp\Bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;UNITY_2020_3_2;UNITY_2020_3;UNITY_2020;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_2020_1_OR_NEWER;UNITY_2020_2_OR_NEWER;UNITY_2020_3_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;USE_SEARCH_ENGINE_API;SCENE_TEMPLATE_MODULE;ENABLE_AR;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_EVENT_QUEUE;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_VIRTUALTEXTURING;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;ENABLE_MONO_BDWGC;ENABLE_SCRIPTING_GC_WBARRIERS;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_VIDEO;PLATFORM_STANDALONE;PLATFORM_STANDALONE_WIN;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;PLATFORM_UPDATES_TIME_OUTSIDE_OF_PLAYER_LOOP;GFXDEVICE_WAITFOREVENT_MESSAGEPUMP;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_INPUT_SYSTEM;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;SUBSTANCE_PLUGIN_ENABLED;AK_ENABLE_TIMELINE;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER</DefineConstants>
<DefineConstants>DEBUG;TRACE;UNITY_2020_3_2;UNITY_2020_3;UNITY_2020;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_2020_1_OR_NEWER;UNITY_2020_2_OR_NEWER;UNITY_2020_3_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;USE_SEARCH_ENGINE_API;SCENE_TEMPLATE_MODULE;ENABLE_AR;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_EVENT_QUEUE;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_VIRTUALTEXTURING;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;ENABLE_MONO_BDWGC;ENABLE_SCRIPTING_GC_WBARRIERS;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_VIDEO;PLATFORM_STANDALONE;PLATFORM_STANDALONE_WIN;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;PLATFORM_UPDATES_TIME_OUTSIDE_OF_PLAYER_LOOP;GFXDEVICE_WAITFOREVENT_MESSAGEPUMP;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_INPUT_SYSTEM;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;SUBSTANCE_PLUGIN_ENABLED;AK_ENABLE_TIMELINE;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER;DEVELOPMENT_BUILD</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<NoWarn></NoWarn>

View file

@ -21,26 +21,26 @@
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Interactive Music Hierarchy\Overworld.wwu" DateLow="1619672610" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Interactive Music Hierarchy\Menu_Music.wwu" DateLow="1619672610" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Interactive Music Hierarchy\Default Work Unit.wwu" DateLow="1619652116" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Interactive Music Hierarchy\Combat.wwu" DateLow="1619672610" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Interactive Music Hierarchy\Combat.wwu" DateLow="1619807524" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Interactive Music Hierarchy\Boss.wwu" DateLow="1619672610" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Game Parameters\SFX.wwu" DateLow="1619672610" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Game Parameters\Default Work Unit.wwu" DateLow="1619652115" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Events\SFX.wwu" DateLow="1619769257" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Events\SFX.wwu" DateLow="1619766556" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Events\Music.wwu" DateLow="1619679460" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Events\Default Work Unit.wwu" DateLow="1619679460" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Events\Ambience.wwu" DateLow="1619672812" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Effects\Factory Effects.wwu" DateLow="1619672816" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Effects\Default Work Unit.wwu" DateLow="1619769078" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Effects\Default Work Unit.wwu" DateLow="1619765272" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Dynamic Dialogue\Default Work Unit.wwu" DateLow="1619652116" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Conversion Settings\Factory Conversion Settings.wwu" DateLow="1619672900" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Conversion Settings\Default Work Unit.wwu" DateLow="1619652116" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Control Surface Sessions\Default Work Unit.wwu" DateLow="1619652116" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Audio Devices\Default Work Unit.wwu" DateLow="1619652115" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Attenuations\Default Work Unit.wwu" DateLow="1619769078" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Attenuations\Default Work Unit.wwu" DateLow="1619672610" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Aetheria-Economy_WwiseProject.wproj" DateLow="1619761573" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Aetheria-Economy_WwiseProject.rwvens.wsettings" DateLow="1619766556" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Actor-Mixer Hierarchy\UI.wwu" DateLow="1619672610" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Actor-Mixer Hierarchy\SFX.wwu" DateLow="1619769078" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Actor-Mixer Hierarchy\SFX.wwu" DateLow="1619766556" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Actor-Mixer Hierarchy\Default Work Unit.wwu" DateLow="1619672898" DateHigh="0"/>
<ValidationCacheItem File="E:\Projects\Aetheria-Economy\Aetheria-Economy_WwiseProject\Actor-Mixer Hierarchy\Ambience AM Unit.wwu" DateLow="1619672812" DateHigh="0"/>
</ValidationCache>

View file

@ -133,7 +133,13 @@
<Property Name="MonitoringManager\GameObjectFilter\GameObjectFilterVersion" Type="int32" Value="1"/>
<Property Name="MonitoringManager\GameObjectFilter\GameObjectFiltersEnable" Type="bool" Value="True"/>
<Property Name="MonitoringManager\GameObjectFilter\x64_GameObjectFilters" Type="string" Value=""/>
<Property Name="Music Transition List\{049E3E09-0B7D-43E8-959B-B7D3490BA9FF}\x64_Expand States" Type="string" Value=""/>
<Property Name="Music Transition List\{52FD8D73-17FB-445D-A484-9FA4BA1B8CF2}\x64_Expand States" Type="string" Value=""/>
<Property Name="Music Transition List\{6417DAE3-2CE0-4409-9D8B-AD00F5BD2B20}\x64_Expand States" Type="string" Value=""/>
<Property Name="Music Transition List\{7941F6A9-6948-41DA-8B46-8A33499165EB}\x64_Expand States" Type="string" Value=""/>
<Property Name="Music Transition List\{965684F1-9F1B-4517-B1A1-BE20AB8F937A}\x64_Expand States" Type="string" Value=""/>
<Property Name="Music Transition List\{A63A6F6B-5A29-43FE-815C-1CE54D8891E4}\x64_Expand States" Type="string" Value=""/>
<Property Name="Music Transition List\{C6B1FBBE-AA88-4FD8-9CFA-0CA4BB81701E}\x64_Expand States" Type="string" Value=""/>
<Property Name="Music Transition List\{EE7EB190-D721-4534-9D41-AEF918FBC7D0}\x64_Expand States" Type="string" Value=""/>
<Property Name="OverrideCacheFolder\Active" Type="bool" Value="False"/>
<Property Name="OverrideCacheFolder\Path" Type="string" Value=".cache"/>

View file

@ -126,6 +126,9 @@
<ObjectLists/>
<Playlist>
<MusicPlaylistItem Name="" ID="{AB33CF31-1C67-4483-BA8B-78603B9CC4B7}" ShortID="1042679147">
<PropertyList>
<Property Name="LoopCount" Type="int16" Value="0"/>
</PropertyList>
<ChildrenList>
<MusicPlaylistItem Name="" ID="{FD8186D6-1C36-4DF1-B13F-9E581C0FA0C0}" ShortID="845067479">
<PropertyList>

View file

@ -127,6 +127,9 @@
<ObjectLists/>
<Playlist>
<MusicPlaylistItem Name="" ID="{B4C41D28-70E3-4666-BE24-EA67A1D2FAA4}" ShortID="70896191">
<PropertyList>
<Property Name="LoopCount" Type="int16" Value="0"/>
</PropertyList>
<ChildrenList>
<MusicPlaylistItem Name="" ID="{88A86E5A-A33A-4ECE-8FB8-94E8548C899C}" ShortID="926510559">
<PropertyList>
@ -263,6 +266,9 @@
<ObjectLists/>
<Playlist>
<MusicPlaylistItem Name="" ID="{F68CEE96-BFC2-473E-A458-DB293F8D3529}" ShortID="30983012">
<PropertyList>
<Property Name="LoopCount" Type="int16" Value="0"/>
</PropertyList>
<ChildrenList>
<MusicPlaylistItem Name="" ID="{62CBA784-6D63-4FBD-BFB5-D970D54C90F9}" ShortID="705207771">
<PropertyList>

View file

@ -130,6 +130,9 @@
<ObjectLists/>
<Playlist>
<MusicPlaylistItem Name="" ID="{882F231E-A9BB-4C90-B586-CA66026E1358}" ShortID="235781223">
<PropertyList>
<Property Name="LoopCount" Type="int16" Value="0"/>
</PropertyList>
<ChildrenList>
<MusicPlaylistItem Name="" ID="{0D23C859-1700-4468-AA10-ECFD8140F005}" ShortID="684533752">
<PropertyList>
@ -262,6 +265,9 @@
<ObjectLists/>
<Playlist>
<MusicPlaylistItem Name="" ID="{C98A423B-4402-446C-81BD-77306CD02B88}" ShortID="164673923">
<PropertyList>
<Property Name="LoopCount" Type="int16" Value="0"/>
</PropertyList>
<ChildrenList>
<MusicPlaylistItem Name="" ID="{C1919745-9E3C-4DB0-8024-3474B337DB1E}" ShortID="924149987">
<PropertyList>
@ -394,6 +400,9 @@
<ObjectLists/>
<Playlist>
<MusicPlaylistItem Name="" ID="{54EFAA41-F550-4B7B-B34E-AA83DA014D17}" ShortID="470153105">
<PropertyList>
<Property Name="LoopCount" Type="int16" Value="0"/>
</PropertyList>
<ChildrenList>
<MusicPlaylistItem Name="" ID="{13C80B06-9EEF-457D-80FE-49AC86AC05A8}" ShortID="560594703">
<PropertyList>

View file

@ -27,7 +27,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>Temp\Bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;UNITY_2020_3_2;UNITY_2020_3;UNITY_2020;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_2020_1_OR_NEWER;UNITY_2020_2_OR_NEWER;UNITY_2020_3_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;USE_SEARCH_ENGINE_API;SCENE_TEMPLATE_MODULE;ENABLE_AR;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_EVENT_QUEUE;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_VIRTUALTEXTURING;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;ENABLE_MONO_BDWGC;ENABLE_SCRIPTING_GC_WBARRIERS;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_VIDEO;PLATFORM_STANDALONE;PLATFORM_STANDALONE_WIN;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;PLATFORM_UPDATES_TIME_OUTSIDE_OF_PLAYER_LOOP;GFXDEVICE_WAITFOREVENT_MESSAGEPUMP;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_INPUT_SYSTEM;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;SUBSTANCE_PLUGIN_ENABLED;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER</DefineConstants>
<DefineConstants>DEBUG;TRACE;UNITY_2020_3_2;UNITY_2020_3;UNITY_2020;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_2020_1_OR_NEWER;UNITY_2020_2_OR_NEWER;UNITY_2020_3_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;USE_SEARCH_ENGINE_API;SCENE_TEMPLATE_MODULE;ENABLE_AR;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_EVENT_QUEUE;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_VIRTUALTEXTURING;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;ENABLE_MONO_BDWGC;ENABLE_SCRIPTING_GC_WBARRIERS;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_VIDEO;PLATFORM_STANDALONE;PLATFORM_STANDALONE_WIN;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;PLATFORM_UPDATES_TIME_OUTSIDE_OF_PLAYER_LOOP;GFXDEVICE_WAITFOREVENT_MESSAGEPUMP;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_INPUT_SYSTEM;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;SUBSTANCE_PLUGIN_ENABLED;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER;DEVELOPMENT_BUILD</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<NoWarn></NoWarn>

View file

@ -27,7 +27,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>Temp\Bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;UNITY_2020_3_2;UNITY_2020_3;UNITY_2020;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_2020_1_OR_NEWER;UNITY_2020_2_OR_NEWER;UNITY_2020_3_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;USE_SEARCH_ENGINE_API;SCENE_TEMPLATE_MODULE;ENABLE_AR;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_EVENT_QUEUE;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_VIRTUALTEXTURING;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;ENABLE_MONO_BDWGC;ENABLE_SCRIPTING_GC_WBARRIERS;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_VIDEO;PLATFORM_STANDALONE;PLATFORM_STANDALONE_WIN;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;PLATFORM_UPDATES_TIME_OUTSIDE_OF_PLAYER_LOOP;GFXDEVICE_WAITFOREVENT_MESSAGEPUMP;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_INPUT_SYSTEM;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;SUBSTANCE_PLUGIN_ENABLED;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER</DefineConstants>
<DefineConstants>DEBUG;TRACE;UNITY_2020_3_2;UNITY_2020_3;UNITY_2020;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_2020_1_OR_NEWER;UNITY_2020_2_OR_NEWER;UNITY_2020_3_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;USE_SEARCH_ENGINE_API;SCENE_TEMPLATE_MODULE;ENABLE_AR;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_EVENT_QUEUE;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_VIRTUALTEXTURING;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;ENABLE_MONO_BDWGC;ENABLE_SCRIPTING_GC_WBARRIERS;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_VIDEO;PLATFORM_STANDALONE;PLATFORM_STANDALONE_WIN;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;PLATFORM_UPDATES_TIME_OUTSIDE_OF_PLAYER_LOOP;GFXDEVICE_WAITFOREVENT_MESSAGEPUMP;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_INPUT_SYSTEM;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;SUBSTANCE_PLUGIN_ENABLED;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER;DEVELOPMENT_BUILD</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<NoWarn></NoWarn>

14
Assets/InputDisplayKey.cs Normal file
View file

@ -0,0 +1,14 @@
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class InputDisplayKey : MonoBehaviour
{
public TextMeshProUGUI First;
public TextMeshProUGUI Second;
public Image Fill;
public Image Outline;
public LayoutElement LayoutElement;
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e0aa077d998d3a249aefd2ed70f4d099
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,111 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using UnityEngine;
using UnityEngine.UI;
public class InputDisplayLayout : MonoBehaviour
{
public TextAsset LayoutFile;
public Prototype RowPrototype;
public Prototype RowSpacerPrototype;
public int KeySize = 64;
void Start()
{
var nextWidth = 1f;
var nextHeight = 1f;
var reader = new JsonTextReader(new StringReader(LayoutFile.text));
reader.Read();
if (reader.TokenType != JsonToken.StartArray)
{
Debug.Log($"Unexpected JSON format in line {reader.LineNumber}:{reader.LinePosition}");
return;
}
while(reader.Read() && reader.TokenType != JsonToken.EndArray)
{
if (reader.TokenType != JsonToken.StartArray)
{
Debug.Log($"Unexpected JSON format in line {reader.LineNumber}:{reader.LinePosition}");
return;
}
var row = RowPrototype.Instantiate<InputDisplayRow>();
while (reader.Read() && reader.TokenType != JsonToken.EndArray)
{
switch (reader.TokenType)
{
case JsonToken.StartObject:
while(reader.Read() && reader.TokenType != JsonToken.EndObject)
{
switch (reader.Value.ToString())
{
case "a": break;
case "w":
nextWidth = (float) (reader.ReadAsDouble() ?? 1.0);
break;
case "h":
nextHeight = (float) (reader.ReadAsDouble() ?? 1.0);
break;
case "y":
RowSpacerPrototype.Instantiate<LayoutElement>().preferredHeight = KeySize * (float) (reader.ReadAsDouble() ?? 0.0);
row.transform.SetAsLastSibling();
break;
case "x":
row.KeySpacerPrototype.Instantiate<LayoutElement>().preferredWidth = KeySize * (float) (reader.ReadAsDouble() ?? 0.0);
break;
}
}
break;
case JsonToken.String:
var key = row.KeyPrototype.Instantiate<InputDisplayKey>();
var v = reader.Value.ToString().Trim();
if (!string.IsNullOrEmpty(v))
{
var labels = v.Split('\n');
if (labels.Length == 2)
{
key.First.text = labels[1];
key.Second.text = labels[0];
}
else
{
key.First.text = v;
key.Second.text = "";
}
}
else
{
key.First.text = "";
key.Second.text = "";
}
key.LayoutElement.preferredHeight = KeySize;
key.LayoutElement.preferredWidth = KeySize * nextWidth;
nextWidth = 1f;
if (Math.Abs(nextHeight - 1f) > .01f)
{
key.Outline.rectTransform.anchorMin =
key.First.rectTransform.anchorMin =
key.Second.rectTransform.anchorMin =
key.Fill.rectTransform.anchorMin = Vector2.down * (nextHeight-1);
}
nextHeight = 1f;
break;
default:
Debug.Log($"Unexpected JSON format in line {reader.LineNumber}:{reader.LinePosition}");
return;
}
}
}
}
void Update()
{
}
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5ac50145a005ca340837d054dc1d03f3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,9 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class InputDisplayRow : MonoBehaviour
{
public Prototype KeyPrototype;
public Prototype KeySpacerPrototype;
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6b0e4442eab42ac4e97e2c69d5c99ebc
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

19
Assets/InputLayout.cs Normal file
View file

@ -0,0 +1,19 @@
using MessagePack;
using Newtonsoft.Json;
public class InputLayout
{
}
[MessagePackObject, JsonObject(MemberSerialization.OptIn)]
public class InputLayoutKey
{
[Key(0), JsonProperty("mainLabel")] public string MainLabel;
[Key(1), JsonProperty("altLabel")] public string AltLabel;
[Key(2), JsonProperty("path")] public string InputSystemPath;
[Key(3), JsonProperty("width")] public float Width;
[Key(4), JsonProperty("height")] public int Height;
}

View file

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 38e9edaa6cec49b19bc6b3f23168fd2d
timeCreated: 1619983485

View file

@ -0,0 +1,78 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Dithered Particle Trail AetherDrive
m_Shader: {fileID: 4800000, guid: 46776b9fa35a437448f683f31b04d68d, type: 3}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 1d6eba2a167939a468c00fda35723dd0, type: 3}
m_Scale: {x: 0, y: 1}
m_Offset: {x: 0.5, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 95.87451, g: 95.87451, b: 95.87451, a: 0.5019608}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 555ada90c0f01654a9387483bd95a688
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,104 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Map Influence
m_Shader: {fileID: 4800000, guid: b54e04e391774a2289f8de9a13045f3d, type: 3}
m_ShaderKeywords: SCREEN_SPACE
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 8400000, guid: 9c4523304810d514b9670f6e6fa71b39, type: 2}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _Blend: 0.2
- _BumpScale: 1
- _ColorMask: 15
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _FillAlpha: 0.4
- _FillBlend: 20
- _FillBorderBlend: 0.05
- _FillTiling: 1024
- _FillTilt: 0.785
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _PatternBlend: 0.25
- _PatternOffset: -0.75
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _Stencil: 0
- _StencilComp: 8
- _StencilOp: 0
- _StencilReadMask: 255
- _StencilWriteMask: 255
- _Stroke: 4
- _StrokeBlend: 0.25
- _StrokeTransitionBlend: 1
- _Threshold: 1
- _UVSec: 0
- _UseScreenSpace: 1
- _UseUIAlphaClip: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _Color1: {r: 0, g: 0, b: 0, a: 1}
- _Color2: {r: 1, g: 0, b: 0, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bb2e981dfdefd024692ad49294e51a23
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,104 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Minimap Influence
m_Shader: {fileID: 4800000, guid: b54e04e391774a2289f8de9a13045f3d, type: 3}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailTex:
m_Texture: {fileID: 8400000, guid: 062a14e7a1633d54babe1abee2d80c8d, type: 2}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 8400000, guid: 9c4523304810d514b9670f6e6fa71b39, type: 2}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _Blend: 0.2
- _BumpScale: 1
- _ColorMask: 15
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _FillAlpha: 0.4
- _FillBlend: 20
- _FillBorderBlend: 0.05
- _FillTiling: 256
- _FillTilt: 0.785
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _PatternBlend: 0.25
- _PatternOffset: -0.75
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _Stencil: 0
- _StencilComp: 8
- _StencilOp: 0
- _StencilReadMask: 255
- _StencilWriteMask: 255
- _Stroke: 4
- _StrokeBlend: 0.25
- _StrokeTransitionBlend: 1
- _Threshold: 1
- _UVSec: 0
- _UseScreenSpace: 0
- _UseUIAlphaClip: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _Color1: {r: 0, g: 0, b: 0, a: 1}
- _Color2: {r: 1, g: 0, b: 0, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f965075cca2ff2943ad339387269e057
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 427395ce555f40649b294dbc76cd84b4
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 84601beb499ecf74f8daebb154302aab
folderAsset: yes
timeCreated: 1457526840
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 7b926f3795cf3f3468014ed343f77d48
timeCreated: 1457528618
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 01b560b381e0b844ab415868c2aab36b
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,63 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!850595691 &4890085278179872738
LightingSettings:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Example2Settings
serializedVersion: 3
m_GIWorkflowMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 1
m_RealtimeEnvironmentLighting: 1
m_BounceScale: 1
m_AlbedoBoost: 1
m_IndirectOutputScale: 1
m_UsingShadowmask: 0
m_BakeBackend: 0
m_LightmapMaxSize: 1024
m_BakeResolution: 40
m_Padding: 2
m_TextureCompression: 1
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 0
m_CompAOExponentDirect: 0
m_ExtractAO: 0
m_MixedBakeMode: 1
m_LightmapsBakeMode: 1
m_FilterMode: 1
m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0}
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_RealtimeResolution: 2
m_ForceWhiteAlbedo: 0
m_ForceUpdates: 0
m_FinalGather: 0
m_FinalGatherRayCount: 1024
m_FinalGatherFiltering: 1
m_PVRCulling: 1
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 500
m_PVREnvironmentSampleCount: 500
m_PVREnvironmentReferencePointCount: 2048
m_LightProbeSampleCountMultiplier: 4
m_PVRBounces: 2
m_PVRMinBounces: 2
m_PVREnvironmentMIS: 0
m_PVRFilteringMode: 0
m_PVRDenoiserTypeDirect: 0
m_PVRDenoiserTypeIndirect: 0
m_PVRDenoiserTypeAO: 0
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 43d0b8710108a7342b2ba1d10fc8206f
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 4890085278179872738
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,63 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!850595691 &4890085278179872738
LightingSettings:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ExampleSettings
serializedVersion: 3
m_GIWorkflowMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 1
m_RealtimeEnvironmentLighting: 1
m_BounceScale: 1
m_AlbedoBoost: 1
m_IndirectOutputScale: 1
m_UsingShadowmask: 0
m_BakeBackend: 0
m_LightmapMaxSize: 1024
m_BakeResolution: 40
m_Padding: 2
m_TextureCompression: 1
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 0
m_CompAOExponentDirect: 0
m_ExtractAO: 0
m_MixedBakeMode: 1
m_LightmapsBakeMode: 1
m_FilterMode: 1
m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0}
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_RealtimeResolution: 2
m_ForceWhiteAlbedo: 0
m_ForceUpdates: 0
m_FinalGather: 0
m_FinalGatherRayCount: 1024
m_FinalGatherFiltering: 1
m_PVRCulling: 1
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 512
m_PVREnvironmentSampleCount: 512
m_PVREnvironmentReferencePointCount: 2048
m_LightProbeSampleCountMultiplier: 4
m_PVRBounces: 2
m_PVRMinBounces: 2
m_PVREnvironmentMIS: 0
m_PVRFilteringMode: 0
m_PVRDenoiserTypeDirect: 0
m_PVRDenoiserTypeIndirect: 0
m_PVRDenoiserTypeAO: 0
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1c55129e293c5ff4b9633c77e1ac6f25
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 4890085278179872738
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: d7fcd113946fe884682affa68d7a9a8a
folderAsset: yes
timeCreated: 1437990609
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,130 @@
// Copyright (c) <2015> <Playdead>
// This file is subject to the MIT License as seen in the root of this folder structure (LICENSE.TXT)
// AUTHOR: Lasse Jon Fuglsang Pedersen <lasse@playdead.com>
using UnityEngine;
public abstract class EffectBase : MonoBehaviour
{
public void EnsureArray<T>(ref T[] array, int size, T initialValue = default(T))
{
if (array == null || array.Length != size)
{
array = new T[size];
for (int i = 0; i != size; i++)
array[i] = initialValue;
}
}
public void EnsureArray<T>(ref T[,] array, int size0, int size1, T defaultValue = default(T))
{
if (array == null || array.Length != size0 * size1)
{
array = new T[size0, size1];
for (int i = 0; i != size0; i++)
{
for (int j = 0; j != size1; j++)
array[i, j] = defaultValue;
}
}
}
public void EnsureMaterial(ref Material material, Shader shader)
{
if (shader != null)
{
if (material == null || material.shader != shader)
material = new Material(shader);
if (material != null)
material.hideFlags = HideFlags.DontSave;
}
else
{
Debug.LogWarning("missing shader", this);
}
}
public void EnsureDepthTexture(Camera camera)
{
if ((camera.depthTextureMode & DepthTextureMode.Depth) == 0)
camera.depthTextureMode |= DepthTextureMode.Depth;
}
public void EnsureKeyword(Material material, string name, bool enabled)
{
if (enabled != material.IsKeywordEnabled(name))
{
if (enabled)
material.EnableKeyword(name);
else
material.DisableKeyword(name);
}
}
public bool EnsureRenderTarget(ref RenderTexture rt, int width, int height, RenderTextureFormat format, FilterMode filterMode, int depthBits = 0, int antiAliasing = 1)
{
if (rt != null && (rt.width != width || rt.height != height || rt.format != format || rt.filterMode != filterMode || rt.antiAliasing != antiAliasing))
{
RenderTexture.ReleaseTemporary(rt);
rt = null;
}
if (rt == null)
{
rt = RenderTexture.GetTemporary(width, height, depthBits, format, RenderTextureReadWrite.Default, antiAliasing);
rt.filterMode = filterMode;
rt.wrapMode = TextureWrapMode.Clamp;
return true;// new target
}
return false;// same target
}
public void ReleaseRenderTarget(ref RenderTexture rt)
{
if (rt != null)
{
RenderTexture.ReleaseTemporary(rt);
rt = null;
}
}
public void DrawFullscreenQuad()
{
GL.PushMatrix();
GL.LoadOrtho();
GL.Begin(GL.QUADS);
{
GL.MultiTexCoord2(0, 0.0f, 0.0f);
GL.Vertex3(0.0f, 0.0f, 0.0f); // BL
GL.MultiTexCoord2(0, 1.0f, 0.0f);
GL.Vertex3(1.0f, 0.0f, 0.0f); // BR
GL.MultiTexCoord2(0, 1.0f, 1.0f);
GL.Vertex3(1.0f, 1.0f, 0.0f); // TR
GL.MultiTexCoord2(0, 0.0f, 1.0f);
GL.Vertex3(0.0f, 1.0f, 0.0f); // TL
}
GL.End();
GL.PopMatrix();
}
public void DrawFullscreenTri()
{
GL.PushMatrix();
GL.LoadOrtho();
GL.Begin(GL.TRIANGLES);
{
GL.MultiTexCoord2(0, 0.0f, 0.0f);
GL.Vertex3(0.0f, 0.0f, 0.0f);
GL.MultiTexCoord2(0, 2.0f, 0.0f);
GL.Vertex3(2.0f, 0.0f, 0.0f);
GL.MultiTexCoord2(0, 0.0f, 2.0f);
GL.Vertex3(0.0f, 2.0f, 0.0f);
}
GL.End();
GL.PopMatrix();
}
}

View file

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 4e5bbb5f788c9d84d8173556caa0b920
timeCreated: 1438002115
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,172 @@
// Copyright (c) <2015> <Playdead>
// This file is subject to the MIT License as seen in the root of this folder structure (LICENSE.TXT)
// AUTHOR: Lasse Jon Fuglsang Pedersen <lasse@playdead.com>
#if UNITY_5_5_OR_NEWER
#define SUPPORT_STEREO
#endif
using UnityEngine;
public static class Vector2Extension
{
// positive if v2 is on the left side of v1
public static float SignedAngle(this Vector2 v1, Vector2 v2)
{
Vector2 n1 = v1.normalized;
Vector2 n2 = v2.normalized;
float dot = Vector2.Dot(n1, n2);
if (dot > 1.0f)
dot = 1.0f;
if (dot < -1.0f)
dot = -1.0f;
float theta = Mathf.Acos(dot);
float sgn = Vector2.Dot(new Vector2(-n1.y, n1.x), n2);
if (sgn >= 0.0f)
return theta;
else
return -theta;
}
public static Vector2 Rotate(this Vector2 v, float theta)
{
float cs = Mathf.Cos(theta);
float sn = Mathf.Sin(theta);
float x1 = v.x * cs - v.y * sn;
float y1 = v.x * sn + v.y * cs;
return new Vector2(x1, y1);
}
}
public static class Vector3Extension
{
public static Vector3 WithX(this Vector3 v, float x)
{
return new Vector3(x, v.y, v.z);
}
public static Vector3 WithY(this Vector3 v, float y)
{
return new Vector3(v.x, y, v.z);
}
public static Vector3 WithZ(this Vector3 v, float z)
{
return new Vector3(v.x, v.y, z);
}
}
public static class Matrix4x4Extension
{
public static Matrix4x4 GetPerspectiveProjection(float left, float right, float bottom, float top, float near, float far)
{
float x = (2.0f * near) / (right - left);
float y = (2.0f * near) / (top - bottom);
float a = (right + left) / (right - left);
float b = (top + bottom) / (top - bottom);
float c = -(far + near) / (far - near);
float d = -(2.0f * far * near) / (far - near);
float e = -1.0f;
Matrix4x4 m = new Matrix4x4();
m[0, 0] = x; m[0, 1] = 0; m[0, 2] = a; m[0, 3] = 0;
m[1, 0] = 0; m[1, 1] = y; m[1, 2] = b; m[1, 3] = 0;
m[2, 0] = 0; m[2, 1] = 0; m[2, 2] = c; m[2, 3] = d;
m[3, 0] = 0; m[3, 1] = 0; m[3, 2] = e; m[3, 3] = 0;
return m;
}
public static Matrix4x4 GetOrthographicProjection(float left, float right, float bottom, float top, float near, float far)
{
float x = 2.0f / (right - left);
float y = 2.0f / (top - bottom);
float z = -2.0f / (far - near);
float a = -(right + left) / (right - left);
float b = -(top + bottom) / (top - bottom);
float c = -(far + near) / (far - near);
float d = 1.0f;
Matrix4x4 m = new Matrix4x4();
m[0, 0] = x; m[0, 1] = 0; m[0, 2] = 0; m[0, 3] = a;
m[1, 0] = 0; m[1, 1] = y; m[1, 2] = 0; m[1, 3] = b;
m[2, 0] = 0; m[2, 1] = 0; m[2, 2] = z; m[2, 3] = c;
m[3, 0] = 0; m[3, 1] = 0; m[3, 2] = 0; m[3, 3] = d;
return m;
}
}
public static class CameraExtension
{
public static Vector4 GetProjectionExtents(this Camera camera)
{
return GetProjectionExtents(camera, 0.0f, 0.0f);
}
public static Vector4 GetProjectionExtents(this Camera camera, float texelOffsetX, float texelOffsetY)
{
if (camera == null)
return Vector4.zero;
float oneExtentY = camera.orthographic ? camera.orthographicSize : Mathf.Tan(0.5f * Mathf.Deg2Rad * camera.fieldOfView);
float oneExtentX = oneExtentY * camera.aspect;
float texelSizeX = oneExtentX / (0.5f * camera.pixelWidth);
float texelSizeY = oneExtentY / (0.5f * camera.pixelHeight);
float oneJitterX = texelSizeX * texelOffsetX;
float oneJitterY = texelSizeY * texelOffsetY;
return new Vector4(oneExtentX, oneExtentY, oneJitterX, oneJitterY);// xy = frustum extents at distance 1, zw = jitter at distance 1
}
#if SUPPORT_STEREO
public static Vector4 GetProjectionExtents(this Camera camera, Camera.StereoscopicEye eye)
{
return GetProjectionExtents(camera, eye, 0.0f, 0.0f);
}
public static Vector4 GetProjectionExtents(this Camera camera, Camera.StereoscopicEye eye, float texelOffsetX, float texelOffsetY)
{
Matrix4x4 inv = Matrix4x4.Inverse(camera.GetStereoProjectionMatrix(eye));
Vector3 ray00 = inv.MultiplyPoint3x4(new Vector3(-1.0f, -1.0f, 0.95f));
Vector3 ray11 = inv.MultiplyPoint3x4(new Vector3(1.0f, 1.0f, 0.95f));
ray00 /= -ray00.z;
ray11 /= -ray11.z;
float oneExtentX = 0.5f * (ray11.x - ray00.x);
float oneExtentY = 0.5f * (ray11.y - ray00.y);
float texelSizeX = oneExtentX / (0.5f * camera.pixelWidth);
float texelSizeY = oneExtentY / (0.5f * camera.pixelHeight);
float oneJitterX = 0.5f * (ray11.x + ray00.x) + texelSizeX * texelOffsetX;
float oneJitterY = 0.5f * (ray11.y + ray00.y) + texelSizeY * texelOffsetY;
return new Vector4(oneExtentX, oneExtentY, oneJitterX, oneJitterY);// xy = frustum extents at distance 1, zw = jitter at distance 1
}
#endif
public static Matrix4x4 GetProjectionMatrix(this Camera camera)
{
return GetProjectionMatrix(camera, 0.0f, 0.0f);
}
public static Matrix4x4 GetProjectionMatrix(this Camera camera, float texelOffsetX, float texelOffsetY)
{
if (camera == null)
return Matrix4x4.identity;
Vector4 extents = GetProjectionExtents(camera, texelOffsetX, texelOffsetY);
float cf = camera.farClipPlane;
float cn = camera.nearClipPlane;
float xm = extents.z - extents.x;
float xp = extents.z + extents.x;
float ym = extents.w - extents.y;
float yp = extents.w + extents.y;
if (camera.orthographic)
return Matrix4x4Extension.GetOrthographicProjection(xm, xp, ym, yp, cn, cf);
else
return Matrix4x4Extension.GetPerspectiveProjection(xm * cn, xp * cn, ym * cn, yp * cn, cn, cf);
}
}

View file

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: e8364b88f137b7844ab5b8ca8776f54f
timeCreated: 1437997052
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,328 @@
// Copyright (c) <2015> <Playdead>
// This file is subject to the MIT License as seen in the root of this folder structure (LICENSE.TXT)
// AUTHOR: Lasse Jon Fuglsang Pedersen <lasse@playdead.com>
#if UNITY_5_5_OR_NEWER
#define SUPPORT_STEREO
#endif
using UnityEngine;
[ExecuteInEditMode]
[RequireComponent(typeof(Camera))]
[AddComponentMenu("Playdead/FrustumJitter")]
public class FrustumJitter : MonoBehaviour
{
#region Static point data
private static float[] points_Still = new float[] {
0.5f, 0.5f,
};
private static float[] points_Uniform2 = new float[] {
-0.25f, -0.25f,//ll
0.25f, 0.25f,//ur
};
private static float[] points_Uniform4 = new float[] {
-0.25f, -0.25f,//ll
0.25f, -0.25f,//lr
0.25f, 0.25f,//ur
-0.25f, 0.25f,//ul
};
private static float[] points_Uniform4_Helix = new float[] {
-0.25f, -0.25f,//ll 3 1
0.25f, 0.25f,//ur \/|
0.25f, -0.25f,//lr /\|
-0.25f, 0.25f,//ul 0 2
};
private static float[] points_Uniform4_DoubleHelix = new float[] {
-0.25f, -0.25f,//ll 3 1
0.25f, 0.25f,//ur \/|
0.25f, -0.25f,//lr /\|
-0.25f, 0.25f,//ul 0 2
-0.25f, -0.25f,//ll 6--7
0.25f, -0.25f,//lr \
-0.25f, 0.25f,//ul \
0.25f, 0.25f,//ur 4--5
};
private static float[] points_SkewButterfly = new float[] {
-0.250f, -0.250f,
0.250f, 0.250f,
0.125f, -0.125f,
-0.125f, 0.125f,
};
private static float[] points_Rotated4 = new float[] {
-0.125f, -0.375f,//ll
0.375f, -0.125f,//lr
0.125f, 0.375f,//ur
-0.375f, 0.125f,//ul
};
private static float[] points_Rotated4_Helix = new float[] {
-0.125f, -0.375f,//ll 3 1
0.125f, 0.375f,//ur \/|
0.375f, -0.125f,//lr /\|
-0.375f, 0.125f,//ul 0 2
};
private static float[] points_Rotated4_Helix2 = new float[] {
-0.125f, -0.375f,//ll 2--1
0.125f, 0.375f,//ur \/
-0.375f, 0.125f,//ul /\
0.375f, -0.125f,//lr 0 3
};
private static float[] points_Poisson10 = new float[] {
-0.16795960f*0.25f, 0.65544910f*0.25f,
-0.69096030f*0.25f, 0.59015970f*0.25f,
0.49843820f*0.25f, 0.83099720f*0.25f,
0.17230150f*0.25f, -0.03882703f*0.25f,
-0.60772670f*0.25f, -0.06013587f*0.25f,
0.65606390f*0.25f, 0.24007600f*0.25f,
0.80348370f*0.25f, -0.48096900f*0.25f,
0.33436540f*0.25f, -0.73007030f*0.25f,
-0.47839520f*0.25f, -0.56005300f*0.25f,
-0.12388120f*0.25f, -0.96633990f*0.25f,
};
private static float[] points_Pentagram = new float[] {
0.000000f*0.5f, 0.525731f*0.5f,// head
-0.309017f*0.5f, -0.425325f*0.5f,// lleg
0.500000f*0.5f, 0.162460f*0.5f,// rarm
-0.500000f*0.5f, 0.162460f*0.5f,// larm
0.309017f*0.5f, -0.425325f*0.5f,// rleg
};
private static float[] points_Halton_2_3_x8 = new float[8 * 2];
private static float[] points_Halton_2_3_x16 = new float[16 * 2];
private static float[] points_Halton_2_3_x32 = new float[32 * 2];
private static float[] points_Halton_2_3_x256 = new float[256 * 2];
private static float[] points_MotionPerp2 = new float[] {
0.00f, -0.25f,
0.00f, 0.25f,
};
#endregion
#region Static point data, static initialization
private static void TransformPattern(float[] seq, float theta, float scale)
{
float cs = Mathf.Cos(theta);
float sn = Mathf.Sin(theta);
for (int i = 0, j = 1, n = seq.Length; i != n; i += 2, j += 2)
{
float x = scale * seq[i];
float y = scale * seq[j];
seq[i] = x * cs - y * sn;
seq[j] = x * sn + y * cs;
}
}
// http://en.wikipedia.org/wiki/Halton_sequence
public static float HaltonSeq(int prime, int index = 1/* NOT! zero-based */)
{
float r = 0.0f;
float f = 1.0f;
int i = index;
while (i > 0)
{
f /= prime;
r += f * (i % prime);
i = (int)Mathf.Floor(i / (float)prime);
}
return r;
}
private static void InitializeHalton_2_3(float[] seq)
{
for (int i = 0, n = seq.Length / 2; i != n; i++)
{
float u = HaltonSeq(2, i + 1) - 0.5f;
float v = HaltonSeq(3, i + 1) - 0.5f;
seq[2 * i + 0] = u;
seq[2 * i + 1] = v;
}
}
static FrustumJitter()
{
// points_Pentagram
Vector2 vh = new Vector2(points_Pentagram[0] - points_Pentagram[2], points_Pentagram[1] - points_Pentagram[3]);
Vector2 vu = new Vector2(0.0f, 1.0f);
TransformPattern(points_Pentagram, Mathf.Deg2Rad * (0.5f * Vector2.Angle(vu, vh)), 1.0f);
// points_Halton_2_3_xN
InitializeHalton_2_3(points_Halton_2_3_x8);
InitializeHalton_2_3(points_Halton_2_3_x16);
InitializeHalton_2_3(points_Halton_2_3_x32);
InitializeHalton_2_3(points_Halton_2_3_x256);
}
#endregion
#region Static point data accessors
public enum Pattern
{
Still,
Uniform2,
Uniform4,
Uniform4_Helix,
Uniform4_DoubleHelix,
SkewButterfly,
Rotated4,
Rotated4_Helix,
Rotated4_Helix2,
Poisson10,
Pentagram,
Halton_2_3_X8,
Halton_2_3_X16,
Halton_2_3_X32,
Halton_2_3_X256,
MotionPerp2,
};
private static float[] AccessPointData(Pattern pattern)
{
switch (pattern)
{
case Pattern.Still:
return points_Still;
case Pattern.Uniform2:
return points_Uniform2;
case Pattern.Uniform4:
return points_Uniform4;
case Pattern.Uniform4_Helix:
return points_Uniform4_Helix;
case Pattern.Uniform4_DoubleHelix:
return points_Uniform4_DoubleHelix;
case Pattern.SkewButterfly:
return points_SkewButterfly;
case Pattern.Rotated4:
return points_Rotated4;
case Pattern.Rotated4_Helix:
return points_Rotated4_Helix;
case Pattern.Rotated4_Helix2:
return points_Rotated4_Helix2;
case Pattern.Poisson10:
return points_Poisson10;
case Pattern.Pentagram:
return points_Pentagram;
case Pattern.Halton_2_3_X8:
return points_Halton_2_3_x8;
case Pattern.Halton_2_3_X16:
return points_Halton_2_3_x16;
case Pattern.Halton_2_3_X32:
return points_Halton_2_3_x32;
case Pattern.Halton_2_3_X256:
return points_Halton_2_3_x256;
case Pattern.MotionPerp2:
return points_MotionPerp2;
default:
Debug.LogError("missing point distribution");
return points_Halton_2_3_x16;
}
}
public static int AccessLength(Pattern pattern)
{
return AccessPointData(pattern).Length / 2;
}
public Vector2 Sample(Pattern pattern, int index)
{
float[] points = AccessPointData(pattern);
int n = points.Length / 2;
int i = index % n;
float x = patternScale * points[2 * i + 0];
float y = patternScale * points[2 * i + 1];
if (pattern != Pattern.MotionPerp2)
return new Vector2(x, y);
else
return new Vector2(x, y).Rotate(Vector2.right.SignedAngle(focalMotionDir));
}
#endregion
private Camera _camera;
private Vector3 focalMotionPos = Vector3.zero;
private Vector3 focalMotionDir = Vector3.right;
public Pattern pattern = Pattern.Halton_2_3_X16;
public float patternScale = 1.0f;
public Vector4 activeSample = Vector4.zero;// xy = current sample, zw = previous sample
public int activeIndex = -2;
void Reset()
{
_camera = GetComponent<Camera>();
}
void Clear()
{
_camera.ResetProjectionMatrix();
activeSample = Vector4.zero;
activeIndex = -2;
}
void Awake()
{
Reset();
Clear();
}
void OnPreCull()
{
// update motion dir
{
Vector3 oldWorld = focalMotionPos;
Vector3 newWorld = _camera.transform.TransformVector(_camera.nearClipPlane * Vector3.forward);
Vector3 oldPoint = (_camera.worldToCameraMatrix * oldWorld);
Vector3 newPoint = (_camera.worldToCameraMatrix * newWorld);
Vector3 newDelta = (newPoint - oldPoint).WithZ(0.0f);
var mag = newDelta.magnitude;
if (mag != 0.0f)
{
var dir = newDelta / mag;// yes, apparently this is necessary instead of newDelta.normalized... because facepalm
if (dir.sqrMagnitude != 0.0f)
{
focalMotionPos = newWorld;
focalMotionDir = Vector3.Slerp(focalMotionDir, dir, 0.2f);
//Debug.Log("CHANGE focalMotionDir " + focalMotionDir.ToString("G4") + " delta was " + newDelta.ToString("G4") + " delta.mag " + newDelta.magnitude);
}
}
}
// update jitter
#if SUPPORT_STEREO
if (_camera.stereoEnabled)
{
Clear();
}
else
#endif
{
if (activeIndex == -2)
{
activeSample = Vector4.zero;
activeIndex += 1;
_camera.projectionMatrix = _camera.GetProjectionMatrix();
}
else
{
activeIndex += 1;
activeIndex %= AccessLength(pattern);
Vector2 sample = Sample(pattern, activeIndex);
activeSample.z = activeSample.x;
activeSample.w = activeSample.y;
activeSample.x = sample.x;
activeSample.y = sample.y;
_camera.projectionMatrix = _camera.GetProjectionMatrix(sample.x, sample.y);
}
}
}
void OnDisable()
{
Clear();
}
}

View file

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 899f97884c6d96b4ca20648ec109a37f
timeCreated: 1437991076
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,266 @@
// Copyright (c) <2015> <Playdead>
// This file is subject to the MIT License as seen in the root of this folder structure (LICENSE.TXT)
// AUTHOR: Lasse Jon Fuglsang Pedersen <lasse@playdead.com>
#if UNITY_5_5_OR_NEWER
#define SUPPORT_STEREO
#endif
using UnityEngine;
[ExecuteInEditMode]
[RequireComponent(typeof(Camera), typeof(FrustumJitter), typeof(VelocityBuffer))]
[AddComponentMenu("Playdead/TemporalReprojection")]
public class TemporalReprojection : EffectBase
{
private static RenderBuffer[] mrt = new RenderBuffer[2];
private Camera _camera;
private FrustumJitter _frustumJitter;
private VelocityBuffer _velocityBuffer;
#region dithering
public Texture ditherTex = null;
private const int NUM_DITHEROFS = 1024;
const float DITHERSIZ = 256;
private static int frameofs = 0;
private static Vector4[] ditheroffsets = null;
public static Vector4 GetFrame_DitherOffset()
{
if ( ditheroffsets == null )
init_ditheroffsets();
frameofs = (frameofs+1) % NUM_DITHEROFS;
return ditheroffsets[frameofs];
}
private static void init_ditheroffsets()
{
if ( ditheroffsets != null )
return;
ditheroffsets = new Vector4[NUM_DITHEROFS];
for ( int i=0, n=ditheroffsets.Length; i<n; ++i )
{
Vector4 p = new Vector4( DITHERSIZ * FrustumJitter.HaltonSeq(2, i+1),
DITHERSIZ * FrustumJitter.HaltonSeq(3, i+1),
DITHERSIZ * FrustumJitter.HaltonSeq(5, i+1),
DITHERSIZ * FrustumJitter.HaltonSeq(7, i+1) );
ditheroffsets[i] = new Vector4( Mathf.Floor(p.x),
Mathf.Floor(p.y),
Mathf.Floor(p.z),
Mathf.Floor(p.w) );
}
}
#endregion
public Shader reprojectionShader;
private Material reprojectionMaterial;
private RenderTexture[,] reprojectionBuffer;
private int[] reprojectionIndex = new int[2] { -1, -1 };
public enum Dilation
{
None, Dilate5X, Dilate3X3
};
public enum HistoryRectification
{
Clamping, CenterClipping, Clipping
};
public enum ColorSpace
{
RGB, Chroma /*YCoCg, YCrCg?*/
};
//public bool unjitterColorSamples = true;
//public bool unjitterNeighborhood = false;
//public bool unjitterReprojection = false;
[Tooltip("TAA colorspace. RGB is faster, Chroma is more better")]
public ColorSpace colorspace = ColorSpace.RGB;
[Tooltip("use soft-cubic for sampling maincolor")]
public bool useHigherOrderFilteringMainColor = false;
[Tooltip("use catmull-rom for sampling historybuffer")]
public bool useHigherOrderFilteringHistory = true;
[Tooltip("History color restricted by clamping (faster), centerClipping or clipping (better)")]
public HistoryRectification historyRectification = HistoryRectification.Clamping;
[Tooltip("Shrink color-aabb using variance of neighborhood")]
public bool useVarianceClipping = true;
[Tooltip("Smooth color-aabb using rounding")]
public bool useAABBRounding = true;
public Dilation dilation = Dilation.Dilate3X3;
public bool useMotionBlur = true;
[Range(0.0f, 1.0f)] public float feedbackMin = 0.88f;
[Range(0.0f, 1.0f)] public float feedbackMax = 0.97f;
public float motionBlurStrength = 1.0f;
public bool motionBlurIgnoreFF = false;
#region shaderparms
int jitter_id = -1; int JitterUVID() { if (jitter_id < 0) jitter_id = Shader.PropertyToID("_JitterUV"); return jitter_id; }
int vb_id =-1; int VelocityBufferID() { if (vb_id<0) vb_id=Shader.PropertyToID( "_VelocityBuffer" ); return vb_id; }
int vnm_id=-1; int VelocityNeighborMaxID() { if (vnm_id<0) vnm_id=Shader.PropertyToID( "_VelocityNeighborMax" ); return vnm_id; }
int maintex_id=-1; int MainTexID() { if (maintex_id<0) maintex_id=Shader.PropertyToID( "_MainTex" ); return maintex_id; }
int prevtex_id=-1; int PrevTexID() { if (prevtex_id<0) prevtex_id=Shader.PropertyToID( "_PrevTex" ); return prevtex_id; }
int fbmin_id=-1; int FeedbackMinID() { if (fbmin_id<0) fbmin_id=Shader.PropertyToID( "_FeedbackMin" ); return fbmin_id; }
int fbmax_id=-1; int FeedbackMinMaxID() { if (fbmax_id<0) fbmax_id=Shader.PropertyToID( "_FeedbackMinMax" ); return fbmax_id; }
int ms_id=-1; int MotionScaleID() { if (ms_id<0) ms_id=Shader.PropertyToID( "_MotionScale" ); return ms_id; }
int dithertex_id=-1; int DitherTexID() { if (dithertex_id<0) dithertex_id=Shader.PropertyToID( "_DitherTex" ); return dithertex_id; }
int ditherofslocal_id=-1; int DitherOffsetLocalID() { if (ditherofslocal_id<0) ditherofslocal_id=Shader.PropertyToID( "_DitherOffset_local" ); return ditherofslocal_id; }
#endregion
void Reset()
{
_camera = GetComponent<Camera>();
_frustumJitter = GetComponent<FrustumJitter>();
_velocityBuffer = GetComponent<VelocityBuffer>();
}
void Clear()
{
EnsureArray(ref reprojectionIndex, 2);
reprojectionIndex[0] = -1;
reprojectionIndex[1] = -1;
}
void Awake()
{
Reset();
Clear();
}
void Resolve(RenderTexture source, RenderTexture destination)
{
EnsureArray(ref reprojectionBuffer, 2, 2);
EnsureArray(ref reprojectionIndex, 2, initialValue: -1);
EnsureMaterial(ref reprojectionMaterial, reprojectionShader);
if (reprojectionMaterial == null)
{
Graphics.Blit(source, destination);
return;
}
#if SUPPORT_STEREO
int eyeIndex = (_camera.stereoActiveEye == Camera.MonoOrStereoscopicEye.Right) ? 1 : 0;
#else
int eyeIndex = 0;
#endif
int bufferW = source.width;
int bufferH = source.height;
if (EnsureRenderTarget(ref reprojectionBuffer[eyeIndex, 0], bufferW, bufferH, RenderTextureFormat.ARGB32, FilterMode.Bilinear, antiAliasing: source.antiAliasing))
Clear();
if (EnsureRenderTarget(ref reprojectionBuffer[eyeIndex, 1], bufferW, bufferH, RenderTextureFormat.ARGB32, FilterMode.Bilinear, antiAliasing: source.antiAliasing))
Clear();
#if SUPPORT_STEREO
bool stereoEnabled = _camera.stereoEnabled;
#else
bool stereoEnabled = false;
#endif
#if UNITY_EDITOR
bool allowMotionBlur = !stereoEnabled && Application.isPlaying;
#else
bool allowMotionBlur = !stereoEnabled;
#endif
EnsureKeyword(reprojectionMaterial, "CAMERA_PERSPECTIVE", !_camera.orthographic);
EnsureKeyword(reprojectionMaterial, "CAMERA_ORTHOGRAPHIC", _camera.orthographic);
//EnsureKeyword(reprojectionMaterial, "UNJITTER_COLORSAMPLES", unjitterColorSamples);
//EnsureKeyword(reprojectionMaterial, "UNJITTER_NEIGHBORHOOD", unjitterNeighborhood);
//EnsureKeyword(reprojectionMaterial, "UNJITTER_REPROJECTION", unjitterReprojection);
EnsureKeyword(reprojectionMaterial, "USE_CHROMA_COLORSPACE", colorspace == ColorSpace.Chroma);
EnsureKeyword(reprojectionMaterial, "USE_CLIPPING", historyRectification == HistoryRectification.CenterClipping || historyRectification == HistoryRectification.Clipping );
EnsureKeyword(reprojectionMaterial, "USE_CENTER_CLIPPING", historyRectification == HistoryRectification.CenterClipping );
EnsureKeyword(reprojectionMaterial, "USE_VARIANCE_CLIPPING", useVarianceClipping );
EnsureKeyword(reprojectionMaterial, "USE_AABB_ROUNDING", useAABBRounding );
EnsureKeyword(reprojectionMaterial, "USE_DILATION_5X", dilation == Dilation.Dilate5X);
EnsureKeyword(reprojectionMaterial, "USE_DILATION_3X3", dilation == Dilation.Dilate3X3);
EnsureKeyword(reprojectionMaterial, "USE_MOTION_BLUR", useMotionBlur && allowMotionBlur);
EnsureKeyword(reprojectionMaterial, "USE_MOTION_BLUR_NEIGHBORMAX", _velocityBuffer.activeVelocityNeighborMax != null);
EnsureKeyword(reprojectionMaterial, "USE_HIGHER_ORDER_TEXTURE_FILTERING_COLOR", useHigherOrderFilteringMainColor);
EnsureKeyword(reprojectionMaterial, "USE_HIGHER_ORDER_TEXTURE_FILTERING_HISTORY", useHigherOrderFilteringHistory);
if (reprojectionIndex[eyeIndex] == -1)// bootstrap
{
reprojectionIndex[eyeIndex] = 0;
reprojectionBuffer[eyeIndex, reprojectionIndex[eyeIndex]].DiscardContents();
Graphics.Blit(source, reprojectionBuffer[eyeIndex, reprojectionIndex[eyeIndex]]);
}
int indexRead = reprojectionIndex[eyeIndex];
int indexWrite = (reprojectionIndex[eyeIndex] + 1) % 2;
Vector4 jitterUV = _frustumJitter.activeSample;
jitterUV.x /= source.width;
jitterUV.y /= source.height;
jitterUV.z /= source.width;
jitterUV.w /= source.height;
reprojectionMaterial.SetVector(JitterUVID(), jitterUV);
reprojectionMaterial.SetTexture(VelocityBufferID(), _velocityBuffer.activeVelocityBuffer);
reprojectionMaterial.SetTexture(VelocityNeighborMaxID(), _velocityBuffer.activeVelocityNeighborMax);
reprojectionMaterial.SetTexture(MainTexID(), source);
reprojectionMaterial.SetTexture(PrevTexID(), reprojectionBuffer[eyeIndex, indexRead]);
reprojectionMaterial.SetFloat(FeedbackMinID(), feedbackMin);
reprojectionMaterial.SetFloat(FeedbackMinMaxID(), feedbackMax - feedbackMin);
reprojectionMaterial.SetFloat(MotionScaleID(), motionBlurStrength * (motionBlurIgnoreFF ? Mathf.Min(1.0f, 1.0f / _velocityBuffer.timeScale) : 1.0f));
reprojectionMaterial.SetTexture(DitherTexID(), ditherTex);
Vector4 ofs = GetFrame_DitherOffset();
reprojectionMaterial.SetVector( DitherOffsetLocalID(), GetFrame_DitherOffset() );
// reproject frame n-1 into output + history buffer
{
mrt[0] = reprojectionBuffer[eyeIndex, indexWrite].colorBuffer;
mrt[1] = destination.colorBuffer;
Graphics.SetRenderTarget(mrt, source.depthBuffer);
reprojectionMaterial.SetPass(0);
reprojectionBuffer[eyeIndex, indexWrite].DiscardContents();
//DrawFullscreenQuad();
DrawFullscreenTri();
reprojectionIndex[eyeIndex] = indexWrite;
}
}
void OnRenderImage(RenderTexture source, RenderTexture destination)
{
if (destination != null && source.antiAliasing == destination.antiAliasing)// resolve without additional blit when not end of chain
{
Resolve(source, destination);
}
else
{
RenderTexture internalDestination = RenderTexture.GetTemporary(source.width, source.height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Default, source.antiAliasing);
{
Resolve(source, internalDestination);
Graphics.Blit(internalDestination, destination);
}
RenderTexture.ReleaseTemporary(internalDestination);
}
}
void OnApplicationQuit()
{
if (reprojectionBuffer != null)
{
ReleaseRenderTarget(ref reprojectionBuffer[0, 0]);
ReleaseRenderTarget(ref reprojectionBuffer[0, 1]);
ReleaseRenderTarget(ref reprojectionBuffer[1, 0]);
ReleaseRenderTarget(ref reprojectionBuffer[1, 1]);
}
}
}

View file

@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: 65f5677aa325c184f801528d78a73827
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences:
- ditherTex: {fileID: 2800000, guid: 859f329ee8606864ea19dbf373a5ec56, type: 3}
- reprojectionShader: {fileID: 4800000, guid: 7ca93c1a56ee0154b8c714591d6d211a,
type: 3}
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,282 @@
// Copyright (c) <2015> <Playdead>
// This file is subject to the MIT License as seen in the root of this folder structure (LICENSE.TXT)
// AUTHOR: Lasse Jon Fuglsang Pedersen <lasse@playdead.com>
#if UNITY_5_5_OR_NEWER
#define SUPPORT_STEREO
#endif
using UnityEngine;
[ExecuteInEditMode]
[RequireComponent(typeof(Camera), typeof(FrustumJitter))]
[AddComponentMenu("Playdead/VelocityBuffer")]
public class VelocityBuffer : EffectBase
{
#if UNITY_PS4
private const RenderTextureFormat velocityFormat = RenderTextureFormat.RGHalf;
#else
private const RenderTextureFormat velocityFormat = RenderTextureFormat.RGFloat;
#endif
private Camera _camera;
private FrustumJitter _frustumJitter;
public Shader velocityShader;
private Material velocityMaterial;
private RenderTexture[] velocityBuffer;
private RenderTexture[] velocityNeighborMax;
private bool[] paramInitialized;
private Vector4[] paramProjectionExtents;
private Matrix4x4[] paramCurrV;
private Matrix4x4[] paramCurrVP;
private Matrix4x4[] paramPrevVP;
private Matrix4x4[] paramPrevVP_NoFlip;
private int activeEyeIndex = -1;
public RenderTexture activeVelocityBuffer { get { return (activeEyeIndex != -1) ? velocityBuffer[activeEyeIndex] : null; } }
public RenderTexture activeVelocityNeighborMax { get { return (activeEyeIndex != -1) ? velocityNeighborMax[activeEyeIndex] : null; } }
public enum NeighborMaxSupport
{
TileSize10,
TileSize20,
TileSize40,
};
public bool neighborMaxGen = false;
public NeighborMaxSupport neighborMaxSupport = NeighborMaxSupport.TileSize20;
private float timeScaleNextFrame;
public float timeScale { get; private set; }
#if UNITY_EDITOR
[Header("Stats")]
public int numResident = 0;
public int numRendered = 0;
public int numDrawCalls = 0;
#endif
void Reset()
{
_camera = GetComponent<Camera>();
_frustumJitter = GetComponent<FrustumJitter>();
}
void Clear()
{
EnsureArray(ref paramInitialized, 2);
paramInitialized[0] = false;
paramInitialized[1] = false;
}
void Awake()
{
Reset();
Clear();
}
void Start()
{
timeScaleNextFrame = Time.timeScale;
}
void OnPreRender()
{
EnsureDepthTexture(_camera);
}
void OnPostRender()
{
EnsureArray(ref velocityBuffer, 2);
EnsureArray(ref velocityNeighborMax, 2);
EnsureArray(ref paramInitialized, 2, initialValue: false);
EnsureArray(ref paramProjectionExtents, 2);
EnsureArray(ref paramCurrV, 2);
EnsureArray(ref paramCurrVP, 2);
EnsureArray(ref paramPrevVP, 2);
EnsureArray(ref paramPrevVP_NoFlip, 2);
EnsureMaterial(ref velocityMaterial, velocityShader);
if (velocityMaterial == null)
return;
timeScale = timeScaleNextFrame;
timeScaleNextFrame = (Time.timeScale == 0.0f) ? timeScaleNextFrame : Time.timeScale;
#if SUPPORT_STEREO
int eyeIndex = (_camera.stereoActiveEye == Camera.MonoOrStereoscopicEye.Right) ? 1 : 0;
#else
int eyeIndex = 0;
#endif
int bufferW = _camera.pixelWidth;
int bufferH = _camera.pixelHeight;
if (EnsureRenderTarget(ref velocityBuffer[eyeIndex], bufferW, bufferH, velocityFormat, FilterMode.Point, depthBits: 16))
Clear();
EnsureKeyword(velocityMaterial, "CAMERA_PERSPECTIVE", !_camera.orthographic);
EnsureKeyword(velocityMaterial, "CAMERA_ORTHOGRAPHIC", _camera.orthographic);
EnsureKeyword(velocityMaterial, "TILESIZE_10", neighborMaxSupport == NeighborMaxSupport.TileSize10);
EnsureKeyword(velocityMaterial, "TILESIZE_20", neighborMaxSupport == NeighborMaxSupport.TileSize20);
EnsureKeyword(velocityMaterial, "TILESIZE_40", neighborMaxSupport == NeighborMaxSupport.TileSize40);
#if SUPPORT_STEREO
if (_camera.stereoEnabled)
{
for (int i = 0; i != 2; i++)
{
Camera.StereoscopicEye eye = (Camera.StereoscopicEye)i;
Matrix4x4 currV = _camera.GetStereoViewMatrix(eye);
Matrix4x4 currP = GL.GetGPUProjectionMatrix(_camera.GetStereoProjectionMatrix(eye), true);
Matrix4x4 currP_NoFlip = GL.GetGPUProjectionMatrix(_camera.GetStereoProjectionMatrix(eye), false);
Matrix4x4 prevV = paramInitialized[i] ? paramCurrV[i] : currV;
paramInitialized[i] = true;
paramProjectionExtents[i] = _camera.GetProjectionExtents(eye);
paramCurrV[i] = currV;
paramCurrVP[i] = currP * currV;
paramPrevVP[i] = currP * prevV;
paramPrevVP_NoFlip[i] = currP_NoFlip * prevV;
}
}
else
#endif
{
Matrix4x4 currV = _camera.worldToCameraMatrix;
Matrix4x4 currP = GL.GetGPUProjectionMatrix(_camera.projectionMatrix, true);
Matrix4x4 currP_NoFlip = GL.GetGPUProjectionMatrix(_camera.projectionMatrix, false);
Matrix4x4 prevV = paramInitialized[0] ? paramCurrV[0] : currV;
paramInitialized[0] = true;
paramProjectionExtents[0] = _frustumJitter.enabled ? _camera.GetProjectionExtents(_frustumJitter.activeSample.x, _frustumJitter.activeSample.y) : _camera.GetProjectionExtents();
paramCurrV[0] = currV;
paramCurrVP[0] = currP * currV;
paramPrevVP[0] = currP * prevV;
paramPrevVP_NoFlip[0] = currP_NoFlip * prevV;
}
RenderTexture activeRT = RenderTexture.active;
RenderTexture.active = velocityBuffer[eyeIndex];
{
GL.Clear(true, true, Color.black);
const int kPrepass = 0;
const int kVertices = 1;
const int kVerticesSkinned = 2;
const int kTileMax = 3;
const int kNeighborMax = 4;
// 0: prepass
#if SUPPORT_STEREO
velocityMaterial.SetVectorArray("_ProjectionExtents", paramProjectionExtents);
velocityMaterial.SetMatrixArray("_CurrV", paramCurrV);
velocityMaterial.SetMatrixArray("_CurrVP", paramCurrVP);
velocityMaterial.SetMatrixArray("_PrevVP", paramPrevVP);
velocityMaterial.SetMatrixArray("_PrevVP_NoFlip", paramPrevVP_NoFlip);
#else
velocityMaterial.SetVector("_ProjectionExtents", paramProjectionExtents[0]);
velocityMaterial.SetMatrix("_CurrV", paramCurrV[0]);
velocityMaterial.SetMatrix("_CurrVP", paramCurrVP[0]);
velocityMaterial.SetMatrix("_PrevVP", paramPrevVP[0]);
velocityMaterial.SetMatrix("_PrevVP_NoFlip", paramPrevVP_NoFlip[0]);
#endif
velocityMaterial.SetPass(kPrepass);
DrawFullscreenQuad();
// 1 + 2: vertices + vertices skinned
var obs = VelocityBufferTag.activeObjects;
#if UNITY_EDITOR
numResident = obs.Count;
numRendered = 0;
numDrawCalls = 0;
#endif
for (int i = 0, n = obs.Count; i != n; i++)
{
var ob = obs[i];
if (ob != null && ob.rendering && ob.mesh != null)
{
velocityMaterial.SetMatrix("_CurrM", ob.localToWorldCurr);
velocityMaterial.SetMatrix("_PrevM", ob.localToWorldPrev);
velocityMaterial.SetPass(ob.meshSmrActive ? kVerticesSkinned : kVertices);
for (int j = 0; j != ob.mesh.subMeshCount; j++)
{
Graphics.DrawMeshNow(ob.mesh, Matrix4x4.identity, j);
#if UNITY_EDITOR
numDrawCalls++;
#endif
}
#if UNITY_EDITOR
numRendered++;
#endif
}
}
// 3 + 4: tilemax + neighbormax
if (neighborMaxGen)
{
int tileSize = 1;
switch (neighborMaxSupport)
{
case NeighborMaxSupport.TileSize10: tileSize = 10; break;
case NeighborMaxSupport.TileSize20: tileSize = 20; break;
case NeighborMaxSupport.TileSize40: tileSize = 40; break;
}
int neighborMaxW = bufferW / tileSize;
int neighborMaxH = bufferH / tileSize;
EnsureRenderTarget(ref velocityNeighborMax[eyeIndex], neighborMaxW, neighborMaxH, velocityFormat, FilterMode.Bilinear);
// tilemax
RenderTexture tileMax = RenderTexture.GetTemporary(neighborMaxW, neighborMaxH, 0, velocityFormat);
RenderTexture.active = tileMax;
{
velocityMaterial.SetTexture("_VelocityTex", velocityBuffer[eyeIndex]);
velocityMaterial.SetVector("_VelocityTex_TexelSize", new Vector4(1.0f / bufferW, 1.0f / bufferH, 0.0f, 0.0f));
velocityMaterial.SetPass(kTileMax);
DrawFullscreenQuad();
}
// neighbormax
RenderTexture.active = velocityNeighborMax[eyeIndex];
{
velocityMaterial.SetTexture("_VelocityTex", tileMax);
velocityMaterial.SetVector("_VelocityTex_TexelSize", new Vector4(1.0f / neighborMaxW, 1.0f / neighborMaxH, 0.0f, 0.0f));
velocityMaterial.SetPass(kNeighborMax);
DrawFullscreenQuad();
}
RenderTexture.ReleaseTemporary(tileMax);
}
else
{
ReleaseRenderTarget(ref velocityNeighborMax[0]);
ReleaseRenderTarget(ref velocityNeighborMax[1]);
}
}
RenderTexture.active = activeRT;
activeEyeIndex = eyeIndex;
}
void OnApplicationQuit()
{
if (velocityBuffer != null)
{
ReleaseRenderTarget(ref velocityBuffer[0]);
ReleaseRenderTarget(ref velocityBuffer[1]);
}
if (velocityNeighborMax != null)
{
ReleaseRenderTarget(ref velocityNeighborMax[0]);
ReleaseRenderTarget(ref velocityNeighborMax[1]);
}
}
}

View file

@ -0,0 +1,15 @@
fileFormatVersion: 2
guid: b642ff60407fe724bafa6602199213c0
timeCreated: 1438011374
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences:
- velocityShader: {fileID: 4800000, guid: 0d7f09e63dd99504ca6e04212a21ec72, type: 3}
- velocityBuffer: {instanceID: 0}
- velocityNeighborMax: {instanceID: 0}
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,143 @@
// Copyright (c) <2015> <Playdead>
// This file is subject to the MIT License as seen in the root of this folder structure (LICENSE.TXT)
// AUTHOR: Lasse Jon Fuglsang Pedersen <lasse@playdead.com>
using System;
using System.Collections.Generic;
using UnityEngine;
[AddComponentMenu("Playdead/VelocityBufferTag")]
public class VelocityBufferTag : MonoBehaviour
{
#if UNITY_5_6_OR_NEWER
private static List<Vector3> temporaryVertexStorage = new List<Vector3>(512);
#endif
public static List<VelocityBufferTag> activeObjects = new List<VelocityBufferTag>(128);
private Transform _transform;
[NonSerialized, HideInInspector] public SkinnedMeshRenderer meshSmr;
[NonSerialized, HideInInspector] public bool meshSmrActive;
[NonSerialized, HideInInspector] public Mesh mesh;
[NonSerialized, HideInInspector] public Matrix4x4 localToWorldPrev;
[NonSerialized, HideInInspector] public Matrix4x4 localToWorldCurr;
private const int framesNotRenderedSleepThreshold = 60;
private int framesNotRendered = framesNotRenderedSleepThreshold;
public bool rendering { get { return (framesNotRendered < framesNotRenderedSleepThreshold); } }
void Reset()
{
_transform = this.transform;
var smr = GetComponent<SkinnedMeshRenderer>();
if (smr != null)
{
if (mesh == null || meshSmrActive == false)
{
mesh = new Mesh();
mesh.hideFlags = HideFlags.HideAndDontSave;
}
meshSmrActive = true;
meshSmr = smr;
}
else
{
var mf = GetComponent<MeshFilter>();
if (mf != null)
mesh = mf.sharedMesh;
else
mesh = null;
meshSmrActive = false;
meshSmr = null;
}
// force restart
framesNotRendered = framesNotRenderedSleepThreshold;
}
void Awake()
{
Reset();
}
void TagUpdate(bool restart)
{
if (meshSmrActive && meshSmr == null)
{
Reset();
}
if (meshSmrActive)
{
if (restart)
{
meshSmr.BakeMesh(mesh);
#if UNITY_5_6_OR_NEWER
mesh.GetVertices(temporaryVertexStorage);
mesh.SetNormals(temporaryVertexStorage);
#else
mesh.normals = mesh.vertices;// garbage ahoy
#endif
}
else
{
#if UNITY_5_6_OR_NEWER
mesh.GetVertices(temporaryVertexStorage);
meshSmr.BakeMesh(mesh);
mesh.SetNormals(temporaryVertexStorage);
#else
Vector3[] vs = mesh.vertices;// garbage ahoy
meshSmr.BakeMesh(mesh);
mesh.normals = vs;
#endif
}
}
if (restart)
{
localToWorldCurr = _transform.localToWorldMatrix;
localToWorldPrev = localToWorldCurr;
}
else
{
localToWorldPrev = localToWorldCurr;
localToWorldCurr = _transform.localToWorldMatrix;
}
}
void LateUpdate()
{
if (framesNotRendered < framesNotRenderedSleepThreshold)
{
framesNotRendered++;
TagUpdate(restart: false);
}
}
void OnWillRenderObject()
{
if (Camera.current != Camera.main)
return;// ignore anything but main cam
if (framesNotRendered >= framesNotRenderedSleepThreshold)
TagUpdate(restart: true);
framesNotRendered = 0;
}
void OnEnable()
{
activeObjects.Add(this);
}
void OnDisable()
{
activeObjects.Remove(this);
// force restart
framesNotRendered = framesNotRenderedSleepThreshold;
}
}

View file

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 1cc21c48ee370cb42a042622dd21640d
timeCreated: 1437991033
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: f0aa195420e263d4ba033b84c407fba5
folderAsset: yes
timeCreated: 1437991376
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,142 @@
#ifndef __PD_COLOR_CGINC__
#define __PD_COLOR_CGINC__
//note: Symmetric triangular distribution on [-1,1] with maximal density at 0
//note: from https://github.com/Unity-Technologies/ScriptableRenderPipeline/blob/master/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/FinalPass.shader#L124
float remap_noise_tri( float v )
{
v = v*2.0-1.0;
return sign(v) * (1.0 - sqrt(1.0 - abs(v)));
}
float4 remap_noise_tri( float4 v )
{
v = v*2.0-1.0;
return sign(v) * (1.0 - sqrt(1.0 - abs(v)));
}
//from https://github.com/h3r2tic/rtoy-samples/blob/master/assets/shaders/inc/color.inc
// Rec. 709
float3 RGB_YCbCr(float3 col)
{
return float3( dot( col, float3(0.2126, 0.7152, 0.0722)),
dot( col, float3(-0.1146, -0.3854, 0.5)),
dot( col, float3(0.5, -0.4542, -0.0458)) );
}
float3 YCbCr_RGB(float3 col)
{
return float3( col.r + 1.5748 * col.b,
col.r - 0.1873 * col.g -0.4681 * col.b,
col.r + 1.8556 * col.g );
}
// https://software.intel.com/en-us/node/503873
float3 RGB_YCoCg(float3 c)
{
// Y = R/4 + G/2 + B/4
// Co = R/2 - B/2
// Cg = -R/4 + G/2 - B/4
return float3( c.x/4.0 + c.y/2.0 + c.z/4.0,
c.x/2.0 - c.z/2.0,
-c.x/4.0 + c.y/2.0 - c.z/4.0 );
}
// https://software.intel.com/en-us/node/503873
float3 YCoCg_RGB(float3 c)
{
// R = Y + Co - Cg
// G = Y + Cg
// B = Y - Co - Cg
return saturate(float3( c.x + c.y - c.z,
c.x + c.z,
c.x - c.y - c.z ));
}
// Samples a texture with Catmull-Rom filtering, using 9 texture fetches instead of 16.
// Source: https://gist.github.com/TheRealMJP/c83b8c0f46b63f3a88a5986f4fa982b1
// See http://vec3.ca/bicubic-filtering-in-fewer-taps/ for more details
float4 sample_catmull_rom(in sampler2D linearSampler, in float2 uv, in float2 texSize)
{
// We're going to sample a a 4x4 grid of texels surrounding the target UV coordinate. We'll do this by rounding
// down the sample location to get the exact center of our "starting" texel. The starting texel will be at
// location [1, 1] in the grid, where [0, 0] is the top left corner.
float2 samplePos = uv * texSize;
float2 texPos1 = floor(samplePos - 0.5f) + 0.5f;
// Compute the fractional offset from our starting texel to our original sample location, which we'll
// feed into the Catmull-Rom spline function to get our filter weights.
float2 f = samplePos - texPos1;
// Compute the Catmull-Rom weights using the fractional offset that we calculated earlier.
// These equations are pre-expanded based on our knowledge of where the texels will be located,
// which lets us avoid having to evaluate a piece-wise function.
float2 w0 = f * (-0.5f + f * (1.0f - 0.5f * f));
float2 w1 = 1.0f + f * f * (-2.5f + 1.5f * f);
float2 w2 = f * (0.5f + f * (2.0f - 1.5f * f));
float2 w3 = f * f * (-0.5f + 0.5f * f);
// Work out weighting factors and sampling offsets that will let us use bilinear filtering to
// simultaneously evaluate the middle 2 samples from the 4x4 grid.
float2 w12 = w1 + w2;
float2 offset12 = w2 / w12;
// Compute the final UV coordinates we'll use for sampling the texture
float2 texPos0 = texPos1 - 1;
float2 texPos3 = texPos1 + 2;
float2 texPos12 = texPos1 + offset12;
texPos0 /= texSize;
texPos3 /= texSize;
texPos12 /= texSize;
float4 result = 0.0f;
result += tex2D(linearSampler, float2(texPos0.x, texPos0.y)) * w0.x * w0.y;
result += tex2D(linearSampler, float2(texPos12.x, texPos0.y)) * w12.x * w0.y;
result += tex2D(linearSampler, float2(texPos3.x, texPos0.y)) * w3.x * w0.y;
result += tex2D(linearSampler, float2(texPos0.x, texPos12.y)) * w0.x * w12.y;
result += tex2D(linearSampler, float2(texPos12.x, texPos12.y)) * w12.x * w12.y;
result += tex2D(linearSampler, float2(texPos3.x, texPos12.y)) * w3.x * w12.y;
result += tex2D(linearSampler, float2(texPos0.x, texPos3.y)) * w0.x * w3.y;
result += tex2D(linearSampler, float2(texPos12.x, texPos3.y)) * w12.x * w3.y;
result += tex2D(linearSampler, float2(texPos3.x, texPos3.y)) * w3.x * w3.y;
return max( 0.0, result );
}
//note: see http://vec3.ca/bicubic-filtering-in-fewer-taps/ for more details
//note: also http://mate.tue.nl/mate/pdfs/10318.pdf
float4 sample_cubic( in sampler2D linearSampler, float2 uv, float2 texSiz )
{
//return
float2 iTc = uv * texSiz;
float2 tc = floor(iTc - 0.5) + 0.5;
float2 f = iTc - tc;
const float2 f2 = float2( f * f );
float2 w0 = f * ( f * ( 0.5 - 1.0/6.0 * f ) - 0.5 ) + (1.0/6.0);
float2 w1 = (0.5 * f - 1.0) * f2 + (2.0/3.0);
float2 w2 = f * ( f * (0.5 - 0.5 * f) + 0.5) + (1.0/6.0);
float2 w3 = (1.0/6.0) * f*f2;
float2 s0 = w0 + w1;
float2 s1 = w2 + w3;
float2 f0 = w1 / s0;
float2 f1 = w3 / s1;
float2 t0 = tc - 1.0 + f0;
float2 t1 = tc + 1.0 + f1;
const float2 rcpTexSiz = 1.0 / texSiz;
return
(tex2D( linearSampler, float2( t0.x, t0.y )*rcpTexSiz) * s0.x
+ tex2D( linearSampler, float2( t1.x, t0.y )*rcpTexSiz) * s1.x) * s0.y
+ (tex2D( linearSampler, float2( t0.x, t1.y )*rcpTexSiz) * s0.x
+ tex2D( linearSampler, float2( t1.x, t1.y )*rcpTexSiz) * s1.x ) * s1.y;
}
#endif // __PD_COLOR_CGINC__

View file

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: d12c7ae3d4350ec42adcdd8443cad1d8
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,139 @@
// Copyright (c) <2015> <Playdead>
// This file is subject to the MIT License as seen in the root of this folder structure (LICENSE.TXT)
// AUTHOR: Lasse Jon Fuglsang Pedersen <lasse@playdead.com>
#ifndef __DEPTH_CGINC__
#define __DEPTH_CGINC__
#include "UnityCG.cginc"
uniform sampler2D_float _CameraDepthTexture;
uniform float4 _CameraDepthTexture_TexelSize;
#if UNITY_REVERSED_Z
#define ZCMP_GT(a, b) (a < b)
#else
#define ZCMP_GT(a, b) (a > b)
#endif
float depth_resolve_linear(float z)
{
#if CAMERA_ORTHOGRAPHIC
#if UNITY_REVERSED_Z
return (1.0 - z) * (_ProjectionParams.z - _ProjectionParams.y) + _ProjectionParams.y;
#else
return z * (_ProjectionParams.z - _ProjectionParams.y) + _ProjectionParams.y;
#endif
#else
return LinearEyeDepth(z);
#endif
}
float depth_sample_linear(float2 uv)
{
return depth_resolve_linear(tex2D(_CameraDepthTexture, uv).x);
}
float3 find_closest_fragment_3x3(float2 uv)
{
float2 dd = abs(_CameraDepthTexture_TexelSize.xy);
float2 du = float2(dd.x, 0.0);
float2 dv = float2(0.0, dd.y);
float3 dtl = float3(-1, -1, tex2D(_CameraDepthTexture, uv - dv - du).x);
float3 dtc = float3( 0, -1, tex2D(_CameraDepthTexture, uv - dv).x);
float3 dtr = float3( 1, -1, tex2D(_CameraDepthTexture, uv - dv + du).x);
float3 dml = float3(-1, 0, tex2D(_CameraDepthTexture, uv - du).x);
float3 dmc = float3( 0, 0, tex2D(_CameraDepthTexture, uv).x);
float3 dmr = float3( 1, 0, tex2D(_CameraDepthTexture, uv + du).x);
float3 dbl = float3(-1, 1, tex2D(_CameraDepthTexture, uv + dv - du).x);
float3 dbc = float3( 0, 1, tex2D(_CameraDepthTexture, uv + dv).x);
float3 dbr = float3( 1, 1, tex2D(_CameraDepthTexture, uv + dv + du).x);
float3 dmin = dtl;
if (ZCMP_GT(dmin.z, dtc.z)) dmin = dtc;
if (ZCMP_GT(dmin.z, dtr.z)) dmin = dtr;
if (ZCMP_GT(dmin.z, dml.z)) dmin = dml;
if (ZCMP_GT(dmin.z, dmc.z)) dmin = dmc;
if (ZCMP_GT(dmin.z, dmr.z)) dmin = dmr;
if (ZCMP_GT(dmin.z, dbl.z)) dmin = dbl;
if (ZCMP_GT(dmin.z, dbc.z)) dmin = dbc;
if (ZCMP_GT(dmin.z, dbr.z)) dmin = dbr;
return float3(uv + dd.xy * dmin.xy, dmin.z);
}
/* UNUSED: tested slower than branching
float2 find_closest_fragment_3x3_packed(in float2 uv)
{
float2 dd = abs(_CameraDepthTexture_TexelSize.xy);
float2 du = float2(dd.x, 0.0);
float2 dv = float2(0.0, dd.y);
const float s = 100000.0;
float dtl = trunc(s * tex2D(_CameraDepthTexture, uv - dv - du).x) + 0.1010;// -+-+
float dtc = trunc(s * tex2D(_CameraDepthTexture, uv - dv).x) + 0.0010;
float dtr = trunc(s * tex2D(_CameraDepthTexture, uv - dv + du).x) + 0.0110;
float dml = trunc(s * tex2D(_CameraDepthTexture, uv - du).x) + 0.1000;
float dmc = trunc(s * tex2D(_CameraDepthTexture, uv).x) + 0.0000;
float dmr = trunc(s * tex2D(_CameraDepthTexture, uv + du).x) + 0.0100;
float dbl = trunc(s * tex2D(_CameraDepthTexture, uv + dv - du).x) + 0.1001;
float dbc = trunc(s * tex2D(_CameraDepthTexture, uv + dv).x) + 0.0001;
float dbr = trunc(s * tex2D(_CameraDepthTexture, uv + dv + du).x) + 0.0101;
float enc = frac(min(dtl, min(dtc, min(dtr, min(dml, min(dmc, min(dmr, min(dbl, min(dbc, dbr)))))))));
float ru = 0.0;
float rv = 0.0;
enc *= 10.0;
ru -= trunc(enc);
enc = frac(enc);
enc *= 10.0;
ru += trunc(enc);
enc = frac(enc);
enc *= 10.0;
rv -= trunc(enc);
enc = frac(enc);
enc *= 10.0;
rv += trunc(enc);
enc = frac(enc);
return uv + dd * float2(ru, rv);
}*/
float3 find_closest_fragment_5tap(float2 uv)
{
float2 dd = abs(_CameraDepthTexture_TexelSize.xy);
float2 du = float2(dd.x, 0.0);
float2 dv = float2(0.0, dd.y);
float2 tl = -dv - du;
float2 tr = -dv + du;
float2 bl = dv - du;
float2 br = dv + du;
float dtl = tex2D(_CameraDepthTexture, uv + tl).x;
float dtr = tex2D(_CameraDepthTexture, uv + tr).x;
float dmc = tex2D(_CameraDepthTexture, uv).x;
float dbl = tex2D(_CameraDepthTexture, uv + bl).x;
float dbr = tex2D(_CameraDepthTexture, uv + br).x;
float dmin = dmc;
float2 dif = 0.0;
if (ZCMP_GT(dmin, dtl)) { dmin = dtl; dif = tl; }
if (ZCMP_GT(dmin, dtr)) { dmin = dtr; dif = tr; }
if (ZCMP_GT(dmin, dbl)) { dmin = dbl; dif = bl; }
if (ZCMP_GT(dmin, dbr)) { dmin = dbr; dif = br; }
return float3(uv + dif, dmin);
}
#endif//__DEPTH_CGINC__

View file

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: e84bd3245769b9746ae57a016126a416
timeCreated: 1486464894
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,38 @@
// Copyright (c) <2015> <Playdead>
// This file is subject to the MIT License as seen in the root of this folder structure (LICENSE.TXT)
// AUTHOR: Lasse Jon Fuglsang Pedersen <lasse@playdead.com>
#ifndef __NOISE_CGINC__
#define __NOISE_CGINC__
//====
//note: normalized random, float=[0;1[
float PDnrand( float2 n ) {
return frac( sin(dot(n.xy, float2(12.9898f, 78.233f)))* 43758.5453f );
}
float2 PDnrand2( float2 n ) {
return frac( sin(dot(n.xy, float2(12.9898f, 78.233f)))* float2(43758.5453f, 28001.8384f) );
}
float3 PDnrand3( float2 n ) {
return frac( sin(dot(n.xy, float2(12.9898f, 78.233f)))* float3(43758.5453f, 28001.8384f, 50849.4141f ) );
}
float4 PDnrand4( float2 n ) {
return frac( sin(dot(n.xy, float2(12.9898f, 78.233f)))* float4(43758.5453f, 28001.8384f, 50849.4141f, 12996.89f) );
}
//====
//note: signed random, float=[-1;1[
float PDsrand( float2 n ) {
return PDnrand( n ) * 2 - 1;
}
float2 PDsrand2( float2 n ) {
return PDnrand2( n ) * 2 - 1;
}
float3 PDsrand3( float2 n ) {
return PDnrand3( n ) * 2 - 1;
}
float4 PDsrand4( float2 n ) {
return PDnrand4( n ) * 2 - 1;
}
#endif//__NOISE_CGINC__

View file

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 228669e43365e55468de0ef0b707a4bd
timeCreated: 1437991512
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,431 @@
// Copyright (c) <2015> <Playdead>
// This file is subject to the MIT License as seen in the root of this folder structure (LICENSE.TXT)
// AUTHOR: Lasse Jon Fuglsang Pedersen <lasse@playdead.com>
Shader "Playdead/Post/TemporalReprojection"
{
Properties
{
_MainTex ("Base (RGB)", 2D) = "white" {}
}
CGINCLUDE
//--- program begin
#pragma only_renderers ps4 xboxone d3d11 d3d9 xbox360 opengl glcore gles3 metal vulkan
#pragma target 3.0
#pragma multi_compile CAMERA_PERSPECTIVE CAMERA_ORTHOGRAPHIC
//#pragma multi_compile __ UNJITTER_COLORSAMPLES
//#pragma multi_compile __ UNJITTER_NEIGHBORHOOD
//#pragma multi_compile __ UNJITTER_REPROJECTION
#pragma multi_compile __ USE_AABB_ROUNDING
#pragma multi_compile __ USE_CHROMA_COLORSPACE
#pragma multi_compile __ USE_CLIPPING
#pragma multi_compile __ USE_VARIANCE_CLIPPING
#pragma multi_compile __ USE_CENTER_CLIPPING
#pragma multi_compile __ USE_DILATION_5X
#pragma multi_compile __ USE_DILATION_3X3
#pragma multi_compile __ USE_HIGHER_ORDER_TEXTURE_FILTERING_COLOR
#pragma multi_compile __ USE_HIGHER_ORDER_TEXTURE_FILTERING_HISTORY
#pragma multi_compile __ USE_MOTION_BLUR
#pragma multi_compile __ USE_MOTION_BLUR_NEIGHBORMAX
#define UNJITTER_COLORSAMPLES 1
#define UNJITTER_NEIGHBORHOOD 0
#define UNJITTER_REPROJECTION 0
//TODO: presets
/*
#if USE_HIGH_PERFORMANCE
// best perf: 5 tap nearest, RGB, minmaxrounded, clamping, green_is_luminance, low-motionblur-samples
#define USE_DILATION_5X 1
#define USE_CENTER_CLIPPING 1
#define APPROXIMATE_LUMINANCE_AS_GREEN 1
#endif
#if USE_HIGH_QUALITY
// best qual: 9 tap nearest, YCbCg, minmax, full clip, full lum, high-motionblur-samples
#define USE_DILATION_3X3 1
#define USE_CLIPPING 1
#define USE_CHROMA_COLORSPACE 1
#define USE_HIGHER_ORDER_TEXTURE_FILTERING_COLOR 1
#define USE_HIGHER_ORDER_TEXTURE_FILTERING_HISTORY 1
#endif
*/
#include "UnityCG.cginc"
#include "IncDepth.cginc"
#include "IncNoise.cginc"
#include "IncColor.cginc"
#if SHADER_API_MOBILE
static const float FLT_EPS = 0.0001f;
#else
static const float FLT_EPS = 0.00000001f;
#endif
uniform float4 _JitterUV;// frustum jitter uv deltas, where xy = current frame, zw = previous
uniform sampler2D _MainTex;
uniform float4 _MainTex_TexelSize;
uniform sampler2D_half _VelocityBuffer;
uniform sampler2D _VelocityNeighborMax;
uniform float4 _VelocityNeighborMax_TexelSize;
uniform sampler2D _PrevTex;
uniform float4 _PrevTex_TexelSize;
uniform sampler2D _DitherTex;
uniform float4 _DitherTex_TexelSize;
uniform float4 _DitherOffset_local;
uniform float _FeedbackMin;
uniform float _FeedbackMinMax;
uniform float _MotionScale;
struct v2f
{
float4 cs_pos : SV_POSITION;
float2 ss_txc : TEXCOORD0;
nointerpolation float4 mad : TEXCOORD1;
};
v2f vert(appdata_img IN)
{
v2f OUT;
#if UNITY_VERSION < 540
OUT.cs_pos = UnityObjectToClipPos(IN.vertex);
#else
OUT.cs_pos = UnityObjectToClipPos(IN.vertex);
#endif
#if UNITY_SINGLE_PASS_STEREO
OUT.ss_txc = UnityStereoTransformScreenSpaceTex(IN.texcoord.xy);
#else
OUT.ss_txc = IN.texcoord.xy;
#endif
OUT.mad.xy = _PrevTex_TexelSize.zw * _DitherTex_TexelSize.xy;
OUT.mad.zw = _DitherOffset_local.xy * _DitherTex_TexelSize.xy;
return OUT;
}
float4 to_working_colorspace( float4 c )
{
#if USE_CHROMA_COLORSPACE
return float4( RGB_YCbCr(c.rgb), c.a );
//return float4( RGB_YCoCg(c.rgb), c.a );
#else
return c;
#endif
}
float4 from_working_colorspace( float4 c )
{
#if USE_CHROMA_COLORSPACE
return float4( YCbCr_RGB(c.rgb), c.a );
//return float4( YCoCg_RGB(c.rgb), c.a );
#else
return c;
#endif
}
float4 clip_aabb(float3 aabb_min, float3 aabb_max, float4 p, float4 q)
{
#if USE_CENTER_CLIPPING
// note: only clips towards aabb center (but fast!)
float3 p_clip = 0.5 * (aabb_max + aabb_min);
float3 e_clip = 0.5 * (aabb_max - aabb_min) + FLT_EPS;
float4 v_clip = q - float4(p_clip, p.w);
float3 v_unit = v_clip.xyz / e_clip;
float3 a_unit = abs(v_unit);
float ma_unit = max(a_unit.x, max(a_unit.y, a_unit.z));
if (ma_unit > 1.0)
return float4(p_clip, p.w) + v_clip / ma_unit;
else
return q;// point inside aabb
#else
float4 r = q - p;
float3 rmax = aabb_max - p.xyz;
float3 rmin = aabb_min - p.xyz;
const float eps = FLT_EPS;
if (r.x > rmax.x + eps) r *= (rmax.x / r.x);
if (r.y > rmax.y + eps) r *= (rmax.y / r.y);
if (r.z > rmax.z + eps) r *= (rmax.z / r.z);
if (r.x < rmin.x - eps) r *= (rmin.x / r.x);
if (r.y < rmin.y - eps) r *= (rmin.y / r.y);
if (r.z < rmin.z - eps) r *= (rmin.z / r.z);
return p + r;
#endif
}
//TODO: option to toggle symmetric sampling
static const int NUM_TAPS = 3;// on either side!
static const float RCP_NUM_TAPS_F = 1.0f / float(NUM_TAPS);
static const float RCP_NUM_TOTAL_TAPS_F = 1.0f / float(2*NUM_TAPS+1);
half4 sample_color_motion( float2 uv, float2 ss_vel, float srand )
{
const float2 v = 0.5 * ss_vel;
float2 vtap = v * RCP_NUM_TAPS_F;
float2 pos0 = uv + vtap * srand;
half4 accu = 0.0h;
[unroll]
for (int i = -NUM_TAPS; i <= NUM_TAPS; i++)
{
accu += to_working_colorspace( tex2D(_MainTex, pos0 + i * vtap) );
}
return accu * RCP_NUM_TOTAL_TAPS_F;
}
float lengthsq( float2 v )
{
return dot(v,v);
}
float4 temporal_reprojection(float2 ss_txc, float2 ss_vel, float vs_dist)
{
// read texels
#if UNJITTER_COLORSAMPLES
float2 cuv = ss_txc - _JitterUV.xy;
#else
float2 cuv = ss_txc;
#endif
// read texels
#if USE_HIGHER_ORDER_TEXTURE_FILTERING_COLOR
half4 texel0 = sample_cubic(_MainTex, cuv, _MainTex_TexelSize.zw); //softer
#else
half4 texel0 = tex2D(_MainTex, cuv); //note: sharper, faster
#endif
texel0 = to_working_colorspace( texel0 );
#if USE_HIGHER_ORDER_TEXTURE_FILTERING_HISTORY
half4 texel1 = sample_catmull_rom(_PrevTex, ss_txc - ss_vel, _PrevTex_TexelSize.zw);
#else
half4 texel1 = tex2D(_PrevTex, ss_txc - ss_vel);
#endif
texel1 = to_working_colorspace( texel1 );
// calc min-max of current neighbourhood
#if UNJITTER_NEIGHBORHOOD
float2 uv = ss_txc - _JitterUV.xy;
#else
float2 uv = ss_txc;
#endif
float2 du = float2(_MainTex_TexelSize.x, 0.0);
float2 dv = float2(0.0, _MainTex_TexelSize.y);
float4 ctl = to_working_colorspace( tex2D(_MainTex, uv - dv - du) );
float4 ctc = to_working_colorspace( tex2D(_MainTex, uv - dv) );
float4 ctr = to_working_colorspace( tex2D(_MainTex, uv - dv + du) );
float4 cml = to_working_colorspace( tex2D(_MainTex, uv - du) );
float4 cmc = to_working_colorspace( tex2D(_MainTex, uv) );
float4 cmr = to_working_colorspace( tex2D(_MainTex, uv + du) );
float4 cbl = to_working_colorspace( tex2D(_MainTex, uv + dv - du) );
float4 cbc = to_working_colorspace( tex2D(_MainTex, uv + dv) );
float4 cbr = to_working_colorspace( tex2D(_MainTex, uv + dv + du) );
float4 cmin5 = min(ctc, min(cml, min(cmc, min(cmr, cbc))));
float4 cmax5 = max(ctc, max(cml, max(cmc, max(cmr, cbc))));
float4 csum5 = ctc + cml + cmc + cmr + cbc;
float4 cmin = min(cmin5, min(ctl, min(ctr, min(cbl, cbr))));
float4 cmax = max(cmax5, max(ctl, max(ctr, max(cbl, cbr))));
#if USE_CHROMA_COLORSPACE || USE_CLIPPING
float4 cavg = (csum5 + ctl + ctr + cbl + cbr) / 9.0;
#endif
#if USE_AABB_ROUNDING
cmin = 0.5 * (cmin + cmin5);
cmax = 0.5 * (cmax + cmax5);
#if USE_CLIPPING
cavg = 0.5 * (cavg + 0.2 * csum5);
#endif
#endif
#if USE_VARIANCE_CLIPPING
//note: salvi variance-clipping
{
const float3 w = float3(1.0/16.0, 2.0/16.0, 4.0/16.0);
float4 colorAvg = w.z*cmc;
float4 colorVar = w.z*cmc*cmc;
colorAvg += w.x * ctl; colorVar += w.x * ctl * ctl;
colorAvg += w.y * ctc; colorVar += w.y * ctc * ctc;
colorAvg += w.x * ctr; colorVar += w.x * ctr * ctr;
colorAvg += w.y * cml; colorVar += w.y * cml * cml;
//colorAvg += w.z * cmc; colorVar += w.z * cmc * cmc;
colorAvg += w.y * cmr; colorVar += w.y * cmr * cmr;
colorAvg += w.x * cbl; colorVar += w.x * cbl * cbl;
colorAvg += w.y * cbc; colorVar += w.y * cbc * cbc;
colorAvg += w.x * cbr; colorVar += w.x * cbr * cbr;
float4 dev = sqrt(max(FLT_EPS, colorVar - colorAvg*colorAvg));
const float gColorBoxSigma = 1.0; //TODO: expose [0.75;1.25]
cmin = max(cmin, colorAvg - gColorBoxSigma * dev );
cmax = min(cmax, colorAvg + gColorBoxSigma * dev );
#if USE_CLIPPING
cavg = colorAvg;
#endif
}
#endif //USE_VARIANCE_CLIPPING
//note: shrink chroma min-max
#if USE_CHROMA_COLORSPACE
float2 chroma_extent = 0.25 * 0.5 * (cmax.xx - cmin.xx);
float2 chroma_center = texel0.yz;
float2 ccmin = chroma_center - chroma_extent;
float2 ccmax = chroma_center + chroma_extent;
if ( lengthsq(ccmax-ccmin) > lengthsq(cmax.yz-cmin.yz) )
{
cmin.yz = ccmin;
cmax.yz = ccmax;
#if USE_CLIPPING
cavg.yz = chroma_center;
#endif
}
#endif //USE_CHROMA_COLORSPACE
// clamp to neighbourhood of current sample
#if USE_CLIPPING
texel1 = clip_aabb(cmin.xyz, cmax.xyz, clamp(cavg, cmin, cmax), texel1);
#else
texel1 = clamp(texel1, cmin, cmax);
#endif
// feedback weight from unbiased luminance diff (t.lottes)
#if USE_CHROMA_COLORSPACE
float lum0 = texel0.r;
float lum1 = texel1.r;
#else
#if APPROXIMATE_LUMINANCE_AS_GREEN
float lum0 = texel0.g;
float lum1 = texel1.g;
#else
float lum0 = Luminance(texel0.rgb);
float lum1 = Luminance(texel1.rgb);
#endif
#endif
float unbiased_diff = abs(lum0 - lum1) / max(lum0, max(lum1, 0.2));
float unbiased_weight = 1.0 - unbiased_diff;
float unbiased_weight_sqr = unbiased_weight * unbiased_weight;
float k_feedback = _FeedbackMin + unbiased_weight_sqr * _FeedbackMinMax;
// output
return lerp(texel0, texel1, k_feedback);
}
struct f2rt
{
fixed4 buffer : SV_Target0;
fixed4 screen : SV_Target1;
};
f2rt frag(v2f IN)
{
f2rt OUT;
#if UNJITTER_REPROJECTION
float2 uv = IN.ss_txc - _JitterUV.xy;
#else
float2 uv = IN.ss_txc;
#endif
//note: RPDF blue-noise
half4 rnd = tex2Dlod( _DitherTex, float4( IN.ss_txc * IN.mad.xy + IN.mad.zw, 0, 0) );
#if USE_DILATION_5X
//--- 5 tap nearest (decent)
float3 c_frag = find_closest_fragment_5tap(uv);
float2 ss_vel = tex2D(_VelocityBuffer, c_frag.xy).xy;
float vs_dist = depth_resolve_linear(c_frag.z);
#elif USE_DILATION_3X3
//--- 3x3 nearest (good)
float3 c_frag = find_closest_fragment_3x3(uv);
float2 ss_vel = tex2D(_VelocityBuffer, c_frag.xy).xy;
float vs_dist = depth_resolve_linear(c_frag.z);
#else
float2 ss_vel = tex2D(_VelocityBuffer, uv).xy;
float vs_dist = depth_sample_linear(uv);
#endif
// temporal resolve
float4 color_temporal = temporal_reprojection(IN.ss_txc, ss_vel, vs_dist);
// prepare outputs
float4 to_buffer = color_temporal;
#if USE_MOTION_BLUR
#if USE_MOTION_BLUR_NEIGHBORMAX
//ss_vel = _MotionScale * tex2D(_VelocityNeighborMax, IN.ss_txc).xy;
ss_vel = _MotionScale * sample_cubic(_VelocityNeighborMax, IN.ss_txc, _VelocityNeighborMax_TexelSize.zw).xy;
#else
ss_vel = _MotionScale * ss_vel;
#endif
float vel_mag = length(ss_vel * _MainTex_TexelSize.zw);
const float vel_trust_full = 2.0;
const float vel_trust_none = 15.0;
const float vel_trust_span = vel_trust_none - vel_trust_full;
float trust = 1.0 - clamp(vel_mag - vel_trust_full, 0.0, vel_trust_span) / vel_trust_span;
#if UNJITTER_COLORSAMPLES
half4 color_motion = sample_color_motion( IN.ss_txc - _JitterUV.xy, ss_vel, rnd.xy-0.5h);
#else
half4 color_motion = sample_color_motion( IN.ss_txc, ss_vel, rnd.xy-0.5h);
#endif
float4 to_screen = lerp(color_motion, color_temporal, trust);
#else
float4 to_screen = color_temporal;
#endif
to_buffer = from_working_colorspace( to_buffer );
to_screen = from_working_colorspace( to_screen );
//note: velocity debug
//to_screen.g += 100.0 * length(ss_vel);
//to_screen = float4(100.0 * abs(ss_vel), 0.0, 0.0);
// dither color-output
float4 noise4_tri = remap_noise_tri( rnd ) / 255.0;
OUT.buffer = saturate(to_buffer + noise4_tri);
OUT.screen = saturate(to_screen + noise4_tri);
return OUT;
}
//--- program end
ENDCG
SubShader
{
ZTest Always
Cull Off
ZWrite Off
Fog { Mode off }
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
ENDCG
}
}
Fallback off
}

View file

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 7ca93c1a56ee0154b8c714591d6d211a
timeCreated: 1437991034
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,309 @@
// Copyright (c) <2015> <Playdead>
// This file is subject to the MIT License as seen in the root of this folder structure (LICENSE.TXT)
// AUTHOR: Lasse Jon Fuglsang Pedersen <lasse@playdead.com>
Shader "Playdead/Post/VelocityBuffer"
{
CGINCLUDE
//--- program begin
#pragma only_renderers ps4 xboxone d3d11 d3d9 xbox360 opengl glcore gles3 metal vulkan
#pragma target 3.0
#pragma multi_compile CAMERA_PERSPECTIVE CAMERA_ORTHOGRAPHIC
#pragma multi_compile __ TILESIZE_10 TILESIZE_20 TILESIZE_40
#include "UnityCG.cginc"
#include "IncDepth.cginc"
#if UNITY_VERSION < 540
uniform float4x4 _CameraToWorld;// UNITY_SHADER_NO_UPGRADE
#endif
#if UNITY_VERSION < 550
#define STEREO_ARRAY
#define STEREO_INDEX(x) x
#else
#define STEREO_ARRAY [2]
#define STEREO_INDEX(x) x[unity_StereoEyeIndex]
#endif
uniform sampler2D_half _VelocityTex;
uniform float4 _VelocityTex_TexelSize;
uniform float4 _ProjectionExtents STEREO_ARRAY;// xy = frustum extents at distance 1, zw = jitter at distance 1
uniform float4x4 _CurrV STEREO_ARRAY;
uniform float4x4 _CurrVP STEREO_ARRAY;
uniform float4x4 _CurrM;
uniform float4x4 _PrevVP STEREO_ARRAY;
uniform float4x4 _PrevVP_NoFlip STEREO_ARRAY;
uniform float4x4 _PrevM;
struct blit_v2f
{
float4 cs_pos : SV_POSITION;
float2 ss_txc : TEXCOORD0;
float2 vs_ray : TEXCOORD1;
};
blit_v2f blit_vert(appdata_img IN)
{
blit_v2f OUT;
#if UNITY_VERSION < 540
OUT.cs_pos = mul(UNITY_MATRIX_MVP, IN.vertex);
#else
OUT.cs_pos = UnityObjectToClipPos(IN.vertex);
#endif
#if UNITY_SINGLE_PASS_STEREO
OUT.ss_txc = UnityStereoTransformScreenSpaceTex(IN.texcoord.xy);
#else
OUT.ss_txc = IN.texcoord.xy;
#endif
OUT.vs_ray = (2.0 * IN.texcoord.xy - 1.0) * STEREO_INDEX(_ProjectionExtents).xy + STEREO_INDEX(_ProjectionExtents).zw;
return OUT;
}
float4 blit_frag_prepass(blit_v2f IN) : SV_Target
{
// reconstruct world position
float vs_dist = depth_sample_linear(IN.ss_txc);
#if CAMERA_PERSPECTIVE
float3 vs_pos = float3(IN.vs_ray, 1.0) * vs_dist;
#elif CAMERA_ORTHOGRAPHIC
float3 vs_pos = float3(IN.vs_ray, vs_dist);
#else
#error "missing keyword CAMERA_..."
#endif
#if UNITY_VERSION < 540
float4 ws_pos = mul(_CameraToWorld, float4(vs_pos, 1.0));// UNITY_SHADER_NO_UPGRADE
#else
float4 ws_pos = mul(unity_CameraToWorld, float4(vs_pos, 1.0));
#endif
//// NOTE: world space debug at 3D crane
//return 0.1 * float4(ws_pos.xy - float2(595.0, -215.0), 0.0, 0.0);
// reproject into previous frame
float4 rp_cs_pos = mul(STEREO_INDEX(_PrevVP_NoFlip), ws_pos);
float2 rp_ss_ndc = rp_cs_pos.xy / rp_cs_pos.w;
float2 rp_ss_txc = 0.5 * rp_ss_ndc + 0.5;
// estimate velocity
#if UNITY_SINGLE_PASS_STEREO
float2 ss_vel = IN.ss_txc - UnityStereoTransformScreenSpaceTex(rp_ss_txc);
#else
float2 ss_vel = IN.ss_txc - rp_ss_txc;
#endif
// output
return float4(ss_vel, 0.0, 0.0);
}
float4 blit_frag_tilemax(blit_v2f IN) : SV_Target
{
#if TILESIZE_10
const int support = 10;
#elif TILESIZE_20
const int support = 20;
#elif TILESIZE_40
const int support = 40;
#else
const int support = 1;
#endif
const float2 step = _VelocityTex_TexelSize.xy;
const float2 base = IN.ss_txc + (0.5 - 0.5 * support) * step;
const float2 du = float2(_VelocityTex_TexelSize.x, 0.0);
const float2 dv = float2(0.0, _VelocityTex_TexelSize.y);
float2 mv = 0.0;
float rmv = 0.0;
[unroll(10)]
for (int i = 0; i != support; i++)
{
[unroll(10)]
for (int j = 0; j != support; j++)
{
float2 v = tex2D(_VelocityTex, base + i * dv + j * du).xy;
float rv = dot(v, v);
if (rv > rmv)
{
mv = v;
rmv = rv;
}
}
}
return float4(mv, 0.0, 0.0);
}
float4 blit_frag_neighbormax(blit_v2f IN) : SV_Target
{
const float2 du = float2(_VelocityTex_TexelSize.x, 0.0);
const float2 dv = float2(0.0, _VelocityTex_TexelSize.y);
float2 mv = 0.0;
float dmv = 0.0;
[unroll]
for (int i = -1; i <= 1; i++)
{
[unroll]
for (int j = -1; j <= 1; j++)
{
float2 v = tex2D(_VelocityTex, IN.ss_txc + i * dv + j * du).xy;
float dv = dot(v, v);
if (dv > dmv)
{
mv = v;
dmv = dv;
}
}
}
return float4(mv, 0.0, 0.0);
}
struct v2f
{
float4 cs_pos : SV_POSITION;
float4 ss_pos : TEXCOORD0;
float3 cs_xy_curr : TEXCOORD1;
float3 cs_xy_prev : TEXCOORD2;
};
v2f process_vertex(float4 ws_pos_curr, float4 ws_pos_prev)
{
v2f OUT;
const float occlusion_bias = 0.03;
OUT.cs_pos = mul(mul(STEREO_INDEX(_CurrVP), _CurrM), ws_pos_curr);
OUT.ss_pos = ComputeScreenPos(OUT.cs_pos);
OUT.ss_pos.z = -mul(mul(STEREO_INDEX(_CurrV), _CurrM), ws_pos_curr).z - occlusion_bias;// COMPUTE_EYEDEPTH
OUT.cs_xy_curr = OUT.cs_pos.xyw;
OUT.cs_xy_prev = mul(mul(STEREO_INDEX(_PrevVP), _PrevM), ws_pos_prev).xyw;
#if UNITY_UV_STARTS_AT_TOP
OUT.cs_xy_curr.y = -OUT.cs_xy_curr.y;
OUT.cs_xy_prev.y = -OUT.cs_xy_prev.y;
#endif
return OUT;
}
v2f vert(appdata_base IN)
{
return process_vertex(IN.vertex, IN.vertex);
}
v2f vert_skinned(appdata_base IN)
{
return process_vertex(IN.vertex, float4(IN.normal, 1.0));// previous frame positions stored in normal data
}
float4 frag(v2f IN) : SV_Target
{
float2 ss_txc = IN.ss_pos.xy / IN.ss_pos.w;
float scene_d = depth_sample_linear(ss_txc);
// discard if occluded
clip(scene_d - IN.ss_pos.z);
// compute velocity in ndc
float2 ndc_curr = IN.cs_xy_curr.xy / IN.cs_xy_curr.z;
float2 ndc_prev = IN.cs_xy_prev.xy / IN.cs_xy_prev.z;
// compute screen space velocity [0,1;0,1]
#if UNITY_SINGLE_PASS_STEREO
return float4(0.5 * (ndc_curr - ndc_prev) * unity_StereoScaleOffset[unity_StereoEyeIndex].xy, 0.0, 0.0);
#else
return float4(0.5 * (ndc_curr - ndc_prev), 0.0, 0.0);
#endif
}
//--- program end
ENDCG
SubShader
{
// 0: prepass
Pass
{
ZTest Always Cull Off ZWrite Off
Fog { Mode Off }
CGPROGRAM
#pragma vertex blit_vert
#pragma fragment blit_frag_prepass
ENDCG
}
// 1: vertices
Pass
{
ZTest LEqual Cull Back ZWrite On
Fog { Mode Off }
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
ENDCG
}
// 2: vertices skinned
Pass
{
ZTest LEqual Cull Back ZWrite On
Fog { Mode Off }
CGPROGRAM
#pragma vertex vert_skinned
#pragma fragment frag
ENDCG
}
// 3: tilemax
Pass
{
ZTest Always Cull Off ZWrite Off
Fog { Mode Off }
CGPROGRAM
#pragma vertex blit_vert
#pragma fragment blit_frag_tilemax
ENDCG
}
// 4: neighbormax
Pass
{
ZTest Always Cull Off ZWrite Off
Fog { Mode Off }
CGPROGRAM
#pragma vertex blit_vert
#pragma fragment blit_frag_neighbormax
ENDCG
}
}
Fallback Off
}

View file

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 0d7f09e63dd99504ca6e04212a21ec72
timeCreated: 1437991034
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d20256cc7e82c41409096d0f7337479b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Plugins/PDTAA/Textures/bluenoise_frd_256x256_uni.bmp (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,103 @@
fileFormatVersion: 2
guid: 859f329ee8606864ea19dbf373a5ec56
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 0
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 0
aniso: -1
mipBias: -100
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,38 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!84 &8400000
RenderTexture:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: MinimapInfluence
m_ImageContentsHash:
serializedVersion: 2
Hash: 00000000000000000000000000000000
m_ForcedFallbackFormat: 4
m_DownscaleFallback: 0
m_IsAlphaChannelOptional: 0
serializedVersion: 3
m_Width: 128
m_Height: 128
m_AntiAliasing: 1
m_MipCount: -1
m_DepthFormat: 0
m_ColorFormat: 45
m_MipMap: 0
m_GenerateMips: 1
m_SRGB: 0
m_UseDynamicScale: 0
m_BindMS: 0
m_EnableCompatibleFormat: 1
m_TextureSettings:
serializedVersion: 2
m_FilterMode: 1
m_Aniso: 0
m_MipBias: 0
m_WrapU: 1
m_WrapV: 1
m_WrapW: 1
m_Dimension: 2
m_VolumeDepth: 1

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 062a14e7a1633d54babe1abee2d80c8d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,98 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &7850317761668179095
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7850317761668179092}
- component: {fileID: 7850317761668179091}
- component: {fileID: 7850317761668179090}
- component: {fileID: 7850317761668179093}
m_Layer: 18
m_Name: Influence
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7850317761668179092
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7850317761668179095}
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 15, y: 15, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &7850317761668179091
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7850317761668179095}
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &7850317761668179090
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7850317761668179095}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a71206b06f60aec41bc533ba93ab7907, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!64 &7850317761668179093
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7850317761668179095}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 4
m_Convex: 0
m_CookingOptions: 30
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: f1bbcf6a20e34d9418b869c8d676cc94
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -1360,6 +1360,7 @@ GameObject:
- component: {fileID: 5982170916787493278}
- component: {fileID: 2332467440651030306}
- component: {fileID: 1529386971535378498}
- component: {fileID: 8850574344285972943}
m_Layer: 0
m_Name: Cube.049
m_TagString: Untagged
@ -1430,6 +1431,18 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &8850574344285972943
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1741851352965887119}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1cc21c48ee370cb42a042622dd21640d, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &1840369812660221961
GameObject:
m_ObjectHideFlags: 0
@ -3444,6 +3457,7 @@ GameObject:
- component: {fileID: 6648017987509753602}
- component: {fileID: 2732003696914504328}
- component: {fileID: 7695589938957892982}
- component: {fileID: 320934217430954188}
m_Layer: 0
m_Name: Hull.004
m_TagString: Untagged
@ -3516,6 +3530,18 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &320934217430954188
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4553351628973766712}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1cc21c48ee370cb42a042622dd21640d, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &4555381257277866707
GameObject:
m_ObjectHideFlags: 0
@ -5308,6 +5334,7 @@ GameObject:
- component: {fileID: 8072591294915822744}
- component: {fileID: 7601997898044220655}
- component: {fileID: 6947431414621374079}
- component: {fileID: 7966990959927922700}
m_Layer: 0
m_Name: Cube.051
m_TagString: Untagged
@ -5380,6 +5407,18 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &7966990959927922700
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6968646740625764887}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1cc21c48ee370cb42a042622dd21640d, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &7015110794178153480
GameObject:
m_ObjectHideFlags: 0
@ -5511,6 +5550,7 @@ GameObject:
- component: {fileID: 3037576536437670490}
- component: {fileID: 6420375232892593331}
- component: {fileID: 8014406518873149156}
- component: {fileID: 8564200023711343795}
m_Layer: 0
m_Name: Hull.010
m_TagString: Untagged
@ -5585,6 +5625,18 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &8564200023711343795
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7253753735530809807}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1cc21c48ee370cb42a042622dd21640d, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &7258030204231142313
GameObject:
m_ObjectHideFlags: 0
@ -5626,6 +5678,7 @@ GameObject:
- component: {fileID: 1657475964761482609}
- component: {fileID: 8396090283581331778}
- component: {fileID: 5141865500411795960}
- component: {fileID: 5262020600399391909}
m_Layer: 0
m_Name: Cylinder.025
m_TagString: Untagged
@ -5697,6 +5750,18 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &5262020600399391909
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7286026838022331306}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1cc21c48ee370cb42a042622dd21640d, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &7319092097286478592
GameObject:
m_ObjectHideFlags: 0
@ -6166,6 +6231,7 @@ GameObject:
- component: {fileID: 6959970163171280326}
- component: {fileID: 32648527837932663}
- component: {fileID: 5343439461626062230}
- component: {fileID: 6805497031889056063}
m_Layer: 0
m_Name: Hull.006
m_TagString: Untagged
@ -6236,6 +6302,18 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &6805497031889056063
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7731301006886985777}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1cc21c48ee370cb42a042622dd21640d, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &7734916916328946021
GameObject:
m_ObjectHideFlags: 0
@ -6486,6 +6564,7 @@ GameObject:
- component: {fileID: 225284819656620592}
- component: {fileID: 3554018075767873258}
- component: {fileID: 2704032319350053861}
- component: {fileID: 2654596628680292669}
m_Layer: 0
m_Name: Hull.008
m_TagString: Untagged
@ -6559,6 +6638,18 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &2654596628680292669
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7922225689561348092}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1cc21c48ee370cb42a042622dd21640d, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &7930906210874266039
GameObject:
m_ObjectHideFlags: 0
@ -6929,6 +7020,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 1306f57022ae47ceba7441145a065cb1, type: 3}
m_Name:
m_EditorClassIdentifier:
InfluencePrefab: {fileID: 0}
PingPrefab: {fileID: 3496685214803260728, guid: bfcaa66e173f6a44cb640aabbcb5e429,
type: 3}
InvisibleMaterial: {fileID: 2100000, guid: c94a225de88e5ce42af01c34df3521e6, type: 2}
@ -6977,6 +7069,7 @@ GameObject:
- component: {fileID: 373238189327005759}
- component: {fileID: 8732357745223299660}
- component: {fileID: 3811640789220449742}
- component: {fileID: 8364907577857583681}
m_Layer: 0
m_Name: Hull.007
m_TagString: Untagged
@ -7047,6 +7140,18 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &8364907577857583681
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8620289461215737213}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1cc21c48ee370cb42a042622dd21640d, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &8724264203377141667
GameObject:
m_ObjectHideFlags: 0

View file

@ -58,6 +58,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 1306f57022ae47ceba7441145a065cb1, type: 3}
m_Name:
m_EditorClassIdentifier:
InfluencePrefab: {fileID: 0}
PingPrefab: {fileID: 3496685214803260728, guid: bfcaa66e173f6a44cb640aabbcb5e429,
type: 3}
InvisibleMaterial: {fileID: 2100000, guid: c94a225de88e5ce42af01c34df3521e6, type: 2}
@ -1730,6 +1731,7 @@ GameObject:
- component: {fileID: 4028928668500718027}
- component: {fileID: 6423368230359933839}
- component: {fileID: 8693096897863455396}
- component: {fileID: 2748941174002375643}
m_Layer: 0
m_Name: Cube.043
m_TagString: Untagged
@ -1808,6 +1810,18 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &2748941174002375643
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8882633467169423962}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1cc21c48ee370cb42a042622dd21640d, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &3244127278357174761
PrefabInstance:
m_ObjectHideFlags: 0

View file

@ -154,8 +154,13 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 170aefb3b5cd0e444826f3561d38a962, type: 3}
m_Name:
m_EditorClassIdentifier:
InfluencePrefab: {fileID: 7850317761668179092, guid: f1bbcf6a20e34d9418b869c8d676cc94,
type: 3}
PingPrefab: {fileID: 0}
InvisibleMaterial: {fileID: 2100000, guid: c94a225de88e5ce42af01c34df3521e6, type: 2}
Shield: {fileID: 0}
HullColliders: []
EquipmentHardpoints: []
RadiatorHardpoints: []
ThrusterHardpoints: []
WeaponHardpoints: []

View file

@ -25,7 +25,7 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3270076511764283730}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
@ -35,14 +35,13 @@ Transform:
--- !u!198 &8928170315538518364
ParticleSystem:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 4210795439511044087, guid: 016516404b2bc1649bdf789bfc96d1cb,
type: 3}
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3270076511764283730}
serializedVersion: 7
lengthInSec: 5
simulationSpeed: 5
simulationSpeed: 2
stopAction: 0
cullingMode: 0
ringBufferMode: 0
@ -106,7 +105,7 @@ ParticleSystem:
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
moveWithTransform: 0
moveWithTransform: 2
moveWithCustomTransform: {fileID: 0}
scalingMode: 2
randomSeed: 0
@ -116,7 +115,7 @@ ParticleSystem:
startLifetime:
serializedVersion: 2
minMaxState: 0
scalar: 1
scalar: 0.5
minScalar: 5
maxCurve:
serializedVersion: 2
@ -747,7 +746,7 @@ ParticleSystem:
sphericalDirectionAmount: 0
randomPositionAmount: 0
radius:
value: 5
value: 10
mode: 0
spread: 0
speed:
@ -866,7 +865,7 @@ ParticleSystem:
rateOverTime:
serializedVersion: 2
minMaxState: 0
scalar: 50
scalar: 75
minScalar: 10
maxCurve:
serializedVersion: 2
@ -2194,13 +2193,13 @@ ParticleSystem:
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
value: -1
inSlope: 3.072868
outSlope: 3.072868
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
outWeight: 0.11519607
- serializedVersion: 3
time: 1
value: 0
@ -2247,21 +2246,21 @@ ParticleSystem:
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 34
value: -1
inSlope: 3.0251138
outSlope: 3.0251138
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0.33333334
outWeight: 0.09068627
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 34
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
inWeight: 0.12531352
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
@ -2343,7 +2342,7 @@ ParticleSystem:
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
inWorldSpace: 0
inWorldSpace: 1
randomizePerFrame: 0
ExternalForcesModule:
serializedVersion: 2
@ -2683,7 +2682,7 @@ ParticleSystem:
strength:
serializedVersion: 2
minMaxState: 0
scalar: 100
scalar: 25
minScalar: 1
maxCurve:
serializedVersion: 2
@ -4072,7 +4071,7 @@ ParticleSystem:
widthOverTrail:
serializedVersion: 2
minMaxState: 1
scalar: 0.5
scalar: 0.25
minScalar: 1
maxCurve:
serializedVersion: 2
@ -4080,12 +4079,12 @@ ParticleSystem:
- serializedVersion: 3
time: 0
value: 0
inSlope: -1.7320683
outSlope: -1.7320683
inSlope: 6.705435
outSlope: 6.705435
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0.08387097
outWeight: 0.034313723
- serializedVersion: 3
time: 1
value: 0
@ -4772,7 +4771,7 @@ ParticleSystemRenderer:
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 6af0f423a2567be43b16d152d2b60e0c, type: 2}
- {fileID: 2100000, guid: 9c20b9ccbbbb1b14cb5729e0c8460cd9, type: 2}
- {fileID: 2100000, guid: 555ada90c0f01654a9387483bd95a688, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0

View file

@ -0,0 +1,147 @@
[
[
"Esc",
{
"x": 1
},
"F1",
"F2",
"F3",
"F4",
{
"x": 0.5
},
"F5",
"F6",
"F7",
"F8",
{
"x": 0.5
},
"F9",
"F10",
"F11",
"F12"
],
[
{
"y": 0.5
},
"~\n`",
"!\n1",
"@\n2",
"#\n3",
"$\n4",
"%\n5",
"^\n6",
"&\n7",
"*\n8",
"(\n9",
")\n0",
"_\n-",
"+\n=",
{
"w": 2
},
"Backspace"
],
[
{
"w": 1.5
},
"Tab",
"Q",
"W",
"E",
"R",
"T",
"Y",
"U",
"I",
"O",
"P",
"{\n[",
"}\n]",
{
"w": 1.5
},
"|\n\\"
],
[
{
"w": 1.75
},
"Caps Lock",
"A",
"S",
"D",
"F",
"G",
"H",
"J",
"K",
"L",
":\n;",
"\"\n'",
{
"w": 2.25
},
"Enter"
],
[
{
"w": 2.25
},
"Shift",
"Z",
"X",
"C",
"V",
"B",
"N",
"M",
"<\n,",
">\n.",
"?\n/",
{
"w": 2.75
},
"Shift"
],
[
{
"w": 1.25
},
"Ctrl",
{
"w": 1.25
},
"",
{
"w": 1.25
},
"Alt",
{
"a": 7,
"w": 6.25
},
"",
{
"a": 4,
"w": 1.25
},
"Alt",
{
"w": 1.25
},
"",
{
"w": 1.25
},
"Menu",
{
"w": 1.25
},
"Ctrl"
]
]

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4fc56bdb9d966dc4aa0df52357227c52
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,214 @@
[
[
"Esc",
{
"x": 1
},
"F1",
"F2",
"F3",
"F4",
{
"x": 0.5
},
"F5",
"F6",
"F7",
"F8",
{
"x": 0.5
},
"F9",
"F10",
"F11",
"F12",
{
"x": 0.25
},
"",
"",
""
],
[
{
"y": 0.5
},
"~\n`",
"!\n1",
"@\n2",
"#\n3",
"$\n4",
"%\n5",
"^\n6",
"&\n7",
"*\n8",
"(\n9",
")\n0",
"_\n-",
"+\n=",
{
"w": 2
},
"Backspace",
{
"x": 0.25
},
"Insert",
"Home",
"PgUp",
{
"x": 0.25
},
"",
"/",
"*",
"-"
],
[
{
"w": 1.5
},
"Tab",
"Q",
"W",
"E",
"R",
"T",
"Y",
"U",
"I",
"O",
"P",
"{\n[",
"}\n]",
{
"w": 1.5
},
"|\n\\",
{
"x": 0.25
},
"Delete",
"End",
"PgDn",
{
"x": 0.25
},
"7\nHome",
"8\n↑",
"9\nPgUp",
{
"h": 2
},
"+"
],
[
{
"w": 1.75
},
"Caps Lock",
"A",
"S",
"D",
"F",
"G",
"H",
"J",
"K",
"L",
":\n;",
"\"\n'",
{
"w": 2.25
},
"Enter",
{
"x": 3.5
},
"4\n←",
"5",
"6\n→"
],
[
{
"w": 2.25
},
"Shift",
"Z",
"X",
"C",
"V",
"B",
"N",
"M",
"<\n,",
">\n.",
"?\n/",
{
"w": 2.75
},
"Shift",
{
"x": 1.25
},
"↑",
{
"x": 1.25
},
"1\nEnd",
"2\n↓",
"3\nPgDn",
{
"h": 2
},
"Enter"
],
[
{
"w": 1.25
},
"Ctrl",
{
"w": 1.25
},
"",
{
"w": 1.25
},
"Alt",
{
"a": 7,
"w": 6.25
},
"Spacebar",
{
"a": 4,
"w": 1.25
},
"Alt",
{
"w": 1.25
},
"",
{
"w": 1.25
},
"",
{
"w": 1.25
},
"Ctrl",
{
"x": 0.25
},
"←",
"↓",
"→",
{
"x": 0.25,
"w": 2
},
"0\nIns",
".\nDel"
]
]

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 44459239c373d2c449a479e84867648a
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -2551,6 +2551,7 @@ Transform:
m_Children:
- {fileID: 488792361}
- {fileID: 970624070}
- {fileID: 2095741462}
m_Father: {fileID: 1665127616}
m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -3065,7 +3066,7 @@ GameObject:
- component: {fileID: 225222198}
m_Layer: 0
m_Name: Sector Camera
m_TagString: MainCamera
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
@ -3856,7 +3857,7 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 630131159}
m_RootOrder: 2
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
@ -4130,7 +4131,7 @@ RectTransform:
- {fileID: 1558182381}
- {fileID: 519840346}
m_Father: {fileID: 2352149241280877834}
m_RootOrder: 5
m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
@ -7007,6 +7008,80 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 425375562}
m_CullTransparentMesh: 0
--- !u!1 &439363413
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 439363414}
- component: {fileID: 439363415}
m_Layer: 0
m_Name: Map Influence
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &439363414
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 439363413}
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: 0, y: 10, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 826773974}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!20 &439363415
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 439363413}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 2
m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 1
orthographic size: 1000
m_Depth: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 262144
m_RenderingPath: 1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 0
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 0
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!1 &444837017
GameObject:
m_ObjectHideFlags: 0
@ -7787,7 +7862,7 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 2352149241280877834}
m_RootOrder: 1
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
@ -9924,6 +9999,7 @@ RectTransform:
m_Children:
- {fileID: 218215090}
- {fileID: 800990061}
- {fileID: 1390179642}
- {fileID: 250585915}
- {fileID: 1130044040}
m_Father: {fileID: 1726632265}
@ -9959,9 +10035,11 @@ MonoBehaviour:
MapOverlayCamera: {fileID: 1075335643}
GravityCamera: {fileID: 326516967}
TintCamera: {fileID: 166261018}
InfluenceCamera: {fileID: 439363415}
OverlayDisplay: {fileID: 250585913}
GravityDisplay: {fileID: 800990059}
TintDisplay: {fileID: 218215088}
InfluenceDisplay: {fileID: 1390179643}
Scale: 1
Position:
x: 0
@ -13329,6 +13407,7 @@ Transform:
- {fileID: 326516965}
- {fileID: 1075335641}
- {fileID: 166261017}
- {fileID: 439363414}
m_Father: {fileID: 1665127616}
m_RootOrder: 7
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -15412,7 +15491,7 @@ GameObject:
- component: {fileID: 970624070}
- component: {fileID: 970624071}
- component: {fileID: 970624072}
m_Layer: 14
m_Layer: 0
m_Name: Map Overlays
m_TagString: Untagged
m_Icon: {fileID: 0}
@ -15976,7 +16055,7 @@ GameObject:
- component: {fileID: 1005979868}
m_Layer: 0
m_Name: Influence Camera
m_TagString: MainCamera
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
@ -16087,9 +16166,7 @@ GameObject:
- component: {fileID: 1009503730}
- component: {fileID: 1009503729}
- component: {fileID: 1009503731}
- component: {fileID: 1009503732}
- component: {fileID: 1009503733}
- component: {fileID: 1009503734}
- component: {fileID: 1009503735}
- component: {fileID: 1009503736}
m_Layer: 0
@ -16217,6 +16294,7 @@ MonoBehaviour:
MinimapCameras:
- {fileID: 488792362}
- {fileID: 970624071}
- {fileID: 2095741464}
FogMaterial: {fileID: 2100000, guid: 2ff39f5d101241043ba1dcde19d92f77, type: 2}
FogFarFadeFraction: 0.125
FarPlaneDistanceMultiplier: 2
@ -16307,19 +16385,6 @@ MonoBehaviour:
Sun: {fileID: 2259714927540639794, guid: 046dde0f4600bce41ad33c476f99b309, type: 3}
PlanetoidIcon: {fileID: 2800000, guid: 823d8a1c4e071994087624c39f62b319, type: 3}
PlanetIcon: {fileID: 2800000, guid: 0d2acbd593b7fd349b0b26b4844733ef, type: 3}
--- !u!114 &1009503732
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1009503727}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 13f1fa636e0245e42be783568a76e3d6, type: 3}
m_Name:
m_EditorClassIdentifier:
NoiseTexture: {fileID: 2800000, guid: 7c0a392de8821f345824a79dea0d0d41, type: 3}
--- !u!114 &1009503733
MonoBehaviour:
m_ObjectHideFlags: 0
@ -16407,24 +16472,6 @@ MonoBehaviour:
m_DefaultActionMap: Player
m_SplitScreenIndex: -1
m_Camera: {fileID: 2115559089}
--- !u!114 &1009503734
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1009503727}
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 76d9e45f376fcfe409f3a4f26ccb4f3e, type: 3}
m_Name:
m_EditorClassIdentifier:
Main: {fileID: 2115559089}
MinimapGravity: {fileID: 488792362}
Minimap: {fileID: 970624071}
GravityRenderer: {fileID: 0}
ZoomSpeed: 0.001
ZoneRenderer: {fileID: 1009503731}
--- !u!114 &1009503735
MonoBehaviour:
m_ObjectHideFlags: 0
@ -16442,12 +16489,12 @@ MonoBehaviour:
ParticleMaterial: {fileID: 2100000, guid: fc00c35c3c370774c88d55240b6538ce, type: 2}
Span: 512
Speed: 0.25
MinimumSize: 1
MaximumSize: 1
Spacing: 8
Ceiling: -400
Floor: -30
HeightExponent: 1000
MinimumSize: 0.0025
MaximumSize: 0.005
Spacing: 4
Ceiling: -430
Floor: -50
HeightExponent: 100000
Heightmap: {fileID: 8400000, guid: 2fc21a9d3e9647948b56e384cd9378b3, type: 2}
ParticleColors: {fileID: 2800000, guid: 56db63da398b2d04394ddbccedce943c, type: 3}
GravityCamera: {fileID: 1537342003}
@ -18180,7 +18227,7 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 630131159}
m_RootOrder: 3
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
@ -20796,6 +20843,81 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1367229140}
m_CullTransparentMesh: 0
--- !u!1 &1390179641
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1390179642}
- component: {fileID: 1390179644}
- component: {fileID: 1390179643}
m_Layer: 5
m_Name: Influence
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1390179642
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1390179641}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 630131159}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1390179643
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1390179641}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 2100000, guid: bb2e981dfdefd024692ad49294e51a23, type: 2}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: d4144ee6db2bf3c468cc5010acfe8974, type: 3}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!222 &1390179644
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1390179641}
m_CullTransparentMesh: 0
--- !u!1 &1390575962
GameObject:
m_ObjectHideFlags: 0
@ -22485,7 +22607,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &1485884352
RectTransform:
m_ObjectHideFlags: 0
@ -22586,7 +22708,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Local
m_text: Explore
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: f65e20c70af9671428dd62c7c635e417, type: 2}
m_sharedMaterial: {fileID: 2100000, guid: 0e7beef0cfe7ac44cb03690b8e068c5e, type: 2}
@ -23189,6 +23311,78 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1529341206}
m_CullTransparentMesh: 0
--- !u!1 &1532617454
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1532617455}
- component: {fileID: 1532617457}
- component: {fileID: 1532617456}
m_Layer: 5
m_Name: Influence
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1532617455
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1532617454}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 2352149241280877834}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1532617456
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1532617454}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 2100000, guid: f965075cca2ff2943ad339387269e057, type: 2}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Texture: {fileID: 2800000, guid: d4144ee6db2bf3c468cc5010acfe8974, type: 3}
m_UVRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
--- !u!222 &1532617457
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1532617454}
m_CullTransparentMesh: 0
--- !u!1 &1537342001
GameObject:
m_ObjectHideFlags: 0
@ -30434,6 +30628,100 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2095741461
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2095741462}
- component: {fileID: 2095741464}
- component: {fileID: 2095741463}
m_Layer: 0
m_Name: Map Influence
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2095741462
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2095741461}
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: 0, y: 10, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 199435031}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!114 &2095741463
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2095741461}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7ec4eea2d4fa2f64f80e17d11987e6f6, type: 3}
m_Name:
m_EditorClassIdentifier:
Target: {fileID: 2115559090}
CopyXPosition: 1
CopyYPosition: 0
CopyZPosition: 1
CopyRotation: 0
PixelSnapCamera: {fileID: 0}
PixelSnapIncrement: 1
--- !u!20 &2095741464
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2095741461}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 2
m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 1
orthographic size: 1000
m_Depth: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 262144
m_RenderingPath: 1
m_TargetTexture: {fileID: 8400000, guid: 062a14e7a1633d54babe1abee2d80c8d, type: 2}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 0
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 0
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!1 &2101419017
GameObject:
m_ObjectHideFlags: 0
@ -30728,12 +31016,15 @@ GameObject:
m_Component:
- component: {fileID: 2115559090}
- component: {fileID: 2115559089}
- component: {fileID: 2115559098}
- component: {fileID: 2115559091}
- component: {fileID: 2115559092}
- component: {fileID: 2115559093}
- component: {fileID: 2115559094}
- component: {fileID: 2115559095}
- component: {fileID: 2115559088}
- component: {fileID: 2115559097}
- component: {fileID: 2115559096}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
@ -30766,7 +31057,7 @@ Camera:
serializedVersion: 2
m_ClearFlags: 2
m_BackGroundColor: {r: 0.16037738, g: 0.16037738, b: 0.16037738, a: 1}
m_projectionMatrixMode: 1
m_projectionMatrixMode: 0
m_GateFitMode: 2
m_FOVAxisMode: 0
m_SensorSize: {x: 36, y: 24}
@ -30830,7 +31121,7 @@ MonoBehaviour:
m_Bits: 256
stopNaNPropagation: 1
finalBlitToCameraTarget: 0
antialiasingMode: 3
antialiasingMode: 0
temporalAntialiasing:
jitterSpread: 1
sharpness: 0
@ -30957,6 +31248,66 @@ MonoBehaviour:
positionOffset: {x: 0, y: 0, z: 0}
m_posOffsetData: {fileID: 0}
listenerMask: 1
--- !u!114 &2115559096
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2115559087}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b642ff60407fe724bafa6602199213c0, type: 3}
m_Name:
m_EditorClassIdentifier:
velocityShader: {fileID: 4800000, guid: 0d7f09e63dd99504ca6e04212a21ec72, type: 3}
neighborMaxGen: 0
neighborMaxSupport: 1
numResident: 0
numRendered: 0
numDrawCalls: 0
--- !u!114 &2115559097
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2115559087}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 899f97884c6d96b4ca20648ec109a37f, type: 3}
m_Name:
m_EditorClassIdentifier:
pattern: 12
patternScale: 1
activeSample: {x: 0.25, y: -0.3888889, z: -0.25, w: 0.16666669}
activeIndex: 2
--- !u!114 &2115559098
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2115559087}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 65f5677aa325c184f801528d78a73827, type: 3}
m_Name:
m_EditorClassIdentifier:
ditherTex: {fileID: 2800000, guid: 859f329ee8606864ea19dbf373a5ec56, type: 3}
reprojectionShader: {fileID: 4800000, guid: 7ca93c1a56ee0154b8c714591d6d211a, type: 3}
colorspace: 0
useHigherOrderFilteringMainColor: 1
useHigherOrderFilteringHistory: 1
historyRectification: 0
useVarianceClipping: 1
useAABBRounding: 1
dilation: 2
useMotionBlur: 0
feedbackMin: 0.615
feedbackMax: 0.99
motionBlurStrength: 1
motionBlurIgnoreFF: 0
--- !u!1 &2117796865
GameObject:
m_ObjectHideFlags: 0
@ -31470,7 +31821,7 @@ GameObject:
- component: {fileID: 2132980329}
- component: {fileID: 2132980328}
m_Layer: 0
m_Name: Sector View
m_Name: Galaxy View
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@ -32658,7 +33009,7 @@ RectTransform:
- {fileID: 2352149241950064198}
- {fileID: 2352149240859250049}
m_Father: {fileID: 2352149241280877834}
m_RootOrder: 4
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@ -33100,7 +33451,7 @@ RectTransform:
- {fileID: 2352149241923245455}
- {fileID: 2352149240139726782}
m_Father: {fileID: 2352149241280877834}
m_RootOrder: 3
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 15}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@ -33343,7 +33694,7 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 2352149241280877834}
m_RootOrder: 2
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
@ -34163,6 +34514,7 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 2352149241570183590}
- {fileID: 1532617455}
- {fileID: 496438311}
- {fileID: 2352149240782116564}
- {fileID: 2352149240622546024}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: c0c66914238f72742a7fa32c7df0fc02
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -820,7 +820,6 @@ GameObject:
m_Component:
- component: {fileID: 750375534}
- component: {fileID: 750375535}
- component: {fileID: 750375536}
m_Layer: 0
m_Name: Manager
m_TagString: Untagged
@ -858,29 +857,16 @@ MonoBehaviour:
ParticleCalculation: {fileID: 7200000, guid: f53a4ba56f0db2a49ad9f68150bf298a, type: 3}
ParticleMaterial: {fileID: 2100000, guid: fc00c35c3c370774c88d55240b6538ce, type: 2}
Span: 256
Speed: 0.125
MinimumSize: 0.25
MaximumSize: 1
Spacing: 2
Speed: 0.25
MinimumSize: 0.0025
MaximumSize: 0.005
Spacing: 4
Ceiling: 0
Floor: -60
HeightExponent: 800
Floor: -40
HeightExponent: 1000
Heightmap: {fileID: 8400000, guid: 2fc21a9d3e9647948b56e384cd9378b3, type: 2}
ParticleColors: {fileID: 2800000, guid: 56db63da398b2d04394ddbccedce943c, type: 3}
GravityCamera: {fileID: 2103364771}
--- !u!114 &750375536
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 750375533}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 13f1fa636e0245e42be783568a76e3d6, type: 3}
m_Name:
m_EditorClassIdentifier:
NoiseTexture: {fileID: 2800000, guid: 7c0a392de8821f345824a79dea0d0d41, type: 3}
--- !u!1 &765320284
GameObject:
m_ObjectHideFlags: 0
@ -1098,6 +1084,7 @@ GameObject:
- component: {fileID: 850359438}
- component: {fileID: 850359441}
- component: {fileID: 850359439}
- component: {fileID: 850359440}
m_Layer: 0
m_Name: Persist
m_TagString: Untagged
@ -1170,6 +1157,19 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
MusicSoundbankName: Main_Menu
--- !u!114 &850359440
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 850359435}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 13f1fa636e0245e42be783568a76e3d6, type: 3}
m_Name:
m_EditorClassIdentifier:
NoiseTexture: {fileID: 2800000, guid: 7c0a392de8821f345824a79dea0d0d41, type: 3}
--- !u!114 &850359441
MonoBehaviour:
m_ObjectHideFlags: 0
@ -1207,9 +1207,12 @@ GameObject:
- component: {fileID: 965376323}
- component: {fileID: 965376327}
- component: {fileID: 965376326}
- component: {fileID: 965376331}
- component: {fileID: 965376325}
- component: {fileID: 965376322}
- component: {fileID: 965376328}
- component: {fileID: 965376330}
- component: {fileID: 965376329}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
@ -1262,7 +1265,7 @@ Camera:
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0}
m_projectionMatrixMode: 1
m_projectionMatrixMode: 0
m_GateFitMode: 2
m_FOVAxisMode: 0
m_SensorSize: {x: 36, y: 24}
@ -1326,7 +1329,7 @@ MonoBehaviour:
m_Bits: 256
stopNaNPropagation: 1
finalBlitToCameraTarget: 0
antialiasingMode: 3
antialiasingMode: 0
temporalAntialiasing:
jitterSpread: 1
sharpness: 0.25
@ -1418,6 +1421,66 @@ MonoBehaviour:
m_EditorClassIdentifier:
_volMaterial: {fileID: 2100000, guid: e21702a5e6e98b7409d6913663ceab7e, type: 2}
GridTransform: {fileID: 1172538221}
--- !u!114 &965376329
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 965376321}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b642ff60407fe724bafa6602199213c0, type: 3}
m_Name:
m_EditorClassIdentifier:
velocityShader: {fileID: 4800000, guid: 0d7f09e63dd99504ca6e04212a21ec72, type: 3}
neighborMaxGen: 0
neighborMaxSupport: 1
numResident: 0
numRendered: 0
numDrawCalls: 0
--- !u!114 &965376330
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 965376321}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 899f97884c6d96b4ca20648ec109a37f, type: 3}
m_Name:
m_EditorClassIdentifier:
pattern: 12
patternScale: 1
activeSample: {x: -0.375, y: -0.055555552, z: 0.25, w: -0.3888889}
activeIndex: 3
--- !u!114 &965376331
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 965376321}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 65f5677aa325c184f801528d78a73827, type: 3}
m_Name:
m_EditorClassIdentifier:
ditherTex: {fileID: 2800000, guid: 859f329ee8606864ea19dbf373a5ec56, type: 3}
reprojectionShader: {fileID: 4800000, guid: 7ca93c1a56ee0154b8c714591d6d211a, type: 3}
colorspace: 0
useHigherOrderFilteringMainColor: 0
useHigherOrderFilteringHistory: 1
historyRectification: 0
useVarianceClipping: 1
useAABBRounding: 1
dilation: 2
useMotionBlur: 1
feedbackMin: 0.88
feedbackMax: 0.97
motionBlurStrength: 1
motionBlurIgnoreFF: 0
--- !u!4 &971662241 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 7852221720971737233, guid: 046dde0f4600bce41ad33c476f99b309,

View file

@ -20,8 +20,6 @@ public class ActionBarSlot : MonoBehaviour
public ObservablePointerExitTrigger PointerExitTrigger;
private ActionBarBinding binding;
public Entity Entity { get; set; }
public ActionBarBinding Binding
{
get => binding;
@ -53,7 +51,7 @@ public class ActionBarSlot : MonoBehaviour
},
ActionBarGearBinding actionBarGearBinding => new SavedActionBarGearBinding
{
EquipmentIndex = Entity.Equipment.IndexOf(actionBarGearBinding.Item),
EquipmentIndex = actionBarGearBinding.Entity.Equipment.IndexOf(actionBarGearBinding.Item),
BehaviorIndex = Array.IndexOf(actionBarGearBinding.Item.Behaviors, actionBarGearBinding.Behavior)
},
ActionBarWeaponGroupBinding actionBarWeaponGroupBinding => new SavedActionBarWeaponGroupBinding
@ -64,24 +62,24 @@ public class ActionBarSlot : MonoBehaviour
};
}
public void Restore(SavedActionBarBinding binding)
public void Restore(SavedActionBarBinding binding, Entity entity)
{
Binding = binding switch
{
SavedActionBarConsumableBinding savedActionBarConsumableBinding =>
new ActionBarConsumableBinding(
Entity,
entity,
this,
savedActionBarConsumableBinding.Target.Value),
SavedActionBarGearBinding savedActionBarGearBinding =>
new ActionBarGearBinding(
Entity,
entity,
this,
Entity.Equipment[savedActionBarGearBinding.EquipmentIndex],
Entity.Equipment[savedActionBarGearBinding.EquipmentIndex]
entity.Equipment[savedActionBarGearBinding.EquipmentIndex],
entity.Equipment[savedActionBarGearBinding.EquipmentIndex]
.Behaviors[savedActionBarGearBinding.BehaviorIndex] as IActivatedBehavior),
SavedActionBarWeaponGroupBinding savedActionBarWeaponGroupBinding =>
new ActionBarWeaponGroupBinding(Entity, this, savedActionBarWeaponGroupBinding.Group),
new ActionBarWeaponGroupBinding(entity, this, savedActionBarWeaponGroupBinding.Group),
_ => null
};
}
@ -89,7 +87,7 @@ public class ActionBarSlot : MonoBehaviour
public abstract class ActionBarBinding
{
protected Entity Entity { get; }
public Entity Entity { get; }
protected ActionBarSlot Slot { get; }
public abstract void Activate();
public abstract void Deactivate();
@ -192,7 +190,7 @@ public class ActionBarWeaponGroupBinding : ActionBarBinding
public override void Activate()
{
foreach (var weapon in Entity.TriggerGroups[Group].weapons)
foreach (var weapon in Entity.WeaponGroups[Group].weapons)
{
weapon.Activate();
}
@ -200,7 +198,7 @@ public class ActionBarWeaponGroupBinding : ActionBarBinding
public override void Deactivate()
{
foreach (var weapon in Entity.TriggerGroups[Group].weapons)
foreach (var weapon in Entity.WeaponGroups[Group].weapons)
{
weapon.Deactivate();
}

View file

@ -477,14 +477,6 @@ public class ActionGameManager : MonoBehaviour
num.InputLabel.text = i.ToString();
}
if(PlayerSettings.SavedRun!=null)
{
for (var i = 0; i < _actionBarSlots.Count; i++)
{
_actionBarSlots[i].Restore(PlayerSettings.SavedRun.ActionBarBindings[i]);
}
}
#endregion
#endregion
@ -801,6 +793,11 @@ public class ActionGameManager : MonoBehaviour
//StartCoroutine(IntroCutscene(targetEntity as Ship));
BindToEntity(targetEntity);
}
for (var i = 0; i < _actionBarSlots.Count; i++)
{
_actionBarSlots[i].Restore(PlayerSettings.SavedRun.ActionBarBindings[i], CurrentEntity);
}
}
}
}

View file

@ -11,6 +11,7 @@ using Random = UnityEngine.Random;
public class EntityInstance : MonoBehaviour
{
public Transform InfluencePrefab;
public Transform PingPrefab;
public Material InvisibleMaterial;
public static Transform EffectManagerParent;
@ -42,6 +43,7 @@ public class EntityInstance : MonoBehaviour
private (Transform transform, MeshRenderer meshRenderer) _currentPing;
private float _pingBrightness;
private Sensor _sensor;
private Transform _influenceInstance;
private List<(GameObject source, EquippedItem item)> _audioSources = new List<(GameObject source, EquippedItem item)>();
// private (Reactor reactor, GameObject sfxSource) _reactor;
@ -444,15 +446,12 @@ public class EntityInstance : MonoBehaviour
}
}));
// _subscriptions.Add(entity.Docked.Take(1).Subscribe(parent =>
// {
// if (Visible)
// {
// FadeOut(sectorRenderer.EntityFadeTime);
// OnFadedOut += () => entity.Zone.Entities.Remove(entity);
// }
// else entity.Zone.Entities.Remove(entity);
// }));
// TODO: ActionGameManager.CurrentSector.FactionRelationships[orbital.Faction]
if (entity is OrbitalEntity orbital && orbital.SecurityRadius > 1)// && (int) orbital.SecurityLevel > (int) SecurityLevel.Secure)
{
_influenceInstance = Instantiate(InfluencePrefab);
_influenceInstance.transform.localScale = Vector3.one * orbital.SecurityRadius;
}
}
public Transform GetBarrel(HardpointData hardpoint)
@ -473,7 +472,6 @@ public class EntityInstance : MonoBehaviour
{
AkSoundEngine.SetObjectPosition(source, source.transform);
}
LocalSpace.localPosition = transform.localPosition;
if (_currentPing.transform)
{
_currentPing.transform.localScale = _sensor.PingRadius * Vector3.one;
@ -518,7 +516,7 @@ public class EntityInstance : MonoBehaviour
foreach (var x in RadiatorMeshes)
{
x.Value.material.SetFloat("_Emission", Entity.ItemManager.GameplaySettings.TemperatureEmissionCurve.Evaluate(x.Key.Temperature));
x.Value.material.SetFloat("_Emission", Entity.ItemManager.GameplaySettings.TemperatureEmissionCurve.Evaluate(x.Key.RadiatorTemperature));
}
foreach (var x in Barrels)
@ -528,11 +526,14 @@ public class EntityInstance : MonoBehaviour
LookAtPoint.position = transform.position + (Vector3) Entity.LookDirection *
(Entity.Target.Value != null ? max(Entity.TargetRange,Entity.ItemManager.GameplaySettings.ConvergenceMinimumDistance) : 10000);
transform.position = Entity.Position;
LocalSpace.localPosition = transform.position = Entity.Position;
if (_influenceInstance)
_influenceInstance.position = new Vector3(Entity.Position.x, 0, Entity.Position.z);
}
public virtual void OnDestroy()
{
if (_influenceInstance) Destroy(_influenceInstance.gameObject);
Destroy(LocalSpace.gameObject);
foreach (var (source, item) in _audioSources)
{

View file

@ -119,10 +119,8 @@ public class ShipInstance : EntityInstance
{
var thrust = length(_aetherDrive.Drive.ThrustDirection);
var forceOverLifetime = _aetherDrive.Particles.forceOverLifetime;
var curve = forceOverLifetime.z;
curve.curveMultiplier = thrust * _aetherDrive.BaseForce;
if(thrust > .01f)
_aetherDrive.Particles.transform.forward = new Vector3(_aetherDrive.Drive.ThrustDirection.x, 0, _aetherDrive.Drive.ThrustDirection.y);
forceOverLifetime.xMultiplier = _aetherDrive.Drive.ThrustDirection.x * _aetherDrive.BaseForce;
forceOverLifetime.zMultiplier = _aetherDrive.Drive.ThrustDirection.y * _aetherDrive.BaseForce;
var emissionModule = _aetherDrive.Particles.emission;
emissionModule.rateOverTimeMultiplier = _aetherDrive.BaseEmission * thrust;
}

View file

@ -33,9 +33,9 @@ public class CombatState : BaseState
var toTarget = target.Position - _agent.Ship.Position;
var targetDistance = length(toTarget);
for (var i = 0; i < _agent.Ship.TriggerGroups.Length; i++)
for (var i = 0; i < _agent.Ship.WeaponGroups.Length; i++)
{
var group = _agent.Ship.TriggerGroups[i];
var group = _agent.Ship.WeaponGroups[i];
var dps = 0f;
foreach (var weapon in group.weapons)
if (weapon.Item.Online.Value &&
@ -80,7 +80,7 @@ public class CombatState : BaseState
if (selectedGroup >= 0)
{
var testWeapon = _agent.Ship.TriggerGroups[selectedGroup].weapons.First();
var testWeapon = _agent.Ship.WeaponGroups[selectedGroup].weapons.First();
if(testWeapon.Velocity > 1)
{
var targetHullData = _agent.ItemManager.GetData(target.Hull) as HullData;
@ -100,7 +100,7 @@ public class CombatState : BaseState
var shouldFire = dot(
_agent.Ship.HardpointTransforms[_agent.Ship.Hardpoints[testWeapon.Item.Position.x, testWeapon.Item.Position.y]].direction,
toTarget) > .99f;
foreach (var weapon in _agent.Ship.TriggerGroups[selectedGroup].weapons)
foreach (var weapon in _agent.Ship.WeaponGroups[selectedGroup].weapons)
{
if (shouldFire)
weapon.Activate();

View file

@ -49,7 +49,7 @@ public abstract class Entity
public readonly Dictionary<HardpointData, (float3 position, float3 direction)> HardpointTransforms =
new Dictionary<HardpointData, (float3 position, float3 direction)>();
public readonly (List<Weapon> weapons, List<EquippedItem> items)[] TriggerGroups;
public (List<Weapon> weapons, List<EquippedItem> items)[] WeaponGroups;
public List<IPopulationAssignment> PopulationAssignments = new List<IPopulationAssignment>();
@ -160,7 +160,8 @@ public abstract class Entity
{
if (Target.Value == remove.Value) Target.Value = null;
}));
GenerateTriggerGroups();
if(WeaponGroups.All(wg=>!wg.items.Any()))
GenerateWeaponGroups();
}
public virtual void Deactivate()
@ -183,9 +184,9 @@ public abstract class Entity
HullData = itemManager.GetData(hull) as HullData;
Name = HullData.Name;
MapEntity();
TriggerGroups = new (List<Weapon> triggers, List<EquippedItem> items)[itemManager.GameplaySettings.TriggerGroupCount];
for(int i=0; i<itemManager.GameplaySettings.TriggerGroupCount; i++)
TriggerGroups[i] = (new List<Weapon>(), new List<EquippedItem>());
WeaponGroups = new (List<Weapon> weapons, List<EquippedItem> items)[itemManager.GameplaySettings.WeaponGroupCount];
for(int i=0; i<itemManager.GameplaySettings.WeaponGroupCount; i++)
WeaponGroups[i] = (new List<Weapon>(), new List<EquippedItem>());
ItemDestroyed = ItemDamage.Where(x => x.item.EquippableItem.Durability < .01f).Select(x=>x.item);
WeaponDestroyed = ItemDestroyed.Select(x => x.Behaviors.FirstOrDefault(b => b is Weapon) as Weapon).Where(x => x != null);
@ -297,15 +298,15 @@ public abstract class Entity
GearOccupancy = new EquippedItem[hullData.Shape.Width, hullData.Shape.Height];
}
public void GenerateTriggerGroups()
public void GenerateWeaponGroups()
{
foreach (var group in Weapons
.GroupBy(w => w.Item.EquippableItem.Data.LinkID)
.OrderBy(wg=>wg.Average(w=>w.Range))
.Select((weapons, index) => (weapons, index)))
{
TriggerGroups[group.index].weapons = group.weapons.ToList();
TriggerGroups[group.index].items = group.weapons.Select(w=>w.Item).ToList();
WeaponGroups[group.index].weapons = group.weapons.ToList();
WeaponGroups[group.index].items = group.weapons.Select(w=>w.Item).ToList();
}
}

View file

@ -13,7 +13,9 @@ public static class EntitySerializer
if (entity is OrbitalEntity orbital)
pack = new OrbitalEntityPack
{
Orbit = orbital.OrbitData
Orbit = orbital.OrbitData,
SecurityLevel = orbital.SecurityLevel,
SecurityRadius = orbital.SecurityRadius
};
else if (entity is Ship ship)
pack = new ShipPack
@ -49,6 +51,7 @@ public static class EntitySerializer
pack.Temperature = entity.Temperature;
pack.Conductivity = entity.HullConductivity;
pack.Children = entity.Children.Select(Pack).ToArray();
pack.WeaponGroups = entity.WeaponGroups.Select(wg => wg.items.Select(item => entity.Equipment.IndexOf(item)).ToArray()).ToArray();
return pack;
}
@ -80,6 +83,8 @@ public static class EntitySerializer
{
var entity = new OrbitalEntity(itemManager, zone, instantiate ? (EquippableItem) itemManager.Instantiate(pack.Hull) : pack.Hull, pack.Orbit, pack.Settings);
Restore(itemManager, zone, pack, entity, instantiate);
entity.SecurityLevel = pack.SecurityLevel;
entity.SecurityRadius = pack.SecurityRadius;
return entity;
}
@ -133,35 +138,37 @@ public static class EntitySerializer
foreach(var v in hullData.Shape.Coordinates)
entity.HullConductivity[v.x,v.y] = pack.Conductivity[v.x,v.y];
entity.WeaponGroups = pack.WeaponGroups.Select(itemIndices =>
{
var items = itemIndices.Select(i => entity.Equipment[i]);
return (items.Select(i => i.GetBehavior<Weapon>()).ToList(), items.ToList());
}).ToArray();
}
}
[MessagePackObject]
public class SavedStory
{
[Key(0)]
public string StoryJson;
[Key(1)]
public string StateJson;
[Key(0)] public string StoryJson;
[Key(1)] public string StateJson;
}
[MessagePackObject]
public class ShipPack : EntityPack
{
[Key(16)] public float3 Position;
[Key(17)] public float2 Direction;
[Key(18)] public bool IsPlayerShip;
[Key(17)] public float3 Position;
[Key(18)] public float2 Direction;
[Key(19)] public bool IsPlayerShip;
}
[MessagePackObject]
public class OrbitalEntityPack : EntityPack
{
[Key(16)]
public Guid Orbit;
[Key(17)]
public SavedStory Story;
[Key(17)] public Guid Orbit;
[Key(18)] public SavedStory Story;
[Key(19)] public SecurityLevel SecurityLevel;
[Key(20)] public float SecurityRadius;
}
[MessagePackObject,
@ -169,50 +176,22 @@ public class OrbitalEntityPack : EntityPack
Union(1, typeof(ShipPack))]
public abstract class EntityPack
{
[Key(0)]
public string Name;
[Key(1)]
public EquippableItem Hull;
[Key(2)]
public (int2 position, EquippableItem item)[] Equipment;
[Key(3)]
public (int2 position, EquippableItem item)[] CargoBays;
[Key(4)]
public (int2 position, EquippableItem item)[] DockingBays;
[Key(5)]
public Dictionary<int2, PersistentBehaviorData[]> PersistedBehaviors;
[Key(6)]
public float[,] Temperature;
[Key(7)]
public float[,] Armor;
[Key(8)]
public bool2[,] Conductivity;
[Key(10)]
public int[] DockingBayAssignments;
[Key(11)]
public (int2 position, ItemInstance item)[][] CargoContents;
[Key(12)]
public (int2 position, ItemInstance item)[][] DockingBayContents;
[Key(13)]
public EntityPack[] Children;
[Key(14)]
public EntitySettings Settings;
[Key(15)]
public Guid Faction;
[Key(0)] public string Name;
[Key(1)] public EquippableItem Hull;
[Key(2)] public (int2 position, EquippableItem item)[] Equipment;
[Key(3)] public (int2 position, EquippableItem item)[] CargoBays;
[Key(4)] public (int2 position, EquippableItem item)[] DockingBays;
[Key(5)] public Dictionary<int2, PersistentBehaviorData[]> PersistedBehaviors;
[Key(6)] public float[,] Temperature;
[Key(7)] public float[,] Armor;
[Key(8)] public bool2[,] Conductivity;
[Key(10)] public int[] DockingBayAssignments;
[Key(11)] public (int2 position, ItemInstance item)[][] CargoContents;
[Key(12)] public (int2 position, ItemInstance item)[][] DockingBayContents;
[Key(13)] public EntityPack[] Children;
[Key(14)] public EntitySettings Settings;
[Key(15)] public Guid Faction;
[Key(16)] public int[][] WeaponGroups;
private int _price;

View file

@ -165,6 +165,22 @@ public enum CompoundCommodityCategory
Assemblies = 5
}
public enum FactionRelationship
{
Hated = 0, // Kill on sight
Hostile = 1, // Can enter open areas
Neutral = 2, // Can dock in open areas, enter secure areas
Friendly = 3, // Can dock in secure areas, enter critical areas
Beloved = 4 // Cah dock even in critical areas
}
public enum SecurityLevel
{
Open = 0,
Secure = 1,
Critical = 2
}
public enum TemperatureUnit
{
Kelvin,

View file

@ -55,16 +55,16 @@ public class LoadoutGenerator
return EntitySerializer.Pack(entity);
}
public EntityPack GenerateTurretLoadout()
public OrbitalEntityPack GenerateTurretLoadout()
{
var hull = ItemManager.CreateInstance(RandomHull(HullType.Turret)) as EquippableItem;
var entity = new OrbitalEntity(ItemManager, null, hull, Guid.Empty, ItemManager.GameplaySettings.DefaultEntitySettings);
entity.Faction = Faction;
OutfitEntity(entity);
return EntitySerializer.Pack(entity);
return EntitySerializer.Pack(entity) as OrbitalEntityPack;
}
public EntityPack GenerateStationLoadout()
public OrbitalEntityPack GenerateStationLoadout()
{
var hullData = RandomHull(HullType.Station);
var hull = ItemManager.CreateInstance(hullData) as EquippableItem;
@ -96,7 +96,7 @@ public class LoadoutGenerator
cargo.TryStore(instance);
}
return EntitySerializer.Pack(entity);
return EntitySerializer.Pack(entity) as OrbitalEntityPack;
}
public HullData RandomHull(HullType type, Predicate<HullData> hullFilter = null)

View file

@ -12,6 +12,8 @@ using float2 = Unity.Mathematics.float2;
public class OrbitalEntity : Entity
{
public Guid OrbitData;
public SecurityLevel SecurityLevel;
public float SecurityRadius;
public OrbitalEntity(ItemManager itemManager, Zone zone, EquippableItem hull, Guid orbit, EntitySettings settings) : base(itemManager, zone, hull, settings)
{

View file

@ -43,6 +43,9 @@ public class SavedGame
[Key(11)]
public bool IsTutorial;
[Key(12)]
public FactionRelationship[] Relationships;
public SavedGame() { }
@ -51,6 +54,7 @@ public class SavedGame
DiscoveredZones = sector.DiscoveredZones.Select(dz => Array.IndexOf(sector.Zones, dz)).ToArray();
Background = sector.Background;
Factions = sector.HomeZones.Keys.Select(f => f.ID).ToArray();
Relationships = sector.Factions.Select(f => sector.FactionRelationships[f]).ToArray();
HomeZones = sector.HomeZones.ToDictionary(
x => Array.IndexOf(Factions, x.Key.ID),

View file

@ -24,6 +24,7 @@ public class Sector
public SectorZone[] Zones { get; }
public SectorZone Entrance { get; }
public SectorZone Exit { get; }
public Dictionary<Faction, FactionRelationship> FactionRelationships { get; } = new Dictionary<Faction, FactionRelationship>();
private HashSet<Guid> _containedFactions;
private SectorZone[] _exitPath;
@ -42,7 +43,13 @@ public class Sector
public Sector(CultCache cultCache, SavedGame savedGame)
{
Background = savedGame.Background;
Factions = savedGame.Factions.Select(cultCache.Get<Faction>).ToArray();
for (var i = 0; i < Factions.Length; i++)
{
FactionRelationships[Factions[i]] = savedGame.Relationships[i];
}
Zones = savedGame.Zones.Select(zone =>
{
return new SectorZone
@ -87,6 +94,7 @@ public class Sector
var factions = cache.GetAll<Faction>();
var random = new Random(seed == 0 ? (uint) (DateTime.Now.Ticks % uint.MaxValue) : seed);
Factions = factions.OrderBy(x => random.NextFloat()).Take(settings.MegaCount).ToArray();
foreach (var f in Factions) FactionRelationships[f] = FactionRelationship.Neutral;
Zones = GenerateZones(settings.ZoneCount, ref random, progressCallback);
@ -148,7 +156,11 @@ public class Sector
factions.AddRange(neutralFactions);
Factions = factions.ToArray();
foreach (var faction in Factions) faction.InfluenceDistance = (faction.InfluenceDistance + 1) / 2;
foreach (var faction in Factions)
{
FactionRelationships[faction] = FactionRelationship.Neutral;
faction.InfluenceDistance = (faction.InfluenceDistance + 1) / 2;
}
Zones = GenerateZones(settings.ZoneCount, ref random, progressCallback);
@ -186,8 +198,13 @@ public class Sector
var potentialQuestZones = Zones
.Where(z => z.Factions.Contains(antagonistFaction) && z.Factions.Contains(bufferFaction));
HomeZones[questFaction] = potentialQuestZones
.MaxBy(z=>z.Distance[HomeZones[antagonistFaction]] * ConnectedRegion(z, questFaction.InfluenceDistance).Count);
if (potentialQuestZones.Any())
HomeZones[questFaction] = potentialQuestZones
.MaxBy(z => z.Distance[HomeZones[antagonistFaction]] * ConnectedRegion(z, questFaction.InfluenceDistance).Count);
else
HomeZones[questFaction] = Zones
.Where(z => z.Factions.Contains(antagonistFaction))
.MinBy(z=>z.Distance[HomeZones[bufferFaction]]);
CalculateFactionInfluence(progressCallback);

View file

@ -172,7 +172,7 @@ public class GameplaySettings
public float WormholeExitCurveStart = .8f;
public float ThermalWearExponent = .01f;
public float QualityWearExponent = 2;
public int TriggerGroupCount = 6;
public int WeaponGroupCount = 6;
public float WarpDistance = 25;
public float DockingDistance = 25;
public float ProductionPersonalityLerp = .05f;

View file

@ -225,20 +225,73 @@ public static class ZoneGenerator
var nearestFaction = sector.Factions.MinBy(f => sector.HomeZones[f].Distance[sectorZone]);
var nearestFactionHomeZone = sector.HomeZones[nearestFaction];
var factionPresence = nearestFaction.InfluenceDistance - nearestFactionHomeZone.Distance[sectorZone] + 1;
var stationCount = (int)(random.NextFloat() * (factionPresence + 1));
var potentialLagrangePoints = planets
.Where(p => p.Parent != null && p.Parent.Children
.TrueForAll(c => !(c != p && abs(c.Distance - p.Distance) < .1f))) // Filter Rosettes
.OrderBy(p => p.Distance)
.ToArray();
// Pick a selection from the middle of the distribution
var selectedStationOrbits = potentialLagrangePoints
.Skip(potentialLagrangePoints.Length / 2)
.Take(stationCount)
.Select(p=>orbitMap[p])
.ToArray();
var loadoutGenerator = isTutorial ? new LoadoutGenerator(ref random, itemManager, nearestFaction, .5f) :
new LoadoutGenerator(ref random, itemManager, sector, sectorZone, nearestFaction, .5f);
for (int i = 0; i < factionPresence; i++)
foreach (var orbit in selectedStationOrbits)
{
var security = (SecurityLevel) ((int) ((1f - pow(random.NextFloat(), factionPresence / 2f)) * 3f));
var lagrangeOrbit = new OrbitData
{
ID = Guid.NewGuid(),
Parent = orbit.Parent,
Distance = new ReactiveProperty<float>(orbit.Distance.Value),
Phase = orbit.Phase + PI / 3 * sign(random.NextFloat() - .5f)
};
pack.Orbits.Add(lagrangeOrbit);
var station = loadoutGenerator.GenerateStationLoadout();
station.Orbit = lagrangeOrbit.ID;
station.SecurityLevel = security;
station.SecurityRadius = pack.Radius * .75f;
pack.Entities.Add(station);
var turretPhase = 20f / lagrangeOrbit.Distance.Value;
var leadingTurretOrbit = new OrbitData
{
ID = Guid.NewGuid(),
Parent = orbit.Parent,
Distance = new ReactiveProperty<float>(orbit.Distance.Value),
Phase = lagrangeOrbit.Phase + turretPhase
};
pack.Orbits.Add(leadingTurretOrbit);
var leadingTurret = loadoutGenerator.GenerateTurretLoadout();
leadingTurret.Orbit = leadingTurretOrbit.ID;
pack.Entities.Add(leadingTurret);
var trailingTurretOrbit = new OrbitData
{
ID = Guid.NewGuid(),
Parent = orbit.Parent,
Distance = new ReactiveProperty<float>(orbit.Distance.Value),
Phase = lagrangeOrbit.Phase - turretPhase
};
pack.Orbits.Add(trailingTurretOrbit);
var trailingTurret = loadoutGenerator.GenerateTurretLoadout();
trailingTurret.Orbit = trailingTurretOrbit.ID;
pack.Entities.Add(trailingTurret);
}
var enemyCount = (int)(random.NextFloat() * factionPresence * 2) + stationCount;
for (int i = 0; i < enemyCount; i++)
{
pack.Entities.Add(loadoutGenerator.GenerateShipLoadout());
}
var replacePlanet = pack.Planets.MinBy(p => p.Mass.Value);
pack.Planets.Remove(replacePlanet);
var stationOrbit = replacePlanet.Orbit;
var station = loadoutGenerator.GenerateStationLoadout();
((OrbitalEntityPack) station).Orbit = stationOrbit;
pack.Entities.Add(station);
return pack;
}

View file

@ -19,9 +19,11 @@ public class MapRenderer : MonoBehaviour
public Camera MapOverlayCamera;
public Camera GravityCamera;
public Camera TintCamera;
public Camera InfluenceCamera;
public Image OverlayDisplay;
public Image GravityDisplay;
public Image TintDisplay;
public Image InfluenceDisplay;
public float Scale;
public float2 Position;
@ -29,6 +31,7 @@ public class MapRenderer : MonoBehaviour
private RenderTexture _mapTexture;
private RenderTexture _gravityTexture;
private RenderTexture _tintTexture;
private RenderTexture _influenceTexture;
private int2 _size;
private bool _init;
@ -43,6 +46,7 @@ public class MapRenderer : MonoBehaviour
MapOverlayCamera.gameObject.SetActive(true);
GravityCamera.gameObject.SetActive(true);
TintCamera.gameObject.SetActive(true);
InfluenceCamera.gameObject.SetActive(true);
Title.text = $"Zone: {GameManager.Zone.SectorZone.Name}";
}
@ -50,16 +54,24 @@ public class MapRenderer : MonoBehaviour
{
if (_mapTexture != null)
{
_mapTexture.Release();
_mapTexture = null;
_gravityTexture.Release();
_gravityTexture = null;
_tintTexture.Release();
_tintTexture = null;
ReleaseTextures();
}
MapOverlayCamera.gameObject.SetActive(false);
GravityCamera.gameObject.SetActive(false);
TintCamera.gameObject.SetActive(false);
InfluenceCamera.gameObject.SetActive(false);
}
void ReleaseTextures()
{
_mapTexture.Release();
_mapTexture = null;
_gravityTexture.Release();
_gravityTexture = null;
_tintTexture.Release();
_tintTexture = null;
_influenceTexture.Release();
_influenceTexture = null;
}
void LateUpdate()
@ -71,22 +83,24 @@ public class MapRenderer : MonoBehaviour
_size = size;
if (_mapTexture != null)
{
_mapTexture.Release();
_mapTexture = null;
_gravityTexture.Release();
_gravityTexture = null;
_tintTexture.Release();
_tintTexture = null;
ReleaseTextures();
}
_mapTexture = new RenderTexture(_size.x, _size.y, 0, RenderTextureFormat.Default);
MapOverlayCamera.targetTexture = _mapTexture;
OverlayDisplay.material.SetTexture("_DetailTex", _mapTexture);
_gravityTexture = new RenderTexture(_size.x, _size.y, 0, RenderTextureFormat.RFloat);
GravityCamera.targetTexture = _gravityTexture;
GravityDisplay.material.SetTexture("_DetailTex", _gravityTexture);
_tintTexture = new RenderTexture(_size.x / 2, _size.y / 2, 0, RenderTextureFormat.RGB111110Float);
TintCamera.targetTexture = _tintTexture;
TintDisplay.material.SetTexture("_DetailTex", _tintTexture);
_influenceTexture = new RenderTexture(_size.x, _size.y, 0, RenderTextureFormat.RFloat);
InfluenceCamera.targetTexture = _influenceTexture;
InfluenceDisplay.material.SetTexture("_DetailTex", _influenceTexture);
}
var pos = ((Vector2) Position).Flatland(1);
@ -100,5 +114,8 @@ public class MapRenderer : MonoBehaviour
TintCamera.transform.position = pos;
TintCamera.orthographicSize = _size.y * Scale * .5f;
InfluenceCamera.transform.position = pos;
InfluenceCamera.orthographicSize = _size.y * Scale * .5f;
}
}

View file

@ -22,11 +22,11 @@ public class WeaponGroupAssignment : MonoBehaviour
{
var weapon = item.GetBehavior<Weapon>();
if (weapon == null) throw new ArgumentException($"Attempted to inspect weapon groups on item \"{item.Data.Name}\" but no weapon is present!");
var groupCount = ActionGameManager.Instance.Settings.GameplaySettings.TriggerGroupCount;
var groupCount = ActionGameManager.Instance.Settings.GameplaySettings.WeaponGroupCount;
for (int i = 0; i < groupCount; i++)
{
var i1 = i;
bool groupContainsItem() => item.Entity.TriggerGroups[i1].items.Contains(item);
bool groupContainsItem() => item.Entity.WeaponGroups[i1].items.Contains(item);
var group = Instantiate(GroupPrefab, Container);
Groups.Add(group);
group.Label.text = $"G{i+1}";
@ -35,14 +35,14 @@ public class WeaponGroupAssignment : MonoBehaviour
{
if (groupContainsItem())
{
item.Entity.TriggerGroups[i1].items.Remove(item);
item.Entity.TriggerGroups[i1].weapons.Remove(weapon);
item.Entity.WeaponGroups[i1].items.Remove(item);
item.Entity.WeaponGroups[i1].weapons.Remove(weapon);
group.Label.color = InactiveColor;
}
else
{
item.Entity.TriggerGroups[i1].items.Add(item);
item.Entity.TriggerGroups[i1].weapons.Add(weapon);
item.Entity.WeaponGroups[i1].items.Add(item);
item.Entity.WeaponGroups[i1].weapons.Add(weapon);
group.Label.color = ActiveColor;
}
});

View file

@ -13,20 +13,16 @@ public class BlueNoiseProvider : MonoBehaviour
{
public Texture2D NoiseTexture;
private Camera _camera;
private void Start()
{
_camera = Camera.main;
Shader.SetGlobalTexture("_DitheringTex", NoiseTexture);
}
private void Update()
{
Shader.SetGlobalVector("_DitheringCoords", new Vector4(
(float)_camera.scaledPixelWidth / (float)NoiseTexture.width,
(float)_camera.scaledPixelHeight / (float)NoiseTexture.height,
(float)Screen.width / NoiseTexture.width,
(float)Screen.height / NoiseTexture.height,
Random.value,
Random.value
));

View file

@ -127,6 +127,7 @@ void UpdateParticles(uint3 id : SV_DispatchThreadID, int3 groupID : SV_GroupThre
y * spacing + yt * spacing + perlinNoise1D(RandomValue()*1024+time)*spacing);
float2 puv = float2(.5,.5) - (particles[id.x].position.xz - transform.xy) / (transform.z);
float gravDepth = Heightmap.SampleLevel(samplerHeightmap, puv, 0.0f).r;
particles[id.x].position.y = lerp(-gravDepth + floorHeight, ceilingHeight, pow(RandomValue(), heightExponent/(ceilingHeight+gravDepth))) + perlinNoise1D(RandomValue()*1024+time)*spacing/2;
float headroom = (ceilingHeight+gravDepth);
particles[id.x].position.y = -gravDepth + floorHeight + -floorHeight * 4 * pow(RandomValue(), max(1, heightExponent/(headroom*headroom))) + perlinNoise1D(RandomValue()*1024+time)*spacing/2;
particles[id.x].size = lerp(minimumSize, maximumSize, RandomValue());
}

View file

@ -61,7 +61,7 @@ Material:
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _EmissionGain: 0.5
- _EmissionGain: 0.438
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
@ -69,7 +69,7 @@ Material:
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _Power: 16
- _Power: 2
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1

Some files were not shown because too many files have changed in this diff Show more