diff --git a/.idea/.idea.MP-TD-repo/.idea/.gitignore b/.idea/.idea.MP-TD-repo/.idea/.gitignore new file mode 100644 index 0000000..eaff193 --- /dev/null +++ b/.idea/.idea.MP-TD-repo/.idea/.gitignore @@ -0,0 +1,13 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Rider ignored files +/contentModel.xml +/.idea.MP-TD-repo.iml +/modules.xml +/projectSettingsUpdater.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/.idea.MP-TD-repo/.idea/indexLayout.xml b/.idea/.idea.MP-TD-repo/.idea/indexLayout.xml new file mode 100644 index 0000000..7b08163 --- /dev/null +++ b/.idea/.idea.MP-TD-repo/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/.idea.MP-TD-repo/.idea/vcs.xml b/.idea/.idea.MP-TD-repo/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/.idea.MP-TD-repo/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Assets/Prefabs/CharacterPrefab.prefab b/Assets/Prefabs/CharacterPrefab.prefab index 5b262d7..f1681af 100644 --- a/Assets/Prefabs/CharacterPrefab.prefab +++ b/Assets/Prefabs/CharacterPrefab.prefab @@ -15,6 +15,7 @@ GameObject: - component: {fileID: 8700726934599842024} - component: {fileID: 1854736588908238760} - component: {fileID: 3403150522591491636} + - component: {fileID: 742358034037228598} m_Layer: 0 m_Name: CharacterPrefab m_TagString: Untagged @@ -34,7 +35,8 @@ Transform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 2348594743945901555} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!136 &6060867110873050882 @@ -84,12 +86,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7c79d771cedb4794bf100ce60df5f764, type: 3} m_Name: m_EditorClassIdentifier: - DefaultGhostMode: 0 + DefaultGhostMode: 1 SupportedGhostModes: 3 OptimizationMode: 0 - Importance: 1 + Importance: 1000 prefabId: - HasOwner: 0 + HasOwner: 1 SupportAutoCommandTarget: 1 TrackInterpolationDelay: 0 GhostGroup: 0 @@ -161,3 +163,116 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 544609009a6605d44a92eca2ad0145ad, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!54 &742358034037228598 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1555240849038293811} + serializedVersion: 4 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &5307440377108821305 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2348594743945901555} + - component: {fileID: 2119331458662122770} + - component: {fileID: 4415356237060297836} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2348594743945901555 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5307440377108821305} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.391, z: 0.419} + m_LocalScale: {x: 0.6016427, y: 0.2015024, z: 0.1763629} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1555240849038293810} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2119331458662122770 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5307440377108821305} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &4415356237060297836 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5307440377108821305} + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} diff --git a/Assets/Samples/Character Controller/1.2.4/Standard Characters/Common/Materials/SimpleMaterial_White.mat b/Assets/Samples/Character Controller/1.2.4/Standard Characters/Common/Materials/SimpleMaterial_White.mat index 7802c55..1b114ee 100644 --- a/Assets/Samples/Character Controller/1.2.4/Standard Characters/Common/Materials/SimpleMaterial_White.mat +++ b/Assets/Samples/Character Controller/1.2.4/Standard Characters/Common/Materials/SimpleMaterial_White.mat @@ -16,12 +16,12 @@ MonoBehaviour: --- !u!21 &2100000 Material: serializedVersion: 8 - m_ObjectHideFlags: 0 + m_ObjectHideFlags: 32 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: SimpleMaterial_White - m_Shader: {fileID: -6465566751694194690, guid: 2d40c85a2e8955d4ea370f6fd8c48a34, type: 3} + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 m_ValidKeywords: [] @@ -30,7 +30,8 @@ Material: m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 - stringTagMap: {} + stringTagMap: + RenderType: Opaque disabledShaderPasses: - MOTIONVECTORS m_LockedProperties: @@ -96,8 +97,11 @@ Material: m_Ints: [] m_Floats: - Vector1_3962d271a12b44169f6af5da4a6b1eae: 0.5 + - _AddPrecomputedVelocity: 0 - _AlphaClip: 0 + - _AlphaToMask: 0 - _Blend: 0 + - _BlendModePreserveSpecular: 1 - _BumpScale: 1 - _ClearCoatMask: 0 - _ClearCoatSmoothness: 0 @@ -106,6 +110,7 @@ Material: - _DetailAlbedoMapScale: 1 - _DetailNormalMapScale: 1 - _DstBlend: 0 + - _DstBlendAlpha: 0 - _EnvironmentReflections: 1 - _GlossMapScale: 0 - _Glossiness: 0 @@ -120,6 +125,7 @@ Material: - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 + - _SrcBlendAlpha: 1 - _Surface: 0 - _WorkflowMode: 1 - _ZWrite: 1 diff --git a/Assets/SceneDependencyCache/5aa1dc99cce5354e87e505b951e71c72.sceneWithBuildSettings b/Assets/SceneDependencyCache/5aa1dc99cce5354e87e505b951e71c72.sceneWithBuildSettings new file mode 100644 index 0000000..f237d0d Binary files /dev/null and b/Assets/SceneDependencyCache/5aa1dc99cce5354e87e505b951e71c72.sceneWithBuildSettings differ diff --git a/Assets/SceneDependencyCache/5aa1dc99cce5354e87e505b951e71c72.sceneWithBuildSettings.meta b/Assets/SceneDependencyCache/5aa1dc99cce5354e87e505b951e71c72.sceneWithBuildSettings.meta new file mode 100644 index 0000000..473a4c1 --- /dev/null +++ b/Assets/SceneDependencyCache/5aa1dc99cce5354e87e505b951e71c72.sceneWithBuildSettings.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5aa1dc99cce5354e87e505b951e71c72 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/LobbyScene.unity b/Assets/Scenes/LobbyScene.unity index f36ad06..509f5f8 100644 --- a/Assets/Scenes/LobbyScene.unity +++ b/Assets/Scenes/LobbyScene.unity @@ -494,7 +494,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0.000024508086} m_SizeDelta: {x: 0, y: 300} m_Pivot: {x: 0, y: 1} --- !u!1 &526636516 @@ -800,6 +800,51 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 677145224} m_CullTransparentMesh: 1 +--- !u!1 &792633462 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 792633464} + - component: {fileID: 792633463} + m_Layer: 0 + m_Name: Bootstrapper + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &792633463 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 792633462} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6d22fe1802f646eeb96208b5b2315fd6, type: 3} + m_Name: + m_EditorClassIdentifier: + ForceAutomaticBootstrapInScene: 0 +--- !u!4 &792633464 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 792633462} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 6.9057565, y: 4.3522143, z: -5.1578074} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &847906850 GameObject: m_ObjectHideFlags: 0 @@ -992,116 +1037,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1096722170} m_CullTransparentMesh: 1 ---- !u!1 &1155844015 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1155844019} - - component: {fileID: 1155844018} - - component: {fileID: 1155844017} - - component: {fileID: 1155844016} - m_Layer: 0 - m_Name: Capsule - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!136 &1155844016 -CapsuleCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1155844015} - 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 - m_Radius: 0.5 - m_Height: 2 - m_Direction: 1 - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &1155844017 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1155844015} - 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_RayTracingAccelStructBuildFlagsOverride: 0 - m_RayTracingAccelStructBuildFlags: 1 - m_SmallMeshCulling: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!33 &1155844018 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1155844015} - m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1155844019 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1155844015} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 5, y: 1, z: -3.1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1195820793 GameObject: m_ObjectHideFlags: 0 @@ -1782,4 +1717,4 @@ SceneRoots: - {fileID: 640224008} - {fileID: 847906853} - {fileID: 515533932} - - {fileID: 1155844019} + - {fileID: 792633464} diff --git a/Assets/Scenes/TD_Scene.unity b/Assets/Scenes/TD_Scene.unity index f96b17b..79e4e26 100644 --- a/Assets/Scenes/TD_Scene.unity +++ b/Assets/Scenes/TD_Scene.unity @@ -206,13 +206,13 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 330585543} serializedVersion: 2 - m_LocalRotation: {x: 0.2588191, y: 0, z: 0, w: 0.9659258} - m_LocalPosition: {x: 0, y: 6.19, z: -8.58} + m_LocalRotation: {x: 0, y: 0.9659258, z: -0.2588191, w: 0} + m_LocalPosition: {x: 0, y: 4, z: 8.5} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 30, y: 0, z: 0} + m_LocalEulerAnglesHint: {x: 30, y: 180, z: 0} --- !u!114 &330585547 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Client/ClientRequestGameEntrySystem.cs b/Assets/Scripts/Client/ClientRequestGameEntrySystem.cs index 6cb8a26..3469345 100644 --- a/Assets/Scripts/Client/ClientRequestGameEntrySystem.cs +++ b/Assets/Scripts/Client/ClientRequestGameEntrySystem.cs @@ -11,7 +11,6 @@ namespace Client { private EntityQuery _pendingNetworkIdQuery; - [BurstCompile] public void OnCreate(ref SystemState state) { //Get all entities connected to the server (having networkID), but not in game yet (no NetworkStreamInGame) @@ -23,42 +22,36 @@ namespace Client state.RequireForUpdate(); } - [BurstCompile] public void OnUpdate(ref SystemState state) { //Get Requested team and all network ids that want to join + var teamrequest = SystemAPI.GetSingleton(); var ecb = new EntityCommandBuffer(Allocator.Temp); - var requestedTeam = SystemAPI.GetSingleton().Value; - var requestedColor = SystemAPI.GetSingleton().Color; var pendingNetworkIds = _pendingNetworkIdQuery.ToEntityArray(Allocator.Temp); foreach (var pendingNetworkId in pendingNetworkIds) { //mark network ID as joined in game - it will receive Snapshots ecb.AddComponent(pendingNetworkId); + + //create entity that holds request var requestTeamEntity = ecb.CreateEntity(); //Give entity Rpc command request and team request so that the server can handle it ecb.AddComponent(requestTeamEntity, new TdTeamRequest { - Value = requestedTeam, - Color = requestedColor + Value = teamrequest.Value, + Color = teamrequest.Color }); ecb.AddComponent(requestTeamEntity, new SendRpcCommandRequest() { TargetConnection = pendingNetworkId }); - - //Broadcast Rpc - ecb.Playback(state.EntityManager); } - } - - [BurstCompile] - public void OnDestroy(ref SystemState state) - { - + + //Broadcast Rpc + ecb.Playback(state.EntityManager); } } } diff --git a/Assets/Scripts/Client/ClientTeamRequest.cs b/Assets/Scripts/Client/ClientTeamRequest.cs index 87faf0e..380d349 100644 --- a/Assets/Scripts/Client/ClientTeamRequest.cs +++ b/Assets/Scripts/Client/ClientTeamRequest.cs @@ -6,7 +6,7 @@ namespace Client { public struct ClientTeamRequest : IComponentData { - public TeamType Value; - public Color Color; + public TeamType Value; + public Color Color; } } \ No newline at end of file diff --git a/Assets/Scripts/Common/CharacterAuthoring.cs b/Assets/Scripts/Common/CharacterAuthoring.cs index af98a15..3ab66eb 100644 --- a/Assets/Scripts/Common/CharacterAuthoring.cs +++ b/Assets/Scripts/Common/CharacterAuthoring.cs @@ -1,4 +1,6 @@ +using System.Linq.Expressions; using Unity.Entities; +using Unity.Rendering; using UnityEngine; namespace Common @@ -13,6 +15,8 @@ namespace Common AddComponent(entity); AddComponent(entity); AddComponent(entity); + + AddComponent(entity); } } } diff --git a/Assets/Scripts/Common/CharacterComponents.cs b/Assets/Scripts/Common/CharacterComponents.cs index e0d5160..83de9b9 100644 --- a/Assets/Scripts/Common/CharacterComponents.cs +++ b/Assets/Scripts/Common/CharacterComponents.cs @@ -1,16 +1,16 @@ using Unity.Entities; using Unity.NetCode; +using UnityEngine; namespace Common { - public struct CharacterTag : IComponentData - { - - } + public struct CharacterTag : IComponentData { } - public struct NewCharacterTag : IComponentData + public struct NewCharacterTag : IComponentData { } + + public struct CharacterConfig : IComponentData { - + [GhostField] public Color Color; } public struct TdTeam : IComponentData diff --git a/Assets/Scripts/Common/InitializeCharacterSystem.cs b/Assets/Scripts/Common/InitializeCharacterSystem.cs index 5e33e10..2fa688a 100644 --- a/Assets/Scripts/Common/InitializeCharacterSystem.cs +++ b/Assets/Scripts/Common/InitializeCharacterSystem.cs @@ -1,23 +1,43 @@ using Unity.Burst; +using Unity.Collections; using Unity.Entities; +using Unity.Mathematics; +using Unity.Physics; +using Unity.Rendering; +using UnityEngine; +using UnityEngine.Rendering; -partial struct InitializeCharacterSystem : ISystem +namespace Common { - [BurstCompile] - public void OnCreate(ref SystemState state) + [UpdateInGroup(typeof(SimulationSystemGroup), OrderFirst = true)] + [WorldSystemFilter(WorldSystemFilterFlags.ServerSimulation | WorldSystemFilterFlags.ClientSimulation)] + public partial struct InitializeCharacterSystem : ISystem { - - } + public void OnCreate(ref SystemState state) + { + } - [BurstCompile] - public void OnUpdate(ref SystemState state) - { - - } + public void OnUpdate(ref SystemState state) + { + var ecb = new EntityCommandBuffer(Allocator.Temp); + foreach (var (physicsMass, config, newCharacterEntity) in SystemAPI.Query, RefRO>().WithAny().WithEntityAccess()) + { + physicsMass.ValueRW.InverseInertia[0] = 0; + physicsMass.ValueRW.InverseInertia[1] = 0; + physicsMass.ValueRW.InverseInertia[2] = 0; - [BurstCompile] - public void OnDestroy(ref SystemState state) - { + var requestedColor = config.ValueRO.Color; + var color = new float4(requestedColor.r, requestedColor.g, requestedColor.b, requestedColor.a); + ecb.AddComponent(newCharacterEntity, new URPMaterialPropertyBaseColor{Value = color}); + ecb.RemoveComponent(newCharacterEntity); + } + + ecb.Playback(state.EntityManager); + } + + public void OnDestroy(ref SystemState state) + { + } } } diff --git a/Assets/Scripts/Common/TDPrefabsAuthoring.cs b/Assets/Scripts/Common/TDPrefabsAuthoring.cs index ba7e215..085c06e 100644 --- a/Assets/Scripts/Common/TDPrefabsAuthoring.cs +++ b/Assets/Scripts/Common/TDPrefabsAuthoring.cs @@ -3,7 +3,7 @@ using UnityEngine; namespace Common { - class TDPrefabsAuthoring : MonoBehaviour + public class TDPrefabsAuthoring : MonoBehaviour { // public GameObject PrefabController; public GameObject PrefabCharacter; diff --git a/Assets/Scripts/Server/ServerProcessGameEntryRequestSystem.cs b/Assets/Scripts/Server/ServerProcessGameEntryRequestSystem.cs index 1649732..314ff78 100644 --- a/Assets/Scripts/Server/ServerProcessGameEntryRequestSystem.cs +++ b/Assets/Scripts/Server/ServerProcessGameEntryRequestSystem.cs @@ -1,5 +1,6 @@ using Common; using RpcComponents; +using Unity.Burst; using Unity.Collections; using Unity.Entities; using Unity.Mathematics; @@ -15,14 +16,15 @@ namespace Server { public void OnCreate(ref SystemState state) { + state.RequireForUpdate(); var builder = new EntityQueryBuilder(Allocator.Temp).WithAll(); state.RequireForUpdate(state.GetEntityQuery(builder)); - state.RequireForUpdate(); } + public void OnUpdate(ref SystemState state) { - var ecb = new EntityCommandBuffer(Allocator.Temp); + var ecb = new EntityCommandBuffer(Allocator.Temp); var characterPrefab = SystemAPI.GetSingleton().Character; foreach (var (teamRequest, requestSource, requestEntity) in SystemAPI.Query().WithEntityAccess()) @@ -35,20 +37,37 @@ namespace Server var requestedTeam = teamRequest.Value; var requestedColor = teamRequest.Color; - var clientId = SystemAPI.GetComponent(requestSource.SourceConnection).Value; + - Debug.Log($"Server is assigning ClientId {clientId} to team {requestedTeam}"); + float3 spawnPosition = float3.zero; - var newCharacter = ecb.Instantiate(characterPrefab); - var spawnPosition = new float3(0f, 1f, 0f); - var newTransform = LocalTransform.FromPosition(spawnPosition); + var clientId = SystemAPI.GetComponent(requestSource.SourceConnection).Value; + switch (clientId) + { + case 1: + spawnPosition = new float3(0f, 1f, 0f); + break; + case 2: + spawnPosition = new float3(2f, 1f, 0f); + break; + } - ecb.SetComponent(newCharacter, newTransform); + Debug.Log($"Server is assigning ClientId {clientId} to team {requestedTeam}"); + + var newCharacter = ecb.Instantiate(characterPrefab); ecb.SetName(newCharacter, "Character"); + + var newTransform = LocalTransform.FromPosition(spawnPosition); + ecb.SetComponent(newCharacter, newTransform); - ecb.SetComponent(newCharacter, new TdTeam { Value = requestedTeam }); - ecb.AddComponent(newCharacter, new GhostOwner { NetworkId = clientId}); + ecb.SetComponent(newCharacter, new GhostOwner { NetworkId = clientId}); + ecb.SetComponent(newCharacter, new TdTeam { Value = requestedTeam }); + ecb.SetComponent(newCharacter, new CharacterConfig + { + Color = requestedColor + }); + //Destroy character prefab, when client disconnects ecb.AppendToBuffer(requestSource.SourceConnection, new LinkedEntityGroup{Value = newCharacter}); } diff --git a/Assets/Scripts/UI/ClientConnectionManager.cs b/Assets/Scripts/UI/ClientConnectionManager.cs index 06e7266..f821e5e 100644 --- a/Assets/Scripts/UI/ClientConnectionManager.cs +++ b/Assets/Scripts/UI/ClientConnectionManager.cs @@ -100,6 +100,7 @@ namespace UI } } + private void StartServer() { //Create server world @@ -108,13 +109,12 @@ namespace UI //Define endpoint for world to listen to, and set network driver to listen to specified port var serverEndPoint = NetworkEndpoint.AnyIpv4.WithPort(Port); { - using var networkDriverQuery = - serverWorld.EntityManager.CreateEntityQuery(ComponentType.ReadWrite()); - + using var networkDriverQuery = serverWorld.EntityManager.CreateEntityQuery(ComponentType.ReadWrite()); networkDriverQuery.GetSingletonRW().ValueRW.Listen(serverEndPoint); } } + private void StartClient() { //Create server world @@ -131,10 +131,12 @@ namespace UI //create entity with join request component, so that the ClientRequestGameEntrySystem can take over var teamRequestEntity = clientWorld.EntityManager.CreateEntity(); + var color = _colorPicker.Color; + clientWorld.EntityManager.AddComponentData(teamRequestEntity, new ClientTeamRequest { - Value = TeamType.Player, - Color = _colorPicker.Color + Value = TeamType.Player, + Color = color, }); } } diff --git a/Assets/Settings/PC_RPAsset.asset b/Assets/Settings/PC_RPAsset.asset index 8b30a06..fb240e0 100644 --- a/Assets/Settings/PC_RPAsset.asset +++ b/Assets/Settings/PC_RPAsset.asset @@ -78,11 +78,11 @@ MonoBehaviour: m_UseAdaptivePerformance: 1 m_ColorGradingMode: 0 m_ColorGradingLutSize: 32 + m_AllowPostProcessAlphaOutput: 0 m_UseFastSRGBLinearConversion: 0 m_SupportDataDrivenLensFlare: 1 m_SupportScreenSpaceLensFlare: 1 m_GPUResidentDrawerMode: 0 - m_UseLegacyLightmaps: 0 m_SmallMeshScreenPercentage: 0 m_GPUResidentDrawerEnableOcclusionCullingInCameras: 0 m_ShadowType: 1 @@ -100,15 +100,16 @@ MonoBehaviour: m_Keys: [] m_Values: m_PrefilteringModeMainLightShadows: 3 - m_PrefilteringModeAdditionalLight: 4 - m_PrefilteringModeAdditionalLightShadows: 0 + m_PrefilteringModeAdditionalLight: 0 + m_PrefilteringModeAdditionalLightShadows: 2 m_PrefilterXRKeywords: 1 - m_PrefilteringModeForwardPlus: 1 + m_PrefilteringModeForwardPlus: 2 m_PrefilteringModeDeferredRendering: 0 - m_PrefilteringModeScreenSpaceOcclusion: 1 + m_PrefilteringModeScreenSpaceOcclusion: 2 m_PrefilterDebugKeywords: 1 - m_PrefilterWriteRenderingLayers: 0 + m_PrefilterWriteRenderingLayers: 1 m_PrefilterHDROutput: 1 + m_PrefilterAlphaOutput: 1 m_PrefilterSSAODepthNormals: 0 m_PrefilterSSAOSourceDepthLow: 1 m_PrefilterSSAOSourceDepthMedium: 1 @@ -120,10 +121,10 @@ MonoBehaviour: m_PrefilterSSAOSampleCountHigh: 1 m_PrefilterDBufferMRT1: 1 m_PrefilterDBufferMRT2: 1 - m_PrefilterDBufferMRT3: 0 - m_PrefilterSoftShadowsQualityLow: 0 - m_PrefilterSoftShadowsQualityMedium: 0 - m_PrefilterSoftShadowsQualityHigh: 0 + m_PrefilterDBufferMRT3: 1 + m_PrefilterSoftShadowsQualityLow: 1 + m_PrefilterSoftShadowsQualityMedium: 1 + m_PrefilterSoftShadowsQualityHigh: 1 m_PrefilterSoftShadows: 0 m_PrefilterScreenCoord: 1 m_PrefilterNativeRenderPass: 1 diff --git a/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset b/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset index cb11b1f..bfe8999 100644 --- a/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset +++ b/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset @@ -55,7 +55,17 @@ MonoBehaviour: - rid: 8712630790384254976 - rid: 7930710930656067584 m_RuntimeSettings: - m_List: [] + m_List: + - rid: 6852985685364965378 + - rid: 6852985685364965379 + - rid: 6852985685364965380 + - rid: 6852985685364965381 + - rid: 6852985685364965384 + - rid: 6852985685364965385 + - rid: 6852985685364965392 + - rid: 6852985685364965394 + - rid: 8712630790384254976 + - rid: 7930710930656067584 m_AssetVersion: 8 m_ObsoleteDefaultVolumeProfile: {fileID: 0} m_RenderingLayerNames: diff --git a/ProjectSettings/GraphicsSettings.asset b/ProjectSettings/GraphicsSettings.asset index aa5a1c3..a148e49 100644 --- a/ProjectSettings/GraphicsSettings.asset +++ b/ProjectSettings/GraphicsSettings.asset @@ -36,10 +36,8 @@ GraphicsSettings: - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} m_PreloadedShaders: [] m_PreloadShadersBatchTimeLimit: -1 - m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, - type: 0} - m_CustomRenderPipeline: {fileID: 11400000, guid: 4b83569d67af61e458304325a23e5dfd, - type: 2} + m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_CustomRenderPipeline: {fileID: 11400000, guid: 4b83569d67af61e458304325a23e5dfd, type: 2} m_TransparencySortMode: 0 m_TransparencySortAxis: {x: 0, y: 0, z: 1} m_DefaultRenderingPath: 1 @@ -60,8 +58,7 @@ GraphicsSettings: m_FogKeepExp2: 1 m_AlbedoSwatchInfos: [] m_RenderPipelineGlobalSettingsMap: - UnityEngine.Rendering.Universal.UniversalRenderPipeline: {fileID: 11400000, guid: 18dc0cd2c080841dea60987a38ce93fa, - type: 2} + UnityEngine.Rendering.Universal.UniversalRenderPipeline: {fileID: 11400000, guid: 18dc0cd2c080841dea60987a38ce93fa, type: 2} m_LightsUseLinearIntensity: 1 m_LightsUseColorTemperature: 1 m_LogWhenShaderIsCompiled: 0