diff --git a/Assets/.LogRegion.cs b/Assets/.LogRegion.cs new file mode 100644 index 0000000..a1012fc --- /dev/null +++ b/Assets/.LogRegion.cs @@ -0,0 +1,12 @@ +using UnityEngine; +using Fusion.CloudServices; + +public class LogRegion : MonoBehaviour +{ + void Start() + { + // Adjust the path if your asset lives elsewhere + var settings = Resources.Load("Photon Fusion App Settings"); + Debug.Log($"Fixed Region = {settings.FixedRegion}"); + } +} diff --git a/Assets/.LogRegion.cs.meta b/Assets/.LogRegion.cs.meta new file mode 100644 index 0000000..1b618b9 --- /dev/null +++ b/Assets/.LogRegion.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 393e4b8fabef2b54da3df0bd677a5afc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MultiplayerMenuManager.cs b/Assets/.MultiplayerMenuManager.cs similarity index 100% rename from Assets/MultiplayerMenuManager.cs rename to Assets/.MultiplayerMenuManager.cs diff --git a/Assets/MultiplayerMenuManager.cs.meta b/Assets/.MultiplayerMenuManager.cs.meta similarity index 100% rename from Assets/MultiplayerMenuManager.cs.meta rename to Assets/.MultiplayerMenuManager.cs.meta diff --git a/Assets/NetworkRunnerHandler.cs b/Assets/.NetworkRunnerHandler.cs similarity index 100% rename from Assets/NetworkRunnerHandler.cs rename to Assets/.NetworkRunnerHandler.cs diff --git a/Assets/NetworkRunnerHandler.cs.meta b/Assets/.NetworkRunnerHandler.cs.meta similarity index 100% rename from Assets/NetworkRunnerHandler.cs.meta rename to Assets/.NetworkRunnerHandler.cs.meta diff --git a/Assets/Photon.meta b/Assets/.Photon.meta similarity index 100% rename from Assets/Photon.meta rename to Assets/.Photon.meta diff --git a/Assets/Photon/Fusion.meta b/Assets/.Photon/Fusion.meta similarity index 100% rename from Assets/Photon/Fusion.meta rename to Assets/.Photon/Fusion.meta diff --git a/Assets/Photon/Fusion/Assemblies.meta b/Assets/.Photon/Fusion/Assemblies.meta similarity index 100% rename from Assets/Photon/Fusion/Assemblies.meta rename to Assets/.Photon/Fusion/Assemblies.meta diff --git a/Assets/Photon/Fusion/Assemblies/Debug.meta b/Assets/.Photon/Fusion/Assemblies/Debug.meta similarity index 100% rename from Assets/Photon/Fusion/Assemblies/Debug.meta rename to Assets/.Photon/Fusion/Assemblies/Debug.meta diff --git a/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Common.dll.debug b/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Common.dll.debug new file mode 100644 index 0000000..0bf9ab6 Binary files /dev/null and b/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Common.dll.debug differ diff --git a/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Common.dll.debug.meta b/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Common.dll.debug.meta similarity index 74% rename from Assets/Photon/Fusion/Assemblies/Debug/Fusion.Common.dll.debug.meta rename to Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Common.dll.debug.meta index df436cf..0d44d7e 100644 --- a/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Common.dll.debug.meta +++ b/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Common.dll.debug.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b496ffd2b42068b419c0a8ecfe7c2688 +guid: c3fb5d92e8da46e4794b4a31291bc739 DefaultImporter: externalObjects: {} userData: diff --git a/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Log.dll.debug b/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Log.dll.debug similarity index 62% rename from Assets/Photon/Fusion/Assemblies/Debug/Fusion.Log.dll.debug rename to Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Log.dll.debug index 5c871cd..7354328 100644 Binary files a/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Log.dll.debug and b/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Log.dll.debug differ diff --git a/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Log.dll.debug.meta b/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Log.dll.debug.meta similarity index 74% rename from Assets/Photon/Fusion/Assemblies/Debug/Fusion.Log.dll.debug.meta rename to Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Log.dll.debug.meta index 76da8ae..a2b2746 100644 --- a/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Log.dll.debug.meta +++ b/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Log.dll.debug.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7dde977fb8ca6634f8dc21988240dd3a +guid: 3d5bd89a65dd95c43a886aaae92b8085 DefaultImporter: externalObjects: {} userData: diff --git a/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Realtime.dll.debug b/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Realtime.dll.debug new file mode 100644 index 0000000..ccacf2d Binary files /dev/null and b/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Realtime.dll.debug differ diff --git a/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Realtime.dll.debug.meta b/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Realtime.dll.debug.meta similarity index 74% rename from Assets/Photon/Fusion/Assemblies/Debug/Fusion.Realtime.dll.debug.meta rename to Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Realtime.dll.debug.meta index 75ea2aa..d5a6c4a 100644 --- a/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Realtime.dll.debug.meta +++ b/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Realtime.dll.debug.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8ae4c0a03478cb445a392b9621cec527 +guid: a7dd52fcf068a3b4186b38f9611d8af9 DefaultImporter: externalObjects: {} userData: diff --git a/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Runtime.dll.debug b/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Runtime.dll.debug new file mode 100644 index 0000000..2beb016 Binary files /dev/null and b/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Runtime.dll.debug differ diff --git a/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Runtime.dll.debug.meta b/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Runtime.dll.debug.meta similarity index 74% rename from Assets/Photon/Fusion/Assemblies/Debug/Fusion.Runtime.dll.debug.meta rename to Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Runtime.dll.debug.meta index c257743..011db24 100644 --- a/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Runtime.dll.debug.meta +++ b/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Runtime.dll.debug.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1a9b4b34ac7c99a419f0e364ef813dd7 +guid: 764f67704135ebb44835f2fe76d65c8e DefaultImporter: externalObjects: {} userData: diff --git a/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Sockets.dll.debug b/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Sockets.dll.debug new file mode 100644 index 0000000..58ce7eb Binary files /dev/null and b/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Sockets.dll.debug differ diff --git a/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Sockets.dll.debug.meta b/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Sockets.dll.debug.meta similarity index 74% rename from Assets/Photon/Fusion/Assemblies/Debug/Fusion.Sockets.dll.debug.meta rename to Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Sockets.dll.debug.meta index daae6af..4f79531 100644 --- a/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Sockets.dll.debug.meta +++ b/Assets/.Photon/Fusion/Assemblies/Debug/Fusion.Sockets.dll.debug.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: aee66bf7c2930a243a3913d56e006e65 +guid: 751b0276d7b55cd4fbbfe7b9fca440ca DefaultImporter: externalObjects: {} userData: diff --git a/Assets/.Photon/Fusion/Assemblies/Fusion.Common.dll b/Assets/.Photon/Fusion/Assemblies/Fusion.Common.dll new file mode 100644 index 0000000..0bf9ab6 Binary files /dev/null and b/Assets/.Photon/Fusion/Assemblies/Fusion.Common.dll differ diff --git a/Assets/Photon/Fusion/Assemblies/Fusion.Common.dll.meta b/Assets/.Photon/Fusion/Assemblies/Fusion.Common.dll.meta similarity index 100% rename from Assets/Photon/Fusion/Assemblies/Fusion.Common.dll.meta rename to Assets/.Photon/Fusion/Assemblies/Fusion.Common.dll.meta diff --git a/Assets/Photon/Fusion/Assemblies/Fusion.Common.xml b/Assets/.Photon/Fusion/Assemblies/Fusion.Common.xml similarity index 99% rename from Assets/Photon/Fusion/Assemblies/Fusion.Common.xml rename to Assets/.Photon/Fusion/Assemblies/Fusion.Common.xml index 7b89177..13b3114 100644 --- a/Assets/Photon/Fusion/Assemblies/Fusion.Common.xml +++ b/Assets/.Photon/Fusion/Assemblies/Fusion.Common.xml @@ -2216,13 +2216,22 @@ The offset of the specified field in bytes. - + + Frees a block of memory. + + The pointer to the memory block to free. - + + Frees a block of memory. + + The pointer to the memory block to free. - + + Frees a block of memory. + + The pointer to the memory block to free. diff --git a/Assets/Photon/Fusion/Assemblies/Fusion.Common.xml.meta b/Assets/.Photon/Fusion/Assemblies/Fusion.Common.xml.meta similarity index 78% rename from Assets/Photon/Fusion/Assemblies/Fusion.Common.xml.meta rename to Assets/.Photon/Fusion/Assemblies/Fusion.Common.xml.meta index ad55acc..876327a 100644 --- a/Assets/Photon/Fusion/Assemblies/Fusion.Common.xml.meta +++ b/Assets/.Photon/Fusion/Assemblies/Fusion.Common.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: abd068f3d134b524f93cd387e3012621 +guid: 488c4478b9989134c862da21e8876e8b labels: - FusionCodeDoc TextScriptImporter: diff --git a/Assets/Photon/Fusion/Assemblies/Fusion.Log.dll b/Assets/.Photon/Fusion/Assemblies/Fusion.Log.dll similarity index 62% rename from Assets/Photon/Fusion/Assemblies/Fusion.Log.dll rename to Assets/.Photon/Fusion/Assemblies/Fusion.Log.dll index 5c871cd..7354328 100644 Binary files a/Assets/Photon/Fusion/Assemblies/Fusion.Log.dll and b/Assets/.Photon/Fusion/Assemblies/Fusion.Log.dll differ diff --git a/Assets/Photon/Fusion/Assemblies/Fusion.Log.dll.meta b/Assets/.Photon/Fusion/Assemblies/Fusion.Log.dll.meta similarity index 100% rename from Assets/Photon/Fusion/Assemblies/Fusion.Log.dll.meta rename to Assets/.Photon/Fusion/Assemblies/Fusion.Log.dll.meta diff --git a/Assets/Photon/Fusion/Assemblies/Fusion.Log.xml b/Assets/.Photon/Fusion/Assemblies/Fusion.Log.xml similarity index 99% rename from Assets/Photon/Fusion/Assemblies/Fusion.Log.xml rename to Assets/.Photon/Fusion/Assemblies/Fusion.Log.xml index 727142a..a9af883 100644 --- a/Assets/Photon/Fusion/Assemblies/Fusion.Log.xml +++ b/Assets/.Photon/Fusion/Assemblies/Fusion.Log.xml @@ -203,7 +203,7 @@ - Logs a message to the Unity console if FUSION_EDITOR_TRACE is defined. Use in the Import context. + Logs a message to the Unity console if FUSION_EDITOR_TRACE_IMPORT is defined. Use in the Import context. A message @@ -227,7 +227,7 @@ - Logs a message to the Unity console if FUSION_EDITOR_INSPECTOR_TRACE is defined. Use in the Inspector context. + Logs a message to the Unity console if FUSION_EDITOR_TRACE_INSPECTOR is defined. Use in the Inspector context. A message @@ -251,13 +251,13 @@ - Logs a message to the Unity console if FUSION_EDITOR_TRACE is defined. Use in the Test context. + Logs a message to the Unity console if FUSION_EDITOR_TRACE_TEST is defined. Use in the Test context. A message - Logs a message to the Unity console if FUSION_EDITOR_TRACE is defined. Use in the Mppm context. + Logs a message to the Unity console if FUSION_EDITOR_TRACE_MPPM is defined. Use in the Mppm context. A message diff --git a/Assets/Photon/Fusion/Assemblies/Fusion.Log.xml.meta b/Assets/.Photon/Fusion/Assemblies/Fusion.Log.xml.meta similarity index 78% rename from Assets/Photon/Fusion/Assemblies/Fusion.Log.xml.meta rename to Assets/.Photon/Fusion/Assemblies/Fusion.Log.xml.meta index b3a5390..2737027 100644 --- a/Assets/Photon/Fusion/Assemblies/Fusion.Log.xml.meta +++ b/Assets/.Photon/Fusion/Assemblies/Fusion.Log.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 0c3ceae6535688e43a8538f96f082798 +guid: ab1ed0988b1cd9948bb0c2c154d2ca78 labels: - FusionCodeDoc TextScriptImporter: diff --git a/Assets/.Photon/Fusion/Assemblies/Fusion.Realtime.dll b/Assets/.Photon/Fusion/Assemblies/Fusion.Realtime.dll new file mode 100644 index 0000000..ccacf2d Binary files /dev/null and b/Assets/.Photon/Fusion/Assemblies/Fusion.Realtime.dll differ diff --git a/Assets/Photon/Fusion/Assemblies/Fusion.Realtime.dll.meta b/Assets/.Photon/Fusion/Assemblies/Fusion.Realtime.dll.meta similarity index 100% rename from Assets/Photon/Fusion/Assemblies/Fusion.Realtime.dll.meta rename to Assets/.Photon/Fusion/Assemblies/Fusion.Realtime.dll.meta diff --git a/Assets/Photon/Fusion/Assemblies/Fusion.Realtime.xml b/Assets/.Photon/Fusion/Assemblies/Fusion.Realtime.xml similarity index 99% rename from Assets/Photon/Fusion/Assemblies/Fusion.Realtime.xml rename to Assets/.Photon/Fusion/Assemblies/Fusion.Realtime.xml index fa593ea..ccf4957 100644 --- a/Assets/Photon/Fusion/Assemblies/Fusion.Realtime.xml +++ b/Assets/.Photon/Fusion/Assemblies/Fusion.Realtime.xml @@ -1030,6 +1030,10 @@ Important: Don't define a protocol, except to point to a pac file. the proxy address should not begin with http:// or https://. + + Count of connections made to any server. + Statistical value. Increased by OnStatusChanged(StatusCode.Connect). + Backing field for property. @@ -1112,6 +1116,15 @@ state value which can be used to display (or debug) the cause for disconnection. + + Defaults to null. Set when the client receives a disconnect info message with a debug string. Reset to null in connect methods. + + + Defines if this client sends telemetry / analytics about how the connection ends. + + + Tells us if "this session" was already reported. We want to send only one report in best case. Re-set on connect. + After a to a connection loss or timeout, this summarizes the most relevant system conditions which might have contributed to the loss. @@ -2625,7 +2638,7 @@ Async games can be re-joined (loaded) later on. Set to false, if you want to abandon a game entirely. WebFlag: Securely transmit the encrypted object AuthCookie to the web service in PathLeave webhook when available - If the opteration can be send currently. + If the operation can be sent currently. Gets a list of games matching a SQL-like where clause. @@ -3332,6 +3345,9 @@ (188) Parameter key to let the server know it may queue the client in low-ccu matchmaking situations. + + (187) This optional parameter from the server configures the client to send analytics or not. + Class for constants. Contains operation codes. @@ -3610,7 +3626,7 @@ 1) On server, room property ABC is set to value FOO, which triggers notifications to all the clients telling them that the property changed. 2) While that notification is in flight, a client sets the ABC property to value BAR. - 3) Client receives notification from the server and changes it�s local copy of ABC to FOO. + 3) Client receives notification from the server and changes its local copy of ABC to FOO. 4) Server receives the set operation and changes the official value of ABC to BAR, but never notifies the client that sent the set operation that the value is now BAR. Without this option, the client that set the value to BAR never hears from the server that the official copy has been updated to BAR, and thus gets stuck with a value of FOO. diff --git a/Assets/Photon/Fusion/Assemblies/Fusion.Realtime.xml.meta b/Assets/.Photon/Fusion/Assemblies/Fusion.Realtime.xml.meta similarity index 78% rename from Assets/Photon/Fusion/Assemblies/Fusion.Realtime.xml.meta rename to Assets/.Photon/Fusion/Assemblies/Fusion.Realtime.xml.meta index 4e1e5a5..8bf5f42 100644 --- a/Assets/Photon/Fusion/Assemblies/Fusion.Realtime.xml.meta +++ b/Assets/.Photon/Fusion/Assemblies/Fusion.Realtime.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: cea1a6a8d3f8b8d47a85a488ad91b00c +guid: 31be76c4162f38d47aa69e4bfb4166aa labels: - FusionCodeDoc TextScriptImporter: diff --git a/Assets/.Photon/Fusion/Assemblies/Fusion.Runtime.dll b/Assets/.Photon/Fusion/Assemblies/Fusion.Runtime.dll new file mode 100644 index 0000000..2beb016 Binary files /dev/null and b/Assets/.Photon/Fusion/Assemblies/Fusion.Runtime.dll differ diff --git a/Assets/Photon/Fusion/Assemblies/Fusion.Runtime.dll.meta b/Assets/.Photon/Fusion/Assemblies/Fusion.Runtime.dll.meta similarity index 100% rename from Assets/Photon/Fusion/Assemblies/Fusion.Runtime.dll.meta rename to Assets/.Photon/Fusion/Assemblies/Fusion.Runtime.dll.meta diff --git a/Assets/Photon/Fusion/Assemblies/Fusion.Runtime.xml b/Assets/.Photon/Fusion/Assemblies/Fusion.Runtime.xml similarity index 99% rename from Assets/Photon/Fusion/Assemblies/Fusion.Runtime.xml rename to Assets/.Photon/Fusion/Assemblies/Fusion.Runtime.xml index 339b54f..3a40ed8 100644 --- a/Assets/Photon/Fusion/Assemblies/Fusion.Runtime.xml +++ b/Assets/.Photon/Fusion/Assemblies/Fusion.Runtime.xml @@ -10454,7 +10454,9 @@ - Returns if this network entity is associated with its , and that runner is not null. + Returns true while a NetworkObject is valid (after it is spawned until it is despawned). + While this property is true, Networked Properties and RPCs on the NetworkObject can be used. + Internally, the property validates whether a NetworkObject is associated with its , and that runner is not null. @@ -11055,7 +11057,7 @@ - Flag indicating that the object is a struct. + Flag indicating that the object has no prefab. (Mainly internal data). @@ -11294,6 +11296,9 @@ Meta information about a network object. + + The flags indicating various states or properties of the network object. + Get the NetworkObjectTypeId of this object. @@ -11306,9 +11311,6 @@ The nesting key of the network object. - - The flags indicating various states or properties of the network object. - Get the Player that has state authority over this object. @@ -12216,7 +12218,7 @@ The RPC method can include an empty argument, that will include meta information about the RPC on the receiving peer. Example: - | [Rpc(RpcSources.All, RpcTargets.All, InvokeLocal = false, InvokeResim = false, Channel = RpcChannel.Reliable, TickAligned = true)]

+ | [Rpc(RpcSources.All, RpcTargets.All, InvokeLocal = false, Channel = RpcChannel.Reliable, TickAligned = true)]

| public void RPC_Configure(NetworkObject no, string name, Color color, RpcInfo info = default) { }
To target a specific Player, use the : @@ -12523,7 +12525,7 @@
- Not invoked locally because InvokeResim is false and simulation stage is + Not invoked locally because simulation stage is @@ -13082,6 +13084,14 @@ + + + Bound Address of the internal socket used for direct connection in Server/Host Mode. + On the Host/Server this address contains the address/port that was passed into StartGame. + When forwarding ports on the router/ firewall this port should be used as the internal port for the forwarding. The external port can either be the same value or any port. + Note: This is not the public address of the server or the address / port that was discovered via NAT Punchthrough. + + Returns the instance. @@ -14772,9 +14782,6 @@ Make a copy of the . - - - ToString() implementation. @@ -16764,6 +16771,14 @@ Player to check True if the Player is interested in the NetworkObjectMeta, false otherwise + + + Check if a Player is the Input Authority over an NetworkObjectMeta + + NetworkObjectMeta to check + Player to check + True if the Player is the Input Authority over the NetworkObjectMeta, false otherwise + Check if a Player is the Input Authority over an NetworkObjectMeta @@ -16981,11 +16996,6 @@ Relay based shared world model - - - Sanity check the configuration to a valid state. - - Project configuration settings specific to how the Simulation class behaves. @@ -17106,6 +17116,13 @@ If, in host mode, we should allow host migration if the current host leaves. + + + The amount of object destroys Fusion sends per packet. + Increasing this value means Fusion prioritizes sending more destroys before regular state changes. + Setting this value to 255, can help with problems when unloading scenes with many runtime spawned objects (such as Spawned/Despawned being called on those objects multiple times). + + @@ -17121,9 +17138,6 @@ - - - Memory Heap Settings @@ -17154,9 +17168,6 @@ ToString - - - Main network configuration class. @@ -17236,9 +17247,6 @@ Convert this into a using the as reference. - - - Configuration for network conditions simulation (induced latency and loss). @@ -17318,9 +17326,6 @@ A new based on the current configuration. - - - Time Synchronization Configuration @@ -17767,66 +17772,27 @@ Reduces errors at a constant rate using an on-off controller. - + - Reduces errors at a variable rate using a PID controller. + The clock used to send inputs to the server. Later than Local by input delay. Currently input delay is always 0. - + - Network Physics + Local (or "simulation") time is the clock used to drive FixedUpdateNetwork. It is the tick FixedNetworkUpdate + should simulate up to. - + - Word Count + Remote (or "interpolation") time is the clock used to select pairs of snapshots for interpolating remote + (proxy) objects. - - - Total Size - - - - - Time Scale - - - - - Base interface for all Fusion Network Structs - - - - - Utility methods for - - - - - Get the max word count from all registered types - - - - - Get Type Word Count if it is of type - - Type to check for word count - Number of words for the - - - - Get the Key associate with the argument Type - - Type to check for the key - Associated Type Key, or an exception if not found - - + - Get the Type based on its associate Key + Reduces errors at a variable rate using a PID controller. - Key associated with a Type - Type associated with the Key, or null otherwise @@ -17886,6 +17852,62 @@ Checks if this is of a certain type + + + Network Physics + + + + + Word Count + + + + + Total Size + + + + + Time Scale + + + + + Base interface for all Fusion Network Structs + + + + + Utility methods for + + + + + Get the max word count from all registered types + + + + + Get Type Word Count if it is of type + + Type to check for word count + Number of words for the + + + + Get the Key associate with the argument Type + + Type to check for the key + Associated Type Key, or an exception if not found + + + + Get the Type based on its associate Key + + Key associated with a Type + Type associated with the Key, or null otherwise + Utility methods for diff --git a/Assets/Photon/Fusion/Assemblies/Fusion.Runtime.xml.meta b/Assets/.Photon/Fusion/Assemblies/Fusion.Runtime.xml.meta similarity index 100% rename from Assets/Photon/Fusion/Assemblies/Fusion.Runtime.xml.meta rename to Assets/.Photon/Fusion/Assemblies/Fusion.Runtime.xml.meta diff --git a/Assets/.Photon/Fusion/Assemblies/Fusion.Sockets.dll b/Assets/.Photon/Fusion/Assemblies/Fusion.Sockets.dll new file mode 100644 index 0000000..58ce7eb Binary files /dev/null and b/Assets/.Photon/Fusion/Assemblies/Fusion.Sockets.dll differ diff --git a/Assets/Photon/Fusion/Assemblies/Fusion.Sockets.dll.meta b/Assets/.Photon/Fusion/Assemblies/Fusion.Sockets.dll.meta similarity index 100% rename from Assets/Photon/Fusion/Assemblies/Fusion.Sockets.dll.meta rename to Assets/.Photon/Fusion/Assemblies/Fusion.Sockets.dll.meta diff --git a/Assets/Photon/Fusion/Assemblies/Fusion.Sockets.xml b/Assets/.Photon/Fusion/Assemblies/Fusion.Sockets.xml similarity index 99% rename from Assets/Photon/Fusion/Assemblies/Fusion.Sockets.xml rename to Assets/.Photon/Fusion/Assemblies/Fusion.Sockets.xml index d287eb9..15c1804 100644 --- a/Assets/Photon/Fusion/Assemblies/Fusion.Sockets.xml +++ b/Assets/.Photon/Fusion/Assemblies/Fusion.Sockets.xml @@ -3846,15 +3846,15 @@ - - Base Protocol Message. + + Base Protocol Message. - This concentrates the basics for serialization and cloning - + This concentrates the basics for serialization and cloning + - + - Max Lenght of the Custom Data + Max Length of the Custom Data @@ -3906,7 +3906,7 @@ Buffer to read from or write into the data of the Message - + Check if this Message is compatible with target versions diff --git a/Assets/Photon/Fusion/Assemblies/Fusion.Sockets.xml.meta b/Assets/.Photon/Fusion/Assemblies/Fusion.Sockets.xml.meta similarity index 78% rename from Assets/Photon/Fusion/Assemblies/Fusion.Sockets.xml.meta rename to Assets/.Photon/Fusion/Assemblies/Fusion.Sockets.xml.meta index f78d34e..9404538 100644 --- a/Assets/Photon/Fusion/Assemblies/Fusion.Sockets.xml.meta +++ b/Assets/.Photon/Fusion/Assemblies/Fusion.Sockets.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 96c74c0d41e80724dbb86735700bc8ba +guid: 296c3038ff39ac648ab26d3efbd9d532 labels: - FusionCodeDoc TextScriptImporter: diff --git a/Assets/Photon/Fusion/Assemblies/Release.meta b/Assets/.Photon/Fusion/Assemblies/Release.meta similarity index 100% rename from Assets/Photon/Fusion/Assemblies/Release.meta rename to Assets/.Photon/Fusion/Assemblies/Release.meta diff --git a/Assets/Photon/Fusion/Assemblies/Release/Fusion.Common.dll.release b/Assets/.Photon/Fusion/Assemblies/Release/Fusion.Common.dll.release similarity index 90% rename from Assets/Photon/Fusion/Assemblies/Release/Fusion.Common.dll.release rename to Assets/.Photon/Fusion/Assemblies/Release/Fusion.Common.dll.release index d195a2e..26c038f 100644 Binary files a/Assets/Photon/Fusion/Assemblies/Release/Fusion.Common.dll.release and b/Assets/.Photon/Fusion/Assemblies/Release/Fusion.Common.dll.release differ diff --git a/Assets/Photon/Fusion/Assemblies/Release/Fusion.Common.dll.release.meta b/Assets/.Photon/Fusion/Assemblies/Release/Fusion.Common.dll.release.meta similarity index 74% rename from Assets/Photon/Fusion/Assemblies/Release/Fusion.Common.dll.release.meta rename to Assets/.Photon/Fusion/Assemblies/Release/Fusion.Common.dll.release.meta index 79db729..d8bffc1 100644 --- a/Assets/Photon/Fusion/Assemblies/Release/Fusion.Common.dll.release.meta +++ b/Assets/.Photon/Fusion/Assemblies/Release/Fusion.Common.dll.release.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 94576fb379db2e1428fd17ef1da3dc04 +guid: 4999375389a832d46b56c9233905637f DefaultImporter: externalObjects: {} userData: diff --git a/Assets/Photon/Fusion/Assemblies/Release/Fusion.Log.dll.release b/Assets/.Photon/Fusion/Assemblies/Release/Fusion.Log.dll.release similarity index 62% rename from Assets/Photon/Fusion/Assemblies/Release/Fusion.Log.dll.release rename to Assets/.Photon/Fusion/Assemblies/Release/Fusion.Log.dll.release index 5c871cd..7354328 100644 Binary files a/Assets/Photon/Fusion/Assemblies/Release/Fusion.Log.dll.release and b/Assets/.Photon/Fusion/Assemblies/Release/Fusion.Log.dll.release differ diff --git a/Assets/Photon/Fusion/Assemblies/Release/Fusion.Log.dll.release.meta b/Assets/.Photon/Fusion/Assemblies/Release/Fusion.Log.dll.release.meta similarity index 74% rename from Assets/Photon/Fusion/Assemblies/Release/Fusion.Log.dll.release.meta rename to Assets/.Photon/Fusion/Assemblies/Release/Fusion.Log.dll.release.meta index 9398ab4..65b1c33 100644 --- a/Assets/Photon/Fusion/Assemblies/Release/Fusion.Log.dll.release.meta +++ b/Assets/.Photon/Fusion/Assemblies/Release/Fusion.Log.dll.release.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 43daa139de5b4794fb7d8abe8f75bebc +guid: b1c267c0b285b0b4db43d78c1b2f2c35 DefaultImporter: externalObjects: {} userData: diff --git a/Assets/.Photon/Fusion/Assemblies/Release/Fusion.Realtime.dll.release b/Assets/.Photon/Fusion/Assemblies/Release/Fusion.Realtime.dll.release new file mode 100644 index 0000000..1e7b62c Binary files /dev/null and b/Assets/.Photon/Fusion/Assemblies/Release/Fusion.Realtime.dll.release differ diff --git a/Assets/Photon/Fusion/Assemblies/Release/Fusion.Realtime.dll.release.meta b/Assets/.Photon/Fusion/Assemblies/Release/Fusion.Realtime.dll.release.meta similarity index 74% rename from Assets/Photon/Fusion/Assemblies/Release/Fusion.Realtime.dll.release.meta rename to Assets/.Photon/Fusion/Assemblies/Release/Fusion.Realtime.dll.release.meta index 5fc13b0..7f62262 100644 --- a/Assets/Photon/Fusion/Assemblies/Release/Fusion.Realtime.dll.release.meta +++ b/Assets/.Photon/Fusion/Assemblies/Release/Fusion.Realtime.dll.release.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d349974c8274d4940a99a8cf87b39c5b +guid: 7e10b60398cbfe442bd424c83d78e21d DefaultImporter: externalObjects: {} userData: diff --git a/Assets/.Photon/Fusion/Assemblies/Release/Fusion.Runtime.dll.release b/Assets/.Photon/Fusion/Assemblies/Release/Fusion.Runtime.dll.release new file mode 100644 index 0000000..6603dae Binary files /dev/null and b/Assets/.Photon/Fusion/Assemblies/Release/Fusion.Runtime.dll.release differ diff --git a/Assets/Photon/Fusion/Assemblies/Release/Fusion.Runtime.dll.release.meta b/Assets/.Photon/Fusion/Assemblies/Release/Fusion.Runtime.dll.release.meta similarity index 74% rename from Assets/Photon/Fusion/Assemblies/Release/Fusion.Runtime.dll.release.meta rename to Assets/.Photon/Fusion/Assemblies/Release/Fusion.Runtime.dll.release.meta index 27ad01f..87a2342 100644 --- a/Assets/Photon/Fusion/Assemblies/Release/Fusion.Runtime.dll.release.meta +++ b/Assets/.Photon/Fusion/Assemblies/Release/Fusion.Runtime.dll.release.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1e39f62bc2288bb4195a02c17bd8ebc2 +guid: 104544d774d2289428ed667fb082619c DefaultImporter: externalObjects: {} userData: diff --git a/Assets/Photon/Fusion/Assemblies/Release/Fusion.Sockets.dll.release b/Assets/.Photon/Fusion/Assemblies/Release/Fusion.Sockets.dll.release similarity index 63% rename from Assets/Photon/Fusion/Assemblies/Release/Fusion.Sockets.dll.release rename to Assets/.Photon/Fusion/Assemblies/Release/Fusion.Sockets.dll.release index 95cc429..710f2bf 100644 Binary files a/Assets/Photon/Fusion/Assemblies/Release/Fusion.Sockets.dll.release and b/Assets/.Photon/Fusion/Assemblies/Release/Fusion.Sockets.dll.release differ diff --git a/Assets/Photon/Fusion/Assemblies/Release/Fusion.Sockets.dll.release.meta b/Assets/.Photon/Fusion/Assemblies/Release/Fusion.Sockets.dll.release.meta similarity index 74% rename from Assets/Photon/Fusion/Assemblies/Release/Fusion.Sockets.dll.release.meta rename to Assets/.Photon/Fusion/Assemblies/Release/Fusion.Sockets.dll.release.meta index 4a3cd45..d57b849 100644 --- a/Assets/Photon/Fusion/Assemblies/Release/Fusion.Sockets.dll.release.meta +++ b/Assets/.Photon/Fusion/Assemblies/Release/Fusion.Sockets.dll.release.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: da71ad4708c3c7c4f8e6436b5979a20e +guid: 6255eb2316e0bf64a89da9bc5323862c DefaultImporter: externalObjects: {} userData: diff --git a/Assets/Photon/Fusion/CodeGen.meta b/Assets/.Photon/Fusion/CodeGen.meta similarity index 100% rename from Assets/Photon/Fusion/CodeGen.meta rename to Assets/.Photon/Fusion/CodeGen.meta diff --git a/Assets/Photon/Fusion/CodeGen/Fusion.CodeGen.Trigger.fusionweavertrigger b/Assets/.Photon/Fusion/CodeGen/Fusion.CodeGen.Trigger.fusionweavertrigger similarity index 100% rename from Assets/Photon/Fusion/CodeGen/Fusion.CodeGen.Trigger.fusionweavertrigger rename to Assets/.Photon/Fusion/CodeGen/Fusion.CodeGen.Trigger.fusionweavertrigger diff --git a/Assets/Photon/Fusion/CodeGen/Fusion.CodeGen.Trigger.fusionweavertrigger.meta b/Assets/.Photon/Fusion/CodeGen/Fusion.CodeGen.Trigger.fusionweavertrigger.meta similarity index 100% rename from Assets/Photon/Fusion/CodeGen/Fusion.CodeGen.Trigger.fusionweavertrigger.meta rename to Assets/.Photon/Fusion/CodeGen/Fusion.CodeGen.Trigger.fusionweavertrigger.meta diff --git a/Assets/Photon/Fusion/CodeGen/Fusion.CodeGen.User.cs b/Assets/.Photon/Fusion/CodeGen/Fusion.CodeGen.User.cs similarity index 100% rename from Assets/Photon/Fusion/CodeGen/Fusion.CodeGen.User.cs rename to Assets/.Photon/Fusion/CodeGen/Fusion.CodeGen.User.cs diff --git a/Assets/Photon/Fusion/CodeGen/Fusion.CodeGen.User.cs.meta b/Assets/.Photon/Fusion/CodeGen/Fusion.CodeGen.User.cs.meta similarity index 100% rename from Assets/Photon/Fusion/CodeGen/Fusion.CodeGen.User.cs.meta rename to Assets/.Photon/Fusion/CodeGen/Fusion.CodeGen.User.cs.meta diff --git a/Assets/Photon/Fusion/CodeGen/Fusion.CodeGen.asmdef b/Assets/.Photon/Fusion/CodeGen/Fusion.CodeGen.asmdef similarity index 100% rename from Assets/Photon/Fusion/CodeGen/Fusion.CodeGen.asmdef rename to Assets/.Photon/Fusion/CodeGen/Fusion.CodeGen.asmdef diff --git a/Assets/Photon/Fusion/CodeGen/Fusion.CodeGen.asmdef.meta b/Assets/.Photon/Fusion/CodeGen/Fusion.CodeGen.asmdef.meta similarity index 100% rename from Assets/Photon/Fusion/CodeGen/Fusion.CodeGen.asmdef.meta rename to Assets/.Photon/Fusion/CodeGen/Fusion.CodeGen.asmdef.meta diff --git a/Assets/Photon/Fusion/CodeGen/Fusion.CodeGen.cs b/Assets/.Photon/Fusion/CodeGen/Fusion.CodeGen.cs similarity index 100% rename from Assets/Photon/Fusion/CodeGen/Fusion.CodeGen.cs rename to Assets/.Photon/Fusion/CodeGen/Fusion.CodeGen.cs diff --git a/Assets/Photon/Fusion/CodeGen/Fusion.CodeGen.cs.meta b/Assets/.Photon/Fusion/CodeGen/Fusion.CodeGen.cs.meta similarity index 100% rename from Assets/Photon/Fusion/CodeGen/Fusion.CodeGen.cs.meta rename to Assets/.Photon/Fusion/CodeGen/Fusion.CodeGen.cs.meta diff --git a/Assets/Photon/Fusion/Editor.meta b/Assets/.Photon/Fusion/Editor.meta similarity index 100% rename from Assets/Photon/Fusion/Editor.meta rename to Assets/.Photon/Fusion/Editor.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources.meta b/Assets/.Photon/Fusion/Editor/EditorResources.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources.meta rename to Assets/.Photon/Fusion/Editor/EditorResources.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fonts.meta b/Assets/.Photon/Fusion/Editor/EditorResources/Fonts.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fonts.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/Fonts.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fonts/OFL.txt b/Assets/.Photon/Fusion/Editor/EditorResources/Fonts/OFL.txt similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fonts/OFL.txt rename to Assets/.Photon/Fusion/Editor/EditorResources/Fonts/OFL.txt diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fonts/OFL.txt.meta b/Assets/.Photon/Fusion/Editor/EditorResources/Fonts/OFL.txt.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fonts/OFL.txt.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/Fonts/OFL.txt.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fonts/Oswald-Header.ttf b/Assets/.Photon/Fusion/Editor/EditorResources/Fonts/Oswald-Header.ttf similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fonts/Oswald-Header.ttf rename to Assets/.Photon/Fusion/Editor/EditorResources/Fonts/Oswald-Header.ttf diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fonts/Oswald-Header.ttf.meta b/Assets/.Photon/Fusion/Editor/EditorResources/Fonts/Oswald-Header.ttf.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fonts/Oswald-Header.ttf.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/Fonts/Oswald-Header.ttf.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-dark-help-button-off.png b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-dark-help-button-off.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-dark-help-button-off.png rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-dark-help-button-off.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-dark-help-button-off.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-dark-help-button-off.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-dark-help-button-off.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-dark-help-button-off.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-dark-help-button-on.png b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-dark-help-button-on.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-dark-help-button-on.png rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-dark-help-button-on.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-dark-help-button-on.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-dark-help-button-on.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-dark-help-button-on.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-dark-help-button-on.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-inline-box-2x.png b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-inline-box-2x.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-inline-box-2x.png rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-inline-box-2x.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-inline-box-2x.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-inline-box-2x.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-inline-box-2x.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-inline-box-2x.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-inline-box-no-vertical-borders.png b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-inline-box-no-vertical-borders.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-inline-box-no-vertical-borders.png rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-inline-box-no-vertical-borders.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-inline-box-no-vertical-borders.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-inline-box-no-vertical-borders.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-inline-box-no-vertical-borders.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-inline-box-no-vertical-borders.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-inline-box.png b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-inline-box.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-inline-box.png rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-inline-box.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-inline-box.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-inline-box.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-inline-box.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-inline-box.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-inline-help-box.png b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-inline-help-box.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-inline-help-box.png rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-inline-help-box.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-inline-help-box.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-inline-help-box.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-inline-help-box.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-inline-help-box.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-inline-selector.png b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-inline-selector.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-inline-selector.png rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-inline-selector.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-inline-selector.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-inline-selector.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-inline-selector.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-inline-selector.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-light-help-button-off.png b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-light-help-button-off.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-light-help-button-off.png rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-light-help-button-off.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-light-help-button-off.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-light-help-button-off.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-light-help-button-off.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-light-help-button-off.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-light-help-button-on.png b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-light-help-button-on.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-light-help-button-on.png rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-light-help-button-on.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-light-help-button-on.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-light-help-button-on.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-light-help-button-on.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-light-help-button-on.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-logo-2x.png b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-logo-2x.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-logo-2x.png rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-logo-2x.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-logo-2x.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-logo-2x.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-logo-2x.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-logo-2x.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-logo.png b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-logo.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-logo.png rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-logo.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-logo.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-logo.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-logo.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-logo.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-outline-box.png b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-outline-box.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-outline-box.png rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-outline-box.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-outline-box.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-outline-box.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-outline-box.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-outline-box.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-script-header-2x.png b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-script-header-2x.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-script-header-2x.png rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-script-header-2x.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-script-header-2x.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-script-header-2x.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-script-header-2x.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-script-header-2x.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-script-header.png b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-script-header.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-script-header.png rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-script-header.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion-script-header.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion-script-header.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion-script-header.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion-script-header.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion.Unity.xml b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion.Unity.xml similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion.Unity.xml rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion.Unity.xml diff --git a/Assets/Photon/Fusion/Editor/EditorResources/Fusion.Unity.xml.meta b/Assets/.Photon/Fusion/Editor/EditorResources/Fusion.Unity.xml.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/Fusion.Unity.xml.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/Fusion.Unity.xml.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionEditorSkin.guiskin b/Assets/.Photon/Fusion/Editor/EditorResources/FusionEditorSkin.guiskin similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionEditorSkin.guiskin rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionEditorSkin.guiskin diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionEditorSkin.guiskin.meta b/Assets/.Photon/Fusion/Editor/EditorResources/FusionEditorSkin.guiskin.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionEditorSkin.guiskin.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionEditorSkin.guiskin.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub.meta b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-community.png b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-community.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-community.png rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-community.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-community.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-community.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-community.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-community.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-correct-icon.png b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-correct-icon.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-correct-icon.png rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-correct-icon.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-correct-icon.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-correct-icon.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-correct-icon.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-correct-icon.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-documentation.png b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-documentation.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-documentation.png rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-documentation.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-documentation.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-documentation.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-documentation.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-documentation.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-icon.png b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-icon.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-icon.png rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-icon.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-icon.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-icon.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-icon.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-icon.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-information.png b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-information.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-information.png rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-information.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-information.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-information.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-information.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-information.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-logo.png b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-logo.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-logo.png rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-logo.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-logo.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-logo.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-logo.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-logo.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-photon-cloud-32-dark.png b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-photon-cloud-32-dark.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-photon-cloud-32-dark.png rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-photon-cloud-32-dark.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-photon-cloud-32-dark.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-photon-cloud-32-dark.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-photon-cloud-32-dark.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-photon-cloud-32-dark.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-samples.png b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-samples.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-samples.png rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-samples.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-samples.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-samples.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-samples.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-samples.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-box.png b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-box.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-box.png rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-box.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-box.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-box.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-box.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-box.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button-active.png b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button-active.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button-active.png rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button-active.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button-active.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button-active.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button-active.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button-active.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button-hover.png b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button-hover.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button-hover.png rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button-hover.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button-hover.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button-hover.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button-hover.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button-hover.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button.png b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button.png rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-button.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-sand.png b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-sand.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-sand.png rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-sand.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-sand.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-sand.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-sand.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-sand.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-steel.png b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-steel.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-steel.png rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-steel.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-steel.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-steel.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-steel.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-steel.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-window.png b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-window.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-window.png rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-window.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-window.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-window.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-window.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-skin-window.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-tanknarok-logo.png b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-tanknarok-logo.png similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-tanknarok-logo.png rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-tanknarok-logo.png diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-tanknarok-logo.png.meta b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-tanknarok-logo.png.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-tanknarok-logo.png.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/Fusion-hub-tanknarok-logo.png.meta diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/FusionHubSkin.guiskin b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/FusionHubSkin.guiskin similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/FusionHubSkin.guiskin rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/FusionHubSkin.guiskin diff --git a/Assets/Photon/Fusion/Editor/EditorResources/FusionHub/FusionHubSkin.guiskin.meta b/Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/FusionHubSkin.guiskin.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/EditorResources/FusionHub/FusionHubSkin.guiskin.meta rename to Assets/.Photon/Fusion/Editor/EditorResources/FusionHub/FusionHubSkin.guiskin.meta diff --git a/Assets/Photon/Fusion/Editor/Fusion.Unity.Editor.AssemblyAttributes.cs b/Assets/.Photon/Fusion/Editor/Fusion.Unity.Editor.AssemblyAttributes.cs similarity index 100% rename from Assets/Photon/Fusion/Editor/Fusion.Unity.Editor.AssemblyAttributes.cs rename to Assets/.Photon/Fusion/Editor/Fusion.Unity.Editor.AssemblyAttributes.cs diff --git a/Assets/Photon/Fusion/Editor/Fusion.Unity.Editor.AssemblyAttributes.cs.meta b/Assets/.Photon/Fusion/Editor/Fusion.Unity.Editor.AssemblyAttributes.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/Fusion.Unity.Editor.AssemblyAttributes.cs.meta rename to Assets/.Photon/Fusion/Editor/Fusion.Unity.Editor.AssemblyAttributes.cs.meta diff --git a/Assets/Photon/Fusion/Editor/Fusion.Unity.Editor.asmdef b/Assets/.Photon/Fusion/Editor/Fusion.Unity.Editor.asmdef similarity index 100% rename from Assets/Photon/Fusion/Editor/Fusion.Unity.Editor.asmdef rename to Assets/.Photon/Fusion/Editor/Fusion.Unity.Editor.asmdef diff --git a/Assets/Photon/Fusion/Editor/Fusion.Unity.Editor.asmdef.meta b/Assets/.Photon/Fusion/Editor/Fusion.Unity.Editor.asmdef.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/Fusion.Unity.Editor.asmdef.meta rename to Assets/.Photon/Fusion/Editor/Fusion.Unity.Editor.asmdef.meta diff --git a/Assets/Photon/Fusion/Editor/Fusion.Unity.Editor.cs b/Assets/.Photon/Fusion/Editor/Fusion.Unity.Editor.cs similarity index 99% rename from Assets/Photon/Fusion/Editor/Fusion.Unity.Editor.cs rename to Assets/.Photon/Fusion/Editor/Fusion.Unity.Editor.cs index 0b28d74..af02c35 100644 --- a/Assets/Photon/Fusion/Editor/Fusion.Unity.Editor.cs +++ b/Assets/.Photon/Fusion/Editor/Fusion.Unity.Editor.cs @@ -4351,6 +4351,52 @@ namespace Fusion.Editor { #endregion +#region FusionCustomDependency.cs + +namespace Fusion.Editor { + using System; + using UnityEditor; + using UnityEngine; + + class FusionCustomDependency { + public readonly string Name; + + readonly EditorApplication.CallbackFunction _applyHash; + readonly Func _getter; + + public FusionCustomDependency(string name, Func getter) { + Name = name; + _getter = getter; + _applyHash = () => Update(true); + } + + public void Refresh() { + if (Application.isBatchMode) { + if (AssetDatabase.IsAssetImportWorkerProcess()) { + FusionEditorLog.ErrorImport($"Can't update custom dependencies during Asset Import ({Name})"); + } else { + Update(false); + } + } else { + EditorApplication.delayCall -= _applyHash; + EditorApplication.delayCall += _applyHash; + } + } + + void Update(bool delayed) { + var hash = _getter(); + if (hash.HasValue) { + FusionEditorLog.TraceImport($"Refreshing {Name} dependency hash: {hash} (delayed: {delayed})"); + AssetDatabaseUtils.RegisterCustomDependencyWithMppmWorkaround(Name, hash.Value); + AssetDatabase.Refresh(); + } else { + FusionEditorLog.TraceImport($"Not refreshing {Name} dependency hash, returned null (delayed: {delayed})"); + } + } + } +} + +#endregion #region FusionEditor.cs @@ -11984,23 +12030,25 @@ namespace Fusion.Editor { [InitializeOnLoad] internal class FusionInstaller { - const string DEFINE_VERSION = "FUSION2"; - const string DEFINE = "FUSION_WEAVER"; - const string PACKAGE_TO_SEARCH = "nuget.mono-cecil"; - const string PACKAGE_TO_INSTALL = "com.unity.nuget.mono-cecil@1.10.2"; - const string PACKAGES_DIR = "Packages"; - const string MANIFEST_FILE = "manifest.json"; + // Defines to add + private const string DEFINE_VERSION = "FUSION2"; + private const string DEFINE_WEAVER = "FUSION_WEAVER"; + // Packages to search for + private const string PACKAGE_TO_SEARCH = "nuget.mono-cecil"; + private const string PACKAGE_TO_INSTALL = "com.unity.nuget.mono-cecil@1.10.2"; + // Constants + private const string PACKAGES_DIR = "Packages"; + private const string MANIFEST_FILE = "manifest.json"; static FusionInstaller() { var defines = GetCurrentDefines(); // Check for Defines - // change based on https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2249 - if (defines.Contains(DEFINE) && defines.Contains(DEFINE_VERSION)) { + if (defines.Contains(DEFINE_WEAVER) && defines.Contains(DEFINE_VERSION)) { return; } - if (!PlayerSettings.runInBackground) { + if (PlayerSettings.runInBackground == false) { FusionEditorLog.LogInstaller($"Setting {nameof(PlayerSettings)}.{nameof(PlayerSettings.runInBackground)} to true"); PlayerSettings.runInBackground = true; } @@ -12008,12 +12056,9 @@ namespace Fusion.Editor { var manifest = Path.Combine(Path.GetDirectoryName(Application.dataPath) ?? string.Empty, PACKAGES_DIR, MANIFEST_FILE); if (File.ReadAllText(manifest).Contains(PACKAGE_TO_SEARCH)) { - FusionEditorLog.LogInstaller($"Setting '{DEFINE}' & '{DEFINE_VERSION}' Define"); - // append defines - if (defines.Contains(DEFINE) == false) { defines = $"{defines};{DEFINE}"; } - - if (defines.Contains(DEFINE_VERSION) == false) { defines = $"{defines};{DEFINE_VERSION}"; } + TryAddDefine(ref defines, DEFINE_WEAVER, d => d.Contains(DEFINE_WEAVER) == false); + TryAddDefine(ref defines, DEFINE_VERSION, d => d.Contains(DEFINE_VERSION) == false); SetCurrentDefines(defines); } else { @@ -12022,6 +12067,13 @@ namespace Fusion.Editor { } } + private static void TryAddDefine(ref string defines, string targetDefine, Func check) { + if (check(defines)) { + defines = $"{defines};{targetDefine}"; + FusionEditorLog.LogInstaller($"Adding Fusion Define Symbol: '{targetDefine}'"); + } + } + private static string GetCurrentDefines() { #if UNITY_SERVER var defines = PlayerSettings.GetScriptingDefineSymbols(UnityEditor.Build.NamedBuildTarget.Server); @@ -12378,14 +12430,14 @@ namespace Fusion.Editor { if (animator.Animator == null) { animator.Animator = animator.GetComponent(); if (animator.Animator == null) { - FusionEditorLog.Error($"Cannot bake {animator.name}'s {nameof(NetworkMecanimAnimator)} without an {nameof(Animator)} assigned!"); + FusionEditorLog.Error($"Cannot bake {animator.name}'s {nameof(NetworkMecanimAnimator)} without an {nameof(Animator)} assigned!", animator.gameObject); return false; } else { dirty = true; } } if (AnimatorControllerTools.GetController(animator.Animator) == null) { - FusionEditorLog.Error($"Cannot bake {animator.name}'s {nameof(NetworkMecanimAnimator)} without an {nameof(UnityEditor.Animations.AnimatorController)} assigned to its {nameof(Animator)}!"); + FusionEditorLog.Error($"Cannot bake {animator.name}'s {nameof(NetworkMecanimAnimator)} without an {nameof(UnityEditor.Animations.AnimatorController)} assigned to its {nameof(Animator)}!", animator.gameObject); return dirty; } @@ -12395,14 +12447,14 @@ namespace Fusion.Editor { FusionEditorLog.Assert(animator.StateHashes[0] == 0); foreach (var hash in animator.StateHashes.Skip(1)) { if (hash >= 0 && hash < animator.StateHashes.Length) { - FusionEditorLog.Error($"State hash {hash} is out of range for {animator.name}"); + FusionEditorLog.Error($"State hash {hash} is out of range for {animator.name}", animator.gameObject); } } FusionEditorLog.Assert(animator.TriggerHashes[0] == 0); foreach (var hash in animator.TriggerHashes.Skip(1)) { if (hash >= 0 && hash < animator.TriggerHashes.Length) { - FusionEditorLog.Error($"Trigger hash {hash} is out of range for {animator.name}"); + FusionEditorLog.Error($"Trigger hash {hash} is out of range for {animator.name}", animator.gameObject); } } @@ -12702,21 +12754,14 @@ namespace Fusion.Editor { DrawToggleFlag(NetworkObjectFlags.AllowStateAuthorityOverride, "Allow State Authority Override"); } - EditorGUI.EndDisabledGroup(); - - EditorGUI.BeginDisabledGroup((obj.Flags & NetworkObjectFlags.AllowStateAuthorityOverride) == default); - if ((obj.Flags & NetworkObjectFlags.MasterClientObject) == NetworkObjectFlags.MasterClientObject) { DrawToggleFlag(NetworkObjectFlags.DestroyWhenStateAuthorityLeaves, "Destroy When State Authority Leaves", false); } else { - if ((obj.Flags & NetworkObjectFlags.AllowStateAuthorityOverride) == NetworkObjectFlags.AllowStateAuthorityOverride) { - DrawToggleFlag(NetworkObjectFlags.DestroyWhenStateAuthorityLeaves, "Destroy When State Authority Leaves"); - } else { - DrawToggleFlag(NetworkObjectFlags.DestroyWhenStateAuthorityLeaves, "Destroy When State Authority Leaves", true); - } + DrawToggleFlag(NetworkObjectFlags.DestroyWhenStateAuthorityLeaves, "Destroy When State Authority Leaves"); } - + EditorGUI.EndDisabledGroup(); + //var destroyWhenStateAuthLeaves = serializedObject.FindProperty(nameof(NetworkObject.DestroyWhenStateAuthorityLeaves)); //EditorGUILayout.PropertyField(destroyWhenStateAuthLeaves); @@ -12966,8 +13011,7 @@ namespace Fusion.Editor { } if (rebuildPrefabHash) { - EditorApplication.delayCall -= NetworkProjectConfigImporter.RefreshNetworkObjectPrefabHash; - EditorApplication.delayCall += NetworkProjectConfigImporter.RefreshNetworkObjectPrefabHash; + NetworkProjectConfigImporter.RebuildPrefabHash(); } } diff --git a/Assets/Photon/Fusion/Editor/Fusion.Unity.Editor.cs.meta b/Assets/.Photon/Fusion/Editor/Fusion.Unity.Editor.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/Fusion.Unity.Editor.cs.meta rename to Assets/.Photon/Fusion/Editor/Fusion.Unity.Editor.cs.meta diff --git a/Assets/Photon/Fusion/Editor/FusionEditorConfigImporter.cs b/Assets/.Photon/Fusion/Editor/FusionEditorConfigImporter.cs similarity index 100% rename from Assets/Photon/Fusion/Editor/FusionEditorConfigImporter.cs rename to Assets/.Photon/Fusion/Editor/FusionEditorConfigImporter.cs diff --git a/Assets/Photon/Fusion/Editor/FusionEditorConfigImporter.cs.meta b/Assets/.Photon/Fusion/Editor/FusionEditorConfigImporter.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/FusionEditorConfigImporter.cs.meta rename to Assets/.Photon/Fusion/Editor/FusionEditorConfigImporter.cs.meta diff --git a/Assets/Photon/Fusion/Editor/FusionEditorSkin.cs b/Assets/.Photon/Fusion/Editor/FusionEditorSkin.cs similarity index 100% rename from Assets/Photon/Fusion/Editor/FusionEditorSkin.cs rename to Assets/.Photon/Fusion/Editor/FusionEditorSkin.cs diff --git a/Assets/Photon/Fusion/Editor/FusionEditorSkin.cs.meta b/Assets/.Photon/Fusion/Editor/FusionEditorSkin.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/FusionEditorSkin.cs.meta rename to Assets/.Photon/Fusion/Editor/FusionEditorSkin.cs.meta diff --git a/Assets/Photon/Fusion/Editor/FusionHubWindow.cs b/Assets/.Photon/Fusion/Editor/FusionHubWindow.cs similarity index 100% rename from Assets/Photon/Fusion/Editor/FusionHubWindow.cs rename to Assets/.Photon/Fusion/Editor/FusionHubWindow.cs diff --git a/Assets/Photon/Fusion/Editor/FusionHubWindow.cs.meta b/Assets/.Photon/Fusion/Editor/FusionHubWindow.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/FusionHubWindow.cs.meta rename to Assets/.Photon/Fusion/Editor/FusionHubWindow.cs.meta diff --git a/Assets/Photon/Fusion/Editor/FusionRunnerVisibilityControlsWindow.cs b/Assets/.Photon/Fusion/Editor/FusionRunnerVisibilityControlsWindow.cs similarity index 100% rename from Assets/Photon/Fusion/Editor/FusionRunnerVisibilityControlsWindow.cs rename to Assets/.Photon/Fusion/Editor/FusionRunnerVisibilityControlsWindow.cs diff --git a/Assets/Photon/Fusion/Editor/FusionRunnerVisibilityControlsWindow.cs.meta b/Assets/.Photon/Fusion/Editor/FusionRunnerVisibilityControlsWindow.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/FusionRunnerVisibilityControlsWindow.cs.meta rename to Assets/.Photon/Fusion/Editor/FusionRunnerVisibilityControlsWindow.cs.meta diff --git a/Assets/Photon/Fusion/Editor/FusionWeaverTriggerImporter.cs b/Assets/.Photon/Fusion/Editor/FusionWeaverTriggerImporter.cs similarity index 79% rename from Assets/Photon/Fusion/Editor/FusionWeaverTriggerImporter.cs rename to Assets/.Photon/Fusion/Editor/FusionWeaverTriggerImporter.cs index 0ebb41a..48026e5 100644 --- a/Assets/Photon/Fusion/Editor/FusionWeaverTriggerImporter.cs +++ b/Assets/.Photon/Fusion/Editor/FusionWeaverTriggerImporter.cs @@ -7,7 +7,6 @@ namespace Fusion.Editor { [ScriptedImporter(1, ExtensionWithoutDot, NetworkProjectConfigImporter.ImportQueueOffset + 1)] public class FusionWeaverTriggerImporter : ScriptedImporter { - public const string DependencyName = "FusionILWeaverTriggerImporter/ConfigHash"; public const string Extension = "." + ExtensionWithoutDot; public const string ExtensionWithoutDot = "fusionweavertrigger"; @@ -15,20 +14,21 @@ namespace Fusion.Editor { public bool RunWeaverOnConfigChanges = true; public override void OnImportAsset(AssetImportContext ctx) { - ctx.DependsOnCustomDependency(DependencyName); + ctx.DependsOnCustomDependency(DependencyHash.Name); if (RunWeaverOnConfigChanges) { ILWeaverUtils.RunWeaver(); } } - private static void RefreshDependencyHash() { + static readonly FusionCustomDependency DependencyHash = new("FusionILWeaverTriggerImporter/ConfigHash", () => { if (EditorApplication.isCompiling || EditorApplication.isUpdating) { - return; + return default; } - + var configPath = NetworkProjectConfigUtilities.GetGlobalConfigPath(); + if (string.IsNullOrEmpty(configPath)) { - return; + return default; } try { @@ -44,19 +44,19 @@ namespace Fusion.Editor { hash.Append(cfg.CheckRpcAttributeUsage ? 1 : 0); hash.Append(cfg.CheckNetworkedPropertiesBeingEmpty ? 1 : 0); - AssetDatabaseUtils.RegisterCustomDependencyWithMppmWorkaround(DependencyName, hash); - AssetDatabase.Refresh(); + return hash; } catch { // ignore the error + return default; } - } - + }); + private class Postprocessor : AssetPostprocessor { private static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) { foreach (var path in importedAssets) { if (path.EndsWith(NetworkProjectConfigImporter.Extension)) { - EditorApplication.delayCall -= RefreshDependencyHash; - EditorApplication.delayCall += RefreshDependencyHash; + DependencyHash.Refresh(); + break; } } } diff --git a/Assets/Photon/Fusion/Editor/FusionWeaverTriggerImporter.cs.meta b/Assets/.Photon/Fusion/Editor/FusionWeaverTriggerImporter.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/FusionWeaverTriggerImporter.cs.meta rename to Assets/.Photon/Fusion/Editor/FusionWeaverTriggerImporter.cs.meta diff --git a/Assets/Photon/Fusion/Editor/NetworkPrefabsInspector.cs b/Assets/.Photon/Fusion/Editor/NetworkPrefabsInspector.cs similarity index 100% rename from Assets/Photon/Fusion/Editor/NetworkPrefabsInspector.cs rename to Assets/.Photon/Fusion/Editor/NetworkPrefabsInspector.cs diff --git a/Assets/Photon/Fusion/Editor/NetworkPrefabsInspector.cs.meta b/Assets/.Photon/Fusion/Editor/NetworkPrefabsInspector.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/NetworkPrefabsInspector.cs.meta rename to Assets/.Photon/Fusion/Editor/NetworkPrefabsInspector.cs.meta diff --git a/Assets/Photon/Fusion/Editor/NetworkProjectConfigImporter.cs b/Assets/.Photon/Fusion/Editor/NetworkProjectConfigImporter.cs similarity index 76% rename from Assets/Photon/Fusion/Editor/NetworkProjectConfigImporter.cs rename to Assets/.Photon/Fusion/Editor/NetworkProjectConfigImporter.cs index d085a67..d901f09 100644 --- a/Assets/Photon/Fusion/Editor/NetworkProjectConfigImporter.cs +++ b/Assets/.Photon/Fusion/Editor/NetworkProjectConfigImporter.cs @@ -18,9 +18,6 @@ namespace Fusion.Editor { public const string FusionPrefabTag = "FusionPrefab"; public const string FusionPrefabTagSearchTerm = "l:FusionPrefab"; - public const string ScriptOrderDependencyName = "Fusion.ScriptOrderDependency"; - public const string AddressablesDependencyName = "Fusion.AddressablesDependency"; - public const string PrefabsDependencyName = "Fusion.PrefabsDependency"; [Header("Prefabs")] [DrawInline] @@ -30,7 +27,7 @@ namespace Fusion.Editor { [InitializeOnLoadMethod] static void RegisterAddressableEventListeners() { AssetDatabaseUtils.AddAddressableAssetsWithLabelMonitor(FusionPrefabTag, (hash) => { - AssetDatabaseUtils.RegisterCustomDependencyWithMppmWorkaround(AddressablesDependencyName, hash); + AddressablesDependency.Refresh(); }); } #endif @@ -49,9 +46,9 @@ namespace Fusion.Editor { root.BehaviourMeta = CreateBehaviourMeta(ctx); root.PrefabOptions = PrefabOptions; - ctx.DependsOnCustomDependency(AddressablesDependencyName); - ctx.DependsOnCustomDependency(ScriptOrderDependencyName); - ctx.DependsOnCustomDependency(PrefabsDependencyName); + ctx.DependsOnCustomDependency(AddressablesDependency.Name); + ctx.DependsOnCustomDependency(ScriptOrderDependency.Name); + ctx.DependsOnCustomDependency(NetworkObjectPrefabDependency.Name); } @@ -150,8 +147,7 @@ namespace Fusion.Editor { foreach (var path in importedAssets) { if (HasSimulationBehaviours(path)) { - EditorApplication.delayCall -= RefreshScriptOrderDependencyHash; - EditorApplication.delayCall += RefreshScriptOrderDependencyHash; + ScriptOrderDependency.Refresh(); break; } } @@ -189,48 +185,53 @@ namespace Fusion.Editor { return false; } + } + + static readonly FusionCustomDependency ScriptOrderDependency = new("Fusion.ScriptOrderDependency", () => { + var hash = new Hash128(); - private static void RefreshScriptOrderDependencyHash() { - var hash = CalculateScriptOrderDependencyHash(); - FusionEditorLog.TraceImport($"Refreshing {ScriptOrderDependencyName} dependency hash: {hash}"); - AssetDatabaseUtils.RegisterCustomDependencyWithMppmWorkaround(ScriptOrderDependencyName, hash); - AssetDatabase.Refresh(); - } - - private static Hash128 CalculateScriptOrderDependencyHash() { - var hash = new Hash128(); + var scripts = MonoImporter.GetAllRuntimeMonoScripts(); - var scripts = MonoImporter.GetAllRuntimeMonoScripts(); + foreach (var monoScript in scripts) { + var scriptType = monoScript.GetClass(); - foreach (var monoScript in scripts) { - var scriptType = monoScript.GetClass(); - if (scriptType?.IsSubclassOf(typeof(SimulationBehaviour)) != true) { - continue; - } + if (scriptType?.IsSubclassOf(typeof(SimulationBehaviour)) != true) { + continue; + } - var executionOrder = MonoImporter.GetExecutionOrder(monoScript); - if (executionOrder == 0) { - continue; - } + var executionOrder = MonoImporter.GetExecutionOrder(monoScript); - hash.Append(scriptType.FullName); - hash.Append(executionOrder); + if (executionOrder == 0) { + continue; } - return hash; + hash.Append(scriptType.FullName); + hash.Append(executionOrder); } - } - public static void RefreshNetworkObjectPrefabHash() { + return hash; + }); + + static readonly FusionCustomDependency AddressablesDependency = new("Fusion.AddressablesDependency", () => { +#if FUSION_ENABLE_ADDRESSABLES && !FUSION_DISABLE_ADDRESSABLES + var assetsSettings = UnityEditor.AddressableAssets.AddressableAssetSettingsDefaultObject.Settings; + if (assetsSettings) { + return assetsSettings.currentHash; + } +#endif + return default; + }); + + static readonly FusionCustomDependency NetworkObjectPrefabDependency = new("Fusion.PrefabsDependency", () => { var hash = new Hash128(); - foreach (var it in AssetDatabaseUtils.IterateAssets(label: FusionPrefabTag)) { hash.Append(it.guid); } + return hash; + }); - FusionEditorLog.TraceImport($"Refreshing {PrefabsDependencyName} dependency hash: {hash}"); - AssetDatabaseUtils.RegisterCustomDependencyWithMppmWorkaround(PrefabsDependencyName, hash); - AssetDatabase.Refresh(); + public static void RebuildPrefabHash() { + NetworkObjectPrefabDependency.Refresh(); } } } diff --git a/Assets/Photon/Fusion/Editor/NetworkProjectConfigImporter.cs.meta b/Assets/.Photon/Fusion/Editor/NetworkProjectConfigImporter.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/NetworkProjectConfigImporter.cs.meta rename to Assets/.Photon/Fusion/Editor/NetworkProjectConfigImporter.cs.meta diff --git a/Assets/Photon/Fusion/Editor/NetworkProjectConfigImporterEditor.cs b/Assets/.Photon/Fusion/Editor/NetworkProjectConfigImporterEditor.cs similarity index 100% rename from Assets/Photon/Fusion/Editor/NetworkProjectConfigImporterEditor.cs rename to Assets/.Photon/Fusion/Editor/NetworkProjectConfigImporterEditor.cs diff --git a/Assets/Photon/Fusion/Editor/NetworkProjectConfigImporterEditor.cs.meta b/Assets/.Photon/Fusion/Editor/NetworkProjectConfigImporterEditor.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Editor/NetworkProjectConfigImporterEditor.cs.meta rename to Assets/.Photon/Fusion/Editor/NetworkProjectConfigImporterEditor.cs.meta diff --git a/Assets/Photon/Fusion/Plugins.meta b/Assets/.Photon/Fusion/Plugins.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins.meta rename to Assets/.Photon/Fusion/Plugins.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Android.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Android.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Android.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Android.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Android/arm64-v8a.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Android/arm64-v8a.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Android/arm64-v8a.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Android/arm64-v8a.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Android/arm64-v8a/libnanosockets.so b/Assets/.Photon/Fusion/Plugins/NanoSockets/Android/arm64-v8a/libnanosockets.so similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Android/arm64-v8a/libnanosockets.so rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Android/arm64-v8a/libnanosockets.so diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Android/arm64-v8a/libnanosockets.so.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Android/arm64-v8a/libnanosockets.so.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Android/arm64-v8a/libnanosockets.so.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Android/arm64-v8a/libnanosockets.so.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Android/armeabi-v7a.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Android/armeabi-v7a.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Android/armeabi-v7a.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Android/armeabi-v7a.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Android/armeabi-v7a/libnanosockets.so b/Assets/.Photon/Fusion/Plugins/NanoSockets/Android/armeabi-v7a/libnanosockets.so similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Android/armeabi-v7a/libnanosockets.so rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Android/armeabi-v7a/libnanosockets.so diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Android/armeabi-v7a/libnanosockets.so.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Android/armeabi-v7a/libnanosockets.so.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Android/armeabi-v7a/libnanosockets.so.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Android/armeabi-v7a/libnanosockets.so.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Android/x86.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Android/x86.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Android/x86.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Android/x86.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Android/x86/libnanosockets.so b/Assets/.Photon/Fusion/Plugins/NanoSockets/Android/x86/libnanosockets.so similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Android/x86/libnanosockets.so rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Android/x86/libnanosockets.so diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Android/x86/libnanosockets.so.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Android/x86/libnanosockets.so.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Android/x86/libnanosockets.so.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Android/x86/libnanosockets.so.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Android/x86_64.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Android/x86_64.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Android/x86_64.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Android/x86_64.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Android/x86_64/libnanosockets.so b/Assets/.Photon/Fusion/Plugins/NanoSockets/Android/x86_64/libnanosockets.so similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Android/x86_64/libnanosockets.so rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Android/x86_64/libnanosockets.so diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Android/x86_64/libnanosockets.so.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Android/x86_64/libnanosockets.so.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Android/x86_64/libnanosockets.so.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Android/x86_64/libnanosockets.so.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Linux.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Linux.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Linux.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Linux.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Linux/libnanosockets.so b/Assets/.Photon/Fusion/Plugins/NanoSockets/Linux/libnanosockets.so similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Linux/libnanosockets.so rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Linux/libnanosockets.so diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Linux/libnanosockets.so.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Linux/libnanosockets.so.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Linux/libnanosockets.so.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Linux/libnanosockets.so.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Metro.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Metro.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Metro.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Metro.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Metro/ARM.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/ARM.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Metro/ARM.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/ARM.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Metro/ARM/libnanosockets.dll b/Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/ARM/libnanosockets.dll similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Metro/ARM/libnanosockets.dll rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/ARM/libnanosockets.dll diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Metro/ARM/libnanosockets.dll.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/ARM/libnanosockets.dll.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Metro/ARM/libnanosockets.dll.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/ARM/libnanosockets.dll.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Metro/ARM64.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/ARM64.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Metro/ARM64.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/ARM64.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Metro/ARM64/libnanosockets.dll b/Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/ARM64/libnanosockets.dll similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Metro/ARM64/libnanosockets.dll rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/ARM64/libnanosockets.dll diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Metro/ARM64/libnanosockets.dll.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/ARM64/libnanosockets.dll.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Metro/ARM64/libnanosockets.dll.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/ARM64/libnanosockets.dll.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Metro/NanoSockets.dll b/Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/NanoSockets.dll similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Metro/NanoSockets.dll rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/NanoSockets.dll diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Metro/NanoSockets.dll.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/NanoSockets.dll.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Metro/NanoSockets.dll.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/NanoSockets.dll.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Metro/x64.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/x64.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Metro/x64.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/x64.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Metro/x64/libnanosockets.dll b/Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/x64/libnanosockets.dll similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Metro/x64/libnanosockets.dll rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/x64/libnanosockets.dll diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Metro/x64/libnanosockets.dll.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/x64/libnanosockets.dll.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Metro/x64/libnanosockets.dll.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/x64/libnanosockets.dll.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Metro/x86.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/x86.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Metro/x86.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/x86.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Metro/x86/libnanosockets.dll b/Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/x86/libnanosockets.dll similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Metro/x86/libnanosockets.dll rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/x86/libnanosockets.dll diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Metro/x86/libnanosockets.dll.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/x86/libnanosockets.dll.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Metro/x86/libnanosockets.dll.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Metro/x86/libnanosockets.dll.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/NanoSockets.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/NanoSockets.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/NanoSockets.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/NanoSockets.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/NanoSockets/Dynamic.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/NanoSockets/Dynamic.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/NanoSockets/Dynamic.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/NanoSockets/Dynamic.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/NanoSockets/Dynamic/NanoSockets.dll b/Assets/.Photon/Fusion/Plugins/NanoSockets/NanoSockets/Dynamic/NanoSockets.dll similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/NanoSockets/Dynamic/NanoSockets.dll rename to Assets/.Photon/Fusion/Plugins/NanoSockets/NanoSockets/Dynamic/NanoSockets.dll diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/NanoSockets/Dynamic/NanoSockets.dll.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/NanoSockets/Dynamic/NanoSockets.dll.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/NanoSockets/Dynamic/NanoSockets.dll.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/NanoSockets/Dynamic/NanoSockets.dll.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/NanoSockets/Static.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/NanoSockets/Static.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/NanoSockets/Static.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/NanoSockets/Static.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/NanoSockets/Static/NanoSockets.dll b/Assets/.Photon/Fusion/Plugins/NanoSockets/NanoSockets/Static/NanoSockets.dll similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/NanoSockets/Static/NanoSockets.dll rename to Assets/.Photon/Fusion/Plugins/NanoSockets/NanoSockets/Static/NanoSockets.dll diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/NanoSockets/Static/NanoSockets.dll.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/NanoSockets/Static/NanoSockets.dll.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/NanoSockets/Static/NanoSockets.dll.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/NanoSockets/Static/NanoSockets.dll.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/WebGL.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/WebGL.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/WebGL.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/WebGL.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/WebGL/NanoSockets.dll b/Assets/.Photon/Fusion/Plugins/NanoSockets/WebGL/NanoSockets.dll similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/WebGL/NanoSockets.dll rename to Assets/.Photon/Fusion/Plugins/NanoSockets/WebGL/NanoSockets.dll diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/WebGL/NanoSockets.dll.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/WebGL/NanoSockets.dll.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/WebGL/NanoSockets.dll.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/WebGL/NanoSockets.dll.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Windows.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Windows.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Windows.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Windows.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Windows/nanosockets.dll b/Assets/.Photon/Fusion/Plugins/NanoSockets/Windows/nanosockets.dll similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Windows/nanosockets.dll rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Windows/nanosockets.dll diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/Windows/nanosockets.dll.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/Windows/nanosockets.dll.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/Windows/nanosockets.dll.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/Windows/nanosockets.dll.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/iOS.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/iOS.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/iOS.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/iOS.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/iOS/libnanosockets.a b/Assets/.Photon/Fusion/Plugins/NanoSockets/iOS/libnanosockets.a similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/iOS/libnanosockets.a rename to Assets/.Photon/Fusion/Plugins/NanoSockets/iOS/libnanosockets.a diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/iOS/libnanosockets.a.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/iOS/libnanosockets.a.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/iOS/libnanosockets.a.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/iOS/libnanosockets.a.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/libnanosockets_LICENSE b/Assets/.Photon/Fusion/Plugins/NanoSockets/libnanosockets_LICENSE similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/libnanosockets_LICENSE rename to Assets/.Photon/Fusion/Plugins/NanoSockets/libnanosockets_LICENSE diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/libnanosockets_LICENSE.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/libnanosockets_LICENSE.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/libnanosockets_LICENSE.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/libnanosockets_LICENSE.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/macOS.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/macOS.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/macOS.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/macOS.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/macOS/libnanosockets.dylib b/Assets/.Photon/Fusion/Plugins/NanoSockets/macOS/libnanosockets.dylib similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/macOS/libnanosockets.dylib rename to Assets/.Photon/Fusion/Plugins/NanoSockets/macOS/libnanosockets.dylib diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/macOS/libnanosockets.dylib.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/macOS/libnanosockets.dylib.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/macOS/libnanosockets.dylib.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/macOS/libnanosockets.dylib.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/tvOS.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/tvOS.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/tvOS.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/tvOS.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/tvOS/libnanosockets.a b/Assets/.Photon/Fusion/Plugins/NanoSockets/tvOS/libnanosockets.a similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/tvOS/libnanosockets.a rename to Assets/.Photon/Fusion/Plugins/NanoSockets/tvOS/libnanosockets.a diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/tvOS/libnanosockets.a.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/tvOS/libnanosockets.a.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/tvOS/libnanosockets.a.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/tvOS/libnanosockets.a.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/visionOS.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/visionOS.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/visionOS.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/visionOS.meta diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/visionOS/libnanosockets.a b/Assets/.Photon/Fusion/Plugins/NanoSockets/visionOS/libnanosockets.a similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/visionOS/libnanosockets.a rename to Assets/.Photon/Fusion/Plugins/NanoSockets/visionOS/libnanosockets.a diff --git a/Assets/Photon/Fusion/Plugins/NanoSockets/visionOS/libnanosockets.a.meta b/Assets/.Photon/Fusion/Plugins/NanoSockets/visionOS/libnanosockets.a.meta similarity index 100% rename from Assets/Photon/Fusion/Plugins/NanoSockets/visionOS/libnanosockets.a.meta rename to Assets/.Photon/Fusion/Plugins/NanoSockets/visionOS/libnanosockets.a.meta diff --git a/Assets/Photon/Fusion/Resources.meta b/Assets/.Photon/Fusion/Resources.meta similarity index 100% rename from Assets/Photon/Fusion/Resources.meta rename to Assets/.Photon/Fusion/Resources.meta diff --git a/Assets/Photon/Fusion/Resources/NetworkProjectConfig.fusion b/Assets/.Photon/Fusion/Resources/NetworkProjectConfig.fusion similarity index 95% rename from Assets/Photon/Fusion/Resources/NetworkProjectConfig.fusion rename to Assets/.Photon/Fusion/Resources/NetworkProjectConfig.fusion index caf6935..d2fd5fe 100644 --- a/Assets/Photon/Fusion/Resources/NetworkProjectConfig.fusion +++ b/Assets/.Photon/Fusion/Resources/NetworkProjectConfig.fusion @@ -3,7 +3,7 @@ "TypeId": "NetworkProjectConfig", "PeerMode": 0, "LagCompensation": { - "Enabled": false, + "Enabled": true, "HitboxBufferLengthInMs": 200, "HitboxDefaultCapacity": 512, "CachedStaticCollidersSize": 64 @@ -18,10 +18,10 @@ "InputDataWordCount": 0, "ReplicationFeatures": 1, "InputTransferMode": 0, - "SimulationUpdateTimeMode": 0, + "SimulationUpdateTimeMode": 1, "PlayerCount": 2, "TickRateSelection": { - "Client": 64, + "Client": 60, "ServerIndex": 0, "ClientSendIndex": 1, "ServerSendIndex": 1 diff --git a/Assets/Photon/Fusion/Resources/NetworkProjectConfig.fusion.meta b/Assets/.Photon/Fusion/Resources/NetworkProjectConfig.fusion.meta similarity index 100% rename from Assets/Photon/Fusion/Resources/NetworkProjectConfig.fusion.meta rename to Assets/.Photon/Fusion/Resources/NetworkProjectConfig.fusion.meta diff --git a/Assets/Photon/Fusion/Resources/PhotonAppSettings.asset b/Assets/.Photon/Fusion/Resources/PhotonAppSettings.asset similarity index 100% rename from Assets/Photon/Fusion/Resources/PhotonAppSettings.asset rename to Assets/.Photon/Fusion/Resources/PhotonAppSettings.asset diff --git a/Assets/Photon/Fusion/Resources/PhotonAppSettings.asset.meta b/Assets/.Photon/Fusion/Resources/PhotonAppSettings.asset.meta similarity index 100% rename from Assets/Photon/Fusion/Resources/PhotonAppSettings.asset.meta rename to Assets/.Photon/Fusion/Resources/PhotonAppSettings.asset.meta diff --git a/Assets/Photon/Fusion/Runtime.meta b/Assets/.Photon/Fusion/Runtime.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime.meta rename to Assets/.Photon/Fusion/Runtime.meta diff --git a/Assets/Photon/Fusion/Runtime/Fusion.Unity.AssemblyAttributes.cs b/Assets/.Photon/Fusion/Runtime/Fusion.Unity.AssemblyAttributes.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/Fusion.Unity.AssemblyAttributes.cs rename to Assets/.Photon/Fusion/Runtime/Fusion.Unity.AssemblyAttributes.cs diff --git a/Assets/Photon/Fusion/Runtime/Fusion.Unity.AssemblyAttributes.cs.meta b/Assets/.Photon/Fusion/Runtime/Fusion.Unity.AssemblyAttributes.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Fusion.Unity.AssemblyAttributes.cs.meta rename to Assets/.Photon/Fusion/Runtime/Fusion.Unity.AssemblyAttributes.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/Fusion.Unity.asmdef b/Assets/.Photon/Fusion/Runtime/Fusion.Unity.asmdef similarity index 100% rename from Assets/Photon/Fusion/Runtime/Fusion.Unity.asmdef rename to Assets/.Photon/Fusion/Runtime/Fusion.Unity.asmdef diff --git a/Assets/Photon/Fusion/Runtime/Fusion.Unity.asmdef.meta b/Assets/.Photon/Fusion/Runtime/Fusion.Unity.asmdef.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Fusion.Unity.asmdef.meta rename to Assets/.Photon/Fusion/Runtime/Fusion.Unity.asmdef.meta diff --git a/Assets/Photon/Fusion/Runtime/Fusion.Unity.cs b/Assets/.Photon/Fusion/Runtime/Fusion.Unity.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/Fusion.Unity.cs rename to Assets/.Photon/Fusion/Runtime/Fusion.Unity.cs diff --git a/Assets/Photon/Fusion/Runtime/Fusion.Unity.cs.meta b/Assets/.Photon/Fusion/Runtime/Fusion.Unity.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Fusion.Unity.cs.meta rename to Assets/.Photon/Fusion/Runtime/Fusion.Unity.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/FusionAddressablePrefabsPreloader.cs b/Assets/.Photon/Fusion/Runtime/FusionAddressablePrefabsPreloader.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/FusionAddressablePrefabsPreloader.cs rename to Assets/.Photon/Fusion/Runtime/FusionAddressablePrefabsPreloader.cs diff --git a/Assets/Photon/Fusion/Runtime/FusionAddressablePrefabsPreloader.cs.meta b/Assets/.Photon/Fusion/Runtime/FusionAddressablePrefabsPreloader.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/FusionAddressablePrefabsPreloader.cs.meta rename to Assets/.Photon/Fusion/Runtime/FusionAddressablePrefabsPreloader.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/FusionBasicBillboard.cs b/Assets/.Photon/Fusion/Runtime/FusionBasicBillboard.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/FusionBasicBillboard.cs rename to Assets/.Photon/Fusion/Runtime/FusionBasicBillboard.cs diff --git a/Assets/Photon/Fusion/Runtime/FusionBasicBillboard.cs.meta b/Assets/.Photon/Fusion/Runtime/FusionBasicBillboard.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/FusionBasicBillboard.cs.meta rename to Assets/.Photon/Fusion/Runtime/FusionBasicBillboard.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/FusionBootstrap.cs b/Assets/.Photon/Fusion/Runtime/FusionBootstrap.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/FusionBootstrap.cs rename to Assets/.Photon/Fusion/Runtime/FusionBootstrap.cs diff --git a/Assets/Photon/Fusion/Runtime/FusionBootstrap.cs.meta b/Assets/.Photon/Fusion/Runtime/FusionBootstrap.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/FusionBootstrap.cs.meta rename to Assets/.Photon/Fusion/Runtime/FusionBootstrap.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUI.cs b/Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUI.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUI.cs rename to Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUI.cs diff --git a/Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUI.cs.meta b/Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUI.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUI.cs.meta rename to Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUI.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUISkin.guiskin b/Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUISkin.guiskin similarity index 100% rename from Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUISkin.guiskin rename to Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUISkin.guiskin diff --git a/Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUISkin.guiskin.meta b/Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUISkin.guiskin.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUISkin.guiskin.meta rename to Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUISkin.guiskin.meta diff --git a/Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButton.png b/Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButton.png similarity index 100% rename from Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButton.png rename to Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButton.png diff --git a/Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButton.png.meta b/Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButton.png.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButton.png.meta rename to Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButton.png.meta diff --git a/Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButtonDown.png b/Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButtonDown.png similarity index 100% rename from Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButtonDown.png rename to Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButtonDown.png diff --git a/Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButtonDown.png.meta b/Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButtonDown.png.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButtonDown.png.meta rename to Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButtonDown.png.meta diff --git a/Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButtonOver.png b/Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButtonOver.png similarity index 100% rename from Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButtonOver.png rename to Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButtonOver.png diff --git a/Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButtonOver.png.meta b/Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButtonOver.png.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButtonOver.png.meta rename to Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartButtonOver.png.meta diff --git a/Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartWindow.png b/Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartWindow.png similarity index 100% rename from Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartWindow.png rename to Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartWindow.png diff --git a/Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartWindow.png.meta b/Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartWindow.png.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartWindow.png.meta rename to Assets/.Photon/Fusion/Runtime/FusionBootstrapDebugGUIStartWindow.png.meta diff --git a/Assets/Photon/Fusion/Runtime/NetworkCharacterController.cs b/Assets/.Photon/Fusion/Runtime/NetworkCharacterController.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/NetworkCharacterController.cs rename to Assets/.Photon/Fusion/Runtime/NetworkCharacterController.cs diff --git a/Assets/Photon/Fusion/Runtime/NetworkCharacterController.cs.meta b/Assets/.Photon/Fusion/Runtime/NetworkCharacterController.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/NetworkCharacterController.cs.meta rename to Assets/.Photon/Fusion/Runtime/NetworkCharacterController.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/NetworkObjectProviderDefault.cs b/Assets/.Photon/Fusion/Runtime/NetworkObjectProviderDefault.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/NetworkObjectProviderDefault.cs rename to Assets/.Photon/Fusion/Runtime/NetworkObjectProviderDefault.cs diff --git a/Assets/Photon/Fusion/Runtime/NetworkObjectProviderDefault.cs.meta b/Assets/.Photon/Fusion/Runtime/NetworkObjectProviderDefault.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/NetworkObjectProviderDefault.cs.meta rename to Assets/.Photon/Fusion/Runtime/NetworkObjectProviderDefault.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/NetworkSceneManagerDefault.cs b/Assets/.Photon/Fusion/Runtime/NetworkSceneManagerDefault.cs similarity index 92% rename from Assets/Photon/Fusion/Runtime/NetworkSceneManagerDefault.cs rename to Assets/.Photon/Fusion/Runtime/NetworkSceneManagerDefault.cs index 6dc8559..a0fcee0 100644 --- a/Assets/Photon/Fusion/Runtime/NetworkSceneManagerDefault.cs +++ b/Assets/.Photon/Fusion/Runtime/NetworkSceneManagerDefault.cs @@ -29,6 +29,16 @@ namespace Fusion { [ToggleLeft] public bool LogSceneLoadErrors = true; + /// + /// If enabled the scenemanager despawns all runtime spawned prefab instances (not scene objects) before unloading a scene. + /// If the peer does not have StateAuthority over the object it is destroyed instead of despawned. + /// If disabled the destroy will be indirectly done via the scene unload from Unity however it will be async and might be delayed, + /// this can lead to the scene change being synchronized in an earlier tick than the destroys. + /// + [InlineHelp] + [ToggleLeft] + public bool DestroySpawnedPrefabsOnSceneUnload = true; + /// /// All the scenes loaded by all the managers. Used when is enabled. /// @@ -344,6 +354,21 @@ namespace Fusion { } } } + else + { + if (DestroySpawnedPrefabsOnSceneUnload && loadSceneMode == LoadSceneMode.Single) + { + for (int i = 0; i < SceneManager.sceneCount; i++) { + // find the scene to unload + var sceneToBeUnloaded = SceneManager.GetSceneAt(i); // will be unloaded by Unity on scene load + var sceneRefToBeUnloaded = GetSceneRef(sceneToBeUnloaded.path); + + if (sceneRefToBeUnloaded != SceneRef.None) { + DestroyAllRuntimeSpawnedObjectsInScene(sceneToBeUnloaded, sceneRefToBeUnloaded); + } + } + } + } if (IsSceneTakeOverEnabled) { // check if a loaded scene can be taken over @@ -516,6 +541,11 @@ namespace Fusion { throw new ArgumentOutOfRangeException($"Did not find a scene to unload: {sceneRef}", nameof(sceneRef)); } + if (DestroySpawnedPrefabsOnSceneUnload) { + DestroyAllRuntimeSpawnedObjectsInScene(sceneToUnload, sceneRef); + } + + Log.TraceSceneManager(Runner, $"Started unloading {sceneToUnload.Dump()} for {sceneRef}"); if (!sceneToUnload.CanBeUnloaded()) { @@ -597,6 +627,22 @@ namespace Fusion { Log.TraceSceneManager(Runner, $"Loading scene progress {sceneRef} ({progress:P2})"); } + private void DestroyAllRuntimeSpawnedObjectsInScene(Scene scene, SceneRef sceneRef) { + Log.TraceSceneManager(Runner, $"destroying runtime spawned NetworkObjects in scene {scene.Dump()} for {sceneRef}"); + foreach (var networkObject in Runner.GetAllNetworkObjects()) { + // This exists to ensure all object meta is destroyed when unloading the scene to prevent objects from getting despawned and spawned again repeadetly on scene unload. + // Scene objects are ignored as they can't be spawned again when the scene is unloaded. + if (networkObject.gameObject.scene == scene && networkObject.NetworkTypeId.IsSceneObject == false) { + if (networkObject.HasStateAuthority) { + // despawn to ensure the object is immediately added to destroy queue. (Unity destroy callback is delayed until end of Update() + Runner.Despawn(networkObject); + } else { + Destroy(networkObject.gameObject); + } + } + } + } + private Scene FindSceneToTakeOver(SceneRef sceneRef) { for (int i = 0; i < SceneManager.sceneCount; ++i) { var candidate = SceneManager.GetSceneAt(i); diff --git a/Assets/Photon/Fusion/Runtime/NetworkSceneManagerDefault.cs.meta b/Assets/.Photon/Fusion/Runtime/NetworkSceneManagerDefault.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/NetworkSceneManagerDefault.cs.meta rename to Assets/.Photon/Fusion/Runtime/NetworkSceneManagerDefault.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/RuntimeAssets.meta b/Assets/.Photon/Fusion/Runtime/RuntimeAssets.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/RuntimeAssets.meta rename to Assets/.Photon/Fusion/Runtime/RuntimeAssets.meta diff --git a/Assets/Photon/Fusion/Runtime/RuntimeAssets/JetBrainsMono OFL.txt b/Assets/.Photon/Fusion/Runtime/RuntimeAssets/JetBrainsMono OFL.txt similarity index 100% rename from Assets/Photon/Fusion/Runtime/RuntimeAssets/JetBrainsMono OFL.txt rename to Assets/.Photon/Fusion/Runtime/RuntimeAssets/JetBrainsMono OFL.txt diff --git a/Assets/Photon/Fusion/Runtime/RuntimeAssets/JetBrainsMono OFL.txt.meta b/Assets/.Photon/Fusion/Runtime/RuntimeAssets/JetBrainsMono OFL.txt.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/RuntimeAssets/JetBrainsMono OFL.txt.meta rename to Assets/.Photon/Fusion/Runtime/RuntimeAssets/JetBrainsMono OFL.txt.meta diff --git a/Assets/Photon/Fusion/Runtime/RuntimeAssets/JetBrainsMono-Regular.ttf b/Assets/.Photon/Fusion/Runtime/RuntimeAssets/JetBrainsMono-Regular.ttf similarity index 100% rename from Assets/Photon/Fusion/Runtime/RuntimeAssets/JetBrainsMono-Regular.ttf rename to Assets/.Photon/Fusion/Runtime/RuntimeAssets/JetBrainsMono-Regular.ttf diff --git a/Assets/Photon/Fusion/Runtime/RuntimeAssets/JetBrainsMono-Regular.ttf.meta b/Assets/.Photon/Fusion/Runtime/RuntimeAssets/JetBrainsMono-Regular.ttf.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/RuntimeAssets/JetBrainsMono-Regular.ttf.meta rename to Assets/.Photon/Fusion/Runtime/RuntimeAssets/JetBrainsMono-Regular.ttf.meta diff --git a/Assets/Photon/Fusion/Runtime/RuntimeAssets/Roboto-Regular.ttf b/Assets/.Photon/Fusion/Runtime/RuntimeAssets/Roboto-Regular.ttf similarity index 100% rename from Assets/Photon/Fusion/Runtime/RuntimeAssets/Roboto-Regular.ttf rename to Assets/.Photon/Fusion/Runtime/RuntimeAssets/Roboto-Regular.ttf diff --git a/Assets/Photon/Fusion/Runtime/RuntimeAssets/Roboto-Regular.ttf.meta b/Assets/.Photon/Fusion/Runtime/RuntimeAssets/Roboto-Regular.ttf.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/RuntimeAssets/Roboto-Regular.ttf.meta rename to Assets/.Photon/Fusion/Runtime/RuntimeAssets/Roboto-Regular.ttf.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics.meta b/Assets/.Photon/Fusion/Runtime/Statistics.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics.meta rename to Assets/.Photon/Fusion/Runtime/Statistics.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatistics.cs b/Assets/.Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatistics.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatistics.cs rename to Assets/.Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatistics.cs diff --git a/Assets/Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatistics.cs.meta b/Assets/.Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatistics.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatistics.cs.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatistics.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatsGraph.cs b/Assets/.Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatsGraph.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatsGraph.cs rename to Assets/.Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatsGraph.cs diff --git a/Assets/Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatsGraph.cs.meta b/Assets/.Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatsGraph.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatsGraph.cs.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatsGraph.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatsGraphCombine.cs b/Assets/.Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatsGraphCombine.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatsGraphCombine.cs rename to Assets/.Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatsGraphCombine.cs diff --git a/Assets/Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatsGraphCombine.cs.meta b/Assets/.Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatsGraphCombine.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatsGraphCombine.cs.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/FusionNetworkObjectStatsGraphCombine.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/FusionStatistics.cs b/Assets/.Photon/Fusion/Runtime/Statistics/FusionStatistics.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/FusionStatistics.cs rename to Assets/.Photon/Fusion/Runtime/Statistics/FusionStatistics.cs diff --git a/Assets/Photon/Fusion/Runtime/Statistics/FusionStatistics.cs.meta b/Assets/.Photon/Fusion/Runtime/Statistics/FusionStatistics.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/FusionStatistics.cs.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/FusionStatistics.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/FusionStatsCanvas.cs b/Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsCanvas.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/FusionStatsCanvas.cs rename to Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsCanvas.cs diff --git a/Assets/Photon/Fusion/Runtime/Statistics/FusionStatsCanvas.cs.meta b/Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsCanvas.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/FusionStatsCanvas.cs.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsCanvas.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/FusionStatsConfig.cs b/Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsConfig.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/FusionStatsConfig.cs rename to Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsConfig.cs diff --git a/Assets/Photon/Fusion/Runtime/Statistics/FusionStatsConfig.cs.meta b/Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsConfig.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/FusionStatsConfig.cs.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsConfig.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/FusionStatsGraphDefault.cs b/Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsGraphDefault.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/FusionStatsGraphDefault.cs rename to Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsGraphDefault.cs diff --git a/Assets/Photon/Fusion/Runtime/Statistics/FusionStatsGraphDefault.cs.meta b/Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsGraphDefault.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/FusionStatsGraphDefault.cs.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsGraphDefault.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/FusionStatsGraphMaterial.mat b/Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsGraphMaterial.mat similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/FusionStatsGraphMaterial.mat rename to Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsGraphMaterial.mat diff --git a/Assets/Photon/Fusion/Runtime/Statistics/FusionStatsGraphMaterial.mat.meta b/Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsGraphMaterial.mat.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/FusionStatsGraphMaterial.mat.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsGraphMaterial.mat.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/FusionStatsGraphShader.shader b/Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsGraphShader.shader similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/FusionStatsGraphShader.shader rename to Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsGraphShader.shader diff --git a/Assets/Photon/Fusion/Runtime/Statistics/FusionStatsGraphShader.shader.meta b/Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsGraphShader.shader.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/FusionStatsGraphShader.shader.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsGraphShader.shader.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/FusionStatsPanelHeader.cs b/Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsPanelHeader.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/FusionStatsPanelHeader.cs rename to Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsPanelHeader.cs diff --git a/Assets/Photon/Fusion/Runtime/Statistics/FusionStatsPanelHeader.cs.meta b/Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsPanelHeader.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/FusionStatsPanelHeader.cs.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsPanelHeader.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/FusionStatsWorldAnchor.cs b/Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsWorldAnchor.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/FusionStatsWorldAnchor.cs rename to Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsWorldAnchor.cs diff --git a/Assets/Photon/Fusion/Runtime/Statistics/FusionStatsWorldAnchor.cs.meta b/Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsWorldAnchor.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/FusionStatsWorldAnchor.cs.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/FusionStatsWorldAnchor.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/Prefabs.meta b/Assets/.Photon/Fusion/Runtime/Statistics/Prefabs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/Prefabs.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/Prefabs.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/Prefabs/FusionStatsSimpleButton.prefab b/Assets/.Photon/Fusion/Runtime/Statistics/Prefabs/FusionStatsSimpleButton.prefab similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/Prefabs/FusionStatsSimpleButton.prefab rename to Assets/.Photon/Fusion/Runtime/Statistics/Prefabs/FusionStatsSimpleButton.prefab diff --git a/Assets/Photon/Fusion/Runtime/Statistics/Prefabs/FusionStatsSimpleButton.prefab.meta b/Assets/.Photon/Fusion/Runtime/Statistics/Prefabs/FusionStatsSimpleButton.prefab.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/Prefabs/FusionStatsSimpleButton.prefab.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/Prefabs/FusionStatsSimpleButton.prefab.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/Prefabs/NOStatGraph.prefab b/Assets/.Photon/Fusion/Runtime/Statistics/Prefabs/NOStatGraph.prefab similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/Prefabs/NOStatGraph.prefab rename to Assets/.Photon/Fusion/Runtime/Statistics/Prefabs/NOStatGraph.prefab diff --git a/Assets/Photon/Fusion/Runtime/Statistics/Prefabs/NOStatGraph.prefab.meta b/Assets/.Photon/Fusion/Runtime/Statistics/Prefabs/NOStatGraph.prefab.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/Prefabs/NOStatGraph.prefab.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/Prefabs/NOStatGraph.prefab.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/Prefabs/SingleStatistics.prefab b/Assets/.Photon/Fusion/Runtime/Statistics/Prefabs/SingleStatistics.prefab similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/Prefabs/SingleStatistics.prefab rename to Assets/.Photon/Fusion/Runtime/Statistics/Prefabs/SingleStatistics.prefab diff --git a/Assets/Photon/Fusion/Runtime/Statistics/Prefabs/SingleStatistics.prefab.meta b/Assets/.Photon/Fusion/Runtime/Statistics/Prefabs/SingleStatistics.prefab.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/Prefabs/SingleStatistics.prefab.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/Prefabs/SingleStatistics.prefab.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/Prefabs/StatisticsRenderGraph.prefab b/Assets/.Photon/Fusion/Runtime/Statistics/Prefabs/StatisticsRenderGraph.prefab similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/Prefabs/StatisticsRenderGraph.prefab rename to Assets/.Photon/Fusion/Runtime/Statistics/Prefabs/StatisticsRenderGraph.prefab diff --git a/Assets/Photon/Fusion/Runtime/Statistics/Prefabs/StatisticsRenderGraph.prefab.meta b/Assets/.Photon/Fusion/Runtime/Statistics/Prefabs/StatisticsRenderGraph.prefab.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/Prefabs/StatisticsRenderGraph.prefab.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/Prefabs/StatisticsRenderGraph.prefab.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/Resources.meta b/Assets/.Photon/Fusion/Runtime/Statistics/Resources.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/Resources.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/Resources.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/Resources/FusionStatsResources.meta b/Assets/.Photon/Fusion/Runtime/Statistics/Resources/FusionStatsResources.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/Resources/FusionStatsResources.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/Resources/FusionStatsResources.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/Resources/FusionStatsResources/FusionStatsRenderPanel.prefab b/Assets/.Photon/Fusion/Runtime/Statistics/Resources/FusionStatsResources/FusionStatsRenderPanel.prefab similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/Resources/FusionStatsResources/FusionStatsRenderPanel.prefab rename to Assets/.Photon/Fusion/Runtime/Statistics/Resources/FusionStatsResources/FusionStatsRenderPanel.prefab diff --git a/Assets/Photon/Fusion/Runtime/Statistics/Resources/FusionStatsResources/FusionStatsRenderPanel.prefab.meta b/Assets/.Photon/Fusion/Runtime/Statistics/Resources/FusionStatsResources/FusionStatsRenderPanel.prefab.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/Resources/FusionStatsResources/FusionStatsRenderPanel.prefab.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/Resources/FusionStatsResources/FusionStatsRenderPanel.prefab.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/Resources/FusionStatsResources/NetworkObjectStatistics.prefab b/Assets/.Photon/Fusion/Runtime/Statistics/Resources/FusionStatsResources/NetworkObjectStatistics.prefab similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/Resources/FusionStatsResources/NetworkObjectStatistics.prefab rename to Assets/.Photon/Fusion/Runtime/Statistics/Resources/FusionStatsResources/NetworkObjectStatistics.prefab diff --git a/Assets/Photon/Fusion/Runtime/Statistics/Resources/FusionStatsResources/NetworkObjectStatistics.prefab.meta b/Assets/.Photon/Fusion/Runtime/Statistics/Resources/FusionStatsResources/NetworkObjectStatistics.prefab.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/Resources/FusionStatsResources/NetworkObjectStatistics.prefab.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/Resources/FusionStatsResources/NetworkObjectStatistics.prefab.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/StatsIcons.meta b/Assets/.Photon/Fusion/Runtime/Statistics/StatsIcons.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/StatsIcons.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/StatsIcons.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsCancelIcon.png b/Assets/.Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsCancelIcon.png similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsCancelIcon.png rename to Assets/.Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsCancelIcon.png diff --git a/Assets/Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsCancelIcon.png.meta b/Assets/.Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsCancelIcon.png.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsCancelIcon.png.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsCancelIcon.png.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsGearIcon.png b/Assets/.Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsGearIcon.png similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsGearIcon.png rename to Assets/.Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsGearIcon.png diff --git a/Assets/Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsGearIcon.png.meta b/Assets/.Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsGearIcon.png.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsGearIcon.png.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsGearIcon.png.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsResetIcon.png b/Assets/.Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsResetIcon.png similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsResetIcon.png rename to Assets/.Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsResetIcon.png diff --git a/Assets/Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsResetIcon.png.meta b/Assets/.Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsResetIcon.png.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsResetIcon.png.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsResetIcon.png.meta diff --git a/Assets/Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsToggleArrowIcon.png b/Assets/.Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsToggleArrowIcon.png similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsToggleArrowIcon.png rename to Assets/.Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsToggleArrowIcon.png diff --git a/Assets/Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsToggleArrowIcon.png.meta b/Assets/.Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsToggleArrowIcon.png.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsToggleArrowIcon.png.meta rename to Assets/.Photon/Fusion/Runtime/Statistics/StatsIcons/FusionStatsToggleArrowIcon.png.meta diff --git a/Assets/Photon/Fusion/Runtime/Utilities.meta b/Assets/.Photon/Fusion/Runtime/Utilities.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Utilities.meta rename to Assets/.Photon/Fusion/Runtime/Utilities.meta diff --git a/Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility.meta b/Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility.meta rename to Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility.meta diff --git a/Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/EnableOnSingleRunner.cs b/Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/EnableOnSingleRunner.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/EnableOnSingleRunner.cs rename to Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/EnableOnSingleRunner.cs diff --git a/Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/EnableOnSingleRunner.cs.meta b/Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/EnableOnSingleRunner.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/EnableOnSingleRunner.cs.meta rename to Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/EnableOnSingleRunner.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerAOIGizmos.cs b/Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerAOIGizmos.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerAOIGizmos.cs rename to Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerAOIGizmos.cs diff --git a/Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerAOIGizmos.cs.meta b/Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerAOIGizmos.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerAOIGizmos.cs.meta rename to Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerAOIGizmos.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerEnableVisibility.cs b/Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerEnableVisibility.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerEnableVisibility.cs rename to Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerEnableVisibility.cs diff --git a/Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerEnableVisibility.cs.meta b/Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerEnableVisibility.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerEnableVisibility.cs.meta rename to Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerEnableVisibility.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerLagCompensationGizmos.cs b/Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerLagCompensationGizmos.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerLagCompensationGizmos.cs rename to Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerLagCompensationGizmos.cs diff --git a/Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerLagCompensationGizmos.cs.meta b/Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerLagCompensationGizmos.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerLagCompensationGizmos.cs.meta rename to Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerLagCompensationGizmos.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerVisibilityLink.cs b/Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerVisibilityLink.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerVisibilityLink.cs rename to Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerVisibilityLink.cs diff --git a/Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerVisibilityLink.cs.meta b/Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerVisibilityLink.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerVisibilityLink.cs.meta rename to Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerVisibilityLink.cs.meta diff --git a/Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerVisibilityLinksRoot.cs b/Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerVisibilityLinksRoot.cs similarity index 100% rename from Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerVisibilityLinksRoot.cs rename to Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerVisibilityLinksRoot.cs diff --git a/Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerVisibilityLinksRoot.cs.meta b/Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerVisibilityLinksRoot.cs.meta similarity index 100% rename from Assets/Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerVisibilityLinksRoot.cs.meta rename to Assets/.Photon/Fusion/Runtime/Utilities/RunnerVisibility/RunnerVisibilityLinksRoot.cs.meta diff --git a/Assets/.Photon/Fusion/build_info.txt b/Assets/.Photon/Fusion/build_info.txt new file mode 100644 index 0000000..b20018b --- /dev/null +++ b/Assets/.Photon/Fusion/build_info.txt @@ -0,0 +1,3 @@ +build: 2.0.6 Stable 1011 +date: 2025-04-30 09:16:39 +git: 2.0/release (a4ef6bf8b) \ No newline at end of file diff --git a/Assets/Photon/Fusion/build_info.txt.meta b/Assets/.Photon/Fusion/build_info.txt.meta similarity index 100% rename from Assets/Photon/Fusion/build_info.txt.meta rename to Assets/.Photon/Fusion/build_info.txt.meta diff --git a/Assets/Photon/Fusion/package.json b/Assets/.Photon/Fusion/package.json similarity index 100% rename from Assets/Photon/Fusion/package.json rename to Assets/.Photon/Fusion/package.json diff --git a/Assets/Photon/Fusion/package.json.meta b/Assets/.Photon/Fusion/package.json.meta similarity index 100% rename from Assets/Photon/Fusion/package.json.meta rename to Assets/.Photon/Fusion/package.json.meta diff --git a/Assets/Photon/Fusion/release_history.txt b/Assets/.Photon/Fusion/release_history.txt similarity index 94% rename from Assets/Photon/Fusion/release_history.txt rename to Assets/.Photon/Fusion/release_history.txt index 9a99eae..fcd4078 100644 --- a/Assets/Photon/Fusion/release_history.txt +++ b/Assets/.Photon/Fusion/release_history.txt @@ -1,3 +1,43 @@ +# 2.0.6 + +## Stable + +### Build 1011 (Apr 30, 2025) + +**Breaking Changes** + +- NetworkObjects that remains after shared mode authority leaves now has state authority set to PlayerRef.None + +**What's New** + +- NetworkRunner.LocalAddress to access the address Fusion bound to for direct connections + +**Changes** + +- DestroyWhenStateAuthorityLeaves prefab flag is now independent from the AllowStateAuthorityOverride +- Shared mode master client can now despawn network objects with PlayerRef.None as state authority +- Clicking animator bake failure error messages now shows the relevant gameObject in the hierarchy +- Photon Realtime SDK to 4.1.8.14 +- Force ShutdownTime to 1 second on Fusion Plugin +- Leave Session before disconnect from Photon Cloud +- Keep Session running only if Host/Server disconnected by Timeout +- Editor trace logs are more granular, with following defines controlling specific streams: `FUSION_EDITOR_TRACE_IMPORT`, `FUSION_EDITOR_TRACE_INSPECTOR`, `FUSION_EDITOR_TRACE_TEST`, FUSION_EDITOR_TRACE_MPPM` +- Spawned calls wrapped in try-catch so that an exception does not prevent other callbacks from executing +- `Simulation.IsStateAuthority` handles `PlayerRef.None` correctly (i.e. when it represents the host) +- `Simulation.IsInputAuthority` handles `PlayerRef.None` and `PlayerRef.MasterClient` correctly + +**Bug Fixes** + +- Fixed: In Shared Mode, if a state authority makes a state change which races against the server removing state authority from it, then flag the original state needing to be re-sent +- Fixed: Runtime spawned objects in scene are spawned/despawned multiple times in scene unload with a large amount of objects +- Fixed: Check StartGameArgs.Config for PlayerCount +- Fixed: Shutdown normally if Disconnected By PluginLogic +- Fixed: Client not rolling objects back to latest snapshot state in certain conditions +- Fixed: Prefab table not updating if running in batchmode +- Fixed: Stop repeated Unity warning logging if simulating multi peer physics scenes by not simulating the default scene +- Fixed: Client sometimes not updating `LatestServerTick` after receiving a new snapshot +- Fixed: Unable to update Session properties after Host Migration + # 2.0.5 ## Stable diff --git a/Assets/Photon/Fusion/release_history.txt.meta b/Assets/.Photon/Fusion/release_history.txt.meta similarity index 100% rename from Assets/Photon/Fusion/release_history.txt.meta rename to Assets/.Photon/Fusion/release_history.txt.meta diff --git a/Assets/.Photon/FusionAddons.meta b/Assets/.Photon/FusionAddons.meta new file mode 100644 index 0000000..36d4e8c --- /dev/null +++ b/Assets/.Photon/FusionAddons.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 727e58a31e7c421458f0be138e188a58 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics.meta b/Assets/.Photon/FusionAddons/Physics.meta new file mode 100644 index 0000000..46f7720 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 489e3c38ad741904a862046e61e67f92 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics/Editor.meta b/Assets/.Photon/FusionAddons/Physics/Editor.meta new file mode 100644 index 0000000..dcb0573 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ecdae6226f7ba4e4f9da0a4945ca2f7e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics/Editor/ClientPhysicsSimulationDrawer.cs b/Assets/.Photon/FusionAddons/Physics/Editor/ClientPhysicsSimulationDrawer.cs new file mode 100644 index 0000000..8d0c534 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/Editor/ClientPhysicsSimulationDrawer.cs @@ -0,0 +1,44 @@ +namespace Fusion.Addons.Physics.Editor +{ + using System; + using UnityEngine; + using UnityEditor; + + [CustomPropertyDrawer(typeof(ClientPhysicsSimulation))] + public sealed class ClientPhysicsSimulationDrawer : PropertyDrawer + { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + ClientPhysicsSimulation clientPhysicsSimulation = (ClientPhysicsSimulation)property.intValue; + + EditorGUI.BeginProperty(position, label, property); + EditorGUI.BeginChangeCheck(); + clientPhysicsSimulation = (ClientPhysicsSimulation)EditorGUI.EnumPopup(position, label, clientPhysicsSimulation); + if (EditorGUI.EndChangeCheck()) + { + property.intValue = (int)clientPhysicsSimulation; + } + EditorGUI.EndProperty(); + + switch (clientPhysicsSimulation) + { + case ClientPhysicsSimulation.Disabled: + EditorGUILayout.HelpBox("Physics simulation is disabled on clients. It runs only on the server.", MessageType.Info); + break; + case ClientPhysicsSimulation.SyncTransforms: + EditorGUILayout.HelpBox("Clients call Physics.SyncTransforms() every tick. This only synchronizes collider transforms with PhysX engine. Physics simulation runs only on the server.", MessageType.Info); + break; + case ClientPhysicsSimulation.SimulateForward: + EditorGUILayout.HelpBox("Clients call Physics.SyncTransforms() in resimulation ticks and Physics.Simulate() in forward ticks. This effectively runs physics simulation for ticks which are being simulated for the first time.", MessageType.Warning); + break; + case ClientPhysicsSimulation.SimulateAlways: + EditorGUILayout.HelpBox("Clients call Physics.Simulate() every tick including resimulations. This option allows full client side prediction for physics objects, but has a big impact on performance.", MessageType.Warning); + break; + default: + throw new ArgumentOutOfRangeException(nameof(clientPhysicsSimulation)); + } + + EditorGUILayout.Space(4); + } + } +} diff --git a/Assets/.Photon/FusionAddons/Physics/Editor/ClientPhysicsSimulationDrawer.cs.meta b/Assets/.Photon/FusionAddons/Physics/Editor/ClientPhysicsSimulationDrawer.cs.meta new file mode 100644 index 0000000..1b59394 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/Editor/ClientPhysicsSimulationDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c101a8201ac511643864eaca3bb0ed27 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics/Editor/Fusion.Addons.Physics.Editor.asmdef b/Assets/.Photon/FusionAddons/Physics/Editor/Fusion.Addons.Physics.Editor.asmdef new file mode 100644 index 0000000..c0c6166 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/Editor/Fusion.Addons.Physics.Editor.asmdef @@ -0,0 +1,18 @@ +{ + "name": "Fusion.Addons.Physics.Editor", + "rootNamespace": "Fusion.Addons.Physics.Editor", + "references": [ + "GUID:ee448cb1442054024b3c982e54100a6a" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": true, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/.Photon/FusionAddons/Physics/Editor/Fusion.Addons.Physics.Editor.asmdef.meta b/Assets/.Photon/FusionAddons/Physics/Editor/Fusion.Addons.Physics.Editor.asmdef.meta new file mode 100644 index 0000000..d2d0f49 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/Editor/Fusion.Addons.Physics.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1a714651de5a3064b976d937ff6309c6 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics/Fusion.Addons.Physics.asmdef b/Assets/.Photon/FusionAddons/Physics/Fusion.Addons.Physics.asmdef new file mode 100644 index 0000000..45a78eb --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/Fusion.Addons.Physics.asmdef @@ -0,0 +1,16 @@ +{ + "name": "Fusion.Addons.Physics", + "rootNamespace": "Fusion.Addons.Physics", + "references": [ + "GUID:1baf1ffff1031e948b3b228ab3453251" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": true, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/.Photon/FusionAddons/Physics/Fusion.Addons.Physics.asmdef.meta b/Assets/.Photon/FusionAddons/Physics/Fusion.Addons.Physics.asmdef.meta new file mode 100644 index 0000000..7573aac --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/Fusion.Addons.Physics.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ee448cb1442054024b3c982e54100a6a +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody.meta b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody.meta new file mode 100644 index 0000000..b86d4b7 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0534e7b84d002364193475356997dd56 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbody2D.cs b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbody2D.cs new file mode 100644 index 0000000..fcd1997 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbody2D.cs @@ -0,0 +1,170 @@ +using UnityEngine; + +namespace Fusion.Addons.Physics { + + /// + /// Fusion synchronization component for Unity Rigidbody2D. + /// + [DisallowMultipleComponent] + [RequireComponent(typeof(Rigidbody2D))] + [NetworkBehaviourWeaved(NetworkRBData.WORDS)] + public class NetworkRigidbody2D : NetworkRigidbody { + + /// + public override Vector3 RBPosition { + get => _rigidbody.position; + set => _rigidbody.position = value; + } + /// + public override Quaternion RBRotation { + get => Quaternion.Euler(0, 0, _rigidbody.rotation); + set => _rigidbody.rotation = value.eulerAngles.z; + } + + /// + public override bool RBIsKinematic { +#if UNITY_6000_0_OR_NEWER + get => _rigidbody.bodyType == RigidbodyType2D.Kinematic; + set => _rigidbody.bodyType = value ? RigidbodyType2D.Kinematic : RigidbodyType2D.Dynamic; +#else + get => _rigidbody.isKinematic; + set => _rigidbody.isKinematic = value; +#endif + } + + /// + protected override void Awake() { + base.Awake(); + AutoSimulateIsEnabled = Physics2D.simulationMode != SimulationMode2D.Script; + } + /// + protected override bool GetRBIsKinematic(Rigidbody2D rb) { + return RBIsKinematic; + } + /// + protected override void SetRBIsKinematic(Rigidbody2D rb, bool kinematic) { + if (RBIsKinematic != kinematic) { + RBIsKinematic = kinematic; + } + } + + /// + protected override void CaptureRBPositionRotation(Rigidbody2D rb, ref NetworkRBData data, bool useWorldSpace) { + + var pos = useWorldSpace ? (Vector3)rb.position : rb.transform.localPosition; + var rot = useWorldSpace ? rb.rotation : rb.transform.eulerAngles.z; + + data.TRSPData.Position = pos; + if (UsePreciseRotation) { + data.FullPrecisionRotation = Quaternion.Euler(0, 0, rot); + } else { + data.TRSPData.Rotation = Quaternion.Euler(0, 0, rot); + } + } + /// + protected override void ApplyRBPositionRotation(Rigidbody2D rb, Vector3 pos, Quaternion rot) { + rb.position = pos; + rb.rotation = rot.eulerAngles.z; + } + + /// + protected override NetworkRigidbodyFlags GetRBFlags(Rigidbody2D rb) { + var flags = default(NetworkRigidbodyFlags); + if (RBIsKinematic) { flags |= NetworkRigidbodyFlags.IsKinematic; } + if (rb.IsSleeping()) { flags |= NetworkRigidbodyFlags.IsSleeping; } + return flags; + } + /// + protected override int GetRBConstraints(Rigidbody2D rb) { + return (int)rb.constraints; + } + /// + protected override void SetRBConstraints(Rigidbody2D rb, int constraints) { + rb.constraints = (RigidbodyConstraints2D)constraints; + } + + /// + protected override void CaptureExtras(Rigidbody2D rb, ref NetworkRBData data) { + data.Mass = rb.mass; +#if UNITY_6000_0_OR_NEWER + data.Drag = rb.linearDamping; + data.AngularDrag = rb.angularDamping; + data.LinearVelocity = rb.linearVelocity; +#else + data.Drag = rb.drag; + data.AngularDrag = rb.angularDrag; + data.LinearVelocity = rb.velocity; + data.AngularVelocity2D = rb.angularVelocity; + data.GravityScale2D = rb.gravityScale; +#endif + } + + /// + protected override void ApplyExtras(Rigidbody2D rb, ref NetworkRBData data) { + rb.mass = data.Mass; +#if UNITY_6000_0_OR_NEWER + rb.angularDamping = data.AngularDrag; + rb.linearDamping = data.Drag; + rb.linearVelocity = data.LinearVelocity; +#else + rb.angularDrag = data.AngularDrag; + rb.drag = data.Drag; + rb.velocity = data.LinearVelocity; +#endif + rb.angularVelocity = data.AngularVelocity.Z; + rb.gravityScale = data.GravityScale2D; + } + + /// + public override void ResetRigidbody() { + base.ResetRigidbody(); + var rb = _rigidbody; +#if UNITY_6000_0_OR_NEWER + rb.linearVelocity = default; +#else + rb.velocity = default; +#endif + rb.angularVelocity = default; + } + + /// + protected override bool IsRBSleeping(Rigidbody2D rb) => rb.IsSleeping(); + /// + protected override void ForceRBSleep(Rigidbody2D rb) => rb.Sleep(); + /// + protected override void ForceRBWake( Rigidbody2D rb) => rb.WakeUp(); + + /// + protected override bool IsRigidbodyBelowSleepingThresholds(Rigidbody2D rb) { + // Linear threshold + + float sqrMag; +#if UNITY_6000_0_OR_NEWER + sqrMag = rb.linearVelocity.sqrMagnitude; +#else + sqrMag = rb.velocity.sqrMagnitude; +#endif + + if (sqrMag > Physics2D.linearSleepTolerance * Physics2D.linearSleepTolerance) { + return false; + } + + // Angular threshold + var angularVel = rb.angularVelocity; + return angularVel * angularVel <= Physics2D.angularSleepTolerance * Physics2D.angularSleepTolerance; + } + + /// + protected override bool IsStateBelowSleepingThresholds(NetworkRBData data) { + // Linear threshold + if (((Vector2)data.LinearVelocity).sqrMagnitude > Physics2D.linearSleepTolerance * Physics2D.linearSleepTolerance) { + return false; + } + + // Angular threshold + var angularVel = data.AngularVelocity2D; + return angularVel * angularVel <= Physics2D.angularSleepTolerance * Physics2D.angularSleepTolerance; + } + + } +} diff --git a/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbody2D.cs.meta b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbody2D.cs.meta new file mode 100644 index 0000000..61e5bb7 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbody2D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c5e690b5fb1084f5ab1c86457af401d4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbody3D.cs b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbody3D.cs new file mode 100644 index 0000000..af4fece --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbody3D.cs @@ -0,0 +1,177 @@ +using UnityEngine; + +namespace Fusion.Addons.Physics { + /// + /// Fusion synchronization component for Unity Rigidbody. + /// + [DisallowMultipleComponent] + [RequireComponent(typeof(Rigidbody))] + [NetworkBehaviourWeaved(NetworkRBData.WORDS)] + public class NetworkRigidbody3D : NetworkRigidbody { + + /// + public override Vector3 RBPosition { + get => _rigidbody.position; + set => _rigidbody.position = value; + } + /// + public override Quaternion RBRotation { + get =>_rigidbody.rotation; + set => _rigidbody.rotation = value; + } + /// + public override bool RBIsKinematic { + get => _rigidbody.isKinematic; + set => _rigidbody.isKinematic = value; + } + + /// + protected override void Awake() { + base.Awake(); +#if UNITY_2022_3_OR_NEWER + AutoSimulateIsEnabled = UnityEngine.Physics.simulationMode != SimulationMode.Script; +#else + AutoSimulateIsEnabled = UnityEngine.Physics.autoSimulation; +#endif + } + + /// + protected override bool GetRBIsKinematic(Rigidbody rb) { + return rb.isKinematic; + } + /// + protected override void SetRBIsKinematic(Rigidbody rb, bool kinematic) { + if (rb.isKinematic != kinematic) { + rb.isKinematic = kinematic; + } + } + + /// + protected override void CaptureRBPositionRotation(Rigidbody rb, ref NetworkRBData data, bool useWorldSpace) { + + var pos = useWorldSpace ? rb.position : rb.transform.localPosition; + var rot = useWorldSpace ? rb.rotation : rb.transform.localRotation; + + data.TRSPData.Position = pos; + if (UsePreciseRotation) { + data.FullPrecisionRotation = rot; + } else { + data.TRSPData.Rotation = rot; + } + } + /// + protected override void ApplyRBPositionRotation(Rigidbody rb, Vector3 pos, Quaternion rot) { + rb.position = pos; + rb.rotation = rot; + } + + + /// + protected override NetworkRigidbodyFlags GetRBFlags(Rigidbody rb) { + var flags = default(NetworkRigidbodyFlags); + if (rb.isKinematic) { flags |= NetworkRigidbodyFlags.IsKinematic; } + if (rb.IsSleeping()) { flags |= NetworkRigidbodyFlags.IsSleeping; } + if (rb.useGravity) { flags |= NetworkRigidbodyFlags.UseGravity; } + return flags; + } + /// + protected override int GetRBConstraints(Rigidbody rb) { + return (int)rb.constraints; + } + /// + protected override void SetRBConstraints(Rigidbody rb, int constraints) { + rb.constraints = (RigidbodyConstraints)constraints; + } + + /// + protected override void CaptureExtras(Rigidbody rb, ref NetworkRBData data) { + data.Mass = rb.mass; +#if UNITY_6000_0_OR_NEWER + data.Drag = rb.linearDamping; + data.AngularDrag = rb.angularDamping; + data.LinearVelocity= rb.linearVelocity; +#else + data.Drag = rb.drag; + data.AngularDrag = rb.angularDrag; + data.LinearVelocity = rb.velocity; +#endif + data.AngularVelocity = rb.angularVelocity; + } + + /// - + protected override void ApplyExtras(Rigidbody rb, ref NetworkRBData data) { + rb.mass = data.Mass; +#if UNITY_6000_0_OR_NEWER + rb.angularDamping= data.AngularDrag; + rb.linearDamping = data.Drag; + rb.linearVelocity= data.LinearVelocity; +#else + rb.drag = data.Drag; + rb.angularDrag = data.AngularDrag; + rb.velocity = data.LinearVelocity; +#endif + rb.angularVelocity = data.AngularVelocity; + } + + /// + public override void ResetRigidbody() { + base.ResetRigidbody(); + var rb = _rigidbody; + if (!rb.isKinematic) { +#if UNITY_6000_0_OR_NEWER + rb.linearVelocity = default; +#else + rb.velocity = default; +#endif + rb.angularVelocity = default; + } + } + + /// + protected override bool IsRBSleeping(Rigidbody rb) => rb.IsSleeping(); + /// + protected override void ForceRBSleep(Rigidbody rb) => rb.Sleep(); + /// + protected override void ForceRBWake( Rigidbody rb) => rb.WakeUp(); + + /// + protected override bool IsRigidbodyBelowSleepingThresholds(Rigidbody rb) { + + float sqrMag; +#if UNITY_6000_0_OR_NEWER + sqrMag = rb.linearVelocity.sqrMagnitude; +#else + sqrMag = rb.velocity.sqrMagnitude; +#endif + + var energy = rb.mass * sqrMag; + var angVel = rb.angularVelocity; + var inertia = rb.inertiaTensor; + + energy += inertia.x * (angVel.x * angVel.x); + energy += inertia.y * (angVel.y * angVel.y); + energy += inertia.z * (angVel.z * angVel.z); + + // Mass-normalized + energy /= 2.0f * rb.mass; + + return energy <= UnityEngine.Physics.sleepThreshold; + } + + /// + protected override bool IsStateBelowSleepingThresholds(NetworkRBData data) { + var energy = data.Mass * ((Vector3)data.LinearVelocity).sqrMagnitude; + var angVel = ((Vector3)data.AngularVelocity); + var inertia = _rigidbody.inertiaTensor; + + energy += inertia.x * (angVel.x * angVel.x); + energy += inertia.y * (angVel.y * angVel.y); + energy += inertia.z * (angVel.z * angVel.z); + + // Mass-normalized + energy /= 2.0f * data.Mass; + + return energy <= UnityEngine.Physics.sleepThreshold; + } + } +} diff --git a/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbody3D.cs.meta b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbody3D.cs.meta new file mode 100644 index 0000000..d8fa4fc --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbody3D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0a591d221a634417e9827eb58e17de84 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase.meta b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase.meta new file mode 100644 index 0000000..6ce5526 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 469480b4573c6b341bd656310fb25c54 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbody.cs b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbody.cs new file mode 100644 index 0000000..4e4e271 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbody.cs @@ -0,0 +1,179 @@ +using UnityEngine; + +namespace Fusion.Addons.Physics { + /// + /// NetworkRigidbody base class with generic definition for the Unity Rigidbody type (3d or 2d) and + /// type. + /// + public abstract partial class NetworkRigidbody : NetworkRigidbodyBase, IStateAuthorityChanged, ISimulationExit, IAfterSpawned + where RBType : Component + where PhysicsSimType : RunnerSimulatePhysicsBase { + + /// + /// Abstracted getter for cached Rigidbody component reference. + /// + public RBType Rigidbody => _rigidbody; + + // Cached + + /// + /// Cached Rigidbody reference. + /// + protected RBType _rigidbody; + /// + /// Cached reference of associated or . + /// + protected PhysicsSimType _physicsSimulator; + /// + /// Stored original kinematic setting of the Rigidbody. + /// + protected bool _originalIsKinematic; + + /// + /// Implementation of Unity Awake() method. + /// + protected virtual void Awake() { + TryGetComponent(out _transform); + TryGetComponent(out _rigidbody); + + // Store the original state. Used in Despawn to reset for pooling. + _originalIsKinematic = RBIsKinematic; + } + + void ISimulationExit.SimulationExit() { + // RBs removed from simulation will stop getting Copy calls, and will only be running Render + // So we need to set them as kinematic here (to avoid relentless checks in Render) + SetRBIsKinematic(_rigidbody, true); + } + + /// + public override void Spawned() { + base.Spawned(); + + // Force Proxies to be kinematic. + // This can be removed if you specifically instruct proxies to simulate with Runner.SetIsSimulated() + // and want proxies to predict (not applicable to Shared Mode). + if (IsProxy) { + SetRBIsKinematic(_rigidbody, true); + } + + EnsureHasRunnerSimulatePhysics(); + _clientPrediction = Runner.Topology != Topologies.Shared && (Runner.IsServer || _physicsSimulator.ClientPhysicsSimulation == ClientPhysicsSimulation.SimulateAlways || _physicsSimulator.ClientPhysicsSimulation == ClientPhysicsSimulation.SimulateForward); + + if (HasStateAuthority) { + CopyToBuffer(false); + } else { + // Mark the root as dirty to force CopyToEngine to update the transform. + _rootIsDirtyFromInterpolation = true; + CopyToEngine(true); + // This has to be here after CopyToEngine, or it will set Kinematic right back. + if (Object.IsInSimulation == false) { + SetRBIsKinematic(_rigidbody, true); + } + } + } + + public void AfterSpawned() + { + // Warn about incompatible configuration. + if (Runner.IsClient) + { + if (Runner.Topology != Topologies.Shared) + { + if (Object.IsInSimulation && _clientPrediction == false) + { + Log.Warn($"The NetworkRigidbody [Id:{Object.Id}] is simulated on the local client fusion simulation. However, the client physics mode of RunnerSimulatePhysics is NOT set to predict local physics (ForwardOnly or Always simulate). Remove the NetworkObject from the simulation calling Runner.SetIsSimulated(Object, false); in Spawned()"); + } + else if (_clientPrediction && Object.IsInSimulation == false) + { + Log.Warn($"The NetworkRigidbody [Id:{Object.Id}] is NOT simulated on the local client fusion simulation. However, the client physics mode of RunnerSimulatePhysics is set to predict local physics (ForwardOnly or Always simulate). Add the NetworkObject on the simulation calling Runner.SetIsSimulated(Object, true); in Spawned()"); + } + } + } + } + + /// + public override void Despawned(NetworkRunner runner, bool hasState) { + // Should not be possible but to avoid errors, check. + if (_rigidbody) + { + ResetRigidbody(); + } + + base.Despawned(runner, hasState); + } + + /// + /// Reset velocity and other values to defaults, so that pooled objects do not Spawn() + /// with previous velocities, etc. + /// + public virtual void ResetRigidbody() { + SetRBIsKinematic(_rigidbody, _originalIsKinematic); + } + + /// + /// Implementation of callback. + /// + public virtual void StateAuthorityChanged() { + + // This test exists because this callback currently fires on Scene Objects even if they are disabled. + // May not be needed in the future if this behaviour in Fusion is changed. + if (_rigidbody == false) { + return; + } + + // Debug.Log($"Auth Change {Runner.LocalPlayer} {name} {HasStateAuthority} {HasInputAuthority}"); + + if (Object.IsProxy) { + SetRBIsKinematic(_rigidbody, true); + } else { + // Apply complete state on the new Authority, to ensure velocities and extras apply to the now non-kinematic object. + CopyToEngine(true); + } + } + + /// + /// Tests if the NetworkRunner has the applicable + /// or component. + /// If not, adds one and applies a best guess for default settings. + /// + protected virtual void EnsureHasRunnerSimulatePhysics() { + if (_physicsSimulator) { + return; + } + + if (Runner.TryGetComponent(out PhysicsSimType existing)) { + _physicsSimulator = existing; + return ; + } + + // For Shared Mode in Single Peer mode, we by default will let Unity handle physics. +#if UNITY_2022_3_OR_NEWER + var timing = (typeof(RBType) == typeof(Rigidbody) ? (PhysicsTimings)UnityEngine.Physics.simulationMode : (PhysicsTimings)Physics2D.simulationMode); +#else + var timing = (typeof(RBType) == typeof(Rigidbody) ? (PhysicsTimings)(UnityEngine.Physics.autoSimulation ? PhysicsTimings.FixedUpdate : PhysicsTimings.Script) : (PhysicsTimings)Physics2D.simulationMode); +#endif + + // If all of the current mode settings allow for Unity to handled Physics(2D).Simulate() exit out + if (Application.isPlaying && + (bool)Runner && + Runner.IsRunning && + Runner.Config.PeerMode == NetworkProjectConfig.PeerModes.Single && + (Runner.GameMode == GameMode.Shared) && + timing != PhysicsTimings.Script) { + return; + } + + Debug.LogWarning($"No {typeof(PhysicsSimType).Name} present on NetworkRunner, but is required by {GetType().Name} on gameObject '{name}'. Adding one using default settings."); + _physicsSimulator = Runner.gameObject.AddComponent(); + Runner.AddGlobal(_physicsSimulator); + } + + /// + /// Developers can override this method to add handling for parent not existing locally. + /// + protected virtual void OnParentNotFound() { + Debug.LogError($"Parent does not exist locally"); + } + } +} diff --git a/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbody.cs.meta b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbody.cs.meta new file mode 100644 index 0000000..b6c8a3b --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbody.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 62049fdcba46b4ef5903fc4ce8a23394 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.Copy.cs b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.Copy.cs new file mode 100644 index 0000000..71e6319 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.Copy.cs @@ -0,0 +1,365 @@ +using UnityEngine; + +namespace Fusion.Addons.Physics +{ + /// + /// Abstract base class for NetworkRigidbody3D and NetworkRigidbody2D. + /// + public abstract partial class NetworkRigidbodyBase { + /// + /// Get and Set the associated Rigidbody or Rigidbody2D position value. + /// Used by the generic base class. + /// + public abstract Vector3 RBPosition { get; set; } + /// + /// Get and Set the associated Rigidbody or Rigidbody2D rotation value. + /// Used by the generic base class. + /// + public abstract Quaternion RBRotation { get; set; } + /// + /// Get and Set the associated Rigidbody or Rigidbody2D isKinematic bool value. + /// Used by the generic base class. + /// + public abstract bool RBIsKinematic { get; set; } + } + + /// + /// Abstract base class for NetworkRigidbody3D and NetworkRigidbody2D. + /// + public abstract partial class NetworkRigidbody : IBeforeAllTicks, IAfterTick { + + // PhysX/Box2D abstractions + + /// + /// Abstracted method for applying position and rotation values to the passed Rigidbody or Rigidbody2D. + /// + protected abstract void ApplyRBPositionRotation(RBType rb, Vector3 pos, Quaternion rot); + /// + /// Abstracted method for capturing position and rotation values from the passed Rigidbody or Rigidbody2D + /// to the networked property. + /// + protected abstract void CaptureRBPositionRotation(RBType rb, ref NetworkRBData data, bool useWorldSpace); + /// + /// Abstracted method for capturing velocity and other values from the passed Rigidbody or Rigidbody2D + /// to the networked property. + /// + protected abstract void CaptureExtras(RBType rb, ref NetworkRBData data); + /// + /// Abstracted method for applying velocity and other additional values to the passed Rigidbody or Rigidbody2D + /// from the networked property. + /// + protected abstract void ApplyExtras(RBType rb, ref NetworkRBData data); + /// + /// Abstracted method for composing from the passed Rigidbody/Rigidbody2D state. + /// + protected abstract NetworkRigidbodyFlags GetRBFlags(RBType rb); + /// + /// Abstracted method for getting the passed Rigidbody/Rigidbody2D kinematic state. + /// + protected abstract bool GetRBIsKinematic(RBType rb); + /// + /// Abstracted method for setting the passed Rigidbody/Rigidbody2D kinematic state. + /// + protected abstract void SetRBIsKinematic(RBType rb, bool kinematic); + /// + /// Abstracted method for getting the passed Rigidbody/Rigidbody2D axis constraints. + /// + protected abstract int GetRBConstraints(RBType rb); + /// + /// Abstracted method for setting the passed Rigidbody/Rigidbody2D axis constraints. + /// + protected abstract void SetRBConstraints(RBType rb, int constraints); + /// + /// Abstracted method for getting the passed Rigidbody/Rigidbody2D sleep state. + /// + protected abstract bool IsRBSleeping(RBType rb); + /// + /// Abstracted method for forcing the passed Rigidbody/Rigidbody2D to sleep. + /// + protected abstract void ForceRBSleep(RBType rb); + /// + /// Abstracted method for forcing the passed Rigidbody/Rigidbody2D to wake. + /// + protected abstract void ForceRBWake( RBType rb); + + // Main NRB logic + + private int _remainingSimulationsCount; + + /// + void IBeforeAllTicks.BeforeAllTicks(bool resimulation, int tickCount) { + + // Capture the number of ticks about to be simulated. + // We use this in AfterTick() to limit capturing state to only the last two ticks. + _remainingSimulationsCount = tickCount; + + // Recenter the interpolation target. TODO: Can get more selective/efficient with this later + if (_targIsDirtyFromInterpolation && _interpolationTarget) { + _interpolationTarget.localPosition = default; + _interpolationTarget.localRotation = Quaternion.identity; + if (SyncScale) { + _interpolationTarget.localScale = new Vector3(1f, 1f, 1f); + } + } + + // A dirty root should always reset at the start of the simulation loop (for both state authority and predicted). + // Predicted objects should always reset at the start of re-simulation - in all cases. + if (_rootIsDirtyFromInterpolation || (_clientPrediction && resimulation)) { + CopyToEngine(resimulation); + } + } + + // Capture simulation results for State Authority's outgoing updates, and for interpolation. + void IAfterTick.AfterTick() { + + // Never capture more than the last two ticks of a complete simulation loop + // Interpolation will only ever need the last two. + // StateAuthority will only need the last one fully captured. + int remainingTicks = _remainingSimulationsCount--; + if (remainingTicks > 2) { + return; + } + + // State Authority capture the last two Forward ticks. Only the last forward tick needs a full capture for networking. + if (HasStateAuthority) { + CopyToBuffer(remainingTicks == 2); + } else { + // Non-StateAuth clients only need capture values for interpolation if they are InSimulation (predicted) + if (Object.IsInSimulation && _clientPrediction) { + CopyToBuffer(true); + } + } + } + + /// + /// Copies the state of the Rigidbody to the Fusion state. + /// + /// If the captured data is only used for interpolation (not for networking), then skip capturing extras (vel/angVel/tensor) + protected virtual void CopyToBuffer(bool captureTRSPOnly) { + + var tr = _transform; + var rb = _rigidbody; + var flags = GetRBFlags(rb); + var syncParent = SyncParent; + var useWorldSpace = !syncParent; + + // Capture Parenting and handle auto AOI override + if (syncParent) { + // Debug.LogWarning($"Copy From Engine {Object.StateAuthority}"); + + // Parenting handling only applies to the MainTRSP (the NO root NetworkTRSP). + if (IsMainTRSP) { + // If Sync Parent is enabled, set any nested parent NetworkObject as the AreaOfInterestOverride. + // Player Interest in this object will always be determined by player interest in the current parent NO. + var parent = tr.parent; + + // If no parent transform is present, this is simple. + if (parent == null) { + State.AreaOfInterestOverride = default; + Data.TRSPData.Parent = default; + } + // If there is a parent transform, we need to determine if it is a valid NB or a non-networked transform. + else { + + if (parent.TryGetComponent(out var parentNB)) { + if (_aoiEnabled) { + SetAreaOfInterestOverride(parentNB.Object); + } + Data.TRSPData.Parent = parentNB; + } else { + State.AreaOfInterestOverride = default; + Data.TRSPData.Parent = NetworkTRSPData.NonNetworkedParent; + useWorldSpace = true; + } + } + } else { + // Reset to default in case SyncParent was enabled/disabled at runtime + State.AreaOfInterestOverride = default; + } + } + + // Capture RB State + if ((flags & NetworkRigidbodyFlags.IsKinematic) != 0) { + Vector3 position; + Quaternion rotation; + if (useWorldSpace) { + // Unknown parenting requires world space for AOI to behave + position = tr.position; + rotation = tr.rotation; + } else { + position = tr.localPosition; + rotation = tr.localRotation; + } + + Data.TRSPData.Position = position; + // For full precision rotation, we store the rotation outside of the TRSP struct (which compresses rotation to 32 bits) + if (UsePreciseRotation) { + Data.FullPrecisionRotation = rotation; + } else { + Data.TRSPData.Rotation = rotation; + } + + } else { + CaptureRBPositionRotation(rb, ref Data, useWorldSpace); + + // Only capture extras (velocity, etc) on the State Authority or if there is client prediction. + if (!captureTRSPOnly) { + if (_clientPrediction || Object.HasStateAuthority) { + CaptureExtras(rb, ref Data); + } + } + } + + if (SyncScale) { + Data.TRSPData.Scale = tr.localScale; + } + + // When sleeping, the uncompressed value is used. + if ((flags & NetworkRigidbodyFlags.IsSleeping) != 0) { + if (useWorldSpace) { + Data.FullPrecisionPosition = tr.position; + Data.FullPrecisionRotation = tr.rotation; + } else { + Data.FullPrecisionPosition = tr.localPosition; + Data.FullPrecisionRotation = tr.localRotation; + } + } + Data.Flags = (flags, GetRBConstraints(rb)); + } + + /// + /// Copies the Fusion snapshot state onto the Rigidbody. + /// + /// Indicates if this is a reset from a remote server state, in which case everything needs to be reverted to state + /// Otherwise, if it is for the State Authority or a non-simulated proxy - only the TRSP needs to be reset from interpolation changes. (not velocity etc) + protected virtual void CopyToEngine(bool predictionReset) { + + var (flags, constraints) = Data.Flags; + var tr = _transform; + var rb = _rigidbody; + bool isParented; + var syncParent = SyncParent; + var useWorldSpace = !syncParent; + + Vector3 pos; + Quaternion rot; + + // For non-kinematic states, test for sleep conditions - otherwise just push the local state right to the transform for kinematic. + if (syncParent) { + // Important to know if we have a non-networked parent, as TRS values will be in world space + bool hasNonNetworkedParent = Data.TRSPData.Parent == NetworkTRSPData.NonNetworkedParent; + + var currentParent = tr.parent; + if (Data.TRSPData.Parent != default) { + isParented = true; + + if (hasNonNetworkedParent) { + useWorldSpace = true; + // The networked parent indicates that the parent does not have a NB and therefore is unknowable... + // Do nothing in regards to parenting for this case - we are trusting the dev to know what they are doing. + } + else if (Runner.TryFindBehaviour(Data.TRSPData.Parent, out var found)) { + var foundTransform = found.transform; + if (ReferenceEquals(foundTransform, currentParent) == false) { + tr.SetParent(foundTransform); + var it = _interpolationTarget; + if (ReferenceEquals(it, null) == false) { + it.localPosition = default; + it.localRotation = Quaternion.identity; + } + } + } else { + Debug.LogError($"Cannot find NetworkBehaviour."); + OnParentNotFound(); + } + + } else { + isParented = false; + + // TRSPData indicates no parenting + if (currentParent) { + tr.SetParent(null); + } + } + } else { + isParented = false; + } + + var networkedIsSleeping = (flags & NetworkRigidbodyFlags.IsSleeping) != 0; + var networkedIsKinematic = (flags & NetworkRigidbodyFlags.IsKinematic) != 0; + var currentIsSleeping = IsRBSleeping(rb); + var rootIsDirty = _rootIsDirtyFromInterpolation; + + // If the State Authority is asleep, it will have valid uncompressed pos/rot values. + if (networkedIsSleeping) { + pos = Data.FullPrecisionPosition; + rot = Data.FullPrecisionRotation; + } else { + pos = Data.TRSPData.Position; + rot = UsePreciseRotation ? Data.FullPrecisionRotation : Data.TRSPData.Rotation; + } + + // Both local and networked state are sleeping and in agreement - avoid waking the RB locally. + // This test of position and rotation can possibly be removed by developers without consequence for many use cases. + bool avoidWaking = !rootIsDirty && currentIsSleeping && networkedIsSleeping && tr.localPosition == pos && tr.localRotation == rot; + + // Apply position and rotation + if (avoidWaking == false) { + + // Push state to transform always if kinematic, parented, or if the transform was dirtied by interpolation + if (networkedIsKinematic || rootIsDirty || !syncParent || isParented) { + if (useWorldSpace) { + tr.SetPositionAndRotation(pos, rot); + } else { + tr.localPosition = pos; + tr.localRotation = rot; + } + } + // Only push TRS data if it is valid world space (root or non-networked parent) + // otherwise values are local space so this would be invalid. + if (isParented == false || useWorldSpace) { + ApplyRBPositionRotation(rb, pos, rot); + } + _rootIsDirtyFromInterpolation = false; + } + + if (SyncScale) { + tr.localScale = Data.TRSPData.Scale; + } + + // Only apply extras and test for sleep handling for prediction re-simulations + // (Not when just undoing interpolation's transform changes). + // This segment will never run on the StateAuthority. + if (predictionReset) { + + // If the RB's kinematic state was changed as part of re-simulation, change it back. + if (networkedIsKinematic != GetRBIsKinematic(rb)) { + SetRBIsKinematic(rb, networkedIsKinematic);; + } + + // These are only applied for non-Kinematics, as this is waste of work for kinematic proxies. + if (networkedIsKinematic == false) { + ApplyExtras(rb, ref Data); + SetRBConstraints(rb, constraints); + + // Local state is already in agreement with network, can skip sleep handling + if (avoidWaking) { + return; + } + + // If sleeping states disagree, we need to intervene. + if (currentIsSleeping != networkedIsSleeping) { + if (networkedIsSleeping == false) { + ForceRBWake(rb); + } else if (IsRigidbodyBelowSleepingThresholds(rb)) { + // Devs may want to comment this out, if their physics sim experiences hitching when waking objects with collisions. + // This is here to make resting states 100% accurate, but ForceSleep can cause a hitch in re-simulations under very + // specific conditions. + ForceRBSleep(rb); + } + } + } + } + } + } +} diff --git a/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.Copy.cs.meta b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.Copy.cs.meta new file mode 100644 index 0000000..9a0ea6c --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.Copy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3aa098325a65d4a1e87dac2eb5a06a8e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.Render.cs b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.Render.cs new file mode 100644 index 0000000..5ba5231 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.Render.cs @@ -0,0 +1,240 @@ +using UnityEngine; + +namespace Fusion.Addons.Physics +{ + public abstract partial class NetworkRigidbody { + + // PhysX/Box2D abstractions + + /// + /// Returns true if the passed Rigidbody/Rigidbody2D velocity energies are below the sleep threshold. + /// + protected abstract bool IsRigidbodyBelowSleepingThresholds(RBType rb); + /// + /// Returns true if the passed NetworkRBData velocity energies are below the sleep threshold. + /// + protected abstract bool IsStateBelowSleepingThresholds(NetworkRBData data); + + // NRB Render Logic + + /// + public override void Render() { + // Specifically flagged to not interpolate for cached reasons (ie for Server (non-Host)) + if (_doNotInterpolate) { + return; + } + + var isInSimulation = Object.IsInSimulation; + bool physicsSimulatorExists = (object)_physicsSimulator != null; + + // If Unity is auto-simulating, only non-simulated proxies should be interpolated + if (isInSimulation && (physicsSimulatorExists == false || _physicsSimulator.PhysicsAuthority == PhysicsAuthorities.Unity)) { + return; + } + + var it = _interpolationTarget; + var hasInterpolationTarget = (object)it != null; + + // Correct Interpolation is currently only valid for simulation in the FixedUpdateNetwork() timing, + // as correct Interpolation for the FixedUpdate() timing would require a before FixedUpdate() reset similar to IBeforeAllTicks. + // The primary use case for the FixedUpdate() timing is for Shared Mode in Single Peer mode, in which case + // Unity should be the RunnerSimulatePhysics Physics Authority - and the Rigidbody Interpolation can just be enabled. + // We are supporting interpolation here however so that Multi-Peer interpolation is still possible with the FixedUpdate timing. + if (isInSimulation) { + var physicsTiming = _physicsSimulator.PhysicsTiming; + switch (physicsTiming) { + // FixedUpdate() timing can only interpolate if there is an interpolation target. + // Interpolating by moving the root would require a proper state reset before any FixedUpdate() callbacks used by controller code. + // Note: Interpolation will be imperfect for objects simulated in FixedUpdate() as aliasing effects may occur + // due to FixedUpdate() sim results and FixedUpdateNetwork() based state capture not perfectly aligning. + case PhysicsTimings.FixedUpdate when hasInterpolationTarget == false: + return; + + // Update-based movement should NEVER interpolate, it is always inherently in the Render timeframe. + case PhysicsTimings.Update when Object.IsProxy == false: + return; + } + } + + // Do not interpolate if Object setting indicates not to. + if (Object.RenderSource == RenderSource.Latest) { + return; + } + + var tr = _transform; + var useTarget = isInSimulation && hasInterpolationTarget; + + if (TryGetSnapshotsBuffers(out var fr, out var to, out var alpha)) { + + var frData = fr.ReinterpretState(); + var toData = to.ReinterpretState(); + + var frKey = frData.TRSPData.TeleportKey; + var toKey = toData.TRSPData.TeleportKey; + var syncScale = SyncScale; + + // cache the from values for position and rotation as these will almost certainly be needed below. + var frPosition = frData.TRSPData.Position; + var frRotation = UsePreciseRotation ? frData.FullPrecisionRotation : frData.TRSPData.Rotation; + + var syncParent = SyncParent; + var useWorldSpace = !syncParent; + var teleport = frKey != toKey; + + // Teleport Handling - Don't interpolate through non-moving teleports (indicated by positive key values). + if (teleport && toKey >= 0) { + toData = frData; + } + + // Parenting specific handling + + if (syncParent) { + var currentParent = tr.parent; + + // If the parent is a non-null... (either valid or Non-Networked) + if (frData.TRSPData.Parent != default) { + + bool frHasNonNetworkedParent = frData.TRSPData.Parent == NetworkTRSPData.NonNetworkedParent; + + if (frHasNonNetworkedParent) { + useWorldSpace = true; + // Do nothing. We can't look up the old non-networked parent here. + } else if (Runner.TryFindBehaviour(frData.TRSPData.Parent, out var found)) { + var foundParent = found.transform; + // Set the parent if it currently is not correct, before moving + if (currentParent != foundParent) { + tr.SetParent(foundParent); + _rootIsDirtyFromInterpolation = true; + } + + } else { + UnityEngine.Debug.LogError($"Parent of this object is not present {frData.TRSPData.Parent} {frData.TRSPData.Parent.Behaviour}."); + return; + } + + // switching to moving by root while parented (and kinematic), set the interpolation target to origin + // We most move by the root because all TRSP is in Local Space, and the interpolation target needs to be positioned + // in World Space. + if (it) { + it.localPosition = default; + it.localRotation = Quaternion.identity; + if (SyncScale) { + _interpolationTarget.localScale = new Vector3(1f, 1f, 1f); + } + _targIsDirtyFromInterpolation = false; + } + + // If the parent changes between From and To ... do no try to interpolate (different spaces) + // We also are skipping sleep detection and teleport testing. + if (frData.TRSPData.Parent != toData.TRSPData.Parent) { + // For Non-Networked parents we use world space + // When parented, ignore any specified interpolation target and move the NO transform always + // (devs may want to change this behaviour themselves for edge cases) + if (useWorldSpace) { + tr.SetPositionAndRotation(frPosition, frRotation); + } else { + tr.localPosition = frPosition; + tr.localRotation = frRotation; + } + if (syncScale) { + tr.localScale = frData.TRSPData.Scale; + } + _rootIsDirtyFromInterpolation = true; + return; + } + + // If there is a parent, ignore the interpolation target. + useTarget = false; + } else { + // else the parent is null + if (currentParent != null) { + tr.SetParent(null); + _rootIsDirtyFromInterpolation = true; + } + // If the parent changes between From and To ... do no try to interpolate (different spaces) + if (frData.TRSPData.Parent != toData.TRSPData.Parent) { + if (useTarget) { + // There is no parent, so we can safely move the interp target in world space. + // HOWEVER if developers move the object in LateUpdate this will break of course. + it.SetPositionAndRotation(frPosition, frRotation); + +#if UNITY_EDITOR + if (syncScale) { + UnityEngine.Debug.LogWarning($"{GetType().Name} cannot sync scale when using an interpolation target."); + } +#endif + _targIsDirtyFromInterpolation = true; + } else { + tr.localPosition = frPosition; + tr.localRotation = frRotation; + if (syncScale) { + tr.localScale = frData.TRSPData.Scale; + } + _rootIsDirtyFromInterpolation = true; + } + return; + } + } + } + + // General Positon/Rotation Rendering + + Vector3 pos; + Quaternion rot; + + if (teleport && toKey < 0) { + // for moving teleports, lerp toward the Teleport values. + pos = Vector3.Lerp( frData.TRSPData.Position, toData.TeleportPosition, alpha); + rot = Quaternion.Slerp(frRotation, toData.TeleportRotation, alpha); + } else { + pos = Vector3.Lerp( frPosition, toData.TRSPData.Position, alpha); + rot = Quaternion.Slerp(frRotation, UsePreciseRotation ? toData.FullPrecisionRotation : toData.TRSPData.Rotation, alpha); + } + + // If we are using the interpolation target, just move the root of the target in world space. No scaling (they are invalid). + if (useTarget) { + it.SetPositionAndRotation(pos, rot); + // SyncScale when using interpolation targets is always suspect, but we are allowing it here in case the dev has done things correctly. + if (syncScale) { + var scl = Vector3.Lerp(frData.TRSPData.Scale, toData.TRSPData.Scale, alpha); + it.localScale = scl; + } + _targIsDirtyFromInterpolation = true; + } + // else (no interpolation target set) we are moving the transform itself and not the interp target. + else { + + var scl = syncScale ? Vector3.Lerp(frData.TRSPData.Scale, toData.TRSPData.Scale, alpha) : default; + + // Check thresholds to see if this object is coming to a rest, and stop interpolation to allow for sleep to occur. + // Don't apply Pos/Rot/Scl if all of the indicated tests test below thresholds. + if (!hasInterpolationTarget && !_targIsDirtyFromInterpolation && UseRenderSleepThresholds) { + var thresholds = RenderThresholds; + if ( + (!thresholds.UseEnergy || IsStateBelowSleepingThresholds(frData)) && + (thresholds.Position == 0 || (pos - tr.position).sqrMagnitude < thresholds.Position * thresholds.Position) && + (thresholds.Rotation == 0 || Quaternion.Angle(rot, tr.rotation) < thresholds.Rotation) && + (thresholds.Scale == 0 || !syncScale || (scl - tr.localScale).sqrMagnitude < thresholds.Scale * thresholds.Scale)) { + return; + } + } + + if (useWorldSpace) { + tr.SetPositionAndRotation(pos, rot); + } else { + tr.localPosition = pos; + tr.localRotation = rot; + } + if (syncScale) { + tr.localScale = scl; + } + _rootIsDirtyFromInterpolation = true; + } + + } else { + Debug.LogWarning($"No interpolation data"); + } + } + + } +} diff --git a/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.Render.cs.meta b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.Render.cs.meta new file mode 100644 index 0000000..279ef91 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.Render.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 608cfe25f10dc44f099fe716baa59715 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.Teleport.cs b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.Teleport.cs new file mode 100644 index 0000000..718907b --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.Teleport.cs @@ -0,0 +1,75 @@ +using System; +using UnityEngine; + +namespace Fusion.Addons.Physics +{ + public partial class NetworkRigidbody { + + /// + /// Holds teleport information for application after physics simulation. + /// + protected (Vector3? position, Quaternion? rotation, bool moving) _deferredTeleport; + + + /// + public override void Teleport(Vector3? position = null, Quaternion? rotation = null) { + if (Object.IsInSimulation == false) { + return; + } + + _deferredTeleport = (position, rotation, true); + // for moving, be sure to apply AFTER simulation runs, we need to capture the sim results before teleporting. + if (_physicsSimulator.HasSimulatedThisTick) { + ApplyDeferredTeleport(); + } else { + _physicsSimulator.QueueAfterSimulationCallback(ApplyDeferredTeleport); + } + } + + /// + /// Called after Physics has simulated, and is where the resulting simulated RB state is captured for the teleport. + /// + protected virtual void ApplyDeferredTeleport() { + bool moving = _deferredTeleport.moving; + + if (moving) { + // For moving teleports this is happening after Physics.Simulate + // So we can capture the results of the simulation before applying the teleport. + Data.TeleportPosition = _transform.position; + Data.TeleportRotation = _transform.rotation; + } + + if (_deferredTeleport.position.HasValue) { + _transform.position = _deferredTeleport.position.Value; + RBPosition = _deferredTeleport.position.Value; + Data.TRSPData.Position = _deferredTeleport.position.Value; + } + if (_deferredTeleport.rotation.HasValue) { + _transform.rotation = _deferredTeleport.rotation.Value; + RBRotation = _deferredTeleport.rotation.Value; + + if (UsePreciseRotation) { + Data.FullPrecisionRotation = _deferredTeleport.rotation.Value; + } else { + Data.TRSPData.Rotation = _deferredTeleport.rotation.Value; + } + } + IncrementTeleportKey(moving); + } + + /// + /// Adds one to the current teleport key. Indicating the teleport as moving sets the sign to negative, + /// as a flag to indicate that this teleport has a different To and From position/rotation target for the teleport tick. + /// + protected virtual void IncrementTeleportKey(bool moving) { + // Keeping the key well under 1 byte in size + var key = Math.Abs(Data.TRSPData.TeleportKey) + 1; + if (key > 30) { + key = 1; + } + // Positive indicates non-moving teleport, Negative indicates moving teleport + Data.TRSPData.TeleportKey = moving ? -key : key; + } + + } +} diff --git a/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.Teleport.cs.meta b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.Teleport.cs.meta new file mode 100644 index 0000000..e350bf3 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.Teleport.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 59c75e79ec445405f967b43f44c3693a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.cs b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.cs new file mode 100644 index 0000000..64c38fb --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.cs @@ -0,0 +1,155 @@ +using UnityEngine; + +namespace Fusion.Addons.Physics { + + /// + /// Base class for NRB which contains no physics references. + /// + public abstract partial class NetworkRigidbodyBase : NetworkTRSP, INetworkTRSPTeleport { + protected new ref NetworkRBData Data => ref ReinterpretState(); + + /// + /// Enables synchronization of Scale. Keep this disabled if you are not altering the scale of this transform, to reduce CPU utilization. + /// + [InlineHelp] + [SerializeField] + public bool SyncScale; + + /// + /// Enables synchronization of Parent. Keep this disabled if you are not altering the parent of this transform, to reduce CPU utilization. + /// + [InlineHelp] + [SerializeField] + public bool SyncParent = true; + + /// + /// Designate a render-only (non-physics) target Transform for all interpolation. + /// + [InlineHelp] + [SerializeField] + protected Transform _interpolationTarget; + + /// + /// When disabled, rotation is stored in the rotation field, which compresses rotation to 32 bits using 'Smallest Three'. + /// When enabled, this rotation field is not used. + /// Instead, rotation only uses a separate uncompressed Quaternion field which otherwise is only used to + /// store resting values when the RB goes to sleep. + /// + [InlineHelp] + [SerializeField] + public bool UsePreciseRotation; + + /// + /// Enable checks which prevent interpolation from moving the root transform during interpolation unless needed. + /// This mitigates the issue of Physics being broken by interpolating RBs by moving the Rigidbody's transform. + /// Only applicable if no is designated. + /// + [InlineHelp] + [Space] + [SerializeField] + [DrawIf(nameof(_interpolationTarget), false, CompareOperator.IsZero, DrawIfMode.Hide)] + public bool UseRenderSleepThresholds = true; + + /// + /// Render Sleep Threshold settings. + /// + [InlineHelp] [SerializeField] [DrawIf(nameof(_showSleepOptions), true, mode: DrawIfMode.Hide)] + public TRSThresholds RenderThresholds = TRSThresholds.Default; + + // used by DrawIf attribute for inspector + protected bool _showSleepOptions => !_interpolationTarget && UseRenderSleepThresholds; + + // Cached + + /// + /// Cached transform reference. + /// + protected Transform _transform; + + /// + /// Cached value indicating whether interpolation should occur. + /// + protected bool _doNotInterpolate; + /// + /// Cached value indicating if client prediction applies to this NetworkObject on this client. + /// + protected bool _clientPrediction; + /// + /// Dirty flag for the root Transform. + /// True when interpolation has altered the root transform's position, rotation, or scale in Render(). + /// Is reset to false when the transform is restored to its networked state during the simulation loop. + /// + protected bool _rootIsDirtyFromInterpolation; + /// + /// Dirty flag for the Interpolation Target. + /// True when interpolation has altered the position, rotation, or scale in Render(). + /// Is reset to false when the transform is restored to defaults during the simulation loop. + /// + protected bool _targIsDirtyFromInterpolation; + /// + /// Cached Runner.Config.Simulation.AreaOfInterestEnabled value. + /// + protected bool _aoiEnabled; + /// + /// Cached Physics.autoSimulation (or Physics.simulationMode != SimulationMode.Script in 2022.3 or higher) value. + /// + protected bool AutoSimulateIsEnabled { get; set; } + + /// + /// Get/Set the Transform (typically a child of the Rigidbody root transform) which will be moved in interpolation. + /// When set to null, the Rigidbody Transform will be used. + /// + public Transform InterpolationTarget { + get => _interpolationTarget; + set => SetInterpolationTarget(value); + } + + /// + /// Change the Transform (typically a child of the Rigidbody root transform) which will be moved in interpolation. + /// When set to null, the Rigidbody Transform will be used. + /// + public void SetInterpolationTarget(Transform target) { + if (target == null || target == transform) { + _interpolationTarget = null; + _targIsDirtyFromInterpolation = false; + } else { +#if UNITY_EDITOR + var c = target.GetComponentInChildren(); + if (c && c.enabled) { + Debug.LogWarning($"Assigned Interpolation Target '{target.name}' on GameObject '{name}' contains a non-trigger collider, this may not be intended as interpolation may break physics caching, and prevent the Rigidbody from sleeping"); + } +#endif + _interpolationTarget = target; + } + } + + /// + /// Unity's OnValidate call. + /// + protected virtual void OnValidate() { + SetInterpolationTarget(_interpolationTarget); + } + /// + public override void Spawned() { + _aoiEnabled = Runner.Config.Simulation.AreaOfInterestEnabled; + + // Don't interpolate on Dedicated Server + _doNotInterpolate = Runner.Mode == SimulationModes.Server; + + // Validate the serialized target. + SetInterpolationTarget(_interpolationTarget); + + RBPosition = transform.position; + RBRotation = transform.rotation; + } + + /// + /// Initiate a moving teleport. This method must be in FixedUpdateNetwork() called before + /// and have simulated physics. + /// This teleport is deferred until after physics has simulated, and captures position and rotation values both before and after simulation. + /// This allows interpolation leading up to the teleport to have a valid pre-teleport TO target. + /// + public abstract void Teleport(Vector3? position = null, Quaternion? rotation = null); + } + +} diff --git a/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.cs.meta b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.cs.meta new file mode 100644 index 0000000..2e82c7e --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2589cca1606b045918754b978480e1a5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyTypes.cs b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyTypes.cs new file mode 100644 index 0000000..1bef3d3 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyTypes.cs @@ -0,0 +1,218 @@ +using System; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace Fusion.Addons.Physics { + + /// + /// Extended struct, with additional fields specific to Rigidbody synchronization. + /// The first field is a , which ensures that Position/Rotation/Scale/Parent data + /// all are in the location within the struct expected by the base class. + /// + [StructLayout(LayoutKind.Explicit)] + public struct NetworkRBData : INetworkStruct { + + /// + /// The number of words used by this struct. + /// + public const int WORDS = NetworkTRSPData.WORDS + 24; + /// + /// The number of bytes used by this struct + /// + public const int SIZE = WORDS * Allocator.REPLICATE_WORD_SIZE; + + /// + /// The required Translate/Rotation/Scale/Parent struct used by the NetworkTRSP base class. + /// This places transform data in the first memory positions of NetworkRigidbody struct. + /// Of specific importance here is the first word for Translate (Position), as position is used by + /// Area Of Interest for interest determinations. + /// + [FieldOffset(0)] + public NetworkTRSPData TRSPData; + + /// + /// Word used to store rigidbody drag value. + /// + [FieldOffset((NetworkTRSPData.WORDS + 0) * Allocator.REPLICATE_WORD_SIZE)] + public FloatCompressed Drag; + + /// + /// Word used to store rigidbody angular drag value. + /// + [FieldOffset((NetworkTRSPData.WORDS + 1) * Allocator.REPLICATE_WORD_SIZE)] + public FloatCompressed AngularDrag; + + /// + /// Word used to store rigidbody mass value. + /// + [FieldOffset((NetworkTRSPData.WORDS + 2) * Allocator.REPLICATE_WORD_SIZE)] + public FloatCompressed Mass; + + /// + /// Backing field used to store additional rigidbody bool and enum values, encoded into a single word. + /// + [FieldOffset((NetworkTRSPData.WORDS + 3) * Allocator.REPLICATE_WORD_SIZE)] + int _flags; + + /// + /// Property for getting and setting additional rigidbody data in this struct. + /// + public (NetworkRigidbodyFlags flags, int constraints) Flags { + get { + var f = (NetworkRigidbodyFlags)((_flags) & 0xFF); + var c = (int)((_flags >> 8) & 0xFF); + return (f, c); + } + set { + var (f, c) = value; + _flags = (int)f; + _flags |= (int)c << 8; + } + } + + // 3D + + /// + /// Words used to store rigidbody velocity value. + /// + [FieldOffset((NetworkTRSPData.WORDS + 4) * Allocator.REPLICATE_WORD_SIZE)] + public Vector3Compressed LinearVelocity; + + /// + /// Words used to store rigidbody angular velocity value. + /// + [FieldOffset((NetworkTRSPData.WORDS + 7) * Allocator.REPLICATE_WORD_SIZE)] + public Vector3Compressed AngularVelocity; + + /// + /// Property used to store rigidbody2D velocity value. + /// Uses the field, and just casts to and from Vector2. + /// + public Vector2 LinearVelocity2D { + get => LinearVelocity; + set => LinearVelocity = value; + } + + /// + /// Property used to store rigidbody2D angular velocity value. + /// Uses the field, and just casts to and from Vector2. + /// + public float AngularVelocity2D { + get => AngularVelocity.Z; + set => AngularVelocity.Z = value; + } + + // 2D + + /// + /// Property used to store rigidbody2D gravity scale value. + /// Uses the z axis of the field, to store the Rigidbody2D gravity scale. + /// + public float GravityScale2D { + get => LinearVelocity.Z; + set => LinearVelocity.Z = value; + } + + // Sleep states + + /// + /// Word used to store uncompressed position value. This is typically only changed and used when the object + /// goes to sleep, to ensure that the final resting state is complete agreement with the state authority simulation + /// result. + /// + [FieldOffset((NetworkTRSPData.WORDS + 10) * Allocator.REPLICATE_WORD_SIZE)] + public Vector3 FullPrecisionPosition; + + /// + /// Word used to store uncompressed rotation value. This is typically only changed and used when the object + /// goes to sleep, to ensure that the final resting state is complete agreement with the state authority simulation + /// result. + /// + [FieldOffset((NetworkTRSPData.WORDS + 13) * Allocator.REPLICATE_WORD_SIZE)] + public Quaternion FullPrecisionRotation; + + /// + /// Word used to store teleport position "To" value. This is used for moving teleports, and is the value used for + /// interpolating into a teleport. + /// + [FieldOffset((NetworkTRSPData.WORDS + 17) * Allocator.REPLICATE_WORD_SIZE)] + public Vector3Compressed TeleportPosition; + /// + /// Word used to store teleport rotation "To" value. This is used for moving teleports, and is the value used for + /// interpolating into a teleport. + /// + [FieldOffset((NetworkTRSPData.WORDS + 20) * Allocator.REPLICATE_WORD_SIZE)] + public QuaternionCompressed TeleportRotation; + + } + + /// + /// Networked flags representing a 2D or 3D rigid body state and characteristics. + /// + [Flags] + public enum NetworkRigidbodyFlags : byte { + /// + /// Networked kinematic state. + /// See also or . + /// + IsKinematic = 1 << 0, + + /// + /// Networked sleeping state. + /// See also or . + /// + IsSleeping = 1 << 1, + + /// + /// Networked state. Not used with 2D rigid bodies. + /// + UseGravity = 1 << 2, + } + + [Serializable] + public struct TRSThresholds { + /// + /// If enabled, the energy value of the networked state will be used to determine if interpolation will be applied. + /// Only applicable when there is no Interpolation Target set. + /// + [InlineHelp] + public bool UseEnergy; + /// + /// The Magnitude of the difference between the current position of the Rigidbody and interpolated position. + /// If the Magnitude of the difference is less than this value, then the Rigidbody will not be changed during Render, + /// allowing the Rigidbody to sleep, thus retaining cached friction states. + /// A value of 0 indicates that this threshold should not be factored in to determining if interpolation occurs. + /// + [InlineHelp] + [Unit(Units.Units)] + public float Position; + /// + /// The minimum Quanternion.Angle difference between the current rotation angle of the Rigidbody and interpolated rotation, for interpolation to be applied. + /// If the angle between current and interpolated values are less than this, then the transform will not be moved for interpolation, + /// allowing the Rigidbody to sleep, thus retaining cached friction states. + /// A value of 0 indicates that this threshold should not be factored in to determining if interpolation occurs. + /// + [InlineHelp] + [Unit(Units.Degrees)] + public float Rotation; + /// + /// The Magnitude of the difference between the current localScale of the Rigidbody and interpolated localScale. + /// If the Magnitude of the difference is less than this value, then the Rigidbody will not be changed during Render, + /// allowing the Rigidbody to sleep, thus retaining cached friction states. + /// A value of 0 indicates that this threshold should not be factored in to determining if interpolation occurs. + /// + [InlineHelp] + [Unit(Units.NormalizedPercentage)] + public float Scale; + + /// + /// The default values for interpolation threshold tests. + /// + public static TRSThresholds Default =>new TRSThresholds() { + UseEnergy = true, + Position = 0.01f, + Rotation = 0.01f, + Scale = 0.01f + }; + } +} diff --git a/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyTypes.cs.meta b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyTypes.cs.meta new file mode 100644 index 0000000..95959b3 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/NetworkRigidbody/NetworkRigidbodyBase/NetworkRigidbodyTypes.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 37ec9aab235ac4f59b988af83d8da318 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics.meta b/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics.meta new file mode 100644 index 0000000..19d774e --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 31dfeac90f0955840b6bb302deb9c6fb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysics2D.cs b/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysics2D.cs new file mode 100644 index 0000000..d6ddace --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysics2D.cs @@ -0,0 +1,60 @@ +using UnityEngine; + +namespace Fusion.Addons.Physics { + /// + /// Fusion component for handling Physics2D.Simulate(). + /// + [DisallowMultipleComponent] + public class RunnerSimulatePhysics2D : RunnerSimulatePhysicsBase { + + /// + protected override void OverrideAutoSimulate(bool set) { + _physicsAutoSimRestore = (PhysicsTimings)Physics2D.simulationMode; + if (set) { + Physics2D.simulationMode = (SimulationMode2D)_physicsTiming; + } else { + Physics2D.simulationMode = SimulationMode2D.Script; + } + } + + /// + protected override void RestoreAutoSimulate() { + Physics2D.simulationMode = (SimulationMode2D)_physicsAutoSimRestore; + } + + /// + protected override bool AutoSyncTransforms { + get => Physics2D.autoSyncTransforms; + set => Physics2D.autoSyncTransforms = value; + } + + /// + protected override PhysicsTimings UnityPhysicsMode => (PhysicsTimings)Physics2D.simulationMode; + + /// + protected override void SimulatePrimaryScene(float deltaTime) { + if (Runner.SceneManager.TryGetPhysicsScene2D(out var physicsScene)) { + if (physicsScene.IsValid()) { + physicsScene.Simulate(deltaTime); + } else { + Physics2D.Simulate(deltaTime); + } + } + } + + /// + protected override void SimulateAdditionalScenes(float deltaTime, bool checkPhysicsSimulation) { + if (_additionalScenes == null || _additionalScenes.Count == 0) { + return; + } + var defaultPhysicsScene = Physics2D.defaultPhysicsScene; + foreach (var scene in _additionalScenes) { + if (!checkPhysicsSimulation || CanSimulatePhysics(scene.ClientPhysicsSimulation)) { + if (scene.PhysicsScene != defaultPhysicsScene || Physics2D.simulationMode == SimulationMode2D.Script) { + scene.PhysicsScene.Simulate(deltaTime); + } + } + } + } + } +} diff --git a/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysics2D.cs.meta b/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysics2D.cs.meta new file mode 100644 index 0000000..8c62382 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysics2D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a9fd79d79a0fb459ababab9a78f00caa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 5200 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysics3D.cs b/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysics3D.cs new file mode 100644 index 0000000..8975f84 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysics3D.cs @@ -0,0 +1,90 @@ +using UnityEngine; +using Fusion.Analyzer; + +namespace Fusion.Addons.Physics { + /// + /// Fusion component for handling Physics.Simulate(). When added to a GameObject, this will automatically disable + /// + [DisallowMultipleComponent] + public class RunnerSimulatePhysics3D : RunnerSimulatePhysicsBase { + + // Unity 2022.3 made changes to PhysX (Physics3D) which made it similar to Box2d (Physics2D) + // This changed from a basic Physics.AutoSimulate to Simulation options for FixedUpdate, Update or Script(the equivalent of auto-simulate disabled). +#if !UNITY_2022_3_OR_NEWER + + /// + protected override PhysicsTimings UnityPhysicsMode => UnityEngine.Physics.autoSimulation ? PhysicsTimings.FixedUpdate : PhysicsTimings.Script; + + /// + protected override void OverrideAutoSimulate(bool set) { + + if (set && _physicsTiming == PhysicsTimings.Update) { + Debug.LogWarning($"{GetType().Name}.{nameof(_physicsTiming)} set to {PhysicsTimings.Update}, which is not valid in Unity versions below 2022.3. Changing {_physicsAuthority} to {PhysicsAuthorities.Fusion}"); + _physicsAuthority = PhysicsAuthorities.Fusion; + set = false; + } + _physicsAutoSimRestore = UnityEngine.Physics.autoSimulation ? PhysicsTimings.FixedUpdate : PhysicsTimings.Script; + UnityEngine.Physics.autoSimulation = set; + } + + /// + protected override void RestoreAutoSimulate() { + UnityEngine.Physics.autoSimulation = _physicsAutoSimRestore == PhysicsTimings.FixedUpdate ? true : false; + } +#else + /// + protected override PhysicsTimings UnityPhysicsMode => (PhysicsTimings)UnityEngine.Physics.simulationMode; + + /// + protected override void OverrideAutoSimulate(bool set) { + _physicsAutoSimRestore = (PhysicsTimings)UnityEngine.Physics.simulationMode; + if (set) { + UnityEngine.Physics.simulationMode = (SimulationMode)_physicsTiming; + } else { + UnityEngine.Physics.simulationMode = SimulationMode.Script; + } + } + + /// + protected override void RestoreAutoSimulate() { + UnityEngine.Physics.simulationMode = (SimulationMode)_physicsAutoSimRestore; + } +#endif + + /// + protected override bool AutoSyncTransforms { + get => UnityEngine.Physics.autoSyncTransforms; + set => UnityEngine.Physics.autoSyncTransforms = value; + } + + /// + protected override void SimulatePrimaryScene(float deltaTime) { + if (Runner.SceneManager.TryGetPhysicsScene3D(out var physicsScene)) { + if (physicsScene.IsValid()) { + physicsScene.Simulate(deltaTime); + } else { + UnityEngine.Physics.Simulate(deltaTime); + } + } + } + + /// + protected override void SimulateAdditionalScenes(float deltaTime, bool checkPhysicsSimulation) { + if (_additionalScenes == null || _additionalScenes.Count == 0) { + return; + } + var defaultPhysicsScene = UnityEngine.Physics.defaultPhysicsScene; + foreach (var scene in _additionalScenes) { + if (!checkPhysicsSimulation || CanSimulatePhysics(scene.ClientPhysicsSimulation)) { +#if UNITY_2022_3_OR_NEWER + if (scene.PhysicsScene != defaultPhysicsScene || UnityEngine.Physics.simulationMode == SimulationMode.Script) { +#else + if (scene.PhysicsScene != defaultPhysicsScene || UnityEngine.Physics.autoSimulation == false) { +#endif + scene.PhysicsScene.Simulate(deltaTime); + } + } + } + } + } +} diff --git a/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysics3D.cs.meta b/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysics3D.cs.meta new file mode 100644 index 0000000..ebd8db8 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysics3D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7b5a1ff9dee264bfd829a39e6542dcbd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 5100 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysicsBase.cs b/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysicsBase.cs new file mode 100644 index 0000000..3547514 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysicsBase.cs @@ -0,0 +1,406 @@ +using System; +using System.Collections.Generic; +using Fusion.Analyzer; +using UnityEngine; + +namespace Fusion.Addons.Physics { + + /// + /// Base class for and ; + /// + public abstract class RunnerSimulatePhysicsBase: SimulationBehaviour, IBeforeTick { + + /// + /// Stored original Physics auto-simulate setting, used to restore Unity settings when Fusion runners are shutdown. + /// + [StaticField(StaticFieldResetMode.None)] + protected static PhysicsTimings _physicsAutoSimRestore; + + /// + /// Tracked number of started NetworkRunners. Used to determine when last Runner has stopped, + /// and original Unity physics settings should be restored. + /// + [StaticField(StaticFieldResetMode.None)] + private static int _enabledRunnersCount; + + // Inspector logic (Used by our WarnIf and DrawIf attributes) + + /// + /// Used by Fusion inspector UI. + /// + internal bool ShowClientPhysicsSimulation => _physicsTiming == PhysicsTimings.FixedUpdateNetwork; + /// + /// Used by Fusion inspector UI. + /// + internal bool ShowMultiplier => _physicsAuthority != PhysicsAuthorities.Unity; + /// + /// Used by Fusion inspector UI. + /// + internal bool WarnAutoSyncTransforms => AutoSyncTransforms && _physicsAuthority != PhysicsAuthorities.Unity && _physicsTiming != PhysicsTimings.Update; + + /// + /// Indicates whether Unity or Fusion should handle Physics.Simulate() calls. + /// When set to Auto (default), this will pick the most appropriate setting for the Game Mode and Peer Mode settings. + /// + [InlineHelp] + [SerializeField] + protected PhysicsAuthorities _physicsAuthority = PhysicsAuthorities.Fusion; + /// + /// Public getter of the value. + /// Indicates whether Unity or Fusion should handle Physics.Simulate() calls. + /// When set to Auto (default), this will pick the most appropriate setting for the Game Mode and Peer Mode settings. + /// + public PhysicsAuthorities PhysicsAuthority => _physicsAuthority; + + /// + /// Indicates which timing segment should be used for calling Physics.Simulate(). + /// + [InlineHelp] + [SerializeField] + [DrawIf(nameof(_physicsAuthority), (long)PhysicsAuthorities.Unity, CompareOperator.NotEqual, Hide = true)] + [WarnIf(nameof(WarnAutoSyncTransforms), + "AutoSyncTransforms is enabled in Unity's Project Settings.\n\n" + + "This is potentially costly due to interpolation moving the Rigidbody transform every Update(). " + + "If you have NetworkRigidbody instances which do not have InterpolationTarget set, then it may be preferable to disable AutoSyncTransforms " + + "and manually call SyncTransforms() before Raycast/Overlap queries.", + AsBox = true + )] + protected PhysicsTimings _physicsTiming = PhysicsTimings.FixedUpdateNetwork; + /// + /// Public getter of the value. + /// Indicates which timing segment should be used for calling Physics.Simulate(). + /// + public PhysicsTimings PhysicsTiming => _physicsTiming; + + /// + /// Controls physics simulation on clients.
+ /// Disabled - physics simulation doesn't run on clients. This value is default for performance reasons.
+ /// SyncTransforms - clients call Physics.SyncTransforms() in all ticks.
+ /// SimulateForward - clients call Physics.SyncTransforms() in resimulation ticks and Physics.Simulate() in forward ticks (a tick which is being simulated for the first time).
+ /// SimulateAlways - clients call Physics.Simulate() in both resimulation and forward ticks. This option may introduce noticeable CPU overhead. + ///
+ [InlineHelp] + [DrawIf(nameof(ShowClientPhysicsSimulation), Hide = true)] + public ClientPhysicsSimulation ClientPhysicsSimulation = ClientPhysicsSimulation.Disabled; + + /// + /// This value is used to scale PhysicsSimulationDeltaTime, typically to speed up and slow down the passing of time. + /// This doesn't change the Fusion TickRate (that value is fixed and cannot be changed once a game is started), + /// and instead changes how much time is simulated each Physics tick. When changing this value, be sure to account for it + /// in all code where you use , as you likely will want to apply the same modifier everywhere. + /// + /// For Physics.Simulate(deltaTime) - the deltaTime is calculated as PhysicsSimulationDeltaTime * DeltaTimeMultiplier. + /// The resulting deltaTime must be a greater than zero value (You cannot simulate using zero or negative values). + /// Values less than zero will be clamped to zero. Default is 1. + /// A value of zero will result in Physics.Simulate not being called at all. + /// + [InlineHelp] + [DrawIf(nameof(ShowMultiplier), Hide = true)] + [DisplayName("DeltaTime Multiplier")] + [SerializeField] + public float DeltaTimeMultiplier = 1; + + /// + /// Sets Time.fixedDeltaTime to match Fusion.DeltaTime, ensuring that Unity is calling FixedUpdate + /// at approx. the same interval that Fusion is calling FixedUpdateNetwork() forward Ticks + /// + [InlineHelp] + [SerializeField] + public bool SetUnityFixedTimestep = false; + + /// + /// DeltaTime used in FixedUpdateNetwork for Physics.Simulate(deltaTime). + /// By default, returns . + /// Override this if you want to control how much time passes in each tick (for bullet-time or time compression effects). + /// You typically can just set the instead to speed up or slow down time. + /// + /// For Physics.Simulate(deltaTime) - the deltaTime is calculated as PhysicsSimulationDeltaTime * DeltaTimeMultiplier. + /// The resulting deltaTime must be a greater than zero value (You cannot simulate using zero or negative values). + /// Values less than zero will be clamped to zero. Default is 1. + /// A value of zero will result in Physics.Simulate not being called at all. + /// + public virtual float PhysicsSimulationDeltaTime { + get => Runner.DeltaTime; + } + + /// + /// Abstracted get/set for Unity's Physics auto-sync transforms setting, for the applicable 3d/2d physics. + /// + protected abstract bool AutoSyncTransforms { get; set; } + /// + /// Abstracted getter for Unity's Physics physics mode setting, for the applicable 3d/2d physics. + /// + protected abstract PhysicsTimings UnityPhysicsMode { get; } + /// + /// Sets the auto-simulate setting for the associated Physics engine. + /// If the setting is not currently overridden, the current value of the setting for the physics engine is recorded + /// to allow for restoration later with the method. + /// + protected abstract void OverrideAutoSimulate(bool enabled); + /// + /// Restores auto-simulate setting of the associated physics engine to its original value prior to any method calls. + /// + protected abstract void RestoreAutoSimulate(); + + #region Simulation Callbacks + + /// + /// Callback invoked prior to Simulate() being called. + /// + public event Action OnBeforeSimulate; + /// + /// Callback invoked prior to Simulate() being called. + /// + public event Action OnAfterSimulate; + + // One-time callbacks + private readonly Queue _onAfterSimulateCallbacks = new Queue(); + private readonly Queue _onBeforeSimulateCallbacks = new Queue(); + + /// + /// Returns true if FixedUpdateNetwork has executed for the current tick, and physics has simulated. + /// + public bool HasSimulatedThisTick { get; private set; } + + /// + /// Register a one time callback which will be called immediately before the next physics simulation occurs. + /// Use to determine if simulation has already happened. + /// + public void QueueBeforeSimulationCallback(Action callback) { + _onBeforeSimulateCallbacks.Enqueue(callback); + } + /// + /// Register a one time callback which will be called immediately after the next physics simulation occurs. + /// Use to determine if simulation has already happened. + /// + public void QueueAfterSimulationCallback(Action callback) { + _onAfterSimulateCallbacks.Enqueue(callback); + } + +#endregion + + /// + /// Method which calls Simulate() for the associated Unity physics engine, + /// for the primary physics scene of the associated . + /// + protected abstract void SimulatePrimaryScene( float deltaTime); + /// + /// Method which calls Simulate() for the associated Unity physics engine, + /// for any additional physics scenes of the associated . + /// + protected abstract void SimulateAdditionalScenes(float deltaTime, bool checkPhysicsSimulation); + +#if UNITY_EDITOR + private void OnValidate() { + if (_physicsTiming == PhysicsTimings.FixedUpdateNetwork && _physicsAuthority == PhysicsAuthorities.Unity) { + Debug.LogWarning($"Unity cannot auto-simulate FixedUpdateNetwork(). Changing {nameof(_physicsAuthority)} to {PhysicsAuthorities.Auto}."); + _physicsAuthority = PhysicsAuthorities.Auto; + } + } +#endif + + private bool _isInitialized; + + /// + /// Initialization code that is run on the first execution of . + /// + protected virtual void Startup() { + + // Startup Fix for shared mode incompatible configuration. + if (_physicsAuthority == PhysicsAuthorities.Fusion + && _physicsTiming == PhysicsTimings.FixedUpdateNetwork + && ClientPhysicsSimulation == ClientPhysicsSimulation.Disabled + && Runner.GameMode == GameMode.Shared) + { + + var targetAuthority = Runner.Config.PeerMode == NetworkProjectConfig.PeerModes.Single + ? PhysicsAuthorities.Unity + : PhysicsAuthorities.Auto; + + Log.Warn($"Incompatible configuration on {GetType().Name} for shared mode. " + + $"Current physics authority: {_physicsAuthority} will be changed to {targetAuthority}. " + + $"Current physics timing: {_physicsTiming} will be changed to {PhysicsTimings.FixedUpdate}. " + + $"Current client physics simulation: {ClientPhysicsSimulation} will be changed to {ClientPhysicsSimulation.SimulateAlways}."); + _physicsAuthority = targetAuthority; + _physicsTiming = PhysicsTimings.FixedUpdate; + ClientPhysicsSimulation = ClientPhysicsSimulation.SimulateAlways; + } + + // Resolve 'Auto" to give Unity or Fusion control of Physics.Simulate + // Should let Unity handle Physics if running Single-Peer, and in a valid Timing that Unity can Handle. + _physicsAuthority = _physicsAuthority == PhysicsAuthorities.Auto ? + Runner.Config.PeerMode == NetworkProjectConfig.PeerModes.Single && (Runner.GameMode == GameMode.Shared || Runner.Mode == SimulationModes.Host) && _physicsTiming != PhysicsTimings.FixedUpdateNetwork ? PhysicsAuthorities.Unity : PhysicsAuthorities.Fusion : + _physicsAuthority; + +#if UNITY_EDITOR + if (_physicsAuthority == PhysicsAuthorities.Unity && Runner.Config.PeerMode == NetworkProjectConfig.PeerModes.Multiple) { + Debug.LogWarning($"{GetType().Name}.{nameof(_physicsAuthority)} setting is forcing Unity as the Physics Authority. However in Multi-Peer Mode your Physics Scenes will not simulate. Set to Auto."); + } +#endif + + _enabledRunnersCount++; + + // When the first Runner becomes active, determine if Unity or Fusion should be Simulating Physics, and cache the previous setting for shutdown restore + if (_enabledRunnersCount == 1) { + OverrideAutoSimulate(_physicsAuthority == PhysicsAuthorities.Unity); + } + + // If we ended up letting Unity run physics, make sure FixedUpdate's interval matches Fusion's + if (SetUnityFixedTimestep) { + Time.fixedDeltaTime = Runner.DeltaTime; + } + + _isInitialized = true; + } + + /// + /// Shutdown code executed when associated shuts down. + /// + protected virtual void Shutdown() { + if (_isInitialized == false) + return; + + _isInitialized = false; + + _enabledRunnersCount--; + + // When the last Runner shuts down, restore Physics.AutoSimulate + if (PhysicsAuthority == PhysicsAuthorities.Fusion && _enabledRunnersCount == 0) { + RestoreAutoSimulate(); + } + } + + private void Update() { + + if (_isInitialized == false) { return; } + + // If selected timing is not Update, this Update callback should be ignored + if (_physicsTiming != PhysicsTimings.Update) { return; } + + // if Unity is currently auto-simulating - Fusion should not. + if (UnityPhysicsMode != PhysicsTimings.Script) { return; } + + var deltaTime = Time.deltaTime * DeltaTimeMultiplier; + // Debug.LogWarning($"Update Sim {deltaTime}"); + SimulationExecute(deltaTime, false); + } + + private void OnDestroy() + { + Shutdown(); + } + + /// + /// Unity FixedUpdate callback. + /// + public void FixedUpdate() { + + if (_isInitialized == false) { return; } + + if (_physicsTiming == PhysicsTimings.FixedUpdate) { + // For some reason this needs to be reapplied. + if (SetUnityFixedTimestep) { + Time.fixedDeltaTime = Runner.DeltaTime; + } + } else { + // The selected timing is not FixedUpdate, this FixedUpdate callback should be ignored + return; + } + + // if Unity is currently auto-simulating - Fusion should not. + if (UnityPhysicsMode != PhysicsTimings.Script) { return; } + + var deltaTime = Time.fixedDeltaTime * DeltaTimeMultiplier; + SimulationExecute(deltaTime, false); + } + + /// + public override void FixedUpdateNetwork() { + // We have no Spawned(), so initializing on first FUN + if (_isInitialized == false) { + Startup(); + } + + // We have no Despawned(), so testing for shutdown here. + if (Runner.IsShutdown) { + Shutdown(); + return; + } + + // Currently getting physics info for both Shared and Server Modes + if (Runner.TryGetPhysicsInfo(out NetworkPhysicsInfo info)) { + if (Runner.IsServer || Runner.IsSharedModeMasterClient) { + info.TimeScale = DeltaTimeMultiplier; + Runner.TrySetPhysicsInfo(info); + } else { + DeltaTimeMultiplier = info.TimeScale; + } + } + + // If selected timing is not FixedUpdateNetwork, this FixedUpdateNetwork callback should be ignored + if (_physicsTiming != PhysicsTimings.FixedUpdateNetwork) { return; } + + // if Unity is currently auto-simulating - Fusion should not. + if (UnityPhysicsMode != PhysicsTimings.Script) { return; } + + var deltaTime = PhysicsSimulationDeltaTime * DeltaTimeMultiplier; + + SimulationExecute(deltaTime, true); + } + + private void SimulationExecute(float deltaTime, bool checkPhysicsSimulation) { + + if (DeltaTimeMultiplier <= 0) { + return; + } + + if (checkPhysicsSimulation) { + if (CanSimulatePhysics(ClientPhysicsSimulation)) { + DoSimulatePrimaryScene(deltaTime); + } else if (RequiresSyncTransform(ClientPhysicsSimulation) || AnySceneRequiresSyncTransform()) { + UnityEngine.Physics.SyncTransforms(); + } + } else { + DoSimulatePrimaryScene(deltaTime); + } + + SimulateAdditionalScenes(deltaTime, checkPhysicsSimulation); + } + + void IBeforeTick.BeforeTick() { + HasSimulatedThisTick = false; + } + + protected bool CanSimulatePhysics(ClientPhysicsSimulation clientPhysicsSimulation) { + if (Runner.IsServer) { + return true; + } + + return clientPhysicsSimulation == ClientPhysicsSimulation.SimulateAlways || (clientPhysicsSimulation == ClientPhysicsSimulation.SimulateForward && Runner.IsForward); + } + + protected bool RequiresSyncTransform(ClientPhysicsSimulation clientPhysicsSimulation) { + return clientPhysicsSimulation == ClientPhysicsSimulation.SyncTransforms || (clientPhysicsSimulation == ClientPhysicsSimulation.SimulateForward && !Runner.IsForward); + } + + /// + /// Executes the simulation of the primary physics scene and triggers the associated callback interfaces. + /// + protected virtual void DoSimulatePrimaryScene(float deltaTime) { + + while (_onBeforeSimulateCallbacks.Count > 0) { + _onBeforeSimulateCallbacks.Dequeue().Invoke(); + } + OnBeforeSimulate?.Invoke(); + SimulatePrimaryScene(deltaTime); + HasSimulatedThisTick = true; + + while (_onAfterSimulateCallbacks.Count > 0) { + _onAfterSimulateCallbacks.Dequeue().Invoke(); + } + OnAfterSimulate?.Invoke(); + } + + protected virtual bool AnySceneRequiresSyncTransform() => false; + } +} diff --git a/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysicsBase.cs.meta b/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysicsBase.cs.meta new file mode 100644 index 0000000..142f4da --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysicsBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 07f3b11cb2c074883963db90586486dd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysicsBaseT.cs b/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysicsBaseT.cs new file mode 100644 index 0000000..fb18e16 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysicsBaseT.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Fusion.Addons.Physics { + + /// + /// This base class exists to allow for additional Physics Scenes to be accounted for in Physics simulation, + /// in addition to the Physics Scenes associated with the NetworkRunner. + /// + /// + public abstract class RunnerSimulatePhysicsBase : RunnerSimulatePhysicsBase where TPhysicsScene : struct, IEquatable { + + /// + /// Wrapper for physics scene reference. + /// + protected struct AdditionalScene { + public TPhysicsScene PhysicsScene; + public ClientPhysicsSimulation ClientPhysicsSimulation; + } + + /// + /// List of additional physics scenes that should be simulated by Fusion. + /// + protected List _additionalScenes; + + /// + /// Register a Physics Scene to be simulated by Fusion. + /// + /// The Physics Scene to include in simulation. + /// Defines physics simulation of the additional scene for clients. + /// Typically this will be Disabled (physics not simulated) or SimulateForward (if you want to simulate physics locally for non-networked objects such as rag dolls). + public void RegisterAdditionalScene(TPhysicsScene scene, ClientPhysicsSimulation clientPhysicsSimulation = ClientPhysicsSimulation.Disabled) { + if (_additionalScenes == null) { + _additionalScenes = new List(); + } else { + foreach (var entry in _additionalScenes) { + if (entry.PhysicsScene.Equals(scene)) { + Debug.LogWarning("Scene already registered."); + return; + } + } + } + _additionalScenes.Add(new AdditionalScene(){PhysicsScene = scene, ClientPhysicsSimulation = clientPhysicsSimulation}); + } + + /// + /// Unregister a Physics Scene, and it will not longer have calls made to Simulate() by this component. + /// + /// + public void UnregisterAdditionalScene(TPhysicsScene scene) { + if (_additionalScenes == null) { + Debug.LogWarning("Scene was never registered, cannot unregister."); + return; + } + + int? found = null; + for (int i = 0; i < _additionalScenes.Count; i++) { + if (_additionalScenes[i].PhysicsScene.Equals(scene)) { + found = i; + break; + } + } + + if (found.HasValue) { + _additionalScenes.RemoveAt(found.Value); + } + } + + protected override sealed bool AnySceneRequiresSyncTransform() { + if (_additionalScenes == null || _additionalScenes.Count == 0) { + return false; + } + + foreach (var scene in _additionalScenes) { + if (RequiresSyncTransform(scene.ClientPhysicsSimulation)) + return true; + } + + return false; + } + } +} diff --git a/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysicsBaseT.cs.meta b/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysicsBaseT.cs.meta new file mode 100644 index 0000000..e2ce83e --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysicsBaseT.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b712aa08b035a477fb5ebf4221713598 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysicsEnums.cs b/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysicsEnums.cs new file mode 100644 index 0000000..9174ecd --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysicsEnums.cs @@ -0,0 +1,69 @@ +using UnityEngine; + +namespace Fusion.Addons.Physics +{ + /// + /// Options for whether Unity will auto-simulate or Fusion will call Physics.Simulate(). + /// Auto will make Fusion the simulation authority in all cases except Single-Peer Shared Mode. + /// + public enum PhysicsAuthorities { + /// + /// Automatically determine if Unity or Physics should be calling Physics.Simulate. + /// Will make Fusion the simulation authority in all cases except Single-Peer Shared Mode. + /// + Auto, + /// + /// Physics will always be auto-simulated by Unity Physics. + /// + Unity, + /// + /// Physics.Simulate() will be called by a derived component on the Runner. + /// + Fusion, + } + + /// + /// Timing segment options for when Physics.Simulate() occurs. + /// These enum values align with Unity's SimulationMode and SimulationMode2D enums, and have FixedUpdateNetwork added. + /// + public enum PhysicsTimings { + /// + /// Calls to Physics.Simulate() are automatically called every Unity FixedUpdate() + /// + FixedUpdate = SimulationMode2D.FixedUpdate, + /// + /// Calls to Physics.Simulate() are automatically called every Update() + /// + Update = SimulationMode2D.Update, + /// + /// Calls to Physics.Simulate() are handled by user code + /// + Script = SimulationMode2D.Script, + /// + /// Calls to Physics.Simulate() are automatically called every Unity FixedUpdateNetwork() + /// + FixedUpdateNetwork, + } + + /// + /// Defines behavior of physics on clients. + /// + public enum ClientPhysicsSimulation { + /// + /// Physics simulation doesn't run + /// + Disabled = 0, + /// + /// Physics.SyncTransform() is called every tick + /// + SyncTransforms = 1, + /// + /// Physics.SyncTransform() is called in resimulation ticks, Physics.Simulate() is called in forward ticks + /// + SimulateForward = 2, + /// + /// Physics.Simulate() is called every tick + /// + SimulateAlways = 3, + } +} diff --git a/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysicsEnums.cs.meta b/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysicsEnums.cs.meta new file mode 100644 index 0000000..3a03346 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/RunnerSimulatePhysics/RunnerSimulatePhysicsEnums.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 99c9b055b5aa3467ba825e0522ecba5f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics/physics_build_info.txt b/Assets/.Photon/FusionAddons/Physics/physics_build_info.txt new file mode 100644 index 0000000..c55412c --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/physics_build_info.txt @@ -0,0 +1,3 @@ +version: 2.0.3 803 +date: 2025-03-03 17:26:59 +git: main (618da07) \ No newline at end of file diff --git a/Assets/.Photon/FusionAddons/Physics/physics_build_info.txt.meta b/Assets/.Photon/FusionAddons/Physics/physics_build_info.txt.meta new file mode 100644 index 0000000..729b1af --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/physics_build_info.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6123009c38959a64cb3aa1af4a52ad25 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/.Photon/FusionAddons/Physics/release_history.txt b/Assets/.Photon/FusionAddons/Physics/release_history.txt new file mode 100644 index 0000000..22e4aa0 --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/release_history.txt @@ -0,0 +1,23 @@ +Photon Fusion Physics Addon - Release History + +Last tested with Fusion SDK 2.0.5 + +Version 2.0.3 +- Fix: Added safety check when despawning the NetworkRigidbody to avoid exceptions. +- Fix: Broken interpolation with interpolation target set and client physics disabled + +Version 2.0.2 +- Fix: local and world space mixing. +- Fix: Broken interpolation in shared mode with SyncParent enabled. + +Version 2.0.1 +- Fixed reset of Physics.autoSimulation after stopping all network runners. + +Version 2.0.0 +- Initial release. +- Replaced 'Is Forward' property on RunnerSimulatePhysics2D / RunnerSimulatePhysics3D by 'Client Physics Simulation'. + This option allows you to specify behavior of physics simulation on clients. Option are: + - Disabled - physics simulation is not running and transforms are not synced (default). + - SyncTransforms - calls Physics.SyncTransforms() in all ticks. + - SimulateForward - calls Physics.SyncTransforms() in resimulation ticks + Physics.Simulate() in forward ticks. + - SimulateAlways - calls Physics.Simulate() in all ticks. \ No newline at end of file diff --git a/Assets/.Photon/FusionAddons/Physics/release_history.txt.meta b/Assets/.Photon/FusionAddons/Physics/release_history.txt.meta new file mode 100644 index 0000000..e43946e --- /dev/null +++ b/Assets/.Photon/FusionAddons/Physics/release_history.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 24379f4352dd9df41a67d90a61bf7d4a +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/FusionDemos.meta b/Assets/.Photon/FusionDemos.meta similarity index 100% rename from Assets/Photon/FusionDemos.meta rename to Assets/.Photon/FusionDemos.meta diff --git a/Assets/Photon/FusionDemos/Photon-Fusion-Intro-Sample-2.0.5-Stable-920.unitypackage.meta b/Assets/.Photon/FusionDemos/Photon-Fusion-Intro-Sample-2.0.5-Stable-920.unitypackage.meta similarity index 100% rename from Assets/Photon/FusionDemos/Photon-Fusion-Intro-Sample-2.0.5-Stable-920.unitypackage.meta rename to Assets/.Photon/FusionDemos/Photon-Fusion-Intro-Sample-2.0.5-Stable-920.unitypackage.meta diff --git a/Assets/.Photon/FusionDemos/Photon-Fusion-Intro-Sample-2.0.6-Stable-1011.unitypackage.meta b/Assets/.Photon/FusionDemos/Photon-Fusion-Intro-Sample-2.0.6-Stable-1011.unitypackage.meta new file mode 100644 index 0000000..287718b --- /dev/null +++ b/Assets/.Photon/FusionDemos/Photon-Fusion-Intro-Sample-2.0.6-Stable-1011.unitypackage.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e95fe27595ed2e04bab9300940946b78 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/FusionMenu.meta b/Assets/.Photon/FusionMenu.meta similarity index 100% rename from Assets/Photon/FusionMenu.meta rename to Assets/.Photon/FusionMenu.meta diff --git a/Assets/Photon/FusionMenu/Photon-Fusion-Menu-2.0.5-Stable-920.unitypackage.meta b/Assets/.Photon/FusionMenu/Photon-Fusion-Menu-2.0.5-Stable-920.unitypackage.meta similarity index 100% rename from Assets/Photon/FusionMenu/Photon-Fusion-Menu-2.0.5-Stable-920.unitypackage.meta rename to Assets/.Photon/FusionMenu/Photon-Fusion-Menu-2.0.5-Stable-920.unitypackage.meta diff --git a/Assets/.Photon/FusionMenu/Photon-Fusion-Menu-2.0.6-Stable-1011.unitypackage.meta b/Assets/.Photon/FusionMenu/Photon-Fusion-Menu-2.0.6-Stable-1011.unitypackage.meta new file mode 100644 index 0000000..e06ec13 --- /dev/null +++ b/Assets/.Photon/FusionMenu/Photon-Fusion-Menu-2.0.6-Stable-1011.unitypackage.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6761bad2ac9dee144b4774b4d4012248 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonLibs.meta b/Assets/.Photon/PhotonLibs.meta similarity index 100% rename from Assets/Photon/PhotonLibs.meta rename to Assets/.Photon/PhotonLibs.meta diff --git a/Assets/Photon/PhotonLibs/WebSocket.meta b/Assets/.Photon/PhotonLibs/WebSocket.meta similarity index 100% rename from Assets/Photon/PhotonLibs/WebSocket.meta rename to Assets/.Photon/PhotonLibs/WebSocket.meta diff --git a/Assets/Photon/PhotonLibs/WebSocket/PhotonWebSocket.asmdef b/Assets/.Photon/PhotonLibs/WebSocket/PhotonWebSocket.asmdef similarity index 100% rename from Assets/Photon/PhotonLibs/WebSocket/PhotonWebSocket.asmdef rename to Assets/.Photon/PhotonLibs/WebSocket/PhotonWebSocket.asmdef diff --git a/Assets/Photon/PhotonLibs/WebSocket/PhotonWebSocket.asmdef.meta b/Assets/.Photon/PhotonLibs/WebSocket/PhotonWebSocket.asmdef.meta similarity index 100% rename from Assets/Photon/PhotonLibs/WebSocket/PhotonWebSocket.asmdef.meta rename to Assets/.Photon/PhotonLibs/WebSocket/PhotonWebSocket.asmdef.meta diff --git a/Assets/Photon/PhotonLibs/WebSocket/SocketWebTcp.cs b/Assets/.Photon/PhotonLibs/WebSocket/SocketWebTcp.cs similarity index 63% rename from Assets/Photon/PhotonLibs/WebSocket/SocketWebTcp.cs rename to Assets/.Photon/PhotonLibs/WebSocket/SocketWebTcp.cs index 5d0b012..85f367b 100644 --- a/Assets/Photon/PhotonLibs/WebSocket/SocketWebTcp.cs +++ b/Assets/.Photon/PhotonLibs/WebSocket/SocketWebTcp.cs @@ -14,34 +14,15 @@ namespace ExitGames.Client.Photon { using System; - using System.Collections; - using UnityEngine; - using UnityEngine.Scripting; - using SupportClassPun = SupportClass; - - - /// - /// Yield Instruction to Wait for real seconds. Very important to keep connection working if Time.TimeScale is altered, we still want accurate network events - /// - public sealed class WaitForRealSeconds : CustomYieldInstruction - { - private readonly float _endTime; - - public override bool keepWaiting - { - get { return this._endTime > Time.realtimeSinceStartup; } - } - - public WaitForRealSeconds(float seconds) - { - this._endTime = Time.realtimeSinceStartup + seconds; - } - } + #if UNITY_2019_3_OR_NEWER + using UnityEngine.Scripting; + #endif /// - /// Internal class to encapsulate the network i/o functionality for the realtime libary. + /// Internal class to encapsulate the network i/o functionality for the realtime library. /// + [Preserve] public class SocketWebTcp : IPhotonSocket, IDisposable { private WebSocket sock; @@ -55,10 +36,9 @@ namespace ExitGames.Client.Photon this.ProxyServerAddress = npeer.ProxyServerAddress; if (this.ReportDebugOfLevel(DebugLevel.INFO)) { - this.Listener.DebugReturn(DebugLevel.INFO, "new SocketWebTcp() for Unity. Server: " + this.ServerAddress + (String.IsNullOrEmpty(this.ProxyServerAddress) ? "" : ", Proxy: " + this.ProxyServerAddress)); + this.Listener.DebugReturn(DebugLevel.INFO, "SocketWebTcp() "+ WebSocket.Implementation+". Server: " + this.ServerAddress + (String.IsNullOrEmpty(this.ProxyServerAddress) ? "" : ", Proxy: " + this.ProxyServerAddress)); } - //this.Protocol = ConnectionProtocol.WebSocket; this.PollReceive = false; } @@ -85,34 +65,17 @@ namespace ExitGames.Client.Photon this.State = PhotonSocketState.Disconnected; } - GameObject websocketConnectionObject; public override bool Connect() { - //bool baseOk = base.Connect(); - //if (!baseOk) - //{ - // return false; - //} - - this.State = PhotonSocketState.Connecting; - if (this.websocketConnectionObject != null) + if (!this.ConnectAddress.Contains("IPv6")) { - UnityEngine.Object.Destroy(this.websocketConnectionObject); + this.ConnectAddress += "&IPv6"; // this makes the Photon Server return a host name for the next server (NS points to MS and MS points to GS) } - this.websocketConnectionObject = new GameObject("websocketConnectionObject"); - MonoBehaviour mb = this.websocketConnectionObject.AddComponent(); - this.websocketConnectionObject.hideFlags = HideFlags.HideInHierarchy; - UnityEngine.Object.DontDestroyOnLoad(this.websocketConnectionObject); - - - this.ConnectAddress += "&IPv6"; // this makes the Photon Server return a host name for the next server (NS points to MS and MS points to GS) - - // earlier, we read the proxy address/scheme and failed to connect entirely, if that wasn't successful... // it was either successful (using the resulting proxy address) or no connect at all... @@ -126,10 +89,9 @@ namespace ExitGames.Client.Photon this.Listener.DebugReturn(DebugLevel.INFO, "ReadProxyConfigScheme() failed. Using no proxy."); } - try { - this.sock = new WebSocket(new Uri(this.ConnectAddress), proxyServerAddress, this.SerializationProtocol); + this.sock = new WebSocket(new Uri(this.ConnectAddress), proxyServerAddress, this.OpenCallback, this.ReceiveCallback, this.ErrorCallback, this.CloseCallback, this.SerializationProtocol); this.sock.DebugReturn = (DebugLevel l, string s) => { if (this.State != PhotonSocketState.Disconnected) @@ -139,8 +101,6 @@ namespace ExitGames.Client.Photon }; this.sock.Connect(); - mb.StartCoroutine(this.ReceiveLoop()); - return true; } catch (Exception e) @@ -150,6 +110,42 @@ namespace ExitGames.Client.Photon } } + private void CloseCallback(int code, string reason) + { + if (this.State == PhotonSocketState.Connecting) + { + this.HandleException(StatusCode.ExceptionOnConnect); // sets state to Disconnecting + return; + } + + // passing-on close only if this socket is still used / expected to be connected + if (this.State != PhotonSocketState.Disconnecting && this.State != PhotonSocketState.Disconnected) + { + this.Listener.DebugReturn(DebugLevel.ERROR, "SocketWebTcp.CloseCallback(). Going to disconnect. Server: " + this.ServerAddress + " Error: " + code + " Reason: " + reason); + this.HandleException(StatusCode.DisconnectByServerReasonUnknown); // sets state to Disconnecting + } + } + + // code can be from JsLib or WebSocket-Sharp, so it is not guaranteed to be the same in both cases + private void ErrorCallback(int code, string message) + { + // passing-on errors only if this socket is still used / expected to be connected + if (this.State != PhotonSocketState.Disconnecting && this.State != PhotonSocketState.Disconnected) + { + this.Listener.DebugReturn(DebugLevel.ERROR, "SocketWebTcp.ErrorCallback(). Going to disconnect. Server: " + this.ServerAddress + " Error: " + code + " Message: " + message); + this.HandleException(this.State != PhotonSocketState.Connected ? StatusCode.ExceptionOnConnect : StatusCode.ExceptionOnReceive); // sets state to Disconnecting + } + } + + private void OpenCallback() + { + if (State == PhotonSocketState.Connecting) + { + this.State = PhotonSocketState.Connected; + this.peerBase.OnConnect(); + } + } + /// /// Attempts to read a proxy configuration defined by a address prefix. Only available to Industries Circle members on demand. @@ -255,7 +251,6 @@ namespace ExitGames.Client.Photon } - public override bool Disconnect() { if (this.ReportDebugOfLevel(DebugLevel.INFO)) @@ -282,18 +277,11 @@ namespace ExitGames.Client.Photon } } - if (this.websocketConnectionObject != null) - { - UnityEngine.Object.Destroy(this.websocketConnectionObject); - } - this.State = PhotonSocketState.Disconnected; return true; } - /// - /// used by TPeer* - /// + /// Used by TPeer public override PhotonSocketError Send(byte[] data, int length) { if (this.State != PhotonSocketState.Connected) @@ -310,11 +298,6 @@ namespace ExitGames.Client.Photon data = trimmedData; } - //if (this.ReportDebugOfLevel(DebugLevel.ALL)) - //{ - // this.Listener.DebugReturn(DebugLevel.ALL, "Sending: " + SupportClassPun.ByteArrayToString(data)); - //} - if (this.sock != null) { this.sock.Send(data); @@ -331,105 +314,39 @@ namespace ExitGames.Client.Photon return PhotonSocketError.Success; } + public override PhotonSocketError Receive(out byte[] data) { data = null; return PhotonSocketError.NoData; } - - internal const int ALL_HEADER_BYTES = 9; - internal const int TCP_HEADER_BYTES = 7; - internal const int MSG_HEADER_BYTES = 2; - - public IEnumerator ReceiveLoop() + public void ReceiveCallback(byte[] buf, int len) { - //this.Listener.DebugReturn(DebugLevel.INFO, "ReceiveLoop()"); - if (this.sock != null) + // once the websocket is disconnecting / disconnected, it should not receive anything anymore + if (State == PhotonSocketState.Disconnecting || State == PhotonSocketState.Disconnected) { - while (this.sock != null && !this.sock.Connected && this.sock.Error == null) - { - yield return new WaitForRealSeconds(0.1f); - } + return; + } - if (this.sock != null) + try + { + this.HandleReceivedDatagram(buf, len, false); + } + catch (Exception e) + { + if (this.State != PhotonSocketState.Disconnecting && this.State != PhotonSocketState.Disconnected) { - if (this.sock.Error != null) + if (this.ReportDebugOfLevel(DebugLevel.ERROR)) { - this.Listener.DebugReturn(DebugLevel.ERROR, "Exiting receive thread. Server: " + this.ServerAddress + " Error: " + this.sock.Error); - this.HandleException(StatusCode.ExceptionOnConnect); + this.EnqueueDebugReturn(DebugLevel.ERROR, "SocketWebTcp.ReceiveCallback() caught exception. Going to disconnect. State: " + this.State + ". Server: '" + this.ServerAddress + "' Exception: " + e); } - else - { - // connected - if (this.ReportDebugOfLevel(DebugLevel.ALL)) - { - this.Listener.DebugReturn(DebugLevel.ALL, "Receiving by websocket. this.State: " + this.State); - } - - this.State = PhotonSocketState.Connected; - this.peerBase.OnConnect(); - - while (this.State == PhotonSocketState.Connected) - { - if (this.sock != null) - { - if (this.sock.Error != null) - { - this.Listener.DebugReturn(DebugLevel.ERROR, "Exiting receive thread (inside loop). Server: " + this.ServerAddress + " Error: " + this.sock.Error); - this.HandleException(StatusCode.ExceptionOnReceive); - break; - } - else - { - byte[] inBuff = this.sock.Recv(); - if (inBuff == null || inBuff.Length == 0) - { - // nothing received. wait a bit, try again - yield return new WaitForRealSeconds(0.02f); - continue; - } - - //if (this.ReportDebugOfLevel(DebugLevel.ALL)) - //{ - // this.Listener.DebugReturn(DebugLevel.ALL, "TCP << " + inBuff.Length + " = " + SupportClassPun.ByteArrayToString(inBuff)); - //} - - if (inBuff.Length > 0) - { - try - { - this.HandleReceivedDatagram(inBuff, inBuff.Length, false); - } - catch (Exception e) - { - if (this.State != PhotonSocketState.Disconnecting && this.State != PhotonSocketState.Disconnected) - { - if (this.ReportDebugOfLevel(DebugLevel.ERROR)) - { - this.EnqueueDebugReturn(DebugLevel.ERROR, "Receive issue. State: " + this.State + ". Server: '" + this.ServerAddress + "' Exception: " + e); - } - this.HandleException(StatusCode.ExceptionOnReceive); - } - } - } - } - } - } - } + this.HandleException(StatusCode.ExceptionOnReceive); } } - - this.Disconnect(); - } - - - private class MonoBehaviourExt : MonoBehaviour - { } } } - #endif \ No newline at end of file diff --git a/Assets/Photon/PhotonLibs/WebSocket/SocketWebTcp.cs.meta b/Assets/.Photon/PhotonLibs/WebSocket/SocketWebTcp.cs.meta similarity index 100% rename from Assets/Photon/PhotonLibs/WebSocket/SocketWebTcp.cs.meta rename to Assets/.Photon/PhotonLibs/WebSocket/SocketWebTcp.cs.meta diff --git a/Assets/.Photon/PhotonLibs/WebSocket/WebSocket.cs b/Assets/.Photon/PhotonLibs/WebSocket/WebSocket.cs new file mode 100644 index 0000000..1ea990a --- /dev/null +++ b/Assets/.Photon/PhotonLibs/WebSocket/WebSocket.cs @@ -0,0 +1,347 @@ +#if UNITY_WEBGL || WEBSOCKET || WEBSOCKET_PROXYCONFIG + +#if UNITY_WEBGL && !UNITY_EDITOR +#define PHOTON_WEBSOCKET_JS +#else +#define PHOTON_WEBSOCKET_CS +#endif + +// -------------------------------------------------------------------------------------------------------------------- +// +// Provided originally by Unity to cover WebSocket support in WebGL and the Editor. Modified by Exit Games GmbH. +// +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + + +namespace ExitGames.Client.Photon +{ + using System; + + #if PHOTON_WEBSOCKET_JS + using System.Collections.Generic; + using System.Runtime.InteropServices; + using System.Text; + using AOT; + #else + using WebSocketSharp; + using System.Security.Authentication; + #endif + + + // changed mProxyAddress to ProxyAddress + // changed mUrl to Url + + public partial class WebSocket + { + /// Server address + public Uri Url { get; private set; } + + /// Only supported by WebSocket-sharp dll. + public string ProxyAddress { get; private set; } + + /// Photon uses this to agree on a serialization protocol. Either: GpBinaryV16 or GpBinaryV18. Based on enum SerializationProtocol. + private readonly string protocols = "GpBinaryV16"; + + + /// True after the websocket callback OnConnect until close or (permanent) error. + public bool Connected { get; private set; } + + /// Null until some error happened in underlying websocket. + public string Error { get; private set; } + + + // callbacks to higher level + private Action recvCallback; + private Action openCallback; + private Action errorCallback; + private Action closeCallback; + // logging callback + public Action DebugReturn { get; set; } + + + public WebSocket(Uri url, string proxyAddress, Action openCallback, Action recvCallback, Action errorCallback, Action closeCallback, string protocols = null) + { + this.Url = url; + this.ProxyAddress = proxyAddress; + + this.recvCallback = recvCallback; + this.openCallback = openCallback; + this.errorCallback = errorCallback; + this.closeCallback = closeCallback; + + if (!string.IsNullOrEmpty(protocols)) + { + this.protocols = protocols; + } + + string scheme = this.Url.Scheme; + if (!scheme.Equals("ws") && !scheme.Equals("wss")) + { + throw new ArgumentException("Unsupported protocol: " + scheme); + } + } + } + + + // .net specific implementation using websocket-sharp.dll + public partial class WebSocket + { + #if PHOTON_WEBSOCKET_CS + + public const string Implementation = "WebSocketSharp"; + + WebSocketSharp.WebSocket m_Socket; + + + public void Connect() + { + this.m_Socket = new WebSocketSharp.WebSocket(this.Url.ToString(), new string[] {this.protocols}); + this.m_Socket.Log.Output = (ld, f) => + { + var s = string.Format("WebSocketSharp: {0}", ld.Message); + switch (ld.Level) + { + case LogLevel.Trace: + case LogLevel.Debug: + this.DebugReturn(DebugLevel.ALL, s); + break; + case LogLevel.Info: + this.DebugReturn(DebugLevel.INFO, s); + break; + case LogLevel.Warn: + this.DebugReturn(DebugLevel.WARNING, s); + break; + case LogLevel.Error: + case LogLevel.Fatal: + this.DebugReturn(DebugLevel.ERROR, s); + break; + } + }; + + this.m_Socket.OnOpen += (sender, e) => + { + this.Connected = true; + this.openCallback(); + }; + this.m_Socket.OnMessage += (sender, e) => + { + this.recvCallback(e.RawData, e.RawData.Length); + }; + this.m_Socket.OnError += (sender, e) => + { + this.Connected = false; + this.Error = e.Message + (e.Exception == null ? "" : " / " + e.Exception); + this.errorCallback(0, e.Message); + }; + this.m_Socket.OnClose += (sender, e) => + { + this.Connected = false; + this.closeCallback(e.Code, e.Reason); + }; + + + if (!String.IsNullOrEmpty(this.ProxyAddress)) + { + string user = null; + string pass = null; + + var authDelim = this.ProxyAddress.IndexOf("@"); + if (authDelim != -1) + { + user = this.ProxyAddress.Substring(0, authDelim); + this.ProxyAddress = this.ProxyAddress.Substring(authDelim + 1); + var passDelim = user.IndexOf(":"); + if (passDelim != -1) + { + pass = user.Substring(passDelim + 1); + user = user.Substring(0, passDelim); + } + } + + // throws an exception, if scheme not specified + this.m_Socket.SetProxy("http://" + this.ProxyAddress, user, pass); + } + + if (this.m_Socket.IsSecure) + { + this.m_Socket.SslConfiguration.EnabledSslProtocols = this.m_Socket.SslConfiguration.EnabledSslProtocols | (SslProtocols)(3072 | 768); + } + + + this.m_Socket.ConnectAsync(); + } + + + public void Close() + { + // at this low level we are fine with closing the socket async / non-blocking + this.m_Socket.CloseAsync(); + } + + public void Send(byte[] buffer) + { + this.m_Socket.Send(buffer); + } + + #endif + } + + + // js/native specific implementation + public partial class WebSocket + { + #if PHOTON_WEBSOCKET_JS + + public const string Implementation = "JsLib"; + + static Dictionary instances = new Dictionary(); + + [DllImport("__Internal")] + private static extern int SocketCreate(string url, string protocols, Action openCallbackStatic, Action recvCallbackStatic, Action errorCallbackStatic, Action closeCallbackStatic); + + [DllImport("__Internal")] + private static extern int SocketState (int socketInstance); + + [DllImport("__Internal")] + private static extern void SocketSend (int socketInstance, byte[] ptr, int length); + + [DllImport("__Internal")] + private static extern void SocketClose (int socketInstance); + + [DllImport("__Internal")] + private static extern int SocketError (int socketInstance, byte[] ptr, int length); + + private int m_NativeRef = 0; + + // TODO: discuss if we need this anymore?! + public bool ConnectedOLD + { + get { return SocketState(m_NativeRef) != 0; } + } + + private const int SocketErrorBufferSize = 1024; + private readonly byte[] socketErrorBuffer = new byte[SocketErrorBufferSize]; + + // TODO: discuss if we need this anymore?! + public string ErrorOLD + { + get { + int result = SocketError (m_NativeRef, this.socketErrorBuffer, SocketErrorBufferSize); + + if (result == 0) + return null; + + return Encoding.UTF8.GetString (this.socketErrorBuffer); + } + } + + + public void Connect() + { + m_NativeRef = SocketCreate (this.Url.ToString(), this.protocols, OpenCallbackStatic, RecvCallbackStatic, ErrorCallbackStatic, CloseCallbackStatic); + instances[m_NativeRef] = this; + } + + public void Close() + { + SocketClose(m_NativeRef); + } + + + public void Send(byte[] buffer) + { + SocketSend (m_NativeRef, buffer, buffer.Length); + } + + + [MonoPInvokeCallback(typeof(Action))] + public static void RecvCallbackStatic(int instance, IntPtr p, int len) + { + instances[instance].RecvCallbackInstance(p, len); + } + + private byte[] receiveBuffer; + + public void RecvCallbackInstance(IntPtr p, int len) + { + if (this.receiveBuffer == null || this.receiveBuffer.Length < len) + { + this.receiveBuffer = new byte[len]; + } + Marshal.Copy(p, this.receiveBuffer, 0, len); + + this.recvCallback(this.receiveBuffer, len); + } + + + + [MonoPInvokeCallback(typeof(Action))] + public static void OpenCallbackStatic(int instance) + { + instances[instance].OpenCallbackInstance(); + } + + public void OpenCallbackInstance() + { + this.Connected = true; + this.openCallback(); + } + + + + [MonoPInvokeCallback(typeof(Action))] + public static void ErrorCallbackStatic(int instance, int code) + { + string msg; + switch (code) + { + case 1001: + msg = "Endpoint going away."; + break; + case 1002: + msg = "Protocol error."; + break; + case 1003: + msg = "Unsupported message."; + break; + case 1005: + msg = "No status."; + break; + case 1006: + msg = "Abnormal disconnection."; + break; + case 1009: + msg = "Data frame too large."; + break; + default: + msg = "Error " + code; + break; + } + + instances[instance].ErrorCallbackInstance(code, msg); + } + + public void ErrorCallbackInstance(int code, string msg) + { + this.Connected = false; + this.errorCallback(code, msg); + } + + + [MonoPInvokeCallback(typeof(Action))] + public static void CloseCallbackStatic(int instance, int code) + { + string msg = "n/a from jslib"; + instances[instance].CloseCallbackInstance(code, msg); + } + + public void CloseCallbackInstance(int code, string msg) + { + this.Connected = false; + this.closeCallback(code, msg); + } + #endif + } +} +#endif \ No newline at end of file diff --git a/Assets/Photon/PhotonLibs/WebSocket/WebSocket.cs.meta b/Assets/.Photon/PhotonLibs/WebSocket/WebSocket.cs.meta similarity index 100% rename from Assets/Photon/PhotonLibs/WebSocket/WebSocket.cs.meta rename to Assets/.Photon/PhotonLibs/WebSocket/WebSocket.cs.meta diff --git a/Assets/.Photon/PhotonLibs/WebSocket/WebSocket.jslib b/Assets/.Photon/PhotonLibs/WebSocket/WebSocket.jslib new file mode 100644 index 0000000..d0e925e --- /dev/null +++ b/Assets/.Photon/PhotonLibs/WebSocket/WebSocket.jslib @@ -0,0 +1,71 @@ +var LibraryWebSockets = { +$webSocketInstances: [], + +SocketCreate: function(url, protocols, openCallback, recvCallback, errorCallback, closeCallback) +{ + var str = UTF8ToString(url); + var prot = UTF8ToString(protocols); + var socket = { + socket: new WebSocket(str, [prot]), + error: null, + } + var instance = webSocketInstances.push(socket) - 1; + socket.socket.binaryType = 'arraybuffer'; + + socket.socket.onopen = function () { + Module.dynCall_ + Module.dynCall_vi(openCallback, instance); + } + socket.socket.onmessage = function (e) { + if (e.data instanceof ArrayBuffer) + { + const b = e.data; + const ptr = _malloc(b.byteLength); + const dataHeap = new Int8Array(HEAPU8.buffer, ptr, b.byteLength); + dataHeap.set(new Int8Array(b)); + Module.dynCall_viii(recvCallback, instance, ptr, b.byteLength); + _free(ptr); + } + }; + socket.socket.onerror = function (e) { + Module.dynCall_vii(errorCallback, instance, e.code); + } + socket.socket.onclose = function (e) { + if (e.code != 1000) + { + Module.dynCall_vii(closeCallback, instance, e.code); + } + } + return instance; +}, + +SocketState: function (socketInstance) +{ + var socket = webSocketInstances[socketInstance]; + return socket.socket.readyState; +}, + +SocketError: function (socketInstance, ptr, bufsize) +{ + var socket = webSocketInstances[socketInstance]; + if (socket.error == null) + return 0; + stringToUTF8(socket.error, ptr, bufsize); + return 1; +}, + +SocketSend: function (socketInstance, ptr, length) +{ + var socket = webSocketInstances[socketInstance]; + socket.socket.send (HEAPU8.buffer.slice(ptr, ptr+length)); +}, + +SocketClose: function (socketInstance) +{ + var socket = webSocketInstances[socketInstance]; + socket.socket.close(); +} +}; + +autoAddDeps(LibraryWebSockets, '$webSocketInstances'); +mergeInto(LibraryManager.library, LibraryWebSockets); diff --git a/Assets/Photon/PhotonLibs/WebSocket/WebSocket.jslib.meta b/Assets/.Photon/PhotonLibs/WebSocket/WebSocket.jslib.meta similarity index 100% rename from Assets/Photon/PhotonLibs/WebSocket/WebSocket.jslib.meta rename to Assets/.Photon/PhotonLibs/WebSocket/WebSocket.jslib.meta diff --git a/Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.README b/Assets/.Photon/PhotonLibs/WebSocket/websocket-sharp.README similarity index 100% rename from Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.README rename to Assets/.Photon/PhotonLibs/WebSocket/websocket-sharp.README diff --git a/Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.README.meta b/Assets/.Photon/PhotonLibs/WebSocket/websocket-sharp.README.meta similarity index 100% rename from Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.README.meta rename to Assets/.Photon/PhotonLibs/WebSocket/websocket-sharp.README.meta diff --git a/Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.dll b/Assets/.Photon/PhotonLibs/WebSocket/websocket-sharp.dll similarity index 100% rename from Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.dll rename to Assets/.Photon/PhotonLibs/WebSocket/websocket-sharp.dll diff --git a/Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.dll.meta b/Assets/.Photon/PhotonLibs/WebSocket/websocket-sharp.dll.meta similarity index 100% rename from Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.dll.meta rename to Assets/.Photon/PhotonLibs/WebSocket/websocket-sharp.dll.meta diff --git a/Assets/Photon/PhotonLibs/changes-library.txt b/Assets/.Photon/PhotonLibs/changes-library.txt similarity index 99% rename from Assets/Photon/PhotonLibs/changes-library.txt rename to Assets/.Photon/PhotonLibs/changes-library.txt index 91e36bc..682ecbb 100644 --- a/Assets/Photon/PhotonLibs/changes-library.txt +++ b/Assets/.Photon/PhotonLibs/changes-library.txt @@ -3,10 +3,24 @@ Photon C# Client Library - Changelog www.photonengine.com - Join our Discord Server: https://dashboard.photonengine.com/account/profile +Version 4.1.8.14 (11. March 2025 - rev7866) + Changed: WebSocket implementation for Unity WebGL/JS exports and WebSocket-sharp based implementation (in PhotonLibs\WebSocket\). + Note: The goal is to process incoming messages in WebGL (and with WebSocket-sharp) more directly. This specifically helps the Voice SDK on WebGL to process the stream while in background. + Changed: WebSocketTcp and WebSocket to receive incoming messages via callbacks. At the same time our WebSocket code now also implements all typical callbacks for WS/WSS. + Changed: WebSocket.jslib replicates "standard" JS websocket methods and callbacks in its interface instead of caching messages for polling. + Changed: PreserveAttribute in SupportClass.cs is now public, so it can be used in WebSocket code as needs be. + +Version 4.1.8.13 (09. January 2025 - rev7815) + No notable changes. + +Version 4.1.8.12 (16. December 2024 - rev7801) + Fixed: Some allocations that can be avoided. For example the EventData.Sender is no longer allocating anything, if the Sender of an event was not set (it is considered ActorNumber 0). + Changed: PhotonPeer.ClientSdkId is now public and can be set by SDKs. + Changed: InitV3 to use ClientSdkIdShifted, which all init requests should use. Version 4.1.8.11 (17. October 2024 - rev7735) Changed: Internal TryParseAddress method, which failed for URLs without a port. This did not work well with the Realtime API's AddressRewriter and URLs for Discord Activities (which typically use a scheme but not a port). - + Version 4.1.8.10 (14. October 2024 - rev7732) Internal: Preparation to support .Net Standard 2.1 builds. Updated: WebSocket for WebGL exports (WebSocket\WebSocket.jslib) to support Unity's (experimental) option to "Enable Native C/C++ Multithreading". diff --git a/Assets/Photon/PhotonLibs/changes-library.txt.meta b/Assets/.Photon/PhotonLibs/changes-library.txt.meta similarity index 100% rename from Assets/Photon/PhotonLibs/changes-library.txt.meta rename to Assets/.Photon/PhotonLibs/changes-library.txt.meta diff --git a/Assets/Photon/PhotonLibs/netstandard2.0.meta b/Assets/.Photon/PhotonLibs/netstandard2.0.meta similarity index 100% rename from Assets/Photon/PhotonLibs/netstandard2.0.meta rename to Assets/.Photon/PhotonLibs/netstandard2.0.meta diff --git a/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.dll b/Assets/.Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.dll similarity index 62% rename from Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.dll rename to Assets/.Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.dll index 2079eaf..92fad31 100644 Binary files a/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.dll and b/Assets/.Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.dll differ diff --git a/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.dll.meta b/Assets/.Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.dll.meta similarity index 100% rename from Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.dll.meta rename to Assets/.Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.dll.meta diff --git a/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.xml b/Assets/.Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.xml similarity index 99% rename from Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.xml rename to Assets/.Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.xml index ea60bef..569a3d2 100644 --- a/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.xml +++ b/Assets/.Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.xml @@ -1161,7 +1161,7 @@ Can be used to remove/hide the AppId from websocket connect paths. - A simplified identifier for client SDKs. Photon's APIs might modify this (as a dll can be used in more than one product). Helps debugging. + A simplified identifier for client SDKs. Helps debugging. Only Photon APIs should set this. For the Init-request, we shift the ClientId by one and the last bit signals a "debug" (0) or "release" build (1). @@ -1614,15 +1614,15 @@ Defines the initial size of an internally used StreamBuffer for Tcp. The StreamBuffer is used to aggregate operation into (less) send calls, - which uses less resoures. + which uses less resources. - The size is not restricing the buffer and does not affect when outgoing data is actually sent. + The size is not restricting the buffer and does not affect when outgoing data is actually sent. - The Maximum Trasfer Unit (MTU) defines the (network-level) packet-content size that is + The Maximum Transfer Unit (MTU) defines the (network-level) packet-content size that is guaranteed to arrive at the server in one piece. The Photon Protocol uses this size to split larger data into packets and for receive-buffers of packets. diff --git a/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.xml.meta b/Assets/.Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.xml.meta similarity index 100% rename from Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.xml.meta rename to Assets/.Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.xml.meta diff --git a/Assets/SessionListUIHandler.cs b/Assets/.SessionListUIHandler.cs similarity index 100% rename from Assets/SessionListUIHandler.cs rename to Assets/.SessionListUIHandler.cs diff --git a/Assets/SessionListUIHandler.cs.meta b/Assets/.SessionListUIHandler.cs.meta similarity index 100% rename from Assets/SessionListUIHandler.cs.meta rename to Assets/.SessionListUIHandler.cs.meta diff --git a/Assets/Models/Car_11/FBX/Car_11.FBX.meta b/Assets/Models/Car_11/FBX/Car_11.FBX.meta index 2a17f2c..ef8da67 100644 --- a/Assets/Models/Car_11/FBX/Car_11.FBX.meta +++ b/Assets/Models/Car_11/FBX/Car_11.FBX.meta @@ -272,6 +272,8 @@ ModelImporter: optimizeGameObjects: 0 removeConstantScaleCurves: 0 motionNodeName: + rigImportErrors: + rigImportWarnings: animationImportErrors: animationImportWarnings: animationRetargetingWarnings: @@ -289,7 +291,7 @@ ModelImporter: isReadable: 1 meshes: lODScreenPercentages: [] - globalScale: 1 + globalScale: 1.5 meshCompression: 0 addColliders: 0 useSRGBMaterialColor: 1 @@ -344,7 +346,7 @@ ModelImporter: armStretch: 0.05 legStretch: 0.05 feetSpacing: 0 - globalScale: 1 + globalScale: 1.5 rootMotionBoneName: hasTranslationDoF: 0 hasExtraRoot: 0 diff --git a/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Common.dll.debug b/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Common.dll.debug deleted file mode 100644 index 270e42c..0000000 Binary files a/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Common.dll.debug and /dev/null differ diff --git a/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Realtime.dll.debug b/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Realtime.dll.debug deleted file mode 100644 index 360427a..0000000 Binary files a/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Realtime.dll.debug and /dev/null differ diff --git a/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Runtime.dll.debug b/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Runtime.dll.debug deleted file mode 100644 index 366ae4d..0000000 Binary files a/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Runtime.dll.debug and /dev/null differ diff --git a/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Sockets.dll.debug b/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Sockets.dll.debug deleted file mode 100644 index d614392..0000000 Binary files a/Assets/Photon/Fusion/Assemblies/Debug/Fusion.Sockets.dll.debug and /dev/null differ diff --git a/Assets/Photon/Fusion/Assemblies/Fusion.Common.dll b/Assets/Photon/Fusion/Assemblies/Fusion.Common.dll deleted file mode 100644 index 270e42c..0000000 Binary files a/Assets/Photon/Fusion/Assemblies/Fusion.Common.dll and /dev/null differ diff --git a/Assets/Photon/Fusion/Assemblies/Fusion.Realtime.dll b/Assets/Photon/Fusion/Assemblies/Fusion.Realtime.dll deleted file mode 100644 index 360427a..0000000 Binary files a/Assets/Photon/Fusion/Assemblies/Fusion.Realtime.dll and /dev/null differ diff --git a/Assets/Photon/Fusion/Assemblies/Fusion.Runtime.dll b/Assets/Photon/Fusion/Assemblies/Fusion.Runtime.dll deleted file mode 100644 index 366ae4d..0000000 Binary files a/Assets/Photon/Fusion/Assemblies/Fusion.Runtime.dll and /dev/null differ diff --git a/Assets/Photon/Fusion/Assemblies/Fusion.Sockets.dll b/Assets/Photon/Fusion/Assemblies/Fusion.Sockets.dll deleted file mode 100644 index d614392..0000000 Binary files a/Assets/Photon/Fusion/Assemblies/Fusion.Sockets.dll and /dev/null differ diff --git a/Assets/Photon/Fusion/Assemblies/Release/Fusion.Realtime.dll.release b/Assets/Photon/Fusion/Assemblies/Release/Fusion.Realtime.dll.release deleted file mode 100644 index 70b532d..0000000 Binary files a/Assets/Photon/Fusion/Assemblies/Release/Fusion.Realtime.dll.release and /dev/null differ diff --git a/Assets/Photon/Fusion/Assemblies/Release/Fusion.Runtime.dll.release b/Assets/Photon/Fusion/Assemblies/Release/Fusion.Runtime.dll.release deleted file mode 100644 index 3a02662..0000000 Binary files a/Assets/Photon/Fusion/Assemblies/Release/Fusion.Runtime.dll.release and /dev/null differ diff --git a/Assets/Photon/Fusion/build_info.txt b/Assets/Photon/Fusion/build_info.txt deleted file mode 100644 index 4a5236f..0000000 --- a/Assets/Photon/Fusion/build_info.txt +++ /dev/null @@ -1,3 +0,0 @@ -build: 2.0.5 Stable 920 -date: 2025-02-12 16:33:38 -git: 2.0/release (0caaade1a) \ No newline at end of file diff --git a/Assets/Photon/PhotonLibs/WebSocket/WebSocket.cs b/Assets/Photon/PhotonLibs/WebSocket/WebSocket.cs deleted file mode 100644 index e8a4feb..0000000 --- a/Assets/Photon/PhotonLibs/WebSocket/WebSocket.cs +++ /dev/null @@ -1,252 +0,0 @@ -#if UNITY_WEBGL || WEBSOCKET || WEBSOCKET_PROXYCONFIG - -// -------------------------------------------------------------------------------------------------------------------- -// -// Provided originally by Unity to cover WebSocket support in WebGL and the Editor. Modified by Exit Games GmbH. -// -// developer@exitgames.com -// -------------------------------------------------------------------------------------------------------------------- - - -namespace ExitGames.Client.Photon -{ - using System; - using System.Text; - using ExitGames.Client.Photon; - - #if UNITY_WEBGL && !UNITY_EDITOR - using System.Runtime.InteropServices; - #else - using WebSocketSharp; - using System.Collections.Generic; - using System.Security.Authentication; - #endif - - - public class WebSocket - { - private Uri mUrl; - private string mProxyAddress; - - /// Photon uses this to agree on a serialization protocol. Either: GpBinaryV16 or GpBinaryV18. Based on enum SerializationProtocol. - private string protocols = "GpBinaryV16"; - - public Action DebugReturn { get; set; } - - public WebSocket(Uri url, string proxyAddress, string protocols = null) - { - this.mUrl = url; - this.mProxyAddress = proxyAddress; - - if (protocols != null) - { - this.protocols = protocols; - } - - string protocol = mUrl.Scheme; - if (!protocol.Equals("ws") && !protocol.Equals("wss")) - { - throw new ArgumentException("Unsupported protocol: " + protocol); - } - } - - public string ProxyAddress - { - get { return mProxyAddress; } - } - - public void SendString(string str) - { - Send(Encoding.UTF8.GetBytes(str)); - } - - public string RecvString() - { - byte[] retval = Recv(); - if (retval == null) - return null; - return Encoding.UTF8.GetString(retval); - } - - #if UNITY_WEBGL && !UNITY_EDITOR - [DllImport("__Internal")] - private static extern int SocketCreate (string url, string protocols); - - [DllImport("__Internal")] - private static extern int SocketState (int socketInstance); - - [DllImport("__Internal")] - private static extern void SocketSend (int socketInstance, byte[] ptr, int length); - - [DllImport("__Internal")] - private static extern void SocketRecv (int socketInstance, byte[] ptr, int length); - - [DllImport("__Internal")] - private static extern int SocketRecvLength (int socketInstance); - - [DllImport("__Internal")] - private static extern void SocketClose (int socketInstance); - - [DllImport("__Internal")] - private static extern int SocketError (int socketInstance, byte[] ptr, int length); - - int m_NativeRef = 0; - - public void Send(byte[] buffer) - { - SocketSend (m_NativeRef, buffer, buffer.Length); - } - - public byte[] Recv() - { - int length = SocketRecvLength (m_NativeRef); - if (length == 0) - return null; - byte[] buffer = new byte[length]; - SocketRecv (m_NativeRef, buffer, length); - return buffer; - } - - public void Connect() - { - m_NativeRef = SocketCreate (mUrl.ToString(), this.protocols); - - //while (SocketState(m_NativeRef) == 0) - // yield return 0; - } - - public void Close() - { - SocketClose(m_NativeRef); - } - - public bool Connected - { - get { return SocketState(m_NativeRef) != 0; } - } - - public string Error - { - get { - const int bufsize = 1024; - byte[] buffer = new byte[bufsize]; - int result = SocketError (m_NativeRef, buffer, bufsize); - - if (result == 0) - return null; - - return Encoding.UTF8.GetString (buffer); - } - } - #else - WebSocketSharp.WebSocket m_Socket; - Queue m_Messages = new Queue(); - bool m_IsConnected = false; - string m_Error = null; - - - public void Connect() - { - m_Socket = new WebSocketSharp.WebSocket(mUrl.ToString(), new string[] {this.protocols}); - m_Socket.Log.Output = (ld, f) => - { - var s = string.Format("WebSocketSharp: {0}", ld.Message); - switch (ld.Level) - { - case WebSocketSharp.LogLevel.Trace: - case WebSocketSharp.LogLevel.Debug: - DebugReturn(DebugLevel.ALL, s); - break; - case WebSocketSharp.LogLevel.Info: - DebugReturn(DebugLevel.INFO, s); - break; - case WebSocketSharp.LogLevel.Warn: - DebugReturn(DebugLevel.WARNING, s); - break; - case WebSocketSharp.LogLevel.Error: - case WebSocketSharp.LogLevel.Fatal: - DebugReturn(DebugLevel.ERROR, s); - break; - } - }; - - string user = null; - string pass = null; - - if (!String.IsNullOrEmpty(mProxyAddress)) - { - var authDelim = mProxyAddress.IndexOf("@"); - if (authDelim != -1) - { - user = mProxyAddress.Substring(0, authDelim); - mProxyAddress = mProxyAddress.Substring(authDelim + 1); - var passDelim = user.IndexOf(":"); - if (passDelim != -1) - { - pass = user.Substring(passDelim + 1); - user = user.Substring(0, passDelim); - } - } - - // throws an exception, if scheme not specified - m_Socket.SetProxy("http://" + mProxyAddress, user, pass); - } - - if (m_Socket.IsSecure) - { - m_Socket.SslConfiguration.EnabledSslProtocols = m_Socket.SslConfiguration.EnabledSslProtocols | (SslProtocols)(3072 | 768); - } - - m_Socket.OnMessage += (sender, e) => { m_Messages.Enqueue(e.RawData); }; - m_Socket.OnOpen += (sender, e) => { m_IsConnected = true; }; - m_Socket.OnError += (sender, e) => { m_Error = e.Message + (e.Exception == null ? "" : " / " + e.Exception); }; - - this.m_Socket.OnClose += SocketOnClose; - - m_Socket.ConnectAsync(); - } - - private void SocketOnClose(object sender, CloseEventArgs e) - { - //UnityEngine.Debug.Log(e.Code.ToString()); - - // this code is used for cases when the socket failed to get created (specifically used to detect "blocked by Windows firewall") - // for some reason this situation is not calling OnError - if (e.Code == 1006) - { - this.m_Error = e.Reason; - this.m_IsConnected = false; - } - } - - public bool Connected - { - get { return m_IsConnected; } - } - - - public void Send(byte[] buffer) - { - m_Socket.Send(buffer); - } - - public byte[] Recv() - { - if (m_Messages.Count == 0) - return null; - return m_Messages.Dequeue(); - } - - public void Close() - { - m_Socket.Close(); - } - - public string Error - { - get { return m_Error; } - } - #endif - } -} -#endif \ No newline at end of file diff --git a/Assets/Photon/PhotonLibs/WebSocket/WebSocket.jslib b/Assets/Photon/PhotonLibs/WebSocket/WebSocket.jslib deleted file mode 100644 index 6e9f743..0000000 --- a/Assets/Photon/PhotonLibs/WebSocket/WebSocket.jslib +++ /dev/null @@ -1,128 +0,0 @@ -var LibraryWebSockets = { -$webSocketInstances: [], - -SocketCreate: function(url, protocols) -{ - var str = UTF8ToString(url); - var prot = UTF8ToString(protocols); - var socket = { - socket: new WebSocket(str, [prot]), - buffer: new Uint8Array(0), - error: null, - messages: [], - send: typeof(SharedArrayBuffer) == "function" ? // SharedArrayBuffer is available - function (socketInstance, ptr, length) { - const socket = webSocketInstances[socketInstance]; - // depending on the caller, HEAPU8.buffer can be SharedArrayBuffer or ArrayBuffer in the same app - const b = HEAPU8.buffer instanceof SharedArrayBuffer ? new Uint8Array(HEAPU8.slice(ptr, ptr + length)).buffer : new Uint8Array(HEAPU8.buffer, ptr, length); - socket.socket.send(b); - } - : - function (socketInstance, ptr, length) { // SharedArrayBuffer is not defined, ptr type is always ArrayBuffer - const socket = webSocketInstances[socketInstance]; - socket.socket.send(new Uint8Array(HEAPU8.buffer, ptr, length)); - } - } - socket.socket.binaryType = 'arraybuffer'; - socket.socket.onmessage = function (e) { -// if (e.data instanceof Blob) -// { -// var reader = new FileReader(); -// reader.addEventListener("loadend", function() { -// var array = new Uint8Array(reader.result); -// socket.messages.push(array); -// }); -// reader.readAsArrayBuffer(e.data); -// } - if (e.data instanceof ArrayBuffer) - { - var array = new Uint8Array(e.data); - socket.messages.push(array); - } - }; - socket.socket.onclose = function (e) { - if (e.code != 1000) - { - if (e.reason != null && e.reason.length > 0) - socket.error = e.reason; - else - { - switch (e.code) - { - case 1001: - socket.error = "Endpoint going away."; - break; - case 1002: - socket.error = "Protocol error."; - break; - case 1003: - socket.error = "Unsupported message."; - break; - case 1005: - socket.error = "No status."; - break; - case 1006: - socket.error = "Abnormal disconnection."; - break; - case 1009: - socket.error = "Data frame too large."; - break; - default: - socket.error = "Error "+e.code; - } - } - } - } - var instance = webSocketInstances.push(socket) - 1; - return instance; -}, - -SocketState: function (socketInstance) -{ - var socket = webSocketInstances[socketInstance]; - return socket.socket.readyState; -}, - -SocketError: function (socketInstance, ptr, bufsize) -{ - var socket = webSocketInstances[socketInstance]; - if (socket.error == null) - return 0; - stringToUTF8(socket.error, ptr, bufsize); - return 1; -}, - -SocketSend: function (socketInstance, ptr, bufsize) -{ - var socket = webSocketInstances[socketInstance]; - socket.send(socketInstance, ptr, bufsize); -}, - -SocketRecvLength: function(socketInstance) -{ - var socket = webSocketInstances[socketInstance]; - if (socket.messages.length == 0) - return 0; - return socket.messages[0].length; -}, - -SocketRecv: function (socketInstance, ptr, length) -{ - var socket = webSocketInstances[socketInstance]; - if (socket.messages.length == 0) - return 0; - if (socket.messages[0].length > length) - return 0; - HEAPU8.set(socket.messages[0], ptr); - socket.messages = socket.messages.slice(1); -}, - -SocketClose: function (socketInstance) -{ - var socket = webSocketInstances[socketInstance]; - socket.socket.close(); -} -}; - -autoAddDeps(LibraryWebSockets, '$webSocketInstances'); -mergeInto(LibraryManager.library, LibraryWebSockets); diff --git a/Assets/PhysicsMaterials/Friction.physicMaterial b/Assets/PhysicsMaterials/Friction.physicMaterial index 9bb047d..f6211e9 100644 --- a/Assets/PhysicsMaterials/Friction.physicMaterial +++ b/Assets/PhysicsMaterials/Friction.physicMaterial @@ -7,8 +7,8 @@ PhysicMaterial: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Friction - dynamicFriction: 0.069869936 + dynamicFriction: 0.06999976 staticFriction: 1 - bounciness: 0.3 + bounciness: 0 frictionCombine: 3 bounceCombine: 3 diff --git a/Assets/PhysicsMaterials/Ice.physicMaterial b/Assets/PhysicsMaterials/Ice.physicMaterial new file mode 100644 index 0000000..fb8307e --- /dev/null +++ b/Assets/PhysicsMaterials/Ice.physicMaterial @@ -0,0 +1,14 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!134 &13400000 +PhysicMaterial: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Ice + dynamicFriction: 0 + staticFriction: 0 + bounciness: 0 + frictionCombine: 3 + bounceCombine: 3 diff --git a/Assets/PhysicsMaterials/Ice.physicMaterial.meta b/Assets/PhysicsMaterials/Ice.physicMaterial.meta new file mode 100644 index 0000000..6e8165e --- /dev/null +++ b/Assets/PhysicsMaterials/Ice.physicMaterial.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 37c3d487acd72664491fd94ebe6ba6ad +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 13400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/AssetUsageDetector.meta b/Assets/Plugins/AssetUsageDetector.meta new file mode 100644 index 0000000..3ee7e36 --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5e6854f6b536172498b64108ee02c789 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/AssetUsageDetector/Editor.meta b/Assets/Plugins/AssetUsageDetector/Editor.meta new file mode 100644 index 0000000..3634eb5 --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 19f677a9eb83d3942af6d4c5fa8dbeee +folderAsset: yes +timeCreated: 1520032274 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetector.Editor.asmdef b/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetector.Editor.asmdef new file mode 100644 index 0000000..9dc8dd4 --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetector.Editor.asmdef @@ -0,0 +1,15 @@ +{ + "name": "AssetUsageDetector.Editor", + "references": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetector.Editor.asmdef.meta b/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetector.Editor.asmdef.meta new file mode 100644 index 0000000..a29079c --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetector.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8579ab42c9ab63d4bac5fb07bd390b46 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetector.cs b/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetector.cs new file mode 100644 index 0000000..947478f --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetector.cs @@ -0,0 +1,1120 @@ +// Asset Usage Detector - by Suleyman Yasir KULA (yasirkula@gmail.com) + +using UnityEngine; +using UnityEditor; +using UnityEngine.SceneManagement; +using UnityEditor.SceneManagement; +using System.Collections.Generic; +using System.Reflection; +using System; +using System.IO; +using System.Text; +using Object = UnityEngine.Object; +#if UNITY_2018_3_OR_NEWER +using PrefabStage = UnityEditor.SceneManagement.PrefabStage; +using PrefabStageUtility = UnityEditor.SceneManagement.PrefabStageUtility; +#endif + +namespace AssetUsageDetectorNamespace +{ + [Flags] + public enum SceneSearchMode { None = 0, OpenScenes = 1, ScenesInBuildSettingsAll = 2, ScenesInBuildSettingsTickedOnly = 4, AllScenes = 8 }; + public enum PathDrawingMode { Full = 0, ShortRelevantParts = 1, Shortest = 2 }; + + public partial class AssetUsageDetector + { + #region Helper Classes + [Serializable] + public class Parameters + { + public Object[] objectsToSearch = null; + + public SceneSearchMode searchInScenes = SceneSearchMode.AllScenes; + public Object[] searchInScenesSubset = null; + public Object[] excludedScenesFromSearch = null; + public bool searchInAssetsFolder = true; + public Object[] searchInAssetsSubset = null; + public Object[] excludedAssetsFromSearch = null; + public bool dontSearchInSourceAssets = true; + public bool searchInProjectSettings = true; + + public int searchDepthLimit = 4; + public BindingFlags fieldModifiers = BindingFlags.Public | BindingFlags.NonPublic; + public BindingFlags propertyModifiers = BindingFlags.Public | BindingFlags.NonPublic; + public bool searchNonSerializableVariables = true; + + public bool lazySceneSearch = false; + public bool noAssetDatabaseChanges = false; + public bool showDetailedProgressBar = false; + } + #endregion + + // A set that contains the searched asset(s) and their sub-assets (if any) + private readonly HashSet objectsToSearchSet = new HashSet(); + // Scenes of scene object(s) in objectsToSearchSet + private readonly HashSet sceneObjectsToSearchScenesSet = new HashSet(); + // Project asset(s) in objectsToSearchSet + private readonly HashSet assetsToSearchSet = new HashSet(); + // assetsToSearchSet's path(s) + private readonly HashSet assetsToSearchPathsSet = new HashSet(); + // The root prefab objects in assetsToSearchSet that will be used to search for prefab references + private readonly List assetsToSearchRootPrefabs = new List( 4 ); + // Path(s) of the assets that should be excluded from the search + private readonly HashSet excludedAssetsPathsSet = new HashSet(); + // Extension(s) of assets that will always be searched in detail + private readonly HashSet alwaysSearchedExtensionsSet = new HashSet(); + + // Results for the currently searched scene + private SearchResultGroup currentSearchResultGroup; + + // An optimization to search an object only once (key is a hash of the searched object) + private readonly Dictionary searchedObjects = new Dictionary( 32768 ); + + // Stack of SearchObject function parameters to avoid infinite loops (which happens when same object is passed as parameter to function) + private readonly List callStack = new List( 64 ); + + private int searchDepthLimit; // Depth limit for recursively searching variables of objects + + private Object currentSearchedObject; + private int currentDepth; + + private bool dontSearchInSourceAssets; + private bool searchingSourceAssets; + private bool isInPlayMode; + +#if UNITY_2018_3_OR_NEWER + private PrefabStage openPrefabStage; + private GameObject openPrefabStagePrefabAsset; +#if UNITY_2020_1_OR_NEWER + private GameObject openPrefabStageContextObject; +#endif +#endif + + private int searchedObjectsCount; // Number of searched objects + private double searchStartTime; + + private readonly List nodesPool = new List( 32 ); + + // Search for references! + public SearchResult Run( Parameters searchParameters ) + { + if( searchParameters == null ) + { + Debug.LogError( "searchParameters must not be null!" ); + return new SearchResult( false, null, null, this, searchParameters ); + } + + if( searchParameters.objectsToSearch == null ) + { + Debug.LogError( "objectsToSearch list is empty!" ); + return new SearchResult( false, null, null, this, searchParameters ); + } + + if( !EditorApplication.isPlaying && !Utilities.AreScenesSaved() ) + { + // Don't start the search if at least one scene is currently dirty (not saved) + Debug.LogError( "Save open scenes first!" ); + return new SearchResult( false, null, null, this, searchParameters ); + } + + List searchResult = null; + + isInPlayMode = EditorApplication.isPlaying; +#if UNITY_2018_3_OR_NEWER + openPrefabStagePrefabAsset = null; + string openPrefabStageAssetPath = null; + openPrefabStage = PrefabStageUtility.GetCurrentPrefabStage(); + if( openPrefabStage != null ) + { + if( !openPrefabStage.stageHandle.IsValid() ) + openPrefabStage = null; + else + { + if( openPrefabStage.scene.isDirty ) + { + // Don't start the search if a prefab stage is currently open and dirty (not saved) + Debug.LogError( "Save open prefabs first!" ); + return new SearchResult( false, null, null, this, searchParameters ); + } + +#if UNITY_2020_1_OR_NEWER + string prefabAssetPath = openPrefabStage.assetPath; +#else + string prefabAssetPath = openPrefabStage.prefabAssetPath; +#endif + openPrefabStagePrefabAsset = AssetDatabase.LoadAssetAtPath( prefabAssetPath ); + openPrefabStageAssetPath = prefabAssetPath; + +#if UNITY_2020_1_OR_NEWER + openPrefabStageContextObject = openPrefabStage.openedFromInstanceRoot; +#endif + } + } +#endif + + // Get the scenes that are open right now + SceneSetup[] initialSceneSetup = !isInPlayMode ? EditorSceneManager.GetSceneManagerSetup() : null; + + // Make sure that the AssetDatabase is up-to-date + AssetDatabase.SaveAssets(); + + try + { + // Initialize commonly used variables + searchResult = new List(); // Overall search results + + currentSearchedObject = null; + currentDepth = 0; + searchedObjectsCount = 0; + searchStartTime = EditorApplication.timeSinceStartup; + + searchDepthLimit = searchParameters.searchDepthLimit; + dontSearchInSourceAssets = searchParameters.dontSearchInSourceAssets; + + searchedObjects.Clear(); + animationClipUniqueBindings.Clear(); + callStack.Clear(); + objectsToSearchSet.Clear(); + sceneObjectsToSearchScenesSet.Clear(); + assetsToSearchSet.Clear(); + assetsToSearchPathsSet.Clear(); + assetsToSearchRootPrefabs.Clear(); + excludedAssetsPathsSet.Clear(); + alwaysSearchedExtensionsSet.Clear(); + shaderIncludesToSearchSet.Clear(); +#if UNITY_2017_3_OR_NEWER + assemblyDefinitionFilesToSearch.Clear(); +#endif + + if( assetDependencyCache == null ) + { + LoadCache(); + searchStartTime = EditorApplication.timeSinceStartup; + } + else if( !searchParameters.noAssetDatabaseChanges ) + { + foreach( var cacheEntry in assetDependencyCache.Values ) + cacheEntry.verified = false; + } + + foreach( var cacheEntry in assetDependencyCache.Values ) + cacheEntry.searchResult = CacheEntry.Result.Unknown; + + lastRefreshedCacheEntry = null; + + // Store the searched objects(s) in HashSets + HashSet folderContentsSet = new HashSet(); + foreach( Object obj in searchParameters.objectsToSearch ) + { + if( obj == null || obj.Equals( null ) ) + continue; + + if( obj.IsFolder() ) + folderContentsSet.UnionWith( Utilities.EnumerateFolderContents( obj ) ); + else + AddSearchedObjectToFilteredSets( obj, true ); + } + + foreach( string filePath in folderContentsSet ) + { + // Skip scene assets + if( filePath.EndsWithFast( ".unity" ) ) + continue; + + Object[] assets = AssetDatabase.LoadAllAssetsAtPath( filePath ); + if( assets == null || assets.Length == 0 ) + continue; + + for( int i = 0; i < assets.Length; i++ ) + AddSearchedObjectToFilteredSets( assets[i], true ); + } + + // Find Project Settings to search for references. Don't search Project Settings if searched object(s) are all scene objects + // as Project Settings can't hold references to scene objects + string[] projectSettingsToSearch = new string[0]; + if( searchParameters.searchInProjectSettings && assetsToSearchSet.Count > 0 ) + { + string[] projectSettingsAssets = Directory.GetFiles( "ProjectSettings" ); + projectSettingsToSearch = new string[projectSettingsAssets.Length]; + for( int i = 0; i < projectSettingsAssets.Length; i++ ) + projectSettingsToSearch[i] = "ProjectSettings/" + Path.GetFileName( projectSettingsAssets[i] ); + + // AssetDatabase.GetDependencies doesn't work with Project Settings assets. By adding these assets to assetsToSearchPathsSet, + // we make sure that AssetHasAnyReference returns true for these assets and they don't get excluded from the search + assetsToSearchPathsSet.UnionWith( projectSettingsToSearch ); + } + + // Find the scenes to search for references + HashSet scenesToSearch = new HashSet(); + if( searchParameters.searchInScenesSubset != null && searchParameters.searchInScenesSubset.Length > 0 ) + { + foreach( Object obj in searchParameters.searchInScenesSubset ) + { + if( obj == null || obj.Equals( null ) ) + continue; + + if( !obj.IsAsset() ) + continue; + + if( obj.IsFolder() ) + { + string[] folderContents = AssetDatabase.FindAssets( "t:SceneAsset", new string[] { AssetDatabase.GetAssetPath( obj ) } ); + if( folderContents == null ) + continue; + + for( int i = 0; i < folderContents.Length; i++ ) + scenesToSearch.Add( AssetDatabase.GUIDToAssetPath( folderContents[i] ) ); + } + else if( obj is SceneAsset ) + scenesToSearch.Add( AssetDatabase.GetAssetPath( obj ) ); + } + } + else if( ( searchParameters.searchInScenes & SceneSearchMode.AllScenes ) == SceneSearchMode.AllScenes ) + { + // Get all scenes from the Assets folder + string[] sceneGuids = AssetDatabase.FindAssets( "t:SceneAsset" ); + for( int i = 0; i < sceneGuids.Length; i++ ) + scenesToSearch.Add( AssetDatabase.GUIDToAssetPath( sceneGuids[i] ) ); + } + else + { + if( ( searchParameters.searchInScenes & SceneSearchMode.OpenScenes ) == SceneSearchMode.OpenScenes ) + { + // Get all open (and loaded) scenes + for( int i = 0; i < SceneManager.loadedSceneCount; i++ ) + { + Scene scene = EditorSceneManager.GetSceneAt( i ); + if( scene.IsValid() ) + scenesToSearch.Add( scene.path ); + } + } + + bool searchInScenesInBuildTickedAll = ( searchParameters.searchInScenes & SceneSearchMode.ScenesInBuildSettingsAll ) == SceneSearchMode.ScenesInBuildSettingsAll; + if( searchInScenesInBuildTickedAll || ( searchParameters.searchInScenes & SceneSearchMode.ScenesInBuildSettingsTickedOnly ) == SceneSearchMode.ScenesInBuildSettingsTickedOnly ) + { + // Get all scenes in build settings + EditorBuildSettingsScene[] scenesTemp = EditorBuildSettings.scenes; + for( int i = 0; i < scenesTemp.Length; i++ ) + { + if( ( searchInScenesInBuildTickedAll || scenesTemp[i].enabled ) ) + scenesToSearch.Add( scenesTemp[i].path ); + } + } + } + + // In Play mode, only open scenes can be searched + if( isInPlayMode ) + { + HashSet openScenes = new HashSet(); + for( int i = 0; i < SceneManager.loadedSceneCount; i++ ) + { + Scene scene = EditorSceneManager.GetSceneAt( i ); + if( scene.IsValid() ) + openScenes.Add( scene.path ); + } + + scenesToSearch.RemoveWhere( ( path ) => + { + if( !openScenes.Contains( path ) ) + { + Debug.Log( "Can't search unloaded scenes while in play mode, skipped " + path ); + return true; + } + + return false; + } ); + } + + // Initialize data used by search functions + InitializeSearchFunctionsData( searchParameters ); + + // Initialize the nodes of searched asset(s) + foreach( Object obj in objectsToSearchSet ) + searchedObjects.Add( obj.Hash(), PopReferenceNode( obj ) ); + + // Progressbar values + int searchProgress = 0; + int searchTotalProgress = scenesToSearch.Count; + if( isInPlayMode && searchParameters.searchInScenes != SceneSearchMode.None ) + searchTotalProgress++; // DontDestroyOnLoad scene + + if( searchParameters.showDetailedProgressBar ) + searchTotalProgress += projectSettingsToSearch.Length; + + // Don't search assets if searched object(s) are all scene objects as assets can't hold references to scene objects + if( searchParameters.searchInAssetsFolder && assetsToSearchSet.Count > 0 ) + { + currentSearchResultGroup = new SearchResultGroup( "Project Window (Assets)", SearchResultGroup.GroupType.Assets ); + + // Get the paths of all assets that are to be searched + IEnumerable assetPaths; + if( searchParameters.searchInAssetsSubset == null || searchParameters.searchInAssetsSubset.Length == 0 ) + { + string[] allAssetPaths = AssetDatabase.GetAllAssetPaths(); + assetPaths = allAssetPaths; + + if( searchParameters.showDetailedProgressBar ) + searchTotalProgress += allAssetPaths.Length; + } + else + { + folderContentsSet.Clear(); + + foreach( Object obj in searchParameters.searchInAssetsSubset ) + { + if( obj == null || obj.Equals( null ) ) + continue; + + if( !obj.IsAsset() ) + continue; + + if( obj.IsFolder() ) + folderContentsSet.UnionWith( Utilities.EnumerateFolderContents( obj ) ); + else + folderContentsSet.Add( AssetDatabase.GetAssetPath( obj ) ); + } + + assetPaths = folderContentsSet; + + if( searchParameters.showDetailedProgressBar ) + searchTotalProgress += folderContentsSet.Count; + } + + // Calculate the path(s) of the assets that won't be searched for references + if( searchParameters.excludedAssetsFromSearch != null ) + { + foreach( Object obj in searchParameters.excludedAssetsFromSearch ) + { + if( obj == null || obj.Equals( null ) ) + continue; + + if( !obj.IsAsset() ) + continue; + + if( obj.IsFolder() ) + excludedAssetsPathsSet.UnionWith( Utilities.EnumerateFolderContents( obj ) ); + else + excludedAssetsPathsSet.Add( AssetDatabase.GetAssetPath( obj ) ); + } + } + + if( EditorUtility.DisplayCancelableProgressBar( "Please wait...", "Searching assets", 0f ) ) + throw new Exception( "Search aborted" ); + + foreach( string path in assetPaths ) + { + if( searchParameters.showDetailedProgressBar && ++searchProgress % 30 == 1 && EditorUtility.DisplayCancelableProgressBar( "Please wait...", "Searching assets", (float) searchProgress / searchTotalProgress ) ) + throw new Exception( "Search aborted" ); + + if( excludedAssetsPathsSet.Contains( path ) ) + continue; + + // If asset resides inside the Assets directory and is not a scene asset + if( path.StartsWithFast( "Assets/" ) && !path.EndsWithFast( ".unity" ) ) + { + if( !AssetHasAnyReference( path ) ) + continue; + + Object[] assets = AssetDatabase.LoadAllAssetsAtPath( path ); + if( assets == null || assets.Length == 0 ) + continue; + + for( int i = 0; i < assets.Length; i++ ) + { + // Components are already searched while searching the GameObject + if( assets[i] is Component ) + continue; + + BeginSearchObject( assets[i] ); + } + } + } + + // If a reference is found in the Project view, save the results + if( currentSearchResultGroup.NumberOfReferences > 0 ) + searchResult.Add( currentSearchResultGroup ); + } + + // Search all assets inside the ProjectSettings folder + if( projectSettingsToSearch.Length > 0 ) + { + currentSearchResultGroup = new SearchResultGroup( "Project Settings", SearchResultGroup.GroupType.ProjectSettings ); + + if( EditorUtility.DisplayCancelableProgressBar( "Please wait...", "Searching Project Settings", (float) searchProgress / searchTotalProgress ) ) + throw new Exception( "Search aborted" ); + + for( int i = 0; i < projectSettingsToSearch.Length; i++ ) + { + if( searchParameters.showDetailedProgressBar && ++searchProgress % 30 == 1 && EditorUtility.DisplayCancelableProgressBar( "Please wait...", "Searching Project Settings", (float) searchProgress / searchTotalProgress ) ) + throw new Exception( "Search aborted" ); + + Object[] assets = AssetDatabase.LoadAllAssetsAtPath( projectSettingsToSearch[i] ); + if( assets != null && assets.Length > 0 ) + { + for( int j = 0; j < assets.Length; j++ ) + BeginSearchObject( assets[j] ); + } + } + + if( currentSearchResultGroup.NumberOfReferences > 0 ) + searchResult.Add( currentSearchResultGroup ); + } + + // Search non-serializable variables for references while searching a scene in play mode + if( isInPlayMode ) + searchSerializableVariablesOnly = false; + + if( scenesToSearch.Count > 0 ) + { + // Calculate the path(s) of the scenes that won't be searched for references + HashSet excludedScenesPathsSet = new HashSet(); + if( searchParameters.excludedScenesFromSearch != null ) + { + foreach( Object obj in searchParameters.excludedScenesFromSearch ) + { + if( obj == null || obj.Equals( null ) ) + continue; + + if( !obj.IsAsset() ) + continue; + + if( obj.IsFolder() ) + { + string[] folderContents = AssetDatabase.FindAssets( "t:SceneAsset", new string[] { AssetDatabase.GetAssetPath( obj ) } ); + if( folderContents == null ) + continue; + + for( int i = 0; i < folderContents.Length; i++ ) + excludedScenesPathsSet.Add( AssetDatabase.GUIDToAssetPath( folderContents[i] ) ); + } + else if( obj is SceneAsset ) + excludedScenesPathsSet.Add( AssetDatabase.GetAssetPath( obj ) ); + } + } + + foreach( string scenePath in scenesToSearch ) + { + if( EditorUtility.DisplayCancelableProgressBar( "Please wait...", "Searching scene: " + scenePath, (float) ++searchProgress / searchTotalProgress ) ) + throw new Exception( "Search aborted" ); + + // Search scene for references + if( string.IsNullOrEmpty( scenePath ) ) + continue; + + if( excludedScenesPathsSet.Contains( scenePath ) ) + continue; + + SearchScene( scenePath, searchResult, searchParameters.lazySceneSearch, initialSceneSetup ); + } + } + + // Search through all the GameObjects under the DontDestroyOnLoad scene (if exists) + if( isInPlayMode && searchParameters.searchInScenes != SceneSearchMode.None ) + { + if( EditorUtility.DisplayCancelableProgressBar( "Please wait...", "Searching scene: DontDestroyOnLoad", 1f ) ) + throw new Exception( "Search aborted" ); + + currentSearchResultGroup = new SearchResultGroup( "DontDestroyOnLoad", SearchResultGroup.GroupType.DontDestroyOnLoad ); + + GameObject[] rootGameObjects = GetDontDestroyOnLoadObjects(); + for( int i = 0; i < rootGameObjects.Length; i++ ) + SearchGameObjectRecursively( rootGameObjects[i] ); + + if( currentSearchResultGroup.NumberOfReferences > 0 ) + searchResult.Add( currentSearchResultGroup ); + } + + // Searching source assets last prevents some references from being excluded due to callStack.ContainsFast + if( !dontSearchInSourceAssets ) + { + searchingSourceAssets = true; + + foreach( Object obj in objectsToSearchSet ) + { + currentSearchedObject = obj; + SearchObject( obj ); + } + + searchingSourceAssets = false; + } + + InitializeSearchResultNodes( searchResult ); + + // Log some c00l stuff to console + Debug.Log( "Searched " + searchedObjectsCount + " objects in " + ( EditorApplication.timeSinceStartup - searchStartTime ).ToString( "F2" ) + " seconds" ); + + return new SearchResult( true, searchResult, initialSceneSetup, this, searchParameters ); + } + catch( Exception e ) + { + StringBuilder sb = new StringBuilder( objectsToSearchSet.Count * 50 + callStack.Count * 50 + 1000 ); + sb.AppendLine( "AssetUsageDetector Error:" ).AppendLine().Append( e ).AppendLine(); + + Object latestUnityObjectInCallStack = AppendCallStackToStringBuilder( sb ); + + sb.AppendLine( "Searching references of: " ); + foreach( Object obj in objectsToSearchSet ) + { + if( obj ) + sb.Append( obj.name ).Append( " (" ).Append( obj.GetType() ).AppendLine( ")" ); + } + + Debug.LogError( sb.ToString(), latestUnityObjectInCallStack ); + + try + { + InitializeSearchResultNodes( searchResult ); + } + catch + { } + + return new SearchResult( false, searchResult, initialSceneSetup, this, searchParameters ); + } + finally + { + currentSearchResultGroup = null; + currentSearchedObject = null; + + EditorUtility.ClearProgressBar(); + +#if UNITY_2018_3_OR_NEWER + // If a prefab stage was open when the search was triggered, try reopening the prefab stage after the search is completed + if( !string.IsNullOrEmpty( openPrefabStageAssetPath ) ) + { +#if UNITY_2020_1_OR_NEWER + bool shouldOpenPrefabStageWithoutContext = true; + if( openPrefabStageContextObject != null && !openPrefabStageContextObject.Equals( null ) ) + { + try + { + // Try to access this method: https://github.com/Unity-Technologies/UnityCsReference/blob/73925b1711847c067e607ec8371f8e9ffe7ab65d/Editor/Mono/SceneManagement/StageManager/PrefabStage/PrefabStageUtility.cs#L61-L65 + MethodInfo prefabStageOpenerWithContext = typeof( PrefabStageUtility ).GetMethod( "OpenPrefab", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static, null, new Type[2] { typeof( string ), typeof( GameObject ) }, null ); + if( prefabStageOpenerWithContext != null ) + { + prefabStageOpenerWithContext.Invoke( null, new object[2] { openPrefabStageAssetPath, openPrefabStageContextObject } ); + shouldOpenPrefabStageWithoutContext = false; + } + } + catch { } + } + + if( shouldOpenPrefabStageWithoutContext ) +#endif + { + AssetDatabase.OpenAsset( AssetDatabase.LoadAssetAtPath( openPrefabStageAssetPath ) ); + } + } +#endif + } + } + + private void InitializeSearchResultNodes( List searchResult ) + { + for( int i = 0; i < searchResult.Count; i++ ) + searchResult[i].InitializeNodes( GetReferenceNode ); + + // If there are any empty groups after node initialization, remove those groups + for( int i = searchResult.Count - 1; i >= 0; i-- ) + { + if( !searchResult[i].PendingSearch && searchResult[i].NumberOfReferences == 0 ) + searchResult.RemoveAtFast( i ); + } + } + + // Checks if object is asset or scene object and adds it to the corresponding HashSet(s) + private void AddSearchedObjectToFilteredSets( Object obj, bool expandGameObjects ) + { + if( obj == null || obj.Equals( null ) ) + return; + + objectsToSearchSet.Add( obj ); + +#if UNITY_2018_3_OR_NEWER + // When searching for references of a prefab stage object, try adding its corresponding prefab asset to the searched assets, as well + if( openPrefabStage != null && openPrefabStagePrefabAsset != null && obj is GameObject && openPrefabStage.IsPartOfPrefabContents( (GameObject) obj ) ) + { + GameObject prefabStageObjectSource = ( (GameObject) obj ).FollowSymmetricHierarchy( openPrefabStage.prefabContentsRoot, openPrefabStagePrefabAsset ); + if( prefabStageObjectSource != null ) + AddSearchedObjectToFilteredSets( prefabStageObjectSource, expandGameObjects ); + } +#endif + + bool isAsset = obj.IsAsset(); + if( isAsset ) + { + assetsToSearchSet.Add( obj ); + + string assetPath = AssetDatabase.GetAssetPath( obj ); + if( !string.IsNullOrEmpty( assetPath ) ) + { + assetsToSearchPathsSet.Add( assetPath ); + if( dontSearchInSourceAssets && AssetDatabase.IsMainAsset( obj ) ) + excludedAssetsPathsSet.Add( assetPath ); + } + + GameObject go = null; + if( obj is GameObject ) + go = (GameObject) obj; + else if( obj is Component ) + go = ( (Component) obj ).gameObject; + + if( go != null ) + { + Transform transform = go.transform; + bool shouldAddRootPrefabEntry = true; + for( int i = assetsToSearchRootPrefabs.Count - 1; i >= 0; i-- ) + { + Transform rootTransform = assetsToSearchRootPrefabs[i].transform; + if( transform.IsChildOf( rootTransform ) ) + { + shouldAddRootPrefabEntry = false; + break; + } + + if( rootTransform.IsChildOf( transform ) ) + assetsToSearchRootPrefabs.RemoveAt( i ); + } + + if( shouldAddRootPrefabEntry ) + assetsToSearchRootPrefabs.Add( go ); + } + } + else + { + if( obj is GameObject ) + sceneObjectsToSearchScenesSet.Add( ( (GameObject) obj ).scene.path ); + else if( obj is Component ) + sceneObjectsToSearchScenesSet.Add( ( (Component) obj ).gameObject.scene.path ); + } + + if( expandGameObjects && obj is GameObject ) + { + // If searched asset is a GameObject, include its components in the search + Component[] components = ( (GameObject) obj ).GetComponents(); + for( int i = 0; i < components.Length; i++ ) + { + if( components[i] == null || components[i].Equals( null ) ) + continue; + + objectsToSearchSet.Add( components[i] ); + + if( isAsset ) + assetsToSearchSet.Add( components[i] ); + } + } + else if( obj is Component ) + { + // Include searched components' GameObjects in the search, as well + AddSearchedObjectToFilteredSets( ( (Component) obj ).gameObject, false ); + } + } + + // Search a scene for references + private void SearchScene( string scenePath, List searchResult, bool lazySearch, SceneSetup[] initialSceneSetup ) + { + Scene scene = EditorSceneManager.GetSceneByPath( scenePath ); + if( isInPlayMode && !scene.isLoaded ) + return; + + bool canContainSceneObjectReference = scene.isLoaded && ( !EditorSceneManager.preventCrossSceneReferences || sceneObjectsToSearchScenesSet.Contains( scenePath ) ); + if( !canContainSceneObjectReference ) + { + bool canContainAssetReference = assetsToSearchSet.Count > 0 && ( isInPlayMode || AssetHasAnyReference( scenePath ) ); + if( !canContainAssetReference ) + return; + } + + if( !scene.isLoaded ) + { + if( lazySearch ) + { + searchResult.Add( new SearchResultGroup( scenePath, SearchResultGroup.GroupType.Scene, true, true ) ); + return; + } + + scene = EditorSceneManager.OpenScene( scenePath, OpenSceneMode.Additive ); + } + + currentSearchResultGroup = new SearchResultGroup( scenePath, SearchResultGroup.GroupType.Scene ); + + // Search through all the GameObjects in the scene + GameObject[] rootGameObjects = scene.GetRootGameObjects(); + for( int i = 0; i < rootGameObjects.Length; i++ ) + SearchGameObjectRecursively( rootGameObjects[i] ); + + // If no references are found in the scene and if the scene is not part of the initial scene setup, close it + if( currentSearchResultGroup.NumberOfReferences == 0 ) + { + if( !isInPlayMode ) + { + bool sceneIsOneOfInitials = false; + for( int i = 0; i < initialSceneSetup.Length; i++ ) + { + if( initialSceneSetup[i].path == scenePath ) + { + if( !initialSceneSetup[i].isLoaded ) + EditorSceneManager.CloseScene( scene, false ); + + sceneIsOneOfInitials = true; + break; + } + } + + if( !sceneIsOneOfInitials ) + EditorSceneManager.CloseScene( scene, true ); + } + } + else + { + // Some references are found in this scene, save the results + searchResult.Add( currentSearchResultGroup ); + } + } + + // Search a GameObject and its children for references recursively + private void SearchGameObjectRecursively( GameObject go ) + { + BeginSearchObject( go ); + + Transform tr = go.transform; + for( int i = 0; i < tr.childCount; i++ ) + SearchGameObjectRecursively( tr.GetChild( i ).gameObject ); + } + + // Begin searching a root object (like a GameObject or an asset) + private void BeginSearchObject( Object obj ) + { + if( obj is SceneAsset ) + return; + + currentSearchedObject = obj; + + ReferenceNode searchResult = SearchObject( obj ); + if( searchResult != null ) + currentSearchResultGroup.AddReference( searchResult ); + } + + // Search an object for references + private ReferenceNode SearchObject( object obj ) + { + if( obj == null || obj.Equals( null ) ) + return null; + + // Avoid recursion (which leads to stackoverflow exception) using a stack + if( callStack.ContainsFast( obj ) ) + return null; + + bool searchingSourceAsset = searchingSourceAssets && ReferenceEquals( currentSearchedObject, obj ); + + // Hashing does not work well with structs all the time, don't cache search results for structs + string objHash = null; + if( !( obj is ValueType ) ) + { + objHash = obj.Hash(); + + if( !searchingSourceAsset ) + { + // If object was searched before, return the cached result + ReferenceNode cachedResult; + if( searchedObjects.TryGetValue( objHash, out cachedResult ) ) + return cachedResult; + } + } + + searchedObjectsCount++; + + ReferenceNode result; + Object unityObject = obj as Object; + if( unityObject != null ) + { + // If the Object is an asset, search it in detail only if its dependencies contain at least one of the searched asset(s) + string assetPath = null; + if( unityObject.IsAsset() ) + { + if( assetsToSearchSet.Count == 0 ) + { + searchedObjects.Add( objHash, null ); + return null; + } + + assetPath = AssetDatabase.GetAssetPath( unityObject ); + if( !AssetHasAnyReference( assetPath ) ) + { + searchedObjects.Add( objHash, null ); + return null; + } + } + + callStack.Add( unityObject ); + + // Search the Object in detail + Func searchFunction; + if( assetPath != null && extensionToSearchFunction.TryGetValue( Utilities.GetFileExtension( assetPath ), out searchFunction ) && AssetDatabase.IsMainAsset( unityObject ) ) + result = searchFunction( unityObject ); + else if( typeToSearchFunction.TryGetValue( unityObject.GetType(), out searchFunction ) ) + result = searchFunction( unityObject ); + else if( unityObject is Component ) + result = SearchComponent( unityObject ); + else + { + result = PopReferenceNode( unityObject ); + SearchVariablesWithSerializedObject( result ); + } + + callStack.RemoveAt( callStack.Count - 1 ); + } + else + { + // Comply with the recursive search limit + if( currentDepth >= searchDepthLimit ) + return null; + + callStack.Add( obj ); + currentDepth++; + + result = PopReferenceNode( obj ); + SearchVariablesWithReflection( result ); + + currentDepth--; + callStack.RemoveAt( callStack.Count - 1 ); + } + + if( result != null && result.NumberOfOutgoingLinks == 0 ) + { + PoolReferenceNode( result ); + result = null; + } + + // Cache the search result if we are skimming through a class (not a struct; i.e. objHash != null) + // and if the object is a UnityEngine.Object (if not, cache the result only if we have actually found something + // or we are at the root of the search; i.e. currentDepth == 0) + if( objHash != null && ( result != null || unityObject != null || currentDepth == 0 ) ) + { + if( !searchingSourceAsset ) + searchedObjects.Add( objHash, result ); + else if( result != null ) + { + result.CopyReferencesTo( searchedObjects[objHash] ); + PoolReferenceNode( result ); + } + } + + return result; + } + + // Check if the asset at specified path depends on any of the references + private bool AssetHasAnyReference( string assetPath ) + { + if( assetsToSearchPathsSet.Contains( assetPath ) ) + return true; + + if( alwaysSearchedExtensionsSet.Count > 0 && alwaysSearchedExtensionsSet.Contains( Utilities.GetFileExtension( assetPath ) ) ) + return true; + + return AssetHasAnyReferenceInternal( assetPath ); + } + + // Recursively check if the asset at specified path depends on any of the references + private bool AssetHasAnyReferenceInternal( string assetPath ) + { + CacheEntry cacheEntry; + if( !assetDependencyCache.TryGetValue( assetPath, out cacheEntry ) ) + { + cacheEntry = new CacheEntry( assetPath ); + assetDependencyCache[assetPath] = cacheEntry; + } + else if( !cacheEntry.verified ) + cacheEntry.Verify( assetPath ); + + if( cacheEntry.searchResult != CacheEntry.Result.Unknown ) + return cacheEntry.searchResult == CacheEntry.Result.Yes; + + cacheEntry.searchResult = CacheEntry.Result.No; + + string[] dependencies = cacheEntry.dependencies; + long[] fileSizes = cacheEntry.fileSizes; + for( int i = 0; i < dependencies.Length; i++ ) + { + // If a dependency was renamed (which doesn't affect the verified hash, unfortunately), + // force refresh the asset's dependencies and search it again + if( !Directory.Exists( dependencies[i] ) ) // Calling FileInfo.Length on a directory throws FileNotFoundException + { + FileInfo assetFile = new FileInfo( dependencies[i] ); + if( !assetFile.Exists || assetFile.Length != fileSizes[i] ) + { + // Although not reproduced, it is reported that this section caused StackOverflowException due to infinite loop, + // if that happens, log useful information to help reproduce the issue + if( lastRefreshedCacheEntry == cacheEntry ) + { + StringBuilder sb = new StringBuilder( 1000 ); + sb.AppendLine( "Infinite loop while refreshing a cache entry, please report it to the author." ).AppendLine(); + sb.Append( "Asset path: " ).AppendLine( assetPath ); + + for( int j = 0; j < 2; j++ ) + { + if( j == 1 ) + { + cacheEntry.Refresh( assetPath ); + dependencies = cacheEntry.dependencies; + fileSizes = cacheEntry.fileSizes; + } + + sb.AppendLine().AppendLine( j == 0 ? "Old Dependencies:" : "New Dependencies" ); + for( int k = 0; k < dependencies.Length; k++ ) + { + sb.Append( "- " ).Append( dependencies[k] ); + + if( Directory.Exists( dependencies[k] ) ) + { + sb.Append( " (Dir)" ); + if( fileSizes[k] != 0L ) + sb.Append( " WasCachedAsFile: " ).Append( fileSizes[k] ); + } + else + { + assetFile = new FileInfo( dependencies[k] ); + sb.Append( " (File) " ).Append( "CachedSize: " ).Append( fileSizes[k] ); + if( assetFile.Exists ) + sb.Append( " RealSize: " ).Append( assetFile.Length ); + else + sb.Append( " NoLongerExists" ); + } + + sb.AppendLine(); + } + } + + Debug.LogError( sb.ToString() ); + return false; + } + + cacheEntry.Refresh( assetPath ); + cacheEntry.searchResult = CacheEntry.Result.Unknown; + lastRefreshedCacheEntry = cacheEntry; + + return AssetHasAnyReferenceInternal( assetPath ); + } + } + + if( assetsToSearchPathsSet.Contains( dependencies[i] ) ) + { + cacheEntry.searchResult = CacheEntry.Result.Yes; + return true; + } + } + + for( int i = 0; i < dependencies.Length; i++ ) + { + if( AssetHasAnyReferenceInternal( dependencies[i] ) ) + { + cacheEntry.searchResult = CacheEntry.Result.Yes; + return true; + } + } + + return false; + } + + // Get reference node for object + private ReferenceNode GetReferenceNode( object nodeObject ) + { + ReferenceNode result; + string hash = nodeObject.Hash(); + if( !searchedObjects.TryGetValue( hash, out result ) || result == null ) + { + result = PopReferenceNode( nodeObject ); + searchedObjects[hash] = result; + } + + return result; + } + + // Fetch a reference node from pool + private ReferenceNode PopReferenceNode( object nodeObject ) + { + ReferenceNode node; + if( nodesPool.Count == 0 ) + node = new ReferenceNode(); + else + { + int index = nodesPool.Count - 1; + node = nodesPool[index]; + nodesPool.RemoveAt( index ); + } + + node.nodeObject = nodeObject; + return node; + } + + // Pool a reference node + private void PoolReferenceNode( ReferenceNode node ) + { + node.Clear(); + nodesPool.Add( node ); + } + + // Retrieve the game objects listed under the DontDestroyOnLoad scene + private GameObject[] GetDontDestroyOnLoadObjects() + { + GameObject temp = null; + try + { + temp = new GameObject(); + Object.DontDestroyOnLoad( temp ); + Scene dontDestroyOnLoad = temp.scene; + Object.DestroyImmediate( temp ); + temp = null; + + return dontDestroyOnLoad.GetRootGameObjects(); + } + finally + { + if( temp != null ) + Object.DestroyImmediate( temp ); + } + } + + // Appends contents of callStack to StringBuilder and returns the most recent Unity object in callStack + private Object AppendCallStackToStringBuilder( StringBuilder sb ) + { + Object latestUnityObjectInCallStack = null; + if( callStack.Count > 0 ) + { + sb.AppendLine().AppendLine( "Stack contents: " ); + + for( int i = callStack.Count - 1; i >= 0; i-- ) + { + latestUnityObjectInCallStack = callStack[i] as Object; + if( latestUnityObjectInCallStack ) + { + if( !AssetDatabase.Contains( latestUnityObjectInCallStack ) ) + { + string scenePath = AssetDatabase.GetAssetOrScenePath( latestUnityObjectInCallStack ); + if( !string.IsNullOrEmpty( scenePath ) && SceneManager.GetSceneByPath( scenePath ).IsValid() ) + sb.Append( "Scene: " ).AppendLine( scenePath ); + } + + break; + } + } + + for( int i = callStack.Count - 1; i >= 0; i-- ) + { + sb.Append( i ).Append( ": " ); + + Object unityObject = callStack[i] as Object; + if( unityObject ) + sb.Append( unityObject.name ).Append( " (" ).Append( unityObject.GetType() ).AppendLine( ")" ); + else if( callStack[i] != null ) + sb.Append( callStack[i].GetType() ).AppendLine( " object" ); + else + sb.AppendLine( "<>" ); + } + + sb.AppendLine(); + } + + return latestUnityObjectInCallStack; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetector.cs.meta b/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetector.cs.meta new file mode 100644 index 0000000..8d63a0c --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetector.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2c0dea52dcdb16e4e9b13f8dacc1590f +timeCreated: 1520032279 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetectorCache.cs b/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetectorCache.cs new file mode 100644 index 0000000..4bb1403 --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetectorCache.cs @@ -0,0 +1,207 @@ +using System; +using System.Collections.Generic; +using System.IO; +using UnityEditor; +using UnityEngine; +using Object = UnityEngine.Object; + +namespace AssetUsageDetectorNamespace +{ + public partial class AssetUsageDetector + { + #region Helper Classes + private class CacheEntry + { + public enum Result { Unknown = 0, No = 1, Yes = 2 }; + + public string hash; + public string[] dependencies; + public long[] fileSizes; + + public bool verified; + public Result searchResult; + + public CacheEntry( string path ) + { + Verify( path ); + } + + public CacheEntry( string hash, string[] dependencies, long[] fileSizes ) + { + this.hash = hash; + this.dependencies = dependencies; + this.fileSizes = fileSizes; + } + + public void Verify( string path ) + { + string hash = AssetDatabase.GetAssetDependencyHash( path ).ToString(); + if( this.hash != hash ) + { + this.hash = hash; + Refresh( path ); + } + + verified = true; + } + + public void Refresh( string path ) + { + dependencies = AssetDatabase.GetDependencies( path, false ); + if( fileSizes == null || fileSizes.Length != dependencies.Length ) + fileSizes = new long[dependencies.Length]; + + int length = dependencies.Length; + for( int i = 0; i < length; i++ ) + { + if( !string.IsNullOrEmpty( dependencies[i] ) ) + { + FileInfo assetFile = new FileInfo( dependencies[i] ); + fileSizes[i] = assetFile.Exists ? assetFile.Length : 0L; + } + else + { + // This dependency is empty which causes issues when passed to FileInfo constructor + // Find a non-empty dependency and move it to this index + for( int j = length - 1; j > i; j--, length-- ) + { + if( !string.IsNullOrEmpty( dependencies[j] ) ) + { + dependencies[i--] = dependencies[j]; + break; + } + } + + length--; + } + } + + if( length != fileSizes.Length ) + { + Array.Resize( ref dependencies, length ); + Array.Resize( ref fileSizes, length ); + } + } + } + #endregion + + // An optimization to fetch the dependencies of an asset only once (key is the path of the asset) + private Dictionary assetDependencyCache; + private CacheEntry lastRefreshedCacheEntry; + + private string CachePath { get { return Application.dataPath + "/../Library/AssetUsageDetector.cache"; } } // Path of the cache file + + public void SaveCache() + { + if( assetDependencyCache == null ) + return; + + try + { + using( FileStream stream = new FileStream( CachePath, FileMode.Create ) ) + using( BinaryWriter writer = new BinaryWriter( stream ) ) + { + writer.Write( assetDependencyCache.Count ); + + foreach( var keyValuePair in assetDependencyCache ) + { + CacheEntry cacheEntry = keyValuePair.Value; + string[] dependencies = cacheEntry.dependencies; + long[] fileSizes = cacheEntry.fileSizes; + + writer.Write( keyValuePair.Key ); + writer.Write( cacheEntry.hash ); + writer.Write( dependencies.Length ); + + for( int i = 0; i < dependencies.Length; i++ ) + { + writer.Write( dependencies[i] ); + writer.Write( fileSizes[i] ); + } + } + } + } + catch( Exception e ) + { + Debug.LogException( e ); + } + } + + private void LoadCache() + { + if( File.Exists( CachePath ) ) + { + using( FileStream stream = new FileStream( CachePath, FileMode.Open, FileAccess.Read ) ) + using( BinaryReader reader = new BinaryReader( stream ) ) + { + try + { + int cacheSize = reader.ReadInt32(); + assetDependencyCache = new Dictionary( cacheSize ); + + for( int i = 0; i < cacheSize; i++ ) + { + string assetPath = reader.ReadString(); + string hash = reader.ReadString(); + + int dependenciesLength = reader.ReadInt32(); + string[] dependencies = new string[dependenciesLength]; + long[] fileSizes = new long[dependenciesLength]; + for( int j = 0; j < dependenciesLength; j++ ) + { + dependencies[j] = reader.ReadString(); + fileSizes[j] = reader.ReadInt64(); + } + + assetDependencyCache[assetPath] = new CacheEntry( hash, dependencies, fileSizes ); + } + } + catch( Exception e ) + { + assetDependencyCache = null; + Debug.LogWarning( "Couldn't load cache (probably cache format has changed in an update), will regenerate cache.\n" + e.ToString() ); + } + } + } + + // Generate cache for all assets for the first time + if( assetDependencyCache == null ) + { + assetDependencyCache = new Dictionary( 1024 * 8 ); + + string[] allAssets = AssetDatabase.GetAllAssetPaths(); + if( allAssets.Length > 0 ) + { + double startTime = EditorApplication.timeSinceStartup; + + try + { + for( int i = 0; i < allAssets.Length; i++ ) + { + if( i % 30 == 0 && EditorUtility.DisplayCancelableProgressBar( "Please wait...", "Generating cache for the first time (optional)", (float) i / allAssets.Length ) ) + { + EditorUtility.ClearProgressBar(); + Debug.LogWarning( "Initial cache generation cancelled, cache will be generated on the fly as more and more assets are searched." ); + break; + } + + assetDependencyCache[allAssets[i]] = new CacheEntry( allAssets[i] ); + } + + EditorUtility.ClearProgressBar(); + + Debug.Log( "Cache generated in " + ( EditorApplication.timeSinceStartup - startTime ).ToString( "F2" ) + " seconds" ); + Debug.Log( "You can always reset the cache by deleting " + Path.GetFullPath( CachePath ) ); + + SaveCache(); + } + catch( Exception e ) + { + EditorUtility.ClearProgressBar(); + Debug.LogException( e ); + } + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetectorCache.cs.meta b/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetectorCache.cs.meta new file mode 100644 index 0000000..3d8d896 --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetectorCache.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 71ea9a3fd0b82594d8130d882dbfc844 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetectorSearchFunctions.cs b/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetectorSearchFunctions.cs new file mode 100644 index 0000000..2e059f2 --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetectorSearchFunctions.cs @@ -0,0 +1,1410 @@ +using System; +using System.Collections.Generic; +using System.Collections; +using System.IO; +using System.Reflection; +using System.Text; +using UnityEditor; +using UnityEditor.Animations; +using UnityEngine; +using UnityEngine.UI; +#if UNITY_2017_1_OR_NEWER +using UnityEngine.U2D; +using UnityEngine.Playables; +#endif +#if UNITY_2018_2_OR_NEWER +using UnityEditor.U2D; +#endif +#if UNITY_2017_3_OR_NEWER +using UnityEditor.Compilation; +#endif +#if UNITY_2017_2_OR_NEWER +using UnityEngine.Tilemaps; +#endif +using Object = UnityEngine.Object; + +namespace AssetUsageDetectorNamespace +{ + public partial class AssetUsageDetector + { + #region Helper Classes +#if UNITY_2017_3_OR_NEWER +#pragma warning disable 0649 // The fields' values are assigned via JsonUtility + [Serializable] + private struct AssemblyDefinitionReferences + { + public string reference; // Used by AssemblyDefinitionReferenceAssets + public List references; // Used by AssemblyDefinitionAssets + } +#pragma warning restore 0649 +#endif + +#if UNITY_2018_1_OR_NEWER +#pragma warning disable 0649 // The fields' values are assigned via JsonUtility + [Serializable] + private struct ShaderGraphReferences // Used by old Shader Graph serialization format + { + [Serializable] + public struct JSONHolder + { + public string JSONnodeData; + } + + [Serializable] + public class TextureHolder + { + public string m_SerializedTexture; + public string m_SerializedCubemap; + public string m_Guid; + + public string GetTexturePath() + { + string guid = ExtractGUIDFromString( !string.IsNullOrEmpty( m_SerializedTexture ) ? m_SerializedTexture : m_SerializedCubemap ); + if( string.IsNullOrEmpty( guid ) ) + guid = m_Guid; + + return string.IsNullOrEmpty( guid ) ? null : AssetDatabase.GUIDToAssetPath( guid ); + } + } + + [Serializable] + public struct PropertyData + { + public string m_Name; + public string m_DefaultReferenceName; + public string m_OverrideReferenceName; + public TextureHolder m_Value; + + public string GetName() + { + if( !string.IsNullOrEmpty( m_OverrideReferenceName ) ) + return m_OverrideReferenceName; + if( !string.IsNullOrEmpty( m_DefaultReferenceName ) ) + return m_DefaultReferenceName; + if( !string.IsNullOrEmpty( m_Name ) ) + return m_Name; + + return "Property"; + } + } + + [Serializable] + public struct NodeData + { + public string m_Name; + public string m_FunctionSource; // Custom Function node's Source field + public string m_SerializedSubGraph; // Sub-graph node + public List m_SerializableSlots; + + public string GetSubGraphPath() + { + string guid = ExtractGUIDFromString( m_SerializedSubGraph ); + return string.IsNullOrEmpty( guid ) ? null : AssetDatabase.GUIDToAssetPath( guid ); + } + } + + [Serializable] + public struct NodeSlotData + { + public TextureHolder m_Texture; + public TextureHolder m_TextureArray; + public TextureHolder m_Cubemap; + + public string GetTexturePath() + { + if( m_Texture != null ) + return m_Texture.GetTexturePath(); + if( m_Cubemap != null ) + return m_Cubemap.GetTexturePath(); + if( m_TextureArray != null ) + return m_TextureArray.GetTexturePath(); + + return null; + } + } + + public List m_SerializedProperties; + public List m_SerializableNodes; + + // String can be in one of the following formats: + // "guid":"GUID_VALUE" + // "guid": "GUID_VALUE" + // "guid" : "GUID_VALUE" + private static string ExtractGUIDFromString( string str ) + { + if( !string.IsNullOrEmpty( str ) ) + { + int guidStartIndex = str.IndexOf( "\"guid\"" ); + if( guidStartIndex >= 0 ) + { + guidStartIndex += 6; + guidStartIndex = str.IndexOf( '"', guidStartIndex ); + if( guidStartIndex > 0 ) + { + guidStartIndex++; + + int guidEndIndex = str.IndexOf( '"', guidStartIndex ); + if( guidEndIndex > 0 ) + return str.Substring( guidStartIndex, guidEndIndex - guidStartIndex ); + } + } + } + + return null; + } + } +#pragma warning restore 0649 +#endif + #endregion + + // Dictionary to quickly find the function to search a specific type with + private Dictionary> typeToSearchFunction; + // Dictionary to associate special file extensions with their search functions + private Dictionary> extensionToSearchFunction; + + // An optimization to fetch & filter fields and properties of a class only once + private readonly Dictionary typeToVariables = new Dictionary( 4096 ); + private readonly List validVariables = new List( 32 ); + + // Path(s) of .cginc, .cg, .hlsl and .glslinc assets in assetsToSearchSet + private readonly HashSet shaderIncludesToSearchSet = new HashSet(); + +#if UNITY_2017_3_OR_NEWER + // Path(s) of the Assembly Definition Files in objectsToSearchSet (Value: files themselves) + private readonly Dictionary assemblyDefinitionFilesToSearch = new Dictionary( 8 ); +#endif + + // An optimization to fetch an animation clip's curve bindings only once + private readonly Dictionary animationClipUniqueBindings = new Dictionary( 256 ); + + private bool searchPrefabConnections; + private bool searchMonoBehavioursForScript; + private bool searchRenderers; + private bool searchMaterialsForShader; + private bool searchTextureReferences; +#if UNITY_2018_1_OR_NEWER + private bool searchShaderGraphsForSubGraphs; +#endif + + private bool searchSerializableVariablesOnly; + private bool prevSearchSerializableVariablesOnly; + + private BindingFlags fieldModifiers, propertyModifiers; + private BindingFlags prevFieldModifiers, prevPropertyModifiers; + + // Unity's internal function that returns a SerializedProperty's corresponding FieldInfo + private delegate FieldInfo FieldInfoGetter( SerializedProperty p, out Type t ); + private FieldInfoGetter fieldInfoGetter; + + private void InitializeSearchFunctionsData( Parameters searchParameters ) + { + if( typeToSearchFunction == null ) + { + typeToSearchFunction = new Dictionary>() + { + { typeof( GameObject ), SearchGameObject }, + { typeof( Material ), SearchMaterial }, + { typeof( Shader ), SearchShader }, + { typeof( MonoScript ), SearchMonoScript }, + { typeof( RuntimeAnimatorController ), SearchAnimatorController }, + { typeof( AnimatorOverrideController ), SearchAnimatorController }, + { typeof( AnimatorController ), SearchAnimatorController }, + { typeof( AnimatorStateMachine ), SearchAnimatorStateMachine }, + { typeof( AnimatorState ), SearchAnimatorState }, + { typeof( AnimatorStateTransition ), SearchAnimatorStateTransition }, + { typeof( BlendTree ), SearchBlendTree }, + { typeof( AnimationClip ), SearchAnimationClip }, +#if UNITY_2017_1_OR_NEWER + { typeof( SpriteAtlas ), SearchSpriteAtlas }, +#endif + }; + } + + if( extensionToSearchFunction == null ) + { + extensionToSearchFunction = new Dictionary>() + { + { "compute", SearchShaderSecondaryAsset }, + { "cginc", SearchShaderSecondaryAsset }, + { "cg", SearchShaderSecondaryAsset }, + { "glslinc", SearchShaderSecondaryAsset }, + { "hlsl", SearchShaderSecondaryAsset }, +#if UNITY_2017_3_OR_NEWER + { "asmdef", SearchAssemblyDefinitionFile }, +#endif +#if UNITY_2019_2_OR_NEWER + { "asmref", SearchAssemblyDefinitionFile }, +#endif +#if UNITY_2018_1_OR_NEWER + { "shadergraph", SearchShaderGraph }, + { "shadersubgraph", SearchShaderGraph }, +#endif + }; + } + + fieldModifiers = searchParameters.fieldModifiers | BindingFlags.Instance | BindingFlags.DeclaredOnly; + propertyModifiers = searchParameters.propertyModifiers | BindingFlags.Instance | BindingFlags.DeclaredOnly; + searchSerializableVariablesOnly = !searchParameters.searchNonSerializableVariables; + + if( prevFieldModifiers != fieldModifiers || prevPropertyModifiers != propertyModifiers || prevSearchSerializableVariablesOnly != searchSerializableVariablesOnly ) + typeToVariables.Clear(); + + prevFieldModifiers = fieldModifiers; + prevPropertyModifiers = propertyModifiers; + prevSearchSerializableVariablesOnly = searchSerializableVariablesOnly; + + searchPrefabConnections = false; + searchMonoBehavioursForScript = false; + searchRenderers = false; + searchMaterialsForShader = false; + searchTextureReferences = false; +#if UNITY_2018_1_OR_NEWER + searchShaderGraphsForSubGraphs = false; +#endif + + foreach( Object obj in objectsToSearchSet ) + { + if( obj is Texture ) + { + searchRenderers = true; + searchTextureReferences = true; + } + else if( obj is Material ) + searchRenderers = true; + else if( obj is MonoScript ) + searchMonoBehavioursForScript = true; + else if( obj is Shader ) + { + searchRenderers = true; + searchMaterialsForShader = true; + } + else if( obj is GameObject ) + searchPrefabConnections = true; +#if UNITY_2017_3_OR_NEWER + else if( obj is UnityEditorInternal.AssemblyDefinitionAsset ) + assemblyDefinitionFilesToSearch[AssetDatabase.GetAssetPath( obj )] = obj; +#endif + } + + foreach( string path in assetsToSearchPathsSet ) + { + string extension = Utilities.GetFileExtension( path ); + if( extension == "hlsl" || extension == "cginc" || extension == "cg" || extension == "glslinc" ) + shaderIncludesToSearchSet.Add( path ); +#if UNITY_2018_1_OR_NEWER + else if( extension == "shadersubgraph" ) + searchShaderGraphsForSubGraphs = true; +#endif + } + + // AssetDatabase.GetDependencies doesn't take #include lines in shader source codes into consideration. If we are searching for references + // of a potential #include target (shaderIncludesToSearchSet), we must search all shader assets and check their #include lines manually + if( shaderIncludesToSearchSet.Count > 0 ) + { + alwaysSearchedExtensionsSet.Add( "shader" ); + alwaysSearchedExtensionsSet.Add( "compute" ); + alwaysSearchedExtensionsSet.Add( "cginc" ); + alwaysSearchedExtensionsSet.Add( "cg" ); + alwaysSearchedExtensionsSet.Add( "glslinc" ); + alwaysSearchedExtensionsSet.Add( "hlsl" ); + } + +#if UNITY_2017_3_OR_NEWER + // AssetDatabase.GetDependencies doesn't return references from Assembly Definition Files to their Assembly Definition References, + // so if we are searching for an Assembly Definition File's usages, we must search all Assembly Definition Files' references manually. + if( assemblyDefinitionFilesToSearch.Count > 0 ) + { + alwaysSearchedExtensionsSet.Add( "asmdef" ); +#if UNITY_2019_2_OR_NEWER + alwaysSearchedExtensionsSet.Add( "asmref" ); +#endif + } +#endif + +#if UNITY_2018_1_OR_NEWER + // AssetDatabase.GetDependencies doesn't work with Shader Graph assets. We must search all Shader Graph assets in the following cases: + // searchTextureReferences: to find Texture references used in various nodes and properties + // searchShaderGraphsForSubGraphs: to find Shader Sub-graph references in other Shader Graph assets + // shaderIncludesToSearchSet: to find .cginc, .cg, .glslinc and .hlsl references used in Custom Function nodes + if( searchTextureReferences || searchShaderGraphsForSubGraphs || shaderIncludesToSearchSet.Count > 0 ) + { + alwaysSearchedExtensionsSet.Add( "shadergraph" ); + alwaysSearchedExtensionsSet.Add( "shadersubgraph" ); + } +#endif + +#if UNITY_2019_3_OR_NEWER + MethodInfo fieldInfoGetterMethod = typeof( Editor ).Assembly.GetType( "UnityEditor.ScriptAttributeUtility" ).GetMethod( "GetFieldInfoAndStaticTypeFromProperty", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static ); +#else + MethodInfo fieldInfoGetterMethod = typeof( Editor ).Assembly.GetType( "UnityEditor.ScriptAttributeUtility" ).GetMethod( "GetFieldInfoFromProperty", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static ); +#endif + fieldInfoGetter = (FieldInfoGetter) Delegate.CreateDelegate( typeof( FieldInfoGetter ), fieldInfoGetterMethod ); + } + + private ReferenceNode SearchGameObject( Object unityObject ) + { + GameObject go = (GameObject) unityObject; + ReferenceNode referenceNode = PopReferenceNode( go ); + + // Check if this GameObject's prefab is one of the selected assets + if( searchPrefabConnections ) + { +#if UNITY_2018_3_OR_NEWER + Object prefab = PrefabUtility.GetCorrespondingObjectFromSource( go ); +#else + Object prefab = PrefabUtility.GetPrefabParent( go ); +#endif + if( objectsToSearchSet.Contains( prefab ) && assetsToSearchRootPrefabs.ContainsFast( prefab as GameObject ) ) + referenceNode.AddLinkTo( GetReferenceNode( prefab ), "Prefab object" ); + } + + // Search through all the components of the object + Component[] components = go.GetComponents(); + for( int i = 0; i < components.Length; i++ ) + referenceNode.AddLinkTo( SearchObject( components[i] ) ); + + return referenceNode; + } + + private ReferenceNode SearchComponent( Object unityObject ) + { + Component component = (Component) unityObject; + + // Ignore Transform component (no object field to search for) + if( component is Transform ) + return null; + + ReferenceNode referenceNode = PopReferenceNode( component ); + + if( searchMonoBehavioursForScript && component is MonoBehaviour ) + { + // If a searched asset is script, check if this component is an instance of it + MonoScript script = MonoScript.FromMonoBehaviour( (MonoBehaviour) component ); + if( objectsToSearchSet.Contains( script ) ) + referenceNode.AddLinkTo( GetReferenceNode( script ) ); + } + else if( component is ParticleSystemRenderer ) + { + // Search ParticleSystemRenderer's custom meshes for references (they aren't searched by SerializedObject, unfortunately) + Mesh[] meshes = new Mesh[( (ParticleSystemRenderer) component ).meshCount]; + int meshCount = ( (ParticleSystemRenderer) component ).GetMeshes( meshes ); + for( int i = 0; i < meshCount; i++ ) + referenceNode.AddLinkTo( SearchObject( meshes[i] ), "Renderer Module: Mesh" ); + } + else if( component is ParticleSystem ) + { + // Some ParticleSystem properties aren't searched by SerializedObject, search them manually instead + ParticleSystem particleSystem = (ParticleSystem) component; + referenceNode.AddLinkTo( SearchObject( particleSystem.lights.light ), "Light Module: Light" ); + + try + { + ParticleSystem.CollisionModule collisionModule = particleSystem.collision; +#if UNITY_2020_2_OR_NEWER + for( int i = 0, j = collisionModule.planeCount; i < j; i++ ) +#else + for( int i = 0, j = collisionModule.maxPlaneCount; i < j; i++ ) +#endif + referenceNode.AddLinkTo( SearchObject( collisionModule.GetPlane( i ) ), "Collision Module: Plane" ); + } + catch { } + + try + { + ParticleSystem.TriggerModule triggerModule = particleSystem.trigger; +#if UNITY_2020_2_OR_NEWER + for( int i = 0, j = triggerModule.colliderCount; i < j; i++ ) +#else + for( int i = 0, j = triggerModule.maxColliderCount; i < j; i++ ) +#endif + referenceNode.AddLinkTo( SearchObject( triggerModule.GetCollider( i ) ), "Trigger Module: Collider" ); + } + catch { } + } + else if( searchRenderers && component is Renderer ) + { + // If an asset is a shader, texture or material, and this component is a Renderer, + // search it for references + Material[] materials = ( (Renderer) component ).sharedMaterials; + for( int i = 0; i < materials.Length; i++ ) + referenceNode.AddLinkTo( SearchObject( materials[i] ) ); + } + else if( component is Animation ) + { + // Search animation clips for references + foreach( AnimationState anim in (Animation) component ) + referenceNode.AddLinkTo( SearchObject( anim.clip ) ); + + // Search the objects that are animated by this Animation component for references + SearchAnimatedObjects( referenceNode ); + } + else if( component is Animator ) + { + // Search animation clips for references (via AnimatorController) + referenceNode.AddLinkTo( SearchObject( ( (Animator) component ).runtimeAnimatorController ) ); + + // Search the objects that are animated by this Animator component for references + SearchAnimatedObjects( referenceNode ); + } +#if UNITY_2017_2_OR_NEWER + else if( component is Tilemap ) + { + // Search the tiles for references + TileBase[] tiles = new TileBase[( (Tilemap) component ).GetUsedTilesCount()]; + ( (Tilemap) component ).GetUsedTilesNonAlloc( tiles ); + + if( tiles != null ) + { + for( int i = 0; i < tiles.Length; i++ ) + referenceNode.AddLinkTo( SearchObject( tiles[i] ), "Tile" ); + } + } +#endif +#if UNITY_2017_1_OR_NEWER + else if( component is PlayableDirector ) + { + // Search the PlayableAsset's scene bindings for references + PlayableAsset playableAsset = ( (PlayableDirector) component ).playableAsset; + if( playableAsset != null && !playableAsset.Equals( null ) ) + { + foreach( PlayableBinding binding in playableAsset.outputs ) + referenceNode.AddLinkTo( SearchObject( ( (PlayableDirector) component ).GetGenericBinding( binding.sourceObject ) ), "Binding: " + binding.streamName ); + } + } +#endif + + SearchVariablesWithSerializedObject( referenceNode ); + return referenceNode; + } + + private ReferenceNode SearchMaterial( Object unityObject ) + { + Material material = (Material) unityObject; + ReferenceNode referenceNode = PopReferenceNode( material ); + + if( searchMaterialsForShader && objectsToSearchSet.Contains( material.shader ) ) + referenceNode.AddLinkTo( GetReferenceNode( material.shader ), "Shader" ); + + if( searchTextureReferences ) + { + // Search through all the textures attached to this material + // Credit: http://answers.unity3d.com/answers/1116025/view.html + Shader shader = material.shader; + int shaderPropertyCount = ShaderUtil.GetPropertyCount( shader ); + for( int i = 0; i < shaderPropertyCount; i++ ) + { + if( ShaderUtil.GetPropertyType( shader, i ) == ShaderUtil.ShaderPropertyType.TexEnv ) + { + string propertyName = ShaderUtil.GetPropertyName( shader, i ); + Texture assignedTexture = material.GetTexture( propertyName ); + if( objectsToSearchSet.Contains( assignedTexture ) ) + referenceNode.AddLinkTo( GetReferenceNode( assignedTexture ), "Shader property: " + propertyName ); + } + } + } + + return referenceNode; + } + + // Searches default Texture values assigned to shader properties, as well as #include references in shader source code + private ReferenceNode SearchShader( Object unityObject ) + { + Shader shader = (Shader) unityObject; + ReferenceNode referenceNode = PopReferenceNode( shader ); + + if( searchTextureReferences ) + { + ShaderImporter shaderImporter = AssetImporter.GetAtPath( AssetDatabase.GetAssetPath( unityObject ) ) as ShaderImporter; + if( shaderImporter != null ) + { + int shaderPropertyCount = ShaderUtil.GetPropertyCount( shader ); + for( int i = 0; i < shaderPropertyCount; i++ ) + { + if( ShaderUtil.GetPropertyType( shader, i ) == ShaderUtil.ShaderPropertyType.TexEnv ) + { + string propertyName = ShaderUtil.GetPropertyName( shader, i ); + Texture defaultTexture = shaderImporter.GetDefaultTexture( propertyName ); +#if UNITY_2018_1_OR_NEWER + if( !defaultTexture ) + defaultTexture = shaderImporter.GetNonModifiableTexture( propertyName ); +#endif + + if( objectsToSearchSet.Contains( defaultTexture ) ) + referenceNode.AddLinkTo( GetReferenceNode( defaultTexture ), "Default Texture: " + propertyName ); + } + } + } + } + + // Search shader source code for #include references + if( shaderIncludesToSearchSet.Count > 0 ) + SearchShaderSourceCodeForCGIncludes( referenceNode ); + + return referenceNode; + } + + // Searches .compute, .cginc, .cg, .hlsl and .glslinc assets for #include references + private ReferenceNode SearchShaderSecondaryAsset( Object unityObject ) + { + if( shaderIncludesToSearchSet.Count == 0 ) + return null; + + ReferenceNode referenceNode = PopReferenceNode( unityObject ); + SearchShaderSourceCodeForCGIncludes( referenceNode ); + return referenceNode; + } + + // Searches default UnityEngine.Object values assigned to script variables + private ReferenceNode SearchMonoScript( Object unityObject ) + { + MonoScript script = (MonoScript) unityObject; + Type scriptType = script.GetClass(); + if( scriptType == null || ( !scriptType.IsSubclassOf( typeof( MonoBehaviour ) ) && !scriptType.IsSubclassOf( typeof( ScriptableObject ) ) ) ) + return null; + + MonoImporter scriptImporter = AssetImporter.GetAtPath( AssetDatabase.GetAssetPath( unityObject ) ) as MonoImporter; + if( scriptImporter == null ) + return null; + + ReferenceNode referenceNode = PopReferenceNode( script ); + + VariableGetterHolder[] variables = GetFilteredVariablesForType( scriptType ); + for( int i = 0; i < variables.Length; i++ ) + { + if( variables[i].isSerializable && !variables[i].isProperty ) + { + Object defaultValue = scriptImporter.GetDefaultReference( variables[i].name ); + if( objectsToSearchSet.Contains( defaultValue ) ) + referenceNode.AddLinkTo( GetReferenceNode( defaultValue ), "Default variable value: " + variables[i].name ); + } + } + + return referenceNode; + } + + private ReferenceNode SearchAnimatorController( Object unityObject ) + { + RuntimeAnimatorController controller = (RuntimeAnimatorController) unityObject; + ReferenceNode referenceNode = PopReferenceNode( controller ); + + if( controller is AnimatorController ) + { + AnimatorControllerLayer[] layers = ( (AnimatorController) controller ).layers; + for( int i = 0; i < layers.Length; i++ ) + { + if( objectsToSearchSet.Contains( layers[i].avatarMask ) ) + referenceNode.AddLinkTo( GetReferenceNode( layers[i].avatarMask ), layers[i].name + " Mask" ); + + referenceNode.AddLinkTo( SearchObject( layers[i].stateMachine ) ); + } + } + else + { + if( controller is AnimatorOverrideController ) + { + RuntimeAnimatorController parentController = ( (AnimatorOverrideController) controller ).runtimeAnimatorController; + if( objectsToSearchSet.Contains( parentController ) ) + referenceNode.AddLinkTo( GetReferenceNode( parentController ) ); + } + + AnimationClip[] animClips = controller.animationClips; + for( int i = 0; i < animClips.Length; i++ ) + referenceNode.AddLinkTo( SearchObject( animClips[i] ) ); + } + + return referenceNode; + } + + private ReferenceNode SearchAnimatorStateMachine( Object unityObject ) + { + AnimatorStateMachine animatorStateMachine = (AnimatorStateMachine) unityObject; + ReferenceNode referenceNode = PopReferenceNode( animatorStateMachine ); + + ChildAnimatorStateMachine[] stateMachines = animatorStateMachine.stateMachines; + for( int i = 0; i < stateMachines.Length; i++ ) + referenceNode.AddLinkTo( SearchObject( stateMachines[i].stateMachine ), "Child State Machine" ); + + ChildAnimatorState[] states = animatorStateMachine.states; + for( int i = 0; i < states.Length; i++ ) + referenceNode.AddLinkTo( SearchObject( states[i].state ) ); + + if( searchMonoBehavioursForScript ) + { + StateMachineBehaviour[] behaviours = animatorStateMachine.behaviours; + for( int i = 0; i < behaviours.Length; i++ ) + { + MonoScript script = MonoScript.FromScriptableObject( behaviours[i] ); + if( objectsToSearchSet.Contains( script ) ) + referenceNode.AddLinkTo( GetReferenceNode( script ) ); + } + } + + return referenceNode; + } + + private ReferenceNode SearchAnimatorState( Object unityObject ) + { + AnimatorState animatorState = (AnimatorState) unityObject; + ReferenceNode referenceNode = PopReferenceNode( animatorState ); + + referenceNode.AddLinkTo( SearchObject( animatorState.motion ), "Motion" ); + + if( searchMonoBehavioursForScript ) + { + StateMachineBehaviour[] behaviours = animatorState.behaviours; + for( int i = 0; i < behaviours.Length; i++ ) + { + MonoScript script = MonoScript.FromScriptableObject( behaviours[i] ); + if( objectsToSearchSet.Contains( script ) ) + referenceNode.AddLinkTo( GetReferenceNode( script ) ); + } + } + + return referenceNode; + } + + private ReferenceNode SearchAnimatorStateTransition( Object unityObject ) + { + // Don't search AnimatorStateTransition objects, it will just return duplicate results of SearchAnimatorStateMachine + return PopReferenceNode( unityObject ); + } + + private ReferenceNode SearchBlendTree( Object unityObject ) + { + BlendTree blendTree = (BlendTree) unityObject; + ReferenceNode referenceNode = PopReferenceNode( blendTree ); + + ChildMotion[] children = blendTree.children; + for( int i = 0; i < children.Length; i++ ) + referenceNode.AddLinkTo( SearchObject( children[i].motion ), "Motion" ); + + return referenceNode; + } + + private ReferenceNode SearchAnimationClip( Object unityObject ) + { + AnimationClip clip = (AnimationClip) unityObject; + ReferenceNode referenceNode = PopReferenceNode( clip ); + + // Get all curves from animation clip + EditorCurveBinding[] objectCurves = AnimationUtility.GetObjectReferenceCurveBindings( clip ); + for( int i = 0; i < objectCurves.Length; i++ ) + { + // Search through all the keyframes in this curve + ObjectReferenceKeyframe[] keyframes = AnimationUtility.GetObjectReferenceCurve( clip, objectCurves[i] ); + for( int j = 0; j < keyframes.Length; j++ ) + referenceNode.AddLinkTo( SearchObject( keyframes[j].value ), "Keyframe: " + keyframes[j].time ); + } + + // Get all events from animation clip + AnimationEvent[] events = AnimationUtility.GetAnimationEvents( clip ); + for( int i = 0; i < events.Length; i++ ) + referenceNode.AddLinkTo( SearchObject( events[i].objectReferenceParameter ), "AnimationEvent: " + events[i].time ); + + return referenceNode; + } + +#if UNITY_2017_1_OR_NEWER + private ReferenceNode SearchSpriteAtlas( Object unityObject ) + { + SpriteAtlas spriteAtlas = (SpriteAtlas) unityObject; + ReferenceNode referenceNode = PopReferenceNode( spriteAtlas ); + + SerializedObject spriteAtlasSO = new SerializedObject( spriteAtlas ); + if( spriteAtlas.isVariant ) + { + Object masterAtlas = spriteAtlasSO.FindProperty( "m_MasterAtlas" ).objectReferenceValue; + if( objectsToSearchSet.Contains( masterAtlas ) ) + referenceNode.AddLinkTo( SearchObject( masterAtlas ), "Master Atlas" ); + } + +#if UNITY_2018_2_OR_NEWER + Object[] packables = spriteAtlas.GetPackables(); + if( packables != null ) + { + for( int i = 0; i < packables.Length; i++ ) + referenceNode.AddLinkTo( SearchObject( packables[i] ), "Packed Texture" ); + } +#else + SerializedProperty packables = spriteAtlasSO.FindProperty( "m_EditorData.packables" ); + if( packables != null ) + { + for( int i = 0, length = packables.arraySize; i < length; i++ ) + referenceNode.AddLinkTo( SearchObject( packables.GetArrayElementAtIndex( i ).objectReferenceValue ), "Packed Texture" ); + } +#endif + + return referenceNode; + } +#endif + +#if UNITY_2017_3_OR_NEWER + // Find references from an Assembly Definition File to its Assembly Definition References + private ReferenceNode SearchAssemblyDefinitionFile( Object unityObject ) + { + if( assemblyDefinitionFilesToSearch.Count == 0 ) + return null; + + AssemblyDefinitionReferences assemblyDefinitionFile = JsonUtility.FromJson( ( (TextAsset) unityObject ).text ); + ReferenceNode referenceNode = PopReferenceNode( unityObject ); + + if( !string.IsNullOrEmpty( assemblyDefinitionFile.reference ) ) + { + if( assemblyDefinitionFile.references == null ) + assemblyDefinitionFile.references = new List( 1 ) { assemblyDefinitionFile.reference }; + else + assemblyDefinitionFile.references.Add( assemblyDefinitionFile.reference ); + } + + if( assemblyDefinitionFile.references != null ) + { + for( int i = 0; i < assemblyDefinitionFile.references.Count; i++ ) + { +#if UNITY_2019_1_OR_NEWER + string assemblyPath = CompilationPipeline.GetAssemblyDefinitionFilePathFromAssemblyReference( assemblyDefinitionFile.references[i] ); +#else + string assemblyPath = CompilationPipeline.GetAssemblyDefinitionFilePathFromAssemblyName( assemblyDefinitionFile.references[i] ); +#endif + if( !string.IsNullOrEmpty( assemblyPath ) ) + { + Object searchedAssemblyDefinitionFile; + if( assemblyDefinitionFilesToSearch.TryGetValue( assemblyPath, out searchedAssemblyDefinitionFile ) ) + referenceNode.AddLinkTo( GetReferenceNode( searchedAssemblyDefinitionFile ), "Referenced Assembly" ); + } + } + } + + return referenceNode; + } +#endif + +#if UNITY_2018_1_OR_NEWER + // Searches Shader Graph assets for references + private ReferenceNode SearchShaderGraph( Object unityObject ) + { + if( !searchTextureReferences && !searchShaderGraphsForSubGraphs && shaderIncludesToSearchSet.Count == 0 ) + return null; + + ReferenceNode referenceNode = PopReferenceNode( unityObject ); + + // Shader Graph assets are JSON files, they must be crawled manually to find references + string graphJson = File.ReadAllText( AssetDatabase.GetAssetPath( unityObject ) ); + if( graphJson.IndexOf( "\"m_ObjectId\"", 0, Mathf.Min( 200, graphJson.Length ) ) >= 0 ) + { + // New Shader Graph serialization format is used: https://github.com/Unity-Technologies/Graphics/pull/222 + // Iterate over all these occurrences: "guid\": \"GUID_VALUE\" (\" is used instead of " because it is a nested JSON) + IterateOverValuesInString( graphJson, "\"guid\\\"", '"', ( guid ) => + { + if( guid.Length > 1 ) + { + if( guid[guid.Length - 1] == '\\' ) + guid = guid.Substring( 0, guid.Length - 1 ); + + string referencePath = AssetDatabase.GUIDToAssetPath( guid ); + if( !string.IsNullOrEmpty( referencePath ) && assetsToSearchPathsSet.Contains( referencePath ) ) + { + Object reference = AssetDatabase.LoadMainAssetAtPath( referencePath ); + if( objectsToSearchSet.Contains( reference ) ) + referenceNode.AddLinkTo( GetReferenceNode( reference ), "Used in graph" ); + } + } + } ); + + if( shaderIncludesToSearchSet.Count > 0 ) + { + // Iterate over all these occurrences: "m_FunctionSource": "GUID_VALUE" (this one is not nested JSON) + IterateOverValuesInString( graphJson, "\"m_FunctionSource\"", '"', ( guid ) => + { + string referencePath = AssetDatabase.GUIDToAssetPath( guid ); + if( !string.IsNullOrEmpty( referencePath ) && assetsToSearchPathsSet.Contains( referencePath ) ) + { + Object reference = AssetDatabase.LoadMainAssetAtPath( referencePath ); + if( objectsToSearchSet.Contains( reference ) ) + referenceNode.AddLinkTo( GetReferenceNode( reference ), "Used in node: Custom Function" ); + } + } ); + } + } + else + { + // Old Shader Graph serialization format is used. Although we could use the same search method as the new serialization format (which + // is potentially faster), this alternative search method yields more information about references + ShaderGraphReferences shaderGraph = JsonUtility.FromJson( graphJson ); + + if( shaderGraph.m_SerializedProperties != null ) + { + for( int i = shaderGraph.m_SerializedProperties.Count - 1; i >= 0; i-- ) + { + string propertyJSON = shaderGraph.m_SerializedProperties[i].JSONnodeData; + if( string.IsNullOrEmpty( propertyJSON ) ) + continue; + + ShaderGraphReferences.PropertyData propertyData = JsonUtility.FromJson( propertyJSON ); + if( propertyData.m_Value == null ) + continue; + + string texturePath = propertyData.m_Value.GetTexturePath(); + if( string.IsNullOrEmpty( texturePath ) || !assetsToSearchPathsSet.Contains( texturePath ) ) + continue; + + Texture texture = AssetDatabase.LoadAssetAtPath( texturePath ); + if( objectsToSearchSet.Contains( texture ) ) + referenceNode.AddLinkTo( GetReferenceNode( texture ), "Default Texture: " + propertyData.GetName() ); + } + } + + if( shaderGraph.m_SerializableNodes != null ) + { + for( int i = shaderGraph.m_SerializableNodes.Count - 1; i >= 0; i-- ) + { + string nodeJSON = shaderGraph.m_SerializableNodes[i].JSONnodeData; + if( string.IsNullOrEmpty( nodeJSON ) ) + continue; + + ShaderGraphReferences.NodeData nodeData = JsonUtility.FromJson( nodeJSON ); + if( !string.IsNullOrEmpty( nodeData.m_FunctionSource ) ) + { + string customFunctionPath = AssetDatabase.GUIDToAssetPath( nodeData.m_FunctionSource ); + if( !string.IsNullOrEmpty( customFunctionPath ) && assetsToSearchPathsSet.Contains( customFunctionPath ) ) + { + Object customFunction = AssetDatabase.LoadMainAssetAtPath( customFunctionPath ); + if( objectsToSearchSet.Contains( customFunction ) ) + referenceNode.AddLinkTo( GetReferenceNode( customFunction ), "Used in node: " + nodeData.m_Name ); + } + } + + if( searchShaderGraphsForSubGraphs ) + { + string subGraphPath = nodeData.GetSubGraphPath(); + if( !string.IsNullOrEmpty( subGraphPath ) && assetsToSearchPathsSet.Contains( subGraphPath ) ) + { + Object subGraph = AssetDatabase.LoadMainAssetAtPath( subGraphPath ); + if( objectsToSearchSet.Contains( subGraph ) ) + referenceNode.AddLinkTo( GetReferenceNode( subGraph ), "Used as Sub-graph" ); + } + } + + if( nodeData.m_SerializableSlots == null ) + continue; + + for( int j = nodeData.m_SerializableSlots.Count - 1; j >= 0; j-- ) + { + string nodeSlotJSON = nodeData.m_SerializableSlots[j].JSONnodeData; + if( string.IsNullOrEmpty( nodeSlotJSON ) ) + continue; + + string texturePath = JsonUtility.FromJson( nodeSlotJSON ).GetTexturePath(); + if( string.IsNullOrEmpty( texturePath ) || !assetsToSearchPathsSet.Contains( texturePath ) ) + continue; + + Texture texture = AssetDatabase.LoadAssetAtPath( texturePath ); + if( objectsToSearchSet.Contains( texture ) ) + referenceNode.AddLinkTo( GetReferenceNode( texture ), "Used in node: " + nodeData.m_Name ); + } + } + } + } + + return referenceNode; + } +#endif + + // Find references from an Animation/Animator component to the objects that it animates + private void SearchAnimatedObjects( ReferenceNode referenceNode ) + { + GameObject root = ( (Component) referenceNode.nodeObject ).gameObject; + AnimationClip[] clips = AnimationUtility.GetAnimationClips( root ); + for( int i = 0; i < clips.Length; i++ ) + { + AnimationClip clip = clips[i]; + bool isClipUnique = true; + for( int j = i - 1; j >= 0; j-- ) + { + if( clips[j] == clip ) + { + isClipUnique = false; + break; + } + } + + if( !isClipUnique ) + continue; + + EditorCurveBinding[] uniqueBindings; + if( !animationClipUniqueBindings.TryGetValue( clip, out uniqueBindings ) ) + { + // Calculate all the "unique" paths that the animation clip's curves have + // Both float curves (GetCurveBindings) and object reference curves (GetObjectReferenceCurveBindings) are checked + List _uniqueBindings = new List( 2 ); + EditorCurveBinding[] bindings = AnimationUtility.GetCurveBindings( clip ); + for( int j = 0; j < bindings.Length; j++ ) + { + string bindingPath = bindings[j].path; + if( string.IsNullOrEmpty( bindingPath ) ) // Ignore the root animated object + continue; + + bool isBindingUnique = true; + for( int k = _uniqueBindings.Count - 1; k >= 0; k-- ) + { + if( bindingPath == _uniqueBindings[k].path ) + { + isBindingUnique = false; + break; + } + } + + if( isBindingUnique ) + _uniqueBindings.Add( bindings[j] ); + } + + bindings = AnimationUtility.GetObjectReferenceCurveBindings( clip ); + for( int j = 0; j < bindings.Length; j++ ) + { + string bindingPath = bindings[j].path; + if( string.IsNullOrEmpty( bindingPath ) ) // Ignore the root animated object + continue; + + bool isBindingUnique = true; + for( int k = _uniqueBindings.Count - 1; k >= 0; k-- ) + { + if( bindingPath == _uniqueBindings[k].path ) + { + isBindingUnique = false; + break; + } + } + + if( isBindingUnique ) + _uniqueBindings.Add( bindings[j] ); + } + + uniqueBindings = _uniqueBindings.ToArray(); + animationClipUniqueBindings[clip] = uniqueBindings; + } + + string clipName = clip.name; + for( int j = 0; j < uniqueBindings.Length; j++ ) + referenceNode.AddLinkTo( SearchObject( AnimationUtility.GetAnimatedObject( root, uniqueBindings[j] ) ), "Animated via clip: " + clipName ); + } + } + + // Search #include references in shader source code + private void SearchShaderSourceCodeForCGIncludes( ReferenceNode referenceNode ) + { + string shaderPath = AssetDatabase.GetAssetPath( (Object) referenceNode.nodeObject ); + + // Iterate over all these occurrences: #include: "INCLUDE_REFERENCE" + IterateOverValuesInString( File.ReadAllText( shaderPath ), "#include ", '"', ( include ) => + { + bool isIncludePotentialReference = shaderIncludesToSearchSet.Contains( include ); + if( !isIncludePotentialReference ) + { + // Get absolute path of the #include + include = Path.GetFullPath( Path.Combine( Path.GetDirectoryName( shaderPath ), include ) ); + + int trimStartLength = Directory.GetCurrentDirectory().Length + 1; // Convert absolute path to a Project-relative path + if( include.Length > trimStartLength ) + { + include = include.Substring( trimStartLength ).Replace( '\\', '/' ); + isIncludePotentialReference = shaderIncludesToSearchSet.Contains( include ); + } + } + + if( isIncludePotentialReference ) + { + Object cgShader = AssetDatabase.LoadMainAssetAtPath( include ); + if( objectsToSearchSet.Contains( cgShader ) ) + referenceNode.AddLinkTo( GetReferenceNode( cgShader ), "Used with #include" ); + } + } ); + } + + // Search through variables of an object with SerializedObject + private void SearchVariablesWithSerializedObject( ReferenceNode referenceNode ) + { + if( !isInPlayMode || referenceNode.nodeObject.IsAsset() ) + { + SerializedObject so = new SerializedObject( (Object) referenceNode.nodeObject ); + SerializedProperty iterator = so.GetIterator(); + SerializedProperty iteratorVisible = so.GetIterator(); + if( iterator.Next( true ) ) + { + string assetPath = AssetDatabase.GetAssetPath( (Object) referenceNode.nodeObject ); + bool isProjectSettings = !string.IsNullOrEmpty( assetPath ) && assetPath.StartsWithFast( "ProjectSettings/" ); + + bool iteratingVisible = iteratorVisible.NextVisible( true ); + bool enterChildren; + do + { + if( isProjectSettings ) + { + // Search Project Settings in full because for some reason, important settings like SRP asset + // slot in Quality Settings aren't searched when iterating over only visible properties + enterChildren = true; + } + else + { + // Iterate over NextVisible properties AND the properties that have corresponding FieldInfos (internal Unity + // properties don't have FieldInfos so we are skipping them, which is good because search results found in + // those properties aren't interesting and mostly confusing) + bool isVisible = iteratingVisible && SerializedProperty.EqualContents( iterator, iteratorVisible ); + if( isVisible ) + iteratingVisible = iteratorVisible.NextVisible( true ); + else + { + Type propFieldType; + isVisible = iterator.type == "Array" || fieldInfoGetter( iterator, out propFieldType ) != null; + } + + if( !isVisible ) + { + enterChildren = false; + continue; + } + } + + ReferenceNode searchResult; + switch( iterator.propertyType ) + { + case SerializedPropertyType.ObjectReference: + searchResult = SearchObject( iterator.objectReferenceValue ); + enterChildren = false; + break; + case SerializedPropertyType.ExposedReference: + searchResult = SearchObject( iterator.exposedReferenceValue ); + enterChildren = false; + break; +#if UNITY_2019_3_OR_NEWER + case SerializedPropertyType.ManagedReference: + searchResult = SearchObject( GetRawSerializedPropertyValue( iterator ) ); + enterChildren = false; + break; +#endif + case SerializedPropertyType.Generic: + searchResult = null; + enterChildren = true; + break; + default: + searchResult = null; + enterChildren = false; + break; + } + + if( searchResult != null && searchResult != referenceNode ) + { + string propertyPath = iterator.propertyPath; + + // m_RD.texture is a redundant reference that shows up when searching sprites + if( !propertyPath.EndsWithFast( "m_RD.texture" ) ) + referenceNode.AddLinkTo( searchResult, "Variable: " + propertyPath.Replace( ".Array.data[", "[" ) ); // "arrayVariable.Array.data[0]" becomes "arrayVariable[0]" + } + } while( iterator.Next( enterChildren ) ); + + return; + } + } + + // Use reflection algorithm as fallback + SearchVariablesWithReflection( referenceNode ); + } + + // Search through variables of an object with reflection + private void SearchVariablesWithReflection( ReferenceNode referenceNode ) + { + // Get filtered variables for this object + VariableGetterHolder[] variables = GetFilteredVariablesForType( referenceNode.nodeObject.GetType() ); + for( int i = 0; i < variables.Length; i++ ) + { + // When possible, don't search non-serializable variables + if( searchSerializableVariablesOnly && !variables[i].isSerializable ) + continue; + + try + { + object variableValue = variables[i].Get( referenceNode.nodeObject ); + if( variableValue == null || variableValue.Equals( null ) ) + continue; + + // Values stored inside ICollection objects are searched using IEnumerable, + // no need to have duplicate search entries + if( !( variableValue is ICollection ) ) + { + ReferenceNode searchResult = SearchObject( variableValue ); + if( searchResult != null && searchResult != referenceNode ) + referenceNode.AddLinkTo( searchResult, ( variables[i].isProperty ? "Property: " : "Variable: " ) + variables[i].name ); + } + + if( variableValue is IEnumerable && !( variableValue is Transform ) ) + { + // If the field is IEnumerable (possibly an array or collection), search through members of it + // Note that Transform IEnumerable (children of the transform) is not iterated + int index = 0; + foreach( object element in (IEnumerable) variableValue ) + { + ReferenceNode searchResult = SearchObject( element ); + if( searchResult != null && searchResult != referenceNode ) + referenceNode.AddLinkTo( searchResult, string.Concat( variables[i].isProperty ? "Property: " : "Variable: ", variables[i].name, "[", index + "]" ) ); + + index++; + } + } + } + catch( UnassignedReferenceException ) { } + catch( MissingReferenceException ) { } + catch( MissingComponentException ) { } + catch( NotImplementedException ) { } + catch( Exception e ) + { + // Unknown exceptions usually occur when variableValue is an IEnumerable and its enumerator throws an unhandled exception in MoveNext or Current + StringBuilder sb = new StringBuilder( callStack.Count * 50 + 1000 ); + sb.Append( "Skipped searching " ).Append( referenceNode.nodeObject.GetType().FullName ).Append( "." ).Append( variables[i].name ).AppendLine( " because it threw exception:" ).Append( e ).AppendLine(); + + Object latestUnityObjectInCallStack = AppendCallStackToStringBuilder( sb ); + Debug.LogWarning( sb.ToString(), latestUnityObjectInCallStack ); + } + } + } + + // Get filtered variables for a type + private VariableGetterHolder[] GetFilteredVariablesForType( Type type ) + { + VariableGetterHolder[] result; + if( typeToVariables.TryGetValue( type, out result ) ) + return result; + + // This is the first time this type of object is seen, filter and cache its variables + // Variable filtering process: + // 1- skip Obsolete variables + // 2- skip primitive types, enums and strings + // 3- skip common Unity types that can't hold any references (e.g. Vector3, Rect, Color, Quaternion) + // + // P.S. IsIgnoredUnityType() extension function handles steps 2) and 3) + + validVariables.Clear(); + + // Filter the fields + if( fieldModifiers != ( BindingFlags.Instance | BindingFlags.DeclaredOnly ) ) + { + Type currType = type; + while( currType != typeof( object ) ) + { + FieldInfo[] fields = currType.GetFields( fieldModifiers ); + for( int i = 0; i < fields.Length; i++ ) + { + FieldInfo field = fields[i]; + + // Skip obsolete fields + if( Attribute.IsDefined( field, typeof( ObsoleteAttribute ) ) ) + continue; + + // Skip primitive types + if( field.FieldType.IsIgnoredUnityType() ) + continue; + + // Additional filtering for fields: + // 1- Ignore "m_RectTransform", "m_CanvasRenderer" and "m_Canvas" fields of Graphic components + string fieldName = field.Name; + if( typeof( Graphic ).IsAssignableFrom( currType ) && + ( fieldName == "m_RectTransform" || fieldName == "m_CanvasRenderer" || fieldName == "m_Canvas" ) ) + continue; + + VariableGetVal getter = field.CreateGetter( type ); + if( getter != null ) + validVariables.Add( new VariableGetterHolder( field, getter, searchSerializableVariablesOnly ? field.IsSerializable() : true ) ); + } + + currType = currType.BaseType; + } + } + + if( propertyModifiers != ( BindingFlags.Instance | BindingFlags.DeclaredOnly ) ) + { + Type currType = type; + while( currType != typeof( object ) ) + { + PropertyInfo[] properties = currType.GetProperties( propertyModifiers ); + for( int i = 0; i < properties.Length; i++ ) + { + PropertyInfo property = properties[i]; + + // Skip obsolete properties + if( Attribute.IsDefined( property, typeof( ObsoleteAttribute ) ) ) + continue; + + // Skip primitive types + if( property.PropertyType.IsIgnoredUnityType() ) + continue; + + // Skip properties without a getter function + MethodInfo propertyGetter = property.GetGetMethod( true ); + if( propertyGetter == null ) + continue; + + // Skip indexer properties + if( property.GetIndexParameters().Length > 0 ) + continue; + + // No need to check properties with 'override' keyword + if( propertyGetter.GetBaseDefinition().DeclaringType != propertyGetter.DeclaringType ) + continue; + + string propertyName = property.Name; + + // Ignore "gameObject", "transform", "rectTransform" and "attachedRigidbody" properties of components to get more useful results + if( typeof( Component ).IsAssignableFrom( currType ) && ( propertyName == "gameObject" || + propertyName == "transform" || propertyName == "attachedRigidbody" || propertyName == "rectTransform" ) ) + continue; + // Ignore "canvasRenderer" and "canvas" properties of Graphic components to get more useful results + else if( typeof( Graphic ).IsAssignableFrom( currType ) && + ( propertyName == "canvasRenderer" || propertyName == "canvas" ) ) + continue; + // Prevent accessing properties of Unity that instantiate an existing resource (causing memory leak) + else if( typeof( MeshFilter ).IsAssignableFrom( currType ) && propertyName == "mesh" ) + continue; + // Same as above + else if( ( propertyName == "material" || propertyName == "materials" ) && + ( typeof( Renderer ).IsAssignableFrom( currType ) || typeof( Collider ).IsAssignableFrom( currType ) || +#if !UNITY_2019_3_OR_NEWER +#pragma warning disable 0618 + typeof( GUIText ).IsAssignableFrom( currType ) || +#pragma warning restore 0618 +#endif + typeof( Collider2D ).IsAssignableFrom( currType ) ) ) + continue; + // "sharedMaterials" are searched via SearchComponent, no need to search it with reflection, as well + else if( typeof( Renderer ).IsAssignableFrom( currType ) && + ( propertyName == "sharedMaterial" || propertyName == "sharedMaterials" ) ) + continue; + // Ignore "parameters" property of Animator since it doesn't contain any useful data and logs a warning to the console when Animator is inactive + else if( typeof( Animator ).IsAssignableFrom( currType ) && propertyName == "parameters" ) + continue; + // Ignore "spriteAnimator" property of TMP_Text component because this property adds a TMP_SpriteAnimator component to the object if it doesn't exist + else if( propertyName == "spriteAnimator" && currType.Name == "TMP_Text" ) + continue; + // Ignore "meshFilter" property of TextMeshPro and TMP_SubMesh components because this property adds a MeshFilter component to the object if it doesn't exist + else if( propertyName == "meshFilter" && ( currType.Name == "TextMeshPro" || currType.Name == "TMP_SubMesh" ) ) + continue; + else + { + VariableGetVal getter = property.CreateGetter(); + if( getter != null ) + validVariables.Add( new VariableGetterHolder( property, getter, searchSerializableVariablesOnly ? property.IsSerializable() : true ) ); + } + } + + currType = currType.BaseType; + } + } + + result = validVariables.ToArray(); + + // Cache the filtered fields + typeToVariables.Add( type, result ); + + return result; + } + + // Credit: http://answers.unity.com/answers/425602/view.html + // Returns the raw System.Object value of a SerializedProperty + public object GetRawSerializedPropertyValue( SerializedProperty property ) + { + object result = property.serializedObject.targetObject; + string[] path = property.propertyPath.Replace( ".Array.data[", "[" ).Split( '.' ); + for( int i = 0; i < path.Length; i++ ) + { + string pathElement = path[i]; + + int arrayStartIndex = pathElement.IndexOf( '[' ); + if( arrayStartIndex < 0 ) + result = GetFieldValue( result, pathElement ); + else + { + string variableName = pathElement.Substring( 0, arrayStartIndex ); + + int arrayEndIndex = pathElement.IndexOf( ']', arrayStartIndex + 1 ); + int arrayElementIndex = int.Parse( pathElement.Substring( arrayStartIndex + 1, arrayEndIndex - arrayStartIndex - 1 ) ); + result = GetFieldValue( result, variableName, arrayElementIndex ); + } + } + + return result; + } + + // Credit: http://answers.unity.com/answers/425602/view.html + private object GetFieldValue( object source, string fieldName ) + { + if( source == null ) + return null; + + FieldInfo fieldInfo = null; + Type type = source.GetType(); + while( fieldInfo == null && type != typeof( object ) ) + { + fieldInfo = type.GetField( fieldName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly ); + type = type.BaseType; + } + + if( fieldInfo != null ) + return fieldInfo.GetValue( source ); + + PropertyInfo propertyInfo = null; + type = source.GetType(); + while( propertyInfo == null && type != typeof( object ) ) + { + propertyInfo = type.GetProperty( fieldName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.IgnoreCase ); + type = type.BaseType; + } + + if( propertyInfo != null ) + return propertyInfo.GetValue( source, null ); + + if( fieldName.Length > 2 && fieldName.StartsWith( "m_", StringComparison.OrdinalIgnoreCase ) ) + return GetFieldValue( source, fieldName.Substring( 2 ) ); + + return null; + } + + // Credit: http://answers.unity.com/answers/425602/view.html + private object GetFieldValue( object source, string fieldName, int arrayIndex ) + { + IEnumerable enumerable = GetFieldValue( source, fieldName ) as IEnumerable; + if( enumerable == null ) + return null; + + if( enumerable is IList ) + return ( (IList) enumerable )[arrayIndex]; + + IEnumerator enumerator = enumerable.GetEnumerator(); + for( int i = 0; i <= arrayIndex; i++ ) + enumerator.MoveNext(); + + return enumerator.Current; + } + + // Iterates over all occurrences of specific key-value pairs in string + // Example1: #include "VALUE" valuePrefix=#include, valueWrapperChar=" + // Example2: "guid": "VALUE" valuePrefix="guid", valueWrapperChar=" + private void IterateOverValuesInString( string str, string valuePrefix, char valueWrapperChar, Action valueAction ) + { + int valueStartIndex, valueEndIndex = 0; + while( true ) + { + valueStartIndex = str.IndexOf( valuePrefix, valueEndIndex ); + if( valueStartIndex < 0 ) + return; + + valueStartIndex = str.IndexOf( valueWrapperChar, valueStartIndex + valuePrefix.Length ); + if( valueStartIndex < 0 ) + return; + + valueStartIndex++; + valueEndIndex = str.IndexOf( valueWrapperChar, valueStartIndex ); + if( valueEndIndex < 0 ) + return; + + if( valueEndIndex > valueStartIndex ) + valueAction( str.Substring( valueStartIndex, valueEndIndex - valueStartIndex ) ); + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetectorSearchFunctions.cs.meta b/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetectorSearchFunctions.cs.meta new file mode 100644 index 0000000..fc1cd02 --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetectorSearchFunctions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 93aaae685d4c3db44baeb91a0296855e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetectorWindow.cs b/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetectorWindow.cs new file mode 100644 index 0000000..1fb7196 --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetectorWindow.cs @@ -0,0 +1,745 @@ +// Asset Usage Detector - by Suleyman Yasir KULA (yasirkula@gmail.com) + +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using System.Reflection; +using Object = UnityEngine.Object; +#if UNITY_2018_3_OR_NEWER +using PrefabStage = UnityEditor.SceneManagement.PrefabStage; +using PrefabStageUtility = UnityEditor.SceneManagement.PrefabStageUtility; +#endif + +namespace AssetUsageDetectorNamespace +{ + public enum Phase { Setup, Processing, Complete }; + + public class AssetUsageDetectorWindow : EditorWindow + { + private const float PLAY_MODE_REFRESH_INTERVAL = 1f; // Interval to refresh the editor window in play mode + + private const string PREFS_SEARCH_SCENES = "AUD_SceneSearch"; + private const string PREFS_SEARCH_ASSETS = "AUD_AssetsSearch"; + private const string PREFS_SEARCH_PROJECT_SETTINGS = "AUD_ProjectSettingsSearch"; + private const string PREFS_DONT_SEARCH_SOURCE_ASSETS = "AUD_AssetsExcludeSrc"; + private const string PREFS_SEARCH_DEPTH_LIMIT = "AUD_Depth"; + private const string PREFS_SEARCH_FIELDS = "AUD_Fields"; + private const string PREFS_SEARCH_PROPERTIES = "AUD_Properties"; + private const string PREFS_SEARCH_NON_SERIALIZABLES = "AUD_NonSerializables"; + private const string PREFS_LAZY_SCENE_SEARCH = "AUD_LazySceneSearch"; + private const string PREFS_PATH_DRAWING_MODE = "AUD_PathDrawing"; + private const string PREFS_SHOW_PROGRESS = "AUD_Progress"; + private const string PREFS_SHOW_TOOLTIPS = "AUD_Tooltips"; + + private static readonly GUIContent windowTitle = new GUIContent( "Asset Usage Detector" ); + private static readonly Vector2 windowMinSize = new Vector2( 325f, 220f ); + + private AssetUsageDetector core = new AssetUsageDetector(); + private SearchResult searchResult; // Overall search results + + private List objectsToSearch = new List() { new ObjectToSearch( null ) }; + + private Phase currentPhase = Phase.Setup; + + private bool searchInOpenScenes = true; // Scenes currently open in Hierarchy view + private bool searchInScenesInBuild = true; // Scenes in build + private bool searchInScenesInBuildTickedOnly = true; // Scenes in build (ticked only or not) + private bool searchInAllScenes = true; // All scenes (including scenes that are not in build) + private bool searchInAssetsFolder = true; // Assets in Project window + private bool dontSearchInSourceAssets = true; // objectsToSearch won't be searched for internal references + private bool searchInProjectSettings = true; // Player Settings, Graphics Settings etc. + + private List searchInAssetsSubset = new List() { null }; // If not empty, only these assets are searched for references + private List excludedAssets = new List() { null }; // These assets won't be searched for references + private List excludedScenes = new List() { null }; // These scenes won't be searched for references + + private int searchDepthLimit = 4; // Depth limit for recursively searching variables of objects + + private bool restoreInitialSceneSetup = true; // Close the additively loaded scenes that were not part of the initial scene setup + + private string errorMessage = string.Empty; + + private bool lazySceneSearch = false; + private bool searchNonSerializableVariables = true; + private bool noAssetDatabaseChanges = false; + private bool showDetailedProgressBar = false; + + private BindingFlags fieldModifiers, propertyModifiers; + + private SearchResultDrawParameters searchResultDrawParameters = new SearchResultDrawParameters( PathDrawingMode.ShortRelevantParts, false, false ); + + private double nextPlayModeRefreshTime = 0f; + + private readonly ObjectToSearchListDrawer objectsToSearchDrawer = new ObjectToSearchListDrawer(); + private readonly ObjectListDrawer searchInAssetsSubsetDrawer = new ObjectListDrawer( "Search following asset(s) only:", false ); + private readonly ObjectListDrawer excludedAssetsDrawer = new ObjectListDrawer( "Don't search following asset(s):", false ); + private readonly ObjectListDrawer excludedScenesDrawer = new ObjectListDrawer( "Don't search in following scene(s):", false ); + + private readonly GUIContent restoreInitialSceneSetupLabel = new GUIContent( "Restore initial scene setup (Recommended)", "For example, if scene A was open when the search was started and scenes A and B are open after the search is completed, clicking the \"Reset Search\" button will automatically close scene B" ); + private readonly GUIContent showTooltipsLabel = new GUIContent( "Show tooltips", "Display nodes' contents in a tooltip when cursor hovers over them" ); + + private Vector2 scrollPosition = Vector2.zero; + + private bool shouldRepositionSelf; + private Rect windowTargetPosition; + + private static AssetUsageDetectorWindow mainWindow = null; + + // Add "Asset Usage Detector" menu item to the Window menu + [MenuItem( "Window/Asset Usage Detector/Active Window" )] + private static void OpenActiveWindow() + { + if( !mainWindow ) + { + mainWindow = GetWindow(); + mainWindow.titleContent = windowTitle; + mainWindow.minSize = windowMinSize; + } + + mainWindow.Show(); + } + + [MenuItem( "Window/Asset Usage Detector/New Window" )] + private static void OpenNewWindow() + { + Rect? windowTargetPosition = null; + if( mainWindow ) + { + Rect position = mainWindow.position; + position.position += new Vector2( 50f, 50f ); + windowTargetPosition = position; + } + + mainWindow = CreateInstance(); + mainWindow.titleContent = windowTitle; + mainWindow.minSize = windowMinSize; + + if( windowTargetPosition.HasValue ) + { + mainWindow.shouldRepositionSelf = true; + mainWindow.windowTargetPosition = windowTargetPosition.Value; + } + + mainWindow.Show( true ); + } + + // Quickly initiate search for the selected assets + [MenuItem( "GameObject/Search for References/This Object Only", priority = 49 )] + [MenuItem( "Assets/Search for References", priority = 1000 )] + private static void SearchSelectedAssetReferences( MenuCommand command ) + { + // This happens when this button is clicked via hierarchy's right click context menu + // and is called once for each object in the selection. We don't want that, we want + // the function to be called only once + if( command.context ) + { + EditorApplication.update -= CallSearchSelectedAssetReferencesOnce; + EditorApplication.update += CallSearchSelectedAssetReferencesOnce; + } + else + ShowAndSearch( Selection.objects ); + } + + [MenuItem( "GameObject/Search for References/Include Children", priority = 49 )] + private static void SearchSelectedAssetReferencesWithChildren( MenuCommand command ) + { + if( command.context ) + { + EditorApplication.update -= CallSearchSelectedAssetReferencesWithChildrenOnce; + EditorApplication.update += CallSearchSelectedAssetReferencesWithChildrenOnce; + } + else + ShowAndSearch( Selection.objects, true ); + } + + // Show the menu item only if there is a selection in the Editor + [MenuItem( "GameObject/Search for References/This Object Only", validate = true )] + [MenuItem( "GameObject/Search for References/Include Children", validate = true )] + [MenuItem( "Assets/Search for References", validate = true )] + private static bool SearchSelectedAssetReferencesValidate( MenuCommand command ) + { + return Selection.objects.Length > 0; + } + + // Quickly show the AssetUsageDetector window and initiate a search + public static void ShowAndSearch( IEnumerable searchObjects, bool? shouldSearchChildren = null ) + { + ShowAndSearchInternal( searchObjects, null, shouldSearchChildren ); + } + + // Quickly show the AssetUsageDetector window and initiate a search + public static void ShowAndSearch( AssetUsageDetector.Parameters searchParameters, bool? shouldSearchChildren = null ) + { + if( searchParameters == null ) + { + Debug.LogError( "searchParameters can't be null!" ); + return; + } + + ShowAndSearchInternal( searchParameters.objectsToSearch, searchParameters, shouldSearchChildren ); + } + + private static void CallSearchSelectedAssetReferencesOnce() + { + EditorApplication.update -= CallSearchSelectedAssetReferencesOnce; + SearchSelectedAssetReferences( new MenuCommand( null ) ); + } + + private static void CallSearchSelectedAssetReferencesWithChildrenOnce() + { + EditorApplication.update -= CallSearchSelectedAssetReferencesWithChildrenOnce; + SearchSelectedAssetReferencesWithChildren( new MenuCommand( null ) ); + } + + private static void ShowAndSearchInternal( IEnumerable searchObjects, AssetUsageDetector.Parameters searchParameters, bool? shouldSearchChildren ) + { + if( mainWindow != null && !mainWindow.ReturnToSetupPhase( true, true ) ) + { + Debug.LogError( "Need to reset the previous search first!" ); + return; + } + + OpenActiveWindow(); + + mainWindow.objectsToSearch.Clear(); + if( searchObjects != null ) + { + foreach( Object obj in searchObjects ) + mainWindow.objectsToSearch.Add( new ObjectToSearch( obj, shouldSearchChildren ) ); + } + + if( searchParameters != null ) + { + mainWindow.ParseSceneSearchMode( searchParameters.searchInScenes ); + mainWindow.searchInAssetsFolder = searchParameters.searchInAssetsFolder; + mainWindow.dontSearchInSourceAssets = searchParameters.dontSearchInSourceAssets; + mainWindow.searchInProjectSettings = searchParameters.searchInProjectSettings; + mainWindow.searchDepthLimit = searchParameters.searchDepthLimit; + mainWindow.fieldModifiers = searchParameters.fieldModifiers; + mainWindow.propertyModifiers = searchParameters.propertyModifiers; + mainWindow.searchNonSerializableVariables = searchParameters.searchNonSerializableVariables; + mainWindow.lazySceneSearch = searchParameters.lazySceneSearch; + mainWindow.noAssetDatabaseChanges = searchParameters.noAssetDatabaseChanges; + mainWindow.showDetailedProgressBar = searchParameters.showDetailedProgressBar; + + mainWindow.searchInAssetsSubset.Clear(); + if( searchParameters.searchInAssetsSubset != null ) + { + foreach( Object obj in searchParameters.searchInAssetsSubset ) + mainWindow.searchInAssetsSubset.Add( obj ); + } + + mainWindow.excludedAssets.Clear(); + if( searchParameters.excludedAssetsFromSearch != null ) + { + foreach( Object obj in searchParameters.excludedAssetsFromSearch ) + mainWindow.excludedAssets.Add( obj ); + } + + mainWindow.excludedScenes.Clear(); + if( searchParameters.excludedScenesFromSearch != null ) + { + foreach( Object obj in searchParameters.excludedScenesFromSearch ) + mainWindow.excludedScenes.Add( obj ); + } + } + + mainWindow.InitiateSearch(); + mainWindow.Repaint(); + } + + private void Awake() + { + LoadPrefs(); + } + + private void OnEnable() + { + mainWindow = this; + +#if UNITY_2018_3_OR_NEWER + PrefabStage.prefabStageClosing -= ReplacePrefabStageObjectsWithAssets; + PrefabStage.prefabStageClosing += ReplacePrefabStageObjectsWithAssets; +#endif + } + + private void OnDisable() + { +#if UNITY_2018_3_OR_NEWER + PrefabStage.prefabStageClosing -= ReplacePrefabStageObjectsWithAssets; +#endif + + if( mainWindow == this ) + mainWindow = null; + } + + private void OnDestroy() + { + if( core != null ) + core.SaveCache(); + + SavePrefs(); + + if( searchResult != null && currentPhase == Phase.Complete ) + searchResult.RestoreInitialSceneSetup( true ); + } + + private void OnFocus() + { + mainWindow = this; + } + + private void SavePrefs() + { + EditorPrefs.SetInt( PREFS_SEARCH_SCENES, (int) GetSceneSearchMode( false ) ); + EditorPrefs.SetBool( PREFS_SEARCH_ASSETS, searchInAssetsFolder ); + EditorPrefs.SetBool( PREFS_DONT_SEARCH_SOURCE_ASSETS, dontSearchInSourceAssets ); + EditorPrefs.SetBool( PREFS_SEARCH_PROJECT_SETTINGS, searchInProjectSettings ); + EditorPrefs.SetInt( PREFS_SEARCH_DEPTH_LIMIT, searchDepthLimit ); + EditorPrefs.SetInt( PREFS_SEARCH_FIELDS, (int) fieldModifiers ); + EditorPrefs.SetInt( PREFS_SEARCH_PROPERTIES, (int) propertyModifiers ); + EditorPrefs.SetInt( PREFS_PATH_DRAWING_MODE, (int) searchResultDrawParameters.pathDrawingMode ); + EditorPrefs.SetBool( PREFS_SEARCH_NON_SERIALIZABLES, searchNonSerializableVariables ); + EditorPrefs.SetBool( PREFS_LAZY_SCENE_SEARCH, lazySceneSearch ); + EditorPrefs.SetBool( PREFS_SHOW_TOOLTIPS, searchResultDrawParameters.showTooltips ); + EditorPrefs.SetBool( PREFS_SHOW_PROGRESS, showDetailedProgressBar ); + } + + private void LoadPrefs() + { + ParseSceneSearchMode( (SceneSearchMode) EditorPrefs.GetInt( PREFS_SEARCH_SCENES, (int) ( SceneSearchMode.OpenScenes | SceneSearchMode.ScenesInBuildSettingsTickedOnly | SceneSearchMode.AllScenes ) ) ); + + searchInAssetsFolder = EditorPrefs.GetBool( PREFS_SEARCH_ASSETS, true ); + dontSearchInSourceAssets = EditorPrefs.GetBool( PREFS_DONT_SEARCH_SOURCE_ASSETS, true ); + searchInProjectSettings = EditorPrefs.GetBool( PREFS_SEARCH_PROJECT_SETTINGS, true ); + searchDepthLimit = EditorPrefs.GetInt( PREFS_SEARCH_DEPTH_LIMIT, 4 ); + + // Fetch public, protected and private non-static fields and properties from objects by default + fieldModifiers = (BindingFlags) EditorPrefs.GetInt( PREFS_SEARCH_FIELDS, (int) ( BindingFlags.Public | BindingFlags.NonPublic ) ); + propertyModifiers = (BindingFlags) EditorPrefs.GetInt( PREFS_SEARCH_PROPERTIES, (int) ( BindingFlags.Public | BindingFlags.NonPublic ) ); + + try + { + searchResultDrawParameters.pathDrawingMode = (PathDrawingMode) EditorPrefs.GetInt( PREFS_PATH_DRAWING_MODE, (int) PathDrawingMode.ShortRelevantParts ); + } + catch + { + searchResultDrawParameters.pathDrawingMode = PathDrawingMode.ShortRelevantParts; + } + + searchNonSerializableVariables = EditorPrefs.GetBool( PREFS_SEARCH_NON_SERIALIZABLES, true ); + lazySceneSearch = EditorPrefs.GetBool( PREFS_LAZY_SCENE_SEARCH, false ); + searchResultDrawParameters.showTooltips = EditorPrefs.GetBool( PREFS_SHOW_TOOLTIPS, false ); + showDetailedProgressBar = EditorPrefs.GetBool( PREFS_SHOW_PROGRESS, false ); + } + + private SceneSearchMode GetSceneSearchMode( bool hideOptionsInPlayMode ) + { + SceneSearchMode sceneSearchMode = SceneSearchMode.None; + if( searchInOpenScenes ) + sceneSearchMode |= SceneSearchMode.OpenScenes; + if( !hideOptionsInPlayMode || !EditorApplication.isPlaying ) + { + if( searchInScenesInBuild ) + sceneSearchMode |= searchInScenesInBuildTickedOnly ? SceneSearchMode.ScenesInBuildSettingsTickedOnly : SceneSearchMode.ScenesInBuildSettingsAll; + if( searchInAllScenes ) + sceneSearchMode |= SceneSearchMode.AllScenes; + } + + return sceneSearchMode; + } + + private void ParseSceneSearchMode( SceneSearchMode sceneSearchMode ) + { + searchInOpenScenes = ( sceneSearchMode & SceneSearchMode.OpenScenes ) == SceneSearchMode.OpenScenes; + searchInScenesInBuild = ( sceneSearchMode & SceneSearchMode.ScenesInBuildSettingsAll ) == SceneSearchMode.ScenesInBuildSettingsAll || ( sceneSearchMode & SceneSearchMode.ScenesInBuildSettingsTickedOnly ) == SceneSearchMode.ScenesInBuildSettingsTickedOnly; + searchInScenesInBuildTickedOnly = ( sceneSearchMode & SceneSearchMode.ScenesInBuildSettingsAll ) != SceneSearchMode.ScenesInBuildSettingsAll; + searchInAllScenes = ( sceneSearchMode & SceneSearchMode.AllScenes ) == SceneSearchMode.AllScenes; + } + + private void Update() + { + // Refresh the window at a regular interval in play mode to update the tooltip + if( EditorApplication.isPlaying && currentPhase == Phase.Complete && searchResultDrawParameters.showTooltips && EditorApplication.timeSinceStartup >= nextPlayModeRefreshTime ) + { + nextPlayModeRefreshTime = EditorApplication.timeSinceStartup + PLAY_MODE_REFRESH_INTERVAL; ; + Repaint(); + } + + if( shouldRepositionSelf ) + { + shouldRepositionSelf = false; + position = windowTargetPosition; + } + } + + private void OnGUI() + { + // Make the window scrollable + scrollPosition = EditorGUILayout.BeginScrollView( scrollPosition, Utilities.GL_EXPAND_WIDTH, Utilities.GL_EXPAND_HEIGHT ); + + GUILayout.BeginVertical(); + + GUILayout.Space( 10 ); + + // Show the error message, if it is not empty + if( errorMessage.Length > 0 ) + EditorGUILayout.HelpBox( errorMessage, MessageType.Error ); + + GUILayout.Space( 10 ); + + if( currentPhase == Phase.Processing ) + { + // If we are stuck at this phase, then we have encountered an exception + GUILayout.Label( ". . . Search in progress or something went wrong (check console) . . ." ); + + restoreInitialSceneSetup = EditorGUILayout.ToggleLeft( restoreInitialSceneSetupLabel, restoreInitialSceneSetup ); + + if( GUILayout.Button( "RETURN", Utilities.GL_HEIGHT_30 ) ) + ReturnToSetupPhase( restoreInitialSceneSetup, false ); + } + else if( currentPhase == Phase.Setup ) + { + if( objectsToSearchDrawer.Draw( objectsToSearch ) ) + errorMessage = string.Empty; + + GUILayout.Space( 10 ); + + Color c = GUI.backgroundColor; + GUI.backgroundColor = Color.cyan; + GUILayout.Box( "SEARCH IN", Utilities.BoxGUIStyle, Utilities.GL_EXPAND_WIDTH ); + GUI.backgroundColor = c; + + searchInAssetsFolder = EditorGUILayout.ToggleLeft( "Project window (Assets folder)", searchInAssetsFolder ); + + if( searchInAssetsFolder ) + { + GUILayout.BeginHorizontal(); + GUILayout.Space( 35 ); + GUILayout.BeginVertical(); + + searchInAssetsSubsetDrawer.Draw( searchInAssetsSubset ); + excludedAssetsDrawer.Draw( excludedAssets ); + + dontSearchInSourceAssets = EditorGUILayout.ToggleLeft( "Don't search \"Find references of\" themselves for references", dontSearchInSourceAssets ); + + GUILayout.EndVertical(); + GUILayout.EndHorizontal(); + } + + Utilities.DrawSeparatorLine(); + + if( searchInAllScenes && !EditorApplication.isPlaying ) + GUI.enabled = false; + + searchInOpenScenes = EditorGUILayout.ToggleLeft( "Currently open (loaded) scene(s)", searchInOpenScenes ); + + if( !EditorApplication.isPlaying ) + { + searchInScenesInBuild = EditorGUILayout.ToggleLeft( "Scenes in Build Settings", searchInScenesInBuild ); + + if( searchInScenesInBuild ) + { + GUILayout.BeginHorizontal(); + GUILayout.Space( 35 ); + + searchInScenesInBuildTickedOnly = EditorGUILayout.ToggleLeft( "Ticked only", searchInScenesInBuildTickedOnly, Utilities.GL_WIDTH_100 ); + searchInScenesInBuildTickedOnly = !EditorGUILayout.ToggleLeft( "All", !searchInScenesInBuildTickedOnly, Utilities.GL_WIDTH_100 ); + + GUILayout.EndHorizontal(); + } + + GUI.enabled = true; + + searchInAllScenes = EditorGUILayout.ToggleLeft( "All scenes in the project", searchInAllScenes ); + } + + GUILayout.BeginHorizontal(); + GUILayout.Space( 35 ); + GUILayout.BeginVertical(); + + excludedScenesDrawer.Draw( excludedScenes ); + + GUILayout.EndVertical(); + GUILayout.EndHorizontal(); + + Utilities.DrawSeparatorLine(); + + searchInProjectSettings = EditorGUILayout.ToggleLeft( "Project Settings (Player Settings, Graphics Settings etc.)", searchInProjectSettings ); + + GUILayout.Space( 10 ); + + //GUILayout.Box( "SEARCH SETTINGS", Utilities.BoxGUIStyle, Utilities.GL_EXPAND_WIDTH ); + + //GUILayout.BeginHorizontal(); + + //GUILayout.Label( new GUIContent( "> Search depth: " + searchDepthLimit, "Depth limit for recursively searching variables of objects" ), Utilities.GL_WIDTH_250 ); + + //searchDepthLimit = (int) GUILayout.HorizontalSlider( searchDepthLimit, 0, 4 ); + + //GUILayout.EndHorizontal(); + + //GUILayout.Label( "> Search variables:" ); + + //GUILayout.BeginHorizontal(); + + //GUILayout.Space( 35 ); + + //if( EditorGUILayout.ToggleLeft( "Public", ( fieldModifiers & BindingFlags.Public ) == BindingFlags.Public, Utilities.GL_WIDTH_100 ) ) + // fieldModifiers |= BindingFlags.Public; + //else + // fieldModifiers &= ~BindingFlags.Public; + + //if( EditorGUILayout.ToggleLeft( "Non-public", ( fieldModifiers & BindingFlags.NonPublic ) == BindingFlags.NonPublic, Utilities.GL_WIDTH_100 ) ) + // fieldModifiers |= BindingFlags.NonPublic; + //else + // fieldModifiers &= ~BindingFlags.NonPublic; + + //GUILayout.EndHorizontal(); + + //GUILayout.Label( "> Search properties:" ); + + //GUILayout.BeginHorizontal(); + + //GUILayout.Space( 35 ); + + //if( EditorGUILayout.ToggleLeft( "Public", ( propertyModifiers & BindingFlags.Public ) == BindingFlags.Public, Utilities.GL_WIDTH_100 ) ) + // propertyModifiers |= BindingFlags.Public; + //else + // propertyModifiers &= ~BindingFlags.Public; + + //if( EditorGUILayout.ToggleLeft( "Non-public", ( propertyModifiers & BindingFlags.NonPublic ) == BindingFlags.NonPublic, Utilities.GL_WIDTH_100 ) ) + // propertyModifiers |= BindingFlags.NonPublic; + //else + // propertyModifiers &= ~BindingFlags.NonPublic; + + //GUILayout.EndHorizontal(); + + //GUILayout.Space( 10 ); + + //searchNonSerializableVariables = EditorGUILayout.ToggleLeft( "Search non-serializable fields and properties", searchNonSerializableVariables ); + + //GUILayout.Space( 10 ); + + GUI.backgroundColor = Color.cyan; + GUILayout.Box( "SETTINGS", Utilities.BoxGUIStyle, Utilities.GL_EXPAND_WIDTH ); + GUI.backgroundColor = c; + + lazySceneSearch = EditorGUILayout.ToggleLeft( "Lazy scene search: scenes are searched in detail only when they are manually refreshed (faster search)", lazySceneSearch ); + noAssetDatabaseChanges = EditorGUILayout.ToggleLeft( "I haven't modified any assets/scenes since the last search (faster search)", noAssetDatabaseChanges ); + showDetailedProgressBar = EditorGUILayout.ToggleLeft( "Show detailed progress bar (slower search)", showDetailedProgressBar ); + + GUILayout.Space( 10 ); + + // Don't let the user press the GO button without any valid search location + if( !searchInAllScenes && !searchInOpenScenes && !searchInScenesInBuild && !searchInAssetsFolder && !searchInProjectSettings ) + GUI.enabled = false; + + if( GUILayout.Button( "GO!", Utilities.GL_HEIGHT_30 ) ) + { + InitiateSearch(); + GUIUtility.ExitGUI(); + } + } + else if( currentPhase == Phase.Complete ) + { + // Draw the results of the search + GUI.enabled = false; + + objectsToSearchDrawer.Draw( objectsToSearch ); + + GUILayout.Space( 10 ); + GUI.enabled = true; + + restoreInitialSceneSetup = EditorGUILayout.ToggleLeft( restoreInitialSceneSetupLabel, restoreInitialSceneSetup ); + + if( GUILayout.Button( "Reset Search", Utilities.GL_HEIGHT_30 ) ) + ReturnToSetupPhase( restoreInitialSceneSetup, false ); + + if( searchResult == null ) + { + EditorGUILayout.HelpBox( "ERROR: searchResult is null", MessageType.Error ); + return; + } + else if( !searchResult.SearchCompletedSuccessfully ) + EditorGUILayout.HelpBox( "ERROR: search was interrupted, check the logs for more info", MessageType.Error ); + + Color c = GUI.backgroundColor; + GUI.backgroundColor = Color.green; + GUILayout.Box( "Don't forget to save scene(s) if you made any changes!", Utilities.BoxGUIStyle, Utilities.GL_EXPAND_WIDTH ); + GUI.backgroundColor = c; + + if( searchResult.NumberOfGroups == 0 ) + { + GUILayout.Space( 10 ); + GUILayout.Box( "No references found...", Utilities.BoxGUIStyle, Utilities.GL_EXPAND_WIDTH ); + } + else + { + //GUILayout.Space( 10 ); + //GUILayout.BeginHorizontal(); + + //// Select all the references after filtering them (select only the GameObject's) + //if( GUILayout.Button( "Select All\n(GameObject-wise)", Utilities.GL_HEIGHT_35 ) ) + //{ + // GameObject[] objects = searchResult.SelectAllAsGameObjects(); + // if( objects != null && objects.Length > 0 ) + // Selection.objects = objects; + //} + + //// Select all the references without filtering them + //if( GUILayout.Button( "Select All\n(Object-wise)", Utilities.GL_HEIGHT_35 ) ) + //{ + // Object[] objects = searchResult.SelectAllAsObjects(); + // if( objects != null && objects.Length > 0 ) + // Selection.objects = objects; + //} + + //GUILayout.EndHorizontal(); + + //GUILayout.Space( 10 ); + + searchResultDrawParameters.showTooltips = EditorGUILayout.ToggleLeft( showTooltipsLabel, searchResultDrawParameters.showTooltips ); + noAssetDatabaseChanges = EditorGUILayout.ToggleLeft( "I haven't modified any assets/scenes since the last search (faster Refresh)", noAssetDatabaseChanges ); + searchResultDrawParameters.noAssetDatabaseChanges = noAssetDatabaseChanges; + + Utilities.DrawSeparatorLine(); + + GUILayout.Label( "Path drawing mode:" ); + + GUILayout.BeginHorizontal(); + + GUILayout.Space( 35 ); + + if( EditorGUILayout.ToggleLeft( "Full: Draw the complete paths to the references", searchResultDrawParameters.pathDrawingMode == PathDrawingMode.Full ) ) + searchResultDrawParameters.pathDrawingMode = PathDrawingMode.Full; + + GUILayout.EndHorizontal(); + + GUILayout.BeginHorizontal(); + + GUILayout.Space( 35 ); + + if( EditorGUILayout.ToggleLeft( "Shorter: Draw only the most relevant parts (that start with a UnityEngine.Object) of the complete paths", searchResultDrawParameters.pathDrawingMode == PathDrawingMode.ShortRelevantParts ) ) + searchResultDrawParameters.pathDrawingMode = PathDrawingMode.ShortRelevantParts; + + GUILayout.EndHorizontal(); + + GUILayout.BeginHorizontal(); + + GUILayout.Space( 35 ); + + if( EditorGUILayout.ToggleLeft( "Shortest: Draw only the last two nodes of the complete paths", searchResultDrawParameters.pathDrawingMode == PathDrawingMode.Shortest ) ) + searchResultDrawParameters.pathDrawingMode = PathDrawingMode.Shortest; + + GUILayout.EndHorizontal(); + + searchResult.DrawOnGUI( searchResultDrawParameters ); + } + } + + GUILayout.Space( 10 ); + + GUILayout.EndVertical(); + + EditorGUILayout.EndScrollView(); + } + + private void InitiateSearch() + { + if( objectsToSearch.IsEmpty() ) + errorMessage = "ADD AN ASSET TO THE LIST FIRST!"; + else if( !EditorApplication.isPlaying && !Utilities.AreScenesSaved() ) + { + // Don't start the search if at least one scene is currently dirty (not saved) + errorMessage = "SAVE OPEN SCENES FIRST!"; + } + else + { + errorMessage = string.Empty; + currentPhase = Phase.Processing; + + SavePrefs(); + +#if UNITY_2018_3_OR_NEWER + ReplacePrefabStageObjectsWithAssets( PrefabStageUtility.GetCurrentPrefabStage() ); +#endif + + // Start searching + searchResult = core.Run( new AssetUsageDetector.Parameters() + { + objectsToSearch = new ObjectToSearchEnumerator( objectsToSearch ).ToArray(), + searchInScenes = GetSceneSearchMode( true ), + searchInAssetsFolder = searchInAssetsFolder, + searchInAssetsSubset = !searchInAssetsSubset.IsEmpty() ? searchInAssetsSubset.ToArray() : null, + excludedAssetsFromSearch = !excludedAssets.IsEmpty() ? excludedAssets.ToArray() : null, + dontSearchInSourceAssets = dontSearchInSourceAssets, + excludedScenesFromSearch = !excludedScenes.IsEmpty() ? excludedScenes.ToArray() : null, + searchInProjectSettings = searchInProjectSettings, + //fieldModifiers = fieldModifiers, + //propertyModifiers = propertyModifiers, + //searchDepthLimit = searchDepthLimit, + //searchNonSerializableVariables = searchNonSerializableVariables, + lazySceneSearch = lazySceneSearch, + noAssetDatabaseChanges = noAssetDatabaseChanges, + showDetailedProgressBar = showDetailedProgressBar + } ); + + currentPhase = Phase.Complete; + } + } + +#if UNITY_2018_3_OR_NEWER + // Try replacing searched objects who are part of currently open prefab stage with their corresponding prefab assets + public void ReplacePrefabStageObjectsWithAssets( PrefabStage prefabStage ) + { + if( prefabStage == null || !prefabStage.stageHandle.IsValid() ) + return; + +#if UNITY_2020_1_OR_NEWER + GameObject prefabAsset = AssetDatabase.LoadAssetAtPath( prefabStage.assetPath ); +#else + GameObject prefabAsset = AssetDatabase.LoadAssetAtPath( prefabStage.prefabAssetPath ); +#endif + if( prefabAsset == null || prefabAsset.Equals( null ) ) + return; + + for( int i = 0; i < objectsToSearch.Count; i++ ) + { + Object obj = objectsToSearch[i].obj; + if( obj != null && !obj.Equals( null ) && obj is GameObject && prefabStage.IsPartOfPrefabContents( (GameObject) obj ) ) + { + GameObject prefabStageObjectSource = ( (GameObject) obj ).FollowSymmetricHierarchy( prefabStage.prefabContentsRoot, prefabAsset ); + if( prefabStageObjectSource != null ) + objectsToSearch[i].obj = prefabStageObjectSource; + + List subAssets = objectsToSearch[i].subAssets; + for( int j = 0; j < subAssets.Count; j++ ) + { + obj = subAssets[j].subAsset; + if( obj != null && !obj.Equals( null ) && obj is GameObject && prefabStage.IsPartOfPrefabContents( (GameObject) obj ) ) + { + prefabStageObjectSource = ( (GameObject) obj ).FollowSymmetricHierarchy( prefabStage.prefabContentsRoot, prefabAsset ); + if( prefabStageObjectSource != null ) + subAssets[j].subAsset = prefabStageObjectSource; + } + } + } + } + } +#endif + + private bool ReturnToSetupPhase( bool restoreInitialSceneSetup, bool sceneSetupRestorationIsOptional ) + { + if( searchResult != null && restoreInitialSceneSetup && !EditorApplication.isPlaying && !searchResult.RestoreInitialSceneSetup( sceneSetupRestorationIsOptional ) ) + return false; + + searchResult = null; + + errorMessage = string.Empty; + currentPhase = Phase.Setup; + + return true; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetectorWindow.cs.meta b/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetectorWindow.cs.meta new file mode 100644 index 0000000..95c1c9f --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor/AssetUsageDetectorWindow.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 271a22c69c3d96c4dbdd04cca415a840 +timeCreated: 1520032279 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/AssetUsageDetector/Editor/Enumerators.cs b/Assets/Plugins/AssetUsageDetector/Editor/Enumerators.cs new file mode 100644 index 0000000..2280128 --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor/Enumerators.cs @@ -0,0 +1,130 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace AssetUsageDetectorNamespace +{ + public class EmptyEnumerator : IEnumerable, IEnumerator + { + public T Current { get { return default( T ); } } + object IEnumerator.Current { get { return Current; } } + + public void Dispose() { } + public void Reset() { } + + public bool MoveNext() + { + return false; + } + + public IEnumerator GetEnumerator() + { + return this; + } + + IEnumerator IEnumerable.GetEnumerator() + { + return this; + } + } + + public class ObjectToSearchEnumerator : IEnumerable + { + public class Enumerator : IEnumerator + { + public Object Current + { + get + { + if( subAssetIndex < 0 ) + return source[index].obj; + + return source[index].subAssets[subAssetIndex].subAsset; + } + } + + object IEnumerator.Current { get { return Current; } } + + private List source; + private int index; + private int subAssetIndex; + + public Enumerator( List source ) + { + this.source = source; + Reset(); + } + + public void Dispose() + { + source = null; + } + + public bool MoveNext() + { + if( subAssetIndex < -1 ) + { + subAssetIndex = -1; + + if( ++index >= source.Count ) + return false; + + // Skip folder assets in the enumeration, AssetUsageDetector expands encountered folders automatically + // and we don't want that to happen as source[index].subAssets already contains the folder's contents + if( !source[index].obj.IsFolder() ) + return true; + } + + List subAssets = source[index].subAssets; + if( subAssets != null ) + { + while( ++subAssetIndex < subAssets.Count && !subAssets[subAssetIndex].shouldSearch ) + continue; + + if( subAssetIndex < subAssets.Count ) + return true; + } + + subAssetIndex = -2; + return MoveNext(); + } + + public void Reset() + { + index = -1; + subAssetIndex = -2; + } + } + + private readonly List source; + + public ObjectToSearchEnumerator( List source ) + { + this.source = source; + } + + public IEnumerator GetEnumerator() + { + return new Enumerator( source ); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + public Object[] ToArray() + { + int count = 0; + foreach( Object obj in this ) + count++; + + Object[] result = new Object[count]; + int index = 0; + foreach( Object obj in this ) + result[index++] = obj; + + return result; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/AssetUsageDetector/Editor/Enumerators.cs.meta b/Assets/Plugins/AssetUsageDetector/Editor/Enumerators.cs.meta new file mode 100644 index 0000000..498a808 --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor/Enumerators.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 894047c47ce45cf40939dae24afcc72b +timeCreated: 1562079461 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/AssetUsageDetector/Editor/ListDrawer.cs b/Assets/Plugins/AssetUsageDetector/Editor/ListDrawer.cs new file mode 100644 index 0000000..697706f --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor/ListDrawer.cs @@ -0,0 +1,241 @@ +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +namespace AssetUsageDetectorNamespace +{ + public abstract class ListDrawer + { + private readonly string label; + private readonly bool acceptSceneObjects; + + protected ListDrawer( string label, bool acceptSceneObjects ) + { + this.label = label; + this.acceptSceneObjects = acceptSceneObjects; + } + + // Exposes a list on GUI + public bool Draw( List list ) + { + bool hasChanged = false; + bool guiEnabled = GUI.enabled; + + Event ev = Event.current; + + GUILayout.BeginHorizontal(); + + GUILayout.Label( label ); + + if( guiEnabled ) + { + // Handle drag & drop references to array + // Credit: https://answers.unity.com/answers/657877/view.html + if( ( ev.type == EventType.DragPerform || ev.type == EventType.DragUpdated ) && + GUILayoutUtility.GetLastRect().Contains( ev.mousePosition ) ) + { + DragAndDrop.visualMode = DragAndDropVisualMode.Copy; + if( ev.type == EventType.DragPerform ) + { + DragAndDrop.AcceptDrag(); + + Object[] draggedObjects = DragAndDrop.objectReferences; + if( draggedObjects.Length > 0 ) + { + for( int i = 0; i < draggedObjects.Length; i++ ) + { + if( draggedObjects[i] != null && !draggedObjects[i].Equals( null ) ) + { + bool replacedNullElement = false; + for( int j = 0; j < list.Count; j++ ) + { + if( IsElementNull( list[j] ) ) + { + list[j] = CreateElement( draggedObjects[i] ); + + replacedNullElement = true; + break; + } + } + + if( !replacedNullElement ) + list.Add( CreateElement( draggedObjects[i] ) ); + + hasChanged = true; + } + } + } + } + + ev.Use(); + } + + if( GUILayout.Button( "+", Utilities.GL_WIDTH_25 ) ) + list.Insert( 0, CreateElement( null ) ); + } + + GUILayout.EndHorizontal(); + + for( int i = 0; i < list.Count; i++ ) + { + T element = list[i]; + + GUI.changed = false; + GUILayout.BeginHorizontal(); + + Object prevObject = GetObjectFromElement( element ); + Object newObject = EditorGUILayout.ObjectField( "", prevObject, typeof( Object ), acceptSceneObjects ); + + if( GUI.changed && prevObject != newObject ) + { + hasChanged = true; + SetObjectOfElement( list, i, newObject ); + } + + if( guiEnabled ) + { + if( GUILayout.Button( "+", Utilities.GL_WIDTH_25 ) ) + list.Insert( i + 1, CreateElement( null ) ); + + if( GUILayout.Button( "-", Utilities.GL_WIDTH_25 ) ) + { + if( element != null && !element.Equals( null ) ) + hasChanged = true; + + // Lists with no elements look ugly, always keep a dummy null variable + if( list.Count > 1 ) + list.RemoveAt( i-- ); + else + list[0] = CreateElement( null ); + } + } + + GUILayout.EndHorizontal(); + + PostElementDrawer( element ); + } + + return hasChanged; + } + + protected abstract T CreateElement( Object source ); + protected abstract Object GetObjectFromElement( T element ); + protected abstract void SetObjectOfElement( List list, int index, Object value ); + protected abstract bool IsElementNull( T element ); + protected abstract void PostElementDrawer( T element ); + } + + public class ObjectListDrawer : ListDrawer + { + public ObjectListDrawer( string label, bool acceptSceneObjects ) : base( label, acceptSceneObjects ) + { + } + + protected override Object CreateElement( Object source ) + { + return source; + } + + protected override Object GetObjectFromElement( Object element ) + { + return element; + } + + protected override void SetObjectOfElement( List list, int index, Object value ) + { + list[index] = value; + } + + protected override bool IsElementNull( Object element ) + { + return element == null || element.Equals( null ); + } + + protected override void PostElementDrawer( Object element ) + { + } + } + + public class ObjectToSearchListDrawer : ListDrawer + { + public ObjectToSearchListDrawer() : base( "Find references of:", true ) + { + } + + protected override ObjectToSearch CreateElement( Object source ) + { + return new ObjectToSearch( source ); + } + + protected override Object GetObjectFromElement( ObjectToSearch element ) + { + return element.obj; + } + + protected override void SetObjectOfElement( List list, int index, Object value ) + { + list[index].obj = value; + list[index].RefreshSubAssets(); + } + + protected override bool IsElementNull( ObjectToSearch element ) + { + return element == null || element.obj == null || element.obj.Equals( null ); + } + + protected override void PostElementDrawer( ObjectToSearch element ) + { + List subAssetsToSearch = element.subAssets; + if( subAssetsToSearch.Count > 0 ) + { + GUILayout.BeginHorizontal(); + + // 0-> all toggles off, 1-> mixed, 2-> all toggles on + bool toggleAllSubAssets = subAssetsToSearch[0].shouldSearch; + bool mixedToggle = false; + for( int j = 1; j < subAssetsToSearch.Count; j++ ) + { + if( subAssetsToSearch[j].shouldSearch != toggleAllSubAssets ) + { + mixedToggle = true; + break; + } + } + + if( mixedToggle ) + EditorGUI.showMixedValue = true; + + GUI.changed = false; + toggleAllSubAssets = EditorGUILayout.Toggle( toggleAllSubAssets, Utilities.GL_WIDTH_25 ); + if( GUI.changed ) + { + for( int j = 0; j < subAssetsToSearch.Count; j++ ) + subAssetsToSearch[j].shouldSearch = toggleAllSubAssets; + } + + EditorGUI.showMixedValue = false; + + element.showSubAssetsFoldout = EditorGUILayout.Foldout( element.showSubAssetsFoldout, "Include sub-assets in search:", true ); + + GUILayout.EndHorizontal(); + + if( element.showSubAssetsFoldout ) + { + for( int j = 0; j < subAssetsToSearch.Count; j++ ) + { + GUILayout.BeginHorizontal(); + + subAssetsToSearch[j].shouldSearch = EditorGUILayout.Toggle( subAssetsToSearch[j].shouldSearch, Utilities.GL_WIDTH_25 ); + + bool guiEnabled = GUI.enabled; + GUI.enabled = false; + EditorGUILayout.ObjectField( string.Empty, subAssetsToSearch[j].subAsset, typeof( Object ), true ); + GUI.enabled = guiEnabled; + + GUILayout.EndHorizontal(); + } + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/AssetUsageDetector/Editor/ListDrawer.cs.meta b/Assets/Plugins/AssetUsageDetector/Editor/ListDrawer.cs.meta new file mode 100644 index 0000000..555a369 --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor/ListDrawer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 88a4a4e861026b2498a437ce1e12b054 +timeCreated: 1568758673 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/AssetUsageDetector/Editor/ObjectToSearch.cs b/Assets/Plugins/AssetUsageDetector/Editor/ObjectToSearch.cs new file mode 100644 index 0000000..62f1160 --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor/ObjectToSearch.cs @@ -0,0 +1,154 @@ +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using Object = UnityEngine.Object; + +namespace AssetUsageDetectorNamespace +{ + [Serializable] + public class ObjectToSearch + { + [Serializable] + public class SubAsset + { + public Object subAsset; + public bool shouldSearch; + + public SubAsset( Object subAsset, bool shouldSearch ) + { + this.subAsset = subAsset; + this.shouldSearch = shouldSearch; + } + } + + public Object obj; + public List subAssets; + public bool showSubAssetsFoldout; + + private static MonoScript[] monoScriptsInProject; + private static HashSet currentSubAssets; + + public ObjectToSearch( Object obj, bool? shouldSearchChildren = null ) + { + this.obj = obj; + RefreshSubAssets( shouldSearchChildren ); + } + + public void RefreshSubAssets( bool? shouldSearchChildren = null ) + { + if( subAssets == null ) + subAssets = new List(); + else + subAssets.Clear(); + + if( currentSubAssets == null ) + currentSubAssets = new HashSet(); + else + currentSubAssets.Clear(); + + AddSubAssets( obj, false, shouldSearchChildren ); + currentSubAssets.Clear(); + } + + private void AddSubAssets( Object target, bool includeTarget, bool? shouldSearchChildren ) + { + if( target == null || target.Equals( null ) ) + return; + + if( !target.IsAsset() ) + { + GameObject go = target as GameObject; + if( !go || !go.scene.IsValid() ) + return; + + // If this is a scene object, add its child objects to the sub-assets list + // but don't include them in the search by default + Transform goTransform = go.transform; + Transform[] children = go.GetComponentsInChildren( true ); + for( int i = 0; i < children.Length; i++ ) + { + if( ReferenceEquals( children[i], goTransform ) ) + continue; + + subAssets.Add( new SubAsset( children[i].gameObject, shouldSearchChildren ?? false ) ); + } + } + else + { + if( !AssetDatabase.IsMainAsset( target ) || target is SceneAsset ) + return; + + if( includeTarget ) + { + if( !currentSubAssets.Contains( target ) ) + { + subAssets.Add( new SubAsset( target, shouldSearchChildren ?? true ) ); + currentSubAssets.Add( target ); + } + } + else + { + // If asset is a directory, add all of its contents as sub-assets recursively + if( target.IsFolder() ) + { + foreach( string filePath in Utilities.EnumerateFolderContents( target ) ) + AddSubAssets( AssetDatabase.LoadAssetAtPath( filePath ), true, shouldSearchChildren ); + + return; + } + } + + // Find sub-asset(s) of the asset (if any) + Object[] assets = AssetDatabase.LoadAllAssetsAtPath( AssetDatabase.GetAssetPath( target ) ); + for( int i = 0; i < assets.Length; i++ ) + { + Object asset = assets[i]; + if( asset == null || asset.Equals( null ) || asset is Component ) + continue; + + if( currentSubAssets.Contains( asset ) ) + continue; + + if( asset != target ) + { + subAssets.Add( new SubAsset( asset, shouldSearchChildren ?? true ) ); + currentSubAssets.Add( asset ); + } + + // MonoScripts are a special case such that other MonoScript objects + // that extend this MonoScript are also considered a sub-asset + if( asset is MonoScript ) + { + Type monoScriptType = ( (MonoScript) asset ).GetClass(); + if( monoScriptType == null || ( !monoScriptType.IsInterface && !typeof( Component ).IsAssignableFrom( monoScriptType ) ) ) + continue; + + // Find all MonoScript objects in the project + if( monoScriptsInProject == null ) + { + string[] monoScriptGuids = AssetDatabase.FindAssets( "t:MonoScript" ); + monoScriptsInProject = new MonoScript[monoScriptGuids.Length]; + for( int k = 0; k < monoScriptGuids.Length; k++ ) + monoScriptsInProject[k] = AssetDatabase.LoadAssetAtPath( AssetDatabase.GUIDToAssetPath( monoScriptGuids[k] ) ); + } + + // Add any MonoScript objects that extend this MonoScript as a sub-asset + for( int j = 0; j < monoScriptsInProject.Length; j++ ) + { + Type otherMonoScriptType = monoScriptsInProject[j].GetClass(); + if( otherMonoScriptType == null || monoScriptType == otherMonoScriptType || !monoScriptType.IsAssignableFrom( otherMonoScriptType ) ) + continue; + + if( !currentSubAssets.Contains( monoScriptsInProject[j] ) ) + { + subAssets.Add( new SubAsset( monoScriptsInProject[j], shouldSearchChildren ?? true ) ); + currentSubAssets.Add( monoScriptsInProject[j] ); + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/AssetUsageDetector/Editor/ObjectToSearch.cs.meta b/Assets/Plugins/AssetUsageDetector/Editor/ObjectToSearch.cs.meta new file mode 100644 index 0000000..787b336 --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor/ObjectToSearch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 66d5a144a723fea40945afc069d4231d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/AssetUsageDetector/Editor/SearchResult.cs b/Assets/Plugins/AssetUsageDetector/Editor/SearchResult.cs new file mode 100644 index 0000000..4976bdf --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor/SearchResult.cs @@ -0,0 +1,1280 @@ +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEngine.SceneManagement; +using Object = UnityEngine.Object; + +namespace AssetUsageDetectorNamespace +{ + [Serializable] + public class SearchResultDrawParameters + { + public SearchResult searchResult; + public PathDrawingMode pathDrawingMode; + public bool showTooltips; + public bool noAssetDatabaseChanges; + public Rect guiRect; + public bool shouldRefreshEditorWindow; + public string tooltip; + + public SearchResultDrawParameters( PathDrawingMode pathDrawingMode, bool showTooltips, bool noAssetDatabaseChanges ) + { + this.pathDrawingMode = pathDrawingMode; + this.showTooltips = showTooltips; + this.noAssetDatabaseChanges = noAssetDatabaseChanges; + } + } + + // Custom class to hold search results + [Serializable] + public class SearchResult : ISerializationCallbackReceiver + { + // Credit: https://docs.unity3d.com/Manual/script-Serialization-Custom.html + [Serializable] + public class SerializableResultGroup + { + public string title; + public SearchResultGroup.GroupType type; + public bool isExpanded; + public bool pendingSearch; + + public List initialSerializedNodes; + } + + [Serializable] + public class SerializableNode + { + public int instanceId; + public bool isUnityObject; + public string description; + + public List links; + public List linkDescriptions; + } + +#pragma warning disable 1692 +#pragma warning disable IDE0044 + private bool success; // This is not readonly so that it can be serialized +#pragma warning restore IDE0044 +#pragma warning restore 1692 + + private List result; + private SceneSetup[] initialSceneSetup; + + private AssetUsageDetector searchHandler; + private AssetUsageDetector.Parameters m_searchParameters; + + private float guiHeight; // Prevents scroll view's position from getting reset at domain reload + + private List serializedNodes; + private List serializedGroups; + + public int NumberOfGroups { get { return result.Count; } } + public SearchResultGroup this[int index] { get { return result[index]; } } + + public bool SearchCompletedSuccessfully { get { return success; } } + public bool InitialSceneSetupConfigured { get { return initialSceneSetup != null && initialSceneSetup.Length > 0; } } + public AssetUsageDetector.Parameters SearchParameters { get { return m_searchParameters; } } + + public SearchResult( bool success, List result, SceneSetup[] initialSceneSetup, AssetUsageDetector searchHandler, AssetUsageDetector.Parameters searchParameters ) + { + if( result == null ) + result = new List( 0 ); + + this.success = success; + this.result = result; + this.initialSceneSetup = initialSceneSetup; + this.searchHandler = searchHandler; + this.m_searchParameters = searchParameters; + } + + public void RefreshSearchResultGroup( SearchResultGroup searchResultGroup, bool noAssetDatabaseChanges ) + { + if( searchResultGroup == null ) + { + Debug.LogError( "SearchResultGroup is null!" ); + return; + } + + int searchResultGroupIndex = -1; + for( int i = 0; i < result.Count; i++ ) + { + if( result[i] == searchResultGroup ) + { + searchResultGroupIndex = i; + break; + } + } + + if( searchResultGroupIndex < 0 ) + { + Debug.LogError( "SearchResultGroup is not a part of SearchResult!" ); + return; + } + + if( searchResultGroup.Type == SearchResultGroup.GroupType.Scene && EditorApplication.isPlaying && !EditorSceneManager.GetSceneByPath( searchResultGroup.Title ).isLoaded ) + { + Debug.LogError( "Can't search unloaded scene while in Play Mode!" ); + return; + } + + if( searchHandler == null ) + searchHandler = new AssetUsageDetector(); + + SceneSearchMode searchInScenes = m_searchParameters.searchInScenes; + Object[] searchInScenesSubset = m_searchParameters.searchInScenesSubset; + bool searchInAssetsFolder = m_searchParameters.searchInAssetsFolder; + Object[] searchInAssetsSubset = m_searchParameters.searchInAssetsSubset; + bool searchInProjectSettings = m_searchParameters.searchInProjectSettings; + + try + { + if( searchResultGroup.Type == SearchResultGroup.GroupType.Assets ) + { + m_searchParameters.searchInScenes = SceneSearchMode.None; + m_searchParameters.searchInScenesSubset = null; + m_searchParameters.searchInProjectSettings = false; + } + else if( searchResultGroup.Type == SearchResultGroup.GroupType.ProjectSettings ) + { + m_searchParameters.searchInScenes = SceneSearchMode.None; + m_searchParameters.searchInScenesSubset = null; + m_searchParameters.searchInAssetsFolder = false; + m_searchParameters.searchInAssetsSubset = null; + m_searchParameters.searchInProjectSettings = true; + } + else if( searchResultGroup.Type == SearchResultGroup.GroupType.Scene ) + { + m_searchParameters.searchInScenes = SceneSearchMode.None; + m_searchParameters.searchInScenesSubset = new Object[1] { AssetDatabase.LoadAssetAtPath( searchResultGroup.Title ) }; + m_searchParameters.searchInAssetsFolder = false; + m_searchParameters.searchInAssetsSubset = null; + m_searchParameters.searchInProjectSettings = false; + } + else + { + m_searchParameters.searchInScenes = (SceneSearchMode) 1024; // A unique value to search only the DontDestroyOnLoad scene + m_searchParameters.searchInScenesSubset = null; + m_searchParameters.searchInAssetsFolder = false; + m_searchParameters.searchInAssetsSubset = null; + m_searchParameters.searchInProjectSettings = false; + } + + m_searchParameters.lazySceneSearch = false; + m_searchParameters.noAssetDatabaseChanges = noAssetDatabaseChanges; + + // Make sure the AssetDatabase is up-to-date + AssetDatabase.SaveAssets(); + + SearchResult searchResult = searchHandler.Run( m_searchParameters ); + if( !searchResult.success ) + { + EditorUtility.DisplayDialog( "Error", "Couldn't refresh, check console for more info.", "OK" ); + return; + } + + List searchResultGroups = searchResult.result; + if( searchResultGroups != null ) + { + int newSearchResultGroupIndex = -1; + for( int i = 0; i < searchResultGroups.Count; i++ ) + { + if( searchResultGroup.Title == searchResultGroups[i].Title ) + { + newSearchResultGroupIndex = i; + break; + } + } + + if( newSearchResultGroupIndex >= 0 ) + result[searchResultGroupIndex] = searchResultGroups[newSearchResultGroupIndex]; + else + searchResultGroup.Clear(); + } + } + finally + { + m_searchParameters.searchInScenes = searchInScenes; + m_searchParameters.searchInScenesSubset = searchInScenesSubset; + m_searchParameters.searchInAssetsFolder = searchInAssetsFolder; + m_searchParameters.searchInAssetsSubset = searchInAssetsSubset; + m_searchParameters.searchInProjectSettings = searchInProjectSettings; + } + } + + public void DrawOnGUI( SearchResultDrawParameters parameters ) + { + parameters.searchResult = this; + parameters.tooltip = null; + parameters.guiRect = EditorGUILayout.GetControlRect( Utilities.GL_EXPAND_WIDTH, Utilities.GL_HEIGHT_0 ); + + float guiInitialY = parameters.guiRect.y; + + for( int i = 0; i < result.Count; i++ ) + { + result[i].DrawOnGUI( parameters ); + + if( i < result.Count - 1 ) + { + Rect rect = parameters.guiRect; + rect.y += 10f; + parameters.guiRect = rect; + } + } + + if( Event.current.type == EventType.Repaint ) + guiHeight = parameters.guiRect.y - guiInitialY; + + // To work nicely with GUILayout and scroll view + EditorGUILayout.GetControlRect( Utilities.GL_EXPAND_WIDTH, GUILayout.Height( guiHeight ) ); + + if( !string.IsNullOrEmpty( parameters.tooltip ) ) + { + // Show tooltip at mouse position + Vector2 mousePos = Event.current.mousePosition; + Vector2 size = Utilities.TooltipGUIStyle.CalcSize( new GUIContent( parameters.tooltip ) ); + size.x += 10f; + + Rect tooltipRect = new Rect( new Vector2( mousePos.x - size.x * 0.5f, mousePos.y - size.y ), size ); + if( tooltipRect.xMin < 0f ) + tooltipRect.x -= tooltipRect.xMin; + else if( tooltipRect.xMax > parameters.guiRect.width ) + tooltipRect.x -= tooltipRect.xMax - parameters.guiRect.width; + + GUI.Box( tooltipRect, parameters.tooltip, Utilities.TooltipGUIStyle ); + } + + if( parameters.shouldRefreshEditorWindow ) + { + parameters.shouldRefreshEditorWindow = false; + + EditorWindow focusedWindow = EditorWindow.focusedWindow; + if( focusedWindow != null ) + focusedWindow.Repaint(); + + EditorWindow mouseOverWindow = EditorWindow.mouseOverWindow; + if( mouseOverWindow != null && mouseOverWindow != focusedWindow ) + mouseOverWindow.Repaint(); + } + } + + public Object[] SelectAllAsObjects() + { + HashSet uniqueObjects = new HashSet(); + for( int i = 0; i < result.Count; i++ ) + result[i].AddObjectsTo( uniqueObjects ); + + if( uniqueObjects.Count > 0 ) + { + Object[] objects = new Object[uniqueObjects.Count]; + uniqueObjects.CopyTo( objects ); + + return objects; + } + + return null; + } + + public GameObject[] SelectAllAsGameObjects() + { + HashSet uniqueGameObjects = new HashSet(); + for( int i = 0; i < result.Count; i++ ) + result[i].AddGameObjectsTo( uniqueGameObjects ); + + if( uniqueGameObjects.Count > 0 ) + { + GameObject[] objects = new GameObject[uniqueGameObjects.Count]; + uniqueGameObjects.CopyTo( objects ); + + return objects; + } + + return null; + } + + // Returns if RestoreInitialSceneSetup will have any effect on the current scene setup + public bool IsSceneSetupDifferentThanCurrentSetup() + { + if( initialSceneSetup == null ) + return false; + + SceneSetup[] sceneFinalSetup = EditorSceneManager.GetSceneManagerSetup(); + if( initialSceneSetup.Length != sceneFinalSetup.Length ) + return true; + + for( int i = 0; i < sceneFinalSetup.Length; i++ ) + { + bool sceneIsOneOfInitials = false; + for( int j = 0; j < initialSceneSetup.Length; j++ ) + { + if( sceneFinalSetup[i].path == initialSceneSetup[j].path ) + { + if( sceneFinalSetup[i].isLoaded != initialSceneSetup[j].isLoaded ) + return true; + + sceneIsOneOfInitials = true; + break; + } + } + + if( !sceneIsOneOfInitials ) + return true; + } + + return false; + } + + // Close the scenes that were not part of the initial scene setup + // Returns true if initial scene setup is restored successfully + public bool RestoreInitialSceneSetup( bool optional ) + { + if( initialSceneSetup == null || initialSceneSetup.Length == 0 ) + return true; + + if( EditorApplication.isPlaying || !EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo() ) + return false; + + if( optional && IsSceneSetupDifferentThanCurrentSetup() && !EditorUtility.DisplayDialog( "Scenes", "Restore initial scene setup?", "Yes", "Leave it as is" ) ) + return true; + + for( int i = 0; i < initialSceneSetup.Length; i++ ) + { + Scene scene = EditorSceneManager.GetSceneByPath( initialSceneSetup[i].path ); + if( !scene.isLoaded ) + scene = EditorSceneManager.OpenScene( initialSceneSetup[i].path, initialSceneSetup[i].isLoaded ? OpenSceneMode.Additive : OpenSceneMode.AdditiveWithoutLoading ); + + if( initialSceneSetup[i].isActive ) + EditorSceneManager.SetActiveScene( scene ); + } + + SceneSetup[] sceneFinalSetup = EditorSceneManager.GetSceneManagerSetup(); + for( int i = 0; i < sceneFinalSetup.Length; i++ ) + { + bool sceneIsOneOfInitials = false; + for( int j = 0; j < initialSceneSetup.Length; j++ ) + { + if( sceneFinalSetup[i].path == initialSceneSetup[j].path ) + { + sceneIsOneOfInitials = true; + break; + } + } + + if( !sceneIsOneOfInitials ) + EditorSceneManager.CloseScene( EditorSceneManager.GetSceneByPath( sceneFinalSetup[i].path ), true ); + } + + for( int i = 0; i < initialSceneSetup.Length; i++ ) + { + if( !initialSceneSetup[i].isLoaded ) + EditorSceneManager.CloseScene( EditorSceneManager.GetSceneByPath( initialSceneSetup[i].path ), false ); + } + + initialSceneSetup = null; + return true; + } + + // Assembly reloading; serialize nodes in a way that Unity can serialize + void ISerializationCallbackReceiver.OnBeforeSerialize() + { + if( result == null ) + return; + + if( serializedGroups == null ) + serializedGroups = new List( result.Count ); + else + serializedGroups.Clear(); + + if( serializedNodes == null ) + serializedNodes = new List( result.Count * 16 ); + else + serializedNodes.Clear(); + + Dictionary nodeToIndex = new Dictionary( result.Count * 16 ); + for( int i = 0; i < result.Count; i++ ) + serializedGroups.Add( result[i].Serialize( nodeToIndex, serializedNodes ) ); + } + + // Assembly reloaded; deserialize nodes to construct the original graph + void ISerializationCallbackReceiver.OnAfterDeserialize() + { + if( serializedGroups == null || serializedNodes == null ) + return; + + if( result == null ) + result = new List( serializedGroups.Count ); + else + result.Clear(); + + List allNodes = new List( serializedNodes.Count ); + for( int i = 0; i < serializedNodes.Count; i++ ) + allNodes.Add( new ReferenceNode() ); + + for( int i = 0; i < serializedNodes.Count; i++ ) + allNodes[i].Deserialize( serializedNodes[i], allNodes ); + + for( int i = 0; i < serializedGroups.Count; i++ ) + { + result.Add( new SearchResultGroup( serializedGroups[i].title, serializedGroups[i].type, serializedGroups[i].isExpanded, serializedGroups[i].pendingSearch ) ); + result[i].Deserialize( serializedGroups[i], allNodes ); + } + + serializedNodes.Clear(); + serializedGroups.Clear(); + } + } + + // Custom class to hold the results for a single scene or Assets folder + public class SearchResultGroup + { + public enum GroupType { Assets = 0, Scene = 1, DontDestroyOnLoad = 2, ProjectSettings = 3 }; + + // Custom struct to hold a single path to a reference + public struct ReferencePath + { + public readonly ReferenceNode startNode; + public readonly int[] pathLinksToFollow; + + public ReferencePath( ReferenceNode startNode, int[] pathIndices ) + { + this.startNode = startNode; + pathLinksToFollow = pathIndices; + } + } + + private const float HEADER_HEIGHT = 40f; + + public string Title { get; private set; } + public GroupType Type { get; private set; } + public bool IsExpanded { get; private set; } + public bool PendingSearch { get; private set; } + + private readonly List references; + private List referencePathsShortUnique; + private List referencePathsShortest; + + private float calculatedGUIWidth; + private float calculatedGUIHeight; + private PathDrawingMode calculatedGUIMode; + private ReferenceNodeGUI[] guiNodes; + + public int NumberOfReferences { get { return references.Count; } } + public ReferenceNode this[int index] { get { return references[index]; } } + + public SearchResultGroup( string title, GroupType type, bool isExpanded = true, bool pendingSearch = false ) + { + Title = title; + Type = type; + IsExpanded = isExpanded; + PendingSearch = pendingSearch; + + references = new List(); + referencePathsShortUnique = null; + referencePathsShortest = null; + + calculatedGUIWidth = 0f; + guiNodes = null; + } + + // Add a reference to the list + public void AddReference( ReferenceNode node ) + { + references.Add( node ); + } + + // Removes all nodes + public void Clear() + { + references.Clear(); + + if( referencePathsShortUnique != null ) + referencePathsShortUnique.Clear(); + if( referencePathsShortest != null ) + referencePathsShortest.Clear(); + + PendingSearch = false; + calculatedGUIWidth = 0f; + guiNodes = null; + } + + // Initializes commonly used variables of the nodes + public void InitializeNodes( Func nodeGetter ) + { + // Remove root nodes that don't have any outgoing links or have null node objects (somehow) + for( int i = references.Count - 1; i >= 0; i-- ) + { + if( references[i].NumberOfOutgoingLinks == 0 ) + references.RemoveAtFast( i ); + else + { + object nodeObject = references[i].nodeObject; + if( nodeObject == null || nodeObject.Equals( null ) ) + references.RemoveAtFast( i ); + } + } + + for( int i = references.Count - 1; i >= 0; i-- ) + { + references[i].VerifyLinksRecursively(); + + // Some links might be removed during verification + if( references[i].NumberOfOutgoingLinks == 0 ) + references.RemoveAtFast( i ); + } + + if( references.Count == 0 ) + return; + + List callStack = new List( 8 ); + + // For simplicity's sake, get rid of root nodes that are already part of another node's hierarchy + for( int i = references.Count - 1; i >= 0; i-- ) + { + if( IsRootNodePartOfAnotherRootNode( i, callStack ) ) + references.RemoveAtFast( i ); + } + + // For clarity, a reference path shouldn't start with a sub-asset but instead with its corresponding main asset + for( int i = references.Count - 1; i >= 0; i-- ) + { + object nodeObject = references[i].nodeObject; + if( nodeObject.IsAsset() && !AssetDatabase.IsMainAsset( (Object) nodeObject ) ) + { + string assetPath = AssetDatabase.GetAssetPath( (Object) nodeObject ); + if( string.IsNullOrEmpty( assetPath ) ) + continue; + + Object mainAsset = AssetDatabase.LoadMainAssetAtPath( assetPath ); + if( mainAsset == null || mainAsset.Equals( null ) ) + continue; + + // We're already calling AssetDatabase.IsMainAsset but just in case... + if( ReferenceEquals( nodeObject, mainAsset ) ) + continue; + + if( nodeObject is Component && ( (Component) nodeObject ).gameObject == mainAsset ) + continue; + + // Get a ReferenceNode for the main asset, add a link to the sub-asset's node and change the root node + ReferenceNode newRootNode = nodeGetter( mainAsset ); + newRootNode.AddLinkTo( references[i], ( nodeObject is Component || nodeObject is GameObject ) ? "Child object" : "Sub-asset" ); + references[i] = newRootNode; + + // Make sure that the new root node isn't already a part of another node's hierarchy + if( IsRootNodePartOfAnotherRootNode( i, callStack ) ) + references.RemoveAtFast( i ); + } + } + + for( int i = 0; i < references.Count; i++ ) + references[i].InitializeRecursively(); + } + + // Check if node exists in this results set + public bool Contains( ReferenceNode node ) + { + for( int i = 0; i < references.Count; i++ ) + { + if( references[i] == node ) + return true; + } + + return false; + } + + private bool IsRootNodePartOfAnotherRootNode( int index, List callStack ) + { + ReferenceNode node = references[index]; + for( int i = references.Count - 1; i >= 0; i-- ) + { + if( index == i ) + continue; + + if( references[i].nodeObject == node.nodeObject || references[i].NodeExistsInChildrenRecursive( node, callStack ) ) + return true; + } + + return false; + } + + // Add all the Object's in this container to the set + public void AddObjectsTo( HashSet objectsSet ) + { + if( PendingSearch ) + return; + + CalculateShortestPathsToReferences(); + + for( int i = 0; i < referencePathsShortUnique.Count; i++ ) + { + Object obj = referencePathsShortUnique[i].startNode.UnityObject; + if( obj != null && !obj.Equals( null ) ) + objectsSet.Add( obj ); + } + } + + // Add all the GameObject's in this container to the set + public void AddGameObjectsTo( HashSet gameObjectsSet ) + { + if( PendingSearch ) + return; + + CalculateShortestPathsToReferences(); + + for( int i = 0; i < referencePathsShortUnique.Count; i++ ) + { + Object obj = referencePathsShortUnique[i].startNode.UnityObject; + if( obj != null && !obj.Equals( null ) ) + { + if( obj is GameObject ) + gameObjectsSet.Add( (GameObject) obj ); + else if( obj is Component ) + gameObjectsSet.Add( ( (Component) obj ).gameObject ); + } + } + } + + // Calculate short unique paths to the references + private void CalculateShortestPathsToReferences() + { + if( referencePathsShortUnique != null ) + return; + + referencePathsShortUnique = new List( 32 ); + for( int i = 0; i < references.Count; i++ ) + references[i].CalculateShortUniquePaths( referencePathsShortUnique, Type == GroupType.Scene || Type == GroupType.DontDestroyOnLoad ); + + referencePathsShortest = new List( referencePathsShortUnique.Count ); + for( int i = 0; i < referencePathsShortUnique.Count; i++ ) + { + int[] linksToFollow = referencePathsShortUnique[i].pathLinksToFollow; + + // Find the last two nodes in this path + ReferenceNode nodeBeforeLast = referencePathsShortUnique[i].startNode; + for( int j = 0; j < linksToFollow.Length - 1; j++ ) + nodeBeforeLast = nodeBeforeLast[linksToFollow[j]].targetNode; + + // Check if these two nodes are unique + bool isUnique = true; + for( int j = 0; j < referencePathsShortest.Count; j++ ) + { + ReferencePath path = referencePathsShortest[j]; + if( path.startNode == nodeBeforeLast && path.pathLinksToFollow[0] == linksToFollow[linksToFollow.Length - 1] ) + { + isUnique = false; + break; + } + } + + if( isUnique ) + referencePathsShortest.Add( new ReferencePath( nodeBeforeLast, new int[1] { linksToFollow[linksToFollow.Length - 1] } ) ); + } + } + + // Draw the results found for this container + public void DrawOnGUI( SearchResultDrawParameters parameters ) + { + if( Event.current.type == EventType.Repaint && ( guiNodes == null || parameters.pathDrawingMode != calculatedGUIMode || parameters.guiRect.width != calculatedGUIWidth ) ) + { + GenerateGUINodes( parameters ); + parameters.shouldRefreshEditorWindow = true; // A repaint is needed to work nicely with GUILayout + } + + Color c = GUI.backgroundColor; + GUI.backgroundColor = Color.cyan; + + Rect rect = parameters.guiRect; + float width = rect.width; + rect.width = 40f; + rect.height = HEADER_HEIGHT; + if( GUI.Button( rect, IsExpanded ? "v" : ">" ) ) + { + IsExpanded = !IsExpanded; + + parameters.shouldRefreshEditorWindow = true; + GUIUtility.ExitGUI(); + } + + rect.x += 40f; + rect.width = width - ( parameters.searchResult != null ? 140f : 40f ); + if( GUI.Button( rect, Title, Utilities.BoxGUIStyle ) && Type == GroupType.Scene ) + { + if( Event.current.button != 1 ) + { + // If the container (scene, usually) is left clicked, highlight it on Project view + AssetDatabase.LoadAssetAtPath( Title ).SelectInEditor(); + } + else if( !EditorApplication.isPlaying && SceneManager.loadedSceneCount > 1 ) + { + // Show context menu when SearchResultGroup's header is right clicked + Scene scene = EditorSceneManager.GetSceneByPath( Title ); + if( scene.isLoaded ) + { + GenericMenu contextMenu = new GenericMenu(); + contextMenu.AddItem( new GUIContent( "Close Scene" ), false, () => + { + if( !scene.isDirty || EditorSceneManager.SaveModifiedScenesIfUserWantsTo( new Scene[1] { scene } ) ) + EditorSceneManager.CloseScene( scene, true ); + } ); + contextMenu.ShowAsContext(); + } + } + } + + if( parameters.searchResult != null ) + { + rect.x += width - 140f; + rect.width = 100f; + if( GUI.Button( rect, "Refresh" ) ) + { + if( Utilities.AreScenesSaved() || ( EditorUtility.DisplayDialog( "Refresh", "Some scene(s) have unsaved changes, they must be saved before the refresh.", "Save Scenes", "Cancel" ) && EditorSceneManager.SaveOpenScenes() ) ) + { + parameters.searchResult.RefreshSearchResultGroup( this, parameters.noAssetDatabaseChanges ); + GUIUtility.ExitGUI(); + } + } + } + + rect = parameters.guiRect; + rect.y += HEADER_HEIGHT + 5f; + + if( IsExpanded ) + { + // On light skin, yellow background looks better than light grey background + GUI.backgroundColor = EditorGUIUtility.isProSkin ? c : Color.yellow; + + if( PendingSearch ) + { + rect.height = 25f; + GUI.Box( rect, "Lazy Search: this scene potentially has some references, hit Refresh to find them", Utilities.BoxGUIStyle ); + } + else if( references.Count == 0 ) + { + rect.height = 25f; + GUI.Box( rect, "No references found...", Utilities.BoxGUIStyle ); + } + else if( guiNodes != null ) + { + rect.height = calculatedGUIHeight; + parameters.guiRect = rect; + + for( int i = 0; i < guiNodes.Length; i++ ) + guiNodes[i].DrawOnGUI( parameters ); + } + + rect.y += rect.height; + } + + parameters.guiRect = rect; + GUI.backgroundColor = c; + } + + private void GenerateGUINodes( SearchResultDrawParameters parameters ) + { + float guiRectWidth = parameters.guiRect.width; + + if( guiNodes == null || parameters.pathDrawingMode != calculatedGUIMode ) + { + if( parameters.pathDrawingMode == PathDrawingMode.Full ) + { + List stack = new List( 8 ); + guiNodes = new ReferenceNodeGUI[references.Count]; + + for( int i = 0; i < guiNodes.Length; i++ ) + guiNodes[i] = references[i].GenerateGUINodeRecursive( stack, null ); + } + else + { + if( referencePathsShortUnique == null ) + CalculateShortestPathsToReferences(); + + List pathsToDraw; + if( parameters.pathDrawingMode == PathDrawingMode.ShortRelevantParts ) + pathsToDraw = referencePathsShortUnique; + else + pathsToDraw = referencePathsShortest; + + guiNodes = new ReferenceNodeGUI[pathsToDraw.Count]; + + for( int i = 0; i < guiNodes.Length; i++ ) + { + ReferencePath path = pathsToDraw[i]; + ReferenceNode currentNode = path.startNode; + + ReferenceNodeGUI currentNodeGUI = currentNode.GenerateGUINode( null ); + guiNodes[i] = currentNodeGUI; + + for( int j = 0; j < path.pathLinksToFollow.Length; j++ ) + { + ReferenceNode.Link link = currentNode[path.pathLinksToFollow[j]]; + currentNodeGUI.links = new ReferenceNodeGUI[1] { link.targetNode.GenerateGUINode( link.description ) }; + + currentNode = link.targetNode; + currentNodeGUI = currentNodeGUI.links[0]; + } + + currentNodeGUI.links = new ReferenceNodeGUI[0]; + } + } + + for( int i = 0; i < guiNodes.Length; i++ ) + guiNodes[i].CalculateDepth(); + } + + calculatedGUIMode = parameters.pathDrawingMode; + calculatedGUIWidth = guiRectWidth; + + calculatedGUIHeight = -5f; // will start from -5f + 5f = 0f + for( int i = 0; i < guiNodes.Length; i++ ) + { + calculatedGUIHeight += 5f; + guiNodes[i].CalculateHeight( guiRectWidth ); + guiNodes[i].CalculateOffset( new Vector2( 0f, calculatedGUIHeight ) ); + calculatedGUIHeight += guiNodes[i].size.y; + } + } + + // Serialize this result group + public SearchResult.SerializableResultGroup Serialize( Dictionary nodeToIndex, List serializedNodes ) + { + SearchResult.SerializableResultGroup serializedResultGroup = new SearchResult.SerializableResultGroup() + { + title = Title, + type = Type, + isExpanded = IsExpanded, + pendingSearch = PendingSearch + }; + + if( references != null ) + { + serializedResultGroup.initialSerializedNodes = new List( references.Count ); + + for( int i = 0; i < references.Count; i++ ) + serializedResultGroup.initialSerializedNodes.Add( references[i].SerializeRecursively( nodeToIndex, serializedNodes ) ); + } + + return serializedResultGroup; + } + + // Deserialize this result group from the serialized data + public void Deserialize( SearchResult.SerializableResultGroup serializedResultGroup, List allNodes ) + { + if( serializedResultGroup.initialSerializedNodes != null ) + { + for( int i = 0; i < serializedResultGroup.initialSerializedNodes.Count; i++ ) + references.Add( allNodes[serializedResultGroup.initialSerializedNodes[i]] ); + } + + referencePathsShortUnique = null; + referencePathsShortest = null; + } + } + + // Custom class to hold an object in the path to a reference as a node + public class ReferenceNode + { + public struct Link + { + public readonly ReferenceNode targetNode; + public readonly string description; + + public Link( ReferenceNode targetNode, string description ) + { + this.targetNode = targetNode; + this.description = description; + } + } + + // Unique identifier is used while serializing the node + private static int uid_last = 0; + private readonly int uid; + + internal object nodeObject; + private int? instanceId; // instanceId of the nodeObject if it is a Unity object, null otherwise + private string description; // String to print on this node + + private readonly List links; + + public Object UnityObject { get { return instanceId.HasValue ? EditorUtility.InstanceIDToObject( instanceId.Value ) : null; } } + + public int NumberOfOutgoingLinks { get { return links.Count; } } + public Link this[int index] { get { return links[index]; } } + + public ReferenceNode() + { + links = new List( 2 ); + uid = uid_last++; + } + + // Add a one-way connection to another node + public void AddLinkTo( ReferenceNode nextNode, string description = null ) + { + if( nextNode != null && nextNode != this ) + { + if( !string.IsNullOrEmpty( description ) ) + description = "[" + description + "]"; + + // Avoid duplicate links + for( int i = 0; i < links.Count; i++ ) + { + if( links[i].targetNode == nextNode ) + { + if( !string.IsNullOrEmpty( description ) ) + { + if( !string.IsNullOrEmpty( links[i].description ) ) + links[i] = new Link( links[i].targetNode, string.Concat( links[i].description, Environment.NewLine, description ) ); + else + links[i] = new Link( links[i].targetNode, description ); + } + + return; + } + } + + links.Add( new Link( nextNode, description ) ); + } + } + + public void CopyReferencesTo( ReferenceNode other ) + { + other.links.Clear(); + other.links.AddRange( links ); + } + + // Remove any redundant connections that this node has + public void VerifyLinksRecursively() + { + // Make sure that this functions isn't called multiple times per node (avoids StackOverflowException) + if( description != null ) + return; + + description = ""; + + for( int i = links.Count - 1; i >= 0; i-- ) + { + // Links from a GameObject to its components should be omitted if the component has no references (these are redundant links) + if( links[i].targetNode.links.Count == 0 && nodeObject is GameObject ) + { + Component component = links[i].targetNode.nodeObject as Component; + if( component != null && !component.Equals( null ) && component.gameObject == (GameObject) nodeObject ) + { + links.RemoveAtFast( i ); + continue; + } + } + + links[i].targetNode.VerifyLinksRecursively(); + } + + description = null; + } + + // Initialize node's commonly used variables + public void InitializeRecursively() + { + if( description != null ) // Already initialized + return; + + Object unityObject = nodeObject as Object; + if( unityObject != null ) + { + instanceId = unityObject.GetInstanceID(); + description = unityObject.name + " (" + unityObject.GetType() + ")"; + } + else if( nodeObject != null ) + { + instanceId = null; + description = nodeObject.GetType() + " object"; + } + else + { + instanceId = null; + description = "<>"; + } + + nodeObject = null; // don't hold Object reference, allow Unity to GC used memory + + for( int i = 0; i < links.Count; i++ ) + links[i].targetNode.InitializeRecursively(); + } + + // Returns whether or not specified node is part of this node's siblings + public bool NodeExistsInChildrenRecursive( ReferenceNode node, List callStack ) + { + if( callStack.ContainsFast( this ) ) + return false; + + for( int i = 0; i < links.Count; i++ ) + { + if( links[i].targetNode == node ) + return true; + } + + callStack.Add( this ); + + for( int i = 0; i < links.Count; i++ ) + { + if( links[i].targetNode.NodeExistsInChildrenRecursive( node, callStack ) ) + { + callStack.RemoveAt( callStack.Count - 1 ); + return true; + } + } + + callStack.RemoveAt( callStack.Count - 1 ); + return false; + } + + // Clear this node so that it can be reused later + public void Clear() + { + nodeObject = null; + links.Clear(); + } + + // Calculate short unique paths that start with this node + public void CalculateShortUniquePaths( List currentPaths, bool startPathsWithSceneObjects ) + { + CalculateShortUniquePaths( currentPaths, startPathsWithSceneObjects, new List( 8 ), new List( 8 ) { -1 }, 0, new List( 8 ) ); + } + + // Just some boring calculations to find the short unique paths recursively + private void CalculateShortUniquePaths( List shortestPaths, bool startPathsWithSceneObjects, List currentPath, List currentPathIndices, int latestObjectIndexInPath, List stack ) + { + int currentIndex = currentPath.Count; + currentPath.Add( this ); + + if( links.Count == 0 || stack.ContainsFast( this ) ) + { + // Check if the path to the reference is unique (not discovered so far) + bool isUnique = true; + for( int i = 0; i < shortestPaths.Count; i++ ) + { + if( shortestPaths[i].startNode == currentPath[latestObjectIndexInPath] && shortestPaths[i].pathLinksToFollow.Length == currentPathIndices.Count - latestObjectIndexInPath - 1 ) + { + int j = latestObjectIndexInPath + 1; + for( int k = 0; j < currentPathIndices.Count; j++, k++ ) + { + if( shortestPaths[i].pathLinksToFollow[k] != currentPathIndices[j] ) + break; + } + + if( j == currentPathIndices.Count ) + { + isUnique = false; + break; + } + } + } + + // Don't allow duplicate short paths + if( isUnique ) + { + int[] pathIndices = new int[currentPathIndices.Count - latestObjectIndexInPath - 1]; + for( int i = latestObjectIndexInPath + 1, j = 0; i < currentPathIndices.Count; i++, j++ ) + pathIndices[j] = currentPathIndices[i]; + + shortestPaths.Add( new SearchResultGroup.ReferencePath( currentPath[latestObjectIndexInPath], pathIndices ) ); + } + } + else + { + if( instanceId.HasValue ) // nodeObject is Unity object + { + if( !startPathsWithSceneObjects || !AssetDatabase.Contains( instanceId.Value ) ) + latestObjectIndexInPath = currentIndex; + } + + for( int i = 0; i < links.Count; i++ ) + { + currentPathIndices.Add( i ); + stack.Add( this ); + + links[i].targetNode.CalculateShortUniquePaths( shortestPaths, startPathsWithSceneObjects, currentPath, currentPathIndices, latestObjectIndexInPath, stack ); + + stack.RemoveAt( stack.Count - 1 ); + currentPathIndices.RemoveAt( currentIndex + 1 ); + } + } + + currentPath.RemoveAt( currentIndex ); + } + + public ReferenceNodeGUI GenerateGUINode( string linkToPrevNodeDescription ) + { + return new ReferenceNodeGUI() + { + label = new GUIContent( string.IsNullOrEmpty( linkToPrevNodeDescription ) ? description : ( linkToPrevNodeDescription + "\n" + description ) ), + instanceId = instanceId + }; + } + + public ReferenceNodeGUI GenerateGUINodeRecursive( List stack, string linkToPrevNodeDescription ) + { + ReferenceNodeGUI guiNode = GenerateGUINode( linkToPrevNodeDescription ); + + if( stack.ContainsFast( this ) ) + guiNode.links = new ReferenceNodeGUI[0]; + else + { + stack.Add( this ); + + guiNode.links = new ReferenceNodeGUI[links.Count]; + for( int i = 0; i < links.Count; i++ ) + guiNode.links[i] = links[i].targetNode.GenerateGUINodeRecursive( stack, links[i].description ); + + stack.RemoveAt( stack.Count - 1 ); + } + + return guiNode; + } + + // Serialize this node and its connected nodes recursively + public int SerializeRecursively( Dictionary nodeToIndex, List serializedNodes ) + { + int index; + if( nodeToIndex.TryGetValue( this, out index ) ) + return index; + + SearchResult.SerializableNode serializedNode = new SearchResult.SerializableNode() + { + instanceId = instanceId ?? 0, + isUnityObject = instanceId.HasValue, + description = description + }; + + index = serializedNodes.Count; + nodeToIndex[this] = index; + serializedNodes.Add( serializedNode ); + + if( links.Count > 0 ) + { + serializedNode.links = new List( links.Count ); + serializedNode.linkDescriptions = new List( links.Count ); + + for( int i = 0; i < links.Count; i++ ) + { + serializedNode.links.Add( links[i].targetNode.SerializeRecursively( nodeToIndex, serializedNodes ) ); + serializedNode.linkDescriptions.Add( links[i].description ); + } + } + + return index; + } + + // Deserialize this node and its links from the serialized data + public void Deserialize( SearchResult.SerializableNode serializedNode, List allNodes ) + { + if( serializedNode.isUnityObject ) + instanceId = serializedNode.instanceId; + else + instanceId = null; + + description = serializedNode.description; + + if( serializedNode.links != null ) + { + for( int i = 0; i < serializedNode.links.Count; i++ ) + links.Add( new Link( allNodes[serializedNode.links[i]], serializedNode.linkDescriptions[i] ) ); + } + } + + public override int GetHashCode() + { + return uid; + } + } + + public class ReferenceNodeGUI + { + public GUIContent label; + public ReferenceNodeGUI[] links; + public int? instanceId; + + private int depth; + + private Vector2 offset; + public Vector2 size; + + public void CalculateDepth() + { + depth = 0; + + for( int i = 0; i < links.Length; i++ ) + { + links[i].CalculateDepth(); + if( links[i].depth > depth ) + depth = links[i].depth; + } + + depth++; + } + + public void CalculateHeight( float totalWidth ) + { + size.x = totalWidth / depth; + totalWidth -= size.x; + size.y = Utilities.BoxGUIStyle.CalcHeight( label, size.x ); + float connectedNodesHeight = 0f; + for( int i = 0; i < links.Length; i++ ) + { + links[i].CalculateHeight( totalWidth ); + connectedNodesHeight += links[i].size.y; + } + + if( size.y < connectedNodesHeight ) + size.y = connectedNodesHeight; + else if( size.y > connectedNodesHeight ) + ExpandHeightLeftToRight(); + } + + private void ExpandHeightLeftToRight() + { + float connectedNodesHeight = 0f; + for( int i = 0; i < links.Length; i++ ) + connectedNodesHeight += links[i].size.y; + + if( size.y > connectedNodesHeight ) + { + for( int i = 0; i < links.Length; i++ ) + { + links[i].size.y = size.y * links[i].size.y / connectedNodesHeight; + links[i].ExpandHeightLeftToRight(); + } + } + } + + public void CalculateOffset( Vector2 baseOffset ) + { + offset = baseOffset; + baseOffset.x += size.x; + + for( int i = 0; i < links.Length; i++ ) + { + links[i].CalculateOffset( baseOffset ); + baseOffset.y += links[i].size.y; + } + } + + public void DrawOnGUI( SearchResultDrawParameters parameters ) + { + Rect rect = parameters.guiRect; + rect.position += offset; + rect.size = size; + + if( GUI.Button( rect, label, Utilities.BoxGUIStyle ) && instanceId.HasValue ) + { + // If a reference is clicked, highlight it (either on Hierarchy view or Project view) + EditorUtility.InstanceIDToObject( instanceId.Value ).SelectInEditor(); + } + + for( int i = 0; i < links.Length; i++ ) + links[i].DrawOnGUI( parameters ); + + if( parameters.showTooltips && Event.current.type == EventType.Repaint && rect.Contains( Event.current.mousePosition ) ) + parameters.tooltip = label.text; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/AssetUsageDetector/Editor/SearchResult.cs.meta b/Assets/Plugins/AssetUsageDetector/Editor/SearchResult.cs.meta new file mode 100644 index 0000000..7764d6b --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor/SearchResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ca236e4f3c5a9f447be89f0e61e485fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/AssetUsageDetector/Editor/Utilities.cs b/Assets/Plugins/AssetUsageDetector/Editor/Utilities.cs new file mode 100644 index 0000000..17c5468 --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor/Utilities.cs @@ -0,0 +1,624 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Text; +#if UNITY_2018_1_OR_NEWER +using Unity.Collections; +#endif +using UnityEditor; +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEngine.SceneManagement; +using Object = UnityEngine.Object; +#if UNITY_2018_3_OR_NEWER +using PrefabStage = UnityEditor.SceneManagement.PrefabStage; +using PrefabStageUtility = UnityEditor.SceneManagement.PrefabStageUtility; +#endif + +namespace AssetUsageDetectorNamespace +{ + public static class Utilities + { + // A set of commonly used Unity types + private static readonly HashSet primitiveUnityTypes = new HashSet() + { + typeof( string ), typeof( Vector4 ), typeof( Vector3 ), typeof( Vector2 ), typeof( Rect ), + typeof( Quaternion ), typeof( Color ), typeof( Color32 ), typeof( LayerMask ), typeof( Bounds ), + typeof( Matrix4x4 ), typeof( AnimationCurve ), typeof( Gradient ), typeof( RectOffset ), + typeof( bool[] ), typeof( byte[] ), typeof( sbyte[] ), typeof( char[] ), typeof( decimal[] ), + typeof( double[] ), typeof( float[] ), typeof( int[] ), typeof( uint[] ), typeof( long[] ), + typeof( ulong[] ), typeof( short[] ), typeof( ushort[] ), typeof( string[] ), + typeof( Vector4[] ), typeof( Vector3[] ), typeof( Vector2[] ), typeof( Rect[] ), + typeof( Quaternion[] ), typeof( Color[] ), typeof( Color32[] ), typeof( LayerMask[] ), typeof( Bounds[] ), + typeof( Matrix4x4[] ), typeof( AnimationCurve[] ), typeof( Gradient[] ), typeof( RectOffset[] ), + typeof( List ), typeof( List ), typeof( List ), typeof( List ), typeof( List ), + typeof( List ), typeof( List ), typeof( List ), typeof( List ), typeof( List ), + typeof( List ), typeof( List ), typeof( List ), typeof( List ), + typeof( List ), typeof( List ), typeof( List ), typeof( List ), + typeof( List ), typeof( List ), typeof( List ), typeof( List ), typeof( List ), + typeof( List ), typeof( List ), typeof( List ), typeof( List ), +#if UNITY_2017_2_OR_NEWER + typeof( Vector3Int ), typeof( Vector2Int ), typeof( RectInt ), typeof( BoundsInt ), + typeof( Vector3Int[] ), typeof( Vector2Int[] ), typeof( RectInt[] ), typeof( BoundsInt[] ), + typeof( List ), typeof( List ), typeof( List ), typeof( List ) +#endif + }; + + private static readonly string reflectionNamespace = typeof( Assembly ).Namespace; +#if UNITY_2018_1_OR_NEWER + private static readonly string nativeCollectionsNamespace = typeof( NativeArray ).Namespace; +#endif + + private static readonly HashSet folderContentsSet = new HashSet(); + + private static readonly StringBuilder stringBuilder = new StringBuilder( 10 ); + +#if UNITY_2018_3_OR_NEWER + private static int previousPingedPrefabInstanceId; + private static double previousPingedPrefabPingTime; +#endif + + public static readonly GUILayoutOption GL_EXPAND_WIDTH = GUILayout.ExpandWidth( true ); + public static readonly GUILayoutOption GL_EXPAND_HEIGHT = GUILayout.ExpandHeight( true ); + public static readonly GUILayoutOption GL_WIDTH_25 = GUILayout.Width( 25 ); + public static readonly GUILayoutOption GL_WIDTH_100 = GUILayout.Width( 100 ); + public static readonly GUILayoutOption GL_WIDTH_250 = GUILayout.Width( 250 ); + public static readonly GUILayoutOption GL_HEIGHT_0 = GUILayout.Height( 0 ); + public static readonly GUILayoutOption GL_HEIGHT_2 = GUILayout.Height( 2 ); + public static readonly GUILayoutOption GL_HEIGHT_30 = GUILayout.Height( 30 ); + public static readonly GUILayoutOption GL_HEIGHT_35 = GUILayout.Height( 35 ); + public static readonly GUILayoutOption GL_HEIGHT_40 = GUILayout.Height( 40 ); + + private static GUIStyle m_boxGUIStyle; // GUIStyle used to draw the results of the search + public static GUIStyle BoxGUIStyle + { + get + { + if( m_boxGUIStyle == null ) + { + m_boxGUIStyle = new GUIStyle( EditorStyles.helpBox ) + { + alignment = TextAnchor.MiddleCenter, + font = EditorStyles.label.font + }; + + Color textColor = GUI.skin.button.normal.textColor; + m_boxGUIStyle.normal.textColor = textColor; + m_boxGUIStyle.hover.textColor = textColor; + m_boxGUIStyle.focused.textColor = textColor; + m_boxGUIStyle.active.textColor = textColor; + + m_boxGUIStyle.fontSize = ( m_boxGUIStyle.fontSize + GUI.skin.button.fontSize ) / 2; + } + + return m_boxGUIStyle; + } + } + + private static GUIStyle m_tooltipGUIStyle; // GUIStyle used to draw the tooltip + public static GUIStyle TooltipGUIStyle + { + get + { + GUIStyleState normalState; + + if( m_tooltipGUIStyle != null ) + normalState = m_tooltipGUIStyle.normal; + else + { + m_tooltipGUIStyle = new GUIStyle( EditorStyles.helpBox ) + { + alignment = TextAnchor.MiddleCenter, + font = EditorStyles.label.font + }; + + normalState = m_tooltipGUIStyle.normal; + + normalState.background = null; + normalState.scaledBackgrounds = new Texture2D[0]; + normalState.textColor = Color.black; + } + + if( normalState.background == null || normalState.background.Equals( null ) ) + { + Texture2D backgroundTexture = new Texture2D( 1, 1 ) { hideFlags = HideFlags.HideAndDontSave }; + backgroundTexture.SetPixel( 0, 0, new Color( 0.88f, 0.88f, 0.88f, 0.85f ) ); + backgroundTexture.Apply(); + + normalState.background = backgroundTexture; + } + + return m_tooltipGUIStyle; + } + } + + // Get a unique-ish string hash code for an object + public static string Hash( this object obj ) + { + if( obj is Object ) + return obj.GetHashCode().ToString(); + + return obj.GetHashCode() + obj.GetType().Name; + } + + // Check if object is an asset or a Scene object + public static bool IsAsset( this object obj ) + { + return obj is Object && AssetDatabase.Contains( (Object) obj ); + } + + // Check if object is a folder asset + public static bool IsFolder( this Object obj ) + { + return obj is DefaultAsset && AssetDatabase.IsValidFolder( AssetDatabase.GetAssetPath( obj ) ); + } + + // Returns an enumerator to iterate through all asset paths in the folder + public static IEnumerable EnumerateFolderContents( Object folderAsset ) + { + string[] folderContents = AssetDatabase.FindAssets( "", new string[] { AssetDatabase.GetAssetPath( folderAsset ) } ); + if( folderContents == null ) + return new EmptyEnumerator(); + + folderContentsSet.Clear(); + for( int i = 0; i < folderContents.Length; i++ ) + { + string filePath = AssetDatabase.GUIDToAssetPath( folderContents[i] ); + if( !string.IsNullOrEmpty( filePath ) && !AssetDatabase.IsValidFolder( filePath ) ) + folderContentsSet.Add( filePath ); + } + + return folderContentsSet; + } + + // Select an object in the editor + public static void SelectInEditor( this Object obj ) + { + if( obj == null ) + return; + + Event e = Event.current; + + // If CTRL or Shift keys are pressed, do a multi-select; + // otherwise select only the clicked object and ping it in editor + if( !e.control && !e.shift ) + Selection.activeObject = obj.PingInEditor(); + else + { + Component objAsComp = obj as Component; + GameObject objAsGO = obj as GameObject; + int selectionIndex = -1; + + Object[] selection = Selection.objects; + for( int i = 0; i < selection.Length; i++ ) + { + Object selected = selection[i]; + + // Don't allow including both a gameobject and one of its components in the selection + if( selected == obj || ( objAsComp != null && selected == objAsComp.gameObject ) || + ( objAsGO != null && selected is Component && ( (Component) selected ).gameObject == objAsGO ) ) + { + selectionIndex = i; + break; + } + } + + Object[] newSelection; + if( selectionIndex == -1 ) + { + // Include object in selection + newSelection = new Object[selection.Length + 1]; + selection.CopyTo( newSelection, 0 ); + newSelection[selection.Length] = obj; + } + else + { + // Remove object from selection + newSelection = new Object[selection.Length - 1]; + int j = 0; + for( int i = 0; i < selectionIndex; i++, j++ ) + newSelection[j] = selection[i]; + for( int i = selectionIndex + 1; i < selection.Length; i++, j++ ) + newSelection[j] = selection[i]; + } + + Selection.objects = newSelection; + } + } + + // Ping an object in either Project view or Hierarchy view + public static Object PingInEditor( this Object obj ) + { + if( obj is Component ) + obj = ( (Component) obj ).gameObject; + + Object selection = obj; + + // Pinging a prefab only works if the pinged object is the root of the prefab + // or a direct child of it. Pinging any grandchildren of the prefab + // does not work; in which case, traverse the parent hierarchy until + // a pingable parent is reached + if( obj.IsAsset() && obj is GameObject ) + { +#if UNITY_2018_3_OR_NEWER + Transform objTR = ( (GameObject) obj ).transform.root; + + PrefabAssetType prefabAssetType = PrefabUtility.GetPrefabAssetType( objTR.gameObject ); + if( prefabAssetType == PrefabAssetType.Regular || prefabAssetType == PrefabAssetType.Variant ) + { + string assetPath = AssetDatabase.GetAssetPath( objTR.gameObject ); + PrefabStage openPrefabStage = PrefabStageUtility.GetCurrentPrefabStage(); + + // Try to open the prefab stage of pinged prefabs if they are double clicked + if( previousPingedPrefabInstanceId == objTR.GetInstanceID() && EditorApplication.timeSinceStartup - previousPingedPrefabPingTime <= 0.3f && +#if UNITY_2020_1_OR_NEWER + ( openPrefabStage == null || !openPrefabStage.stageHandle.IsValid() || assetPath != openPrefabStage.assetPath ) ) +#else + ( openPrefabStage == null || !openPrefabStage.stageHandle.IsValid() || assetPath != openPrefabStage.prefabAssetPath ) ) +#endif + { + AssetDatabase.OpenAsset( objTR.gameObject ); + openPrefabStage = PrefabStageUtility.GetCurrentPrefabStage(); + } + + previousPingedPrefabInstanceId = objTR.GetInstanceID(); + previousPingedPrefabPingTime = EditorApplication.timeSinceStartup; + +#if UNITY_2020_1_OR_NEWER + if( openPrefabStage != null && openPrefabStage.stageHandle.IsValid() && assetPath == openPrefabStage.assetPath ) +#else + if( openPrefabStage != null && openPrefabStage.stageHandle.IsValid() && assetPath == openPrefabStage.prefabAssetPath ) +#endif + { + GameObject prefabStageGO = FollowSymmetricHierarchy( (GameObject) obj, ( (GameObject) obj ).transform.root.gameObject, openPrefabStage.prefabContentsRoot ); + if( prefabStageGO != null ) + { + objTR = prefabStageGO.transform; + selection = objTR.gameObject; + } + } +#if UNITY_2019_1_OR_NEWER + else if( obj != objTR.gameObject ) + { + Debug.Log( "Open " + assetPath + " in prefab mode to select and edit " + obj.name ); + selection = objTR.gameObject; + } +#else + else + Debug.Log( "Open " + assetPath + " in prefab mode to select and edit " + obj.name ); +#endif + } +#else + Transform objTR = ( (GameObject) obj ).transform; + while( objTR.parent != null && objTR.parent.parent != null ) + objTR = objTR.parent; +#endif + + obj = objTR.gameObject; + } + + EditorGUIUtility.PingObject( obj ); + return selection; + } + + // We are passing "go"s root Transform to thisRoot parameter. If we use go.transform.root instead, when we are in prefab mode on + // newer Unity versions, it points to the preview scene at the root of the prefab stage instead of pointing to the actual root of "go" + public static GameObject FollowSymmetricHierarchy( this GameObject go, GameObject thisRoot, GameObject symmetricRoot ) + { + Transform target = go.transform; + Transform root1 = thisRoot.transform; + Transform root2 = symmetricRoot.transform; + while( root1 != target ) + { + Transform temp = target; + while( temp.parent != root1 ) + temp = temp.parent; + + Transform newRoot2; + int siblingIndex = temp.GetSiblingIndex(); + if( siblingIndex < root2.childCount ) + { + newRoot2 = root2.GetChild( siblingIndex ); + if( newRoot2.name != temp.name ) + newRoot2 = root2.Find( temp.name ); + } + else + newRoot2 = root2.Find( temp.name ); + + if( newRoot2 == null ) + return null; + + root2 = newRoot2; + root1 = temp; + } + + return root2.gameObject; + } + + // Check if the field is serializable + public static bool IsSerializable( this FieldInfo fieldInfo ) + { + // See Serialization Rules: https://docs.unity3d.com/Manual/script-Serialization.html + if( fieldInfo.IsInitOnly ) + return false; + +#if UNITY_2019_3_OR_NEWER + // SerializeReference makes even System.Object fields serializable + if( Attribute.IsDefined( fieldInfo, typeof( SerializeReference ) ) ) + return true; +#endif + + if( ( !fieldInfo.IsPublic || fieldInfo.IsNotSerialized ) && !Attribute.IsDefined( fieldInfo, typeof( SerializeField ) ) ) + return false; + + return IsTypeSerializable( fieldInfo.FieldType ); + } + + // Check if the property is serializable + public static bool IsSerializable( this PropertyInfo propertyInfo ) + { + return IsTypeSerializable( propertyInfo.PropertyType ); + } + + // Check if type is serializable + private static bool IsTypeSerializable( Type type ) + { + // see Serialization Rules: https://docs.unity3d.com/Manual/script-Serialization.html + if( typeof( Object ).IsAssignableFrom( type ) ) + return true; + + if( type.IsArray ) + { + if( type.GetArrayRank() != 1 ) + return false; + + type = type.GetElementType(); + + if( typeof( Object ).IsAssignableFrom( type ) ) + return true; + } + else if( type.IsGenericType ) + { + // Generic types are allowed on 2020.1 and later +#if UNITY_2020_1_OR_NEWER + if( type.GetGenericTypeDefinition() == typeof( List<> ) ) + { + type = type.GetGenericArguments()[0]; + + if( typeof( Object ).IsAssignableFrom( type ) ) + return true; + } +#else + if( type.GetGenericTypeDefinition() != typeof( List<> ) ) + return false; + + type = type.GetGenericArguments()[0]; + + if( typeof( Object ).IsAssignableFrom( type ) ) + return true; +#endif + } + +#if !UNITY_2020_1_OR_NEWER + if( type.IsGenericType ) + return false; +#endif + + return Attribute.IsDefined( type, typeof( SerializableAttribute ), false ); + } + + // Check if instances of this type should be searched for references + public static bool IsIgnoredUnityType( this Type type ) + { + if( type.IsPrimitive || primitiveUnityTypes.Contains( type ) || type.IsEnum ) + return true; + +#if UNITY_2018_1_OR_NEWER + // Searching NativeArrays for reference can throw InvalidOperationException if the collection is disposed + if( type.Namespace == nativeCollectionsNamespace ) + return true; +#endif + + // Searching assembly variables for reference throws InvalidCastException on .NET 4.0 runtime + if( typeof( Type ).IsAssignableFrom( type ) || type.Namespace == reflectionNamespace ) + return true; + + // Searching pointers or ref variables for reference throws ArgumentException + if( type.IsPointer || type.IsByRef ) + return true; + + return false; + } + + // Get function for a field + public static VariableGetVal CreateGetter( this FieldInfo fieldInfo, Type type ) + { + // Commented the IL generator code below because it might actually be slower than simply using reflection + // Credit: https://www.codeproject.com/Articles/14560/Fast-Dynamic-Property-Field-Accessors + //DynamicMethod dm = new DynamicMethod( "Get" + fieldInfo.Name, fieldInfo.FieldType, new Type[] { typeof( object ) }, type ); + //ILGenerator il = dm.GetILGenerator(); + //// Load the instance of the object (argument 0) onto the stack + //il.Emit( OpCodes.Ldarg_0 ); + //// Load the value of the object's field (fi) onto the stack + //il.Emit( OpCodes.Ldfld, fieldInfo ); + //// return the value on the top of the stack + //il.Emit( OpCodes.Ret ); + + //return (VariableGetVal) dm.CreateDelegate( typeof( VariableGetVal ) ); + + return fieldInfo.GetValue; + } + + // Get function for a property + public static VariableGetVal CreateGetter( this PropertyInfo propertyInfo ) + { + // Can't use PropertyWrapper (which uses CreateDelegate) for property getters of structs + if( propertyInfo.DeclaringType.IsValueType ) + { + return !propertyInfo.CanRead ? (VariableGetVal) null : ( obj ) => + { + try + { + return propertyInfo.GetValue( obj, null ); + } + catch + { + // Property getters may return various kinds of exceptions if their backing fields are not initialized (yet) + return null; + } + }; + } + + Type GenType = typeof( PropertyWrapper<,> ).MakeGenericType( propertyInfo.DeclaringType, propertyInfo.PropertyType ); + return ( (IPropertyAccessor) Activator.CreateInstance( GenType, propertyInfo.GetGetMethod( true ) ) ).GetValue; + } + + // Check if all open scenes are saved (not dirty) + public static bool AreScenesSaved() + { + for( int i = 0; i < SceneManager.loadedSceneCount; i++ ) + { + Scene scene = EditorSceneManager.GetSceneAt( i ); + if( scene.isDirty || string.IsNullOrEmpty( scene.path ) ) + return false; + } + + return true; + } + + // Returns file extension in lowercase (period not included) + public static string GetFileExtension( string path ) + { + int extensionIndex = path.LastIndexOf( '.' ); + if( extensionIndex < 0 || extensionIndex >= path.Length - 1 ) + return ""; + + stringBuilder.Length = 0; + for( extensionIndex++; extensionIndex < path.Length; extensionIndex++ ) + { + char ch = path[extensionIndex]; + if( ch >= 65 && ch <= 90 ) // A-Z + ch += (char) 32; // Converted to a-z + + stringBuilder.Append( ch ); + } + + return stringBuilder.ToString(); + } + + // Draw horizontal line inside OnGUI + public static void DrawSeparatorLine() + { + GUILayout.Space( 4 ); + GUILayout.Box( "", GL_HEIGHT_2, GL_EXPAND_WIDTH ); + GUILayout.Space( 4 ); + } + + // Check if all the objects inside the list are null + public static bool IsEmpty( this List objectsToSearch ) + { + if( objectsToSearch == null ) + return true; + + for( int i = 0; i < objectsToSearch.Count; i++ ) + { + if( objectsToSearch[i].obj != null && !objectsToSearch[i].obj.Equals( null ) ) + return false; + } + + return true; + } + + // Check if all the objects inside the list are null + public static bool IsEmpty( this List objects ) + { + if( objects == null ) + return true; + + for( int i = 0; i < objects.Count; i++ ) + { + if( objects[i] != null && !objects[i].Equals( null ) ) + return false; + } + + return true; + } + + // Check if all the objects that are enumerated are null + public static bool IsEmpty( this IEnumerable objects ) + { + if( objects == null ) + return true; + + using( IEnumerator enumerator = objects.GetEnumerator() ) + { + while( enumerator.MoveNext() ) + { + if( enumerator.Current != null && !enumerator.Current.Equals( null ) ) + return false; + } + } + + return true; + } + + // Returns true is str starts with prefix + public static bool StartsWithFast( this string str, string prefix ) + { + int aLen = str.Length; + int bLen = prefix.Length; + int ap = 0; int bp = 0; + while( ap < aLen && bp < bLen && str[ap] == prefix[bp] ) + { + ap++; + bp++; + } + + return bp == bLen; + } + + // Returns true is str ends with postfix + public static bool EndsWithFast( this string str, string postfix ) + { + int ap = str.Length - 1; + int bp = postfix.Length - 1; + while( ap >= 0 && bp >= 0 && str[ap] == postfix[bp] ) + { + ap--; + bp--; + } + + return bp < 0; + } + + public static bool ContainsFast( this List list, T element ) + { + if( !( element is ValueType ) ) + { + for( int i = list.Count - 1; i >= 0; i-- ) + { + if( ReferenceEquals( list[i], element ) ) + return true; + } + } + else + { + for( int i = list.Count - 1; i >= 0; i-- ) + { + if( element.Equals( list[i] ) ) + return true; + } + } + + return false; + } + + public static void RemoveAtFast( this List list, int index ) + { + int lastElementIndex = list.Count - 1; + + list[index] = list[lastElementIndex]; + list.RemoveAt( lastElementIndex ); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/AssetUsageDetector/Editor/Utilities.cs.meta b/Assets/Plugins/AssetUsageDetector/Editor/Utilities.cs.meta new file mode 100644 index 0000000..2daf8ac --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor/Utilities.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 52b272b7591fb90499916205261524e0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/AssetUsageDetector/Editor/VariableGetter.cs b/Assets/Plugins/AssetUsageDetector/Editor/VariableGetter.cs new file mode 100644 index 0000000..32af9d1 --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor/VariableGetter.cs @@ -0,0 +1,77 @@ +using System; +using System.Reflection; +using UnityEngine; + +namespace AssetUsageDetectorNamespace +{ + // Delegate to get the value of a variable (either field or property) + public delegate object VariableGetVal( object obj ); + + // Custom struct to hold a variable, its important properties and its getter function + public struct VariableGetterHolder + { + public readonly string name; + public readonly bool isProperty; + public readonly bool isSerializable; + private readonly VariableGetVal getter; + + public VariableGetterHolder( FieldInfo fieldInfo, VariableGetVal getter, bool isSerializable ) + { + name = fieldInfo.Name; + isProperty = false; + this.isSerializable = isSerializable; + this.getter = getter; + } + + public VariableGetterHolder( PropertyInfo propertyInfo, VariableGetVal getter, bool isSerializable ) + { + name = propertyInfo.Name; + isProperty = true; + this.isSerializable = isSerializable; + this.getter = getter; + } + + public object Get( object obj ) + { + try + { + return getter( obj ); + } + catch( Exception e ) + { + Debug.LogException( e ); + return null; + } + } + } + + // Credit: http://stackoverflow.com/questions/724143/how-do-i-create-a-delegate-for-a-net-property + public interface IPropertyAccessor + { + object GetValue( object source ); + } + + // A wrapper class for properties to get their values more efficiently + public class PropertyWrapper : IPropertyAccessor where TObject : class + { + private readonly Func getter; + + public PropertyWrapper( MethodInfo getterMethod ) + { + getter = (Func) Delegate.CreateDelegate( typeof( Func ), getterMethod ); + } + + public object GetValue( object obj ) + { + try + { + return getter( (TObject) obj ); + } + catch + { + // Property getters may return various kinds of exceptions if their backing fields are not initialized (yet) + return null; + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/AssetUsageDetector/Editor/VariableGetter.cs.meta b/Assets/Plugins/AssetUsageDetector/Editor/VariableGetter.cs.meta new file mode 100644 index 0000000..b78cc0e --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/Editor/VariableGetter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9e94c83e8b850514ca0217aeff1491a6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/AssetUsageDetector/README.txt b/Assets/Plugins/AssetUsageDetector/README.txt new file mode 100644 index 0000000..35dd350 --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/README.txt @@ -0,0 +1,19 @@ += Asset Usage Detector = + +Online documentation available at: https://github.com/yasirkula/UnityAssetUsageDetector +E-mail: yasirkula@gmail.com + +1. ABOUT +This tool helps you find usages of the selected asset(s) and/or Object(s) in your Unity project, i.e. lists the objects that refer to them. + +2. HOW TO +Open "Window-Asset Usage Detector" window, configure the settings and hit GO! You can also right click an object and select "Search For References". + +In the search results page, each row represents a reference to the searched Object(s). Rows can be traversed from left to right to see how the +references are formed. If a node's label contains text inside square brackets (e.g. [Child object]), then that text describes how that node is +connected to the node to its left. + +3. KNOWN LIMITATIONS +- static variables are not searched +- GUIText materials are not searched +- Textures in Lens Flare's can not be searched \ No newline at end of file diff --git a/Assets/Plugins/AssetUsageDetector/README.txt.meta b/Assets/Plugins/AssetUsageDetector/README.txt.meta new file mode 100644 index 0000000..6670523 --- /dev/null +++ b/Assets/Plugins/AssetUsageDetector/README.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ac528f1751f33a647a45caeff6a9344b +timeCreated: 1520032521 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Canvas.prefab b/Assets/Prefabs/Canvas.prefab new file mode 100644 index 0000000..4fac619 --- /dev/null +++ b/Assets/Prefabs/Canvas.prefab @@ -0,0 +1,5873 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &73899100221092598 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 665900816233871994} + - component: {fileID: 1343845613656587607} + - component: {fileID: 6171995908134741431} + - component: {fileID: 5434729043444238458} + m_Layer: 5 + m_Name: StartButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &665900816233871994 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 73899100221092598} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2455003536545058133} + m_Father: {fileID: 1470315230727515781} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -244.4} + m_SizeDelta: {x: 200, y: 80} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1343845613656587607 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 73899100221092598} + m_CullTransparentMesh: 1 +--- !u!114 &6171995908134741431 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 73899100221092598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.2765015, g: 1, b: 0.16470587, 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: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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!114 &5434729043444238458 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 73899100221092598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 6171995908134741431} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 8285666427425058440} + m_TargetAssemblyTypeName: MultiplayerMenuManager, Assembly-CSharp + m_MethodName: OnClick_HostConfirm + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &561346164736881600 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9132440943566000578} + - component: {fileID: 5767172255544950830} + - component: {fileID: 5408305302596080550} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9132440943566000578 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 561346164736881600} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2702723000485381811} + 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!222 &5767172255544950830 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 561346164736881600} + m_CullTransparentMesh: 1 +--- !u!114 &5408305302596080550 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 561346164736881600} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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_text: "\u200B" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 72 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &1086170983501044727 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8742509263236858058} + - component: {fileID: 8148854234960593718} + - component: {fileID: 8501315834948595216} + - component: {fileID: 328328925423406335} + m_Layer: 5 + m_Name: Join + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8742509263236858058 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1086170983501044727} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 149676007927585728} + m_Father: {fileID: 2641614154656405342} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -244.4} + m_SizeDelta: {x: 200, y: 80} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8148854234960593718 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1086170983501044727} + m_CullTransparentMesh: 1 +--- !u!114 &8501315834948595216 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1086170983501044727} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.2765015, g: 1, b: 0.16470587, 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: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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!114 &328328925423406335 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1086170983501044727} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 8501315834948595216} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 8285666427425058440} + m_TargetAssemblyTypeName: MultiplayerMenuManager, Assembly-CSharp + m_MethodName: OnClick_JoinConfirm + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &1174227437193597206 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1847513365402499299} + - component: {fileID: 5409182865589999357} + - component: {fileID: 4090554544232004468} + - component: {fileID: 3361895007166077541} + m_Layer: 5 + m_Name: CreateLobby + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1847513365402499299 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1174227437193597206} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 9144939127786175525} + m_Father: {fileID: 4976776449307386904} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -75} + m_SizeDelta: {x: 220, y: 80} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5409182865589999357 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1174227437193597206} + m_CullTransparentMesh: 1 +--- !u!114 &4090554544232004468 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1174227437193597206} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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!114 &3361895007166077541 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1174227437193597206} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 4090554544232004468} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1270717422094196017 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3175479817170857301} + - component: {fileID: 4553711299742769166} + - component: {fileID: 5654312068470944961} + - component: {fileID: 9058188732251713728} + m_Layer: 5 + m_Name: Scroll View + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3175479817170857301 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1270717422094196017} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 438438280841350265} + - {fileID: 2426737039926020160} + - {fileID: 1976146987017506902} + m_Father: {fileID: 2291375829584835354} + 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: -7.5} + m_SizeDelta: {x: 0, y: -15.000104} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4553711299742769166 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1270717422094196017} + m_CullTransparentMesh: 1 +--- !u!114 &5654312068470944961 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1270717422094196017} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.019607844} + 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: 10907, guid: 0000000000000000f000000000000000, type: 0} + 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!114 &9058188732251713728 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1270717422094196017} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 4874929987586356482} + m_Horizontal: 1 + m_Vertical: 1 + m_MovementType: 1 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 1 + m_Viewport: {fileID: 438438280841350265} + m_HorizontalScrollbar: {fileID: 8326130919688162140} + m_VerticalScrollbar: {fileID: 2041939161459562237} + m_HorizontalScrollbarVisibility: 2 + m_VerticalScrollbarVisibility: 2 + m_HorizontalScrollbarSpacing: -3 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1301514973098407562 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6034091370083856540} + - component: {fileID: 9060189460042301140} + - component: {fileID: 2574880217956845265} + m_Layer: 5 + m_Name: StatusText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6034091370083856540 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1301514973098407562} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2291375829584835354} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -40, y: 90} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &9060189460042301140 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1301514973098407562} + m_CullTransparentMesh: 1 +--- !u!114 &2574880217956845265 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1301514973098407562} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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_text: Looking for game sessions + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 72 + m_fontSizeBase: 36 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &1302340230618501828 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8502326765401376543} + - component: {fileID: 6674797626985872689} + - component: {fileID: 5173738127255899123} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8502326765401376543 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1302340230618501828} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4547220069889039500} + 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!222 &6674797626985872689 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1302340230618501828} + m_CullTransparentMesh: 1 +--- !u!114 &5173738127255899123 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1302340230618501828} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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_text: JOIN + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 56.3 + m_fontSizeBase: 24 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 56.3 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &1306949486696838562 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1470315230727515781} + - component: {fileID: 56724265380966261} + - component: {fileID: 1206123893631168478} + m_Layer: 5 + m_Name: HostPopup + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1470315230727515781 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1306949486696838562} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2131165794297525836} + - {fileID: 361934270318706578} + - {fileID: 665900816233871994} + m_Father: {fileID: 6109585134547126256} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 750, y: 750} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &56724265380966261 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1306949486696838562} + m_CullTransparentMesh: 1 +--- !u!114 &1206123893631168478 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1306949486696838562} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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: 0} + m_Type: 0 + 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!1 &1897315440235921666 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8659266328202691878} + - component: {fileID: 8799292426328812487} + - component: {fileID: 8482257735192268573} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8659266328202691878 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1897315440235921666} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4481679860259891930} + 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.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8799292426328812487 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1897315440235921666} + m_CullTransparentMesh: 1 +--- !u!114 &8482257735192268573 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1897315440235921666} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1509434, g: 0.1509434, b: 0.1509434, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 70 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!1 &1957145502558765402 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1320159086995070871} + - component: {fileID: 2398331859629333884} + - component: {fileID: 1281728426907847807} + m_Layer: 5 + m_Name: EnterNameBG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1320159086995070871 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1957145502558765402} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2367397908843835530} + m_Father: {fileID: 1141108103228121215} + 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: 142.5} + m_SizeDelta: {x: -400, y: -815} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2398331859629333884 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1957145502558765402} + m_CullTransparentMesh: 1 +--- !u!114 &1281728426907847807 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1957145502558765402} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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: 0} + m_Type: 0 + 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!1 &2225737473876104741 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3691379389854139912} + - component: {fileID: 5391098469490632767} + - component: {fileID: 5166148522325086797} + - component: {fileID: 7507670487444693614} + m_Layer: 5 + m_Name: InputField (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3691379389854139912 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2225737473876104741} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2702723000485381811} + m_Father: {fileID: 8857662956731884805} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 645.5, y: 130} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &5391098469490632767 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2225737473876104741} + m_CullTransparentMesh: 1 +--- !u!114 &5166148522325086797 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2225737473876104741} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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: 10911, guid: 0000000000000000f000000000000000, type: 0} + 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!114 &7507670487444693614 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2225737473876104741} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 5166148522325086797} + m_TextViewport: {fileID: 2702723000485381811} + m_TextComponent: {fileID: 5408305302596080550} + m_Placeholder: {fileID: 7778421248382480884} + m_VerticalScrollbar: {fileID: 0} + m_VerticalScrollbarEventHandler: {fileID: 0} + m_LayoutGroup: {fileID: 0} + m_ScrollSensitivity: 1 + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_HideSoftKeyboard: 0 + m_CharacterValidation: 0 + m_RegexValue: + m_GlobalPointSize: 14 + m_CharacterLimit: 15 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnSelect: + m_PersistentCalls: + m_Calls: [] + m_OnDeselect: + m_PersistentCalls: + m_Calls: [] + m_OnTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnEndTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_OnTouchScreenKeyboardStatusChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_RichText: 1 + m_GlobalFontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_OnFocusSelectAll: 1 + m_ResetOnDeActivation: 1 + m_RestoreOriginalTextOnEscape: 1 + m_isRichTextEditingAllowed: 0 + m_LineLimit: 0 + m_InputValidator: {fileID: 0} +--- !u!1 &2352919958230471785 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8639105769645607785} + - component: {fileID: 7709340046649761927} + - component: {fileID: 6977837135612384471} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8639105769645607785 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2352919958230471785} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4481679860259891930} + 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.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7709340046649761927 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2352919958230471785} + m_CullTransparentMesh: 1 +--- !u!114 &6977837135612384471 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2352919958230471785} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.87058824} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 2 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 70 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Enter IP... +--- !u!1 &2413034606444246598 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 186833666868956447} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &186833666868956447 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2413034606444246598} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3040470028333382925} + m_Father: {fileID: 2426737039926020160} + 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: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &2421850343262425989 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6521973115436023769} + - component: {fileID: 2038683696869128370} + - component: {fileID: 1626341694292410587} + - component: {fileID: 3590654631356017148} + m_Layer: 5 + m_Name: InputField (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6521973115436023769 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2421850343262425989} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2653610769107521600} + m_Father: {fileID: 1141108103228121215} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -200, y: 102.1} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2038683696869128370 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2421850343262425989} + m_CullTransparentMesh: 1 +--- !u!114 &1626341694292410587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2421850343262425989} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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: 10911, guid: 0000000000000000f000000000000000, type: 0} + 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!114 &3590654631356017148 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2421850343262425989} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1626341694292410587} + m_TextViewport: {fileID: 2653610769107521600} + m_TextComponent: {fileID: 7027104006092809851} + m_Placeholder: {fileID: 7309656017242974081} + m_VerticalScrollbar: {fileID: 0} + m_VerticalScrollbarEventHandler: {fileID: 0} + m_LayoutGroup: {fileID: 0} + m_ScrollSensitivity: 1 + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_HideSoftKeyboard: 0 + m_CharacterValidation: 0 + m_RegexValue: + m_GlobalPointSize: 14 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnSelect: + m_PersistentCalls: + m_Calls: [] + m_OnDeselect: + m_PersistentCalls: + m_Calls: [] + m_OnTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnEndTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_OnTouchScreenKeyboardStatusChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_RichText: 1 + m_GlobalFontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_OnFocusSelectAll: 1 + m_ResetOnDeActivation: 1 + m_RestoreOriginalTextOnEscape: 1 + m_isRichTextEditingAllowed: 0 + m_LineLimit: 0 + m_InputValidator: {fileID: 0} +--- !u!1 &2438987660076684180 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6109585134547126256} + m_Layer: 5 + m_Name: PreviousUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &6109585134547126256 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2438987660076684180} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1368345561272753505} + - {fileID: 4547220069889039500} + - {fileID: 1470315230727515781} + - {fileID: 2641614154656405342} + m_Father: {fileID: 3740811534331983930} + 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!1 &2451143409740057779 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2536533142079272676} + - component: {fileID: 2129045373245036906} + - component: {fileID: 2441533683916068861} + - component: {fileID: 7108158629134052203} + m_Layer: 5 + m_Name: EnterName + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2536533142079272676 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2451143409740057779} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3984049735066789713} + m_Father: {fileID: 1141108103228121215} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 250} + m_SizeDelta: {x: 220, y: 80} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2129045373245036906 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2451143409740057779} + m_CullTransparentMesh: 1 +--- !u!114 &2441533683916068861 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2451143409740057779} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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!114 &7108158629134052203 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2451143409740057779} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2441533683916068861} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &2841273772668505899 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2702723000485381811} + - component: {fileID: 348635584853339793} + m_Layer: 5 + m_Name: Text Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2702723000485381811 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2841273772668505899} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7224111103404905017} + - {fileID: 9132440943566000578} + m_Father: {fileID: 3691379389854139912} + 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.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &348635584853339793 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2841273772668505899} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: {x: -8, y: -5, z: -8, w: -5} + m_Softness: {x: 0, y: 0} +--- !u!1 &3021369392878438263 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 149676007927585728} + - component: {fileID: 1918578963100319546} + - component: {fileID: 9016827810642330465} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &149676007927585728 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3021369392878438263} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8742509263236858058} + 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!222 &1918578963100319546 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3021369392878438263} + m_CullTransparentMesh: 1 +--- !u!114 &9016827810642330465 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3021369392878438263} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 51 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Join +--- !u!1 &3028678108102663517 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7224111103404905017} + - component: {fileID: 7075190244173694436} + - component: {fileID: 7778421248382480884} + - component: {fileID: 4387467461063110517} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7224111103404905017 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3028678108102663517} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2702723000485381811} + 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: -50, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7075190244173694436 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3028678108102663517} + m_CullTransparentMesh: 1 +--- !u!114 &7778421248382480884 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3028678108102663517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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_text: Enter Lobby Name... + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 3862049330 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.9019608} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 62.55 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 2 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!114 &4387467461063110517 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3028678108102663517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &3122090976140935232 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8707409790204792829} + - component: {fileID: 3901323366822070570} + - component: {fileID: 6214276356930843633} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8707409790204792829 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3122090976140935232} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4987465252922591516} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3901323366822070570 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3122090976140935232} + m_CullTransparentMesh: 1 +--- !u!114 &6214276356930843633 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3122090976140935232} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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!1 &3142042198814292706 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2455003536545058133} + - component: {fileID: 7731042507004281426} + - component: {fileID: 2933727984681939048} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2455003536545058133 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3142042198814292706} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 665900816233871994} + 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!222 &7731042507004281426 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3142042198814292706} + m_CullTransparentMesh: 1 +--- !u!114 &2933727984681939048 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3142042198814292706} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 51 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Start +--- !u!1 &3262750912586975635 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 361934270318706578} + - component: {fileID: 1099309537232818393} + - component: {fileID: 797816885675924132} + m_Layer: 5 + m_Name: HOSTIP + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &361934270318706578 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3262750912586975635} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1470315230727515781} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 70} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1099309537232818393 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3262750912586975635} + m_CullTransparentMesh: 1 +--- !u!114 &797816885675924132 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3262750912586975635} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 70 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &3346034708648220120 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3791741298601242781} + - component: {fileID: 5581484490589520625} + - component: {fileID: 4569350357511934552} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3791741298601242781 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3346034708648220120} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6902472176167553319} + 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!222 &5581484490589520625 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3346034708648220120} + m_CullTransparentMesh: 1 +--- !u!114 &4569350357511934552 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3346034708648220120} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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_text: X + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 72 + m_fontSizeBase: 24 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &3378947958664547224 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3040470028333382925} + - component: {fileID: 4079059115894161831} + - component: {fileID: 5872490174388742532} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3040470028333382925 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3378947958664547224} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 186833666868956447} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4079059115894161831 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3378947958664547224} + m_CullTransparentMesh: 1 +--- !u!114 &5872490174388742532 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3378947958664547224} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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!1 &3947691173607146335 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2131165794297525836} + - component: {fileID: 6955643662136035386} + - component: {fileID: 7465432630183260805} + - component: {fileID: 3114848852877551298} + m_Layer: 5 + m_Name: CloseButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2131165794297525836 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3947691173607146335} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 150617636152300999} + m_Father: {fileID: 1470315230727515781} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 48.1, y: 49.2} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 1, y: 1} +--- !u!222 &6955643662136035386 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3947691173607146335} + m_CullTransparentMesh: 1 +--- !u!114 &7465432630183260805 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3947691173607146335} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.745283, g: 0, b: 0, 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: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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!114 &3114848852877551298 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3947691173607146335} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 7465432630183260805} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 8285666427425058440} + m_TargetAssemblyTypeName: MultiplayerMenuManager, Assembly-CSharp + m_MethodName: OnClick_CloseAllPopups + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &3966073723413854291 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4481679860259891930} + - component: {fileID: 7361049695537338949} + - component: {fileID: 4259748096987746576} + - component: {fileID: 7131537637847741338} + m_Layer: 5 + m_Name: InputField (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4481679860259891930 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3966073723413854291} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8639105769645607785} + - {fileID: 8659266328202691878} + m_Father: {fileID: 2641614154656405342} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7361049695537338949 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3966073723413854291} + m_CullTransparentMesh: 1 +--- !u!114 &4259748096987746576 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3966073723413854291} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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: 10911, guid: 0000000000000000f000000000000000, type: 0} + 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!114 &7131537637847741338 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3966073723413854291} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 4259748096987746576} + m_TextComponent: {fileID: 8482257735192268573} + m_Placeholder: {fileID: 6977837135612384471} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnDidEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!1 &3979895830281071394 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4889408969639716848} + - component: {fileID: 1179261898941862496} + - component: {fileID: 7027104006092809851} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4889408969639716848 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3979895830281071394} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2653610769107521600} + 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!222 &1179261898941862496 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3979895830281071394} + m_CullTransparentMesh: 1 +--- !u!114 &7027104006092809851 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3979895830281071394} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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_text: "\u200B" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 72 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &4193812225886552081 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4987465252922591516} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4987465252922591516 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4193812225886552081} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8707409790204792829} + m_Father: {fileID: 1976146987017506902} + 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: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4279637754556182931 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1141108103228121215} + - component: {fileID: 4528419966858257622} + - component: {fileID: 2416366933215288378} + m_Layer: 5 + m_Name: EnterNamePanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1141108103228121215 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4279637754556182931} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2536533142079272676} + - {fileID: 1320159086995070871} + - {fileID: 6521973115436023769} + m_Father: {fileID: 3740811534331983930} + 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: -200, y: -1000} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4528419966858257622 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4279637754556182931} + m_CullTransparentMesh: 1 +--- !u!114 &2416366933215288378 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4279637754556182931} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.3, g: 0.3, b: 0.3, 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: 0} + m_Type: 0 + 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!1 &4373682201199814395 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1368345561272753505} + - component: {fileID: 7691604177314690029} + - component: {fileID: 3278025981786238360} + - component: {fileID: 6553717487940990013} + m_Layer: 5 + m_Name: HostButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1368345561272753505 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4373682201199814395} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4338754289234484398} + m_Father: {fileID: 6109585134547126256} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 75} + m_SizeDelta: {x: 200, y: 80} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7691604177314690029 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4373682201199814395} + m_CullTransparentMesh: 1 +--- !u!114 &3278025981786238360 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4373682201199814395} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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!114 &6553717487940990013 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4373682201199814395} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 3278025981786238360} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 8285666427425058440} + m_TargetAssemblyTypeName: MultiplayerMenuManager, Assembly-CSharp + m_MethodName: OnClick_Host + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &4492785514555057587 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2426737039926020160} + - component: {fileID: 1017046270086071548} + - component: {fileID: 9042714328964574178} + - component: {fileID: 8326130919688162140} + m_Layer: 5 + m_Name: Scrollbar Horizontal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2426737039926020160 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4492785514555057587} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 186833666868956447} + m_Father: {fileID: 3175479817170857301} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 20} + m_Pivot: {x: 0, y: 0} +--- !u!222 &1017046270086071548 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4492785514555057587} + m_CullTransparentMesh: 1 +--- !u!114 &9042714328964574178 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4492785514555057587} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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: 10907, guid: 0000000000000000f000000000000000, type: 0} + 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!114 &8326130919688162140 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4492785514555057587} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 5872490174388742532} + m_HandleRect: {fileID: 3040470028333382925} + m_Direction: 0 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &4494597177833228271 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3078625675083350959} + - component: {fileID: 4702112628849124157} + - component: {fileID: 683380682223292775} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3078625675083350959 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4494597177833228271} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3740811534331983930} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 87.04} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4702112628849124157 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4494597177833228271} + m_CullTransparentMesh: 1 +--- !u!114 &683380682223292775 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4494597177833228271} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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_text: Waiting for player + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 72 + m_fontSizeBase: 36 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &4654297315502396909 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2641614154656405342} + - component: {fileID: 1299660426783752596} + - component: {fileID: 5796116894466315887} + m_Layer: 5 + m_Name: JoinPopup + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &2641614154656405342 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4654297315502396909} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6902472176167553319} + - {fileID: 4481679860259891930} + - {fileID: 8742509263236858058} + m_Father: {fileID: 6109585134547126256} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 750, y: 750} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1299660426783752596 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4654297315502396909} + m_CullTransparentMesh: 1 +--- !u!114 &5796116894466315887 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4654297315502396909} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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: 0} + m_Type: 0 + 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!1 &4774485536965209434 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1976146987017506902} + - component: {fileID: 2322246895810169247} + - component: {fileID: 535871758426168733} + - component: {fileID: 2041939161459562237} + m_Layer: 5 + m_Name: Scrollbar Vertical + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1976146987017506902 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4774485536965209434} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4987465252922591516} + m_Father: {fileID: 3175479817170857301} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 1, y: 1} +--- !u!222 &2322246895810169247 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4774485536965209434} + m_CullTransparentMesh: 1 +--- !u!114 &535871758426168733 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4774485536965209434} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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: 10907, guid: 0000000000000000f000000000000000, type: 0} + 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!114 &2041939161459562237 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4774485536965209434} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 6214276356930843633} + m_HandleRect: {fileID: 8707409790204792829} + m_Direction: 2 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &4812570014104075204 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3740811534331983930} + - component: {fileID: 6682165898575205043} + - component: {fileID: 5261998283744310781} + - component: {fileID: 5575841601705297200} + - component: {fileID: 8285666427425058440} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3740811534331983930 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4812570014104075204} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6109585134547126256} + - {fileID: 4976776449307386904} + - {fileID: 1141108103228121215} + - {fileID: 3078625675083350959} + - {fileID: 2291375829584835354} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &6682165898575205043 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4812570014104075204} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &5261998283744310781 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4812570014104075204} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1080, y: 1920} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!114 &5575841601705297200 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4812570014104075204} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &8285666427425058440 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4812570014104075204} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5c7910c0c5d39bb47b6ce491363c38be, type: 3} + m_Name: + m_EditorClassIdentifier: + hostPopup: {fileID: 1306949486696838562} + joinPopup: {fileID: 0} + hostIPText: {fileID: 797816885675924132} + joinIPInput: {fileID: 7131537637847741338} +--- !u!1 &4990346881556524389 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2367397908843835530} + - component: {fileID: 2998829406452000679} + - component: {fileID: 2035874629584434642} + m_Layer: 5 + m_Name: EnterNameDummy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2367397908843835530 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4990346881556524389} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1320159086995070871} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 400, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2998829406452000679 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4990346881556524389} + m_CullTransparentMesh: 1 +--- !u!114 &2035874629584434642 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4990346881556524389} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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_text: Enter Player Name + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 44.75 + m_fontSizeBase: 36 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &4991091028333647141 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4976776449307386904} + m_Layer: 5 + m_Name: LobbyPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &4976776449307386904 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4991091028333647141} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 531243317249896940} + - {fileID: 1847513365402499299} + m_Father: {fileID: 3740811534331983930} + 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!1 &5249343229960044340 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4338754289234484398} + - component: {fileID: 5949863126324025988} + - component: {fileID: 6113044717276491920} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4338754289234484398 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5249343229960044340} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1368345561272753505} + 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!222 &5949863126324025988 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5249343229960044340} + m_CullTransparentMesh: 1 +--- !u!114 &6113044717276491920 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5249343229960044340} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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_text: HOST + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 56.3 + m_fontSizeBase: 24 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 56.3 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &5625078179169839775 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4874929987586356482} + - component: {fileID: 788562258754217505} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4874929987586356482 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5625078179169839775} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 438438280841350265} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -943, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &788562258754217505 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5625078179169839775} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 30 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &5840802587158338013 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 438438280841350265} + - component: {fileID: 380947709346892585} + - component: {fileID: 8541642033635889152} + - component: {fileID: 4882432256635678358} + m_Layer: 5 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &438438280841350265 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5840802587158338013} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4874929987586356482} + m_Father: {fileID: 3175479817170857301} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!222 &380947709346892585 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5840802587158338013} + m_CullTransparentMesh: 1 +--- !u!114 &8541642033635889152 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5840802587158338013} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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: 10917, guid: 0000000000000000f000000000000000, type: 0} + 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!114 &4882432256635678358 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5840802587158338013} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!1 &5897091807740168973 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2291375829584835354} + - component: {fileID: 2706072202480312715} + m_Layer: 5 + m_Name: SessionListPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2291375829584835354 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5897091807740168973} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5976576957290826623} + - {fileID: 327491712195402691} + - {fileID: 3175479817170857301} + - {fileID: 6034091370083856540} + - {fileID: 8857662956731884805} + m_Father: {fileID: 3740811534331983930} + 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: 100} + m_SizeDelta: {x: -120, y: -800} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2706072202480312715 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5897091807740168973} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 27334717233631a469c0f138d1462662, type: 3} + m_Name: + m_EditorClassIdentifier: + statusText: {fileID: 2574880217956845265} + sessionItemListPrefab: {fileID: 7569151483051384423, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + verticalLayoutGroup: {fileID: 788562258754217505} +--- !u!1 &6197828264560749313 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5976576957290826623} + - component: {fileID: 2164215325022448252} + - component: {fileID: 8919553660976886782} + m_Layer: 5 + m_Name: BG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5976576957290826623 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6197828264560749313} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2291375829584835354} + 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!222 &2164215325022448252 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6197828264560749313} + m_CullTransparentMesh: 1 +--- !u!114 &8919553660976886782 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6197828264560749313} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31243324, g: 0.35165074, b: 0.5566038, 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: 0} + m_Type: 0 + 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!1 &6426666927560438779 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 531243317249896940} + - component: {fileID: 2652375973026741484} + - component: {fileID: 9151093392998980950} + - component: {fileID: 665703980906757801} + m_Layer: 5 + m_Name: JoinLobby + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &531243317249896940 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6426666927560438779} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8068308699195766947} + m_Father: {fileID: 4976776449307386904} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 75} + m_SizeDelta: {x: 220, y: 80} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2652375973026741484 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6426666927560438779} + m_CullTransparentMesh: 1 +--- !u!114 &9151093392998980950 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6426666927560438779} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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!114 &665703980906757801 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6426666927560438779} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 9151093392998980950} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &6581323693309561787 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1148562997480340006} + - component: {fileID: 946811217606976517} + - component: {fileID: 4410543564798182283} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1148562997480340006 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6581323693309561787} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6829107997934682266} + 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!222 &946811217606976517 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6581323693309561787} + m_CullTransparentMesh: 1 +--- !u!114 &4410543564798182283 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6581323693309561787} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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_text: Create Session + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 57.3 + m_fontSizeBase: 24 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &6651090675839653641 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8068308699195766947} + - component: {fileID: 1614065012293976009} + - component: {fileID: 1936421890733472363} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8068308699195766947 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6651090675839653641} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 531243317249896940} + 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!222 &1614065012293976009 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6651090675839653641} + m_CullTransparentMesh: 1 +--- !u!114 &1936421890733472363 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6651090675839653641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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_text: Join Lobby + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 36.65 + m_fontSizeBase: 36.65 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &7058641468774366968 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3984049735066789713} + - component: {fileID: 7003953270230166596} + - component: {fileID: 7038237420851067759} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3984049735066789713 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7058641468774366968} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2536533142079272676} + 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!222 &7003953270230166596 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7058641468774366968} + m_CullTransparentMesh: 1 +--- !u!114 &7038237420851067759 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7058641468774366968} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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_text: SAVE + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 71.6 + m_fontSizeBase: 24 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &7137625116082853229 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6902472176167553319} + - component: {fileID: 1764478298065419510} + - component: {fileID: 5862730217652327471} + - component: {fileID: 6404530723299399076} + m_Layer: 5 + m_Name: CloseButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6902472176167553319 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7137625116082853229} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3791741298601242781} + m_Father: {fileID: 2641614154656405342} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 48.1, y: 49.2} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 1, y: 1} +--- !u!222 &1764478298065419510 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7137625116082853229} + m_CullTransparentMesh: 1 +--- !u!114 &5862730217652327471 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7137625116082853229} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.745283, g: 0, b: 0, 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: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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!114 &6404530723299399076 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7137625116082853229} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 5862730217652327471} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 8285666427425058440} + m_TargetAssemblyTypeName: MultiplayerMenuManager, Assembly-CSharp + m_MethodName: OnClick_CloseAllPopups + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &7299804941300131336 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8857662956731884805} + m_Layer: 5 + m_Name: CreateLobbyArea + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8857662956731884805 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7299804941300131336} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6829107997934682266} + - {fileID: 3691379389854139912} + m_Father: {fileID: 2291375829584835354} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: -202.4} + m_SizeDelta: {x: 0, y: 150} + m_Pivot: {x: 0.5, y: 0} +--- !u!1 &7572536894569468067 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6829107997934682266} + - component: {fileID: 7825575508041960718} + - component: {fileID: 1085128861855993432} + - component: {fileID: 7416957822121483513} + m_Layer: 5 + m_Name: CreateSessionButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6829107997934682266 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7572536894569468067} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1148562997480340006} + m_Father: {fileID: 8857662956731884805} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 263.8, y: 130} + m_Pivot: {x: 1, y: 0.5} +--- !u!222 &7825575508041960718 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7572536894569468067} + m_CullTransparentMesh: 1 +--- !u!114 &1085128861855993432 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7572536894569468067} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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!114 &7416957822121483513 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7572536894569468067} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1085128861855993432} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_TargetAssemblyTypeName: FusionLauncher, Assembly-CSharp + m_MethodName: CreateLobby + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &7851773802212535793 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2653610769107521600} + - component: {fileID: 3798861669891543244} + m_Layer: 5 + m_Name: Text Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2653610769107521600 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7851773802212535793} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2216191169742807236} + - {fileID: 4889408969639716848} + m_Father: {fileID: 6521973115436023769} + 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.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &3798861669891543244 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7851773802212535793} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: {x: -8, y: -5, z: -8, w: -5} + m_Softness: {x: 0, y: 0} +--- !u!1 &8521341590316953201 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4547220069889039500} + - component: {fileID: 5540492937791213107} + - component: {fileID: 3867830735128090250} + - component: {fileID: 5211624843538861185} + m_Layer: 5 + m_Name: JoinButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4547220069889039500 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8521341590316953201} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8502326765401376543} + m_Father: {fileID: 6109585134547126256} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -75} + m_SizeDelta: {x: 200, y: 80} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5540492937791213107 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8521341590316953201} + m_CullTransparentMesh: 1 +--- !u!114 &3867830735128090250 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8521341590316953201} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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: 10905, guid: 0000000000000000f000000000000000, type: 0} + 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!114 &5211624843538861185 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8521341590316953201} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 3867830735128090250} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 8285666427425058440} + m_TargetAssemblyTypeName: MultiplayerMenuManager, Assembly-CSharp + m_MethodName: OnClick_Join + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &8547470812684445590 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9144939127786175525} + - component: {fileID: 5721039513199822477} + - component: {fileID: 1022251438348088176} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9144939127786175525 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8547470812684445590} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1847513365402499299} + 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!222 &5721039513199822477 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8547470812684445590} + m_CullTransparentMesh: 1 +--- !u!114 &1022251438348088176 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8547470812684445590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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_text: Create Lobby + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 36.65 + m_fontSizeBase: 24 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &8716577202036790150 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2216191169742807236} + - component: {fileID: 5104128210062564655} + - component: {fileID: 7309656017242974081} + - component: {fileID: 586509542780353116} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2216191169742807236 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8716577202036790150} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2653610769107521600} + 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!222 &5104128210062564655 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8716577202036790150} + m_CullTransparentMesh: 1 +--- !u!114 &7309656017242974081 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8716577202036790150} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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_text: + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 2150773298 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 14 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 2 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!114 &586509542780353116 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8716577202036790150} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &9204941872500537972 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 150617636152300999} + - component: {fileID: 2332764580476627875} + - component: {fileID: 8759073283639177765} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &150617636152300999 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9204941872500537972} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2131165794297525836} + 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!222 &2332764580476627875 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9204941872500537972} + m_CullTransparentMesh: 1 +--- !u!114 &8759073283639177765 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9204941872500537972} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + 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_text: X + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 72 + m_fontSizeBase: 24 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1001 &3921745794473352790 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 2291375829584835354} + m_Modifications: + - target: {fileID: 1054626397041665074, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_Color.b + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1054626397041665074, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_Color.g + value: 0.1745283 + objectReference: {fileID: 0} + - target: {fileID: 1054626397041665074, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_Color.r + value: 0.22125323 + objectReference: {fileID: 0} + - target: {fileID: 1120236924525325949, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_AnchorMax.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_AnchorMin.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_SizeDelta.x + value: 960 + objectReference: {fileID: 0} + - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_SizeDelta.y + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_AnchoredPosition.y + value: 660 + objectReference: {fileID: 0} + - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7569151483051384423, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + propertyPath: m_Name + value: SessionTitle + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: e979cf17a9d80474386883ffad28fd42, type: 3} +--- !u!224 &327491712195402691 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + m_PrefabInstance: {fileID: 3921745794473352790} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Prefabs/Canvas.prefab.meta b/Assets/Prefabs/Canvas.prefab.meta new file mode 100644 index 0000000..9a7f44c --- /dev/null +++ b/Assets/Prefabs/Canvas.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0ba097670ddbd3f409bacec1bdcffe60 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Player.prefab b/Assets/Prefabs/Player.prefab index 780b247..6cb7bcc 100644 --- a/Assets/Prefabs/Player.prefab +++ b/Assets/Prefabs/Player.prefab @@ -1,38 +1,6 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!1 &435705045764837465 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3226499851666629583} - m_Layer: 6 - m_Name: Mazda - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &3226499851666629583 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 435705045764837465} - serializedVersion: 2 - m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1076547100095614248} - m_Father: {fileID: 6916985649869243490} - m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} ---- !u!1 &626723106366601156 +--- !u!1 &2192976184219720364 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -40,47 +8,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 84038960421261887} - - component: {fileID: 2564726116656940017} - - component: {fileID: 6663576220648232158} + - component: {fileID: 1672444639989337543} + - component: {fileID: 7438406277822851816} + - component: {fileID: 6240239830454016561} m_Layer: 6 - m_Name: Cylinder + m_Name: Wheel_Back_L m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &84038960421261887 +--- !u!4 &1672444639989337543 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 626723106366601156} + m_GameObject: {fileID: 2192976184219720364} serializedVersion: 2 - m_LocalRotation: {x: -0.70710677, y: -0, z: -0, w: 0.7071068} - m_LocalPosition: {x: -0.30800155, y: -0.3399991, z: -0.49613777} - m_LocalScale: {x: 0.10431114, y: 0.023578702, z: 0.070517465} + m_LocalRotation: {x: 0.00000008146034, y: -0.00000004371139, z: 3.560745e-15, w: 1} + m_LocalPosition: {x: -1.292, y: 0.334, z: -2.235} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 8096266409734623510} - m_Father: {fileID: 6118429012727029098} - m_LocalEulerAnglesHint: {x: -89.981, y: 0, z: 0} ---- !u!33 &2564726116656940017 + m_Children: [] + m_Father: {fileID: 5232010396526986649} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7438406277822851816 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 626723106366601156} - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &6663576220648232158 + m_GameObject: {fileID: 2192976184219720364} + m_Mesh: {fileID: 4300028, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} +--- !u!23 &6240239830454016561 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 626723106366601156} + m_GameObject: {fileID: 2192976184219720364} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 @@ -94,7 +61,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 2100000, guid: 96d9c902e61354248bb428719567f189, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -103,10 +70,10 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 - m_StitchLightmapSeams: 0 + m_StitchLightmapSeams: 1 m_SelectedEditorRenderState: 3 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 @@ -116,7 +83,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &698050507628736291 +--- !u!1 &2810042475747425853 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -124,52 +91,106 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1528492443941058631} - - component: {fileID: 9000960891750726260} - - component: {fileID: 5382712498175581934} + - component: {fileID: 2266507765795612964} + - component: {fileID: 2918063940594996821} m_Layer: 6 - m_Name: SkidRL + m_Name: Collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2266507765795612964 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2810042475747425853} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.39, z: -3.3699994} + m_LocalScale: {x: 0.5, y: 0.28, z: 1.2499999} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4431542291951001293} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!64 &2918063940594996821 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2810042475747425853} + m_Material: {fileID: 13400000, guid: b8b1ae7ca19f4cd4194b4505bd39dc06, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 5060444177187149915, guid: 99af9074067c389458d2a716374b8f42, type: 3} +--- !u!1 &2829335707906387965 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3834359949582389767} + - component: {fileID: 3937104101128757055} + - component: {fileID: 8764986576751414787} + m_Layer: 6 + m_Name: SkidRR m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1528492443941058631 +--- !u!4 &3834359949582389767 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 698050507628736291} + m_GameObject: {fileID: 2829335707906387965} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: 0.70710677, w: 0.7071068} - m_LocalPosition: {x: -1.302, y: 0.06500316, z: -2.418} - m_LocalScale: {x: 0.7536238, y: 0.22608706, z: 0.894325} + m_LocalPosition: {x: 0.86900055, y: -0.14499955, z: -1.5090002} + m_LocalScale: {x: 0.5024134, y: 0.15072668, z: 0.59622} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1762526813149383710} + m_Father: {fileID: 5232010396526986649} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90.00001} ---- !u!114 &9000960891750726260 +--- !u!114 &3937104101128757055 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 698050507628736291} + m_GameObject: {fileID: 2829335707906387965} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: de695257d46f68648a759bca131f0afe, type: 3} m_Name: m_EditorClassIdentifier: _driftEffect: {fileID: 0} ---- !u!96 &5382712498175581934 +--- !u!96 &8764986576751414787 TrailRenderer: serializedVersion: 3 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 698050507628736291} + m_GameObject: {fileID: 2829335707906387965} m_Enabled: 0 m_CastShadows: 1 m_ReceiveShadows: 1 @@ -266,7 +287,7 @@ TrailRenderer: m_Autodestruct: 0 m_Emitting: 1 m_ApplyActiveColorSpace: 0 ---- !u!1 &859089779821409110 +--- !u!1 &3067970480224447241 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -274,46 +295,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1996295117967270797} - - component: {fileID: 6197741949574967842} - - component: {fileID: 7521214933862820584} + - component: {fileID: 8680394452251988295} + - component: {fileID: 5337483041725024036} + - component: {fileID: 6318049027298034118} m_Layer: 6 - m_Name: trunk + m_Name: Glass_11 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1996295117967270797 +--- !u!4 &8680394452251988295 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 859089779821409110} + m_GameObject: {fileID: 3067970480224447241} serializedVersion: 2 - m_LocalRotation: {x: 0.7071067, y: -0.000000084293696, z: -0.000000022476465, w: 0.7071068} - m_LocalPosition: {x: -0.000009667969, y: 1.1746628, z: 0.78250426} - m_LocalScale: {x: 100, y: 100.000015, z: 100.000015} + m_LocalRotation: {x: 0.00000008146034, y: -0.00000004371139, z: 3.560745e-15, w: 1} + m_LocalPosition: {x: 0.00000019757346, y: -0.13912919, z: -0.15670183} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1076547100095614248} + m_Father: {fileID: 5232010396526986649} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &6197741949574967842 +--- !u!33 &5337483041725024036 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 859089779821409110} - m_Mesh: {fileID: -1682125421048621038, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} ---- !u!23 &7521214933862820584 + m_GameObject: {fileID: 3067970480224447241} + m_Mesh: {fileID: 4300022, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} +--- !u!23 &6318049027298034118 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 859089779821409110} + m_GameObject: {fileID: 3067970480224447241} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 @@ -327,10 +348,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: -5149717236700318645, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -7998116918101663598, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -3596882150153649281, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 623467474444848304, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} + - {fileID: 2100000, guid: 767769731782fe9409ca4e22077acbd3, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -352,7 +370,51 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &913415776717621905 +--- !u!1 &3261787744023920864 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5232010396526986649} + m_Layer: 6 + m_Name: Car_11 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5232010396526986649 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3261787744023920864} + serializedVersion: 2 + 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_ConstrainProportionsScale: 1 + m_Children: + - {fileID: 7015308072600729786} + - {fileID: 8680394452251988295} + - {fileID: 4711483572375990403} + - {fileID: 5468423092481466504} + - {fileID: 8565247240076481468} + - {fileID: 1672444639989337543} + - {fileID: 6181287152015309424} + - {fileID: 7728721352201334614} + - {fileID: 4488184777392333071} + - {fileID: 3834359949582389767} + - {fileID: 7086864719022814836} + - {fileID: 1368923039882444265} + - {fileID: 3247130376224316042} + m_Father: {fileID: 6916985649869243490} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3694237512130845483 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -360,4711 +422,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4701244711278288455} - - component: {fileID: 9039292724163014826} - - component: {fileID: 1505695959496750466} + - component: {fileID: 4488184777392333071} + - component: {fileID: 1842507426309031076} + - component: {fileID: 8536542080551445843} m_Layer: 6 - m_Name: Exhaust + m_Name: Wheel_R m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4701244711278288455 +--- !u!4 &4488184777392333071 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 913415776717621905} + m_GameObject: {fileID: 3694237512130845483} serializedVersion: 2 - m_LocalRotation: {x: -0.00000019861236, y: -0.7071068, z: -0.7071068, w: 0.00000019861236} - m_LocalPosition: {x: 0, y: 1.21, z: 0} + m_LocalRotation: {x: 0.00000008146034, y: -0.00000004371139, z: 3.560745e-15, w: 1} + m_LocalPosition: {x: 1.292, y: 0.334, z: 1.693} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 8753720637810679181} - m_LocalEulerAnglesHint: {x: -90, y: 0, z: -179.99998} ---- !u!198 &9039292724163014826 -ParticleSystem: + m_Father: {fileID: 5232010396526986649} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1842507426309031076 +MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 913415776717621905} - serializedVersion: 8 - lengthInSec: 5 - simulationSpeed: 1 - stopAction: 0 - cullingMode: 3 - ringBufferMode: 0 - ringBufferLoopRange: {x: 0, y: 1} - emitterVelocityMode: 1 - looping: 1 - prewarm: 1 - playOnAwake: 1 - useUnscaledTime: 0 - autoRandomSeed: 1 - startDelay: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - moveWithTransform: 1 - moveWithCustomTransform: {fileID: 0} - scalingMode: 2 - randomSeed: 0 - InitialModule: - serializedVersion: 3 - enabled: 1 - startLifetime: - serializedVersion: 2 - minMaxState: 3 - scalar: 1.5 - minScalar: 0.5 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0.33333334 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - startSpeed: - serializedVersion: 2 - minMaxState: 3 - scalar: 1 - minScalar: 0.8 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0.8 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - startColor: - serializedVersion: 2 - minMaxState: 0 - minColor: {r: 1, g: 1, b: 1, a: 1} - maxColor: {r: 0.77254903, g: 0.77254903, b: 0.77254903, a: 1} - maxGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - minGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - startSize: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - startSizeY: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - startSizeZ: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - startRotationX: - serializedVersion: 2 - minMaxState: 3 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - startRotationY: - serializedVersion: 2 - minMaxState: 3 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - startRotation: - serializedVersion: 2 - minMaxState: 3 - scalar: 0.87266463 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - randomizeRotationDirection: 0 - gravitySource: 0 - maxNumParticles: 1000 - customEmitterVelocity: {x: 0, y: 0, z: 0} - size3D: 0 - rotation3D: 0 - gravityModifier: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - ShapeModule: - serializedVersion: 6 - enabled: 1 - type: 4 - angle: 5.98 - length: 5 - boxThickness: {x: 0, y: 0, z: 0} - radiusThickness: 1 - donutRadius: 0.2 - m_Position: {x: 0, y: 0, z: 0} - m_Rotation: {x: 0, y: 0, z: 0} - m_Scale: {x: 1, y: 1, z: 1} - placementMode: 0 - m_MeshMaterialIndex: 0 - m_MeshNormalOffset: 0 - m_MeshSpawn: - mode: 0 - spread: 0 - speed: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - m_Mesh: {fileID: 0} - m_MeshRenderer: {fileID: 0} - m_SkinnedMeshRenderer: {fileID: 0} - m_Sprite: {fileID: 0} - m_SpriteRenderer: {fileID: 0} - m_UseMeshMaterialIndex: 0 - m_UseMeshColors: 1 - alignToDirection: 0 - m_Texture: {fileID: 0} - m_TextureClipChannel: 3 - m_TextureClipThreshold: 0 - m_TextureUVChannel: 0 - m_TextureColorAffectsParticles: 1 - m_TextureAlphaAffectsParticles: 1 - m_TextureBilinearFiltering: 0 - randomDirectionAmount: 0 - sphericalDirectionAmount: 0 - randomPositionAmount: 0 - radius: - value: 0.01 - mode: 0 - spread: 0 - speed: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - arc: - value: 360 - mode: 0 - spread: 0 - speed: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - EmissionModule: - enabled: 1 - serializedVersion: 4 - rateOverTime: - serializedVersion: 2 - minMaxState: 0 - scalar: 20 - minScalar: 10 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - rateOverDistance: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - m_BurstCount: 0 - m_Bursts: [] - SizeModule: - enabled: 1 - curve: - serializedVersion: 2 - minMaxState: 1 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0.16666669 - inSlope: 3.5883613 - outSlope: 3.5883613 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: -0.13572983 - outSlope: -0.13572983 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - y: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - z: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - separateAxes: 0 - RotationModule: - enabled: 0 - x: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - y: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - curve: - serializedVersion: 2 - minMaxState: 0 - scalar: 0.7853982 - minScalar: 0.7853982 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - separateAxes: 0 - ColorModule: - enabled: 1 - gradient: - serializedVersion: 2 - minMaxState: 1 - minColor: {r: 1, g: 1, b: 1, a: 1} - maxColor: {r: 1, g: 1, b: 1, a: 1} - maxGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 50308 - atime2: 65535 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 3 - minGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - UVModule: - serializedVersion: 2 - enabled: 1 - mode: 0 - timeMode: 0 - fps: 30 - frameOverTime: - serializedVersion: 2 - minMaxState: 0 - scalar: 0.9999 - minScalar: 0.9999 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 0 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - startFrame: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - speedRange: {x: 0, y: 1} - tilesX: 8 - tilesY: 3 - animationType: 0 - rowIndex: 0 - cycles: 1 - uvChannelMask: -1 - rowMode: 1 - sprites: - - sprite: {fileID: 0} - flipU: 0 - flipV: 0 - VelocityModule: - enabled: 0 - x: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - y: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - z: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - orbitalX: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - orbitalY: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - orbitalZ: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - orbitalOffsetX: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - orbitalOffsetY: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - orbitalOffsetZ: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - radial: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - speedModifier: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - inWorldSpace: 0 - InheritVelocityModule: - enabled: 1 - m_Mode: 1 - m_Curve: - serializedVersion: 2 - minMaxState: 0 - scalar: 0.5 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - LifetimeByEmitterSpeedModule: - enabled: 0 - m_Curve: - serializedVersion: 2 - minMaxState: 1 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: -0.8 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0.2 - inSlope: -0.8 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - m_Range: {x: 0, y: 1} - ForceModule: - enabled: 1 - x: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - y: - serializedVersion: 2 - minMaxState: 0 - scalar: 0.8 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - z: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - inWorldSpace: 1 - randomizePerFrame: 0 - ExternalForcesModule: - serializedVersion: 2 - enabled: 0 - multiplierCurve: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - influenceFilter: 0 - influenceMask: - serializedVersion: 2 - m_Bits: 4294967295 - influenceList: [] - ClampVelocityModule: - enabled: 0 - x: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - y: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - z: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - magnitude: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - separateAxis: 0 - inWorldSpace: 0 - multiplyDragByParticleSize: 1 - multiplyDragByParticleVelocity: 1 - dampen: 1 - drag: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - NoiseModule: - enabled: 0 - strength: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - strengthY: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - strengthZ: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - separateAxes: 0 - frequency: 0.5 - damping: 1 - octaves: 1 - octaveMultiplier: 0.5 - octaveScale: 2 - quality: 2 - scrollSpeed: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - remap: - serializedVersion: 2 - minMaxState: 1 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - remapY: - serializedVersion: 2 - minMaxState: 1 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - remapZ: - serializedVersion: 2 - minMaxState: 1 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - remapEnabled: 0 - positionAmount: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - rotationAmount: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - sizeAmount: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - SizeBySpeedModule: - enabled: 0 - curve: - serializedVersion: 2 - minMaxState: 1 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - y: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - z: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - range: {x: 0, y: 1} - separateAxes: 0 - RotationBySpeedModule: - enabled: 0 - x: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - y: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - curve: - serializedVersion: 2 - minMaxState: 0 - scalar: 0.7853982 - minScalar: 0.7853982 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - separateAxes: 0 - range: {x: 0, y: 1} - ColorBySpeedModule: - enabled: 0 - gradient: - serializedVersion: 2 - minMaxState: 1 - minColor: {r: 1, g: 1, b: 1, a: 1} - maxColor: {r: 1, g: 1, b: 1, a: 1} - maxGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - minGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - range: {x: 0, y: 1} - CollisionModule: - enabled: 0 - serializedVersion: 4 - type: 0 - collisionMode: 0 - colliderForce: 0 - multiplyColliderForceByParticleSize: 0 - multiplyColliderForceByParticleSpeed: 0 - multiplyColliderForceByCollisionAngle: 1 - m_Planes: - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - m_Dampen: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - m_Bounce: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - m_EnergyLossOnCollision: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minKillSpeed: 0 - maxKillSpeed: 10000 - radiusScale: 1 - collidesWith: - serializedVersion: 2 - m_Bits: 4294967295 - maxCollisionShapes: 256 - quality: 0 - voxelSize: 0.5 - collisionMessages: 0 - collidesWithDynamic: 1 - interiorCollisions: 1 - TriggerModule: - enabled: 0 - serializedVersion: 2 - inside: 1 - outside: 0 - enter: 0 - exit: 0 - colliderQueryMode: 0 - radiusScale: 1 - primitives: - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - SubModule: - serializedVersion: 2 - enabled: 0 - subEmitters: - - serializedVersion: 3 - emitter: {fileID: 0} - type: 0 - properties: 0 - emitProbability: 1 - LightsModule: - enabled: 0 - ratio: 0 - light: {fileID: 0} - randomDistribution: 1 - color: 1 - range: 1 - intensity: 1 - rangeCurve: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - intensityCurve: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - maxLights: 20 - TrailModule: - enabled: 0 - mode: 0 - ratio: 1 - lifetime: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minVertexDistance: 0.2 - textureMode: 0 - textureScale: {x: 1, y: 1} - ribbonCount: 1 - shadowBias: 0.5 - worldSpace: 0 - dieWithParticles: 1 - sizeAffectsWidth: 1 - sizeAffectsLifetime: 0 - inheritParticleColor: 1 - generateLightingData: 0 - splitSubEmitterRibbons: 0 - attachRibbonsToTransform: 0 - colorOverLifetime: - serializedVersion: 2 - minMaxState: 0 - minColor: {r: 1, g: 1, b: 1, a: 1} - maxColor: {r: 1, g: 1, b: 1, a: 1} - maxGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - minGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - widthOverTrail: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - colorOverTrail: - serializedVersion: 2 - minMaxState: 0 - minColor: {r: 1, g: 1, b: 1, a: 1} - maxColor: {r: 1, g: 1, b: 1, a: 1} - maxGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - minGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - CustomDataModule: - enabled: 0 - mode0: 0 - vectorComponentCount0: 4 - color0: - serializedVersion: 2 - minMaxState: 0 - minColor: {r: 1, g: 1, b: 1, a: 1} - maxColor: {r: 1, g: 1, b: 1, a: 1} - maxGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - minGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - colorLabel0: Color - vector0_0: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - vectorLabel0_0: X - vector0_1: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - vectorLabel0_1: Y - vector0_2: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - vectorLabel0_2: Z - vector0_3: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - vectorLabel0_3: W - mode1: 0 - vectorComponentCount1: 4 - color1: - serializedVersion: 2 - minMaxState: 0 - minColor: {r: 1, g: 1, b: 1, a: 1} - maxColor: {r: 1, g: 1, b: 1, a: 1} - maxGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - minGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - colorLabel1: Color - vector1_0: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - vectorLabel1_0: X - vector1_1: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - vectorLabel1_1: Y - vector1_2: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - vectorLabel1_2: Z - vector1_3: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - vectorLabel1_3: W ---- !u!199 &1505695959496750466 -ParticleSystemRenderer: - serializedVersion: 6 + m_GameObject: {fileID: 3694237512130845483} + m_Mesh: {fileID: 4300012, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} +--- !u!23 &8536542080551445843 +MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 913415776717621905} + m_GameObject: {fileID: 3694237512130845483} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 @@ -5073,12 +470,12 @@ ParticleSystemRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 - m_RayTracingMode: 0 + m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 21166e1a1f7367349b6f45af6eb79a4d, type: 2} + - {fileID: 2100000, guid: 96d9c902e61354248bb428719567f189, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -5090,7 +487,7 @@ ParticleSystemRenderer: m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 - m_StitchLightmapSeams: 0 + m_StitchLightmapSeams: 1 m_SelectedEditorRenderState: 3 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 @@ -5099,39 +496,8 @@ ParticleSystemRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 - m_RenderMode: 0 - m_MeshDistribution: 0 - m_SortMode: 0 - m_MinParticleSize: 0 - m_MaxParticleSize: 0.5 - m_CameraVelocityScale: 0 - m_VelocityScale: 0 - m_LengthScale: 2 - m_SortingFudge: 0 - m_NormalDirection: 1 - m_ShadowBias: 0 - m_RenderAlignment: 0 - m_Pivot: {x: 0, y: 0, z: 0} - m_Flip: {x: 0, y: 0, z: 0} - m_EnableGPUInstancing: 0 - m_ApplyActiveColorSpace: 0 - m_AllowRoll: 1 - m_FreeformStretching: 0 - m_RotateWithStretchDirection: 1 - m_UseCustomVertexStreams: 0 - m_VertexStreams: 0001030405 - m_UseCustomTrailVertexStreams: 0 - m_TrailVertexStreams: 00010304 - m_Mesh: {fileID: 0} - m_Mesh1: {fileID: 0} - m_Mesh2: {fileID: 0} - m_Mesh3: {fileID: 0} - m_MeshWeighting: 1 - m_MeshWeighting1: 1 - m_MeshWeighting2: 1 - m_MeshWeighting3: 1 - m_MaskInteraction: 0 ---- !u!1 &1206200523518889850 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &3925442450897464563 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5139,46 +505,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 6803286133500254843} - - component: {fileID: 1594210206718728218} - - component: {fileID: 262702581224657110} + - component: {fileID: 7015308072600729786} + - component: {fileID: 36960728362727297} + - component: {fileID: 1647803835742587026} m_Layer: 6 - m_Name: TyreRR + m_Name: Body_11 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &6803286133500254843 +--- !u!4 &7015308072600729786 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1206200523518889850} + m_GameObject: {fileID: 3925442450897464563} serializedVersion: 2 - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -1.1519774, y: 0.62128484, z: 2.1675112} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalRotation: {x: 0.00000008146034, y: -0.00000004371139, z: 3.560745e-15, w: 1} + m_LocalPosition: {x: 0.00000019757346, y: -0.13912919, z: -0.15670183} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1762526813149383710} + m_Father: {fileID: 5232010396526986649} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &1594210206718728218 +--- !u!33 &36960728362727297 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1206200523518889850} - m_Mesh: {fileID: -3545214919853387217, guid: 0f7dae97ae93d014786ee5392eca4af1, type: 3} ---- !u!23 &262702581224657110 + m_GameObject: {fileID: 3925442450897464563} + m_Mesh: {fileID: 4300020, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} +--- !u!23 &1647803835742587026 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1206200523518889850} + m_GameObject: {fileID: 3925442450897464563} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 @@ -5192,7 +558,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2079939459439163040, guid: 0f7dae97ae93d014786ee5392eca4af1, type: 3} + - {fileID: 2100000, guid: bc40aad1e584c59478d18648dd399adc, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -5214,7 +580,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1304922765932868536 +--- !u!1 &4196981368632589304 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5222,139 +588,188 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 6110885311344095320} - m_Layer: 6 - m_Name: Wheel Colliders - m_TagString: Untagged + - component: {fileID: 7224142285838282542} + - component: {fileID: 961411950535835066} + - component: {fileID: 3230930961156683196} + - component: {fileID: 8687607069231598364} + - component: {fileID: 2693913534197745363} + - component: {fileID: 7003429168577440424} + m_Layer: 0 + m_Name: MainCamera + m_TagString: MainCamera m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &6110885311344095320 +--- !u!4 &7224142285838282542 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1304922765932868536} + m_GameObject: {fileID: 4196981368632589304} serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: -0.32392752, z: -0.2238974} - m_LocalScale: {x: 0.8702858, y: 1.3167922, z: 0.2023657} + m_LocalRotation: {x: 0.066227354, y: -0.00000077486027, z: 0.000000052154057, w: 0.9978046} + m_LocalPosition: {x: -0.039999012, y: 1.9171162, z: -7.660001} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 9035732956440355652} - - {fileID: 1471854269737141469} - - {fileID: 2653566318636586633} - - {fileID: 5338032165720225922} - m_Father: {fileID: 6118429012727029098} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1646382698965813095 -GameObject: + m_Children: [] + m_Father: {fileID: 4431542291951001293} + m_LocalEulerAnglesHint: {x: 0, y: -90, z: 0} +--- !u!20 &961411950535835066 +Camera: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5763596736878298102} - - component: {fileID: 6719089714438531905} - - component: {fileID: 6270054571221936268} - - component: {fileID: 3091358296341614339} - m_Layer: 6 - m_Name: Wheel_FR - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5763596736878298102 -Transform: + m_GameObject: {fileID: 4196981368632589304} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!81 &3230930961156683196 +AudioListener: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1646382698965813095} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: 0.70710677, w: 0.7071068} - m_LocalPosition: {x: 0.7525581, y: -0.27344704, z: 2.9900002} - m_LocalScale: {x: 0.7536237, y: 0.22608705, z: 0.7536235} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 2751043706430728651} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90.00001} ---- !u!33 &6719089714438531905 -MeshFilter: + m_GameObject: {fileID: 4196981368632589304} + m_Enabled: 1 +--- !u!114 &8687607069231598364 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1646382698965813095} - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &6270054571221936268 -MeshRenderer: + m_GameObject: {fileID: 4196981368632589304} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7d9264e55c762cb4881b015501e3a0a5, type: 3} + m_Name: + m_EditorClassIdentifier: + target: {fileID: 5232010396526986649} + baseDistance: 6 + maxDistance: 6 + zoomSpeed: 5 + followSmoothness: 5 + heightOffset: {x: 0, y: 3, z: 0} +--- !u!114 &2693913534197745363 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1646382698965813095} + m_GameObject: {fileID: 4196981368632589304} m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - 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: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - 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!135 &3091358296341614339 -SphereCollider: + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e76209d84eb35e742b0070ddc0561242, type: 3} + m_Name: + m_EditorClassIdentifier: + Distance: 0.01 + FastFilter: 4 + motionBlurMaterial: {fileID: 2100000, guid: e751ebcfded655041b633ff6a5f4b87d, type: 2} + mask: {fileID: 2800000, guid: fadde0ef1c1559641bb445997f51f160, type: 3} +--- !u!114 &7003429168577440424 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1646382698965813095} - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 0 - m_ProvidesContacts: 0 - m_Enabled: 0 - serializedVersion: 3 - m_Radius: 1.0000002 - m_Center: {x: 0.000000059604645, y: -4.2351647e-21, z: 0.000015169382} ---- !u!1 &1767186455130773720 + m_GameObject: {fileID: 4196981368632589304} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 948f4100a11a5c24981795d21301da5c, type: 3} + m_Name: + m_EditorClassIdentifier: + volumeTrigger: {fileID: 7224142285838282542} + volumeLayer: + serializedVersion: 2 + m_Bits: 193 + stopNaNPropagation: 1 + finalBlitToCameraTarget: 0 + antialiasingMode: 0 + temporalAntialiasing: + jitterSpread: 0.75 + sharpness: 0.25 + stationaryBlending: 0.95 + motionBlending: 0.85 + subpixelMorphologicalAntialiasing: + quality: 2 + fastApproximateAntialiasing: + fastMode: 0 + keepAlpha: 0 + fog: + enabled: 1 + excludeSkybox: 1 + debugLayer: + lightMeter: + width: 512 + height: 256 + showCurves: 1 + histogram: + width: 512 + height: 256 + channel: 3 + waveform: + exposure: 0.12 + height: 256 + vectorscope: + size: 256 + exposure: 0.12 + overlaySettings: + linearDepth: 0 + motionColorIntensity: 4 + motionGridSize: 64 + colorBlindnessType: 0 + colorBlindnessStrength: 1 + m_Resources: {fileID: 11400000, guid: d82512f9c8e5d4a4d938b575d47f88d4, type: 2} + m_ShowToolkit: 1 + m_ShowCustomSorter: 1 + breakBeforeColorGrading: 0 + m_BeforeTransparentBundles: [] + m_BeforeStackBundles: [] + m_AfterStackBundles: [] +--- !u!1 &4523264193148367460 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5362,85 +777,120 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 5064165004536092304} - - component: {fileID: 4147676425898162954} - - component: {fileID: 1328552291722723726} - m_Layer: 6 - m_Name: back_bumper + - component: {fileID: 5884097417447939891} + - component: {fileID: 1654061785997455814} + - component: {fileID: 6038027056347595344} + - component: {fileID: 6397768575863822657} + m_Layer: 3 + m_Name: SphereRB m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &5064165004536092304 +--- !u!4 &5884097417447939891 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1767186455130773720} + m_GameObject: {fileID: 4523264193148367460} serializedVersion: 2 - m_LocalRotation: {x: 0.000000053385083, y: 0.7071068, z: -0.7071067, w: -0.000000053385072} - m_LocalPosition: {x: 0.0009670898, y: 2.9568849, z: -0.17547934} - m_LocalScale: {x: 100, y: 100.000015, z: 100.000015} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.86, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1076547100095614248} + m_Father: {fileID: 4431542291951001293} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &4147676425898162954 -MeshFilter: +--- !u!135 &1654061785997455814 +SphereCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1767186455130773720} - m_Mesh: {fileID: 6850406835523532547, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} ---- !u!23 &1328552291722723726 -MeshRenderer: + m_GameObject: {fileID: 4523264193148367460} + m_Material: {fileID: 13400000, guid: fe43720314558424185967ccff2c6354, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 1.1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!54 &6038027056347595344 +Rigidbody: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1767186455130773720} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 950087371587980544, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -5149717236700318645, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -7998116918101663598, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 848521547590345460, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - 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!1 &1878435168482095836 + m_GameObject: {fileID: 4523264193148367460} + serializedVersion: 4 + m_Mass: 5 + m_Drag: 2 + m_AngularDrag: 2 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 0 + m_CollisionDetection: 1 +--- !u!59 &6397768575863822657 +HingeJoint: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4523264193148367460} + m_ConnectedBody: {fileID: 2160202759945831052} + m_ConnectedArticulationBody: {fileID: 0} + m_Anchor: {x: 0, y: 0, z: 0} + m_Axis: {x: 1, y: 0, z: 0} + m_AutoConfigureConnectedAnchor: 1 + m_ConnectedAnchor: {x: 0, y: 0.20000076, z: 0} + serializedVersion: 2 + m_UseSpring: 0 + m_Spring: + spring: 10000 + damper: 10 + targetPosition: 0 + m_UseMotor: 0 + m_Motor: + targetVelocity: 0 + force: 0 + freeSpin: 0 + m_UseLimits: 0 + m_ExtendedLimits: 0 + m_UseAcceleration: 0 + m_Limits: + min: 0 + max: 0 + bounciness: 0 + bounceMinVelocity: 0.2 + contactDistance: 0 + m_BreakForce: Infinity + m_BreakTorque: Infinity + m_EnableCollision: 0 + m_EnablePreprocessing: 1 + m_MassScale: 1 + m_ConnectedMassScale: 1 +--- !u!1 &5097956068855214732 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5448,8110 +898,292 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 6970494082404099418} - - component: {fileID: 6663596786161004473} - - component: {fileID: 4965503589446646918} + - component: {fileID: 4431542291951001293} + - component: {fileID: 3020599757856457735} + - component: {fileID: 2945888187208384748} + - component: {fileID: 2160202759945831052} + - component: {fileID: 8676106736576983865} + - component: {fileID: 3319685825615813417} + - component: {fileID: 4958469121034036348} + - component: {fileID: 6967074992816454093} m_Layer: 6 - m_Name: Car_body + m_Name: Player m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &6970494082404099418 +--- !u!4 &4431542291951001293 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1878435168482095836} + m_GameObject: {fileID: 5097956068855214732} serializedVersion: 2 - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -0, y: 0, z: 0} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1762526813149383710} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &6663596786161004473 -MeshFilter: + m_Children: + - {fileID: 7224142285838282542} + - {fileID: 2266507765795612964} + - {fileID: 5884097417447939891} + - {fileID: 6916985649869243490} + - {fileID: 4727001567768885926} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} +--- !u!114 &3020599757856457735 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1878435168482095836} - m_Mesh: {fileID: 7068456697462396867, guid: 0f7dae97ae93d014786ee5392eca4af1, type: 3} ---- !u!23 &4965503589446646918 -MeshRenderer: + m_GameObject: {fileID: 5097956068855214732} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1552182283, guid: e725a070cec140c4caffb81624c8c787, type: 3} + m_Name: + m_EditorClassIdentifier: + SortKey: 4082538716 + ObjectInterest: 1 + Flags: 786433 + NestedObjects: [] + NetworkedBehaviours: + - {fileID: 2945888187208384748} + - {fileID: 8676106736576983865} + - {fileID: 3319685825615813417} + - {fileID: 4958469121034036348} + - {fileID: 6967074992816454093} + ForceRemoteRenderTimeframe: 0 +--- !u!114 &2945888187208384748 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1878435168482095836} + m_GameObject: {fileID: 5097956068855214732} m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2079939459439163040, guid: 0f7dae97ae93d014786ee5392eca4af1, type: 3} - 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!1 &2192976184219720364 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1672444639989337543} - - component: {fileID: 7438406277822851816} - - component: {fileID: 6240239830454016561} - m_Layer: 6 - m_Name: Wheel_Back_L - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1672444639989337543 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2192976184219720364} - serializedVersion: 2 - m_LocalRotation: {x: 0.00000008146034, y: -0.00000004371139, z: 3.560745e-15, w: 1} - m_LocalPosition: {x: -0.90550226, y: 0.18878475, z: -1.5349858} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 5232010396526986649} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &7438406277822851816 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2192976184219720364} - m_Mesh: {fileID: 4300028, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} ---- !u!23 &6240239830454016561 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2192976184219720364} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - 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: 96d9c902e61354248bb428719567f189, 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!1 &2217810299605717212 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3737154052262627175} - - component: {fileID: 5409736667734340120} - - component: {fileID: 287416397633980695} - m_Layer: 6 - m_Name: SkidFR - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3737154052262627175 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2217810299605717212} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: 0.70710677, w: 0.7071068} - m_LocalPosition: {x: 1.193, y: 0.06500316, z: 2.189} - m_LocalScale: {x: 0.7536238, y: 0.22608706, z: 0.894325} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1762526813149383710} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90.00001} ---- !u!114 &5409736667734340120 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2217810299605717212} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: de695257d46f68648a759bca131f0afe, type: 3} - m_Name: - m_EditorClassIdentifier: - _driftEffect: {fileID: 0} ---- !u!96 &287416397633980695 -TrailRenderer: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2217810299605717212} - m_Enabled: 0 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 0 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 0 - m_RayTracingMode: 0 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: d1bbd2a74d98b154c852fcd0ddfce1b5, 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_Time: 5 - m_PreviewTimeScale: 1 - m_Parameters: - serializedVersion: 3 - widthMultiplier: 1 - widthCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0.40259743 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - colorGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - numCornerVertices: 0 - numCapVertices: 0 - alignment: 0 - textureMode: 0 - textureScale: {x: 1, y: 1} - shadowBias: 0.5 - generateLightingData: 0 - m_MinVertexDistance: 0.1 - m_MaskInteraction: 0 - m_Autodestruct: 0 - m_Emitting: 1 - m_ApplyActiveColorSpace: 0 ---- !u!1 &2358858549537186266 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5338032165720225922} - - component: {fileID: 4568929286857031356} - m_Layer: 6 - m_Name: Wheel_RR - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5338032165720225922 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2358858549537186266} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.756279, y: -0.152, z: -0.697} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6110885311344095320} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!146 &4568929286857031356 -WheelCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2358858549537186266} - serializedVersion: 2 - m_Center: {x: 0, y: 0, z: 0} - m_Radius: 0.37681192 - m_SuspensionSpring: - spring: 50000 - damper: 2500 - targetPosition: 0.5 - m_SuspensionDistance: 0.25 - m_ForceAppPointDistance: 0.1 - m_Mass: 40 - m_WheelDampingRate: 1 - m_ForwardFriction: - m_ExtremumSlip: 0.325 - m_ExtremumValue: 1 - m_AsymptoteSlip: 0.8 - m_AsymptoteValue: 0.5 - m_Stiffness: 1.25 - m_SidewaysFriction: - m_ExtremumSlip: 0.325 - m_ExtremumValue: 1 - m_AsymptoteSlip: 0.5 - m_AsymptoteValue: 0.75 - m_Stiffness: 1.25 - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_Enabled: 0 - m_ProvidesContacts: 0 ---- !u!1 &2800091634976794423 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3232755990715192808} - - component: {fileID: 7052088971751748253} - - component: {fileID: 2403882921928812561} - m_Layer: 6 - m_Name: hood - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3232755990715192808 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2800091634976794423} - serializedVersion: 2 - m_LocalRotation: {x: 0.7071067, y: -0.000000084293696, z: -0.000000022476465, w: 0.7071068} - m_LocalPosition: {x: 0.000015527343, y: -0.95134056, z: 0.28519145} - m_LocalScale: {x: 100, y: 100.000015, z: 100.000015} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1076547100095614248} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &7052088971751748253 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2800091634976794423} - m_Mesh: {fileID: -8348165731046832307, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} ---- !u!23 &2403882921928812561 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2800091634976794423} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: -5149717236700318645, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -7998116918101663598, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 950087371587980544, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - 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!1 &2810042475747425853 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2266507765795612964} - - component: {fileID: 2918063940594996821} - m_Layer: 6 - m_Name: Collider - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &2266507765795612964 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2810042475747425853} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -3.37} - m_LocalScale: {x: 0.5, y: 0.28, z: 1.25} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1545892790134000353} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!64 &2918063940594996821 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2810042475747425853} - m_Material: {fileID: 13400000, guid: b8b1ae7ca19f4cd4194b4505bd39dc06, type: 2} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 0 - m_ProvidesContacts: 0 - m_Enabled: 1 - serializedVersion: 5 - m_Convex: 1 - m_CookingOptions: 30 - m_Mesh: {fileID: 5060444177187149915, guid: 99af9074067c389458d2a716374b8f42, type: 3} ---- !u!1 &2811044325904917322 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8753720637810679181} - - component: {fileID: 5055909733445706337} - - component: {fileID: 6671313201000898664} - m_Layer: 6 - m_Name: Cylinder - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8753720637810679181 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2811044325904917322} - serializedVersion: 2 - m_LocalRotation: {x: -0.70710677, y: -0, z: -0, w: 0.7071068} - m_LocalPosition: {x: 0.30800158, y: -0.3399991, z: -0.49613777} - m_LocalScale: {x: 0.10431114, y: 0.023578702, z: 0.070517465} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4701244711278288455} - m_Father: {fileID: 6118429012727029098} - m_LocalEulerAnglesHint: {x: -89.981, y: 0, z: 0} ---- !u!33 &5055909733445706337 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2811044325904917322} - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &6671313201000898664 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2811044325904917322} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - 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: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - 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!1 &2829335707906387965 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3834359949582389767} - - component: {fileID: 3937104101128757055} - - component: {fileID: 8764986576751414787} - m_Layer: 6 - m_Name: SkidRR - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3834359949582389767 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2829335707906387965} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: 0.70710677, w: 0.7071068} - m_LocalPosition: {x: 0.86900055, y: -0.14499955, z: -1.5090002} - m_LocalScale: {x: 0.5024134, y: 0.15072668, z: 0.59622} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 5232010396526986649} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90.00001} ---- !u!114 &3937104101128757055 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2829335707906387965} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: de695257d46f68648a759bca131f0afe, type: 3} - m_Name: - m_EditorClassIdentifier: - _driftEffect: {fileID: 0} ---- !u!96 &8764986576751414787 -TrailRenderer: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2829335707906387965} - m_Enabled: 0 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 0 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 0 - m_RayTracingMode: 0 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: d1bbd2a74d98b154c852fcd0ddfce1b5, 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_Time: 5 - m_PreviewTimeScale: 1 - m_Parameters: - serializedVersion: 3 - widthMultiplier: 1 - widthCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0.40259743 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - colorGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - numCornerVertices: 0 - numCapVertices: 0 - alignment: 0 - textureMode: 0 - textureScale: {x: 1, y: 1} - shadowBias: 0.5 - generateLightingData: 0 - m_MinVertexDistance: 0.1 - m_MaskInteraction: 0 - m_Autodestruct: 0 - m_Emitting: 1 - m_ApplyActiveColorSpace: 0 ---- !u!1 &2836753261812323798 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6118429012727029098} - - component: {fileID: 8782497355381565343} - - component: {fileID: 4075919283884128779} - - component: {fileID: 3283322912630657401} - - component: {fileID: 3385359663317795547} - - component: {fileID: 4674901216746786591} - m_Layer: 6 - m_Name: Cube (1) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &6118429012727029098 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2836753261812323798} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -0.3380356} - m_LocalScale: {x: 1.1490479, y: 0.7594213, z: 5.864136} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 8753720637810679181} - - {fileID: 84038960421261887} - - {fileID: 6110885311344095320} - - {fileID: 2751043706430728651} - m_Father: {fileID: 6916985649869243490} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &8782497355381565343 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2836753261812323798} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!65 &4075919283884128779 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2836753261812323798} - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 0 - m_ProvidesContacts: 0 - m_Enabled: 0 - serializedVersion: 3 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &3283322912630657401 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2836753261812323798} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - 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: 35fb2fa2d3574e243a9e1ea50247a674, 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: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - 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!65 &3385359663317795547 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2836753261812323798} - m_Material: {fileID: 13400000, guid: cae0e59c99ed498458c763aaf2cb5272, type: 2} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 0 - m_ProvidesContacts: 0 - m_Enabled: 0 - serializedVersion: 3 - m_Size: {x: 0.35785905, y: 0.9999998, z: 0.9999999} - m_Center: {x: -0.692596, y: -0.25, z: 0} ---- !u!65 &4674901216746786591 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2836753261812323798} - m_Material: {fileID: 13400000, guid: cae0e59c99ed498458c763aaf2cb5272, type: 2} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 0 - m_ProvidesContacts: 0 - m_Enabled: 0 - serializedVersion: 3 - m_Size: {x: 0.35785905, y: 0.9999998, z: 0.9999999} - m_Center: {x: 0.692596, y: -0.25, z: 0} ---- !u!1 &2854640089106017585 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 9035732956440355652} - - component: {fileID: 7745428850792438715} - m_Layer: 6 - m_Name: Wheel_FL - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &9035732956440355652 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2854640089106017585} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.76, y: -0.15200043, z: 2.9} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6110885311344095320} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!146 &7745428850792438715 -WheelCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2854640089106017585} - serializedVersion: 2 - m_Center: {x: 0, y: 0, z: 0} - m_Radius: 0.37681192 - m_SuspensionSpring: - spring: 50000 - damper: 2500 - targetPosition: 0.5 - m_SuspensionDistance: 0.25 - m_ForceAppPointDistance: 0.1 - m_Mass: 40 - m_WheelDampingRate: 1 - m_ForwardFriction: - m_ExtremumSlip: 0.325 - m_ExtremumValue: 1 - m_AsymptoteSlip: 0.8 - m_AsymptoteValue: 0.5 - m_Stiffness: 1.25 - m_SidewaysFriction: - m_ExtremumSlip: 0.325 - m_ExtremumValue: 1 - m_AsymptoteSlip: 0.5 - m_AsymptoteValue: 0.75 - m_Stiffness: 1.25 - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_Enabled: 0 - m_ProvidesContacts: 0 ---- !u!1 &3051241455344466857 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1545892790134000353} - - component: {fileID: 3677806202218072442} - - component: {fileID: 9134473496284358468} - - component: {fileID: 8529057636489690899} - - component: {fileID: 2057786069090330772} - - component: {fileID: 3882702838211760068} - - component: {fileID: 3623752505267742778} - m_Layer: 6 - m_Name: Car - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1545892790134000353 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3051241455344466857} - serializedVersion: 2 - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 2266507765795612964} - - {fileID: 5884097417447939891} - - {fileID: 6916985649869243490} - - {fileID: 4727001567768885926} - m_Father: {fileID: 4431542291951001293} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!54 &3677806202218072442 -Rigidbody: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3051241455344466857} - serializedVersion: 4 - m_Mass: 12 - m_Drag: 0.25 - m_AngularDrag: 25 - m_CenterOfMass: {x: 0, y: 0, z: 0} - m_InertiaTensor: {x: 1, y: 1, z: 1} - m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ImplicitCom: 0 - m_ImplicitTensor: 1 - m_UseGravity: 1 - m_IsKinematic: 0 - m_Interpolate: 1 - m_Constraints: 80 - m_CollisionDetection: 1 ---- !u!114 &9134473496284358468 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3051241455344466857} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 841925dfd2d70324181dc57f9c0d10c8, type: 3} - m_Name: - m_EditorClassIdentifier: - currentSpeed: 0 - steeringAI: 0 - isAIControlled: 0 - groundDetection: 0 - driveableSurface: - serializedVersion: 2 - m_Bits: 4294967295 - maxSpeed: 240 - baseAcceleration: 18 - steeringSensitivity: 40 - gravityForce: 100 - downforce: 80 - brakeThreshold: 15 - targetStoppingDistance: 15 - allowAirControl: 1 - _frictionCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0.07 - inSlope: -0.19999999 - outSlope: -0.19999999 - tangentMode: 34 - weightedMode: 0 - inWeight: 0 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 0.1 - value: 0.05 - inSlope: -0.1625 - outSlope: -0.1625 - tangentMode: 34 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 0.3 - value: 0.025 - inSlope: -0.079166666 - outSlope: -0.079166666 - tangentMode: 34 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 0.6 - value: 0.015 - inSlope: -0.022916667 - outSlope: -0.022916667 - tangentMode: 34 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0.01 - inSlope: -0.0125 - outSlope: -0.0125 - tangentMode: 34 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - _turnCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 2 - outSlope: 2 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 0.05052969 - value: 0.8177922 - inSlope: 1.6922429 - outSlope: 1.6922429 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.3262782 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 0.98205566 - value: 1.1781731 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - bodyTiltAmount: 10 - carBodyVisual: {fileID: 5232010396526986649} - skidMarkWidth: 0.25 - skidMarkDuration: 5 - wheelFrontLeft: {fileID: 7728721352201334614} - wheelFrontRight: {fileID: 4488184777392333071} - wheelRearLeft: {fileID: 1672444639989337543} - wheelRearRight: {fileID: 6181287152015309424} - frontLeftAxle: {fileID: 7728721352201334614} - frontRightAxle: {fileID: 4488184777392333071} - speedVisualEffects: {fileID: 0} - sphereRigidbody: {fileID: 6038027056347595344} - wheelFrictionMaterial: {fileID: 13400000, guid: fe43720314558424185967ccff2c6354, type: 2} - cameraFollowTarget: {fileID: 4727001567768885926} - nosActive: 0 - nosController: {fileID: 2057786069090330772} - steeringFactor: 0.75 ---- !u!114 &8529057636489690899 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3051241455344466857} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c7b8a4db074ebd44980c8e8f18ff5a82, type: 3} - m_Name: - m_EditorClassIdentifier: - _leadOffset: 35 - _leadMultiplier: 0.25 - _sideOffset: 0 - waypointsCircuit: {fileID: 0} - allwaypointCircuits: [] ---- !u!114 &2057786069090330772 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3051241455344466857} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a7354a95ac207024894f426c22c2b811, type: 3} - m_Name: - m_EditorClassIdentifier: - _CurrentNOS: 0 - chargeSpeed: 1 - depletionSpeed: 1 - boostAcceleration: 40 - audioVolume: 0.5 - boostAudio: {fileID: 0} ---- !u!114 &3882702838211760068 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3051241455344466857} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -1552182283, guid: e725a070cec140c4caffb81624c8c787, type: 3} - m_Name: - m_EditorClassIdentifier: - SortKey: 4247044062 - ObjectInterest: 1 - Flags: 1 - NestedObjects: [] - NetworkedBehaviours: - - {fileID: 9134473496284358468} - - {fileID: 8529057636489690899} - - {fileID: 2057786069090330772} - - {fileID: 3623752505267742778} - - {fileID: 8272960029338994865} - ForceRemoteRenderTimeframe: 0 ---- !u!114 &3623752505267742778 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3051241455344466857} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 158639473, guid: e725a070cec140c4caffb81624c8c787, type: 3} - m_Name: - m_EditorClassIdentifier: - _stateAuthorityChangeErrorCorrectionDelta: 0 - SyncScale: 0 - SyncParent: 0 - _autoAOIOverride: 1 - DisableSharedModeInterpolation: 0 ---- !u!1 &3067970480224447241 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8680394452251988295} - - component: {fileID: 5337483041725024036} - - component: {fileID: 6318049027298034118} - m_Layer: 6 - m_Name: Glass_11 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8680394452251988295 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3067970480224447241} - serializedVersion: 2 - m_LocalRotation: {x: 0.00000008146034, y: -0.00000004371139, z: 3.560745e-15, w: 1} - m_LocalPosition: {x: 0.00000019757346, y: -0.13912919, z: -0.15670183} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 5232010396526986649} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &5337483041725024036 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3067970480224447241} - m_Mesh: {fileID: 4300022, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} ---- !u!23 &6318049027298034118 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3067970480224447241} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - 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: 767769731782fe9409ca4e22077acbd3, 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!1 &3171737329149403215 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5124515793296780801} - - component: {fileID: 2300587887359624788} - - component: {fileID: 3488364367743184259} - - component: {fileID: 9173135453650206220} - m_Layer: 6 - m_Name: Wheel_RR - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5124515793296780801 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3171737329149403215} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: 0.70710677, w: 0.7071068} - m_LocalPosition: {x: 0.756279, y: -0.27344704, z: -0.697} - m_LocalScale: {x: 0.7536237, y: 0.22608705, z: 0.7536235} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 2751043706430728651} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90.00001} ---- !u!33 &2300587887359624788 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3171737329149403215} - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &3488364367743184259 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3171737329149403215} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - 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: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - 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!135 &9173135453650206220 -SphereCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3171737329149403215} - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 0 - m_ProvidesContacts: 0 - m_Enabled: 0 - serializedVersion: 3 - m_Radius: 1.0000002 - m_Center: {x: 0.000000059604645, y: -0.0000038146973, z: -0.000015348196} ---- !u!1 &3261787744023920864 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5232010396526986649} - - component: {fileID: 8272960029338994865} - m_Layer: 6 - m_Name: Car_11 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5232010396526986649 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3261787744023920864} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1.5, y: 1.5, z: 1.5} - m_ConstrainProportionsScale: 1 - m_Children: - - {fileID: 7015308072600729786} - - {fileID: 8680394452251988295} - - {fileID: 4711483572375990403} - - {fileID: 5468423092481466504} - - {fileID: 8565247240076481468} - - {fileID: 1672444639989337543} - - {fileID: 6181287152015309424} - - {fileID: 7728721352201334614} - - {fileID: 4488184777392333071} - - {fileID: 3834359949582389767} - - {fileID: 7086864719022814836} - - {fileID: 1368923039882444265} - - {fileID: 3247130376224316042} - m_Father: {fileID: 6916985649869243490} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &8272960029338994865 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3261787744023920864} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 158639473, guid: e725a070cec140c4caffb81624c8c787, type: 3} - m_Name: - m_EditorClassIdentifier: - _stateAuthorityChangeErrorCorrectionDelta: 0 - SyncScale: 0 - SyncParent: 0 - _autoAOIOverride: 1 - DisableSharedModeInterpolation: 0 ---- !u!1 &3291397491900579732 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1762526813149383710} - m_Layer: 6 - m_Name: Muscle car_sample (1) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &1762526813149383710 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3291397491900579732} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.97, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 6970494082404099418} - - {fileID: 7887662612557220543} - - {fileID: 4716740515574034154} - - {fileID: 7242234252648806363} - - {fileID: 6803286133500254843} - - {fileID: 8250132083236166162} - - {fileID: 3737154052262627175} - - {fileID: 1528492443941058631} - - {fileID: 6919157978038539141} - m_Father: {fileID: 6916985649869243490} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &3694237512130845483 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4488184777392333071} - - component: {fileID: 1842507426309031076} - - component: {fileID: 8536542080551445843} - m_Layer: 6 - m_Name: Wheel_R - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4488184777392333071 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3694237512130845483} - serializedVersion: 2 - m_LocalRotation: {x: 0.00000008146034, y: -0.00000004371139, z: 3.560745e-15, w: 1} - m_LocalPosition: {x: 0.82542825, y: 0.18878469, z: 1.0864365} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 5232010396526986649} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &1842507426309031076 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3694237512130845483} - m_Mesh: {fileID: 4300012, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} ---- !u!23 &8536542080551445843 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3694237512130845483} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - 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: 96d9c902e61354248bb428719567f189, 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!1 &3925442450897464563 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7015308072600729786} - - component: {fileID: 36960728362727297} - - component: {fileID: 1647803835742587026} - m_Layer: 6 - m_Name: Body_11 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7015308072600729786 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3925442450897464563} - serializedVersion: 2 - m_LocalRotation: {x: 0.00000008146034, y: -0.00000004371139, z: 3.560745e-15, w: 1} - m_LocalPosition: {x: 0.00000019757346, y: -0.13912919, z: -0.15670183} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 5232010396526986649} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &36960728362727297 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3925442450897464563} - m_Mesh: {fileID: 4300020, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} ---- !u!23 &1647803835742587026 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3925442450897464563} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - 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: bc40aad1e584c59478d18648dd399adc, 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!1 &4027262757535210868 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4716740515574034154} - - component: {fileID: 1910489791145566734} - - component: {fileID: 3203309624762926779} - m_Layer: 6 - m_Name: TyreFR - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4716740515574034154 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4027262757535210868} - serializedVersion: 2 - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -1.2433808, y: 0.5807365, z: -2.4135911} - m_LocalScale: {x: 100, y: 100, z: 100} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1762526813149383710} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &1910489791145566734 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4027262757535210868} - m_Mesh: {fileID: 4956178619049359432, guid: 0f7dae97ae93d014786ee5392eca4af1, type: 3} ---- !u!23 &3203309624762926779 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4027262757535210868} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2079939459439163040, guid: 0f7dae97ae93d014786ee5392eca4af1, type: 3} - 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!1 &4196981368632589304 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7224142285838282542} - - component: {fileID: 961411950535835066} - - component: {fileID: 3230930961156683196} - - component: {fileID: 8687607069231598364} - - component: {fileID: 2693913534197745363} - - component: {fileID: 7003429168577440424} - m_Layer: 0 - m_Name: MainCamera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7224142285838282542 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4196981368632589304} - serializedVersion: 2 - m_LocalRotation: {x: 0.066227354, y: -0.00000077486027, z: 0.000000052154057, w: 0.9978046} - m_LocalPosition: {x: -0.039999012, y: 1.9171162, z: -7.660001} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4431542291951001293} - m_LocalEulerAnglesHint: {x: 0, y: -90, z: 0} ---- !u!20 &961411950535835066 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4196981368632589304} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_Iso: 200 - m_ShutterSpeed: 0.005 - m_Aperture: 16 - m_FocusDistance: 10 - m_FocalLength: 50 - m_BladeCount: 5 - m_Curvature: {x: 2, y: 11} - m_BarrelClipping: 0.25 - m_Anamorphism: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!81 &3230930961156683196 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4196981368632589304} - m_Enabled: 1 ---- !u!114 &8687607069231598364 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4196981368632589304} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 7d9264e55c762cb4881b015501e3a0a5, type: 3} - m_Name: - m_EditorClassIdentifier: - target: {fileID: 1545892790134000353} - baseDistance: 6 - maxDistance: 6 - zoomSpeed: 5 - followSmoothness: 5 - heightOffset: {x: 0, y: 3, z: 0} ---- !u!114 &2693913534197745363 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4196981368632589304} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e76209d84eb35e742b0070ddc0561242, type: 3} - m_Name: - m_EditorClassIdentifier: - Distance: 0.01 - FastFilter: 4 - motionBlurMaterial: {fileID: 2100000, guid: e751ebcfded655041b633ff6a5f4b87d, type: 2} - mask: {fileID: 2800000, guid: fadde0ef1c1559641bb445997f51f160, type: 3} ---- !u!114 &7003429168577440424 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4196981368632589304} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 948f4100a11a5c24981795d21301da5c, type: 3} - m_Name: - m_EditorClassIdentifier: - volumeTrigger: {fileID: 7224142285838282542} - volumeLayer: - serializedVersion: 2 - m_Bits: 193 - stopNaNPropagation: 1 - finalBlitToCameraTarget: 0 - antialiasingMode: 0 - temporalAntialiasing: - jitterSpread: 0.75 - sharpness: 0.25 - stationaryBlending: 0.95 - motionBlending: 0.85 - subpixelMorphologicalAntialiasing: - quality: 2 - fastApproximateAntialiasing: - fastMode: 0 - keepAlpha: 0 - fog: - enabled: 1 - excludeSkybox: 1 - debugLayer: - lightMeter: - width: 512 - height: 256 - showCurves: 1 - histogram: - width: 512 - height: 256 - channel: 3 - waveform: - exposure: 0.12 - height: 256 - vectorscope: - size: 256 - exposure: 0.12 - overlaySettings: - linearDepth: 0 - motionColorIntensity: 4 - motionGridSize: 64 - colorBlindnessType: 0 - colorBlindnessStrength: 1 - m_Resources: {fileID: 11400000, guid: d82512f9c8e5d4a4d938b575d47f88d4, type: 2} - m_ShowToolkit: 1 - m_ShowCustomSorter: 1 - breakBeforeColorGrading: 0 - m_BeforeTransparentBundles: [] - m_BeforeStackBundles: [] - m_AfterStackBundles: [] ---- !u!1 &4523264193148367460 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5884097417447939891} - - component: {fileID: 1654061785997455814} - - component: {fileID: 6038027056347595344} - - component: {fileID: 6397768575863822657} - m_Layer: 3 - m_Name: SphereRB - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5884097417447939891 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4523264193148367460} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0.2, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1545892790134000353} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!135 &1654061785997455814 -SphereCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4523264193148367460} - m_Material: {fileID: 13400000, guid: fe43720314558424185967ccff2c6354, type: 2} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 0 - m_ProvidesContacts: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Radius: 1.1 - m_Center: {x: 0, y: 0, z: 0} ---- !u!54 &6038027056347595344 -Rigidbody: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4523264193148367460} - serializedVersion: 4 - m_Mass: 5 - m_Drag: 2 - m_AngularDrag: 2 - m_CenterOfMass: {x: 0, y: 0, z: 0} - m_InertiaTensor: {x: 1, y: 1, z: 1} - m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ImplicitCom: 1 - m_ImplicitTensor: 1 - m_UseGravity: 1 - m_IsKinematic: 0 - m_Interpolate: 1 - m_Constraints: 0 - m_CollisionDetection: 1 ---- !u!59 &6397768575863822657 -HingeJoint: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4523264193148367460} - m_ConnectedBody: {fileID: 3677806202218072442} - m_ConnectedArticulationBody: {fileID: 0} - m_Anchor: {x: 0, y: 0, z: 0} - m_Axis: {x: 1, y: 0, z: 0} - m_AutoConfigureConnectedAnchor: 1 - m_ConnectedAnchor: {x: 0, y: 0.20000076, z: 0} - serializedVersion: 2 - m_UseSpring: 0 - m_Spring: - spring: 10000 - damper: 10 - targetPosition: 0 - m_UseMotor: 0 - m_Motor: - targetVelocity: 0 - force: 0 - freeSpin: 0 - m_UseLimits: 0 - m_ExtendedLimits: 0 - m_UseAcceleration: 0 - m_Limits: - min: 0 - max: 0 - bounciness: 0 - bounceMinVelocity: 0.2 - contactDistance: 0 - m_BreakForce: Infinity - m_BreakTorque: Infinity - m_EnableCollision: 0 - m_EnablePreprocessing: 1 - m_MassScale: 1 - m_ConnectedMassScale: 1 ---- !u!1 &4550299546370333534 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6919157978038539141} - - component: {fileID: 122485189467062370} - - component: {fileID: 5650319934711433848} - m_Layer: 6 - m_Name: SkidRR - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &6919157978038539141 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4550299546370333534} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: 0.70710677, w: 0.7071068} - m_LocalPosition: {x: 1.242, y: 0.06500316, z: -2.414} - m_LocalScale: {x: 0.7536238, y: 0.22608706, z: 0.894325} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1762526813149383710} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90.00001} ---- !u!114 &122485189467062370 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4550299546370333534} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: de695257d46f68648a759bca131f0afe, type: 3} - m_Name: - m_EditorClassIdentifier: - _driftEffect: {fileID: 0} ---- !u!96 &5650319934711433848 -TrailRenderer: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4550299546370333534} - m_Enabled: 0 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 0 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 0 - m_RayTracingMode: 0 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: d1bbd2a74d98b154c852fcd0ddfce1b5, 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_Time: 5 - m_PreviewTimeScale: 1 - m_Parameters: - serializedVersion: 3 - widthMultiplier: 1 - widthCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0.40259743 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - colorGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - numCornerVertices: 0 - numCapVertices: 0 - alignment: 0 - textureMode: 0 - textureScale: {x: 1, y: 1} - shadowBias: 0.5 - generateLightingData: 0 - m_MinVertexDistance: 0.1 - m_MaskInteraction: 0 - m_Autodestruct: 0 - m_Emitting: 1 - m_ApplyActiveColorSpace: 0 ---- !u!1 &4610503561259300138 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7681462549031831539} - - component: {fileID: 2304826065750897704} - - component: {fileID: 6651685192230433237} - m_Layer: 6 - m_Name: tyr_3 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7681462549031831539 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4610503561259300138} - serializedVersion: 2 - m_LocalRotation: {x: 0.000000053385083, y: 0.7071068, z: -0.7071067, w: -0.000000053385072} - m_LocalPosition: {x: 1.2032589, y: 1.7189343, z: -0.35530615} - m_LocalScale: {x: 100, y: 100.000015, z: 100.000015} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1076547100095614248} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &2304826065750897704 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4610503561259300138} - m_Mesh: {fileID: 1877120167079720197, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} ---- !u!23 &6651685192230433237 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4610503561259300138} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: -373174151706276150, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 586645097001841572, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 358632464446913707, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 5241662679339499281, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - 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!1 &4680835448970615944 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7242234252648806363} - - component: {fileID: 7209189895504951126} - - component: {fileID: 9163889422368046705} - m_Layer: 6 - m_Name: TyreRL - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7242234252648806363 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4680835448970615944} - serializedVersion: 2 - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: 1.1507633, y: 0.62127614, z: 2.1669507} - m_LocalScale: {x: 100, y: 100, z: 100} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1762526813149383710} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &7209189895504951126 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4680835448970615944} - m_Mesh: {fileID: -3841837795244467386, guid: 0f7dae97ae93d014786ee5392eca4af1, type: 3} ---- !u!23 &9163889422368046705 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4680835448970615944} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2079939459439163040, guid: 0f7dae97ae93d014786ee5392eca4af1, type: 3} - 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!1 &4803575380716005639 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3990403723464142094} - - component: {fileID: 5768548005045096271} - - component: {fileID: 5136832631107237493} - - component: {fileID: 7495362430487900179} - m_Layer: 6 - m_Name: Wheel_FL - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3990403723464142094 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4803575380716005639} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: 0.70710677, w: 0.7071068} - m_LocalPosition: {x: -0.76, y: -0.27344704, z: 2.99} - m_LocalScale: {x: 0.7536237, y: 0.22608705, z: 0.7536235} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 2751043706430728651} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90.00001} ---- !u!33 &5768548005045096271 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4803575380716005639} - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &5136832631107237493 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4803575380716005639} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - 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: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - 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!135 &7495362430487900179 -SphereCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4803575380716005639} - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 0 - m_ProvidesContacts: 0 - m_Enabled: 0 - serializedVersion: 3 - m_Radius: 1.0000002 - m_Center: {x: 0.000000059604645, y: -4.2351647e-21, z: 0.000015169382} ---- !u!1 &4899845632199346097 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2751043706430728651} - m_Layer: 6 - m_Name: Wheel Models - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &2751043706430728651 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4899845632199346097} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: -0.32392752, z: -0.2238974} - m_LocalScale: {x: 0.8702858, y: 1.3167922, z: 0.2023657} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 2418585813883834867} - - {fileID: 3990403723464142094} - - {fileID: 5763596736878298102} - - {fileID: 5124515793296780801} - m_Father: {fileID: 6118429012727029098} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &5097956068855214732 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4431542291951001293} - - component: {fileID: 3020599757856457735} - - component: {fileID: 2945888187208384748} - m_Layer: 0 - m_Name: Player - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4431542291951001293 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5097956068855214732} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} - m_LocalPosition: {x: -48.84, y: -17.398, z: 0.16} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 7224142285838282542} - - {fileID: 1545892790134000353} - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} ---- !u!114 &3020599757856457735 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5097956068855214732} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -1552182283, guid: e725a070cec140c4caffb81624c8c787, type: 3} - m_Name: - m_EditorClassIdentifier: - SortKey: 4082538716 - ObjectInterest: 1 - Flags: 262145 - NestedObjects: - - {fileID: 3882702838211760068} - NetworkedBehaviours: - - {fileID: 2945888187208384748} - ForceRemoteRenderTimeframe: 0 ---- !u!114 &2945888187208384748 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5097956068855214732} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2459e596155711c43a1b4565da9d7f1b, type: 3} - m_Name: - m_EditorClassIdentifier: - playerCamera: {fileID: 961411950535835066} - audioListener: {fileID: 3230930961156683196} ---- !u!1 &5143393733947949188 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2653566318636586633} - - component: {fileID: 4459384215170267465} - m_Layer: 6 - m_Name: Wheel_RL - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &2653566318636586633 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5143393733947949188} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.756279, y: -0.15200043, z: -0.697} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6110885311344095320} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!146 &4459384215170267465 -WheelCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5143393733947949188} - serializedVersion: 2 - m_Center: {x: 0, y: 0, z: 0} - m_Radius: 0.37681192 - m_SuspensionSpring: - spring: 50000 - damper: 2500 - targetPosition: 0.5 - m_SuspensionDistance: 0.25 - m_ForceAppPointDistance: 0.1 - m_Mass: 40 - m_WheelDampingRate: 1 - m_ForwardFriction: - m_ExtremumSlip: 0.325 - m_ExtremumValue: 1 - m_AsymptoteSlip: 0.8 - m_AsymptoteValue: 0.5 - m_Stiffness: 1.25 - m_SidewaysFriction: - m_ExtremumSlip: 0.325 - m_ExtremumValue: 1 - m_AsymptoteSlip: 0.5 - m_AsymptoteValue: 0.75 - m_Stiffness: 1.25 - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_Enabled: 0 - m_ProvidesContacts: 0 ---- !u!1 &5373882670445504394 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7214299775216957279} - - component: {fileID: 8671006277334484659} - - component: {fileID: 4289609783625436990} - m_Layer: 6 - m_Name: front_bumper - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7214299775216957279 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5373882670445504394} - serializedVersion: 2 - m_LocalRotation: {x: 0.000000053385083, y: 0.7071068, z: -0.7071067, w: -0.000000053385072} - m_LocalPosition: {x: -0.0019869138, y: -2.8064847, z: -0.35755578} - m_LocalScale: {x: 100, y: 100.000015, z: 100.000015} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1076547100095614248} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &8671006277334484659 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5373882670445504394} - m_Mesh: {fileID: 5597274038529167482, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} ---- !u!23 &4289609783625436990 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5373882670445504394} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: -7998116918101663598, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -5149717236700318645, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 950087371587980544, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -8448547190637030200, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 1272687261006680210, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -8958874851583361158, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - 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!1 &5395855667730572169 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4727001567768885926} - m_Layer: 6 - m_Name: FollowTarget - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4727001567768885926 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5395855667730572169} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1.5, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1545892790134000353} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &5478242457885919265 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3417349902575571392} - - component: {fileID: 1281223456738738731} - - component: {fileID: 5838869942376004407} - m_Layer: 6 - m_Name: tyr_4 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3417349902575571392 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5478242457885919265} - serializedVersion: 2 - m_LocalRotation: {x: 0.000000053385083, y: 0.7071068, z: -0.7071067, w: -0.000000053385072} - m_LocalPosition: {x: -1.1936173, y: 1.7108694, z: -0.35530615} - m_LocalScale: {x: 100, y: 100.000015, z: 100.000015} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1076547100095614248} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &1281223456738738731 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5478242457885919265} - m_Mesh: {fileID: -8569584393986576665, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} ---- !u!23 &5838869942376004407 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5478242457885919265} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: -373174151706276150, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 586645097001841572, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 358632464446913707, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 5241662679339499281, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - 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!1 &6467250548512576765 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7887662612557220543} - - component: {fileID: 6508062126828638862} - - component: {fileID: 3764622463982554021} - m_Layer: 6 - m_Name: TyreFL - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7887662612557220543 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6467250548512576765} - serializedVersion: 2 - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: 1.2374593, y: 0.5807368, z: -2.4135895} - m_LocalScale: {x: 100, y: 100, z: 100} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1762526813149383710} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &6508062126828638862 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6467250548512576765} - m_Mesh: {fileID: 1548136767811012800, guid: 0f7dae97ae93d014786ee5392eca4af1, type: 3} ---- !u!23 &3764622463982554021 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6467250548512576765} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2079939459439163040, guid: 0f7dae97ae93d014786ee5392eca4af1, type: 3} - 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!1 &6658771484041035311 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 9151363907653717790} - - component: {fileID: 8637257680980531595} - - component: {fileID: 4234080948044246345} - m_Layer: 6 - m_Name: tyr_1 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &9151363907653717790 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6658771484041035311} - serializedVersion: 2 - m_LocalRotation: {x: 0.000000053385083, y: 0.7071068, z: -0.7071067, w: -0.000000053385072} - m_LocalPosition: {x: -1.0933863, y: -1.8731263, z: -0.38368928} - m_LocalScale: {x: 100, y: 100.000015, z: 100.000015} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1076547100095614248} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &8637257680980531595 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6658771484041035311} - m_Mesh: {fileID: 1810219223679796059, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} ---- !u!23 &4234080948044246345 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6658771484041035311} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: -373174151706276150, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 586645097001841572, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 358632464446913707, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 5241662679339499281, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - 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!1 &6763325394812349657 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2418585813883834867} - - component: {fileID: 8898014781349478174} - - component: {fileID: 7917384939018002465} - - component: {fileID: 8295597606360893728} - m_Layer: 6 - m_Name: Wheel_RL - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &2418585813883834867 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6763325394812349657} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: 0.70710677, w: 0.7071068} - m_LocalPosition: {x: -0.756279, y: -0.27344704, z: -0.697} - m_LocalScale: {x: 0.7536237, y: 0.22608705, z: 0.7536235} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 2751043706430728651} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90.00001} ---- !u!33 &8898014781349478174 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6763325394812349657} - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &7917384939018002465 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6763325394812349657} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - 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: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - 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!135 &8295597606360893728 -SphereCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6763325394812349657} - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 0 - m_ProvidesContacts: 0 - m_Enabled: 0 - serializedVersion: 3 - m_Radius: 1.0000002 - m_Center: {x: 0.000000059604645, y: -0.0000038146973, z: -0.000015348196} ---- !u!1 &7049446830561196829 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3247130376224316042} - - component: {fileID: 4791671937570482684} - - component: {fileID: 5358065467689406636} - m_Layer: 6 - m_Name: SkidFL - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3247130376224316042 -Transform: + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2459e596155711c43a1b4565da9d7f1b, type: 3} + m_Name: + m_EditorClassIdentifier: + playerCamera: {fileID: 961411950535835066} + audioListener: {fileID: 3230930961156683196} +--- !u!54 &2160202759945831052 +Rigidbody: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7049446830561196829} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: 0.70710677, w: 0.7071068} - m_LocalPosition: {x: -0.8230003, y: -0.14499955, z: 1.1060004} - m_LocalScale: {x: 0.5024134, y: 0.15072668, z: 0.59622} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 5232010396526986649} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90.00001} ---- !u!114 &4791671937570482684 + m_GameObject: {fileID: 5097956068855214732} + serializedVersion: 4 + m_Mass: 12 + m_Drag: 0.25 + m_AngularDrag: 25 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 0 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 80 + m_CollisionDetection: 1 +--- !u!114 &8676106736576983865 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7049446830561196829} + m_GameObject: {fileID: 5097956068855214732} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: de695257d46f68648a759bca131f0afe, type: 3} + m_Script: {fileID: 11500000, guid: 841925dfd2d70324181dc57f9c0d10c8, type: 3} m_Name: m_EditorClassIdentifier: - _driftEffect: {fileID: 0} ---- !u!96 &5358065467689406636 -TrailRenderer: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7049446830561196829} - m_Enabled: 0 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 0 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 0 - m_RayTracingMode: 0 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: d1bbd2a74d98b154c852fcd0ddfce1b5, 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_Time: 5 - m_PreviewTimeScale: 1 - m_Parameters: - serializedVersion: 3 - widthMultiplier: 1 - widthCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0.40259743 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - colorGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - numCornerVertices: 0 - numCapVertices: 0 - alignment: 0 - textureMode: 0 - textureScale: {x: 1, y: 1} - shadowBias: 0.5 - generateLightingData: 0 - m_MinVertexDistance: 0.1 - m_MaskInteraction: 0 - m_Autodestruct: 0 - m_Emitting: 1 - m_ApplyActiveColorSpace: 0 ---- !u!1 &7139637651623776133 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8096266409734623510} - - component: {fileID: 1459876083389613754} - - component: {fileID: 813934931845737884} - m_Layer: 6 - m_Name: Exhaust - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8096266409734623510 -Transform: + currentSpeed: 0 + steeringAI: 0 + isAIControlled: 0 + groundDetection: 0 + driveableSurface: + serializedVersion: 2 + m_Bits: 4294967295 + maxSpeed: 240 + baseAcceleration: 18 + steeringSensitivity: 40 + gravityForce: 100 + downforce: 80 + brakeThreshold: 15 + targetStoppingDistance: 15 + allowAirControl: 1 + _frictionCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.07 + inSlope: -0.19999999 + outSlope: -0.19999999 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.1 + value: 0.05 + inSlope: -0.1625 + outSlope: -0.1625 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.3 + value: 0.025 + inSlope: -0.079166666 + outSlope: -0.079166666 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.6 + value: 0.015 + inSlope: -0.022916667 + outSlope: -0.022916667 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.01 + inSlope: -0.0125 + outSlope: -0.0125 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _turnCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 2 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 0.05052969 + value: 0.8177922 + inSlope: 1.6922429 + outSlope: 1.6922429 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.3262782 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.98205566 + value: 1.1781731 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + bodyTiltAmount: 10 + carBodyVisual: {fileID: 5232010396526986649} + skidMarkWidth: 0.25 + skidMarkDuration: 5 + wheelFrontLeft: {fileID: 7728721352201334614} + wheelFrontRight: {fileID: 4488184777392333071} + wheelRearLeft: {fileID: 1672444639989337543} + wheelRearRight: {fileID: 6181287152015309424} + frontLeftAxle: {fileID: 7728721352201334614} + frontRightAxle: {fileID: 4488184777392333071} + speedVisualEffects: {fileID: 0} + sphereRigidbody: {fileID: 6038027056347595344} + wheelFrictionMaterial: {fileID: 13400000, guid: fe43720314558424185967ccff2c6354, type: 2} + cameraFollowTarget: {fileID: 4727001567768885926} + nosActive: 0 + nosController: {fileID: 4958469121034036348} + steeringFactor: 0.75 +--- !u!114 &3319685825615813417 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7139637651623776133} - serializedVersion: 2 - m_LocalRotation: {x: -0.00000019861236, y: -0.7071068, z: -0.7071068, w: 0.00000019861236} - m_LocalPosition: {x: 0, y: 1.2099997, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 84038960421261887} - m_LocalEulerAnglesHint: {x: -90, y: 0, z: -179.99998} ---- !u!198 &1459876083389613754 -ParticleSystem: + m_GameObject: {fileID: 5097956068855214732} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c7b8a4db074ebd44980c8e8f18ff5a82, type: 3} + m_Name: + m_EditorClassIdentifier: + _leadOffset: 35 + _leadMultiplier: 0.25 + _sideOffset: 0 + waypointsCircuit: {fileID: 0} + allwaypointCircuits: [] +--- !u!114 &4958469121034036348 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7139637651623776133} - serializedVersion: 8 - lengthInSec: 5 - simulationSpeed: 1 - stopAction: 0 - cullingMode: 3 - ringBufferMode: 0 - ringBufferLoopRange: {x: 0, y: 1} - emitterVelocityMode: 1 - looping: 1 - prewarm: 1 - playOnAwake: 1 - useUnscaledTime: 0 - autoRandomSeed: 1 - startDelay: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - moveWithTransform: 1 - moveWithCustomTransform: {fileID: 0} - scalingMode: 2 - randomSeed: 0 - InitialModule: - serializedVersion: 3 - enabled: 1 - startLifetime: - serializedVersion: 2 - minMaxState: 3 - scalar: 1.5 - minScalar: 0.5 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0.33333334 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - startSpeed: - serializedVersion: 2 - minMaxState: 3 - scalar: 1 - minScalar: 0.8 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0.8 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - startColor: - serializedVersion: 2 - minMaxState: 0 - minColor: {r: 1, g: 1, b: 1, a: 1} - maxColor: {r: 0.77254903, g: 0.77254903, b: 0.77254903, a: 1} - maxGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - minGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - startSize: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - startSizeY: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - startSizeZ: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - startRotationX: - serializedVersion: 2 - minMaxState: 3 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - startRotationY: - serializedVersion: 2 - minMaxState: 3 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - startRotation: - serializedVersion: 2 - minMaxState: 3 - scalar: 0.87266463 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - randomizeRotationDirection: 0 - gravitySource: 0 - maxNumParticles: 1000 - customEmitterVelocity: {x: 0, y: 0, z: 0} - size3D: 0 - rotation3D: 0 - gravityModifier: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - ShapeModule: - serializedVersion: 6 - enabled: 1 - type: 4 - angle: 5.98 - length: 5 - boxThickness: {x: 0, y: 0, z: 0} - radiusThickness: 1 - donutRadius: 0.2 - m_Position: {x: 0, y: 0, z: 0} - m_Rotation: {x: 0, y: 0, z: 0} - m_Scale: {x: 1, y: 1, z: 1} - placementMode: 0 - m_MeshMaterialIndex: 0 - m_MeshNormalOffset: 0 - m_MeshSpawn: - mode: 0 - spread: 0 - speed: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - m_Mesh: {fileID: 0} - m_MeshRenderer: {fileID: 0} - m_SkinnedMeshRenderer: {fileID: 0} - m_Sprite: {fileID: 0} - m_SpriteRenderer: {fileID: 0} - m_UseMeshMaterialIndex: 0 - m_UseMeshColors: 1 - alignToDirection: 0 - m_Texture: {fileID: 0} - m_TextureClipChannel: 3 - m_TextureClipThreshold: 0 - m_TextureUVChannel: 0 - m_TextureColorAffectsParticles: 1 - m_TextureAlphaAffectsParticles: 1 - m_TextureBilinearFiltering: 0 - randomDirectionAmount: 0 - sphericalDirectionAmount: 0 - randomPositionAmount: 0 - radius: - value: 0.01 - mode: 0 - spread: 0 - speed: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - arc: - value: 360 - mode: 0 - spread: 0 - speed: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - EmissionModule: - enabled: 1 - serializedVersion: 4 - rateOverTime: - serializedVersion: 2 - minMaxState: 0 - scalar: 20 - minScalar: 10 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - rateOverDistance: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - m_BurstCount: 0 - m_Bursts: [] - SizeModule: - enabled: 1 - curve: - serializedVersion: 2 - minMaxState: 1 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0.16666669 - inSlope: 3.5883613 - outSlope: 3.5883613 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: -0.13572983 - outSlope: -0.13572983 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - y: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - z: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - separateAxes: 0 - RotationModule: - enabled: 0 - x: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - y: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - curve: - serializedVersion: 2 - minMaxState: 0 - scalar: 0.7853982 - minScalar: 0.7853982 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - separateAxes: 0 - ColorModule: - enabled: 1 - gradient: - serializedVersion: 2 - minMaxState: 1 - minColor: {r: 1, g: 1, b: 1, a: 1} - maxColor: {r: 1, g: 1, b: 1, a: 1} - maxGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 50308 - atime2: 65535 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 3 - minGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - UVModule: - serializedVersion: 2 - enabled: 1 - mode: 0 - timeMode: 0 - fps: 30 - frameOverTime: - serializedVersion: 2 - minMaxState: 0 - scalar: 0.9999 - minScalar: 0.9999 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 0 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - startFrame: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - speedRange: {x: 0, y: 1} - tilesX: 8 - tilesY: 3 - animationType: 0 - rowIndex: 0 - cycles: 1 - uvChannelMask: -1 - rowMode: 1 - sprites: - - sprite: {fileID: 0} - flipU: 0 - flipV: 0 - VelocityModule: - enabled: 0 - x: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - y: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - z: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - orbitalX: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - orbitalY: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - orbitalZ: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - orbitalOffsetX: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - orbitalOffsetY: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - orbitalOffsetZ: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - radial: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - speedModifier: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - inWorldSpace: 0 - InheritVelocityModule: - enabled: 1 - m_Mode: 1 - m_Curve: - serializedVersion: 2 - minMaxState: 0 - scalar: 0.5 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - LifetimeByEmitterSpeedModule: - enabled: 0 - m_Curve: - serializedVersion: 2 - minMaxState: 1 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: -0.8 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0.2 - inSlope: -0.8 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - m_Range: {x: 0, y: 1} - ForceModule: - enabled: 1 - x: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - y: - serializedVersion: 2 - minMaxState: 0 - scalar: 0.8 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - z: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - inWorldSpace: 1 - randomizePerFrame: 0 - ExternalForcesModule: - serializedVersion: 2 - enabled: 0 - multiplierCurve: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - influenceFilter: 0 - influenceMask: - serializedVersion: 2 - m_Bits: 4294967295 - influenceList: [] - ClampVelocityModule: - enabled: 0 - x: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - y: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - z: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - magnitude: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - separateAxis: 0 - inWorldSpace: 0 - multiplyDragByParticleSize: 1 - multiplyDragByParticleVelocity: 1 - dampen: 1 - drag: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - NoiseModule: - enabled: 0 - strength: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - strengthY: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - strengthZ: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - separateAxes: 0 - frequency: 0.5 - damping: 1 - octaves: 1 - octaveMultiplier: 0.5 - octaveScale: 2 - quality: 2 - scrollSpeed: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - remap: - serializedVersion: 2 - minMaxState: 1 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - remapY: - serializedVersion: 2 - minMaxState: 1 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - remapZ: - serializedVersion: 2 - minMaxState: 1 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - remapEnabled: 0 - positionAmount: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - rotationAmount: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - sizeAmount: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - SizeBySpeedModule: - enabled: 0 - curve: - serializedVersion: 2 - minMaxState: 1 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - y: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - z: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - range: {x: 0, y: 1} - separateAxes: 0 - RotationBySpeedModule: - enabled: 0 - x: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - y: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - curve: - serializedVersion: 2 - minMaxState: 0 - scalar: 0.7853982 - minScalar: 0.7853982 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - separateAxes: 0 - range: {x: 0, y: 1} - ColorBySpeedModule: - enabled: 0 - gradient: - serializedVersion: 2 - minMaxState: 1 - minColor: {r: 1, g: 1, b: 1, a: 1} - maxColor: {r: 1, g: 1, b: 1, a: 1} - maxGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - minGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - range: {x: 0, y: 1} - CollisionModule: - enabled: 0 - serializedVersion: 4 - type: 0 - collisionMode: 0 - colliderForce: 0 - multiplyColliderForceByParticleSize: 0 - multiplyColliderForceByParticleSpeed: 0 - multiplyColliderForceByCollisionAngle: 1 - m_Planes: - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - m_Dampen: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - m_Bounce: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - m_EnergyLossOnCollision: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minKillSpeed: 0 - maxKillSpeed: 10000 - radiusScale: 1 - collidesWith: - serializedVersion: 2 - m_Bits: 4294967295 - maxCollisionShapes: 256 - quality: 0 - voxelSize: 0.5 - collisionMessages: 0 - collidesWithDynamic: 1 - interiorCollisions: 1 - TriggerModule: - enabled: 0 - serializedVersion: 2 - inside: 1 - outside: 0 - enter: 0 - exit: 0 - colliderQueryMode: 0 - radiusScale: 1 - primitives: - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - SubModule: - serializedVersion: 2 - enabled: 0 - subEmitters: - - serializedVersion: 3 - emitter: {fileID: 0} - type: 0 - properties: 0 - emitProbability: 1 - LightsModule: - enabled: 0 - ratio: 0 - light: {fileID: 0} - randomDistribution: 1 - color: 1 - range: 1 - intensity: 1 - rangeCurve: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - intensityCurve: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - maxLights: 20 - TrailModule: - enabled: 0 - mode: 0 - ratio: 1 - lifetime: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minVertexDistance: 0.2 - textureMode: 0 - textureScale: {x: 1, y: 1} - ribbonCount: 1 - shadowBias: 0.5 - worldSpace: 0 - dieWithParticles: 1 - sizeAffectsWidth: 1 - sizeAffectsLifetime: 0 - inheritParticleColor: 1 - generateLightingData: 0 - splitSubEmitterRibbons: 0 - attachRibbonsToTransform: 0 - colorOverLifetime: - serializedVersion: 2 - minMaxState: 0 - minColor: {r: 1, g: 1, b: 1, a: 1} - maxColor: {r: 1, g: 1, b: 1, a: 1} - maxGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - minGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - widthOverTrail: - serializedVersion: 2 - minMaxState: 0 - scalar: 1 - minScalar: 1 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - colorOverTrail: - serializedVersion: 2 - minMaxState: 0 - minColor: {r: 1, g: 1, b: 1, a: 1} - maxColor: {r: 1, g: 1, b: 1, a: 1} - maxGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - minGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - CustomDataModule: - enabled: 0 - mode0: 0 - vectorComponentCount0: 4 - color0: - serializedVersion: 2 - minMaxState: 0 - minColor: {r: 1, g: 1, b: 1, a: 1} - maxColor: {r: 1, g: 1, b: 1, a: 1} - maxGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - minGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - colorLabel0: Color - vector0_0: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - vectorLabel0_0: X - vector0_1: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - vectorLabel0_1: Y - vector0_2: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - vectorLabel0_2: Z - vector0_3: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - vectorLabel0_3: W - mode1: 0 - vectorComponentCount1: 4 - color1: - serializedVersion: 2 - minMaxState: 0 - minColor: {r: 1, g: 1, b: 1, a: 1} - maxColor: {r: 1, g: 1, b: 1, a: 1} - maxGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - minGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - colorLabel1: Color - vector1_0: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - vectorLabel1_0: X - vector1_1: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - vectorLabel1_1: Y - vector1_2: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - vectorLabel1_2: Z - vector1_3: - serializedVersion: 2 - minMaxState: 0 - scalar: 0 - minScalar: 0 - maxCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - minCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - vectorLabel1_3: W ---- !u!199 &813934931845737884 -ParticleSystemRenderer: - serializedVersion: 6 + m_GameObject: {fileID: 5097956068855214732} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a7354a95ac207024894f426c22c2b811, type: 3} + m_Name: + m_EditorClassIdentifier: + _CurrentNOS: 0 + chargeSpeed: 13 + depletionSpeed: 20 + boostAcceleration: 40 + audioVolume: 0.5 + boostAudio: {fileID: 0} +--- !u!114 &6967074992816454093 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7139637651623776133} + m_GameObject: {fileID: 5097956068855214732} m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 0 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 21166e1a1f7367349b6f45af6eb79a4d, 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: 0 - 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_RenderMode: 0 - m_MeshDistribution: 0 - m_SortMode: 0 - m_MinParticleSize: 0 - m_MaxParticleSize: 0.5 - m_CameraVelocityScale: 0 - m_VelocityScale: 0 - m_LengthScale: 2 - m_SortingFudge: 0 - m_NormalDirection: 1 - m_ShadowBias: 0 - m_RenderAlignment: 0 - m_Pivot: {x: 0, y: 0, z: 0} - m_Flip: {x: 0, y: 0, z: 0} - m_EnableGPUInstancing: 0 - m_ApplyActiveColorSpace: 0 - m_AllowRoll: 1 - m_FreeformStretching: 0 - m_RotateWithStretchDirection: 1 - m_UseCustomVertexStreams: 0 - m_VertexStreams: 0001030405 - m_UseCustomTrailVertexStreams: 0 - m_TrailVertexStreams: 00010304 - m_Mesh: {fileID: 0} - m_Mesh1: {fileID: 0} - m_Mesh2: {fileID: 0} - m_Mesh3: {fileID: 0} - m_MeshWeighting: 1 - m_MeshWeighting1: 1 - m_MeshWeighting2: 1 - m_MeshWeighting3: 1 - m_MaskInteraction: 0 ---- !u!1 &7188674320598921930 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0a591d221a634417e9827eb58e17de84, type: 3} + m_Name: + m_EditorClassIdentifier: + _stateAuthorityChangeErrorCorrectionDelta: 0 + SyncScale: 0 + SyncParent: 1 + _interpolationTarget: {fileID: 5232010396526986649} + UsePreciseRotation: 0 + UseRenderSleepThresholds: 1 + RenderThresholds: + UseEnergy: 1 + Position: 0.01 + Rotation: 0.01 + Scale: 0.01 +--- !u!1 &5395855667730572169 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -13559,70 +1191,30 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1471854269737141469} - - component: {fileID: 360380980859352543} + - component: {fileID: 4727001567768885926} m_Layer: 6 - m_Name: Wheel_FR + m_Name: FollowTarget m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1471854269737141469 +--- !u!4 &4727001567768885926 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7188674320598921930} + m_GameObject: {fileID: 5395855667730572169} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.7525581, y: -0.15200043, z: 2.8999996} + m_LocalPosition: {x: 0, y: 1.5, z: -3} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 6110885311344095320} + m_Father: {fileID: 4431542291951001293} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!146 &360380980859352543 -WheelCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7188674320598921930} - serializedVersion: 2 - m_Center: {x: 0, y: 0, z: 0} - m_Radius: 0.37681192 - m_SuspensionSpring: - spring: 50000 - damper: 2500 - targetPosition: 0.5 - m_SuspensionDistance: 0.25 - m_ForceAppPointDistance: 0.1 - m_Mass: 40 - m_WheelDampingRate: 1 - m_ForwardFriction: - m_ExtremumSlip: 0.325 - m_ExtremumValue: 1 - m_AsymptoteSlip: 0.8 - m_AsymptoteValue: 0.5 - m_Stiffness: 1.25 - m_SidewaysFriction: - m_ExtremumSlip: 0.325 - m_ExtremumValue: 1 - m_AsymptoteSlip: 0.5 - m_AsymptoteValue: 0.75 - m_Stiffness: 1.25 - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_Enabled: 0 - m_ProvidesContacts: 0 ---- !u!1 &7305315470125461635 +--- !u!1 &7049446830561196829 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -13630,52 +1222,52 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 7086864719022814836} - - component: {fileID: 7826855213399514145} - - component: {fileID: 3580292300952123767} + - component: {fileID: 3247130376224316042} + - component: {fileID: 4791671937570482684} + - component: {fileID: 5358065467689406636} m_Layer: 6 - m_Name: SkidRL + m_Name: SkidFL m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &7086864719022814836 +--- !u!4 &3247130376224316042 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7305315470125461635} + m_GameObject: {fileID: 7049446830561196829} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: 0.70710677, w: 0.7071068} - m_LocalPosition: {x: -0.8230004, y: -0.14499955, z: -1.5130008} + m_LocalPosition: {x: -0.8230003, y: -0.14499955, z: 1.1060004} m_LocalScale: {x: 0.5024134, y: 0.15072668, z: 0.59622} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5232010396526986649} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90.00001} ---- !u!114 &7826855213399514145 +--- !u!114 &4791671937570482684 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7305315470125461635} + m_GameObject: {fileID: 7049446830561196829} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: de695257d46f68648a759bca131f0afe, type: 3} m_Name: m_EditorClassIdentifier: _driftEffect: {fileID: 0} ---- !u!96 &3580292300952123767 +--- !u!96 &5358065467689406636 TrailRenderer: serializedVersion: 3 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7305315470125461635} + m_GameObject: {fileID: 7049446830561196829} m_Enabled: 0 m_CastShadows: 1 m_ReceiveShadows: 1 @@ -13761,326 +1353,18 @@ TrailRenderer: m_NumColorKeys: 2 m_NumAlphaKeys: 2 numCornerVertices: 0 - numCapVertices: 0 - alignment: 0 - textureMode: 0 - textureScale: {x: 1, y: 1} - shadowBias: 0.5 - generateLightingData: 0 - m_MinVertexDistance: 0.1 - m_MaskInteraction: 0 - m_Autodestruct: 0 - m_Emitting: 1 - m_ApplyActiveColorSpace: 0 ---- !u!1 &7643233660357217729 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 9155755284567349372} - - component: {fileID: 8081453901173687489} - - component: {fileID: 8727577569916513256} - m_Layer: 6 - m_Name: left_door - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &9155755284567349372 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7643233660357217729} - serializedVersion: 2 - m_LocalRotation: {x: 0.5, y: 0.5, z: -0.49999982, w: 0.5000002} - m_LocalPosition: {x: -1.2320929, y: -0.7541601, z: -0.03640825} - m_LocalScale: {x: 100.000015, y: 100.00003, z: 100.000015} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1076547100095614248} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &8081453901173687489 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7643233660357217729} - m_Mesh: {fileID: 5585705562171473042, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} ---- !u!23 &8727577569916513256 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7643233660357217729} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: -7998116918101663598, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 950087371587980544, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -5149717236700318645, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -6343716149423446730, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -8958874851583361158, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -8448547190637030200, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 623467474444848304, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -5755657720151833217, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - 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!1 &7843559606308109233 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2425101814241512375} - - component: {fileID: 8475796777219271733} - - component: {fileID: 198073813527369734} - m_Layer: 6 - m_Name: Right_door - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &2425101814241512375 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7843559606308109233} - serializedVersion: 2 - m_LocalRotation: {x: 0.50000006, y: 0.49999997, z: -0.49999997, w: 0.50000006} - m_LocalPosition: {x: 1.2544253, y: -0.74922943, z: -0.07973657} - m_LocalScale: {x: 100, y: 100.000015, z: 100.000015} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1076547100095614248} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &8475796777219271733 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7843559606308109233} - m_Mesh: {fileID: 3565296128440139463, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} ---- !u!23 &198073813527369734 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7843559606308109233} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: -7998116918101663598, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -5149717236700318645, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 950087371587980544, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -8958874851583361158, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 623467474444848304, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -6343716149423446730, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -8448547190637030200, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -5755657720151833217, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - 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!1 &8059555405300770058 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1076547100095614248} - m_Layer: 6 - m_Name: 2_new - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1076547100095614248 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8059555405300770058} - serializedVersion: 2 - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 5064165004536092304} - - {fileID: 3085344055384771255} - - {fileID: 7214299775216957279} - - {fileID: 3232755990715192808} - - {fileID: 9155755284567349372} - - {fileID: 2425101814241512375} - - {fileID: 1996295117967270797} - - {fileID: 9151363907653717790} - - {fileID: 4881283934181763003} - - {fileID: 7681462549031831539} - - {fileID: 3417349902575571392} - m_Father: {fileID: 3226499851666629583} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &8073301986436921706 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4881283934181763003} - - component: {fileID: 7032801709433171668} - - component: {fileID: 2303916293644935058} - m_Layer: 6 - m_Name: tyr_2 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4881283934181763003 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8073301986436921706} - serializedVersion: 2 - m_LocalRotation: {x: 0.000000053385083, y: 0.7071068, z: -0.7071067, w: -0.000000053385072} - m_LocalPosition: {x: 1.1030273, y: -1.8650604, z: -0.38368928} - m_LocalScale: {x: 100, y: 100.000015, z: 100.000015} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1076547100095614248} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &7032801709433171668 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8073301986436921706} - m_Mesh: {fileID: 7994626307252788740, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} ---- !u!23 &2303916293644935058 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8073301986436921706} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: -373174151706276150, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 586645097001841572, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 358632464446913707, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 5241662679339499281, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - 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!1 &8137402927492455013 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + textureScale: {x: 1, y: 1} + shadowBias: 0.5 + generateLightingData: 0 + m_MinVertexDistance: 0.1 + m_MaskInteraction: 0 + m_Autodestruct: 0 + m_Emitting: 1 + m_ApplyActiveColorSpace: 0 +--- !u!1 &7305315470125461635 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -14088,92 +1372,66 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 3085344055384771255} - - component: {fileID: 5874836419271216831} - - component: {fileID: 8971606842087962358} + - component: {fileID: 7086864719022814836} + - component: {fileID: 7826855213399514145} + - component: {fileID: 3580292300952123767} m_Layer: 6 - m_Name: Body + m_Name: SkidRL m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &3085344055384771255 +--- !u!4 &7086864719022814836 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8137402927492455013} + m_GameObject: {fileID: 7305315470125461635} serializedVersion: 2 - m_LocalRotation: {x: 0.000000053385083, y: 0.7071068, z: -0.7071067, w: -0.000000053385072} - m_LocalPosition: {x: -0, y: 0, z: 0.069681294} - m_LocalScale: {x: 100, y: 100.000015, z: 100.000015} + m_LocalRotation: {x: -0, y: -0, z: 0.70710677, w: 0.7071068} + m_LocalPosition: {x: -0.8230004, y: -0.14499955, z: -1.5130008} + m_LocalScale: {x: 0.5024134, y: 0.15072668, z: 0.59622} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1076547100095614248} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &5874836419271216831 -MeshFilter: + m_Father: {fileID: 5232010396526986649} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90.00001} +--- !u!114 &7826855213399514145 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8137402927492455013} - m_Mesh: {fileID: 2959467708922500008, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} ---- !u!23 &8971606842087962358 -MeshRenderer: + m_GameObject: {fileID: 7305315470125461635} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de695257d46f68648a759bca131f0afe, type: 3} + m_Name: + m_EditorClassIdentifier: + _driftEffect: {fileID: 0} +--- !u!96 &3580292300952123767 +TrailRenderer: + serializedVersion: 3 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8137402927492455013} - m_Enabled: 1 + m_GameObject: {fileID: 7305315470125461635} + m_Enabled: 0 m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 623467474444848304, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 1425599493148552152, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -5149717236700318645, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -7998116918101663598, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -5568519231300848177, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 2826571628412762842, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -4174603590541043493, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -2857437532595013558, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -759318388583361874, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -3887528768389588280, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 848521547590345460, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -8958874851583361158, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 950087371587980544, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 3961638683746587046, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 1272687261006680210, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -8448547190637030200, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -1573482102120744772, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -6384503590677181731, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 3695502492197912659, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -3596882150153649281, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -6343716149423446730, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -5755657720151833217, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -4084519660839939628, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 9050333147848335295, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -4070782632557183662, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -2697850565879539699, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -1368468521490782606, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -980485081727335726, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -673587753036872642, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 4982666175732342618, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -5812629761765426045, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: 3328154041840904986, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} - - {fileID: -3938923400497166336, guid: cc3b96096df6948479cfdbf314068f7d, type: 3} + - {fileID: 2100000, guid: d1bbd2a74d98b154c852fcd0ddfce1b5, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -14194,7 +1452,68 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} + m_Time: 5 + m_PreviewTimeScale: 1 + m_Parameters: + serializedVersion: 3 + widthMultiplier: 1 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.40259743 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + textureScale: {x: 1, y: 1} + shadowBias: 0.5 + generateLightingData: 0 + m_MinVertexDistance: 0.1 + m_MaskInteraction: 0 + m_Autodestruct: 0 + m_Emitting: 1 + m_ApplyActiveColorSpace: 0 --- !u!1 &8413865242187641906 GameObject: m_ObjectHideFlags: 0 @@ -14305,7 +1624,7 @@ Transform: m_GameObject: {fileID: 8414377261754603027} serializedVersion: 2 m_LocalRotation: {x: 0.00000008146034, y: -0.00000004371139, z: 3.560745e-15, w: 1} - m_LocalPosition: {x: 0.9055004, y: 0.1887848, z: -1.5349852} + m_LocalPosition: {x: 1.292, y: 0.334, z: -2.235} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -14527,156 +1846,6 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &8909040493137368838 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8250132083236166162} - - component: {fileID: 5346775635268604027} - - component: {fileID: 2396937750648648927} - m_Layer: 6 - m_Name: SkidFL - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8250132083236166162 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8909040493137368838} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: 0.70710677, w: 0.7071068} - m_LocalPosition: {x: -1.16, y: 0.06500316, z: 2.189} - m_LocalScale: {x: 0.7536238, y: 0.22608706, z: 0.894325} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1762526813149383710} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90.00001} ---- !u!114 &5346775635268604027 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8909040493137368838} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: de695257d46f68648a759bca131f0afe, type: 3} - m_Name: - m_EditorClassIdentifier: - _driftEffect: {fileID: 0} ---- !u!96 &2396937750648648927 -TrailRenderer: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8909040493137368838} - m_Enabled: 0 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 0 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 0 - m_RayTracingMode: 0 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: d1bbd2a74d98b154c852fcd0ddfce1b5, 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_Time: 5 - m_PreviewTimeScale: 1 - m_Parameters: - serializedVersion: 3 - widthMultiplier: 1 - widthCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0.40259743 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - colorGradient: - serializedVersion: 2 - key0: {r: 1, g: 1, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: -1 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - numCornerVertices: 0 - numCapVertices: 0 - alignment: 0 - textureMode: 0 - textureScale: {x: 1, y: 1} - shadowBias: 0.5 - generateLightingData: 0 - m_MinVertexDistance: 0.1 - m_MaskInteraction: 0 - m_Autodestruct: 0 - m_Emitting: 1 - m_ApplyActiveColorSpace: 0 --- !u!1 &9101065384304838595 GameObject: m_ObjectHideFlags: 0 @@ -14854,7 +2023,7 @@ Transform: m_GameObject: {fileID: 9195708726648234761} serializedVersion: 2 m_LocalRotation: {x: 0.00000008146034, y: -0.00000004371139, z: 3.560745e-15, w: 1} - m_LocalPosition: {x: -0.8254285, y: 0.18878469, z: 1.0864365} + m_LocalPosition: {x: -1.292, y: 0.334, z: 1.693} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -14934,14 +2103,11 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 9208270954602487118} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.69, z: 0} + 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_ConstrainProportionsScale: 0 + m_ConstrainProportionsScale: 1 m_Children: - {fileID: 5232010396526986649} - - {fileID: 1762526813149383710} - - {fileID: 6118429012727029098} - - {fileID: 3226499851666629583} - m_Father: {fileID: 1545892790134000353} + m_Father: {fileID: 4431542291951001293} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Prefabs/Player2.prefab b/Assets/Prefabs/Player2.prefab new file mode 100644 index 0000000..45e900d --- /dev/null +++ b/Assets/Prefabs/Player2.prefab @@ -0,0 +1,402 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &4032077643072879813 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6676801383817476911} + - component: {fileID: 3398321569795638082} + - component: {fileID: 7682618854707049691} + - component: {fileID: 459342078489286453} + - component: {fileID: 5878037832443769926} + - component: {fileID: 2338321692026105580} + m_Layer: 0 + m_Name: Player2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6676801383817476911 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4032077643072879813} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6623297660473287980} + - {fileID: 7367955241237805045} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &3398321569795638082 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4032077643072879813} + serializedVersion: 4 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &7682618854707049691 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4032077643072879813} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0a591d221a634417e9827eb58e17de84, type: 3} + m_Name: + m_EditorClassIdentifier: + _stateAuthorityChangeErrorCorrectionDelta: 0 + SyncScale: 0 + SyncParent: 1 + _interpolationTarget: {fileID: 7367955241237805045} + UsePreciseRotation: 1 + UseRenderSleepThresholds: 1 + RenderThresholds: + UseEnergy: 1 + Position: 0.01 + Rotation: 0.01 + Scale: 0.01 +--- !u!114 &459342078489286453 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4032077643072879813} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1552182283, guid: e725a070cec140c4caffb81624c8c787, type: 3} + m_Name: + m_EditorClassIdentifier: + SortKey: 1679345453 + ObjectInterest: 1 + Flags: 262145 + NestedObjects: [] + NetworkedBehaviours: + - {fileID: 7682618854707049691} + - {fileID: 5878037832443769926} + - {fileID: 2338321692026105580} + ForceRemoteRenderTimeframe: 0 +--- !u!114 &5878037832443769926 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4032077643072879813} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4280e0bb0e4baf84bb68b6ef7ee0fd17, type: 3} + m_Name: + m_EditorClassIdentifier: + moveSpeed: 5 +--- !u!114 &2338321692026105580 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4032077643072879813} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2459e596155711c43a1b4565da9d7f1b, type: 3} + m_Name: + m_EditorClassIdentifier: + playerCamera: {fileID: 6124284408314705918} + audioListener: {fileID: 2864111000688441171} +--- !u!1 &4300849017253945891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1535989459813637518} + - component: {fileID: 6124284408314705918} + - component: {fileID: 2864111000688441171} + m_Layer: 0 + m_Name: Main Camera (1) + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1535989459813637518 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4300849017253945891} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7367955241237805045} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &6124284408314705918 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4300849017253945891} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0, g: 0.058700204, b: 0.1509434, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!81 &2864111000688441171 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4300849017253945891} + m_Enabled: 1 +--- !u!1 &8337542066066956186 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7367955241237805045} + - component: {fileID: 7973122519765735985} + - component: {fileID: 5947085693189510166} + - component: {fileID: 1216700829615348362} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7367955241237805045 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8337542066066956186} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1535989459813637518} + m_Father: {fileID: 6676801383817476911} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7973122519765735985 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8337542066066956186} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &5947085693189510166 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8337542066066956186} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + 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!65 &1216700829615348362 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8337542066066956186} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!1001 &6623297660472901550 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 6676801383817476911} + m_Modifications: + - target: {fileID: 100002, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} + propertyPath: m_Name + value: Car_11 + objectReference: {fileID: 0} + - target: {fileID: 100002, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} +--- !u!4 &6623297660473287980 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 400002, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} + m_PrefabInstance: {fileID: 6623297660472901550} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Prefabs/Player2.prefab.meta b/Assets/Prefabs/Player2.prefab.meta new file mode 100644 index 0000000..0fa9ac5 --- /dev/null +++ b/Assets/Prefabs/Player2.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a94cf38efc23afd4ca1d24426ac5aa42 +labels: +- FusionPrefab +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RaceCountdownManager.cs b/Assets/RaceCountdownManager.cs index 2f71788..a26d190 100644 --- a/Assets/RaceCountdownManager.cs +++ b/Assets/RaceCountdownManager.cs @@ -1,18 +1,14 @@ using UnityEngine; using TMPro; -using Fusion; using System.Collections; -public class RaceCountdownManager : NetworkBehaviour +public class RaceCountdownManager : MonoBehaviour { public static RaceCountdownManager Instance; [SerializeField] private TextMeshProUGUI countdownText; - - [Networked, OnChangedRender(nameof(OnCountdownChanged))] - private int CountdownTimer { get; set; } - - [Networked] public bool RaceStarted { get; private set; } + private int countdownTimer; + public bool RaceStarted { get; private set; } private void Awake() { @@ -21,39 +17,85 @@ public class RaceCountdownManager : NetworkBehaviour countdownText.gameObject.SetActive(false); } - public override void Spawned() + private void Start() { - if (Object.HasStateAuthority) - { - StartCoroutine(CountdownCoroutine()); - } + StartCoroutine(CountdownCoroutine()); } private IEnumerator CountdownCoroutine() { - CountdownTimer = 3; + countdownTimer = 3; countdownText.gameObject.SetActive(true); - while (CountdownTimer > 0) + while (countdownTimer > 0) { + countdownText.text = countdownTimer.ToString(); yield return new WaitForSeconds(1f); - CountdownTimer--; + countdownTimer--; } - RaceStarted = true; countdownText.gameObject.SetActive(false); - } - - private void OnCountdownChanged() - { - if (CountdownTimer > 0) - { - countdownText.text = CountdownTimer.ToString(); - countdownText.gameObject.SetActive(true); - } - else - { - countdownText.gameObject.SetActive(false); - } + RaceStarted = true; } } + + +//using UnityEngine; +//using TMPro; +//using Fusion; +//using System.Collections; + +//public class RaceCountdownManager : NetworkBehaviour +//{ +// public static RaceCountdownManager Instance; + +// [SerializeField] private TextMeshProUGUI countdownText; + +// [Networked, OnChangedRender(nameof(OnCountdownChanged))] +// private int CountdownTimer { get; set; } + +// [Networked] public bool RaceStarted { get; private set; } + +// private void Awake() +// { +// Instance = this; +// if (countdownText != null) +// countdownText.gameObject.SetActive(false); +// } + +// public override void Spawned() +// { +// if (Object.HasStateAuthority) +// { +// StartCoroutine(CountdownCoroutine()); +// } +// } + +// private IEnumerator CountdownCoroutine() +// { +// CountdownTimer = 3; +// countdownText.gameObject.SetActive(true); + +// while (CountdownTimer > 0) +// { +// yield return new WaitForSeconds(1f); +// CountdownTimer--; +// } + +// RaceStarted = true; +// countdownText.gameObject.SetActive(false); +// } + +// private void OnCountdownChanged() +// { +// if (CountdownTimer > 0) +// { +// countdownText.text = CountdownTimer.ToString(); +// countdownText.gameObject.SetActive(true); +// } +// else +// { +// countdownText.gameObject.SetActive(false); +// } +// } +//} diff --git a/Assets/Scenes/Gameplay.unity b/Assets/Scenes/Gameplay.unity index fbd1ec8..cab45e8 100644 --- a/Assets/Scenes/Gameplay.unity +++ b/Assets/Scenes/Gameplay.unity @@ -463,6 +463,112 @@ Transform: m_Children: [] m_Father: {fileID: 731796938} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &340696038 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 340696039} + - component: {fileID: 340696042} + - component: {fileID: 340696041} + - component: {fileID: 340696040} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &340696039 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 340696038} + serializedVersion: 2 + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.075} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2802928179976518224} + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!64 &340696040 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 340696038} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &340696041 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 340696038} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + 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!33 &340696042 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 340696038} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &363527889 GameObject: m_ObjectHideFlags: 0 @@ -1384,7 +1490,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &731796937 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1830,14 +1936,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 0bbbbd8a49f623f43abb94ec5c65f24c, type: 3} m_Name: m_EditorClassIdentifier: - runner: {fileID: 824699893} - lobbyUI: {fileID: 0} - sessionListUIHandler: {fileID: 0} - lobbyNameInput: {fileID: 0} - createLobbyButton: {fileID: 0} - waitingText: {fileID: 0} - playerPrefab: - RawGuidValue: 00000000000000000000000000000000 --- !u!114 &824699893 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2262,11 +2360,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 11400002, guid: bb945e2a87718084184a72db9cf1ee27, type: 3} propertyPath: m_Color.a - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 11400004, guid: bb945e2a87718084184a72db9cf1ee27, type: 3} propertyPath: m_Color.a - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 22400000, guid: bb945e2a87718084184a72db9cf1ee27, type: 3} propertyPath: m_AnchorMax.x @@ -3546,7 +3644,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &1614665874 RectTransform: m_ObjectHideFlags: 0 @@ -3710,7 +3808,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &1627785075 MonoBehaviour: m_ObjectHideFlags: 0 @@ -4093,7 +4191,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!4 &1868736289 Transform: m_ObjectHideFlags: 0 @@ -4514,7 +4612,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!4 &1928440683 Transform: m_ObjectHideFlags: 0 @@ -4561,7 +4659,7 @@ Transform: m_Children: [] m_Father: {fileID: 731796938} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1995066739 +--- !u!1 &1959504774 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -4569,30 +4667,104 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1995066740} + - component: {fileID: 1959504775} + - component: {fileID: 1959504778} + - component: {fileID: 1959504777} + - component: {fileID: 1959504776} m_Layer: 0 - m_Name: Waypoint 005 + m_Name: Cube m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1995066740 + m_IsActive: 0 +--- !u!4 &1959504775 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1995066739} + m_GameObject: {fileID: 1959504774} serializedVersion: 2 - m_LocalRotation: {x: -0.008038728, y: 0.7678189, z: 0.009636006, w: 0.6405441} - m_LocalPosition: {x: 107.42949, y: 4.7186947, z: 1.3907232} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.16, y: 0.16, z: 0.16} + m_ConstrainProportionsScale: 1 m_Children: [] - m_Father: {fileID: 731796938} + m_Father: {fileID: 1407063193735831893} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &2062866431 +--- !u!65 &1959504776 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1959504774} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1959504777 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1959504774} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + 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!33 &1959504778 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1959504774} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1972446635 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -4600,90 +4772,227 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 2062866432} - - component: {fileID: 2062866433} + - component: {fileID: 1972446636} + - component: {fileID: 1972446639} + - component: {fileID: 1972446638} + - component: {fileID: 1972446637} m_Layer: 0 - m_Name: Waypoint - m_TagString: Untagged + m_Name: Plane + m_TagString: Road m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &2062866432 + m_IsActive: 0 +--- !u!4 &1972446636 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2062866431} + m_GameObject: {fileID: 1972446635} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -12.7, y: -17.3955, z: 0.02} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.03} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 472995953} - - {fileID: 1195283488} - - {fileID: 1311703588} - - {fileID: 504439175} - - {fileID: 1506820233} - - {fileID: 290851100} - - {fileID: 1281562746} - - {fileID: 231128086} - - {fileID: 546097060} - - {fileID: 501743647} - - {fileID: 648870150} - - {fileID: 1055027376} - - {fileID: 309716366} - - {fileID: 1357738589} - - {fileID: 563554351} - - {fileID: 1172126929} - - {fileID: 1453498124} - - {fileID: 1860435222} - - {fileID: 142445176} - - {fileID: 667321691} - - {fileID: 1632319061} - - {fileID: 978028148} - - {fileID: 1567514459} - - {fileID: 220822596} - - {fileID: 541027475} - - {fileID: 1380364437} - - {fileID: 201031050} - - {fileID: 704706410} - - {fileID: 852579231} - - {fileID: 1519224011} - - {fileID: 1053776802} - - {fileID: 363527890} - - {fileID: 1412927614} - - {fileID: 1146359389} - - {fileID: 864225709} - - {fileID: 9971859} - - {fileID: 2094892511} - - {fileID: 1047083314} - - {fileID: 1054980405} - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &2062866433 -MonoBehaviour: + m_Children: [] + m_Father: {fileID: 1407063193735831893} + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!64 &1972446637 +MeshCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2062866431} + m_GameObject: {fileID: 1972446635} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70852dc981465ea48bb527b9e33a87fd, type: 3} - m_Name: - m_EditorClassIdentifier: - _smoothRoute: 1 - _closedLoop: 1 - _editorVisualisationSubsteps: 653 - _waypoints: - - {fileID: 472995953} - - {fileID: 1195283488} - - {fileID: 1311703588} - - {fileID: 504439175} - - {fileID: 1506820233} + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &1972446638 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1972446635} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + 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!33 &1972446639 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1972446635} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1995066739 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1995066740} + m_Layer: 0 + m_Name: Waypoint 005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1995066740 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1995066739} + serializedVersion: 2 + m_LocalRotation: {x: -0.008038728, y: 0.7678189, z: 0.009636006, w: 0.6405441} + m_LocalPosition: {x: 107.42949, y: 4.7186947, z: 1.3907232} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 731796938} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2062866431 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2062866432} + - component: {fileID: 2062866433} + m_Layer: 0 + m_Name: Waypoint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2062866432 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2062866431} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -12.7, y: -17.3955, z: 0.02} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 472995953} + - {fileID: 1195283488} + - {fileID: 1311703588} + - {fileID: 504439175} + - {fileID: 1506820233} + - {fileID: 290851100} + - {fileID: 1281562746} + - {fileID: 231128086} + - {fileID: 546097060} + - {fileID: 501743647} + - {fileID: 648870150} + - {fileID: 1055027376} + - {fileID: 309716366} + - {fileID: 1357738589} + - {fileID: 563554351} + - {fileID: 1172126929} + - {fileID: 1453498124} + - {fileID: 1860435222} + - {fileID: 142445176} + - {fileID: 667321691} + - {fileID: 1632319061} + - {fileID: 978028148} + - {fileID: 1567514459} + - {fileID: 220822596} + - {fileID: 541027475} + - {fileID: 1380364437} + - {fileID: 201031050} + - {fileID: 704706410} + - {fileID: 852579231} + - {fileID: 1519224011} + - {fileID: 1053776802} + - {fileID: 363527890} + - {fileID: 1412927614} + - {fileID: 1146359389} + - {fileID: 864225709} + - {fileID: 9971859} + - {fileID: 2094892511} + - {fileID: 1047083314} + - {fileID: 1054980405} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2062866433 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2062866431} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 70852dc981465ea48bb527b9e33a87fd, type: 3} + m_Name: + m_EditorClassIdentifier: + _smoothRoute: 1 + _closedLoop: 1 + _editorVisualisationSubsteps: 653 + _waypoints: + - {fileID: 472995953} + - {fileID: 1195283488} + - {fileID: 1311703588} + - {fileID: 504439175} + - {fileID: 1506820233} - {fileID: 290851100} - {fileID: 1281562746} - {fileID: 231128086} @@ -4800,6 +5109,14 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 3310339452343845666} m_Mesh: {fileID: 8610960573538841178, guid: 98e2b3b48e5fe9e4981408c03c658935, type: 3} +--- !u!33 &36960728715627561 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3925442449336719195} + m_Mesh: {fileID: 4300020, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} --- !u!4 &46731120365194828 Transform: m_ObjectHideFlags: 0 @@ -6833,6 +7150,57 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5972930060223635523} m_Mesh: {fileID: -3378440169994004323, guid: 98e2b3b48e5fe9e4981408c03c658935, type: 3} +--- !u!20 &961411950218036754 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4196981367105912912} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 --- !u!4 &974791416502064664 Transform: m_ObjectHideFlags: 0 @@ -7866,6 +8234,21 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!4 &1368923038053385793 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9101065383549811819} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: 0.70710677, w: 0.7071068} + m_LocalPosition: {x: 0.82000035, y: -0.14499955, z: 1.1060005} + m_LocalScale: {x: 0.5024134, y: 0.15072668, z: 0.59622} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5232010397013999153} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90.00001} --- !u!1 &1387628231771182467 GameObject: m_ObjectHideFlags: 0 @@ -8050,7 +8433,9 @@ Transform: m_LocalPosition: {x: 0.0306463, y: 4.39051, z: -0.210382} m_LocalScale: {x: 100, y: 100, z: 100} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 1972446636} + - {fileID: 1959504775} m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &1409074306488401194 @@ -8678,6 +9063,69 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!23 &1647803836497769274 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3925442449336719195} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + 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: bc40aad1e584c59478d18648dd399adc, 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!135 &1654061785543740014 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4523264194943191500} + m_Material: {fileID: 13400000, guid: fe43720314558424185967ccff2c6354, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 1.1 + m_Center: {x: 0, y: 0, z: 0} --- !u!33 &1654470580805781531 MeshFilter: m_ObjectHideFlags: 0 @@ -8806,17 +9254,32 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!4 &1676197325963728455 +--- !u!4 &1672444641785230959 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6414871274511160326} + m_GameObject: {fileID: 2192976182390153476} serializedVersion: 2 - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -116.13199, y: -7.26745, z: 67.9723} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalRotation: {x: 0.00000008146034, y: -0.00000004371139, z: 3.560745e-15, w: 1} + m_LocalPosition: {x: -1.292, y: 0.334, z: -2.235} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5232010397013999153} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &1676197325963728455 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6414871274511160326} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -116.13199, y: -7.26745, z: 67.9723} + m_LocalScale: {x: 100, y: 100, z: 100} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2531209556464813522} @@ -9035,6 +9498,14 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!33 &1842507428103749388 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3694237511811620995} + m_Mesh: {fileID: 4300012, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} --- !u!4 &1847439734953756504 Transform: m_ObjectHideFlags: 0 @@ -9399,6 +9870,110 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!96 &2056169460167607263 +TrailRenderer: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9101065383549811819} + m_Enabled: 0 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d1bbd2a74d98b154c852fcd0ddfce1b5, 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_Time: 5 + m_PreviewTimeScale: 1 + m_Parameters: + serializedVersion: 3 + widthMultiplier: 1 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.40259743 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + textureScale: {x: 1, y: 1} + shadowBias: 0.5 + generateLightingData: 0 + m_MinVertexDistance: 0.1 + m_MaskInteraction: 0 + m_Autodestruct: 0 + m_Emitting: 1 + m_ApplyActiveColorSpace: 0 --- !u!4 &2058969689845442097 Transform: m_ObjectHideFlags: 0 @@ -9602,6 +10177,33 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!54 &2160202761607379236 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5097956068402022692} + serializedVersion: 4 + m_Mass: 12 + m_Drag: 0.25 + m_AngularDrag: 25 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 0 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 64 + m_CollisionDetection: 1 --- !u!23 &2161880711555277776 MeshRenderer: m_ObjectHideFlags: 0 @@ -9659,6 +10261,24 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2192976182390153476 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1672444641785230959} + - component: {fileID: 7438406276027355456} + - component: {fileID: 6240239829967937945} + m_Layer: 6 + m_Name: Wheel_Back_L + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!23 &2199879995435870717 MeshRenderer: m_ObjectHideFlags: 0 @@ -9709,6 +10329,48 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1541272468796037211} m_Mesh: {fileID: 7855155336590950268, guid: 98e2b3b48e5fe9e4981408c03c658935, type: 3} +--- !u!23 &2201859981592470154 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8685002363034834852} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + 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: 28933597e884c8c4e8d66cc9072d5ce0, 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!4 &2203735051236107439 Transform: m_ObjectHideFlags: 0 @@ -9800,6 +10462,14 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!33 &2243603945577818376 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9195708726967589025} + m_Mesh: {fileID: 4300010, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} --- !u!33 &2250413024518556638 MeshFilter: m_ObjectHideFlags: 0 @@ -9865,6 +10535,21 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &2266507764268683916 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2810042475427661205} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.66, z: -3.3699994} + m_LocalScale: {x: 0.5, y: 0.28, z: 1.2499999} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4431542292571170149} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &2269673570315908960 MeshFilter: m_ObjectHideFlags: 0 @@ -11199,6 +11884,22 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &2693913535590071675 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4196981367105912912} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e76209d84eb35e742b0070ddc0561242, type: 3} + m_Name: + m_EditorClassIdentifier: + Distance: 0.01 + FastFilter: 4 + motionBlurMaterial: {fileID: 2100000, guid: e751ebcfded655041b633ff6a5f4b87d, type: 2} + mask: {fileID: 2800000, guid: fadde0ef1c1559641bb445997f51f160, type: 3} --- !u!23 &2708944641782585169 MeshRenderer: m_ObjectHideFlags: 0 @@ -11479,9 +12180,27 @@ Transform: m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalScale: {x: 100, y: 100, z: 100} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 340696039} m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2810042475427661205 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2266507764268683916} + - component: {fileID: 2918063942389837309} + m_Layer: 6 + m_Name: Collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!4 &2812696575182887403 Transform: m_ObjectHideFlags: 0 @@ -11535,6 +12254,24 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2829335706111415381 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3834359950974970287} + - component: {fileID: 3937104099300631703} + - component: {fileID: 8764986576164550059} + m_Layer: 6 + m_Name: SkidRR + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &2829408208555204865 GameObject: m_ObjectHideFlags: 0 @@ -11723,6 +12460,28 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!64 &2918063942389837309 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2810042475427661205} + m_Material: {fileID: 13400000, guid: b8b1ae7ca19f4cd4194b4505bd39dc06, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 5060444177187149915, guid: 99af9074067c389458d2a716374b8f42, type: 3} --- !u!4 &2945224814495698768 Transform: m_ObjectHideFlags: 0 @@ -11738,6 +12497,18 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2945888186890222404 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5097956068402022692} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 0} + m_Name: + m_EditorClassIdentifier: --- !u!33 &2960238930918921682 MeshFilter: m_ObjectHideFlags: 0 @@ -11811,6 +12582,18 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &3020599757369606063 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5097956068402022692} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 0} + m_Name: + m_EditorClassIdentifier: --- !u!4 &3021178150537612521 Transform: m_ObjectHideFlags: 0 @@ -12050,6 +12833,24 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!1 &3067970481616752801 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8680394450457815791} + - component: {fileID: 5337483043286170764} + - component: {fileID: 6318049027750705774} + m_Layer: 6 + m_Name: Glass_11 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!23 &3082914061791762312 MeshRenderer: m_ObjectHideFlags: 0 @@ -12360,6 +13161,14 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!81 &3230930960535064084 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4196981367105912912} + m_Enabled: 1 --- !u!4 &3232380490241162594 Transform: m_ObjectHideFlags: 0 @@ -12393,6 +13202,21 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!4 &3247130377918357794 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7049446829034127541} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: 0.70710677, w: 0.7071068} + m_LocalPosition: {x: -0.8230003, y: -0.14499955, z: 1.1060004} + m_LocalScale: {x: 0.5024134, y: 0.15072668, z: 0.59622} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5232010397013999153} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90.00001} --- !u!33 &3249875613916455759 MeshFilter: m_ObjectHideFlags: 0 @@ -12466,6 +13290,22 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7821153357756645497} m_Mesh: {fileID: 6545242502897195300, guid: 98e2b3b48e5fe9e4981408c03c658935, type: 3} +--- !u!1 &3261787742464113480 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5232010397013999153} + m_Layer: 6 + m_Name: Car_11 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &3266025588943225591 GameObject: m_ObjectHideFlags: 0 @@ -12644,6 +13484,23 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!114 &3319685827410649217 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5097956068402022692} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c7b8a4db074ebd44980c8e8f18ff5a82, type: 3} + m_Name: + m_EditorClassIdentifier: + _leadOffset: 35 + _leadMultiplier: 0.25 + _sideOffset: 0 + waypointsCircuit: {fileID: 0} + allwaypointCircuits: [] --- !u!1 &3321270651338729061 GameObject: m_ObjectHideFlags: 0 @@ -12933,6 +13790,14 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!33 &3465752023563432615 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8413865240660709274} + m_Mesh: {fileID: 4300016, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} --- !u!1 &3476308879644304161 GameObject: m_ObjectHideFlags: 0 @@ -13097,15 +13962,119 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &3607830173512201951 -GameObject: +--- !u!96 &3580292299426235103 +TrailRenderer: + serializedVersion: 3 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4631148104482837937} + m_GameObject: {fileID: 7305315471953316651} + m_Enabled: 0 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d1bbd2a74d98b154c852fcd0ddfce1b5, 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_Time: 5 + m_PreviewTimeScale: 1 + m_Parameters: + serializedVersion: 3 + widthMultiplier: 1 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.40259743 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + textureScale: {x: 1, y: 1} + shadowBias: 0.5 + generateLightingData: 0 + m_MinVertexDistance: 0.1 + m_MaskInteraction: 0 + m_Autodestruct: 0 + m_Emitting: 1 + m_ApplyActiveColorSpace: 0 +--- !u!1 &3607830173512201951 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4631148104482837937} - component: {fileID: 409337064655856723} - component: {fileID: 609582744938304903} m_Layer: 0 @@ -13322,6 +14291,24 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3694237511811620995 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4488184778818198183} + - component: {fileID: 1842507428103749388} + - component: {fileID: 8536542081273716475} + m_Layer: 6 + m_Name: Wheel_R + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &3698620289099630464 GameObject: m_ObjectHideFlags: 0 @@ -13659,6 +14646,14 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &3818793660342047854 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8685002363034834852} + m_Mesh: {fileID: 4300018, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} --- !u!23 &3829507549036620471 MeshRenderer: m_ObjectHideFlags: 0 @@ -13701,6 +14696,21 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!4 &3834359950974970287 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2829335706111415381} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: 0.70710677, w: 0.7071068} + m_LocalPosition: {x: 0.86900055, y: -0.14499955, z: -1.5090002} + m_LocalScale: {x: 0.5024134, y: 0.15072668, z: 0.59622} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5232010397013999153} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90.00001} --- !u!1 &3857573545923097327 GameObject: m_ObjectHideFlags: 0 @@ -13797,6 +14807,37 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!1 &3925442449336719195 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7015308070905758482} + - component: {fileID: 36960728715627561} + - component: {fileID: 1647803836497769274} + m_Layer: 6 + m_Name: Body_11 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &3937104099300631703 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2829335706111415381} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de695257d46f68648a759bca131f0afe, type: 3} + m_Name: + m_EditorClassIdentifier: + _driftEffect: {fileID: 0} --- !u!1 &3941628885438346377 GameObject: m_ObjectHideFlags: 0 @@ -14313,6 +15354,48 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!23 &4076015668239398326 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8625113007147779272} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + 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: 767769731782fe9409ca4e22077acbd3, 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!33 &4082088133455872682 MeshFilter: m_ObjectHideFlags: 0 @@ -14378,6 +15461,48 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &4107218408086228700 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8414377261000486331} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + 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: 96d9c902e61354248bb428719567f189, 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!4 &4117418370909879932 Transform: m_ObjectHideFlags: 0 @@ -14658,6 +15783,27 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &4196981367105912912 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7224142285519967366} + - component: {fileID: 961411950218036754} + - component: {fileID: 3230930960535064084} + - component: {fileID: 8687607069550309556} + - component: {fileID: 2693913535590071675} + - component: {fileID: 7003429170137387264} + m_Layer: 0 + m_Name: MainCamera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!23 &4199575511072785249 MeshRenderer: m_ObjectHideFlags: 0 @@ -15036,6 +16182,25 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!4 &4431542292571170149 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5097956068402022692} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: 0.9564881, z: -0, w: 0.29177147} + m_LocalPosition: {x: 131.95, y: -12.14, z: -20.17} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2266507764268683916} + - {fileID: 5884097419142505627} + - {fileID: 6916985651697123274} + - {fileID: 4727001569564492046} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 146.072, z: 0} --- !u!23 &4440175096902659707 MeshRenderer: m_ObjectHideFlags: 0 @@ -15165,6 +16330,21 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4488184778818198183 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3694237511811620995} + serializedVersion: 2 + m_LocalRotation: {x: 0.00000008146034, y: -0.00000004371139, z: 3.560745e-15, w: 1} + m_LocalPosition: {x: 1.292, y: 0.334, z: 1.693} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5232010397013999153} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &4492706164755392982 MeshFilter: m_ObjectHideFlags: 0 @@ -15181,6 +16361,25 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4800891923877086123} m_Mesh: {fileID: 2339340021362623994, guid: 98e2b3b48e5fe9e4981408c03c658935, type: 3} +--- !u!1 &4523264194943191500 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5884097419142505627} + - component: {fileID: 1654061785543740014} + - component: {fileID: 6038027054518434296} + - component: {fileID: 6397768574303871721} + m_Layer: 3 + m_Name: SphereRB + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!23 &4571698248861113711 MeshRenderer: m_ObjectHideFlags: 0 @@ -15405,9 +16604,10 @@ GameObject: - component: {fileID: 4628590618310664515} - component: {fileID: 7303946329985601688} - component: {fileID: 7303946329985601689} + - component: {fileID: 7303946329985601690} m_Layer: 0 m_Name: Terrain_Terrain_0 - m_TagString: Ground + m_TagString: Road m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 @@ -15562,6 +16762,21 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!4 &4711483572861537067 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8625113007147779272} + serializedVersion: 2 + m_LocalRotation: {x: 0.00000008146034, y: -0.00000004371139, z: 3.560745e-15, w: 1} + m_LocalPosition: {x: 0.000000014901147, y: 0.42928687, z: 1.6087512} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5232010397013999153} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &4722355322010420509 Transform: m_ObjectHideFlags: 0 @@ -15577,6 +16792,21 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4727001569564492046 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5395855668082432033} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.5, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4431542292571170149} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &4736073602057940425 GameObject: m_ObjectHideFlags: 0 @@ -15661,6 +16891,19 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &4791671936010130004 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7049446829034127541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de695257d46f68648a759bca131f0afe, type: 3} + m_Name: + m_EditorClassIdentifier: + _driftEffect: {fileID: 0} --- !u!1 &4791846904879223276 GameObject: m_ObjectHideFlags: 0 @@ -16084,6 +17327,24 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!114 &4958469119238545364 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5097956068402022692} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a7354a95ac207024894f426c22c2b811, type: 3} + m_Name: + m_EditorClassIdentifier: + CurrentNOS: 0 + chargeSpeed: 13 + depletionSpeed: 20 + boostAcceleration: 40 + audioVolume: 0.5 + boostAudio: {fileID: 0} --- !u!1 &4960627995986506187 GameObject: m_ObjectHideFlags: 0 @@ -16431,7 +17692,7 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &5110739158666944905 +--- !u!1 &5097956068402022692 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -16439,19 +17700,42 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 7070652776269457237} - - component: {fileID: 6738857942102575948} - - component: {fileID: 1486489816649628500} - m_Layer: 0 - m_Name: Poles_8_MetalTrim_1_0 + - component: {fileID: 4431542292571170149} + - component: {fileID: 3020599757369606063} + - component: {fileID: 2945888186890222404} + - component: {fileID: 2160202761607379236} + - component: {fileID: 8676106735150450833} + - component: {fileID: 3319685827410649217} + - component: {fileID: 4958469119238545364} + - component: {fileID: 6967074991290172005} + m_Layer: 6 + m_Name: Player m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!23 &5111254554567594410 -MeshRenderer: - m_ObjectHideFlags: 0 +--- !u!1 &5110739158666944905 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7070652776269457237} + - component: {fileID: 6738857942102575948} + - component: {fileID: 1486489816649628500} + m_Layer: 0 + m_Name: Poles_8_MetalTrim_1_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &5111254554567594410 +MeshRenderer: + m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} @@ -16968,6 +18252,10 @@ PrefabInstance: propertyPath: m_Name value: RaceCountDownManager objectReference: {fileID: 0} + - target: {fileID: 7139577379577549923, guid: 2595ebf73aeb93140a9aa786b6f4b970, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 7284567899420768869, guid: 2595ebf73aeb93140a9aa786b6f4b970, type: 3} propertyPath: countdownText value: @@ -16977,6 +18265,34 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 2595ebf73aeb93140a9aa786b6f4b970, type: 3} +--- !u!4 &5232010397013999153 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3261787742464113480} + serializedVersion: 2 + 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_ConstrainProportionsScale: 1 + m_Children: + - {fileID: 7015308070905758482} + - {fileID: 8680394450457815791} + - {fileID: 4711483572861537067} + - {fileID: 5468423090954935072} + - {fileID: 8565247238549825556} + - {fileID: 1672444641785230959} + - {fileID: 6181287152635199960} + - {fileID: 7728721353592853758} + - {fileID: 4488184778818198183} + - {fileID: 3834359950974970287} + - {fileID: 7086864720716975580} + - {fileID: 1368923038053385793} + - {fileID: 3247130377918357794} + m_Father: {fileID: 6916985651697123274} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &5247992814140866107 MeshRenderer: m_ObjectHideFlags: 0 @@ -17045,6 +18361,48 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8261768993535436759} m_Mesh: {fileID: 5544913122546992483, guid: 98e2b3b48e5fe9e4981408c03c658935, type: 3} +--- !u!23 &5262079115156935058 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9195708726967589025} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + 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: 96d9c902e61354248bb428719567f189, 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!23 &5273398075313264841 MeshRenderer: m_ObjectHideFlags: 0 @@ -17185,6 +18543,14 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &5337483043286170764 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3067970481616752801} + m_Mesh: {fileID: 4300022, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} --- !u!1 &5345359814853655653 GameObject: m_ObjectHideFlags: 0 @@ -17211,6 +18577,126 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4065769456761174474} m_Mesh: {fileID: -1889937451135585196, guid: 98e2b3b48e5fe9e4981408c03c658935, type: 3} +--- !u!96 &5358065469383584516 +TrailRenderer: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7049446829034127541} + m_Enabled: 0 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d1bbd2a74d98b154c852fcd0ddfce1b5, 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_Time: 5 + m_PreviewTimeScale: 1 + m_Parameters: + serializedVersion: 3 + widthMultiplier: 1 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.40259743 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + textureScale: {x: 1, y: 1} + shadowBias: 0.5 + generateLightingData: 0 + m_MinVertexDistance: 0.1 + m_MaskInteraction: 0 + m_Autodestruct: 0 + m_Emitting: 1 + m_ApplyActiveColorSpace: 0 +--- !u!1 &5395855668082432033 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4727001569564492046} + m_Layer: 6 + m_Name: FollowTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &5396491451887304091 GameObject: m_ObjectHideFlags: 0 @@ -17290,6 +18776,21 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &5468423090954935072 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8413865240660709274} + serializedVersion: 2 + m_LocalRotation: {x: 0.00000008146034, y: -0.00000004371139, z: 3.560745e-15, w: 1} + m_LocalPosition: {x: 0.00000019757346, y: -0.13912919, z: -0.15670183} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5232010397013999153} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &5480999002716857109 GameObject: m_ObjectHideFlags: 0 @@ -17977,6 +19478,21 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 3124172186877703707} m_Mesh: {fileID: 4503932198565769043, guid: 98e2b3b48e5fe9e4981408c03c658935, type: 3} +--- !u!4 &5884097419142505627 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4523264194943191500} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.01, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4431542292571170149} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &5906076085537826846 Transform: m_ObjectHideFlags: 0 @@ -18238,6 +19754,33 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6209528541326571918} m_Mesh: {fileID: 6269929442169628573, guid: 98e2b3b48e5fe9e4981408c03c658935, type: 3} +--- !u!54 &6038027054518434296 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4523264194943191500} + serializedVersion: 4 + m_Mass: 5 + m_Drag: 2 + m_AngularDrag: 2 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 0 + m_CollisionDetection: 1 --- !u!4 &6039300522836017059 Transform: m_ObjectHideFlags: 0 @@ -18489,6 +20032,21 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &6181287152635199960 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8414377261000486331} + serializedVersion: 2 + m_LocalRotation: {x: 0.00000008146034, y: -0.00000004371139, z: 3.560745e-15, w: 1} + m_LocalPosition: {x: 1.292, y: 0.334, z: -2.235} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5232010397013999153} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &6193696954108547430 GameObject: m_ObjectHideFlags: 0 @@ -18651,6 +20209,48 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4163122429973315003} m_Mesh: {fileID: 702736198612211301, guid: 98e2b3b48e5fe9e4981408c03c658935, type: 3} +--- !u!23 &6240239829967937945 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2192976182390153476} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + 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: 96d9c902e61354248bb428719567f189, 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!1 &6242699648168049318 GameObject: m_ObjectHideFlags: 0 @@ -18961,6 +20561,48 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &6318049027750705774 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3067970481616752801} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + 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: 767769731782fe9409ca4e22077acbd3, 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!23 &6336527227499997522 MeshRenderer: m_ObjectHideFlags: 0 @@ -19110,6 +20752,45 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2232746321096523701} m_Mesh: {fileID: -1124782376048622158, guid: 98e2b3b48e5fe9e4981408c03c658935, type: 3} +--- !u!59 &6397768574303871721 +HingeJoint: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4523264194943191500} + m_ConnectedBody: {fileID: 2160202761607379236} + m_ConnectedArticulationBody: {fileID: 0} + m_Anchor: {x: 0, y: 0, z: 0} + m_Axis: {x: 1, y: 0, z: 0} + m_AutoConfigureConnectedAnchor: 1 + m_ConnectedAnchor: {x: 0, y: 1.0100002, z: 0} + serializedVersion: 2 + m_UseSpring: 0 + m_Spring: + spring: 10000 + damper: 10 + targetPosition: 0 + m_UseMotor: 0 + m_Motor: + targetVelocity: 0 + force: 0 + freeSpin: 0 + m_UseLimits: 0 + m_ExtendedLimits: 0 + m_UseAcceleration: 0 + m_Limits: + min: 0 + max: 0 + bounciness: 0 + bounceMinVelocity: 0.2 + contactDistance: 0 + m_BreakForce: Infinity + m_BreakTorque: Infinity + m_EnableCollision: 0 + m_EnablePreprocessing: 1 + m_MassScale: 1 + m_ConnectedMassScale: 1 --- !u!33 &6399620477508752955 MeshFilter: m_ObjectHideFlags: 0 @@ -19461,6 +21142,14 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!33 &6569281953172982195 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8625113007147779272} + m_Mesh: {fileID: 4300024, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} --- !u!1 &6572064578498099134 GameObject: m_ObjectHideFlags: 0 @@ -20119,6 +21808,48 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &6864287261802818253 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8413865240660709274} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + 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: 86164dca18584da459291a37a9dd58af, 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!33 &6879925995736915321 MeshFilter: m_ObjectHideFlags: 0 @@ -20127,6 +21858,22 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8762592488675059197} m_Mesh: {fileID: -6869088010059125932, guid: 98e2b3b48e5fe9e4981408c03c658935, type: 3} +--- !u!4 &6916985651697123274 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9208270953882052326} + serializedVersion: 2 + 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_ConstrainProportionsScale: 1 + m_Children: + - {fileID: 5232010397013999153} + m_Father: {fileID: 4431542292571170149} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &6918094272959878084 Transform: m_ObjectHideFlags: 0 @@ -20359,6 +22106,18 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &6967074991290172005 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5097956068402022692} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 0} + m_Name: + m_EditorClassIdentifier: --- !u!1 &6977293162975259827 GameObject: m_ObjectHideFlags: 0 @@ -20420,6 +22179,66 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &7003429170137387264 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4196981367105912912} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 948f4100a11a5c24981795d21301da5c, type: 3} + m_Name: + m_EditorClassIdentifier: + volumeTrigger: {fileID: 7224142285519967366} + volumeLayer: + serializedVersion: 2 + m_Bits: 193 + stopNaNPropagation: 1 + finalBlitToCameraTarget: 0 + antialiasingMode: 0 + temporalAntialiasing: + jitterSpread: 0.75 + sharpness: 0.25 + stationaryBlending: 0.95 + motionBlending: 0.85 + subpixelMorphologicalAntialiasing: + quality: 2 + fastApproximateAntialiasing: + fastMode: 0 + keepAlpha: 0 + fog: + enabled: 1 + excludeSkybox: 1 + debugLayer: + lightMeter: + width: 512 + height: 256 + showCurves: 1 + histogram: + width: 512 + height: 256 + channel: 3 + waveform: + exposure: 0.12 + height: 256 + vectorscope: + size: 256 + exposure: 0.12 + overlaySettings: + linearDepth: 0 + motionColorIntensity: 4 + motionGridSize: 64 + colorBlindnessType: 0 + colorBlindnessStrength: 1 + m_Resources: {fileID: 11400000, guid: d82512f9c8e5d4a4d938b575d47f88d4, type: 2} + m_ShowToolkit: 1 + m_ShowCustomSorter: 1 + breakBeforeColorGrading: 0 + m_BeforeTransparentBundles: [] + m_BeforeStackBundles: [] + m_AfterStackBundles: [] --- !u!4 &7005857120385504983 Transform: m_ObjectHideFlags: 0 @@ -20435,6 +22254,21 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &7015308070905758482 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3925442449336719195} + serializedVersion: 2 + m_LocalRotation: {x: 0.00000008146034, y: -0.00000004371139, z: 3.560745e-15, w: 1} + m_LocalPosition: {x: 0.00000019757346, y: -0.13912919, z: -0.15670183} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5232010397013999153} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &7020407408759744041 MeshFilter: m_ObjectHideFlags: 0 @@ -20454,9 +22288,10 @@ GameObject: - component: {fileID: 4131460326498455201} - component: {fileID: 8926872118295602920} - component: {fileID: 4598831926678431748} + - component: {fileID: 8926872118295602921} m_Layer: 0 m_Name: Circuit_Kerbs_0 - m_TagString: Ground + m_TagString: Road m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 @@ -20511,6 +22346,24 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &7049446829034127541 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3247130377918357794} + - component: {fileID: 4791671936010130004} + - component: {fileID: 5358065469383584516} + m_Layer: 6 + m_Name: SkidFL + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &7067185125818982346 GameObject: m_ObjectHideFlags: 0 @@ -20641,6 +22494,21 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &7086864720716975580 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7305315471953316651} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: 0.70710677, w: 0.7071068} + m_LocalPosition: {x: -0.8230004, y: -0.14499955, z: -1.5130008} + m_LocalScale: {x: 0.5024134, y: 0.15072668, z: 0.59622} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5232010397013999153} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90.00001} --- !u!1 &7129404287144642239 GameObject: m_ObjectHideFlags: 0 @@ -20841,6 +22709,21 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!4 &7224142285519967366 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4196981367105912912} + serializedVersion: 2 + m_LocalRotation: {x: 0.034024607, y: 0.9562811, z: -0.12383683, w: 0.26274163} + m_LocalPosition: {x: 128.58257, y: -9.107942, z: -14.694545} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: -90, z: 0} --- !u!23 &7229701172527001226 MeshRenderer: m_ObjectHideFlags: 0 @@ -21047,7 +22930,7 @@ MeshCollider: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4617867203639585382} - m_Material: {fileID: 0} + m_Material: {fileID: 13400000, guid: 37c3d487acd72664491fd94ebe6ba6ad, type: 2} m_IncludeLayers: serializedVersion: 2 m_Bits: 0 @@ -21057,11 +22940,50 @@ MeshCollider: m_LayerOverridePriority: 0 m_IsTrigger: 0 m_ProvidesContacts: 0 - m_Enabled: 1 + m_Enabled: 0 serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 2222058905440934225, guid: 98e2b3b48e5fe9e4981408c03c658935, type: 3} +--- !u!65 &7303946329985601690 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4617867203639585382} + m_Material: {fileID: 13400000, guid: fe43720314558424185967ccff2c6354, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 0 + serializedVersion: 3 + m_Size: {x: 10.231135, y: 10.000042, z: 0.25633693} + m_Center: {x: -0.115567684, y: 0, z: 0.033832837} +--- !u!1 &7305315471953316651 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7086864720716975580} + - component: {fileID: 7826855214792091529} + - component: {fileID: 3580292299426235103} + m_Layer: 6 + m_Name: SkidRL + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!4 &7322812383057226111 Transform: m_ObjectHideFlags: 0 @@ -21240,6 +23162,14 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7438406276027355456 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2192976182390153476} + m_Mesh: {fileID: 4300028, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} --- !u!23 &7443020722209357211 MeshRenderer: m_ObjectHideFlags: 0 @@ -21339,6 +23269,19 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6282610136297440584} m_Mesh: {fileID: -963384430677750064, guid: 98e2b3b48e5fe9e4981408c03c658935, type: 3} +--- !u!114 &7496074956916356865 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9101065383549811819} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de695257d46f68648a759bca131f0afe, type: 3} + m_Name: + m_EditorClassIdentifier: + _driftEffect: {fileID: 0} --- !u!4 &7522931813555761921 Transform: m_ObjectHideFlags: 0 @@ -21925,6 +23868,21 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!4 &7728721353592853758 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9195708726967589025} + serializedVersion: 2 + m_LocalRotation: {x: 0.00000008146034, y: -0.00000004371139, z: 3.560745e-15, w: 1} + m_LocalPosition: {x: -1.292, y: 0.334, z: 1.693} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5232010397013999153} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &7734363821024942431 MeshFilter: m_ObjectHideFlags: 0 @@ -22001,6 +23959,14 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!33 &7812991909958290375 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8414377261000486331} + m_Mesh: {fileID: 4300026, guid: 0ee3d071d7bf2f8449801f650130e581, type: 3} --- !u!23 &7814348646437268109 MeshRenderer: m_ObjectHideFlags: 0 @@ -22079,6 +24045,19 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!114 &7826855214792091529 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7305315471953316651} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de695257d46f68648a759bca131f0afe, type: 3} + m_Name: + m_EditorClassIdentifier: + _driftEffect: {fileID: 0} --- !u!33 &7836839169997356872 MeshFilter: m_ObjectHideFlags: 0 @@ -23460,6 +25439,42 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8413865240660709274 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5468423090954935072} + - component: {fileID: 3465752023563432615} + - component: {fileID: 6864287261802818253} + m_Layer: 6 + m_Name: Matte_11 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &8414377261000486331 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6181287152635199960} + - component: {fileID: 7812991909958290375} + - component: {fileID: 4107218408086228700} + m_Layer: 6 + m_Name: Wheel_Back_R + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &8414995959632470244 GameObject: m_ObjectHideFlags: 0 @@ -23734,6 +25749,48 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!23 &8536542081273716475 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3694237511811620995} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + 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: 96d9c902e61354248bb428719567f189, 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!23 &8547540226003946805 MeshRenderer: m_ObjectHideFlags: 0 @@ -23792,6 +25849,21 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 3266025588943225591} m_Mesh: {fileID: 7820276976591302701, guid: 98e2b3b48e5fe9e4981408c03c658935, type: 3} +--- !u!4 &8565247238549825556 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8685002363034834852} + serializedVersion: 2 + m_LocalRotation: {x: 0.00000008146034, y: -0.00000004371139, z: 3.560745e-15, w: 1} + m_LocalPosition: {x: 0.00000019757346, y: -0.13912919, z: -0.15670183} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5232010397013999153} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &8570923591745250401 GameObject: m_ObjectHideFlags: 0 @@ -23910,6 +25982,24 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &8625113007147779272 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4711483572861537067} + - component: {fileID: 6569281953172982195} + - component: {fileID: 4076015668239398326} + m_Layer: 6 + m_Name: Glass_light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &8630429258590107551 GameObject: m_ObjectHideFlags: 0 @@ -24119,6 +26209,134 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &8676106735150450833 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5097956068402022692} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 841925dfd2d70324181dc57f9c0d10c8, type: 3} + m_Name: + m_EditorClassIdentifier: + currentSpeed: 0 + steeringAI: 0 + isAIControlled: 0 + groundDetection: 0 + driveableSurface: + serializedVersion: 2 + m_Bits: 4294967295 + maxSpeed: 240 + baseAcceleration: 18 + steeringSensitivity: 40 + gravityForce: 100 + downforce: 80 + brakeThreshold: 15 + targetStoppingDistance: 15 + allowAirControl: 1 + _frictionCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.07 + inSlope: -0.19999999 + outSlope: -0.19999999 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.1 + value: 0.05 + inSlope: -0.1625 + outSlope: -0.1625 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.3 + value: 0.025 + inSlope: -0.079166666 + outSlope: -0.079166666 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.6 + value: 0.015 + inSlope: -0.022916667 + outSlope: -0.022916667 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.01 + inSlope: -0.0125 + outSlope: -0.0125 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _turnCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 2 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 0.05052969 + value: 0.8177922 + inSlope: 1.6922429 + outSlope: 1.6922429 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.3262782 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.98205566 + value: 1.1781731 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + bodyTiltAmount: 10 + carBodyVisual: {fileID: 5232010397013999153} + skidMarkWidth: 0.25 + skidMarkDuration: 5 + wheelFrontLeft: {fileID: 7728721353592853758} + wheelFrontRight: {fileID: 4488184778818198183} + wheelRearLeft: {fileID: 1672444641785230959} + wheelRearRight: {fileID: 6181287152635199960} + frontLeftAxle: {fileID: 7728721353592853758} + frontRightAxle: {fileID: 4488184778818198183} + speedVisualEffects: {fileID: 0} + sphereRigidbody: {fileID: 6038027054518434296} + wheelFrictionMaterial: {fileID: 13400000, guid: fe43720314558424185967ccff2c6354, type: 2} + cameraFollowTarget: {fileID: 4727001569564492046} + nosActive: 0 + nosController: {fileID: 4958469119238545364} + steeringFactor: 0.75 --- !u!4 &8677103063033026421 Transform: m_ObjectHideFlags: 0 @@ -24134,6 +26352,39 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &8680394450457815791 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3067970481616752801} + serializedVersion: 2 + m_LocalRotation: {x: 0.00000008146034, y: -0.00000004371139, z: 3.560745e-15, w: 1} + m_LocalPosition: {x: 0.00000019757346, y: -0.13912919, z: -0.15670183} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5232010397013999153} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8685002363034834852 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8565247238549825556} + - component: {fileID: 3818793660342047854} + - component: {fileID: 2201859981592470154} + m_Layer: 6 + m_Name: Taillights_11 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!4 &8685494044601648878 Transform: m_ObjectHideFlags: 0 @@ -24149,6 +26400,24 @@ Transform: m_Children: [] m_Father: {fileID: 2531209556464813522} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &8687607069550309556 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4196981367105912912} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7d9264e55c762cb4881b015501e3a0a5, type: 3} + m_Name: + m_EditorClassIdentifier: + target: {fileID: 4431542292571170149} + baseDistance: 6 + maxDistance: 6 + zoomSpeed: 5 + followSmoothness: 5 + heightOffset: {x: 0, y: 3, z: 0} --- !u!23 &8691302972952087773 MeshRenderer: m_ObjectHideFlags: 0 @@ -24369,6 +26638,110 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!96 &8764986576164550059 +TrailRenderer: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2829335706111415381} + m_Enabled: 0 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d1bbd2a74d98b154c852fcd0ddfce1b5, 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_Time: 5 + m_PreviewTimeScale: 1 + m_Parameters: + serializedVersion: 3 + widthMultiplier: 1 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.40259743 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + textureScale: {x: 1, y: 1} + shadowBias: 0.5 + generateLightingData: 0 + m_MinVertexDistance: 0.1 + m_MaskInteraction: 0 + m_Autodestruct: 0 + m_Emitting: 1 + m_ApplyActiveColorSpace: 0 --- !u!1 &8778527954248628677 GameObject: m_ObjectHideFlags: 0 @@ -24602,6 +26975,28 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7029035400094791220} m_Mesh: {fileID: -3034600670422070831, guid: 98e2b3b48e5fe9e4981408c03c658935, type: 3} +--- !u!64 &8926872118295602921 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7029035400094791220} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: -3034600670422070831, guid: 98e2b3b48e5fe9e4981408c03c658935, type: 3} --- !u!23 &8933857527935672793 MeshRenderer: m_ObjectHideFlags: 0 @@ -24928,6 +27323,24 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!1 &9101065383549811819 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1368923038053385793} + - component: {fileID: 7496074956916356865} + - component: {fileID: 2056169460167607263} + m_Layer: 6 + m_Name: SkidFR + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &9105273305830864724 GameObject: m_ObjectHideFlags: 0 @@ -25231,6 +27644,24 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &9195708726967589025 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7728721353592853758} + - component: {fileID: 2243603945577818376} + - component: {fileID: 5262079115156935058} + m_Layer: 6 + m_Name: Wheel_L + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!4 &9202115054711641183 Transform: m_ObjectHideFlags: 0 @@ -25254,6 +27685,22 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8371425419421306827} m_Mesh: {fileID: 5704842512697678143, guid: 98e2b3b48e5fe9e4981408c03c658935, type: 3} +--- !u!1 &9208270953882052326 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6916985651697123274} + m_Layer: 6 + m_Name: Meshes + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!4 &9222542506626094685 Transform: m_ObjectHideFlags: 0 @@ -25293,3 +27740,5 @@ SceneRoots: - {fileID: 1627785076} - {fileID: 1868736289} - {fileID: 1928440683} + - {fileID: 7224142285519967366} + - {fileID: 4431542292571170149} diff --git a/Assets/Scenes/Menu.unity b/Assets/Scenes/Menu.unity index 231cfe1..aa9dc33 100644 --- a/Assets/Scenes/Menu.unity +++ b/Assets/Scenes/Menu.unity @@ -122,96 +122,6 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &1825005 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1825006} - - component: {fileID: 1825009} - - component: {fileID: 1825008} - - component: {fileID: 1825007} - m_Layer: 5 - m_Name: Viewport - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1825006 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1825005} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 54820777} - m_Father: {fileID: 2082204557} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0, y: 1} ---- !u!114 &1825007 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1825005} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} - m_Name: - m_EditorClassIdentifier: - m_ShowMaskGraphic: 0 ---- !u!114 &1825008 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1825005} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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: 10917, guid: 0000000000000000f000000000000000, type: 0} - 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 &1825009 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1825005} - m_CullTransparentMesh: 1 --- !u!1 &46418236 GameObject: m_ObjectHideFlags: 0 @@ -304,68 +214,6 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &54820776 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 54820777} - - component: {fileID: 54820778} - m_Layer: 5 - m_Name: Content - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &54820777 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 54820776} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1825006} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0.00023456286, y: 0} - m_SizeDelta: {x: -943, y: 0} - m_Pivot: {x: 0, y: 1} ---- !u!114 &54820778 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 54820776} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 0 - m_Right: 0 - m_Top: 0 - m_Bottom: 0 - m_ChildAlignment: 0 - m_Spacing: 30 - m_ChildForceExpandWidth: 0 - m_ChildForceExpandHeight: 0 - m_ChildControlWidth: 0 - m_ChildControlHeight: 0 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 - m_ReverseArrangement: 0 --- !u!1 &136307433 GameObject: m_ObjectHideFlags: 0 @@ -460,7 +308,18 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1 &151666215 +--- !u!114 &154468292 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 7507670487444693614, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} + m_PrefabInstance: {fileID: 7384460682675426996} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &614009309 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -468,145 +327,54 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 151666216} - - component: {fileID: 151666219} - - component: {fileID: 151666218} - - component: {fileID: 151666217} - m_Layer: 5 - m_Name: InputField (Legacy) + - component: {fileID: 614009311} + - component: {fileID: 614009310} + m_Layer: 0 + m_Name: NetworkRunnerHandler m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &151666216 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 151666215} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 2120583534} - - {fileID: 902652508} - m_Father: {fileID: 897086202} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 1, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 100} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &151666217 + m_IsActive: 0 +--- !u!114 &614009310 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 151666215} + m_GameObject: {fileID: 614009309} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Script: {fileID: 11500000, guid: 636416faf53e28c4ca7b366eea57f0ff, type: 3} m_Name: m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 151666218} - m_TextComponent: {fileID: 902652509} - m_Placeholder: {fileID: 2120583535} - m_ContentType: 0 - m_InputType: 0 - m_AsteriskChar: 42 - m_KeyboardType: 0 - m_LineType: 0 - m_HideMobileInput: 0 - m_CharacterValidation: 0 - m_CharacterLimit: 0 - m_OnSubmit: - m_PersistentCalls: - m_Calls: [] - m_OnDidEndEdit: - m_PersistentCalls: - m_Calls: [] - m_OnValueChanged: - m_PersistentCalls: - m_Calls: [] - m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_CustomCaretColor: 0 - m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} - m_Text: - m_CaretBlinkRate: 0.85 - m_CaretWidth: 1 - m_ReadOnly: 0 - m_ShouldActivateOnSelect: 1 ---- !u!114 &151666218 -MonoBehaviour: +--- !u!4 &614009311 +Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 151666215} + m_GameObject: {fileID: 614009309} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 540, y: 960, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &805019539 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 683380682223292775, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} + m_PrefabInstance: {fileID: 7384460682675426996} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} m_Name: m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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: 10911, guid: 0000000000000000f000000000000000, type: 0} - 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 &151666219 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 151666215} - m_CullTransparentMesh: 1 ---- !u!1 &154468288 +--- !u!1 &1065119417 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -614,174 +382,67 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 154468289} - - component: {fileID: 154468291} - - component: {fileID: 154468290} - - component: {fileID: 154468292} - m_Layer: 5 - m_Name: InputField (TMP) + - component: {fileID: 1065119420} + - component: {fileID: 1065119419} + - component: {fileID: 1065119418} + m_Layer: 0 + m_Name: EventSystem m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &154468289 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 154468288} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 178587969} - m_Father: {fileID: 732063377} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 645.5, y: 130} - m_Pivot: {x: 0, y: 0.5} ---- !u!114 &154468290 +--- !u!114 &1065119418 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 154468288} + m_GameObject: {fileID: 1065119417} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} m_Name: m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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: 10911, guid: 0000000000000000f000000000000000, type: 0} - 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 &154468291 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 154468288} - m_CullTransparentMesh: 1 ---- !u!114 &154468292 + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1065119419 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 154468288} + m_GameObject: {fileID: 1065119417} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3} + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} m_Name: m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 154468290} - m_TextViewport: {fileID: 178587969} - m_TextComponent: {fileID: 835878108} - m_Placeholder: {fileID: 1160084906} - m_VerticalScrollbar: {fileID: 0} - m_VerticalScrollbarEventHandler: {fileID: 0} - m_LayoutGroup: {fileID: 0} - m_ScrollSensitivity: 1 - m_ContentType: 0 - m_InputType: 0 - m_AsteriskChar: 42 - m_KeyboardType: 0 - m_LineType: 0 - m_HideMobileInput: 0 - m_HideSoftKeyboard: 0 - m_CharacterValidation: 0 - m_RegexValue: - m_GlobalPointSize: 14 - m_CharacterLimit: 15 - m_OnEndEdit: - m_PersistentCalls: - m_Calls: [] - m_OnSubmit: - m_PersistentCalls: - m_Calls: [] - m_OnSelect: - m_PersistentCalls: - m_Calls: [] - m_OnDeselect: - m_PersistentCalls: - m_Calls: [] - m_OnTextSelection: - m_PersistentCalls: - m_Calls: [] - m_OnEndTextSelection: - m_PersistentCalls: - m_Calls: [] - m_OnValueChanged: - m_PersistentCalls: - m_Calls: [] - m_OnTouchScreenKeyboardStatusChanged: - m_PersistentCalls: - m_Calls: [] - m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_CustomCaretColor: 0 - m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} - m_Text: - m_CaretBlinkRate: 0.85 - m_CaretWidth: 1 - m_ReadOnly: 0 - m_RichText: 1 - m_GlobalFontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_OnFocusSelectAll: 1 - m_ResetOnDeActivation: 1 - m_RestoreOriginalTextOnEscape: 1 - m_isRichTextEditingAllowed: 0 - m_LineLimit: 0 - m_InputValidator: {fileID: 0} ---- !u!1 &178587968 + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &1065119420 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1065119417} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1319984343 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -789,87 +450,91 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 178587969} - - component: {fileID: 178587970} - m_Layer: 5 - m_Name: Text Area + - component: {fileID: 1319984346} + - component: {fileID: 1319984349} + - component: {fileID: 1319984348} + m_Layer: 0 + m_Name: NetworkManager m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &178587969 -RectTransform: +--- !u!4 &1319984346 +Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 178587968} + m_GameObject: {fileID: 1319984343} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalPosition: {x: 540, y: 960, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1160084904} - - {fileID: 835878107} - m_Father: {fileID: 154468289} + m_Children: [] + m_Father: {fileID: 0} 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.5} - m_SizeDelta: {x: -20, y: -13} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &178587970 +--- !u!114 &1319984348 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 178587968} + m_GameObject: {fileID: 1319984343} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} + m_Script: {fileID: 11500000, guid: 0bbbbd8a49f623f43abb94ec5c65f24c, type: 3} m_Name: m_EditorClassIdentifier: - m_Padding: {x: -8, y: -5, z: -8, w: -5} - m_Softness: {x: 0, y: 0} ---- !u!1 &344888385 -GameObject: + runner: {fileID: 0} + lobbyUI: {fileID: 1798243002} + sessionListUIHandler: {fileID: 1798243004} + lobbyNameInput: {fileID: 154468292} + createLobbyButton: {fileID: 1347110329} + waitingText: {fileID: 805019539} + playerPrefab: + RawGuidValue: b7ef0b21caef7df4fbaf32ff73da212f +--- !u!114 &1319984349 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 344888386} - m_Layer: 5 - m_Name: Sliding Area - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &344888386 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} + m_GameObject: {fileID: 1319984343} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 14040d85e2892f242981c2fe3079b3de, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1347110329 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 7416957822121483513, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} + m_PrefabInstance: {fileID: 7384460682675426996} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 344888385} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 384458023} - m_Father: {fileID: 405097291} - 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: -20, y: -20} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &360897478 + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1798243002 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5897091807740168973, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} + m_PrefabInstance: {fileID: 7384460682675426996} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1798243004 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 2706072202480312715, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} + m_PrefabInstance: {fileID: 7384460682675426996} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1798243002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 27334717233631a469c0f138d1462662, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &2038445524 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -877,5215 +542,29 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 360897479} - - component: {fileID: 360897481} - - component: {fileID: 360897480} - m_Layer: 5 - m_Name: Handle + - component: {fileID: 2038445526} + - component: {fileID: 2038445525} + m_Layer: 0 + m_Name: NetworkRunner m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &360897479 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 360897478} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1371911998} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 20, y: 20} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &360897480 +--- !u!114 &2038445525 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 360897478} + m_GameObject: {fileID: 2038445524} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Script: {fileID: -1199893898, guid: e725a070cec140c4caffb81624c8c787, type: 3} m_Name: m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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: 10905, guid: 0000000000000000f000000000000000, type: 0} - 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 &360897481 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 360897478} - m_CullTransparentMesh: 1 ---- !u!1 &363934088 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 363934089} - - component: {fileID: 363934092} - - component: {fileID: 363934091} - - component: {fileID: 363934090} - m_Layer: 5 - m_Name: InputField (TMP) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &363934089 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 363934088} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1325907564} - m_Father: {fileID: 1258384207} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 1, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: -200, y: 102.1} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &363934090 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 363934088} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 363934091} - m_TextViewport: {fileID: 1325907564} - m_TextComponent: {fileID: 1753572162} - m_Placeholder: {fileID: 970389762} - m_VerticalScrollbar: {fileID: 0} - m_VerticalScrollbarEventHandler: {fileID: 0} - m_LayoutGroup: {fileID: 0} - m_ScrollSensitivity: 1 - m_ContentType: 0 - m_InputType: 0 - m_AsteriskChar: 42 - m_KeyboardType: 0 - m_LineType: 0 - m_HideMobileInput: 0 - m_HideSoftKeyboard: 0 - m_CharacterValidation: 0 - m_RegexValue: - m_GlobalPointSize: 14 - m_CharacterLimit: 0 - m_OnEndEdit: - m_PersistentCalls: - m_Calls: [] - m_OnSubmit: - m_PersistentCalls: - m_Calls: [] - m_OnSelect: - m_PersistentCalls: - m_Calls: [] - m_OnDeselect: - m_PersistentCalls: - m_Calls: [] - m_OnTextSelection: - m_PersistentCalls: - m_Calls: [] - m_OnEndTextSelection: - m_PersistentCalls: - m_Calls: [] - m_OnValueChanged: - m_PersistentCalls: - m_Calls: [] - m_OnTouchScreenKeyboardStatusChanged: - m_PersistentCalls: - m_Calls: [] - m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_CustomCaretColor: 0 - m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} - m_Text: - m_CaretBlinkRate: 0.85 - m_CaretWidth: 1 - m_ReadOnly: 0 - m_RichText: 1 - m_GlobalFontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_OnFocusSelectAll: 1 - m_ResetOnDeActivation: 1 - m_RestoreOriginalTextOnEscape: 1 - m_isRichTextEditingAllowed: 0 - m_LineLimit: 0 - m_InputValidator: {fileID: 0} ---- !u!114 &363934091 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 363934088} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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: 10911, guid: 0000000000000000f000000000000000, type: 0} - 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 &363934092 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 363934088} - m_CullTransparentMesh: 1 ---- !u!1 &384458022 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 384458023} - - component: {fileID: 384458025} - - component: {fileID: 384458024} - m_Layer: 5 - m_Name: Handle - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &384458023 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 384458022} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 344888386} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 20, y: 20} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &384458024 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 384458022} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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: 10905, guid: 0000000000000000f000000000000000, type: 0} - 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 &384458025 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 384458022} - m_CullTransparentMesh: 1 ---- !u!1 &403784885 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 403784886} - - component: {fileID: 403784888} - - component: {fileID: 403784887} - m_Layer: 5 - m_Name: HostPopup - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!224 &403784886 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 403784885} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1498053194} - - {fileID: 1190606929} - - {fileID: 1607624286} - m_Father: {fileID: 911966550} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 750, y: 750} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &403784887 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 403784885} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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: 0} - m_Type: 0 - 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 &403784888 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 403784885} - m_CullTransparentMesh: 1 ---- !u!1 &405097290 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 405097291} - - component: {fileID: 405097294} - - component: {fileID: 405097293} - - component: {fileID: 405097292} - m_Layer: 5 - m_Name: Scrollbar Vertical - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &405097291 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 405097290} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 344888386} - m_Father: {fileID: 2082204557} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 1, y: 0} - m_AnchorMax: {x: 1, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 20, y: 0} - m_Pivot: {x: 1, y: 1} ---- !u!114 &405097292 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 405097290} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 384458024} - m_HandleRect: {fileID: 384458023} - m_Direction: 2 - m_Value: 0 - m_Size: 1 - m_NumberOfSteps: 0 - m_OnValueChanged: - m_PersistentCalls: - m_Calls: [] ---- !u!114 &405097293 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 405097290} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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: 10907, guid: 0000000000000000f000000000000000, type: 0} - 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 &405097294 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 405097290} - m_CullTransparentMesh: 1 ---- !u!1 &536078045 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 536078049} - - component: {fileID: 536078048} - - component: {fileID: 536078047} - - component: {fileID: 536078046} - - component: {fileID: 536078050} - m_Layer: 5 - m_Name: Canvas - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &536078046 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 536078045} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 ---- !u!114 &536078047 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 536078045} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UiScaleMode: 1 - m_ReferencePixelsPerUnit: 100 - m_ScaleFactor: 1 - m_ReferenceResolution: {x: 1080, y: 1920} - m_ScreenMatchMode: 0 - m_MatchWidthOrHeight: 0 - m_PhysicalUnit: 3 - m_FallbackScreenDPI: 96 - m_DefaultSpriteDPI: 96 - m_DynamicPixelsPerUnit: 1 - m_PresetInfoIsWorld: 0 ---- !u!223 &536078048 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 536078045} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 0 - m_Camera: {fileID: 0} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_VertexColorAlwaysGammaSpace: 0 - m_AdditionalShaderChannelsFlag: 25 - m_UpdateRectTransformForStandalone: 0 - m_SortingLayerID: 0 - m_SortingOrder: 0 - m_TargetDisplay: 0 ---- !u!224 &536078049 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 536078045} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0, y: 0, z: 0} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 911966550} - - {fileID: 578149693} - - {fileID: 1258384207} - - {fileID: 805019538} - - {fileID: 1798243003} - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0, y: 0} ---- !u!114 &536078050 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 536078045} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5c7910c0c5d39bb47b6ce491363c38be, type: 3} - m_Name: - m_EditorClassIdentifier: - hostPopup: {fileID: 403784885} - joinPopup: {fileID: 0} - hostIPText: {fileID: 1190606927} - joinIPInput: {fileID: 151666217} ---- !u!1 &578149692 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 578149693} - m_Layer: 5 - m_Name: LobbyPanel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!224 &578149693 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 578149692} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 830709457} - - {fileID: 1245987015} - m_Father: {fileID: 536078049} - 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!1 &614009309 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 614009311} - - component: {fileID: 614009310} - m_Layer: 0 - m_Name: NetworkRunnerHandler - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!114 &614009310 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 614009309} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 636416faf53e28c4ca7b366eea57f0ff, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &614009311 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 614009309} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 540, y: 960, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &627495020 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 627495021} - - component: {fileID: 627495023} - - component: {fileID: 627495022} - m_Layer: 5 - m_Name: Text (TMP) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &627495021 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 627495020} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1245987015} - 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 &627495022 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 627495020} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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_text: Create Lobby - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4281479730 - m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 36.65 - m_fontSizeBase: 24 - m_fontWeight: 400 - m_enableAutoSizing: 1 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!222 &627495023 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 627495020} - m_CullTransparentMesh: 1 ---- !u!1 &633884089 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 633884090} - - component: {fileID: 633884092} - - component: {fileID: 633884091} - m_Layer: 5 - m_Name: Text (Legacy) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &633884090 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 633884089} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1607624286} - 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 &633884091 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 633884089} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, 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_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 14 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 10 - m_MaxSize: 51 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Start ---- !u!222 &633884092 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 633884089} - m_CullTransparentMesh: 1 ---- !u!1 &683751737 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 683751738} - - component: {fileID: 683751741} - - component: {fileID: 683751740} - - component: {fileID: 683751739} - m_Layer: 5 - m_Name: CloseButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &683751738 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 683751737} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1992315393} - m_Father: {fileID: 897086202} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 1, y: 1} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 48.1, y: 49.2} - m_SizeDelta: {x: 100, y: 100} - m_Pivot: {x: 1, y: 1} ---- !u!114 &683751739 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 683751737} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 683751740} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 536078050} - m_TargetAssemblyTypeName: MultiplayerMenuManager, Assembly-CSharp - m_MethodName: OnClick_CloseAllPopups - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 ---- !u!114 &683751740 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 683751737} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.745283, g: 0, b: 0, 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: 10905, guid: 0000000000000000f000000000000000, type: 0} - 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 &683751741 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 683751737} - m_CullTransparentMesh: 1 ---- !u!1 &712302012 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 712302013} - - component: {fileID: 712302015} - - component: {fileID: 712302014} - m_Layer: 5 - m_Name: Text (TMP) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &712302013 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 712302012} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 919962636} - 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 &712302014 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 712302012} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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_text: SAVE - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4281479730 - m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 71.6 - m_fontSizeBase: 24 - m_fontWeight: 400 - m_enableAutoSizing: 1 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!222 &712302015 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 712302012} - m_CullTransparentMesh: 1 ---- !u!1 &732063376 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 732063377} - m_Layer: 5 - m_Name: CreateLobbyArea - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &732063377 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 732063376} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1347110328} - - {fileID: 154468289} - m_Father: {fileID: 1798243003} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 0} - m_AnchoredPosition: {x: 0, y: -202.4} - m_SizeDelta: {x: 0, y: 150} - m_Pivot: {x: 0.5, y: 0} ---- !u!1 &805019537 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 805019538} - - component: {fileID: 805019540} - - component: {fileID: 805019539} - m_Layer: 5 - m_Name: Text (TMP) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &805019538 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 805019537} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 536078049} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 1, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 87.04} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &805019539 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 805019537} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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_text: Waiting for player - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4294967295 - m_fontColor: {r: 1, g: 1, b: 1, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 72 - m_fontSizeBase: 36 - m_fontWeight: 400 - m_enableAutoSizing: 1 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!222 &805019540 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 805019537} - m_CullTransparentMesh: 1 ---- !u!1 &822676952 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 822676953} - - component: {fileID: 822676956} - - component: {fileID: 822676955} - - component: {fileID: 822676954} - m_Layer: 5 - m_Name: Scrollbar Horizontal - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &822676953 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 822676952} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1371911998} - m_Father: {fileID: 2082204557} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 20} - m_Pivot: {x: 0, y: 0} ---- !u!114 &822676954 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 822676952} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 360897480} - m_HandleRect: {fileID: 360897479} - m_Direction: 0 - m_Value: 0 - m_Size: 1 - m_NumberOfSteps: 0 - m_OnValueChanged: - m_PersistentCalls: - m_Calls: [] ---- !u!114 &822676955 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 822676952} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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: 10907, guid: 0000000000000000f000000000000000, type: 0} - 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 &822676956 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 822676952} - m_CullTransparentMesh: 1 ---- !u!1 &830709456 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 830709457} - - component: {fileID: 830709460} - - component: {fileID: 830709459} - - component: {fileID: 830709458} - m_Layer: 5 - m_Name: JoinLobby - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &830709457 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 830709456} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1901408290} - m_Father: {fileID: 578149693} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 75} - m_SizeDelta: {x: 220, y: 80} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &830709458 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 830709456} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 830709459} - m_OnClick: - m_PersistentCalls: - m_Calls: [] ---- !u!114 &830709459 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 830709456} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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: 10905, guid: 0000000000000000f000000000000000, type: 0} - 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 &830709460 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 830709456} - m_CullTransparentMesh: 1 ---- !u!1 &835878106 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 835878107} - - component: {fileID: 835878109} - - component: {fileID: 835878108} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &835878107 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 835878106} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 178587969} - 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 &835878108 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 835878106} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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_text: "\u200B" - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4281479730 - m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 72 - m_fontSizeBase: 14 - m_fontWeight: 400 - m_enableAutoSizing: 1 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 0 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 1 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!222 &835878109 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 835878106} - m_CullTransparentMesh: 1 ---- !u!1 &881290330 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 881290331} - - component: {fileID: 881290333} - - component: {fileID: 881290332} - m_Layer: 5 - m_Name: Text (TMP) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &881290331 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 881290330} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1355860087} - 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 &881290332 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 881290330} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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_text: HOST - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4281479730 - m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 56.3 - m_fontSizeBase: 24 - m_fontWeight: 400 - m_enableAutoSizing: 1 - m_fontSizeMin: 18 - m_fontSizeMax: 56.3 - m_fontStyle: 0 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!222 &881290333 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 881290330} - m_CullTransparentMesh: 1 ---- !u!1 &897086201 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 897086202} - - component: {fileID: 897086204} - - component: {fileID: 897086203} - m_Layer: 5 - m_Name: JoinPopup - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!224 &897086202 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 897086201} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 683751738} - - {fileID: 151666216} - - {fileID: 2037804512} - m_Father: {fileID: 911966550} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 750, y: 750} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &897086203 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 897086201} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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: 0} - m_Type: 0 - 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 &897086204 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 897086201} - m_CullTransparentMesh: 1 ---- !u!1 &902652507 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 902652508} - - component: {fileID: 902652510} - - component: {fileID: 902652509} - m_Layer: 5 - m_Name: Text (Legacy) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &902652508 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 902652507} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 151666216} - 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.5} - m_SizeDelta: {x: -20, y: -13} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &902652509 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 902652507} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.1509434, g: 0.1509434, b: 0.1509434, 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_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 14 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 10 - m_MaxSize: 70 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: ---- !u!222 &902652510 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 902652507} - m_CullTransparentMesh: 1 ---- !u!1 &911966549 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 911966550} - m_Layer: 5 - m_Name: PreviousUI - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!224 &911966550 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 911966549} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1355860087} - - {fileID: 1587223343} - - {fileID: 403784886} - - {fileID: 897086202} - m_Father: {fileID: 536078049} - 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!1 &919962635 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 919962636} - - component: {fileID: 919962639} - - component: {fileID: 919962638} - - component: {fileID: 919962637} - m_Layer: 5 - m_Name: EnterName - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &919962636 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 919962635} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 712302013} - m_Father: {fileID: 1258384207} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0} - m_AnchorMax: {x: 0.5, y: 0} - m_AnchoredPosition: {x: 0, y: 250} - m_SizeDelta: {x: 220, y: 80} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &919962637 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 919962635} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 919962638} - m_OnClick: - m_PersistentCalls: - m_Calls: [] ---- !u!114 &919962638 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 919962635} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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: 10905, guid: 0000000000000000f000000000000000, type: 0} - 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 &919962639 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 919962635} - m_CullTransparentMesh: 1 ---- !u!1 &970389759 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 970389760} - - component: {fileID: 970389763} - - component: {fileID: 970389762} - - component: {fileID: 970389761} - m_Layer: 5 - m_Name: Placeholder - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &970389760 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 970389759} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1325907564} - 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 &970389761 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 970389759} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreLayout: 1 - m_MinWidth: -1 - m_MinHeight: -1 - m_PreferredWidth: -1 - m_PreferredHeight: -1 - m_FlexibleWidth: -1 - m_FlexibleHeight: -1 - m_LayoutPriority: 1 ---- !u!114 &970389762 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 970389759} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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_text: - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 2150773298 - m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 14 - m_fontSizeBase: 14 - m_fontWeight: 400 - m_enableAutoSizing: 0 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 2 - m_HorizontalAlignment: 1 - m_VerticalAlignment: 256 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 0 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 1 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!222 &970389763 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 970389759} - m_CullTransparentMesh: 1 ---- !u!1 &1065119417 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1065119420} - - component: {fileID: 1065119419} - - component: {fileID: 1065119418} - m_Layer: 0 - m_Name: EventSystem - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1065119418 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1065119417} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} - m_Name: - m_EditorClassIdentifier: - m_SendPointerHoverToParent: 1 - m_HorizontalAxis: Horizontal - m_VerticalAxis: Vertical - m_SubmitButton: Submit - m_CancelButton: Cancel - m_InputActionsPerSecond: 10 - m_RepeatDelay: 0.5 - m_ForceModuleActive: 0 ---- !u!114 &1065119419 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1065119417} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} - m_Name: - m_EditorClassIdentifier: - m_FirstSelected: {fileID: 0} - m_sendNavigationEvents: 1 - m_DragThreshold: 10 ---- !u!4 &1065119420 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1065119417} - serializedVersion: 2 - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1081821769 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1081821770} - - component: {fileID: 1081821772} - - component: {fileID: 1081821771} - m_Layer: 5 - m_Name: Text (TMP) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1081821770 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1081821769} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1498053194} - 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 &1081821771 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1081821769} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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_text: X - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4294967295 - m_fontColor: {r: 1, g: 1, b: 1, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 72 - m_fontSizeBase: 24 - m_fontWeight: 400 - m_enableAutoSizing: 1 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!222 &1081821772 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1081821769} - m_CullTransparentMesh: 1 ---- !u!1 &1160084903 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1160084904} - - component: {fileID: 1160084907} - - component: {fileID: 1160084906} - - component: {fileID: 1160084905} - m_Layer: 5 - m_Name: Placeholder - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1160084904 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1160084903} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 178587969} - 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: -50, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1160084905 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1160084903} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreLayout: 1 - m_MinWidth: -1 - m_MinHeight: -1 - m_PreferredWidth: -1 - m_PreferredHeight: -1 - m_FlexibleWidth: -1 - m_FlexibleHeight: -1 - m_LayoutPriority: 1 ---- !u!114 &1160084906 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1160084903} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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_text: Enter Lobby Name... - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 3862049330 - m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.9019608} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 62.55 - m_fontSizeBase: 14 - m_fontWeight: 400 - m_enableAutoSizing: 1 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 2 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 0 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 1 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!222 &1160084907 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1160084903} - m_CullTransparentMesh: 1 ---- !u!1 &1190606926 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1190606929} - - component: {fileID: 1190606928} - - component: {fileID: 1190606927} - m_Layer: 5 - m_Name: HOSTIP - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1190606927 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1190606926} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, 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_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 14 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 10 - m_MaxSize: 70 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: New Text ---- !u!222 &1190606928 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1190606926} - m_CullTransparentMesh: 1 ---- !u!224 &1190606929 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1190606926} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 403784886} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 1, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 70} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &1245987014 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1245987015} - - component: {fileID: 1245987018} - - component: {fileID: 1245987017} - - component: {fileID: 1245987016} - m_Layer: 5 - m_Name: CreateLobby - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1245987015 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1245987014} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 627495021} - m_Father: {fileID: 578149693} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: -75} - m_SizeDelta: {x: 220, y: 80} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1245987016 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1245987014} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 1245987017} - m_OnClick: - m_PersistentCalls: - m_Calls: [] ---- !u!114 &1245987017 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1245987014} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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: 10905, guid: 0000000000000000f000000000000000, type: 0} - 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 &1245987018 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1245987014} - m_CullTransparentMesh: 1 ---- !u!1 &1258384206 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1258384207} - - component: {fileID: 1258384209} - - component: {fileID: 1258384208} - m_Layer: 5 - m_Name: EnterNamePanel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!224 &1258384207 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1258384206} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 919962636} - - {fileID: 1492309040} - - {fileID: 363934089} - m_Father: {fileID: 536078049} - 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: -200, y: -1000} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1258384208 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1258384206} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.3, g: 0.3, b: 0.3, 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: 0} - m_Type: 0 - 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 &1258384209 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1258384206} - m_CullTransparentMesh: 1 ---- !u!1 &1268399295 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1268399296} - - component: {fileID: 1268399298} - - component: {fileID: 1268399297} - m_Layer: 5 - m_Name: StatusText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1268399296 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1268399295} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1798243003} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 1, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: -40, y: 90} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1268399297 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1268399295} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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_text: Looking for game sessions - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4294967295 - m_fontColor: {r: 1, g: 1, b: 1, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 72 - m_fontSizeBase: 36 - m_fontWeight: 400 - m_enableAutoSizing: 1 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!222 &1268399298 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1268399295} - m_CullTransparentMesh: 1 ---- !u!1 &1319984343 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1319984346} - - component: {fileID: 1319984349} - - component: {fileID: 1319984348} - m_Layer: 0 - m_Name: NetworkManager - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1319984346 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1319984343} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 540, y: 960, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1319984348 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1319984343} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0bbbbd8a49f623f43abb94ec5c65f24c, type: 3} - m_Name: - m_EditorClassIdentifier: - runner: {fileID: 0} - lobbyUI: {fileID: 1798243002} - sessionListUIHandler: {fileID: 1798243004} - lobbyNameInput: {fileID: 154468292} - createLobbyButton: {fileID: 1347110329} - waitingText: {fileID: 805019539} - playerPrefab: - RawGuidValue: b7ef0b21caef7df4fbaf32ff73da212f ---- !u!114 &1319984349 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1319984343} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 14040d85e2892f242981c2fe3079b3de, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &1325907563 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1325907564} - - component: {fileID: 1325907565} - m_Layer: 5 - m_Name: Text Area - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1325907564 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1325907563} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 970389760} - - {fileID: 1753572161} - m_Father: {fileID: 363934089} - 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.5} - m_SizeDelta: {x: -20, y: -13} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1325907565 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1325907563} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: {x: -8, y: -5, z: -8, w: -5} - m_Softness: {x: 0, y: 0} ---- !u!1 &1347110327 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1347110328} - - component: {fileID: 1347110331} - - component: {fileID: 1347110330} - - component: {fileID: 1347110329} - m_Layer: 5 - m_Name: CreateSessionButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1347110328 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1347110327} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1950337444} - m_Father: {fileID: 732063377} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 1, y: 0.5} - m_AnchorMax: {x: 1, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 263.8, y: 130} - m_Pivot: {x: 1, y: 0.5} ---- !u!114 &1347110329 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1347110327} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 1347110330} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 1319984348} - m_TargetAssemblyTypeName: FusionLauncher, Assembly-CSharp - m_MethodName: CreateLobby - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 ---- !u!114 &1347110330 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1347110327} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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: 10905, guid: 0000000000000000f000000000000000, type: 0} - 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 &1347110331 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1347110327} - m_CullTransparentMesh: 1 ---- !u!1 &1355860086 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1355860087} - - component: {fileID: 1355860090} - - component: {fileID: 1355860089} - - component: {fileID: 1355860088} - m_Layer: 5 - m_Name: HostButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1355860087 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1355860086} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 881290331} - m_Father: {fileID: 911966550} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 75} - m_SizeDelta: {x: 200, y: 80} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1355860088 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1355860086} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 1355860089} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 536078050} - m_TargetAssemblyTypeName: MultiplayerMenuManager, Assembly-CSharp - m_MethodName: OnClick_Host - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 ---- !u!114 &1355860089 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1355860086} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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: 10905, guid: 0000000000000000f000000000000000, type: 0} - 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 &1355860090 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1355860086} - m_CullTransparentMesh: 1 ---- !u!1 &1371911997 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1371911998} - m_Layer: 5 - m_Name: Sliding Area - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1371911998 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1371911997} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 360897479} - m_Father: {fileID: 822676953} - 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: -20, y: -20} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &1450037021 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1450037022} - - component: {fileID: 1450037024} - - component: {fileID: 1450037023} - m_Layer: 5 - m_Name: EnterNameDummy - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1450037022 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1450037021} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1492309040} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 1, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 400, y: 50} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1450037023 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1450037021} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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_text: Enter Player Name - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4278190080 - m_fontColor: {r: 0, g: 0, b: 0, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 44.75 - m_fontSizeBase: 36 - m_fontWeight: 400 - m_enableAutoSizing: 1 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!222 &1450037024 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1450037021} - m_CullTransparentMesh: 1 ---- !u!1 &1492309039 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1492309040} - - component: {fileID: 1492309042} - - component: {fileID: 1492309041} - m_Layer: 5 - m_Name: EnterNameBG - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1492309040 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1492309039} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1450037022} - m_Father: {fileID: 1258384207} - 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: 142.5} - m_SizeDelta: {x: -400, y: -815} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1492309041 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1492309039} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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: 0} - m_Type: 0 - 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 &1492309042 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1492309039} - m_CullTransparentMesh: 1 ---- !u!1 &1498053193 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1498053194} - - component: {fileID: 1498053197} - - component: {fileID: 1498053196} - - component: {fileID: 1498053195} - m_Layer: 5 - m_Name: CloseButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1498053194 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1498053193} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1081821770} - m_Father: {fileID: 403784886} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 1, y: 1} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 48.1, y: 49.2} - m_SizeDelta: {x: 100, y: 100} - m_Pivot: {x: 1, y: 1} ---- !u!114 &1498053195 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1498053193} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 1498053196} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 536078050} - m_TargetAssemblyTypeName: MultiplayerMenuManager, Assembly-CSharp - m_MethodName: OnClick_CloseAllPopups - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 ---- !u!114 &1498053196 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1498053193} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.745283, g: 0, b: 0, 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: 10905, guid: 0000000000000000f000000000000000, type: 0} - 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 &1498053197 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1498053193} - m_CullTransparentMesh: 1 ---- !u!1 &1508517227 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1508517228} - - component: {fileID: 1508517230} - - component: {fileID: 1508517229} - m_Layer: 5 - m_Name: Text (TMP) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1508517228 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1508517227} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1587223343} - 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 &1508517229 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1508517227} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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_text: JOIN - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4281479730 - m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 56.3 - m_fontSizeBase: 24 - m_fontWeight: 400 - m_enableAutoSizing: 1 - m_fontSizeMin: 18 - m_fontSizeMax: 56.3 - m_fontStyle: 0 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!222 &1508517230 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1508517227} - m_CullTransparentMesh: 1 ---- !u!1 &1587223342 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1587223343} - - component: {fileID: 1587223346} - - component: {fileID: 1587223345} - - component: {fileID: 1587223344} - m_Layer: 5 - m_Name: JoinButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1587223343 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1587223342} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1508517228} - m_Father: {fileID: 911966550} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: -75} - m_SizeDelta: {x: 200, y: 80} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1587223344 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1587223342} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 1587223345} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 536078050} - m_TargetAssemblyTypeName: MultiplayerMenuManager, Assembly-CSharp - m_MethodName: OnClick_Join - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 ---- !u!114 &1587223345 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1587223342} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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: 10905, guid: 0000000000000000f000000000000000, type: 0} - 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 &1587223346 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1587223342} - m_CullTransparentMesh: 1 ---- !u!1 &1607624285 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1607624286} - - component: {fileID: 1607624289} - - component: {fileID: 1607624288} - - component: {fileID: 1607624287} - m_Layer: 5 - m_Name: StartButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1607624286 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1607624285} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 633884090} - m_Father: {fileID: 403784886} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: -244.4} - m_SizeDelta: {x: 200, y: 80} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1607624287 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1607624285} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 1607624288} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 536078050} - m_TargetAssemblyTypeName: MultiplayerMenuManager, Assembly-CSharp - m_MethodName: OnClick_HostConfirm - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 ---- !u!114 &1607624288 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1607624285} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.2765015, g: 1, b: 0.16470587, 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: 10905, guid: 0000000000000000f000000000000000, type: 0} - 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 &1607624289 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1607624285} - m_CullTransparentMesh: 1 ---- !u!1 &1753572160 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1753572161} - - component: {fileID: 1753572163} - - component: {fileID: 1753572162} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1753572161 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1753572160} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1325907564} - 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 &1753572162 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1753572160} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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_text: "\u200B" - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4281479730 - m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 72 - m_fontSizeBase: 14 - m_fontWeight: 400 - m_enableAutoSizing: 1 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 0 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 1 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!222 &1753572163 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1753572160} - m_CullTransparentMesh: 1 ---- !u!1 &1798243002 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1798243003} - - component: {fileID: 1798243004} - m_Layer: 5 - m_Name: SessionListPanel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1798243003 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1798243002} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1911629999} - - {fileID: 1973030189} - - {fileID: 2082204557} - - {fileID: 1268399296} - - {fileID: 732063377} - m_Father: {fileID: 536078049} - 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: 100} - m_SizeDelta: {x: -120, y: -800} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1798243004 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1798243002} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 27334717233631a469c0f138d1462662, type: 3} - m_Name: - m_EditorClassIdentifier: - statusText: {fileID: 1268399297} - sessionItemListPrefab: {fileID: 7569151483051384423, guid: e979cf17a9d80474386883ffad28fd42, type: 3} - verticalLayoutGroup: {fileID: 54820778} ---- !u!1 &1828797290 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1828797291} - - component: {fileID: 1828797293} - - component: {fileID: 1828797292} - m_Layer: 5 - m_Name: Text (Legacy) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1828797291 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1828797290} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 2037804512} - 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 &1828797292 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1828797290} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, 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_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 14 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 10 - m_MaxSize: 51 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Join ---- !u!222 &1828797293 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1828797290} - m_CullTransparentMesh: 1 ---- !u!1 &1901408289 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1901408290} - - component: {fileID: 1901408292} - - component: {fileID: 1901408291} - m_Layer: 5 - m_Name: Text (TMP) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1901408290 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1901408289} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 830709457} - 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 &1901408291 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1901408289} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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_text: Join Lobby - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4281479730 - m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 36.65 - m_fontSizeBase: 36.65 - m_fontWeight: 400 - m_enableAutoSizing: 0 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!222 &1901408292 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1901408289} - m_CullTransparentMesh: 1 ---- !u!1 &1911629998 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1911629999} - - component: {fileID: 1911630001} - - component: {fileID: 1911630000} - m_Layer: 5 - m_Name: BG - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1911629999 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1911629998} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1798243003} - 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 &1911630000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1911629998} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.31243324, g: 0.35165074, b: 0.5566038, 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: 0} - m_Type: 0 - 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 &1911630001 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1911629998} - m_CullTransparentMesh: 1 ---- !u!1 &1950337443 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1950337444} - - component: {fileID: 1950337446} - - component: {fileID: 1950337445} - m_Layer: 5 - m_Name: Text (TMP) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1950337444 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1950337443} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1347110328} - 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 &1950337445 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1950337443} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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_text: Create Session - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4281479730 - m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 57.3 - m_fontSizeBase: 24 - m_fontWeight: 400 - m_enableAutoSizing: 1 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!222 &1950337446 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1950337443} - m_CullTransparentMesh: 1 ---- !u!224 &1973030189 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} - m_PrefabInstance: {fileID: 6073677995612211591} - m_PrefabAsset: {fileID: 0} ---- !u!1 &1992315392 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1992315393} - - component: {fileID: 1992315395} - - component: {fileID: 1992315394} - m_Layer: 5 - m_Name: Text (TMP) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1992315393 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1992315392} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 683751738} - 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 &1992315394 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1992315392} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - 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_text: X - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4294967295 - m_fontColor: {r: 1, g: 1, b: 1, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 72 - m_fontSizeBase: 24 - m_fontWeight: 400 - m_enableAutoSizing: 1 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!222 &1992315395 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1992315392} - m_CullTransparentMesh: 1 ---- !u!1 &2037804511 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2037804512} - - component: {fileID: 2037804515} - - component: {fileID: 2037804514} - - component: {fileID: 2037804513} - m_Layer: 5 - m_Name: Join - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2037804512 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2037804511} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1828797291} - m_Father: {fileID: 897086202} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: -244.4} - m_SizeDelta: {x: 200, y: 80} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &2037804513 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2037804511} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 2037804514} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 536078050} - m_TargetAssemblyTypeName: MultiplayerMenuManager, Assembly-CSharp - m_MethodName: OnClick_JoinConfirm - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 ---- !u!114 &2037804514 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2037804511} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.2765015, g: 1, b: 0.16470587, 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: 10905, guid: 0000000000000000f000000000000000, type: 0} - 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 &2037804515 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2037804511} - m_CullTransparentMesh: 1 ---- !u!1 &2038445524 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2038445526} - - component: {fileID: 2038445525} - m_Layer: 0 - m_Name: NetworkRunner - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &2038445525 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2038445524} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -1199893898, guid: e725a070cec140c4caffb81624c8c787, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &2038445526 -Transform: +--- !u!4 &2038445526 +Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -6099,314 +578,178 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &2082204556 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2082204557} - - component: {fileID: 2082204560} - - component: {fileID: 2082204559} - - component: {fileID: 2082204558} - m_Layer: 5 - m_Name: Scroll View - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2082204557 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2082204556} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1825006} - - {fileID: 822676953} - - {fileID: 405097291} - m_Father: {fileID: 1798243003} - 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: -7.5} - m_SizeDelta: {x: 0, y: -15.000104} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &2082204558 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2082204556} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Content: {fileID: 54820777} - m_Horizontal: 1 - m_Vertical: 1 - m_MovementType: 1 - m_Elasticity: 0.1 - m_Inertia: 1 - m_DecelerationRate: 0.135 - m_ScrollSensitivity: 1 - m_Viewport: {fileID: 1825006} - m_HorizontalScrollbar: {fileID: 822676954} - m_VerticalScrollbar: {fileID: 405097292} - m_HorizontalScrollbarVisibility: 2 - m_VerticalScrollbarVisibility: 2 - m_HorizontalScrollbarSpacing: -3 - m_VerticalScrollbarSpacing: -3 - m_OnValueChanged: - m_PersistentCalls: - m_Calls: [] ---- !u!114 &2082204559 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2082204556} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 0.019607844} - 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: 10907, guid: 0000000000000000f000000000000000, type: 0} - 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 &2082204560 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2082204556} - m_CullTransparentMesh: 1 ---- !u!1 &2120583533 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2120583534} - - component: {fileID: 2120583536} - - component: {fileID: 2120583535} - m_Layer: 5 - m_Name: Placeholder - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2120583534 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2120583533} - 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_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 151666216} - 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.5} - m_SizeDelta: {x: -20, y: -13} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &2120583535 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2120583533} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.87058824} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 14 - m_FontStyle: 2 - m_BestFit: 1 - m_MinSize: 10 - m_MaxSize: 70 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Enter IP... ---- !u!222 &2120583536 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2120583533} - m_CullTransparentMesh: 1 ---- !u!1001 &6073677995612211591 +--- !u!1001 &7384460682675426996 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: serializedVersion: 3 - m_TransformParent: {fileID: 1798243003} + m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 1054626397041665074, guid: e979cf17a9d80474386883ffad28fd42, type: 3} - propertyPath: m_Color.b - value: 1 + - target: {fileID: 438438280841350265, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 438438280841350265, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 438438280841350265, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 438438280841350265, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1976146987017506902, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1976146987017506902, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2426737039926020160, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2426737039926020160, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - - target: {fileID: 1054626397041665074, guid: e979cf17a9d80474386883ffad28fd42, type: 3} - propertyPath: m_Color.g - value: 0.1745283 + - target: {fileID: 3040470028333382925, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - - target: {fileID: 1054626397041665074, guid: e979cf17a9d80474386883ffad28fd42, type: 3} - propertyPath: m_Color.r - value: 0.22125323 + - target: {fileID: 3040470028333382925, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - - target: {fileID: 1120236924525325949, guid: e979cf17a9d80474386883ffad28fd42, type: 3} - propertyPath: m_IsActive + - target: {fileID: 3040470028333382925, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + - target: {fileID: 3740811534331983930, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} propertyPath: m_Pivot.x - value: 0.5 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + - target: {fileID: 3740811534331983930, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} propertyPath: m_Pivot.y - value: 1 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + - target: {fileID: 3740811534331983930, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} propertyPath: m_AnchorMax.x - value: 0.5 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + - target: {fileID: 3740811534331983930, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} propertyPath: m_AnchorMax.y - value: 0.5 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + - target: {fileID: 3740811534331983930, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} propertyPath: m_AnchorMin.x - value: 0.5 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + - target: {fileID: 3740811534331983930, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} propertyPath: m_AnchorMin.y - value: 0.5 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + - target: {fileID: 3740811534331983930, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} propertyPath: m_SizeDelta.x - value: 960 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + - target: {fileID: 3740811534331983930, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} propertyPath: m_SizeDelta.y - value: 100 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + - target: {fileID: 3740811534331983930, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + - target: {fileID: 3740811534331983930, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + - target: {fileID: 3740811534331983930, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + - target: {fileID: 3740811534331983930, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + - target: {fileID: 3740811534331983930, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + - target: {fileID: 3740811534331983930, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + - target: {fileID: 3740811534331983930, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + - target: {fileID: 3740811534331983930, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + - target: {fileID: 3740811534331983930, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} propertyPath: m_AnchoredPosition.y - value: 660 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + - target: {fileID: 3740811534331983930, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + - target: {fileID: 3740811534331983930, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 3668090635799086485, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + - target: {fileID: 3740811534331983930, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 7569151483051384423, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + - target: {fileID: 4812570014104075204, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} propertyPath: m_Name - value: SessionTitle + value: Canvas + objectReference: {fileID: 0} + - target: {fileID: 4874929987586356482, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0.000016806023 + objectReference: {fileID: 0} + - target: {fileID: 4874929987586356482, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.000058412552 + objectReference: {fileID: 0} + - target: {fileID: 7416957822121483513, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1319984348} + - target: {fileID: 8707409790204792829, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8707409790204792829, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8707409790204792829, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] m_AddedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: e979cf17a9d80474386883ffad28fd42, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: 0ba097670ddbd3f409bacec1bdcffe60, type: 3} --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 m_Roots: - {fileID: 46418239} - {fileID: 136307435} - - {fileID: 536078049} + - {fileID: 7384460682675426996} - {fileID: 1065119420} - {fileID: 1319984346} - {fileID: 614009311} diff --git a/Assets/Scripts/.CarNetworkInput.cs b/Assets/Scripts/.CarNetworkInput.cs new file mode 100644 index 0000000..e3393da --- /dev/null +++ b/Assets/Scripts/.CarNetworkInput.cs @@ -0,0 +1,8 @@ +using Fusion; + +public struct CarNetworkInput : INetworkInput +{ + public float Horizontal; + public float Vertical; + public bool NOS; +} diff --git a/Assets/Scripts/.CarNetworkInput.cs.meta b/Assets/Scripts/.CarNetworkInput.cs.meta new file mode 100644 index 0000000..5783d24 --- /dev/null +++ b/Assets/Scripts/.CarNetworkInput.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a98b15d62a38d6b42b8a78ceb7dc0f4c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/FusionInputProvider.cs b/Assets/Scripts/.FusionInputProvider.cs similarity index 96% rename from Assets/Scripts/FusionInputProvider.cs rename to Assets/Scripts/.FusionInputProvider.cs index 90bb962..7a93a10 100644 --- a/Assets/Scripts/FusionInputProvider.cs +++ b/Assets/Scripts/.FusionInputProvider.cs @@ -34,8 +34,6 @@ public class FusionInputProvider : SimulationBehaviour, INetworkRunnerCallbacks // read your steering/throttle data.Horizontal = CnInputManager.GetAxis("Horizontal"); data.Vertical = CnInputManager.GetAxis("Vertical"); - Debug.Log("Horizontal: " + data.Horizontal); - Debug.Log("Vertical: " + data.Vertical); // grab the NOS state from the local player's spawned object if (runner.TryGetPlayerObject(runner.LocalPlayer, out var playerObj)) { diff --git a/Assets/Scripts/FusionInputProvider.cs.meta b/Assets/Scripts/.FusionInputProvider.cs.meta similarity index 100% rename from Assets/Scripts/FusionInputProvider.cs.meta rename to Assets/Scripts/.FusionInputProvider.cs.meta diff --git a/Assets/Scripts/FusionLauncher.cs b/Assets/Scripts/.FusionLauncher.cs similarity index 62% rename from Assets/Scripts/FusionLauncher.cs rename to Assets/Scripts/.FusionLauncher.cs index bd8c39c..18b8d7e 100644 --- a/Assets/Scripts/FusionLauncher.cs +++ b/Assets/Scripts/.FusionLauncher.cs @@ -12,7 +12,7 @@ using System.Linq; public class FusionLauncher : MonoBehaviour, INetworkRunnerCallbacks { [Header("Network Runner (Drag NOTHING here)")] - public NetworkRunner runner; // we'll create/destroy this at runtime + public NetworkRunner runner; [Header("Lobby UI")] public GameObject lobbyUI; @@ -30,9 +30,10 @@ public class FusionLauncher : MonoBehaviour, INetworkRunnerCallbacks private bool gameplayLoaded = false; private bool connectedToServer = false; + private List playersToSpawn = new List(); + void Awake() { - // Ensure this launcher persists across loads if (FindObjectsOfType().Length > 1) { Destroy(gameObject); @@ -43,15 +44,10 @@ public class FusionLauncher : MonoBehaviour, INetworkRunnerCallbacks void Start() { - // Kick off our dummy runner purely in client/browse mode: StartDummyRunner(); - - // UI hookups if (lobbyNameInput != null) lobbyNameInput.onValueChanged.AddListener(OnLobbyNameChanged); OnLobbyNameChanged(lobbyNameInput.text); waitingText.gameObject.SetActive(false); - - // Start periodic lobby refresh once connected refreshCoroutine = StartCoroutine(AutoRefreshLobbyList()); } @@ -75,18 +71,12 @@ public class FusionLauncher : MonoBehaviour, INetworkRunnerCallbacks createLobbyButton.interactable = !string.IsNullOrWhiteSpace(s) && s.Length <= 15; } - // —————— DUMMY RUNNER —————— - // Starts a runner in CLIENT mode so we can list sessions. async void StartDummyRunner() { - // If already up & running, just bail. - if (runner != null && runner.IsRunning) - return; + if (runner != null && runner.IsRunning) return; - // Ensure any old runner is cleared await EnsureFreshRunner(); - // Start as CLIENT var result = await runner.StartGame(new StartGameArgs() { GameMode = GameMode.Client, @@ -109,13 +99,12 @@ public class FusionLauncher : MonoBehaviour, INetworkRunnerCallbacks } } - // —————— RESET / CREATE FRESH RUNNER —————— private async Task EnsureFreshRunner() { - // — Teardown any existing runner — playerCount = 0; gameplayLoaded = false; connectedToServer = false; + playersToSpawn.Clear(); if (runner != null && runner.IsRunning) { @@ -129,78 +118,24 @@ public class FusionLauncher : MonoBehaviour, INetworkRunnerCallbacks refreshCoroutine = null; } - // — Build a new runner GameObject — var go = new GameObject("NetworkRunnerGO"); DontDestroyOnLoad(go); - // 1) Add the NetworkRunner runner = go.AddComponent(); - - // 2) Enable input collection BEFORE StartGame runner.ProvideInput = true; - - // 3) Register this launcher’s callbacks runner.AddCallbacks(this); - // 4) Attach & register your FusionInputProvider var inputProv = go.AddComponent(); runner.AddCallbacks(inputProv); - // 5) Log out what we’ve done - Debug.Log($"[Launcher] Spawned {go.name} → ProvideInput={runner.ProvideInput}; " + - $"FusionInputProvider attached"); - - // Note: we don’t call StartGame here. That happens in CreateLobby() / JoinLobby(). + Debug.Log($"[Launcher] Spawned {go.name} → ProvideInput={runner.ProvideInput}; FusionInputProvider attached"); } - //private async Task EnsureFreshRunner() - //{ - // // Reset flags - // playerCount = 0; - // gameplayLoaded = false; - // connectedToServer = false; - - // // If an old runner exists & is running, shut it down & destroy its GO - // if (runner != null && runner.IsRunning) - // { - // await runner.Shutdown(); - // Destroy(runner.gameObject); - // } - - // // Stop auto-refresh while we rebuild - // if (refreshCoroutine != null) - // { - // StopCoroutine(refreshCoroutine); - // refreshCoroutine = null; - // } - - // // Make brand-new runner GameObject - // var go = new GameObject("NetworkRunnerGO"); - // DontDestroyOnLoad(go); // keep it alive across scenes - - // runner = go.AddComponent(); - // var inputProv = go.AddComponent(); - // runner.AddCallbacks(inputProv); - // Debug.Log("✔️ Added FusionInputProvider AND registered it on " + go.name); - - // // 3) Tell Fusion we’ll be providing input - // runner.ProvideInput = true; - - // // 4) Register your launcher callbacks - // runner.AddCallbacks(this); - //} - - // —————— CREATE LOBBY (Host) —————— public async void CreateLobby() { var name = lobbyNameInput.text.Trim(); - if (string.IsNullOrEmpty(name)) - { - Debug.LogWarning("Empty lobby name!"); - return; - } + if (string.IsNullOrEmpty(name)) return; - // Tear down browse runner & spawn a fresh one await EnsureFreshRunner(); var sceneRef = SceneRef.FromIndex(SceneManager.GetActiveScene().buildIndex); @@ -210,7 +145,6 @@ public class FusionLauncher : MonoBehaviour, INetworkRunnerCallbacks SessionName = name, PlayerCount = maxPlayers, Scene = sceneRef, - SceneManager = runner.gameObject.AddComponent() }); @@ -227,10 +161,8 @@ public class FusionLauncher : MonoBehaviour, INetworkRunnerCallbacks } } - // —————— JOIN LOBBY (Client) —————— public async void JoinLobby(SessionInfo info) { - // Tear down browse runner & spawn a fresh one await EnsureFreshRunner(); var res = await runner.StartGame(new StartGameArgs() @@ -254,15 +186,12 @@ public class FusionLauncher : MonoBehaviour, INetworkRunnerCallbacks } } - // —————— REFRESH LOBBY LIST —————— public void RefreshLobbyList() { if (!connectedToServer) return; - //sessionListUIHandler.ClearList(); runner.JoinSessionLobby(SessionLobby.ClientServer); } - // —————— FUSION CALLBACKS —————— public void OnConnectedToServer(NetworkRunner r) { connectedToServer = true; @@ -272,17 +201,14 @@ public class FusionLauncher : MonoBehaviour, INetworkRunnerCallbacks public void OnSessionListUpdated(NetworkRunner runner, List sessionList) { - // First thing, wipe out the old items every time sessionListUIHandler.ClearList(); - // If there really are no sessions, show your “no sessions” message if (sessionList.Count == 0) { sessionListUIHandler.ShowNoSessionsMessage(); return; } - // Otherwise re-populate foreach (var session in sessionList) { if (session.IsOpen && session.IsVisible && session.PlayerCount < session.MaxPlayers) @@ -295,56 +221,45 @@ public class FusionLauncher : MonoBehaviour, INetworkRunnerCallbacks public void OnPlayerJoined(NetworkRunner r, PlayerRef p) { playerCount++; - // Only the host in Gameplay scene spawns cars - //if (r.IsServer && SceneManager.GetActiveScene().name == "Gameplay") - //{ - // var pos = new Vector3(Random.Range(-5, 5), 0, Random.Range(-5, 5)); - // r.Spawn(playerPrefab, pos, Quaternion.identity, p); - //} + playersToSpawn.Add(p); + Debug.Log($"➡ Player joined: {p}"); - - // Only the host triggers scene‐load when 2 players are present if (r.IsServer && playerCount == maxPlayers && !gameplayLoaded) { gameplayLoaded = true; - var scene = SceneRef.FromIndex( - SceneUtility.GetBuildIndexByScenePath("Assets/Scenes/Gameplay.unity") - ); + var scene = SceneRef.FromIndex(SceneUtility.GetBuildIndexByScenePath("Assets/Scenes/Gameplay.unity")); r.LoadScene(scene, LoadSceneMode.Single); waitingText.gameObject.SetActive(false); } } + public void OnSceneLoadDone(NetworkRunner runner) { if (!runner.IsServer) return; - // only run once per game start - if (gameplayLoaded) + var provider = FindObjectOfType(); + if (provider == null || provider.spawnPoints == null || provider.spawnPoints.Length == 0) { - gameplayLoaded = false; + Debug.LogError("❌ No SpawnPointProvider or no spawnPoints assigned!"); + return; + } - // grab your provider - var provider = FindObjectOfType(); - if (provider == null || provider.spawnPoints == null || provider.spawnPoints.Length == 0) - { - Debug.LogError("No SpawnPointProvider or no spawnPoints assigned!"); - return; - } + for (int i = 0; i < playersToSpawn.Count && i < provider.spawnPoints.Length; i++) + { + PlayerRef player = playersToSpawn[i]; + Transform spawnPoint = provider.spawnPoints[i]; - // convert the IEnumerable to an array - PlayerRef[] players = runner.ActivePlayers.ToArray(); - // pick the smaller of (number of players) vs (number of spawnPoints) - int count = Mathf.Min(players.Length, provider.spawnPoints.Length); + runner.Spawn(playerPrefab, spawnPoint.position, spawnPoint.rotation, inputAuthority: player); + - for (int i = 0; i < count; i++) - { - PlayerRef p = players[i]; - Transform sp = provider.spawnPoints[i]; - runner.Spawn(playerPrefab, sp.position, sp.rotation, p); - Debug.Log("SpawnPoints done: "+i); - } + + Debug.Log($"✔ Spawned player with authority: {player}"); } + + playersToSpawn.Clear(); } + + // Stub callbacks public void OnDisconnectedFromServer(NetworkRunner r, NetDisconnectReason reason) { } public void OnConnectRequest(NetworkRunner r, NetworkRunnerCallbackArgs.ConnectRequest req, byte[] tok) { } public void OnConnectFailed(NetworkRunner r, NetAddress addr, NetConnectFailedReason reason) { } @@ -357,8 +272,7 @@ public class FusionLauncher : MonoBehaviour, INetworkRunnerCallbacks public void OnObjectExitAOI(NetworkRunner r, NetworkObject obj, PlayerRef p) { } public void OnReliableDataReceived(NetworkRunner r, PlayerRef p, ReliableKey k, System.ArraySegment data) { } public void OnReliableDataProgress(NetworkRunner r, PlayerRef p, ReliableKey k, float prog) { } - //public void OnSceneLoadDone(NetworkRunner r) { } public void OnSceneLoadStart(NetworkRunner r) { } public void OnHostMigration(NetworkRunner r, HostMigrationToken t) { } public void OnCustomAuthenticationResponse(NetworkRunner r, Dictionary data) { } -} +} \ No newline at end of file diff --git a/Assets/Scripts/FusionLauncher.cs.meta b/Assets/Scripts/.FusionLauncher.cs.meta similarity index 100% rename from Assets/Scripts/FusionLauncher.cs.meta rename to Assets/Scripts/.FusionLauncher.cs.meta diff --git a/Assets/Scripts/.NetworkController.cs b/Assets/Scripts/.NetworkController.cs new file mode 100644 index 0000000..d5db13c --- /dev/null +++ b/Assets/Scripts/.NetworkController.cs @@ -0,0 +1,26 @@ +using Fusion; +using UnityEngine; + +[RequireComponent(typeof(Rigidbody))] +public class NetworkController : NetworkBehaviour +{ + public float moveSpeed = 5f; + + private Rigidbody rb; + private Vector3 moveDirection; + + public override void Spawned() + { + rb = GetComponent(); + } + + public override void FixedUpdateNetwork() + { + if (GetInput(out CarNetworkInput input)) + { + moveDirection = new Vector3(input.Horizontal, 0f, input.Vertical).normalized; + Vector3 move = moveDirection * moveSpeed * Runner.DeltaTime; + rb.MovePosition(rb.position + move); + } + } +} diff --git a/Assets/Scripts/.NetworkController.cs.meta b/Assets/Scripts/.NetworkController.cs.meta new file mode 100644 index 0000000..b25e84d --- /dev/null +++ b/Assets/Scripts/.NetworkController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4280e0bb0e4baf84bb68b6ef7ee0fd17 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/PlayerCameraSetup.cs b/Assets/Scripts/.PlayerCameraSetup.cs similarity index 100% rename from Assets/Scripts/PlayerCameraSetup.cs rename to Assets/Scripts/.PlayerCameraSetup.cs diff --git a/Assets/Scripts/PlayerCameraSetup.cs.meta b/Assets/Scripts/.PlayerCameraSetup.cs.meta similarity index 100% rename from Assets/Scripts/PlayerCameraSetup.cs.meta rename to Assets/Scripts/.PlayerCameraSetup.cs.meta diff --git a/Assets/Scripts/SessionInfoUIListItem.cs b/Assets/Scripts/.SessionInfoUIListItem.cs similarity index 100% rename from Assets/Scripts/SessionInfoUIListItem.cs rename to Assets/Scripts/.SessionInfoUIListItem.cs diff --git a/Assets/Scripts/SessionInfoUIListItem.cs.meta b/Assets/Scripts/.SessionInfoUIListItem.cs.meta similarity index 100% rename from Assets/Scripts/SessionInfoUIListItem.cs.meta rename to Assets/Scripts/.SessionInfoUIListItem.cs.meta diff --git a/Assets/Scripts/CameraController.cs b/Assets/Scripts/CameraController.cs index 65732b2..5f03f53 100644 --- a/Assets/Scripts/CameraController.cs +++ b/Assets/Scripts/CameraController.cs @@ -28,14 +28,14 @@ public class CameraController : MonoBehaviour if (target != null) { - // User assigned a target in the Inspector InitializeTarget(); } else { - // No target assigned, try to auto-find after a short delay - Invoke(nameof(FindLocalPlayer), 0.5f); + Invoke(nameof(FindPlayer), 0.5f); } + + transform.parent = null; } private void InitializeTarget() @@ -50,21 +50,20 @@ public class CameraController : MonoBehaviour Debug.Log("CameraController: Following manually assigned target.", this); } - private void FindLocalPlayer() + private void FindPlayer() { foreach (var vehicle in FindObjectsOfType()) { - // VehicleController inherits NetworkBehaviour, so .Object is the NetworkObject - if (vehicle.Object != null && vehicle.Object.HasInputAuthority) + if (vehicle.FollowTarget != null) { target = vehicle.FollowTarget; InitializeTarget(); - Debug.Log("CameraController: Auto-found local player to follow.", this); + Debug.Log("CameraController: Auto-found player to follow.", this); return; } } - Debug.LogWarning("CameraController: No local player found to follow disabling.", this); + Debug.LogWarning("CameraController: No player found to follow disabling.", this); enabled = false; } @@ -76,11 +75,97 @@ public class CameraController : MonoBehaviour float targetDistance = Mathf.Lerp(baseDistance, maxDistance, speed / 30f); currentDistance = Mathf.Lerp(currentDistance, targetDistance, Time.deltaTime * zoomSpeed); - Vector3 followPos = target.position - + heightOffset - - target.forward * currentDistance; - + Vector3 followPos = target.position + heightOffset - target.forward * currentDistance; transform.position = Vector3.Lerp(transform.position, followPos, Time.deltaTime * followSmoothness); transform.LookAt(target.position + heightOffset * 0.5f); } } + + +//using UnityEngine; + +//[RequireComponent(typeof(Camera))] +//public class CameraController : MonoBehaviour +//{ +// [Header("Target")] +// [Tooltip("If set, camera will follow this Transform. Otherwise it will auto-find the local player.")] +// [SerializeField] private Transform target; + +// [Header("Zoom Settings")] +// [SerializeField] private float baseDistance = 6f; +// [SerializeField] private float maxDistance = 12f; +// [SerializeField] private float zoomSpeed = 5f; + +// [Header("Follow Settings")] +// [SerializeField] private float followSmoothness = 5f; +// [SerializeField] private Vector3 heightOffset = new Vector3(0, 3f, 0); + +// private Rigidbody targetRb; +// private float currentDistance; +// private Camera cam; + +// private void Start() +// { +// Application.targetFrameRate = 120; +// cam = GetComponent(); +// currentDistance = baseDistance; + +// if (target != null) +// { +// // User assigned a target in the Inspector +// InitializeTarget(); +// } +// else +// { +// // No target assigned, try to auto-find after a short delay +// Invoke(nameof(FindLocalPlayer), 0.5f); +// } +// transform.parent = null; +// } + +// private void InitializeTarget() +// { +// targetRb = transform.parent.GetComponent(); +// if (targetRb == null) +// { +// Debug.LogError("CameraController: Assigned target has no Rigidbody component.", this); +// enabled = false; +// return; +// } +// Debug.Log("CameraController: Following manually assigned target.", this); +// } + +// private void FindLocalPlayer() +// { +// foreach (var vehicle in FindObjectsOfType()) +// { +// // VehicleController inherits NetworkBehaviour, so .Object is the NetworkObject +// if (vehicle.Object != null && vehicle.Object.HasInputAuthority) +// { +// target = vehicle.FollowTarget; +// InitializeTarget(); +// Debug.Log("CameraController: Auto-found local player to follow.", this); +// return; +// } +// } + +// Debug.LogWarning("CameraController: No local player found to follow disabling.", this); +// enabled = false; +// } + +// private void LateUpdate() +// { +// if (target == null || targetRb == null) return; + +// float speed = targetRb.velocity.magnitude; +// float targetDistance = Mathf.Lerp(baseDistance, maxDistance, speed / 30f); +// currentDistance = Mathf.Lerp(currentDistance, targetDistance, Time.deltaTime * zoomSpeed); + +// Vector3 followPos = target.position +// + heightOffset +// - target.forward * currentDistance; + +// transform.position = Vector3.Lerp(transform.position, followPos, Time.deltaTime * followSmoothness); +// transform.LookAt(target.position + heightOffset * 0.5f); +// } +//} diff --git a/Assets/Scripts/NOSController.cs b/Assets/Scripts/NOSController.cs index dec8f57..55f53c0 100644 --- a/Assets/Scripts/NOSController.cs +++ b/Assets/Scripts/NOSController.cs @@ -1,13 +1,10 @@ -using Fusion; using UnityEngine; using UnityEngine.UI; using UnityEngine.Rendering.PostProcessing; // if your MotionBlur comes from the Post-Process stack -public class NOSController : NetworkBehaviour +public class NOSController : MonoBehaviour { - // 1) This value is now network-synchronized - [Networked] public float CurrentNOS { get; set; } - + [SerializeField] float CurrentNOS = 0f; [SerializeField] float chargeSpeed = 1f; [SerializeField] float depletionSpeed = 1f; [SerializeField] float boostAcceleration = 40f; @@ -15,30 +12,22 @@ public class NOSController : NetworkBehaviour [SerializeField] AudioSource boostAudio = null; public bool _isBoosting { get; private set; } - // cached references VehicleController _vehicle; MotionBlur _motionBlur; Image _boostBarFill; Button _boostButton; - public override void Spawned() + private void Start() { - // grab your VehicleController _vehicle = GetComponent(); - // find motion-blur on the main camera (if you have one) _motionBlur = Camera.main?.GetComponent(); - if (Object.HasInputAuthority) - { - // only the local player wires up UI - _boostBarFill = GameUIManager.Instance.boostBarFill; - _boostButton = GameUIManager.Instance.boostButton; + _boostBarFill = GameUIManager.Instance.boostBarFill; + _boostButton = GameUIManager.Instance.boostButton; - _boostButton.onClick.RemoveAllListeners(); - _boostButton.onClick.AddListener(() => ActivateNOS(true)); - } + _boostButton.onClick.RemoveAllListeners(); + _boostButton.onClick.AddListener(() => ActivateNOS(true)); - // configure audio once if (boostAudio != null) { boostAudio.playOnAwake = false; @@ -47,34 +36,25 @@ public class NOSController : NetworkBehaviour } } - public override void FixedUpdateNetwork() + private void FixedUpdate() { - // only run logic on the player who owns this object - if (!Object.HasInputAuthority) - return; + if (_vehicle == null) return; - // 2) Charge when not boosting if (!_vehicle.nosActive) { - CurrentNOS = Mathf.Min(100f, - CurrentNOS + Runner.DeltaTime * (chargeSpeed * _vehicle.LocalVelocity.z / 30f) - ); + CurrentNOS = Mathf.Min(100f, CurrentNOS + Time.fixedDeltaTime * (chargeSpeed * _vehicle.LocalVelocity.z / 30f)); } - else // 3) Deplete when boosting + else { - CurrentNOS = Mathf.Max(0f, - CurrentNOS - Runner.DeltaTime * depletionSpeed - ); + CurrentNOS = Mathf.Max(0f, CurrentNOS - Time.fixedDeltaTime * depletionSpeed); if (CurrentNOS <= 0f) ActivateNOS(false); } - // 4) Update the UI bar if (_boostBarFill != null) _boostBarFill.fillAmount = CurrentNOS / 100f; - // 5) Play/stop the boost SFX if (boostAudio != null) { if (_vehicle.nosActive && CurrentNOS > 0f) @@ -87,16 +67,10 @@ public class NOSController : NetworkBehaviour } } - // 6) Toggle motion blur if (_motionBlur != null) _motionBlur.enabled = (_vehicle.nosActive && CurrentNOS > 0f); } - /// - /// Called by your UI button (via Spawned) to start/stop boost. - /// - - // Update ActivateNOS method: void ActivateNOS(bool active) { _isBoosting = active; @@ -112,3 +86,119 @@ public class NOSController : NetworkBehaviour } } } + + +//using Fusion; +//using UnityEngine; +//using UnityEngine.UI; +//using UnityEngine.Rendering.PostProcessing; // if your MotionBlur comes from the Post-Process stack + +//public class NOSController : NetworkBehaviour +//{ +// // 1) This value is now network-synchronized +// [Networked] public float CurrentNOS { get; set; } + +// [SerializeField] float chargeSpeed = 1f; +// [SerializeField] float depletionSpeed = 1f; +// [SerializeField] float boostAcceleration = 40f; +// [SerializeField] float audioVolume = 0.5f; +// [SerializeField] AudioSource boostAudio = null; +// public bool _isBoosting { get; private set; } + +// // cached references +// VehicleController _vehicle; +// MotionBlur _motionBlur; +// Image _boostBarFill; +// Button _boostButton; + +// public override void Spawned() +// { +// // grab your VehicleController +// _vehicle = GetComponent(); +// // find motion-blur on the main camera (if you have one) +// _motionBlur = Camera.main?.GetComponent(); + +// if (Object.HasInputAuthority) +// { +// // only the local player wires up UI +// _boostBarFill = GameUIManager.Instance.boostBarFill; +// _boostButton = GameUIManager.Instance.boostButton; + +// _boostButton.onClick.RemoveAllListeners(); +// _boostButton.onClick.AddListener(() => ActivateNOS(true)); +// } + +// // configure audio once +// if (boostAudio != null) +// { +// boostAudio.playOnAwake = false; +// boostAudio.loop = true; +// boostAudio.volume = audioVolume; +// } +// } + +// public override void FixedUpdateNetwork() +// { +// // only run logic on the player who owns this object +// if (!Object.HasInputAuthority) +// return; + +// // 2) Charge when not boosting +// if (!_vehicle.nosActive) +// { +// CurrentNOS = Mathf.Min(100f, +// CurrentNOS + Runner.DeltaTime * (chargeSpeed * _vehicle.LocalVelocity.z / 30f) +// ); +// } +// else // 3) Deplete when boosting +// { +// CurrentNOS = Mathf.Max(0f, +// CurrentNOS - Runner.DeltaTime * depletionSpeed +// ); + +// if (CurrentNOS <= 0f) +// ActivateNOS(false); +// } + +// // 4) Update the UI bar +// if (_boostBarFill != null) +// _boostBarFill.fillAmount = CurrentNOS / 100f; + +// // 5) Play/stop the boost SFX +// if (boostAudio != null) +// { +// if (_vehicle.nosActive && CurrentNOS > 0f) +// { +// if (!boostAudio.isPlaying) boostAudio.Play(); +// } +// else +// { +// if (boostAudio.isPlaying) boostAudio.Stop(); +// } +// } + +// // 6) Toggle motion blur +// if (_motionBlur != null) +// _motionBlur.enabled = (_vehicle.nosActive && CurrentNOS > 0f); +// } + +// /// +// /// Called by your UI button (via Spawned) to start/stop boost. +// /// + +// // Update ActivateNOS method: +// void ActivateNOS(bool active) +// { +// _isBoosting = active; + +// if (active) +// { +// if (CurrentNOS <= 0f) return; +// _vehicle.ActivateNOS(true, boostAcceleration); +// } +// else +// { +// _vehicle.ActivateNOS(false); +// } +// } +//} diff --git a/Assets/Scripts/VehicleController.cs b/Assets/Scripts/VehicleController.cs index bba383b..7fbc6db 100644 --- a/Assets/Scripts/VehicleController.cs +++ b/Assets/Scripts/VehicleController.cs @@ -1,6 +1,5 @@ using UnityEngine; using CnControls; -using Fusion; public enum SurfaceDetection { @@ -8,7 +7,7 @@ public enum SurfaceDetection SphereCast } -public class VehicleController : NetworkBehaviour +public class VehicleController : MonoBehaviour { [SerializeField] float currentSpeed = 0f; [SerializeField] float steeringAI = 0f; @@ -88,76 +87,14 @@ public class VehicleController : NetworkBehaviour public Vector3 LocalVelocity => velocityLocal; public Transform FollowTarget => cameraFollowTarget; [Range(0.3f, 1f)] public float steeringFactor = 1f; - public override void Spawned() - { - base.Spawned(); - InitializeVehicle(); - bool isLocalPlayer = Object.HasInputAuthority; // true on the runner that owns this object - bool isHostRunner = Runner.IsServer; // true on the host’s runner - Debug.Log("Spawned"); - // if (local && hostRunner) OR (remote && clientRunner) ⇒ this is the host’s car - if (isLocalPlayer == isHostRunner) - gameObject.name = "PlayerHost"; - else - gameObject.name = "PlayerClient"; - } - - - // 1) Fusion will call this every tick to collect local input - public override void FixedUpdateNetwork() - { - if (!isRunning || !RaceCountdownManager.Instance || !RaceCountdownManager.Instance.RaceStarted) - return; - - if (/*Object.HasInputAuthority && */GetInput(out CarNetworkInput data)) - { - inputHorizontal = data.Horizontal; - inputVertical = data.Vertical; - if (data.NOS) ActivateNOS(); - } - - // ✅ Only simulate physics on authoritative runner - //if (!Object.HasStateAuthority) return; - - ApplyControls(); - CheckGround(); - HandleMovement(); - UpdateVisuals(); // OK on all clients - } - - // 2) Fusion runs your simulation here instead of Update/FixedUpdate - //public override void FixedUpdateNetwork() - //{ - // if (!isRunning || !RaceCountdownManager.Instance || !RaceCountdownManager.Instance.RaceStarted) - // return; - - // if (!Object.HasInputAuthority) - // { - // Debug.Log("🚫 No Input Authority on this player"); - // return; - // } - - // if (Object.HasInputAuthority && GetInput(out CarNetworkInput data)) - // { - // inputHorizontal = data.Horizontal; - // inputVertical = data.Vertical; - // Debug.Log("inputVertical: " + inputVertical); - // Debug.Log("inputHorizontal : " + inputHorizontal); - // if (data.NOS) - // ActivateNOS(); - // ApplyControls(); - // CheckGround(); - // HandleMovement(); - // } - // UpdateVisuals(); - //} private void Awake() { vehicleRigidbody = GetComponent(); targetTracker = GetComponent(); wheelRadius = sphereRigidbody.GetComponent().radius; nosController = GetComponent(); + // maxGroundDistance = 1.1f; maxGroundDistance = wheelRadius + 0.5f; InitializeVehicle(); } @@ -177,13 +114,20 @@ public class VehicleController : NetworkBehaviour steeringAI = 0f; } - //private void Update() - //{ - // if (!isRunning) return; - // UpdateVisuals(); - // ProcessInputs(); - // ApplyControls(); - //} + private void Update() + { + if (!isRunning) return; + ProcessInputs(); + ApplyControls(); + UpdateVisuals(); + } + + private void FixedUpdate() + { + if (!isRunning) return; + CheckGround(); + HandleMovement(); + } private void ProcessInputs() { @@ -203,15 +147,6 @@ public class VehicleController : NetworkBehaviour wheelRearLeft?.Rotate(Vector3.right * (CurrentSpeed * 0.75f)); wheelRearRight?.Rotate(Vector3.right * (CurrentSpeed * 0.75f)); - if (carBodyVisual) - { - if (velocityLocal.z > 1) - carBodyVisual.localRotation = Quaternion.Slerp(carBodyVisual.localRotation, - Quaternion.Euler(Mathf.Lerp(0, -5, velocityLocal.z / maxSpeed), 0, Mathf.Clamp(desiredTurnAngle * steeringAI, -bodyTiltAmount, bodyTiltAmount)), 0.05f); - else - carBodyVisual.localRotation = Quaternion.Slerp(carBodyVisual.localRotation, Quaternion.identity, 0.05f); - } - if (speedVisualEffects) speedVisualEffects.SetActive(velocityLocal.z > 10); } @@ -248,93 +183,72 @@ public class VehicleController : NetworkBehaviour currentSpeed = Mathf.Round(CurrentSpeed); } - //private void FixedUpdate() - //{ - // if (!isRunning) return; - // CheckGround(); - // HandleMovement(); - //} - private void CheckGround() { - isOnGround = true; - //if (groundDetection == SurfaceDetection.RayCast) - //{ - // isOnGround = Physics.Raycast(sphereRigidbody.position, Vector3.down, out surfaceHit, maxGroundDistance, driveableSurface) - // || Physics.Raycast(sphereRigidbody.position + Vector3.forward * 3f, Vector3.down, out surfaceHit, maxGroundDistance, driveableSurface) - // || Physics.Raycast(sphereRigidbody.position - Vector3.forward * 3f, Vector3.down, out surfaceHit, maxGroundDistance, driveableSurface); - //} - //else if (groundDetection == SurfaceDetection.SphereCast) - //{ - // isOnGround = Physics.SphereCast(sphereRigidbody.position + wheelRadius * Vector3.up, wheelRadius + 0.25f, -transform.up, out surfaceHit, maxGroundDistance, driveableSurface); - //} - //else isOnGround = false; + //isOnGround = true; + + if (groundDetection == SurfaceDetection.RayCast) + { + isOnGround = Physics.Raycast(sphereRigidbody.position, Vector3.down, out surfaceHit, maxGroundDistance, driveableSurface) + || Physics.Raycast(sphereRigidbody.position + Vector3.forward * 3f, Vector3.down, out surfaceHit, maxGroundDistance, driveableSurface) + || Physics.Raycast(sphereRigidbody.position - Vector3.forward * 3f, Vector3.down, out surfaceHit, maxGroundDistance, driveableSurface); + } + else if (groundDetection == SurfaceDetection.SphereCast) + { + isOnGround = Physics.SphereCast(sphereRigidbody.position + wheelRadius * Vector3.up, wheelRadius + 0.25f, -transform.up, out surfaceHit, maxGroundDistance, driveableSurface); + } + else isOnGround = false; } private void HandleMovement() { + velocityLocal = vehicleRigidbody.transform.InverseTransformDirection(vehicleRigidbody.velocity); - if (!Object.HasInputAuthority) + if (float.IsNaN(velocityLocal.z) || float.IsInfinity(velocityLocal.z)) { - Debug.LogWarning("Client without InputAuthority is simulating movement — this should not happen!"); + velocityLocal = Vector3.zero; + } + + if (angleDifference > brakeThreshold && velocityLocal.z > 15f) + { + wheelFrictionMaterial.dynamicFriction = 0.01f; } else { + wheelFrictionMaterial.dynamicFriction = _frictionCurve.Evaluate(Mathf.Abs(velocityLocal.x / 100)); + } + + steeringMultiplier = _turnCurve.Evaluate(velocityLocal.magnitude / maxSpeed); - if (Object.HasStateAuthority || Object.HasInputAuthority) - { - velocityLocal = vehicleRigidbody.transform.InverseTransformDirection(vehicleRigidbody.velocity); - } - - // velocityLocal = vehicleRigidbody.transform.InverseTransformDirection(vehicleRigidbody.velocity); - - if (float.IsNaN(velocityLocal.z) || float.IsInfinity(velocityLocal.z)) - { - Debug.LogWarning($"⚠ Detected invalid velocity: {velocityLocal}. Resetting to zero."); - velocityLocal = Vector3.zero; - } - - if (angleDifference > brakeThreshold && velocityLocal.z > 15f) - { - wheelFrictionMaterial.dynamicFriction = 0.01f; - } - else - { - wheelFrictionMaterial.dynamicFriction = _frictionCurve.Evaluate(Mathf.Abs(velocityLocal.x / 100)); - } - - steeringMultiplier = _turnCurve.Evaluate(velocityLocal.magnitude / maxSpeed); - - if (Grounded) - { - steeringSign = Mathf.Sign(velocityLocal.z); - - if (Mathf.Abs(accelerationInput) > 0.1f) - vehicleRigidbody.AddTorque(Vector3.up * (steeringAI * steeringSign * steeringSensitivity * 100f * steeringMultiplier * steeringFactor)); - - if (Mathf.Abs(accelerationInput) > 0.1f) - sphereRigidbody.velocity = Vector3.Lerp(sphereRigidbody.velocity, vehicleRigidbody.transform.forward * (accelerationInput * maxSpeed), accelerationForce / 10f * Time.fixedDeltaTime); - - sphereRigidbody.AddForce(-transform.up * (downforce * sphereRigidbody.mass)); - vehicleRigidbody.MoveRotation( - Quaternion.Slerp( - vehicleRigidbody.rotation, - Quaternion.FromToRotation(vehicleRigidbody.transform.up, surfaceHit.normal) * vehicleRigidbody.transform.rotation, - 0.12f - ) - ); - } - else - { - if (allowAirControl) - vehicleRigidbody.AddTorque(Vector3.up * (steeringAI * steeringSensitivity * 100f * steeringMultiplier * steeringFactor)); - - sphereRigidbody.velocity = Vector3.Lerp( - sphereRigidbody.velocity, - (vehicleRigidbody.transform.forward * (accelerationInput * maxSpeed)) + Vector3.down * (gravityForce * 9.8f), - (accelerationForce / 25f) * Time.deltaTime - ); - } + if (Grounded) + { + steeringSign = Mathf.Sign(velocityLocal.z); + + if (Mathf.Abs(accelerationInput) > 0.1f) + vehicleRigidbody.AddTorque(Vector3.up * (steeringAI * steeringSign * steeringSensitivity * 100f * steeringMultiplier * steeringFactor)); + + if (Mathf.Abs(accelerationInput) > 0.1f) + sphereRigidbody.velocity = Vector3.Lerp(sphereRigidbody.velocity, vehicleRigidbody.transform.forward * (accelerationInput * maxSpeed), accelerationForce / 10f * Time.fixedDeltaTime); + + sphereRigidbody.AddForce(-transform.up * (downforce * sphereRigidbody.mass)); + vehicleRigidbody.MoveRotation( + Quaternion.Slerp( + vehicleRigidbody.rotation, + Quaternion.FromToRotation(vehicleRigidbody.transform.up, surfaceHit.normal) * vehicleRigidbody.transform.rotation, + 0.12f + ) + ); + } + else + { + if (allowAirControl) + vehicleRigidbody.AddTorque(Vector3.up * (steeringAI * steeringSensitivity * 100f * steeringMultiplier * steeringFactor)); + + sphereRigidbody.velocity = Vector3.Lerp( + sphereRigidbody.velocity, + (vehicleRigidbody.transform.forward * (accelerationInput * maxSpeed)) + Vector3.down * (gravityForce * 9.8f), + (accelerationForce / 25f) * Time.deltaTime + ); } } @@ -351,7 +265,6 @@ public class VehicleController : NetworkBehaviour public void ActivateNOS() { ActivateNOS(true); - //nosController._isBoosting = true; } public void ActivateNOS(bool active, float bonusAcceleration = 10f) @@ -365,4 +278,380 @@ public class VehicleController : NetworkBehaviour enabled = true; sphereRigidbody.gameObject.SetActive(true); } + private void OnCollisionEnter(Collision collision) + { + Debug.Log("collision with: " + collision.gameObject.name, collision.gameObject); + } } + + +//using UnityEngine; +//using CnControls; +//using Fusion; + +//public enum SurfaceDetection +//{ +// RayCast, +// SphereCast +//} + +//public class VehicleController : NetworkBehaviour +//{ +// [SerializeField] float currentSpeed = 0f; +// [SerializeField] float steeringAI = 0f; +// [SerializeField] bool isAIControlled = false; +// [SerializeField] SurfaceDetection groundDetection = SurfaceDetection.RayCast; +// [SerializeField] LayerMask driveableSurface = -1; +// [SerializeField] float maxSpeed = 100f; +// [SerializeField] float baseAcceleration = 10f; +// [SerializeField] float steeringSensitivity = 10f; +// [SerializeField] float gravityForce = 9.8f; +// [SerializeField] float downforce = 5f; +// [SerializeField] float brakeThreshold = 30f; +// [SerializeField] float targetStoppingDistance = 5f; +// [SerializeField] bool allowAirControl = false; +// [SerializeField] AnimationCurve _frictionCurve = new AnimationCurve(); +// [SerializeField] AnimationCurve _turnCurve = new AnimationCurve(); + +// [SerializeField, Range(0, 10)] float bodyTiltAmount = 0.5f; +// [SerializeField] Transform carBodyVisual = null; +// [SerializeField, Range(0.1f, 1f)] float skidMarkWidth = 0.25f; +// [SerializeField, Range(0.1f, 10f)] float skidMarkDuration = 5f; +// [SerializeField] Transform wheelFrontLeft = null; +// [SerializeField] Transform wheelFrontRight = null; +// [SerializeField] Transform wheelRearLeft = null; +// [SerializeField] Transform wheelRearRight = null; +// [SerializeField] Transform frontLeftAxle = null; +// [SerializeField] Transform frontRightAxle = null; +// [SerializeField] GameObject speedVisualEffects = null; + +// [SerializeField] Rigidbody sphereRigidbody = null; +// [SerializeField] PhysicMaterial wheelFrictionMaterial = null; +// [SerializeField] Transform cameraFollowTarget = null; + +// private bool isRunning = false; +// private bool isOnGround = false; +// private bool hasTurboBoost = true; +// public bool nosActive = false; + +// private float accelerationInput = 0f; +// private float brakeInput = 0f; +// private float accelerationForce = 0f; +// private float steeringSign = 0f; +// private float inputHorizontal = 0f; +// private float inputVertical = 0f; +// private float wheelRadius = 0f; +// private float desiredTurnAngle = 0f; +// private float distanceToTarget = 0f; +// private float angleDifference = 0f; +// private float maxGroundDistance = 0f; +// private float counterSteerValue = 0f; +// private float steeringMultiplier = 0f; + +// private Vector3 velocityLocal = Vector3.zero; +// private Vector3 forwardDirection = Vector3.zero; +// private Vector3 directionToTarget = Vector3.zero; +// private Vector3 movementDirection = Vector3.zero; + +// private RaycastHit surfaceHit; +// private Rigidbody vehicleRigidbody = null; +// private VehicleTracker targetTracker = null; + +// public bool AIControlled => isAIControlled; +// public bool Running => isRunning; +// public bool Grounded => isOnGround; +// public float SkidWidth => skidMarkWidth; +// public float SkidDuration => skidMarkDuration; +// public float CurrentSpeed => velocityLocal.z; +// public float MaximumSpeed => maxSpeed; +// public bool InputsActive => inputHorizontal != 0 || inputVertical != 0 || nosActive; +// public NOSController nosController; +// internal float SteeringSensitivity +// { +// get => steeringSensitivity; +// set => steeringSensitivity = value; +// } + +// public Vector3 LocalVelocity => velocityLocal; +// public Transform FollowTarget => cameraFollowTarget; +// [Range(0.3f, 1f)] public float steeringFactor = 1f; +// public override void Spawned() +// { +// base.Spawned(); +// InitializeVehicle(); +// bool isLocalPlayer = Object.HasInputAuthority; // true on the runner that owns this object +// bool isHostRunner = Runner.IsServer; // true on the host’s runner +// Debug.Log("Spawned"); +// // if (local && hostRunner) OR (remote && clientRunner) ⇒ this is the host’s car +// if (isLocalPlayer == isHostRunner) +// gameObject.name = "PlayerHost"; +// else +// gameObject.name = "PlayerClient"; +// } + + +// // 1) Fusion will call this every tick to collect local input +// public override void FixedUpdateNetwork() +// { +// if (!isRunning || !RaceCountdownManager.Instance || !RaceCountdownManager.Instance.RaceStarted) +// return; + +// if (!Object.HasInputAuthority) return; +// Debug.Log("HasInputAuthority"); +// if (/*Object.HasInputAuthority &&*/GetInput(out CarNetworkInput data)) +// { +// inputHorizontal = data.Horizontal; +// inputVertical = data.Vertical; +// if (data.NOS) ActivateNOS(); +// } + +// // ✅ Only simulate physics on authoritative runner + +// ApplyControls(); +// CheckGround(); +// HandleMovement(); + +// UpdateVisuals(); // OK on all clients +// } + +// // 2) Fusion runs your simulation here instead of Update/FixedUpdate +// //public override void FixedUpdateNetwork() +// //{ +// // if (!isRunning || !RaceCountdownManager.Instance || !RaceCountdownManager.Instance.RaceStarted) +// // return; + +// // if (!Object.HasInputAuthority) +// // { +// // Debug.Log("🚫 No Input Authority on this player"); +// // return; +// // } + +// // if (Object.HasInputAuthority && GetInput(out CarNetworkInput data)) +// // { +// // inputHorizontal = data.Horizontal; +// // inputVertical = data.Vertical; +// // Debug.Log("inputVertical: " + inputVertical); +// // Debug.Log("inputHorizontal : " + inputHorizontal); +// // if (data.NOS) +// // ActivateNOS(); +// // ApplyControls(); +// // CheckGround(); +// // HandleMovement(); +// // } +// // UpdateVisuals(); +// //} +// private void Awake() +// { +// vehicleRigidbody = GetComponent(); +// targetTracker = GetComponent(); +// wheelRadius = sphereRigidbody.GetComponent().radius; +// nosController = GetComponent(); +// maxGroundDistance = wheelRadius + 0.5f; +// InitializeVehicle(); +// } + +// public void InitializeVehicle() +// { +// isRunning = true; +// if (!isAIControlled) +// accelerationForce = baseAcceleration; +// } + +// public void StopVehicle() +// { +// isRunning = false; +// velocityLocal = Vector3.zero; +// currentSpeed = 0f; +// steeringAI = 0f; +// } + +// //private void Update() +// //{ +// // if (!isRunning) return; +// // UpdateVisuals(); +// // ProcessInputs(); +// // ApplyControls(); +// //} + +// private void ProcessInputs() +// { +// inputVertical = CnInputManager.GetAxis("Vertical"); +// inputHorizontal = CnInputManager.GetAxis("Horizontal"); +// } + +// private void UpdateVisuals() +// { +// counterSteerValue = (Mathf.Abs(velocityLocal.x) > 20f) ? -1f : 1f; + +// if (wheelFrontLeft) wheelFrontLeft.localRotation = Quaternion.Slerp(wheelFrontLeft.localRotation, Quaternion.Euler(0, 45f * counterSteerValue * steeringAI, 0), 0.1f); +// if (wheelFrontRight) wheelFrontRight.localRotation = Quaternion.Slerp(wheelFrontRight.localRotation, Quaternion.Euler(0, 45f * counterSteerValue * steeringAI, 0), 0.1f); + +// frontLeftAxle?.Rotate(Vector3.right * (CurrentSpeed * 0.75f)); +// frontRightAxle?.Rotate(Vector3.right * (CurrentSpeed * 0.75f)); +// wheelRearLeft?.Rotate(Vector3.right * (CurrentSpeed * 0.75f)); +// wheelRearRight?.Rotate(Vector3.right * (CurrentSpeed * 0.75f)); + +// //if (carBodyVisual) +// //{ +// // if (velocityLocal.z > 1) +// // carBodyVisual.localRotation = Quaternion.Slerp(carBodyVisual.localRotation, +// // Quaternion.Euler(Mathf.Lerp(0, -5, velocityLocal.z / maxSpeed), 0, Mathf.Clamp(desiredTurnAngle * steeringAI, -bodyTiltAmount, bodyTiltAmount)), 0.05f); +// // else +// // carBodyVisual.localRotation = Quaternion.Slerp(carBodyVisual.localRotation, Quaternion.identity, 0.05f); +// //} + +// if (speedVisualEffects) +// speedVisualEffects.SetActive(velocityLocal.z > 10); +// } + +// private void ApplyControls() +// { +// Vector3 targetPoint = targetTracker.TargetPos; +// targetPoint.y = transform.position.y; +// directionToTarget = (targetPoint - transform.position).normalized; +// forwardDirection = transform.forward.normalized; + +// desiredTurnAngle = Mathf.Abs(Vector3.Angle(forwardDirection, Vector3.ProjectOnPlane(directionToTarget, transform.up))); +// distanceToTarget = Vector3.Distance(transform.position, targetTracker.TargetPos); +// movementDirection = (targetTracker.TargetPos - transform.position).normalized; +// float alignment = Vector3.Dot(transform.forward, movementDirection); +// angleDifference = Vector3.Angle(transform.forward, movementDirection); + +// brakeInput = 0f; + +// if (distanceToTarget > targetStoppingDistance) +// { +// accelerationInput = alignment > 0f ? inputVertical : (distanceToTarget > 5f ? inputVertical : -1f); +// steeringAI = (Vector3.SignedAngle(transform.forward, movementDirection, Vector3.up) > 0f ? 1f : -1f) +// * _turnCurve.Evaluate(desiredTurnAngle / 160f); +// } +// else +// { +// steeringAI = 0f; +// } + +// if (!isAIControlled) +// steeringAI += inputHorizontal; + +// currentSpeed = Mathf.Round(CurrentSpeed); +// Debug.Log("CurrentSpeed: " + currentSpeed); +// } + +// //private void FixedUpdate() +// //{ +// // if (!isRunning) return; +// // CheckGround(); +// // HandleMovement(); +// //} + +// private void CheckGround() +// { +// isOnGround = true; +// //if (groundDetection == SurfaceDetection.RayCast) +// //{ +// // isOnGround = Physics.Raycast(sphereRigidbody.position, Vector3.down, out surfaceHit, maxGroundDistance, driveableSurface) +// // || Physics.Raycast(sphereRigidbody.position + Vector3.forward * 3f, Vector3.down, out surfaceHit, maxGroundDistance, driveableSurface) +// // || Physics.Raycast(sphereRigidbody.position - Vector3.forward * 3f, Vector3.down, out surfaceHit, maxGroundDistance, driveableSurface); +// //} +// //else if (groundDetection == SurfaceDetection.SphereCast) +// //{ +// // isOnGround = Physics.SphereCast(sphereRigidbody.position + wheelRadius * Vector3.up, wheelRadius + 0.25f, -transform.up, out surfaceHit, maxGroundDistance, driveableSurface); +// //} +// //else isOnGround = false; +// } + +// private void HandleMovement() +// { + +// //if (!Object.HasInputAuthority) +// //{ +// // Debug.LogWarning("Client without InputAuthority is simulating movement — this should not happen!"); +// //} +// //else +// { + +// //if (Object.HasStateAuthority || Object.HasInputAuthority) +// //{ +// // velocityLocal = vehicleRigidbody.transform.InverseTransformDirection(vehicleRigidbody.velocity); +// //} + +// velocityLocal = vehicleRigidbody.transform.InverseTransformDirection(vehicleRigidbody.velocity); + +// if (float.IsNaN(velocityLocal.z) || float.IsInfinity(velocityLocal.z)) +// { +// Debug.LogWarning($"⚠ Detected invalid velocity: {velocityLocal}. Resetting to zero."); +// velocityLocal = Vector3.zero; +// } + +// if (angleDifference > brakeThreshold && velocityLocal.z > 15f) +// { +// wheelFrictionMaterial.dynamicFriction = 0.01f; +// } +// else +// { +// wheelFrictionMaterial.dynamicFriction = _frictionCurve.Evaluate(Mathf.Abs(velocityLocal.x / 100)); +// } + +// steeringMultiplier = _turnCurve.Evaluate(velocityLocal.magnitude / maxSpeed); + +// if (Grounded) +// { +// steeringSign = Mathf.Sign(velocityLocal.z); + +// if (Mathf.Abs(accelerationInput) > 0.1f) +// vehicleRigidbody.AddTorque(Vector3.up * (steeringAI * steeringSign * steeringSensitivity * 100f * steeringMultiplier * steeringFactor)); + +// if (Mathf.Abs(accelerationInput) > 0.1f) +// sphereRigidbody.velocity = Vector3.Lerp(sphereRigidbody.velocity, vehicleRigidbody.transform.forward * (accelerationInput * maxSpeed), accelerationForce / 10f * Time.fixedDeltaTime); + +// sphereRigidbody.AddForce(-transform.up * (downforce * sphereRigidbody.mass)); +// vehicleRigidbody.MoveRotation( +// Quaternion.Slerp( +// vehicleRigidbody.rotation, +// Quaternion.FromToRotation(vehicleRigidbody.transform.up, surfaceHit.normal) * vehicleRigidbody.transform.rotation, +// 0.12f +// ) +// ); +// } +// else +// { +// if (allowAirControl) +// vehicleRigidbody.AddTorque(Vector3.up * (steeringAI * steeringSensitivity * 100f * steeringMultiplier * steeringFactor)); + +// sphereRigidbody.velocity = Vector3.Lerp( +// sphereRigidbody.velocity, +// (vehicleRigidbody.transform.forward * (accelerationInput * maxSpeed)) + Vector3.down * (gravityForce * 9.8f), +// (accelerationForce / 25f) * Time.deltaTime +// ); +// } +// } +// } + +// internal void DisableVehicle() +// { +// enabled = false; +// sphereRigidbody.gameObject.SetActive(false); +// sphereRigidbody.velocity = Vector3.zero; +// sphereRigidbody.Sleep(); +// vehicleRigidbody.velocity = Vector3.zero; +// vehicleRigidbody.Sleep(); +// } + +// public void ActivateNOS() +// { +// ActivateNOS(true); +// //nosController._isBoosting = true; +// } + +// public void ActivateNOS(bool active, float bonusAcceleration = 10f) +// { +// nosActive = active; +// accelerationForce = active ? accelerationForce + bonusAcceleration : baseAcceleration; +// } + +// internal void EnableVehicle() +// { +// enabled = true; +// sphereRigidbody.gameObject.SetActive(true); +// } +//} diff --git a/Assets/Scripts/VehicleTracker.cs b/Assets/Scripts/VehicleTracker.cs index dba76f6..6b90d58 100644 --- a/Assets/Scripts/VehicleTracker.cs +++ b/Assets/Scripts/VehicleTracker.cs @@ -1,8 +1,6 @@ - -using Fusion; -using UnityEngine; +using UnityEngine; -public class VehicleTracker : NetworkBehaviour +public class VehicleTracker : MonoBehaviour { [SerializeField] private float _leadOffset = 5f; [SerializeField] private float _leadMultiplier = 0.1f; @@ -31,57 +29,37 @@ public class VehicleTracker : NetworkBehaviour public WaypointCircuit[] allwaypointCircuits; private float _offsetSwitchTimer; - //private void Start() - //{ - // _linkedController = GetComponent(); - // _targetTracker = new GameObject(name + " Tracker Target").transform; - // _targetTracker.SetParent(transform); - // _targetTracker.localPosition = Vector3.zero; - // _targetTracker.localRotation = Quaternion.identity; - // _distanceTraveled = 0f; - // _offsetTimerRandom = Random.Range(2.5f, 15f); - // _offsetSwitchTimer = _offsetTimerRandom; - // waypointsCircuit=FindFirstObjectByType(); - //} - public override void Spawned() - { - base.Spawned(); - // exactly your old Start() body: + private void Start() + { _linkedController = GetComponent(); _targetTracker = new GameObject(name + " Tracker Target").transform; _targetTracker.SetParent(transform); - _targetTracker.localPosition = Vector3.zero; + _targetTracker.localPosition = new Vector3(0, -0.86f, 0); _targetTracker.localRotation = Quaternion.identity; _distanceTraveled = 0f; _offsetTimerRandom = Random.Range(2.5f, 15f); _offsetSwitchTimer = _offsetTimerRandom; - allwaypointCircuits=FindObjectsOfType(); + allwaypointCircuits = FindObjectsOfType(); for (int i = 0; i < allwaypointCircuits.Length; i++) { - if (allwaypointCircuits[i].accepted==false) + if (allwaypointCircuits[i].accepted == false) { allwaypointCircuits[i].accepted = true; waypointsCircuit = allwaypointCircuits[i]; break; } } - //waypointsCircuit = FindObjectOfType(); } - public override void FixedUpdateNetwork() - { - // only the host/state‐authority should drive the AI & resets - if (!Object.HasStateAuthority) - return; - // copy your old FixedUpdate() ground check + waypoint update: + private void FixedUpdate() + { if (_linkedController == null || !_linkedController.Running) { _isOffTrack = false; } else { - // ground‐detection if (Physics.Raycast(transform.position - Vector3.down, -transform.up, out _surfaceHit, 10f)) _isOffTrack = _surfaceHit.collider.CompareTag("Ground"); else @@ -90,10 +68,9 @@ public class VehicleTracker : NetworkBehaviour UpdateWaypointTracking(); } - // copy your old Update() off‐track logic & side‐offset timer: if (_linkedController.Running && _linkedController.AIControlled) { - _offsetSwitchTimer += Runner.DeltaTime; // use network delta + _offsetSwitchTimer += Time.deltaTime; if (_offsetSwitchTimer >= _offsetTimerRandom) { _offsetSwitchTimer = 0; @@ -103,7 +80,7 @@ public class VehicleTracker : NetworkBehaviour if (_isOffTrack) { - _offTrackTimer += Runner.DeltaTime; + _offTrackTimer += Time.deltaTime; if (_offTrackTimer > 3f) { _isOffTrack = false; @@ -117,56 +94,6 @@ public class VehicleTracker : NetworkBehaviour } } - #region Commented - //private void Update() - //{ - // if (_linkedController.Running && _linkedController.AIControlled) - // { - // _offsetSwitchTimer += Time.deltaTime; - // if (_offsetSwitchTimer >= _offsetTimerRandom) - // { - // _offsetSwitchTimer = 0; - // _sideOffset = 6f * Mathf.Sin(Time.time * Time.deltaTime * _offsetTimerRandom); - // } - // } - - // if (_isOffTrack) - // { - // _offTrackTimer += Time.deltaTime; - // if (_offTrackTimer > 3f) - // { - // _isOffTrack = false; - // _offTrackTimer = 0f; - // ResetToTrack(); - // } - // } - // else - // { - // _offTrackTimer = 0f; - // } - //} - - //private void FixedUpdate() - //{ - // if (_linkedController == null || !_linkedController.Running) - // { - // _isOffTrack = false; - // return; - // } - - // // 👇 Restrict to local player or server - // if (Physics.Raycast(transform.position - Vector3.down, -transform.up, out _surfaceHit, 10f)) - // { - // _isOffTrack = _surfaceHit.collider.CompareTag("Ground"); - // } - // else - // { - // _isOffTrack = false; - // } - - // UpdateWaypointTracking(); - //} - #endregion private void UpdateWaypointTracking() { if (Time.deltaTime > 0f) @@ -192,3 +119,199 @@ public class VehicleTracker : NetworkBehaviour _linkedController.EnableVehicle(); } } + + + +//using Fusion; +//using UnityEngine; + +//public class VehicleTracker : NetworkBehaviour +//{ +// [SerializeField] private float _leadOffset = 5f; +// [SerializeField] private float _leadMultiplier = 0.1f; +// [SerializeField] private float _sideOffset = 0f; + +// private bool _isOffTrack = false; +// private float _offTrackTimer = 0f; + +// private float _trackerSpeed = 0f; +// private float _distanceTraveled = 0f; +// private float _speedLeadOffset = 50f; +// private float _speedLeadMultiplier = 0.2f; +// private float _offsetTimerRandom = 0f; + +// private RaycastHit _surfaceHit; +// private Vector3 _deltaToWaypoint = Vector3.zero; +// private Vector3 _previousPos = Vector3.zero; +// private Vector3 _offsetToTarget = Vector3.zero; +// private RoutePoint _currentWaypoint = new RoutePoint(); +// private Transform _targetTracker = null; +// private VehicleController _linkedController = null; + +// public Vector3 TargetPos => _targetTracker != null ? _targetTracker.position : Vector3.zero; +// private float VehicleSpeed => _linkedController != null ? _linkedController.LocalVelocity.z : 0f; +// public WaypointCircuit waypointsCircuit; +// public WaypointCircuit[] allwaypointCircuits; + +// private float _offsetSwitchTimer; +// //private void Start() +// //{ +// // _linkedController = GetComponent(); +// // _targetTracker = new GameObject(name + " Tracker Target").transform; +// // _targetTracker.SetParent(transform); +// // _targetTracker.localPosition = Vector3.zero; +// // _targetTracker.localRotation = Quaternion.identity; +// // _distanceTraveled = 0f; +// // _offsetTimerRandom = Random.Range(2.5f, 15f); +// // _offsetSwitchTimer = _offsetTimerRandom; +// // waypointsCircuit=FindFirstObjectByType(); +// //} +// public override void Spawned() +// { +// base.Spawned(); + +// // exactly your old Start() body: +// _linkedController = GetComponent(); +// _targetTracker = new GameObject(name + " Tracker Target").transform; +// _targetTracker.SetParent(transform); +// _targetTracker.localPosition = new Vector3(0,-0.86f,0); +// _targetTracker.localRotation = Quaternion.identity; +// _distanceTraveled = 0f; +// _offsetTimerRandom = Random.Range(2.5f, 15f); +// _offsetSwitchTimer = _offsetTimerRandom; +// allwaypointCircuits=FindObjectsOfType(); +// for (int i = 0; i < allwaypointCircuits.Length; i++) +// { +// if (allwaypointCircuits[i].accepted==false) +// { +// allwaypointCircuits[i].accepted = true; +// waypointsCircuit = allwaypointCircuits[i]; +// break; +// } +// } +// //waypointsCircuit = FindObjectOfType(); +// } +// public override void FixedUpdateNetwork() +// { +// // only the host/state‐authority should drive the AI & resets +// if (!Object.HasStateAuthority) +// return; + +// // copy your old FixedUpdate() ground check + waypoint update: +// if (_linkedController == null || !_linkedController.Running) +// { +// _isOffTrack = false; +// } +// else +// { +// // ground‐detection +// if (Physics.Raycast(transform.position - Vector3.down, -transform.up, out _surfaceHit, 10f)) +// _isOffTrack = _surfaceHit.collider.CompareTag("Ground"); +// else +// _isOffTrack = false; + +// UpdateWaypointTracking(); +// } + +// // copy your old Update() off‐track logic & side‐offset timer: +// if (_linkedController.Running && _linkedController.AIControlled) +// { +// _offsetSwitchTimer += Runner.DeltaTime; // use network delta +// if (_offsetSwitchTimer >= _offsetTimerRandom) +// { +// _offsetSwitchTimer = 0; +// _sideOffset = 6f * Mathf.Sin(Time.time * _offsetTimerRandom); +// } +// } + +// if (_isOffTrack) +// { +// _offTrackTimer += Runner.DeltaTime; +// if (_offTrackTimer > 3f) +// { +// _isOffTrack = false; +// _offTrackTimer = 0f; +// ResetToTrack(); +// } +// } +// else +// { +// _offTrackTimer = 0f; +// } +// } + +// #region Commented +// //private void Update() +// //{ +// // if (_linkedController.Running && _linkedController.AIControlled) +// // { +// // _offsetSwitchTimer += Time.deltaTime; +// // if (_offsetSwitchTimer >= _offsetTimerRandom) +// // { +// // _offsetSwitchTimer = 0; +// // _sideOffset = 6f * Mathf.Sin(Time.time * Time.deltaTime * _offsetTimerRandom); +// // } +// // } + +// // if (_isOffTrack) +// // { +// // _offTrackTimer += Time.deltaTime; +// // if (_offTrackTimer > 3f) +// // { +// // _isOffTrack = false; +// // _offTrackTimer = 0f; +// // ResetToTrack(); +// // } +// // } +// // else +// // { +// // _offTrackTimer = 0f; +// // } +// //} + +// //private void FixedUpdate() +// //{ +// // if (_linkedController == null || !_linkedController.Running) +// // { +// // _isOffTrack = false; +// // return; +// // } + +// // // 👇 Restrict to local player or server +// // if (Physics.Raycast(transform.position - Vector3.down, -transform.up, out _surfaceHit, 10f)) +// // { +// // _isOffTrack = _surfaceHit.collider.CompareTag("Ground"); +// // } +// // else +// // { +// // _isOffTrack = false; +// // } + +// // UpdateWaypointTracking(); +// //} +// #endregion +// private void UpdateWaypointTracking() +// { +// if (Time.deltaTime > 0f) +// _trackerSpeed = VehicleSpeed; + +// _targetTracker.position = waypointsCircuit.GetRoutePoint(_distanceTraveled + _leadOffset + _leadMultiplier * _trackerSpeed).position + Vector3.right * _sideOffset; +// _targetTracker.rotation = Quaternion.LookRotation(waypointsCircuit.GetRoutePoint(_distanceTraveled + _speedLeadOffset + _speedLeadMultiplier * _trackerSpeed).direction); + +// _currentWaypoint = waypointsCircuit.GetRoutePoint(_distanceTraveled); +// _deltaToWaypoint = _currentWaypoint.position - transform.position; + +// if (Vector3.Dot(_deltaToWaypoint, _currentWaypoint.direction) < 0f) +// _distanceTraveled += _deltaToWaypoint.magnitude * 0.5f; + +// _previousPos = transform.position; +// } + +// private void ResetToTrack() +// { +// _linkedController.DisableVehicle(); +// transform.position = _targetTracker.position + new Vector3(0, 0.5f, 0); +// transform.rotation = _targetTracker.rotation; +// _linkedController.EnableVehicle(); +// } +//} diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset index 653579b..6129ee7 100644 --- a/ProjectSettings/EditorBuildSettings.asset +++ b/ProjectSettings/EditorBuildSettings.asset @@ -5,7 +5,7 @@ EditorBuildSettings: m_ObjectHideFlags: 0 serializedVersion: 2 m_Scenes: - - enabled: 1 + - enabled: 0 path: Assets/Scenes/Menu.unity guid: 5906ecf9ac800ca43864c639d1817021 - enabled: 1 diff --git a/ProjectSettings/TimeManager.asset b/ProjectSettings/TimeManager.asset index 558a017..bafc18f 100644 --- a/ProjectSettings/TimeManager.asset +++ b/ProjectSettings/TimeManager.asset @@ -3,7 +3,7 @@ --- !u!5 &1 TimeManager: m_ObjectHideFlags: 0 - Fixed Timestep: 0.02 + Fixed Timestep: 0.0166667 Maximum Allowed Timestep: 0.33333334 m_TimeScale: 1 Maximum Particle Timestep: 0.03