version 1.3

This commit is contained in:
2023-01-02 00:08:18 +05:30
parent 8faf4476ed
commit af487ad62d
581 changed files with 145027 additions and 809 deletions

View File

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

View File

@@ -0,0 +1,279 @@
2022/01/29
- General
+ Fixed breaks caused by Mirror update 57x.
- Fast Proximity Checker
+ Mirror changes in 57x prevent this asset from working. Please change to a lower Mirror version. You may also switch over to Fish-Networking; more features, better performance, promised stability, still free.
We have an upgrade to Fish-Networking guide and your subscriber status will carry over into Fish-networking.
https://fish-networking.gitbook.io/docs/
2021/10/23
- General
+ Fixed breaks caused by Mirror update 53x.
2021/09/11
- Flex Network Transform
+ Removed Reliable and Resend Unreliable options. Component now always uses unreliable. This will not affect anyone's project.
+ Can now enable/disable synchronization for properties at runtime. Must be called from the authoritative side. Used by calling fntReference.SetSynchronizePosition ect).
- Flex Network Animator
+ Added sendImmediately parameter to SetTrigger. This is generally not needed but can be useful if you wish to send the trigger as animator parameters are currently rather than what they may be next interval.
2021/07/14
- Flex Network Animator
+ Fixed client authoritative throwing end of stream when a client would send data at irregular intervals to server.
2021/07/08
- Flex Network Animator
- Flex Network Transform
+ Moved a section of code away from using NetworkWriter/Readers. Mirror was unexpectedly trying to use empty Writers previously used in these components causing problems within Mirror.
2021/07/01
- Flex Network Animator
+ Fixed break caused by Mirror update. Method not found WriteBool.
-Flex Network Transform
+ Last release no longer experimental.
+ Fixed extrapolation sometimes not resetting in server authoritative environment.
2021/06/13
- Flex Network Animator
+ Fixed Crossfade API regularly being one animation behind.
+ PlayInFixedTime API actually takes a time argument now; guess no one was using this!
2021/06/09
- All
+ Mirage support officially removed.
+ Suppressed obsolete warnings for NetworkVisibility.
+ Fixed Length errors caused by most recent Mirror changes.
+ Fixed warning spam caused by most recent Mirror changes in addition to NetworkVisibility warnings.
- Flex Network Transform
+ Performance drastically increased, and scales considerably better than any other transform component. Flex Network Transform is over 15 times faster than Network Transform with 200 clients.
+ Extrapolation now works on platforms.
+ Added ForceSendTransform API, allowing you to force transform updates which are guaranteed to replicate accurately on observers. This is useful if you want to send slower updates but ensure certain actions are replicated, such as the peak of a jump or double jumps.
+ Added demo for ForceSendTransform API.
- Flex Network Animator
+ If received client updates become excessive then they are no longer sent in order to observers, now only current values are under this condition.
+ A few extra sanity checks for unusual circumstances. Nothing to see here.
+ Minor performance boost when using client authoritative.
2021/05/17
- Fast Proximity Checker
+ Added some catches for invalid user input.
2021/04/25
- Flex Network Animator
+ Added Crossfade API support.
+ Mirage information removed from README since it's no longer supported at this time.
- Flex Network Transform
+ Mirage information removed from README since it's no longer supported at this time.
2021/04/23
- All
+ Separated required packages.
- Reactive Physics Object
+ Updated API to use latest Fundamental package.
2021/04/20
- Fast Proximity Checker
+ Fixed bug with more recent mirror releases that would cause objects to flicker in and out.
- Reactive Physics Object
+ Fixed bug which could possibly cause jitter while being used for 2D.
2021/04/14
- Fast Proximity Checker
+ Made faster. Mirror's spatial hashing didn't stand a chance.
2021/04/06
- Flex Network Transform
+ Fixed transforms sometimes being out of synchronization until they move again after spawning in while falling at an accelerated rate, while also experiencing very low frames per second.
2021/03/25
- Flex Network Transform
+ Added Smoothing Loop option. Smoothing can now optionally be performed in LateUpdate.
+ Massive performance update. FlexNetworkTransform now has virtually no impact from it's operations. These changes resulted in roughly a 15% performance boost while under load and a 200-300% boost under normal conditions. More refactoring is expected but nothing that would risk stability or need testing.
2021/02/26
- Flex Network Animator
+ Zero garbage collection release! FlexNetworkAnimator is roughly 2X faster than NetworkAnimator now.
+ Bandwidth usage improvements; now uses about 4.5% the bandwidth of NetworkAnimator.
+ Better client authoritative animations, and protections. Like NetworkAnimator, previously animations from clients could be missed if the client sent too many animations too quickly. FlexNetworkAnimator now has protection against excessive animations from clients and ensures proper replication, so long as client isn't abusing the network.
2021/02/05
- Flex Network Transform
+ Zero garbage collection release! Performance improved by a minimum of 17%.
+ Bandwidth usage scales better. 500 objects now use roughly 4% less bandwidth.
+ MirrorNG officially supported again.
- Flex Network Animator
+ Fixed NRE related to compressing large values.
+ Fixed not all cached data being reset when changing animator or controller.
+ MirrorNG officially supported again.
+ Garbage collection is still present in this release; FNA is receiving the same optimizations as FNT next release.
2021/01/29
- Flex Network Transform
+ SetPlatform renamed to SetAttached; SetPlatform marked obsolete.
+ SetAttached can now be used to attach to child objects, such as picking up world objects in your players hand! View READ ME for more information.
2021/01/17
- Flex Network Transform
+ Fixed server not sending updates when running as a server build while using timed interval while having a low tick rate.
2021/01/09
- Improvements
+ Component scripts now have the FirstGearGames icon on them.
- Flex Network Transform
+ Improved tooltip text.
- Flex Network Animator
+ You may now set the animator and controller at runtime. You must manually synchronize these changes.
+ Added README for new API.
2021/01/02
- Flex Network Transform
+ Set maximum MTU to 1200 for manager.
+ No longer experimental!
+ Renamed 'stable' package to 'old'.
- Flex Network Animator
+ Fixed a typo on a file name.
+ Set maximum MTU to 1200 for manager.
2020/12/31
- Flex Network Transform
+ Backported 'precise synchronization' fixes to stable.
- Flex Network Animator
+ Built from the ground up! Previously FlexNetworkAnimator was using code from NetworkAnimator; that is no more! FlexNetworkAnimator now only uses 11-13% the bandwidth of NetworkAnimator and has a scaling 200% FPS gain over NetworkAnimator.
2020/12/24
- Flex Network Transform
+ Fixed transforms not synchronizing when having more than one FlexNetworkTransform on an object, whether it be a child FlexNetworkTransform, or FlexNetworkTransform on a child object.
+ Reduced chances of extrapolation overshooting when using client authoritative movement on poor connections.
+ Added back in sequence checking for unreliable packets when sending from client to server. This was intentionally removed with intentions to be added back in after testing recent changes.
+ Fixed possibility of some packets being ignored when they shouldn't be when synchronizing hundreds of objects.
+ Clients now use recent optimizations when sending to server; in the previous update only server was using the optimizations.
+ Fixed extrapolation regularly overshooting and not properly expiring.
2020/12/18
- Flex Network Transform
+ Made Compress Small Values enabled by default.
+ Massive performance improvements. FlexNetworkTransform does substantially better with bandwidth and frame rate compared to competitors.
- Flex Network Animator
+ Fixed breaks caused by Mirror upgrade.
2020/12/17
- Flex Network Transform
+ Removed precise synchronization option, it's now always on.
+ Reduced bandwidth usage by 10%; more drastic reductions under investigation.
+ Improved performance by 15%.
+ Added Compress Small Values option. When enabled will compress small values to the 100th decimal place; this saves additional bandwidth at the cost of precision.
- Reactive Physics Object
+ Removed precise synchronization option, it's now always on.
2020/12/05
- Flex Network Transform
+ Fixed data sending excessively due to failed transform changes.
+ Unreliable sends can now optionally resend data. True to resend transform data with every unreliable packet. At the cost of bandwidth this will ensure smoother movement on very unstable connections but generally is not needed.
+ Added Favor Performance option while using timed intervals. While true FlexNetworkTransform will favor performance over update frequency. This is ideal when transform updates can be delayed very slightly.
+ More bandwidth saved by limiting who can receive remote actions.
2020/12/01
- Flex Network Transform
+ Platform support improved; transforms previously struggled to stay synchronized with rotating platforms, or very long platforms. Transforms now stay in perfect synchronization under all conditions.
+ More rotation compression; reduced rotation sends by 2 bytes.
2020/11/18
- Flex Network Transform
+ Added the ability to synchronize to networked platforms using FlexNetworkTransform.SetPlatform(platformNetworkIdentity). View FlexNetworkTransform README for more information.
- Flex Network Animator
+ Fixed animations not going back to owner when using Synchronize To Owner.
+ Fixed client authoritative animations not working on client host. (regression from synchronize to owner fix 2020/11/18)
2020/11/01
- Flex Network Transform
+ Transforms are no longer forced into their last properties when synchronization for the property is disabled.
2020/10/29
- Flex Network Transform
+ Fixed server sometimes not sending latest transform data while running as client host, while trading authority on scene objects.
2020/10/07
- Flex Network Transform
+ Added Teleport Threshold. Transform will teleport if threshold value is not 0, and if distance between current position and target position is greater than value.
+ New compression on rotation for better accuracy.
+ FlexNetworkTransform and FlexNetworkTransformChild will now immediately synchronize current transform properties for new clients. This change addresses a bug where FlexNetworkTransformChild would not have correct transform properties if the object has moved prior to the player joining, but not after. This also adds support for using FlexNetworkTransform directly on children objects when the networking solution allows child networked objects.
+ MirrorNG support added. Also the start of allowing support for even more networking platforms.
+ You can now hook into FlexNetworkTransform/Child to validate data received from clients when using Client Authority. See README in FlexNetworkTransform folder.
+ SequenceId is now a uint, resulting in less bandwidth used for UDP/Unreliable.
+ Objects can no longer be moved by clients while server has not yet sent data. This is most commonly seen when a player spawns in and transforms haven't yet changed.
2020/10/01
- Flex Network Animator
+ Initial release.
2020/09/27
- Flex Network Transform
+ Fixed FlexNetworkTransformChild not sending transform properties to late joiners until the child object has moved.
+ Automatic Interpolation and Interpolation strength have been removed. Use Interpolation Fallbehind instead. This is how far the transform will stay behind it's actual position to compensate for packet loss and throttle.
+ Extrapolation is back, and better than ever. Extrapolation Span is how long the transform can extrapolate for when a new packet is expected but does not arrive. This can be combined with a low Interpolation Fallbehind value for near real-time accuracy.
+ Fixed properties sometimes not updating to spectators when server was running as client host, while another client was also client authoritative.
+ Fixed properties sometimes sending even when they have not changed; no visual disturbance could be seen but this was incuring bandwidth cost.
+ Updated inspector to be more helpful.
2020/09/02
- Flex Network Transform:
+ Fixed transforms not moving to a rotation if the change was very small; most commonly seen in 2D games. This was due to Unity incorrectly reporting that rotation values were matching.
+ Fixed extrapolation being applied to a transforms position even when a position update did not occur. This could be seen when rotating or scaling while not moving.
2020/08/27
- Flex Network Transform:
+ Fixed data sending excessively when synchronizing rotation while using world space.
2020/08/23
- Flex Network Transform:
+ Fixed position snapping being applied to scale.
+ Improvements to performance.
2020/08/19
- Flex Network Transform:
+ Minor improvements to extrapolation.
2020/08/09
- Fast Proximity Checker:
+ There is now a `Continuous` option, which is the default behavior. When enabled FastProximityChecker will regularly perform visibility checks. When false visibility checks will only occur on start, and when called manually. This change is useful if you know the object and other objects will always be in range on spawn, such as for a card or board game.
- Flex Network Transform:
+ Can now choose between Interval and FixedUpdate for when data is synchronized.
+ Supports reliable and unreliable synchronization methods. For best results use Unreliable with a UDP transport.
+ Removed ability to disable Enforce Results.
+ Added extrapolation to help predict movement when network traffic becomes unsteady.
+ Added UseLocalSpace. True by default to synchronize using localSpace values. False to use world space. Can be useful if you have a habbit of making child networked objects.
+ PreciseSynchronization is now false by default.
- Reactive Physics Object:
+ Can now choose between Interval and FixedUpdate for when data is synchronized.
+ Supports reliable and unreliable synchronization methods. For best results use Unreliable with a UDP transport.
+ Added PreciseSynchronization. True to synchronize data anytime it has changed. False to allow greater differences before synchronizing. Given that rigidbodies often shift continuously it's recommended to leave this false to not flood the network.
+ Added UseLocalSpace. True by default to synchronize using localSpace values. False to use world space. Can be useful if you have a habbit of making child networked objects.
+ Objects now snap into place when unable to meet synchronization goal after a duration. This effect often goes unnoticed as the difference is minuscule due to floating point imprecisions.
+ Added "AllowTeleport()" method. Calling the method clears the data to synchronize to, until another is received. This can be useful to call before teleporting an object locally, so it doesn't snap back to it's synchronized data. You would also want to move the same on the server.
+ Added "ReduceAggressiveness()" method. This method temporarily reduces how aggressive the gameObject will move towards the last received synchronization data. Ideally you will call this method every time your controller moves your object.
2020/07/26
- Organized files. It's much more clear now what is demo code, and actual content.
- Fixed bug in FastProximityChecker that would sometimes cause objects to not unhide when in range.
2020/07/12
- Reactive Physics Object now automatically determines if a controller or not. You must only set if object is 2D or 3D.
- Flex Network Transform and ReactivePhysicsObject can now synchronize using world space values rather than the default local space. Although not recommended, this can be useful if you need to child a networked object.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,118 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1065620569622945213
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1065620569622945200}
- component: {fileID: 1065620569622945201}
- component: {fileID: 1065620569622945202}
- component: {fileID: 8736983630549506798}
- component: {fileID: 114960909682353454}
m_Layer: 0
m_Name: FastProximityCube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1065620569622945200
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: 0}
m_LocalScale: {x: 0.8, y: 0.8, z: 0.8}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &1065620569622945201
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &1065620569622945202
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 0f782465d6fb9ab42b114f8b8f2eca00, 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
--- !u!114 &8736983630549506798
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3}
m_Name:
m_EditorClassIdentifier:
sceneId: 0
serverOnly: 0
visible: 0
m_AssetId:
hasSpawned: 0
--- !u!114 &114960909682353454
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8f1f9d1ccae3c414fa8d1d0758e1c9e2, type: 3}
m_Name:
m_EditorClassIdentifier:
syncMode: 0
syncInterval: 0.1
_continuous: 1
_localPlayerOnly: 1
_visibilityRange: 20
_forceHidden: 0

View File

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

View File

@@ -0,0 +1,69 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1065620569622945213
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1065620569622945200}
- component: {fileID: 8736983630549506798}
- component: {fileID: 114960909682353454}
m_Layer: 0
m_Name: FastProximityCube_NoRender
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1065620569622945200
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: 0}
m_LocalScale: {x: 0.8, y: 0.8, z: 0.8}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &8736983630549506798
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3}
m_Name:
m_EditorClassIdentifier:
sceneId: 0
serverOnly: 0
visible: 0
m_AssetId:
hasSpawned: 0
--- !u!114 &114960909682353454
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8f1f9d1ccae3c414fa8d1d0758e1c9e2, type: 3}
m_Name:
m_EditorClassIdentifier:
syncMode: 0
syncInterval: 0.1
_continuous: 1
_localPlayerOnly: 1
_visibilityRange: 20
_forceHidden: 0

View File

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

View File

@@ -0,0 +1,153 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1065620569622945213
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1065620569622945200}
- component: {fileID: 1065620569622945201}
- component: {fileID: 1065620569622945202}
- component: {fileID: 8736983630549506798}
- component: {fileID: 114413388656205686}
- component: {fileID: 114936428756952280}
- component: {fileID: 8072949208442424662}
m_Layer: 0
m_Name: Player
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1065620569622945200
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: 0}
m_LocalScale: {x: 3, y: 3, z: 3}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &1065620569622945201
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &1065620569622945202
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: d1e1fda763d09b74689b8c61324658c5, 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
--- !u!114 &8736983630549506798
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3}
m_Name:
m_EditorClassIdentifier:
sceneId: 0
serverOnly: 0
visible: 0
m_AssetId:
hasSpawned: 0
--- !u!114 &114413388656205686
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2f74aedd71d9a4f55b3ce499326d45fb, type: 3}
m_Name:
m_EditorClassIdentifier:
syncMode: 0
syncInterval: 0.1
clientAuthority: 1
localPositionSensitivity: 0.01
localRotationSensitivity: 0.01
localScaleSensitivity: 0.01
--- !u!114 &114936428756952280
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 09ea08209d91d76468cc974041aa16c1, type: 3}
m_Name:
m_EditorClassIdentifier:
syncMode: 0
syncInterval: 0.1
_moveRate: 35
--- !u!114 &8072949208442424662
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8f1f9d1ccae3c414fa8d1d0758e1c9e2, type: 3}
m_Name:
m_EditorClassIdentifier:
syncMode: 0
syncInterval: 0.1
_continuous: 1
_localPlayerOnly: 1
_visibilityRange: 20
_forceHidden: 0

View File

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

View File

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

View File

@@ -0,0 +1,99 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1065620569622945213
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1065620569622945200}
- component: {fileID: 1065620569622945201}
- component: {fileID: 1065620569622945202}
- component: {fileID: 8736983630549506798}
m_Layer: 0
m_Name: InterestManagementCube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1065620569622945200
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: 0}
m_LocalScale: {x: 0.8, y: 0.8, z: 0.8}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &1065620569622945201
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &1065620569622945202
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 0f782465d6fb9ab42b114f8b8f2eca00, 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
--- !u!114 &8736983630549506798
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3}
m_Name:
m_EditorClassIdentifier:
sceneId: 0
serverOnly: 0
visible: 0
m_AssetId:
hasSpawned: 0

View File

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

View File

@@ -0,0 +1,50 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1065620569622945213
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1065620569622945200}
- component: {fileID: 8736983630549506798}
m_Layer: 0
m_Name: InterestManagementCube_NoRender
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1065620569622945200
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: 0}
m_LocalScale: {x: 0.8, y: 0.8, z: 0.8}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &8736983630549506798
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3}
m_Name:
m_EditorClassIdentifier:
sceneId: 0
serverOnly: 0
visible: 0
m_AssetId:
hasSpawned: 0

View File

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

View File

@@ -0,0 +1,134 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &3243040657331239809
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3243040657331239820}
- component: {fileID: 3243040657331239821}
- component: {fileID: 3243040657331239822}
- component: {fileID: 6523534819607411922}
- component: {fileID: 2476480987580594506}
- component: {fileID: 2472500496721920740}
m_Layer: 0
m_Name: InterestManagementPlayer
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3243040657331239820
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3243040657331239809}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: 0}
m_LocalScale: {x: 3, y: 3, z: 3}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &3243040657331239821
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3243040657331239809}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &3243040657331239822
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3243040657331239809}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: d1e1fda763d09b74689b8c61324658c5, 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
--- !u!114 &6523534819607411922
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3243040657331239809}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3}
m_Name:
m_EditorClassIdentifier:
sceneId: 0
serverOnly: 0
visible: 0
m_AssetId:
hasSpawned: 0
--- !u!114 &2476480987580594506
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3243040657331239809}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2f74aedd71d9a4f55b3ce499326d45fb, type: 3}
m_Name:
m_EditorClassIdentifier:
syncMode: 0
syncInterval: 0.1
clientAuthority: 1
localPositionSensitivity: 0.01
localRotationSensitivity: 0.01
localScaleSensitivity: 0.01
--- !u!114 &2472500496721920740
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3243040657331239809}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 09ea08209d91d76468cc974041aa16c1, type: 3}
m_Name:
m_EditorClassIdentifier:
syncMode: 0
syncInterval: 0.1
_moveRate: 35

View File

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

View File

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

View File

@@ -0,0 +1,99 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1065620569622945213
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1065620569622945200}
- component: {fileID: 1065620569622945201}
- component: {fileID: 1065620569622945202}
- component: {fileID: 8736983630549506798}
m_Layer: 0
m_Name: MProximityCube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1065620569622945200
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: 0}
m_LocalScale: {x: 0.8, y: 0.8, z: 0.8}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &1065620569622945201
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &1065620569622945202
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 0f782465d6fb9ab42b114f8b8f2eca00, 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
--- !u!114 &8736983630549506798
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3}
m_Name:
m_EditorClassIdentifier:
sceneId: 0
serverOnly: 0
visible: 0
m_AssetId:
hasSpawned: 0

View File

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

View File

@@ -0,0 +1,50 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1065620569622945213
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1065620569622945200}
- component: {fileID: 8736983630549506798}
m_Layer: 0
m_Name: MProximityCubeNoRender
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1065620569622945200
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: 0}
m_LocalScale: {x: 0.8, y: 0.8, z: 0.8}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &8736983630549506798
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3}
m_Name:
m_EditorClassIdentifier:
sceneId: 0
serverOnly: 0
visible: 0
m_AssetId:
hasSpawned: 0

View File

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

View File

@@ -0,0 +1,134 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &3243040657331239809
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3243040657331239820}
- component: {fileID: 3243040657331239821}
- component: {fileID: 3243040657331239822}
- component: {fileID: 6523534819607411922}
- component: {fileID: 2476480987580594506}
- component: {fileID: 2472500496721920740}
m_Layer: 0
m_Name: MProximityPlayer
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3243040657331239820
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3243040657331239809}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: 0}
m_LocalScale: {x: 3, y: 3, z: 3}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &3243040657331239821
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3243040657331239809}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &3243040657331239822
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3243040657331239809}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: d1e1fda763d09b74689b8c61324658c5, 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
--- !u!114 &6523534819607411922
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3243040657331239809}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3}
m_Name:
m_EditorClassIdentifier:
sceneId: 0
serverOnly: 0
visible: 0
m_AssetId:
hasSpawned: 0
--- !u!114 &2476480987580594506
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3243040657331239809}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2f74aedd71d9a4f55b3ce499326d45fb, type: 3}
m_Name:
m_EditorClassIdentifier:
syncMode: 0
syncInterval: 0.1
clientAuthority: 1
localPositionSensitivity: 0.01
localRotationSensitivity: 0.01
localScaleSensitivity: 0.01
--- !u!114 &2472500496721920740
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3243040657331239809}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 09ea08209d91d76468cc974041aa16c1, type: 3}
m_Name:
m_EditorClassIdentifier:
syncMode: 0
syncInterval: 0.1
_moveRate: 35

View File

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

View File

@@ -0,0 +1,116 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1065620569622945213
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1065620569622945200}
- component: {fileID: 1065620569622945201}
- component: {fileID: 1065620569622945202}
- component: {fileID: 8736983630549506798}
- component: {fileID: 114182890525259188}
m_Layer: 0
m_Name: RegularProximityCube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1065620569622945200
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: 0}
m_LocalScale: {x: 0.8, y: 0.8, z: 0.8}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &1065620569622945201
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &1065620569622945202
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 0f782465d6fb9ab42b114f8b8f2eca00, 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
--- !u!114 &8736983630549506798
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3}
m_Name:
m_EditorClassIdentifier:
sceneId: 0
serverOnly: 0
m_AssetId:
hasSpawned: 0
--- !u!114 &114182890525259188
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1065620569622945213}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1731d8de2d0c84333b08ebe1e79f4118, type: 3}
m_Name:
m_EditorClassIdentifier:
syncMode: 0
syncInterval: 0.1
visRange: 20
visUpdateInterval: 1
forceHidden: 0

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,43 @@
using Mirror;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace FirstGearGames.Mirrors.Assets.NetworkProximities.Demos
{
public class AutoMovePlayer : NetworkBehaviour
{
public float _moveRate = 22f;
private float[] _ranges;
private bool _movingLeft = true;
private void Awake()
{
this.enabled = false;
}
public override void OnStartClient()
{
base.OnStartClient();
_ranges = new float[] { transform.position.z - 50f, transform.position.z + 50f };
this.enabled = true;
}
// Update is called once per frame
void Update()
{
if (!base.hasAuthority)
return;
float x = (_movingLeft) ? _ranges[0] : _ranges[1];
Vector3 goal = new Vector3(x, transform.position.y, transform.position.z);
transform.position = Vector3.MoveTowards(transform.position, goal, _moveRate * Time.deltaTime);
if (transform.position == goal)
_movingLeft = !_movingLeft;
}
}
}

View File

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

View File

@@ -0,0 +1,52 @@
using Mirror;
using UnityEngine;
#pragma warning disable CS0618, CS0672, CS0649
namespace FirstGearGames.Mirrors.Assets.NetworkProximities.Demos
{
public class CubeSpawner : MonoBehaviour
{
[SerializeField]
private bool _networkSpawn = false;
[SerializeField]
private int _spawnCount = 100;
[SerializeField]
private GameObject _rollableCubePrefab;
[SerializeField]
private Vector3 _originArea;
private void Awake()
{
if (!NetworkServer.active && _networkSpawn)
return;
SpawnRollableCubes();
}
private void SpawnRollableCubes()
{
for (int i = 0; i < _spawnCount; i++)
{
Vector3 offset = new Vector3(
Random.Range(-_originArea.x, _originArea.x),
Random.Range(-_originArea.y, _originArea.y),
Random.Range(-_originArea.z, _originArea.z)
);
GameObject result = Instantiate(_rollableCubePrefab, transform.position + offset, Quaternion.identity);
if (_networkSpawn)
NetworkServer.Spawn(result);
}
}
private void OnDrawGizmosSelected()
{
Gizmos.DrawWireCube(transform.position, _originArea);
}
}
}

View File

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

View File

@@ -0,0 +1,29 @@
using Mirror;
using UnityEngine;
namespace FirstGearGames.Mirrors.Assets.NetworkProximities.Demos
{
public class PlayerCubeSpawner : NetworkBehaviour
{
[SerializeField]
private GameObject _playerMovingCube = null;
public override void OnStartLocalPlayer()
{
base.OnStartLocalPlayer();
CmdSpawnMovingCube();
}
[Command]
private void CmdSpawnMovingCube()
{
GameObject obj = Instantiate(_playerMovingCube, new Vector3(0f, 1f, 0f), Quaternion.identity);
NetworkServer.Spawn(obj, base.connectionToClient);
}
}
}

View File

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

View File

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

View File

@@ -0,0 +1,191 @@
using FirstGearGames.Utilities.Maths;
using Mirror;
using System.Collections.Generic;
using UnityEngine;
#pragma warning disable CS0618, CS0672, CS0649
namespace FirstGearGames.Mirrors.Assets.NetworkProximities
{
#if MIRROR_57_0_OR_NEWER
public class FastProximityChecker : MonoBehaviour
{
private void Awake()
{
Debug.LogWarning("Mirror changes in 57x prevent this asset from working. Please change to a lower Mirror version. You may also switch over to Fish-Networking; more features, better performance, promised stability, still free. We have an upgrade to Fish-Networking guide and your subscriber status will carry over into Fish-networking. https://fish-networking.gitbook.io/docs/");
}
}
#else
/// <summary>
/// Component that controls visibility of networked objects for players.
/// <para>Any object with this component on it will not be visible to players more than a (configurable) distance away.</para>
/// </summary>
[RequireComponent(typeof(NetworkIdentity))]
public class FastProximityChecker : NetworkVisibility
{
/// <summary>
/// True to continuously update network visibility. False to only update on creation or when PerformCheck is called.
/// </summary>
[Tooltip("True to continuously update network visibility. False to only update on creation or when PerformCheck is called.")]
[SerializeField]
private bool _continuous = true;
/// <summary>
/// True to only check distance from the localPlayer object. False to compare distance from any player object. False is useful if the player can have authority over multiple objects which need to be affected by proximity checkers.
/// </summary>
[Tooltip("True to only check distance from the localPlayer object. False to compare distance from any player object. False is useful if the player can have authority over multiple objects which need to be affected by proximity checkers.")]
[SerializeField]
private bool _localPlayerOnly = true;
/// <summary>
///
/// </summary>
[Tooltip("The maximum range that objects will be visible at.")]
[SerializeField]
private int _visibilityRange = 10;
/// <summary>
/// The maximum range that objects will be visible at.
/// </summary>
public int VisibilityRange
{
get { return _visibilityRange; }
set
{
_visibilityRange = value;
SquareRange();
}
}
/// <summary>
/// Flag to force this object to be hidden for players.
/// <para>If this object is a player object, it will not be hidden for that player.</para>
/// </summary>
[Tooltip("Enable to force this object to be hidden from players.")]
[SerializeField]
private bool _forceHidden;
/// <summary>
/// Squared value of visibility range.
/// </summary>
private float _squaredVisibilityRange;
private void Awake()
{
SquareRange();
}
private void OnValidate()
{
SquareRange();
}
/// <summary>
/// Squares current visibility range for testing.
/// </summary>
private void SquareRange()
{
_squaredVisibilityRange = (_visibilityRange * _visibilityRange);
}
private void OnEnable()
{
if (_continuous)
ProximityCheckerManager.AddChecker(this);
}
private void OnDisable()
{
if (_continuous)
ProximityCheckerManager.RemoveChecker(this);
}
public void PerformCheck()
{
base.netIdentity.RebuildObservers(false);
}
/// <summary>
/// Called when a new player enters
/// </summary>
/// <param name="newObserver">NetworkConnection of player object</param>
/// <returns>True if object is within visible range</returns>
public override bool OnCheckObserver(NetworkConnection newObserver)
{
if (_forceHidden)
return false;
//Only check against local player object.
if (_localPlayerOnly)
{
return Vectors.FastSqrMagnitude(newObserver.identity.transform.position - transform.position) < _squaredVisibilityRange;
}
//Include all player objects.
else
{
foreach (NetworkIdentity netId in newObserver.clientOwnedObjects)
{
if (Vectors.FastSqrMagnitude(netId.transform.position - transform.position) < _squaredVisibilityRange)
return true;
}
//Fall through, none in range.
return false;
}
}
/// <summary>
/// Called when a new player enters, and when scene changes occur
/// </summary>
/// <param name="observers">List of players to be updated. Modify this set with all the players that can see this object</param>
/// <param name="initial">True if this is the first time the method is called for this object</param>
/// <returns>True if this component calculated the list of observers</returns>
public override void OnRebuildObservers(HashSet<NetworkConnection> observers, bool initial)
{
//If force hidden then return without adding any observers.
if (_forceHidden)
return;
//Cached position of this transform for faster calculations.
Vector3 position = transform.position;
foreach (NetworkConnection conn in NetworkServer.connections.Values)
{
//Connection null, not authenticated, or no identities.
if (conn == null || !conn.isAuthenticated || conn.identity == null)
continue;
//Check only against local player object.
if (_localPlayerOnly)
{
if (Vectors.FastSqrMagnitude(position - conn.identity.transform.position) < _squaredVisibilityRange)
observers.Add(conn);
}
else
{
bool add = false;
foreach (NetworkIdentity netId in conn.clientOwnedObjects)
{
if (Vectors.FastSqrMagnitude(netId.transform.position - transform.position) < _squaredVisibilityRange)
{
add = true;
break;
}
}
//If any objects are in range than add to observers.
if (add)
observers.Add(conn);
}
}
}
/// <summary>
/// Called when hiding and showing objects on the host.
/// On regular clients, objects simply spawn/despawn.
/// On host, objects need to remain in scene because the host is also the server.
/// In that case, we simply hide/show meshes for the host player.
/// </summary>
/// <param name="visible"></param>
public override void OnSetHostVisibility(bool visible)
{
foreach (Renderer rend in GetComponentsInChildren<Renderer>())
rend.enabled = visible;
}
}
#endif
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 8f1f9d1ccae3c414fa8d1d0758e1c9e2
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {fileID: 2800000, guid: 993fb6faa4b6ea9498bc4cbec51f137a, type: 3}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,125 @@
using Mirror;
using System.Collections.Generic;
using UnityEngine;
namespace FirstGearGames.Mirrors.Assets.NetworkProximities
{
#if MIRROR_57_0_OR_NEWER
#else
public class ProximityCheckerManager : MonoBehaviour
{
#region Private.
/// <summary>
/// Singleton reference to this script.
/// </summary>
private static ProximityCheckerManager _instance;
/// <summary>
/// Current active checkers.
/// </summary>
private List<FastProximityChecker> _checkers = new List<FastProximityChecker>();
/// <summary>
/// Index in Checkers to start on next cycle.
/// </summary>
private int _nextCheckerIndex = 0;
#endregion
private void Awake()
{
_instance = this;
}
private void Update()
{
if (!NetworkServer.active)
return;
UpdateCheckers();
}
/// <summary>
/// Initializes this script for use. Should only be completed once.
/// </summary>
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
private static void FirstInitialize()
{
GameObject go = new GameObject();
go.name = "ProximityCheckerManager";
go.AddComponent<ProximityCheckerManager>();
DontDestroyOnLoad(go);
}
/// <summary>
/// Adds a BetterProximityChecker to collection.
/// </summary>
/// <param name="checker"></param>
public static void AddChecker(FastProximityChecker checker)
{
_instance._checkers.Add(checker);
}
/// <summary>
/// Removes a BetterProximityChecker from collection.
/// </summary>
/// <param name="checker"></param>
public static void RemoveChecker(FastProximityChecker checker)
{
int index = _instance._checkers.IndexOf(checker);
if (index != -1)
{
if (index < _instance._nextCheckerIndex)
_instance._nextCheckerIndex--;
_instance._checkers.RemoveAt(index);
}
}
/// <summary>
/// Updates checkers.
/// </summary>
private void UpdateCheckers()
{
int targetFps = 60;
int count = _checkers.Count;
/* Multiply required frames based on connection count. This will
* reduce how quickly observers update slightly but will drastically
* improve performance. */
float fpsMultiplier = 1f + (float)(NetworkServer.connections.Count * 0.01f);
/* Performing one additional iteration would
* likely be quicker than casting two ints
* to a float. */
int iterations = (_checkers.Count / (int)(targetFps * fpsMultiplier)) + 1;
if (iterations > _checkers.Count)
iterations = _checkers.Count;
//Index to perform a check on.
int checkerIndex = 0;
/* Run the number of calculated iterations.
* This is spaced out over frames to prevent
* fps spikes. */
for (int i = 0; i < iterations; i++)
{
checkerIndex = _nextCheckerIndex + i;
if (checkerIndex >= _checkers.Count)
checkerIndex -= _checkers.Count;
/* If still out of bounds something whack is going on.
* Reset index and exit method. Let it sort itself out
* next iteration. */
if (checkerIndex < 0 || checkerIndex >= _checkers.Count)
{
_nextCheckerIndex = 0;
return;
}
_checkers[checkerIndex].PerformCheck();
}
_nextCheckerIndex = (checkerIndex + 1);
}
}
#endif
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,213 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1102 &-6749367018173546296
AnimatorState:
serializedVersion: 5
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Moving
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 6799456424293923274}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Controller
serializedVersion: 5
m_AnimatorParameters:
- m_Name: Jump
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
- m_Name: Horizontal
m_Type: 1
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
- m_Name: Number
m_Type: 3
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
- m_Name: Toggle
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
m_StateMachine: {fileID: 1107882738189483478}
m_Mask: {fileID: 0}
m_Motions: []
m_Behaviours: []
m_BlendingMode: 0
m_SyncedLayerIndex: -1
m_DefaultWeight: 0
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
--- !u!1101 &1101063848773913108
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Jump
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 1102370308286638880}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.15
m_TransitionOffset: 0
m_ExitTime: 0.75
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &1102370308286638880
AnimatorState:
serializedVersion: 5
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Jump
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 1601229681059857519}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 5ff061c1090241a45814232f90911643, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1107 &1107882738189483478
AnimatorStateMachine:
serializedVersion: 5
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Base Layer
m_ChildStates:
- serializedVersion: 1
m_State: {fileID: 1102370308286638880}
m_Position: {x: 550, y: -200, z: 0}
- serializedVersion: 1
m_State: {fileID: -6749367018173546296}
m_Position: {x: 210, y: -200, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions:
- {fileID: 1101063848773913108}
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
m_AnyStatePosition: {x: 570, y: -70, z: 0}
m_EntryPosition: {x: -108, y: -132, z: 0}
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: -6749367018173546296}
--- !u!1101 &1601229681059857519
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -6749367018173546296}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.5
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!206 &6799456424293923274
BlendTree:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Blend Tree
m_Childs:
- serializedVersion: 2
m_Motion: {fileID: 7400000, guid: c4c5d08dcebf23940b0fe2ef09c777d9, type: 2}
m_Threshold: -1
m_Position: {x: 0, y: 0}
m_TimeScale: 1
m_CycleOffset: 0
m_DirectBlendParameter: Blend
m_Mirror: 0
- serializedVersion: 2
m_Motion: {fileID: 7400000, guid: e22fc6d41c53fe54892f226220e7e094, type: 2}
m_Threshold: 0
m_Position: {x: 0, y: 0}
m_TimeScale: 1
m_CycleOffset: 0
m_DirectBlendParameter: Blend
m_Mirror: 0
- serializedVersion: 2
m_Motion: {fileID: 7400000, guid: 08996b1289a7a6d4d81cda6077036336, type: 2}
m_Threshold: 1
m_Position: {x: 0, y: 0}
m_TimeScale: 1
m_CycleOffset: 0
m_DirectBlendParameter: Blend
m_Mirror: 0
m_BlendParameter: Horizontal
m_BlendParameterY: Blend
m_MinThreshold: -1
m_MaxThreshold: 1
m_UseAutomaticThresholds: 1
m_NormalizedBlendValues: 0
m_BlendType: 0

View File

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

View File

@@ -0,0 +1,205 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Idle
serializedVersion: 6
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: {x: 0.25, y: 1.9, z: 0}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 1
value: {x: -0.25, y: 1.9, z: 0}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 2
value: {x: 0.25, y: 1.9, z: 0}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
path: Capsule
m_ScaleCurves: []
m_FloatCurves: []
m_PPtrCurves: []
m_SampleRate: 60
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 232101919
attribute: 1
script: {fileID: 0}
typeID: 4
customType: 0
isPPtrCurve: 0
pptrCurveMapping: []
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 2
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 1
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0.25
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: -0.25
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 2
value: 0.25
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.x
path: Capsule
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1.9
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 1.9
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 2
value: 1.9
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.y
path: Capsule
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 2
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.z
path: Capsule
classID: 4
script: {fileID: 0}
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9f61226e64f05864c93dc45e398c63ea
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,205 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Jump
serializedVersion: 6
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: {x: 0, y: 1.9, z: 0}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 0.25
value: {x: 0, y: 2.62, z: 0}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 0.5
value: {x: 0, y: 1.9, z: 0}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
path: Capsule
m_ScaleCurves: []
m_FloatCurves: []
m_PPtrCurves: []
m_SampleRate: 60
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 232101919
attribute: 1
script: {fileID: 0}
typeID: 4
customType: 0
isPPtrCurve: 0
pptrCurveMapping: []
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 0.5
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 0
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 1
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.25
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.x
path: Capsule
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1.9
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.25
value: 2.62
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: 1.9
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.y
path: Capsule
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.25
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.z
path: Capsule
classID: 4
script: {fileID: 0}
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []

View File

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

View File

@@ -0,0 +1,315 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: MoveLeft
serializedVersion: 6
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: {x: 0, y: 0, z: 0}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 0.5
value: {x: 0, y: 0, z: 90}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
path: Capsule
m_PositionCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: {x: 0, y: 1.9, z: 0}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 0.5
value: {x: -1, y: 1.9, z: 0}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
path: Capsule
m_ScaleCurves: []
m_FloatCurves: []
m_PPtrCurves: []
m_SampleRate: 60
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 232101919
attribute: 1
script: {fileID: 0}
typeID: 4
customType: 0
isPPtrCurve: 0
- serializedVersion: 2
path: 232101919
attribute: 4
script: {fileID: 0}
typeID: 4
customType: 4
isPPtrCurve: 0
pptrCurveMapping: []
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 0.5
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 1
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: localEulerAnglesRaw.x
path: Capsule
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: localEulerAnglesRaw.y
path: Capsule
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: 90
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: localEulerAnglesRaw.z
path: Capsule
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: -1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.x
path: Capsule
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1.9
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: 1.9
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.y
path: Capsule
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.z
path: Capsule
classID: 4
script: {fileID: 0}
m_EulerEditorCurves:
- curve:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalEulerAngles.x
path: Capsule
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalEulerAngles.y
path: Capsule
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalEulerAngles.z
path: Capsule
classID: 4
script: {fileID: 0}
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []

View File

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

View File

@@ -0,0 +1,315 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: MoveRight
serializedVersion: 6
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: {x: 0, y: 0, z: -90}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 0.5
value: {x: 0, y: 0, z: -90}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
path: Capsule
m_PositionCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: {x: 1, y: 1.9, z: 0}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 0.5
value: {x: 1, y: 1.9, z: 0}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
path: Capsule
m_ScaleCurves: []
m_FloatCurves: []
m_PPtrCurves: []
m_SampleRate: 60
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 232101919
attribute: 1
script: {fileID: 0}
typeID: 4
customType: 0
isPPtrCurve: 0
- serializedVersion: 2
path: 232101919
attribute: 4
script: {fileID: 0}
typeID: 4
customType: 4
isPPtrCurve: 0
pptrCurveMapping: []
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 0.5
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 1
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: localEulerAnglesRaw.x
path: Capsule
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: localEulerAnglesRaw.y
path: Capsule
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: -90
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: -90
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: localEulerAnglesRaw.z
path: Capsule
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.x
path: Capsule
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1.9
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: 1.9
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.y
path: Capsule
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.5
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.z
path: Capsule
classID: 4
script: {fileID: 0}
m_EulerEditorCurves:
- curve:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalEulerAngles.x
path: Capsule
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalEulerAngles.y
path: Capsule
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalEulerAngles.z
path: Capsule
classID: 4
script: {fileID: 0}
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []

View File

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

View File

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

View File

@@ -0,0 +1,49 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &7682640446147340251
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7682640446147340255}
- component: {fileID: 7682640446147340253}
m_Layer: 0
m_Name: EmptyPlayer
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7682640446147340255
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &7682640446147340253
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3}
m_Name:
m_EditorClassIdentifier:
sceneId: 0
serverOnly: 0
m_AssetId:
hasSpawned: 0

View File

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

View File

@@ -0,0 +1,253 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &7682640446147340251
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7682640446147340255}
- component: {fileID: 7682640446147340243}
- component: {fileID: 7682640446147340254}
- component: {fileID: 7682640446147340249}
- component: {fileID: 7682640446147340253}
- component: {fileID: 976541736820868359}
- component: {fileID: 2778646375664922418}
- component: {fileID: 4223879541780898663}
m_Layer: 0
m_Name: MovingPlayer
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7682640446147340255
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 7682640447208863941}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!95 &7682640446147340243
Animator:
serializedVersion: 3
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_Avatar: {fileID: 0}
m_Controller: {fileID: 9100000, guid: 0d4eb2bd8bf40fb4daf99f92bc52745a, type: 2}
m_CullingMode: 0
m_UpdateMode: 0
m_ApplyRootMotion: 0
m_LinearVelocityBlending: 0
m_WarningMessage:
m_HasTransformHierarchy: 1
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorControllerStateOnDisable: 0
--- !u!33 &7682640446147340254
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &7682640446147340249
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_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: 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
--- !u!114 &7682640446147340253
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3}
m_Name:
m_EditorClassIdentifier:
sceneId: 0
serverOnly: 0
m_AssetId:
hasSpawned: 0
--- !u!114 &976541736820868359
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ac235920a69784c45bf022fb76e3b2e2, type: 3}
m_Name:
m_EditorClassIdentifier:
syncMode: 0
syncInterval: 0.1
--- !u!114 &2778646375664922418
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e8cac635f24954048aad3a6ff9110beb, type: 3}
m_Name:
m_EditorClassIdentifier:
syncMode: 0
syncInterval: 0.1
_animator: {fileID: 7682640446147340243}
_smoothFloats: 1
_interpolationFallbehind: 0.02
_synchronizeInterval: 0.1
_clientAuthoritative: 1
_synchronizeToOwner: 0
--- !u!114 &4223879541780898663
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2f74aedd71d9a4f55b3ce499326d45fb, type: 3}
m_Name:
m_EditorClassIdentifier:
syncMode: 0
syncInterval: 0.1
clientAuthority: 1
localPositionSensitivity: 0.01
localRotationSensitivity: 0.01
localScaleSensitivity: 0.01
--- !u!1 &7682640447208863940
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7682640447208863941}
- component: {fileID: 7682640447208863992}
- component: {fileID: 7682640447208863995}
m_Layer: 0
m_Name: Capsule
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7682640447208863941
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640447208863940}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1.9, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 7682640446147340255}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &7682640447208863992
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640447208863940}
m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &7682640447208863995
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640447208863940}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_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: 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

View File

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

View File

@@ -0,0 +1,254 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &7682640446147340251
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7682640446147340255}
- component: {fileID: 7682640446147340243}
- component: {fileID: 7682640446147340254}
- component: {fileID: 7682640446147340249}
- component: {fileID: 7682640446147340253}
- component: {fileID: 7682640446147340252}
- component: {fileID: -7367707789507179879}
- component: {fileID: -8869514870144589981}
m_Layer: 0
m_Name: MovingPlayerServerAuth
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7682640446147340255
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 7682640447208863941}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!95 &7682640446147340243
Animator:
serializedVersion: 3
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_Avatar: {fileID: 0}
m_Controller: {fileID: 9100000, guid: 0d4eb2bd8bf40fb4daf99f92bc52745a, type: 2}
m_CullingMode: 0
m_UpdateMode: 0
m_ApplyRootMotion: 0
m_LinearVelocityBlending: 0
m_WarningMessage:
m_HasTransformHierarchy: 1
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorControllerStateOnDisable: 0
--- !u!33 &7682640446147340254
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &7682640446147340249
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_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: 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
--- !u!114 &7682640446147340253
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3}
m_Name:
m_EditorClassIdentifier:
sceneId: 0
serverOnly: 0
m_AssetId:
hasSpawned: 0
--- !u!114 &7682640446147340252
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2f74aedd71d9a4f55b3ce499326d45fb, type: 3}
m_Name:
m_EditorClassIdentifier:
syncMode: 0
syncInterval: 0.1
clientAuthority: 1
localPositionSensitivity: 0.01
localRotationSensitivity: 0.01
localScaleSensitivity: 0.01
--- !u!114 &-7367707789507179879
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 04ae66cdfde392049b94e91a708b1567, type: 3}
m_Name:
m_EditorClassIdentifier:
syncMode: 0
syncInterval: 0.1
PlayLocally: 1
--- !u!114 &-8869514870144589981
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e8cac635f24954048aad3a6ff9110beb, type: 3}
m_Name:
m_EditorClassIdentifier:
syncMode: 0
syncInterval: 0.1
_animator: {fileID: 7682640446147340243}
_smoothFloats: 1
_interpolationFallbehind: 0.02
_synchronizeInterval: 0.1
_clientAuthoritative: 0
_synchronizeToOwner: 0
--- !u!1 &7682640447208863940
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7682640447208863941}
- component: {fileID: 7682640447208863992}
- component: {fileID: 7682640447208863995}
m_Layer: 0
m_Name: Capsule
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7682640447208863941
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640447208863940}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1.9, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 7682640446147340255}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &7682640447208863992
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640447208863940}
m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &7682640447208863995
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640447208863940}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_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: 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

View File

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

View File

@@ -0,0 +1,255 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &7682640446147340251
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7682640446147340255}
- component: {fileID: 7682640446147340243}
- component: {fileID: 7682640446147340254}
- component: {fileID: 7682640446147340249}
- component: {fileID: 7682640446147340253}
- component: {fileID: -3316977609064493184}
- component: {fileID: 5384488513168220043}
- component: {fileID: -8406971463891778367}
m_Layer: 0
m_Name: StressTestObectWithAnimations
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7682640446147340255
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 7682640447208863941}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!95 &7682640446147340243
Animator:
serializedVersion: 3
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_Avatar: {fileID: 0}
m_Controller: {fileID: 9100000, guid: 0d4eb2bd8bf40fb4daf99f92bc52745a, type: 2}
m_CullingMode: 0
m_UpdateMode: 0
m_ApplyRootMotion: 0
m_LinearVelocityBlending: 0
m_WarningMessage:
m_HasTransformHierarchy: 1
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorControllerStateOnDisable: 0
--- !u!33 &7682640446147340254
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &7682640446147340249
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_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: 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
--- !u!114 &7682640446147340253
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3}
m_Name:
m_EditorClassIdentifier:
sceneId: 0
serverOnly: 0
m_AssetId:
hasSpawned: 0
--- !u!114 &-3316977609064493184
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2f74aedd71d9a4f55b3ce499326d45fb, type: 3}
m_Name:
m_EditorClassIdentifier:
syncMode: 0
syncInterval: 0.1
clientAuthority: 1
localPositionSensitivity: 0.01
localRotationSensitivity: 0.01
localScaleSensitivity: 0.01
--- !u!114 &5384488513168220043
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 79c76217bd608484db5eeff528403101, type: 3}
m_Name:
m_EditorClassIdentifier:
syncMode: 0
syncInterval: 0.1
StressIntensity: 0
DoubleParams: 0
--- !u!114 &-8406971463891778367
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e8cac635f24954048aad3a6ff9110beb, type: 3}
m_Name:
m_EditorClassIdentifier:
syncMode: 0
syncInterval: 0.1
_animator: {fileID: 7682640446147340243}
_smoothFloats: 0
_interpolationFallbehind: 0.02
_synchronizeInterval: 0.1
_clientAuthoritative: 0
_synchronizeToOwner: 1
--- !u!1 &7682640447208863940
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7682640447208863941}
- component: {fileID: 7682640447208863992}
- component: {fileID: 7682640447208863995}
m_Layer: 0
m_Name: Capsule
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7682640447208863941
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640447208863940}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1.9, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 7682640446147340255}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &7682640447208863992
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640447208863940}
m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &7682640447208863995
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640447208863940}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_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: 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

View File

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

View File

@@ -0,0 +1,236 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &7682640446147340251
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7682640446147340255}
- component: {fileID: 7682640446147340243}
- component: {fileID: 7682640446147340254}
- component: {fileID: 7682640446147340249}
- component: {fileID: 7682640446147340253}
- component: {fileID: -6690038339517375115}
- component: {fileID: -8157451989536720219}
m_Layer: 0
m_Name: StressTestObject
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7682640446147340255
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 7682640447208863941}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!95 &7682640446147340243
Animator:
serializedVersion: 3
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_Avatar: {fileID: 0}
m_Controller: {fileID: 9100000, guid: 0d4eb2bd8bf40fb4daf99f92bc52745a, type: 2}
m_CullingMode: 0
m_UpdateMode: 0
m_ApplyRootMotion: 0
m_LinearVelocityBlending: 0
m_WarningMessage:
m_HasTransformHierarchy: 1
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorControllerStateOnDisable: 0
--- !u!33 &7682640446147340254
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &7682640446147340249
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 0
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
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: 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
--- !u!114 &7682640446147340253
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3}
m_Name:
m_EditorClassIdentifier:
sceneId: 0
serverOnly: 0
m_AssetId:
hasSpawned: 0
--- !u!114 &-6690038339517375115
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 79c76217bd608484db5eeff528403101, type: 3}
m_Name:
m_EditorClassIdentifier:
syncMode: 0
syncInterval: 0.1
StressIntensity: 1
DoubleParams: 0
--- !u!114 &-8157451989536720219
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640446147340251}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e8cac635f24954048aad3a6ff9110beb, type: 3}
m_Name:
m_EditorClassIdentifier:
syncMode: 0
syncInterval: 0.1
_animator: {fileID: 7682640446147340243}
_smoothFloats: 0
_interpolationFallbehind: 0.02
_synchronizeInterval: 0.1
_clientAuthoritative: 0
_synchronizeToOwner: 0
--- !u!1 &7682640447208863940
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7682640447208863941}
- component: {fileID: 7682640447208863992}
- component: {fileID: 7682640447208863995}
m_Layer: 0
m_Name: Capsule
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7682640447208863941
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640447208863940}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1.9, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 7682640446147340255}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &7682640447208863992
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640447208863940}
m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &7682640447208863995
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7682640447208863940}
m_Enabled: 0
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
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: 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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,70 @@
using FirstGearGames.Mirrors.Assets.FlexNetworkAnimators;
using Mirror;
using UnityEngine;
namespace FirstGearGames.Mirrors.Assets.FNAS.Demos
{
public class AutoMoveBlah : NetworkBehaviour
{
private FlexNetworkAnimator _fna;
private NetworkAnimator _na;
private bool _useFNA;
private Animator _animator;
public bool PlayLocally = true;
private void Awake()
{
_animator = GetComponent<Animator>();
_fna = GetComponent<FlexNetworkAnimator>();
_na = GetComponent<NetworkAnimator>();
_useFNA = (_fna != null);
}
private void Update()
{
if (base.hasAuthority)
{
float horizontal = Input.GetAxis("Horizontal");
float moveRate = 1f;
transform.position += new Vector3(horizontal, 0f, 0f) * moveRate * Time.deltaTime;
if (PlayLocally)
_animator.SetFloat("Horizontal", horizontal);
CmdUpdateHorizontal(horizontal);
if (Input.GetKeyDown(KeyCode.Space))
{
CmdJump();
if (PlayLocally)
{
if (_useFNA)
_fna.SetTrigger("Jump");
else
_na.SetTrigger("Jump");
}
}
}
}
[Command]
private void CmdJump()
{
if (_useFNA)
_fna.SetTrigger("Jump");
else
_na.SetTrigger("Jump");
}
[Command]
private void CmdUpdateHorizontal(float horizontal)
{
_animator.SetFloat("Horizontal", horizontal);
}
}
}

View File

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

View File

@@ -0,0 +1,51 @@
using FirstGearGames.Mirrors.Assets.FlexNetworkAnimators;
using Mirror;
using System.Collections;
using UnityEngine;
namespace FirstGearGames.Mirrors.Assets.FNAS.Demos
{
public class AutoMoveBlending : NetworkBehaviour
{
private Animator _animator;
private float _center;
public override void OnStartServer()
{
base.OnStartServer();
_animator = GetComponent<Animator>();
_center = transform.position.x;
StartCoroutine(__Move());
}
private IEnumerator __Move()
{
WaitForEndOfFrame endOfFrame = new WaitForEndOfFrame();
float right = _center + 2f;
float left = _center - 2f;
bool goRight = true;
float horizontal = 0f;
float moveRate = 2f;
while (true)
{
float xGoal = (goRight) ? right : left;
transform.position = Vector3.MoveTowards(transform.position, new Vector3(xGoal, transform.position.y, transform.position.z), moveRate * Time.deltaTime);
horizontal = Mathf.MoveTowards(horizontal, Mathf.Sign(xGoal), moveRate * Time.deltaTime);
_animator.SetFloat("Horizontal", horizontal);
if (transform.position.x == xGoal)
goRight = !goRight;
yield return endOfFrame;
}
}
}
}

View File

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

View File

@@ -0,0 +1,53 @@
using Mirror;
using UnityEngine;
namespace FirstGearGames.Mirrors.Assets.FlexNetworkAnimators.Demos
{
public class MoveAndAnimate : NetworkBehaviour
{
private FlexNetworkAnimator _fna;
private Animator _animator;
private void Awake()
{
_animator = GetComponent<Animator>();
_fna = GetComponent<FlexNetworkAnimator>();
}
private void Update()
{
if (base.hasAuthority)
{
//Move.
float horizontal = Input.GetAxis("Horizontal");
float moveRate = 1f;
transform.position += new Vector3(horizontal, 0f, 0f) * moveRate * Time.deltaTime;
//Animator.
_animator.SetFloat("Horizontal", horizontal);
if (Input.GetKeyDown(KeyCode.Space))
{
_fna.SetTrigger("Jump");
_fna.Play("Jump");
}
}
}
private void ChangeAnimatorThingy()
{
Animator anim = null;
RuntimeAnimatorController con = null;
_fna.SetAnimator(anim);
_fna.SetController(con);
}
}
}

View File

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

View File

@@ -0,0 +1,70 @@
using FirstGearGames.Mirrors.Assets.FlexNetworkAnimators;
using Mirror;
using UnityEngine;
namespace FirstGearGames.Mirrors.Assets.FNAS.Demos
{
public class MoveAndAnimateServerAuth : NetworkBehaviour
{
private FlexNetworkAnimator _fna;
private NetworkAnimator _na;
private bool _useFNA;
private Animator _animator;
public bool PlayLocally = true;
private void Awake()
{
_animator = GetComponent<Animator>();
_fna = GetComponent<FlexNetworkAnimator>();
_na = GetComponent<NetworkAnimator>();
_useFNA = (_fna != null);
}
private void Update()
{
if (base.hasAuthority)
{
float horizontal = Input.GetAxis("Horizontal");
float moveRate = 1f;
transform.position += new Vector3(horizontal, 0f, 0f) * moveRate * Time.deltaTime;
if (PlayLocally)
_animator.SetFloat("Horizontal", horizontal);
CmdUpdateHorizontal(horizontal);
if (Input.GetKeyDown(KeyCode.Space))
{
CmdJump();
if (PlayLocally)
{
if (_useFNA)
_fna.SetTrigger("Jump");
else
_na.SetTrigger("Jump");
}
}
}
}
[Command]
private void CmdJump()
{
if (_useFNA)
_fna.SetTrigger("Jump");
else
_na.SetTrigger("Jump");
}
[Command]
private void CmdUpdateHorizontal(float horizontal)
{
_animator.SetFloat("Horizontal", horizontal);
}
}
}

View File

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

View File

@@ -0,0 +1,15 @@
FlexNetworkAnimator
API
=====================================
public void SetAnimator(Animator animator)
Sets which animator to use. You must call this with the appropriate animator on all clients and server. This change is not automatically synchronized.
public void SetController(RuntimeAnimatorController controller)
Sets which controller to use. You must call this with the appropriate controller on all clients and server. This change is not automatically synchronized.
public void SetTrigger() //All variants of Unity API.
Sets a trigger on the animator and sends it over the network.
public void Play() //All variants of Unity API.
Plays a state.
public void Crossfad() //All variants of Unity API.
Creates a crossfade from the current state to any other state.

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,202 @@
using FirstGearGames.Utilities.Networks;
using Mirror;
#pragma warning disable CS0618, CS0672
namespace FirstGearGames.Mirrors.Assets.FlexNetworkAnimators
{
public static class Compressions
{
/// <summary>
/// Compression levels for data.
/// </summary>
public enum CompressionLevels : byte
{
//No compression.
None = 0,
//Data can fit into a byte.
Level1Positive = 1,
Level1Negative = 2,
//Data can fit into a short.
Level2Positive = 3,
Level2Negative = 4
}
#region WriteCompressed.
/// <summary>
/// Writes a compressed uint.
/// </summary>
/// <param name="writer"></param>
/// <param name="value"></param>
public static void WriteCompressedUInt(NetworkWriter writer, uint value)
{
//Fits in a byte.
if (value <= byte.MaxValue)
{
writer.WriteByte((byte)CompressionLevels.Level1Positive);
writer.WriteByte((byte)value);
}
//Fits in a ushort
else if (value <= ushort.MaxValue)
{
writer.WriteByte((byte)CompressionLevels.Level2Positive);
writer.WriteUInt16((ushort)value);
}
//Cannot compress.
else
{
writer.WriteByte((byte)CompressionLevels.None);
writer.WriteUInt32(value);
}
}
/// <summary>
/// Writes a compressed int.
/// </summary>
/// <param name="writer"></param>
/// <param name="value"></param>
public static void WriteCompressedInt(NetworkWriter writer, int value)
{
int absolute = (value >= 0) ? value : value * -1;
bool positive = (value >= 0);
//Fits in a byte.
if (absolute <= byte.MaxValue)
{
if (positive)
writer.WriteByte((byte)CompressionLevels.Level1Positive);
else
writer.WriteByte((byte)CompressionLevels.Level1Negative);
writer.WriteByte((byte)absolute);
}
//Fits in a ushort
else if (absolute <= ushort.MaxValue)
{
if (positive)
writer.WriteByte((byte)CompressionLevels.Level2Positive);
else
writer.WriteByte((byte)CompressionLevels.Level2Negative);
writer.WriteUInt16((ushort)absolute);
}
//Cannot compress.
else
{
writer.WriteByte((byte)CompressionLevels.None);
writer.WriteInt32(value);
}
}
/// <summary>
/// Writes a compressed float.
/// </summary>
/// <param name="writer"></param>
/// <param name="value"></param>
public static void WriteCompressedFloat(NetworkWriter writer, float value)
{
float multiplier = 100f;
float maxByteValue = (byte.MaxValue - 1) / multiplier;
float maxUShortValue = (ushort.MaxValue - 1) / multiplier;
bool positive = (value >= 0);
float absolute = (value >= 0f) ? value : value * -1f;
//Fits in a byte.
if (absolute <= maxByteValue)
{
if (positive)
writer.WriteByte((byte)CompressionLevels.Level1Positive);
else
writer.WriteByte((byte)CompressionLevels.Level1Negative);
writer.WriteByte((byte)(absolute * multiplier));
}
//Fits in a ushort
else if (absolute < maxUShortValue)
{
if (positive)
writer.WriteByte((byte)CompressionLevels.Level2Positive);
else
writer.WriteByte((byte)CompressionLevels.Level2Negative);
writer.WriteUInt16((ushort)(absolute * multiplier));
}
//Cannot compress.
else
{
writer.WriteByte((byte)CompressionLevels.None);
writer.WriteSingle(value);
}
}
#endregion
#region ReadCompressed.
/// <summary>
/// Reads a compressed UInt.
/// </summary>
public static uint ReadCompressedUInt(NetworkReader reader)
{
CompressionLevels cl = (CompressionLevels)reader.ReadByte();
//Compressed into byte.
if (cl == CompressionLevels.Level1Positive)
return reader.ReadByte();
//Compressed into ushort.
else if (cl == CompressionLevels.Level2Positive)
return reader.ReadUInt16();
//Not compressed.
else
return reader.ReadUInt32();
}
/// <summary>
/// Reads a compressed int.
/// </summary>
public static int ReadCompressedInt(NetworkReader reader)
{
CompressionLevels cl = (CompressionLevels)reader.ReadByte();
//Compressed into positive byte.
if (cl == CompressionLevels.Level1Positive)
return reader.ReadByte();
//Compressed into negative byte.
else if (cl == CompressionLevels.Level1Negative)
return -reader.ReadByte();
//Compressed into positive short.
if (cl == CompressionLevels.Level2Positive)
return reader.ReadUInt16();
//Compressed into negative short.
else if (cl == CompressionLevels.Level2Negative)
return -reader.ReadUInt16();
//Not compressed.
else
return reader.ReadInt32();
}
/// <summary>
/// Reads a compressed float.
/// </summary>
public static float ReadCompressedFloat(NetworkReader reader)
{
CompressionLevels cl = (CompressionLevels)reader.ReadByte();
float divisor = 100f;
//Compressed into positive byte.
if (cl == CompressionLevels.Level1Positive)
return reader.ReadByte() / divisor;
//Compressed into negative byte.
else if (cl == CompressionLevels.Level1Negative)
return -reader.ReadByte() / divisor;
//Compressed into positive short.
if (cl == CompressionLevels.Level2Positive)
return reader.ReadUInt16() / divisor;
//Compressed into negative short.
else if (cl == CompressionLevels.Level2Negative)
return -reader.ReadUInt16() / divisor;
//Not compressed.
else
return reader.ReadSingle();
}
#endregion
}
}

View File

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

View File

@@ -0,0 +1,394 @@
using FirstGearGames.Utilities.Networks;
using Mirror;
using System;
using System.Collections.Generic;
using UnityEngine;
namespace FirstGearGames.Mirrors.Assets.FlexNetworkAnimators
{
[System.Serializable]
public struct AnimatorUpdateMessage : NetworkMessage
{
public ArraySegment<byte> Data;
}
public class FlexNetworkAnimatorManager : MonoBehaviour
{
#region Serialized
private NetworkManager _networkManager = null;
/// <summary>
/// Current NetworkManager.
/// </summary>
public NetworkManager CurrentNetworkManager { get { return _networkManager; } }
/// <summary>
/// True to make this gameObject dont destroy on load. True is recommended if your NetworkManager is also dont destroy on load.
/// </summary>
private bool _dontDestroyOnLoad = true;
#endregion
#region Private.
/// <summary>
/// Active FlexNetworkTransform components.
/// </summary>
private static List<FlexNetworkAnimator> _activeFlexNetworkAnimators = new List<FlexNetworkAnimator>();
/// <summary>
/// Reliable datas to send to all.
/// </summary>
private static List<ArraySegment<byte>> _toAllReliableAnimatorUpdate = new List<ArraySegment<byte>>();
/// <summary>
/// Reliable datas to send send to server.
/// </summary>
private static List<ArraySegment<byte>> _toServerReliableAnimatorUpdate = new List<ArraySegment<byte>>();
/// <summary>
/// Reliable datas sent to specific observers.
/// </summary>
private static Dictionary<NetworkConnection, List<ArraySegment<byte>>> _observerReliableAnimatorUpdate = new Dictionary<NetworkConnection, List<ArraySegment<byte>>>();
/// <summary>
/// Last NetworkClient.active state.
/// </summary>
private bool _lastClientActive = false;
/// <summary>
/// Last NetworkServer.active state.
/// </summary>
private bool _lastServerActive = false;
/// <summary>
/// How much data can be bundled per reliable message.
/// </summary>
private int _reliableMTU = -1;
/// <summary>
/// How much data can be bundled per unreliable message.
/// </summary>
private int _unreliableMTU = -1;
/// <summary>
/// Used to prevent GC with GetComponents.
/// </summary>
private List<FlexNetworkAnimator> _getComponents = new List<FlexNetworkAnimator>();
/// <summary>
/// Singleton of this script. Used to ensure script is not loaded more than once. This will change for NG once custom message subscriptions are supported.
/// </summary>
private static FlexNetworkAnimatorManager _instance;
/// <summary>
/// Buffer to send outgoing data. Segments will always be 1200 or less.
/// </summary>
private byte[] _writerBuffer = new byte[1200];
#endregion
#region Const.
/// <summary>
/// Maximum packet size by default. This is used when packet size is unknown.
/// </summary>
private const int MAXIMUM_PACKET_SIZE = 1200;
/// <summary>
/// Guestimated amount of how much MTU will be needed to send one transform on any transport. This will likely never be a problem but just incase.
/// </summary>
private const int MINIMUM_MTU_REQUIREMENT = 150;
#endregion
#if MIRROR
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
private static void MirrorFirstInitialize()
{
GameObject go = new GameObject();
go.name = "FlexNetworkAnimatorManager";
go.AddComponent<FlexNetworkAnimatorManager>();
}
#endif
private void Awake()
{
FirstInitialize();
}
/// <summary>
/// Initializes script for use. Should only be completed once.
/// </summary>
private void FirstInitialize()
{
if (_instance != null)
{
Debug.LogError("Multiple FlexNetworkAnimatorManager instances found. This new instance will be destroyed.");
Destroy(this);
return;
}
_instance = this;
if (_dontDestroyOnLoad)
DontDestroyOnLoad(gameObject);
}
private void Update()
{
#if MIRROR
CheckRegisterHandlers();
#endif
//Run updates on FlexNetworkTransforms.
for (int i = 0; i < _activeFlexNetworkAnimators.Count; i++)
_activeFlexNetworkAnimators[i].ManualUpdate();
//Send any queued messages.
SendMessages();
}
/// <summary>
/// Registers handlers for the client.
/// </summary>
private void CheckRegisterHandlers()
{
bool ncActive = Platforms.ReturnClientActive(CurrentNetworkManager);
bool nsActive = Platforms.ReturnServerActive(CurrentNetworkManager);
bool changed = (_lastClientActive != ncActive || _lastServerActive != nsActive);
//If wasn't active previously but is now then get handlers again.
if (changed && ncActive)
NetworkReplaceHandlers(true);
if (changed && nsActive)
NetworkReplaceHandlers(false);
_lastClientActive = ncActive;
_lastServerActive = nsActive;
}
/// <summary>
/// Adds to ActiveFlexNetworkTransforms.
/// </summary>
/// <param name="FNA"></param>
public static void AddToActive(FlexNetworkAnimator fna)
{
_activeFlexNetworkAnimators.Add(fna);
}
/// <summary>
/// Removes from ActiveFlexNetworkTransforms.
/// </summary>
/// <param name="FNA"></param>
public static void RemoveFromActive(FlexNetworkAnimator FNA)
{
_activeFlexNetworkAnimators.Remove(FNA);
}
/// <summary>
/// Sends data to server.
/// </summary>
/// <param name="data"></param>
/// <param name="reliable"></param>
public static void SendToServer(ArraySegment<byte> data)
{
_toServerReliableAnimatorUpdate.Add(data);
}
/// <summary>
/// Sends data to all.
/// </summary>
/// <param name="data"></param>
/// <param name="reliable"></param>
public static void SendToAll(ArraySegment<byte> data)
{
_toAllReliableAnimatorUpdate.Add(data);
}
/// <summary>
/// Sends data to observers.
/// </summary>
/// <param name="conn"></param>
/// <param name="data"></param>
/// <param name="reliable"></param>
public static void SendToObserver(NetworkConnection conn, ArraySegment<byte> data)
{
List<ArraySegment<byte>> datas;
//If doesn't have datas for connection yet then make new datas.
if (!_observerReliableAnimatorUpdate.TryGetValue(conn, out datas))
{
datas = new List<ArraySegment<byte>>();
_observerReliableAnimatorUpdate[conn] = datas;
}
datas.Add(data);
}
/// <summary>
/// Sends queued messages.
/// </summary>
private void SendMessages()
{
//If MTUs haven't been set yet.
if (_reliableMTU == -1 || _unreliableMTU == -1)
Platforms.SetMTU(ref _reliableMTU, ref _unreliableMTU, MAXIMUM_PACKET_SIZE);
//Server.
if (Platforms.ReturnServerActive(CurrentNetworkManager))
{
//Reliable to all.
SendAnimatorUpdates(false, null, _toAllReliableAnimatorUpdate, true);
//Reliable to observers.
foreach (KeyValuePair<NetworkConnection, List<ArraySegment<byte>>> item in _observerReliableAnimatorUpdate)
{
//Null or unready network connection.
if (item.Key == null || !item.Key.IsReady())
continue;
SendAnimatorUpdates(false, item.Key, item.Value, true);
}
}
//Client.
if (Platforms.ReturnClientActive(CurrentNetworkManager))
{
//Reliable to server.
SendAnimatorUpdates(true, null, _toServerReliableAnimatorUpdate, true);
}
_toServerReliableAnimatorUpdate.Clear();
_toAllReliableAnimatorUpdate.Clear();
_observerReliableAnimatorUpdate.Clear();
}
/// <summary>
/// Sends data to all or specified connection.
/// </summary>
/// <param name="conn"></param>
/// <param name="datas"></param>
/// <param name="reliable"></param>
private void SendAnimatorUpdates(bool toServer, NetworkConnection conn, List<ArraySegment<byte>> datas, bool reliable)
{
int index = 0;
int channel = (reliable) ? 0 : 1;
int mtu = (reliable) ? _reliableMTU : _unreliableMTU;
mtu -= 75;
#if UNITY_EDITOR
if (mtu < MINIMUM_MTU_REQUIREMENT)
Debug.LogWarning("MTU is dangerously low on channel " + channel + ". Data may not send properly.");
#endif
while (index < datas.Count)
{
int writerPosition = 0;
//Write until break or all data is written.
while (writerPosition < mtu && index < datas.Count)
{
ArraySegment<byte> data = datas[index];
int dataCount = data.Count;
//If will fit into the packet.
if (dataCount + writerPosition <= mtu)
{
Array.Copy(data.Array, 0, _writerBuffer, writerPosition, dataCount);
writerPosition += dataCount;
index++;
}
else
{
break;
}
}
AnimatorUpdateMessage msg = new AnimatorUpdateMessage()
{
Data = new ArraySegment<byte>(_writerBuffer, 0, writerPosition)
};
if (toServer)
{
Platforms.ClientSend(CurrentNetworkManager, msg, channel);
}
else
{
//If no connection then send to all.
if (conn == null)
Platforms.ServerSendToAll(CurrentNetworkManager, msg, channel);
//Otherwise send to connection.
else
conn.Send(msg, channel);
}
}
}
/// <summary>
/// Received on clients when server sends data.
/// </summary>
/// <param name="msg"></param>
private void OnServerAnimatorUpdate(AnimatorUpdateMessage msg)
{
AnimatorUpdateMessageReceived(msg, true);
}
/// <summary>
/// Received on server when client sends data.
/// </summary>
/// <param name="msg"></param>
private void OnClientAnimatorUpdate(AnimatorUpdateMessage msg)
{
AnimatorUpdateMessageReceived(msg, false);
}
/// <summary>
/// Called when an AnimatorUpdateMessage is received.
/// </summary>
/// <param name="msg"></param>
/// <param name="receivedOnClient"></param>
private void AnimatorUpdateMessageReceived(AnimatorUpdateMessage msg, bool receivedOnClient)
{
int readPosition = 0;
while (readPosition < msg.Data.Count)
{
AnimatorUpdate au = new AnimatorUpdate();
Serialization.DeserializeAnimatorUpdate(ref au, ref readPosition, msg.Data);
/* Initially I tried caching the getcomponent calls but the performance difference
* couldn't be registered. At this time it's not worth creating the extra complexity
* for what might be a 1% fps difference. */
if (Platforms.ReturnSpawned(CurrentNetworkManager).TryGetValue(au.NetworkIdentity, out NetworkIdentity ni))
{
FlexNetworkAnimator fna = ReturnFNAOnNetworkIdentity(ni, au.ComponentIndex);
if (fna != null)
{
if (receivedOnClient)
fna.ServerDataReceived(ref au);
else
fna.ClientDataReceived(ref au);
}
}
}
}
/// <summary>
/// Returns a FlexNetworkTransformBase on a networkIdentity using a componentIndex.
/// </summary>
/// <param name="componentIndex"></param>
/// <returns></returns>
private FlexNetworkAnimator ReturnFNAOnNetworkIdentity(NetworkIdentity ni, byte componentIndex)
{
NetworkBehaviour nb = Lookups.ReturnNetworkBehaviour(ni, componentIndex);
if (nb == null)
return null;
nb.GetComponents<FlexNetworkAnimator>(_getComponents);
/* Now find the FNA which matches the component index. There is probably only one FNA
* but if the user could have more so it's important to get all FNA
* on the object. */
for (int i = 0; i < _getComponents.Count; i++)
{
//Match found.
if (_getComponents[i].CachedComponentIndex == componentIndex)
return _getComponents[i];
}
/* If here then the component index was found but the FNA with the component index
* was not. This should never happen. */
Debug.LogWarning("ComponentIndex found but FlexNetworkAnimator was not.");
return null;
}
/// <summary>
/// Replaces handlers.
/// </summary>
/// <param name="client">True to replace for client.</param>
private void NetworkReplaceHandlers(bool client)
{
if (client)
NetworkClient.ReplaceHandler<AnimatorUpdateMessage>(OnServerAnimatorUpdate);
else
NetworkServer.ReplaceHandler<AnimatorUpdateMessage>(OnClientAnimatorUpdate);
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e8fc0453f283eff41bcc9f96cb884faa
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {fileID: 2800000, guid: 993fb6faa4b6ea9498bc4cbec51f137a, type: 3}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,108 @@
using System.Collections.Generic;
public struct ParameterUpdates
{
public List<LayerWeightUpdate> LayerWeights;
public List<SpeedUpdate> Speeds;
public List<LayerStateUpdate> LayerStates;
public List<BooleanUpdate> Bools;
public List<FloatUpdate> Floats;
public List<IntUpdate> Ints;
public List<TriggerUpdate> Triggers;
public void MakeNewList()
{
LayerWeights = new List<LayerWeightUpdate>() { new LayerWeightUpdate() };
Speeds = new List<SpeedUpdate>() { new SpeedUpdate() };
LayerStates = new List<LayerStateUpdate>() { new LayerStateUpdate() };
Bools = new List<BooleanUpdate>() { new BooleanUpdate() };
Floats = new List<FloatUpdate>() { new FloatUpdate() };
Ints = new List<IntUpdate>() { new IntUpdate() };
Triggers = new List<TriggerUpdate>() { new TriggerUpdate() };
}
}
public struct LayerWeightUpdate
{
public byte Layer;
public float Weight;
public LayerWeightUpdate(byte layer, float weight)
{
Layer = layer;
Weight = weight;
}
}
public struct SpeedUpdate
{
public float Speed;
public SpeedUpdate(float speed)
{
Speed = speed;
}
}
public struct LayerStateUpdate
{
public byte Layer;
public int Hash;
public float Time;
public LayerStateUpdate(byte layer, int hash, float time)
{
Layer = layer;
Hash = hash;
Time = time;
}
}
public struct BooleanUpdate
{
public byte ParameterIndex;
public bool Value;
public BooleanUpdate(byte parameterIndex, bool value)
{
ParameterIndex = parameterIndex;
Value = value;
}
}
public struct FloatUpdate
{
public byte ParameterIndex;
public float Value;
public FloatUpdate(byte parameterIndex, float value)
{
ParameterIndex = parameterIndex;
Value = value;
}
}
public struct IntUpdate
{
public byte ParameterIndex;
public int Value;
public IntUpdate(byte parameterIndex, int value)
{
ParameterIndex = parameterIndex;
Value = value;
}
}
public struct TriggerUpdate
{
public byte ParameterIndex;
public bool Set;
public TriggerUpdate(byte parameterIndex, bool set)
{
ParameterIndex = parameterIndex;
Set = set;
}
}

View File

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

View File

@@ -0,0 +1,54 @@
using Mirror;
using System;
namespace FirstGearGames.Mirrors.Assets.FlexNetworkAnimators
{
public static class Serialization
{
public static PooledNetworkWriter SerializeAnimatorUpdate(AnimatorUpdate au)
{
using (PooledNetworkWriter writer = (PooledNetworkWriter)NetworkWriterPool.GetWriter())
{
//NetworkIdentity.
Compressions.WriteCompressedUInt(writer, au.NetworkIdentity);
//ComponentIndex.
writer.WriteByte(au.ComponentIndex);
//Data.
Compressions.WriteCompressedInt(writer, au.Data.Count);
if (au.Data.Array.Length > 0)
writer.WriteBytes(au.Data.Array, 0, au.Data.Count);
return writer;
}
}
public static void DeserializeAnimatorUpdate(ref AnimatorUpdate au, ref int readPosition, ArraySegment<byte> data)
{
using (PooledNetworkReader reader = (PooledNetworkReader)NetworkReaderPool.GetReader(data))
{
reader.Position = readPosition;
//NetworkIdentity.
au.NetworkIdentity = Compressions.ReadCompressedUInt(reader);
//ComponentIndex.
au.ComponentIndex = reader.ReadByte();
//Data.
int dataLength = Compressions.ReadCompressedInt(reader);
if (dataLength > 0)
au.Data = reader.ReadBytesSegment(dataLength);
readPosition = reader.Position;
}
}
}
}

View File

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

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