diff --git a/TestVelGameServer/Assets/UndoTesting.meta b/TestVelGameServer/Assets/UndoTesting.meta new file mode 100644 index 0000000..fca2fbf --- /dev/null +++ b/TestVelGameServer/Assets/UndoTesting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0aab9bb744d9f254886b4fce417dcd35 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestVelGameServer/Assets/UndoTesting/UndoTesting.unity b/TestVelGameServer/Assets/UndoTesting/UndoTesting.unity new file mode 100644 index 0000000..46ed740 --- /dev/null +++ b/TestVelGameServer/Assets/UndoTesting/UndoTesting.unity @@ -0,0 +1,793 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.5137255, g: 0.53333336, b: 0.5647059, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 652307110} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 112000000, guid: d1b34f106c04378428823df374b0e07c, type: 2} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &268661940 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 268661944} + - component: {fileID: 268661943} + - component: {fileID: 268661942} + - component: {fileID: 268661941} + - component: {fileID: 268661946} + - component: {fileID: 268661945} + - component: {fileID: 268661947} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &268661941 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 268661940} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &268661942 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 268661940} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &268661943 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 268661940} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &268661944 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 268661940} + m_LocalRotation: {x: -0, y: -0.70710343, z: -0, w: 0.7071102} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: -89.999, z: 0} +--- !u!114 &268661945 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 268661940} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3ab6cea605a37144a87766745c28fcc4, type: 3} + m_Name: + m_EditorClassIdentifier: + objects: + - {fileID: 268661946} + maxUndoSteps: 50 +--- !u!114 &268661946 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 268661940} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 49cf8ffbff72f694eb6d543c429729b6, type: 3} + m_Name: + m_EditorClassIdentifier: + networkObject: {fileID: 268661947} + serializationRateHz: 30 + hybridOnChangeCompression: 1 + undoGroup: {fileID: 268661945} +--- !u!114 &268661947 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 268661940} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5515094c5c544b6b8ed7fd51a86548d4, type: 3} + m_Name: + m_EditorClassIdentifier: + ownershipLocked: 0 + networkId: + sceneNetworkId: 100 + prefabName: + isSceneObject: 1 + syncedComponents: + - {fileID: 268661946} +--- !u!1 &284766986 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 284766990} + - component: {fileID: 284766989} + - component: {fileID: 284766988} + - component: {fileID: 284766987} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &284766987 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 284766986} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &284766988 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 284766986} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &284766989 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 284766986} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &284766990 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 284766986} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 435632865} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &435632864 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 435632865} + - component: {fileID: 435632867} + - component: {fileID: 435632866} + m_Layer: 5 + m_Name: README + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &435632865 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 435632864} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 284766990} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -60, y: -60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &435632866 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 435632864} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'This is a minimal sample for VelNet. + + BasicVelNetMan joins a static + room code and spawns a movable player character.' +--- !u!222 &435632867 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 435632864} + m_CullTransparentMesh: 1 +--- !u!1 &440509381 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 440509384} + - component: {fileID: 440509383} + - component: {fileID: 440509382} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &440509382 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 440509381} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &440509383 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 440509381} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &440509384 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 440509381} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &652307109 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 652307111} + - component: {fileID: 652307110} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &652307110 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 652307109} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &652307111 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 652307109} + m_LocalRotation: {x: 0.20336074, y: -0.13662237, z: 0.1672859, w: 0.9549839} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 25.729, y: -12.365, z: 17.037} +--- !u!1 &903768653 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 903768657} + - component: {fileID: 903768656} + - component: {fileID: 903768658} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!20 &903768656 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 903768653} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.2735849, g: 0.2735849, b: 0.2735849, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 40 + orthographic: 1 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &903768657 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 903768653} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -20} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!81 &903768658 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 903768653} + m_Enabled: 1 +--- !u!1 &1099803612 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1099803615} + - component: {fileID: 1099803616} + - component: {fileID: 1099803617} + m_Layer: 0 + m_Name: NetworkManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1099803615 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1099803612} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1099803616 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1099803612} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 233344de094f11341bdb834d564708dc, type: 3} + m_Name: + m_EditorClassIdentifier: + host: velnet-demo.ugavel.com + port: 5000 + udpConnected: 0 + userid: -1 + debugMessages: 1 + autoLogin: 1 + onlyConnectToSameVersion: 1 + connected: 0 + prefabs: + - {fileID: 9102273340480352682, guid: a530707991ae9de48b82ac6c85d69611, type: 3} + sceneObjects: [] + deletedSceneObjects: [] +--- !u!114 &1099803617 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1099803612} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b617a8f3fd4ddee48aeca1947a2ac9c8, type: 3} + m_Name: + m_EditorClassIdentifier: + playerPrefab: {fileID: 6139051692386484099, guid: a530707991ae9de48b82ac6c85d69611, type: 3} diff --git a/TestVelGameServer/Assets/UndoTesting/UndoTesting.unity.meta b/TestVelGameServer/Assets/UndoTesting/UndoTesting.unity.meta new file mode 100644 index 0000000..5959215 --- /dev/null +++ b/TestVelGameServer/Assets/UndoTesting/UndoTesting.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c1e0de07c7c750943b2ac5ba837165ed +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestVelGameServer/Assets/UndoTesting/UndoableObjectTest.cs b/TestVelGameServer/Assets/UndoTesting/UndoableObjectTest.cs new file mode 100644 index 0000000..b599809 --- /dev/null +++ b/TestVelGameServer/Assets/UndoTesting/UndoableObjectTest.cs @@ -0,0 +1,47 @@ +using System.IO; +using UnityEngine; +using VelNet; +using Random = UnityEngine.Random; + +public class UndoableObjectTest : SyncState +{ + public UndoGroup undoGroup; + private Renderer rend; + + private void Start() + { + rend = GetComponent(); + } + + private void Update() + { + if (Input.GetKeyDown(KeyCode.Y)) + { + undoGroup.SaveUndoState(); + Debug.Log($"Saved Undo state. There are {undoGroup.UndoHistoryLength():N0} undo states."); + } + + if (Input.GetKeyDown(KeyCode.U)) + { + undoGroup.Undo(); + Debug.Log($"Undo. There are {undoGroup.UndoHistoryLength():N0} undo states."); + } + + if (Input.GetKeyDown(KeyCode.C)) + { + Debug.Log("Changing color"); + networkObject.TakeOwnership(); + rend.material.color = new Color(Random.Range(0, 1f), Random.Range(0, 1f), Random.Range(0, 1f)); + } + } + + protected override void SendState(BinaryWriter binaryWriter) + { + binaryWriter.Write(rend.material.color); + } + + protected override void ReceiveState(BinaryReader binaryReader) + { + rend.material.color = binaryReader.ReadColor(); + } +} \ No newline at end of file diff --git a/TestVelGameServer/Assets/UndoTesting/UndoableObjectTest.cs.meta b/TestVelGameServer/Assets/UndoTesting/UndoableObjectTest.cs.meta new file mode 100644 index 0000000..7247934 --- /dev/null +++ b/TestVelGameServer/Assets/UndoTesting/UndoableObjectTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 49cf8ffbff72f694eb6d543c429729b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestVelGameServer/Packages/VelNetUnity/Runtime/NetworkObject.cs b/TestVelGameServer/Packages/VelNetUnity/Runtime/NetworkObject.cs index 6bcb3aa..46d1c5b 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Runtime/NetworkObject.cs +++ b/TestVelGameServer/Packages/VelNetUnity/Runtime/NetworkObject.cs @@ -31,6 +31,7 @@ namespace VelNet /// This way objects can be spawned in a static location /// internal bool instantiatedWithTransform = false; + internal Vector3 initialPosition; internal Quaternion initialRotation; diff --git a/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/NetworkSerializedObject.cs b/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/NetworkSerializedObject.cs index 2614c5e..5bb2183 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/NetworkSerializedObject.cs +++ b/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/NetworkSerializedObject.cs @@ -4,6 +4,7 @@ using UnityEngine; namespace VelNet { + [Obsolete("Use SyncState instead.")] public abstract class NetworkSerializedObject : NetworkComponent, IPackState { [Tooltip("Send rate of this object. This caps out at the framerate of the game.")] diff --git a/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/NetworkSerializedObjectStream.cs b/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/NetworkSerializedObjectStream.cs index f87a7f9..f372f6d 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/NetworkSerializedObjectStream.cs +++ b/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/NetworkSerializedObjectStream.cs @@ -1,17 +1,20 @@ using System; using System.Collections; +using System.Collections.Generic; using System.IO; +using System.Linq; using UnityEngine; namespace VelNet { + [Obsolete("Use SyncState instead")] public abstract class NetworkSerializedObjectStream : NetworkComponent, IPackState { [Tooltip("Send rate of this object. This caps out at the framerate of the game.")] public float serializationRateHz = 30; /// - /// If the data hasn't changed, only sends updates across the network at 1Hz + /// If the data hasn't changed, only sends updates across the network at 0.5Hz /// public bool hybridOnChangeCompression = true; @@ -19,7 +22,6 @@ namespace VelNet private double lastSendTime; private const double slowSendInterval = 2; - protected virtual void Awake() { StartCoroutine(SendMessageUpdate()); diff --git a/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/SyncRigidbody.cs b/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/SyncRigidbody.cs index 083ea1b..a7b4e26 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/SyncRigidbody.cs +++ b/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/SyncRigidbody.cs @@ -10,7 +10,7 @@ namespace VelNet /// [AddComponentMenu("VelNet/VelNet Sync Rigidbody")] [RequireComponent(typeof(Rigidbody))] - public class SyncRigidbody : NetworkSerializedObjectStream + public class SyncRigidbody : SyncState { public bool useLocalTransform; public float minPosDelta = .01f; diff --git a/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/SyncState.cs b/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/SyncState.cs new file mode 100644 index 0000000..3a494c8 --- /dev/null +++ b/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/SyncState.cs @@ -0,0 +1,101 @@ +using System; +using System.Collections; +using System.IO; +using UnityEngine; + +namespace VelNet +{ + public abstract class SyncState : NetworkComponent, IPackState + { + [Tooltip("Send rate of this object. This caps out at the framerate of the game.")] + public float serializationRateHz = 30; + + /// + /// If the data hasn't changed, only sends updates across the network at 0.5Hz + /// + public bool hybridOnChangeCompression = true; + + private byte[] lastSentBytes; + private double lastSendTime; + private const double slowSendInterval = 2; + + private MemoryStream writerMemory; + private BinaryWriter writer; + private MemoryStream readerMemory; + private BinaryReader reader; + + protected virtual void Awake() + { + writerMemory = new MemoryStream(); + writer = new BinaryWriter(writerMemory); + readerMemory = new MemoryStream(); + reader = new BinaryReader(readerMemory); + + StartCoroutine(SendMessageUpdate()); + } + + private IEnumerator SendMessageUpdate() + { + while (true) + { + try + { + if (IsMine && enabled) + { + byte[] newBytes = PackState(); + + if (hybridOnChangeCompression) + { + if (Time.timeAsDouble - lastSendTime > slowSendInterval || + !BinaryWriterExtensions.BytesSame(lastSentBytes, newBytes)) + { + SendBytes(newBytes); + lastSendTime = Time.timeAsDouble; + } + } + else + { + SendBytes(newBytes); + lastSendTime = Time.timeAsDouble; + } + + lastSentBytes = newBytes; + } + } + catch (Exception e) + { + Debug.LogError(e); + } + + yield return new WaitForSeconds(1f / serializationRateHz); + } + // ReSharper disable once IteratorNeverReturns + } + + public override void ReceiveBytes(byte[] message) + { + UnpackState(message); + } + + protected abstract void SendState(BinaryWriter binaryWriter); + + protected abstract void ReceiveState(BinaryReader binaryReader); + + public byte[] PackState() + { + writerMemory.Position = 0; + writerMemory.SetLength(0); + SendState(writer); + return writerMemory.ToArray(); + } + + public void UnpackState(byte[] state) + { + readerMemory.Position = 0; + readerMemory.SetLength(0); + readerMemory.Write(state, 0, state.Length); + readerMemory.Position = 0; + ReceiveState(reader); + } + } +} \ No newline at end of file diff --git a/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/SyncState.cs.meta b/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/SyncState.cs.meta new file mode 100644 index 0000000..1762749 --- /dev/null +++ b/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/SyncState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 91bac26baa2fadb4d86aa2ff05c94a2a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/SyncTransform.cs b/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/SyncTransform.cs index 29be722..984a233 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/SyncTransform.cs +++ b/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/SyncTransform.cs @@ -7,7 +7,7 @@ namespace VelNet /// A simple class that will sync the position and rotation of a network object /// [AddComponentMenu("VelNet/VelNet Sync Transform")] - public class SyncTransform : NetworkSerializedObjectStream + public class SyncTransform : SyncState { [Space] public bool position = true; public bool rotation = true; diff --git a/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/UndoGroup.cs b/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/UndoGroup.cs new file mode 100644 index 0000000..a59d0ba --- /dev/null +++ b/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/UndoGroup.cs @@ -0,0 +1,105 @@ +using System.Collections.Generic; +using System.Linq; +using UnityEngine; + +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace VelNet +{ + public class UndoGroup : MonoBehaviour + { + /// + /// This cannot be changed at runtime. + /// + public List objects; + + private readonly List undoBuffer = new List(); + public int maxUndoSteps = 50; + + + /// + /// Reset to the last UndoState. This only takes ownership if the IPackState component is also a NetworkComponent + /// + public void Undo() + { + byte[][] lastStates = undoBuffer.LastOrDefault(); + if (lastStates != null) + { + for (int i = 0; i < objects.Count; i++) + { + objects[i].networkObject.TakeOwnership(); + objects[i].UnpackState(lastStates[i]); + } + } + } + + public void SaveUndoState() + { + byte[][] states = new byte[objects.Count][]; + for (int i = 0; i < objects.Count; i++) + { + states[i] = objects[i].PackState(); + } + + undoBuffer.Add(states); + + while (undoBuffer.Count > maxUndoSteps) + { + undoBuffer.RemoveAt(0); + } + } + + public int UndoHistoryLength() + { + return undoBuffer.Count; + } + } + +#if UNITY_EDITOR + [CustomEditor(typeof(UndoGroup))] + public class UndoGroupEditor : Editor + { + public override void OnInspectorGUI() + { + UndoGroup t = target as UndoGroup; + + EditorGUILayout.Space(); + + if (t == null) return; + + EditorGUILayout.HelpBox("Undo Group. Use SaveUndoState() to make checkpoints.", MessageType.Info); + + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.TextField("Undo Length: ", t.UndoHistoryLength().ToString("N0")); + EditorGUI.EndDisabledGroup(); + EditorGUILayout.Space(); + + if (EditorApplication.isPlaying && GUILayout.Button("Save undo checkpoint now.")) + { + t.SaveUndoState(); + } + + if (GUILayout.Button("Find all undoable components in children.")) + { + SyncState[] components = t.GetComponentsInChildren(); + SerializedObject so = new SerializedObject(t); + SerializedProperty prop = so.FindProperty("objects"); + prop.ClearArray(); + foreach (SyncState comp in components) + { + prop.InsertArrayElementAtIndex(0); + prop.GetArrayElementAtIndex(0).objectReferenceValue = comp; + } + + so.ApplyModifiedProperties(); + } + + EditorGUILayout.Space(); + + DrawDefaultInspector(); + } + } +#endif +} \ No newline at end of file diff --git a/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/UndoGroup.cs.meta b/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/UndoGroup.cs.meta new file mode 100644 index 0000000..d91ff0b --- /dev/null +++ b/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/UndoGroup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3ab6cea605a37144a87766745c28fcc4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples/DissonanceExample/Scripts/PlayerController.cs b/TestVelGameServer/Packages/VelNetUnity/Samples/DissonanceExample/Scripts/PlayerController.cs index 50d7b24..94516a1 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Samples/DissonanceExample/Scripts/PlayerController.cs +++ b/TestVelGameServer/Packages/VelNetUnity/Samples/DissonanceExample/Scripts/PlayerController.cs @@ -6,7 +6,7 @@ using Random = UnityEngine.Random; namespace VelNet { - public class PlayerController : NetworkSerializedObjectStream + public class PlayerController : SyncState { private Renderer rend; public Color color; diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples/DissonanceExample/Scripts/SyncedTextbox.cs b/TestVelGameServer/Packages/VelNetUnity/Samples/DissonanceExample/Scripts/SyncedTextbox.cs index af83c6d..c8b264b 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Samples/DissonanceExample/Scripts/SyncedTextbox.cs +++ b/TestVelGameServer/Packages/VelNetUnity/Samples/DissonanceExample/Scripts/SyncedTextbox.cs @@ -2,7 +2,7 @@ using System.IO; using UnityEngine.UI; using VelNet; -public class SyncedTextbox : NetworkSerializedObjectStream +public class SyncedTextbox : SyncState { public InputField text; diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples/FullExample/Prefabs/PlayerPrefab.prefab b/TestVelGameServer/Packages/VelNetUnity/Samples/FullExample/Prefabs/PlayerPrefab.prefab index fbc90dc..914aad7 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Samples/FullExample/Prefabs/PlayerPrefab.prefab +++ b/TestVelGameServer/Packages/VelNetUnity/Samples/FullExample/Prefabs/PlayerPrefab.prefab @@ -92,9 +92,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 857495161650682534} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 1} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &2597866068570990601 @@ -189,9 +197,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2597866068570990601} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 1} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &6139051692386484099 @@ -294,9 +310,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6139051692386484099} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 1} m_Center: {x: 0, y: 0, z: 0} --- !u!114 &9102273340480352682 @@ -357,6 +381,7 @@ MonoBehaviour: serializationRateHz: 30 hybridOnChangeCompression: 1 color: {r: 0, g: 0, b: 0, a: 0} + spawnableObj: {fileID: 419466048389313174, guid: c0c7ee35b5be203468523c819c9da422, type: 3} --- !u!114 &1674689795532972108 MonoBehaviour: m_ObjectHideFlags: 0 @@ -562,8 +587,16 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7360746642267561319} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 1} m_Center: {x: 0, y: 0, z: 0} diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples/FullExample/Scenes/FullExample.unity b/TestVelGameServer/Packages/VelNetUnity/Samples/FullExample/Scenes/FullExample.unity index 296fc31..25ba695 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Samples/FullExample/Scenes/FullExample.unity +++ b/TestVelGameServer/Packages/VelNetUnity/Samples/FullExample/Scenes/FullExample.unity @@ -104,7 +104,7 @@ NavMeshSettings: serializedVersion: 2 m_ObjectHideFlags: 0 m_BuildSettings: - serializedVersion: 2 + serializedVersion: 3 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 @@ -117,7 +117,7 @@ NavMeshSettings: cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 - accuratePlacement: 0 + buildHeightMesh: 0 maxJobWorkers: 0 preserveTilesOutsideBounds: 0 debug: @@ -585,7 +585,9 @@ Canvas: m_OverrideSorting: 0 m_OverridePixelPerfect: 0 m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 m_SortingLayerID: 0 m_SortingOrder: 0 m_TargetDisplay: 0 @@ -1727,9 +1729,17 @@ Camera: m_projectionMatrixMode: 1 m_GateFitMode: 2 m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 m_SensorSize: {x: 36, y: 24} m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 x: 0 @@ -2589,7 +2599,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 233344de094f11341bdb834d564708dc, type: 3} m_Name: m_EditorClassIdentifier: - host: vn.ugavel.com + host: velnet-demo.ugavel.com port: 5000 udpConnected: 0 userid: -1 diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples/FullExample/Scripts/PlayerController.cs b/TestVelGameServer/Packages/VelNetUnity/Samples/FullExample/Scripts/PlayerController.cs index 530065d..6be3180 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Samples/FullExample/Scripts/PlayerController.cs +++ b/TestVelGameServer/Packages/VelNetUnity/Samples/FullExample/Scripts/PlayerController.cs @@ -6,7 +6,7 @@ using Random = UnityEngine.Random; namespace VelNet { - public class PlayerController : NetworkSerializedObjectStream + public class PlayerController : SyncState { private Renderer rend; public Color color; diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples/FullExample/Scripts/SyncedCustomObj.cs b/TestVelGameServer/Packages/VelNetUnity/Samples/FullExample/Scripts/SyncedCustomObj.cs index c9c43bd..2fb5052 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Samples/FullExample/Scripts/SyncedCustomObj.cs +++ b/TestVelGameServer/Packages/VelNetUnity/Samples/FullExample/Scripts/SyncedCustomObj.cs @@ -4,7 +4,7 @@ using System.IO; using UnityEngine; using VelNet; -public class SyncedCustomObj : NetworkSerializedObjectStream +public class SyncedCustomObj : SyncState { private Renderer rend; private Rigidbody rb; diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples/FullExample/Scripts/SyncedTextbox.cs b/TestVelGameServer/Packages/VelNetUnity/Samples/FullExample/Scripts/SyncedTextbox.cs index af83c6d..c8b264b 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Samples/FullExample/Scripts/SyncedTextbox.cs +++ b/TestVelGameServer/Packages/VelNetUnity/Samples/FullExample/Scripts/SyncedTextbox.cs @@ -2,7 +2,7 @@ using System.IO; using UnityEngine.UI; using VelNet; -public class SyncedTextbox : NetworkSerializedObjectStream +public class SyncedTextbox : SyncState { public InputField text; diff --git a/TestVelGameServer/Packages/VelNetUnity/package.json b/TestVelGameServer/Packages/VelNetUnity/package.json index 9df5034..4923be5 100644 --- a/TestVelGameServer/Packages/VelNetUnity/package.json +++ b/TestVelGameServer/Packages/VelNetUnity/package.json @@ -1,7 +1,7 @@ { "name": "edu.uga.engr.vel.velnet", "displayName": "VelNet", - "version": "1.1.9", + "version": "1.2.0", "unity": "2019.1", "description": "A custom networking library for Unity.", "keywords": [ diff --git a/TestVelGameServer/ProjectSettings/EditorBuildSettings.asset b/TestVelGameServer/ProjectSettings/EditorBuildSettings.asset index 96167ce..de72db6 100644 --- a/TestVelGameServer/ProjectSettings/EditorBuildSettings.asset +++ b/TestVelGameServer/ProjectSettings/EditorBuildSettings.asset @@ -5,10 +5,10 @@ EditorBuildSettings: m_ObjectHideFlags: 0 serializedVersion: 2 m_Scenes: - - enabled: 0 + - enabled: 1 path: Packages/edu.uga.engr.vel.velnet/Samples/FullExample/Scenes/FullExample.unity guid: c4315dc9f7a902b42bd2deb7b7404863 - - enabled: 1 + - enabled: 0 path: Assets/JitterTesting/JitterTesting.unity guid: ba85b9654a57ed3429e96d75dc79c3a5 m_configObjects: {}