Start FPS controls

This commit is contained in:
Lauchstange committed 2025-02-03 19:58:17 +01:00
1 parent be5a424911
commit 08e27ca2f1
16 files changed
+634 -25

No files matched your search

@@ -25,7 +25,9 @@ namespace Server
public void OnUpdate(ref SystemState state)
{
var ecb = new EntityCommandBuffer(Allocator.Temp);
var characterPrefab = SystemAPI.GetSingleton<TdPrefabs>().Character;
var tdPrefabs = SystemAPI.GetSingleton<TdPrefabs>();
var characterPrefab = tdPrefabs.Character;
var fpsPlayerPrefab = tdPrefabs.FPSPlayer;
foreach (var (teamRequest, requestSource, requestEntity) in SystemAPI.Query<TdTeamRequest, ReceiveRpcCommandRequest>().WithEntityAccess())
{
@@ -55,12 +57,16 @@ namespace Server
Debug.Log($"Server is assigning ClientId {clientId} to team {requestedTeam}");
var newCharacter = ecb.Instantiate(characterPrefab);
var newFPSPlayer = ecb.Instantiate(fpsPlayerPrefab);
ecb.SetName(newCharacter, "Character");
var newTransform = LocalTransform.FromPosition(spawnPosition);
ecb.SetComponent(newCharacter, newTransform);
ecb.SetComponent(newCharacter, new GhostOwner { NetworkId = clientId});
ecb.SetComponent(newFPSPlayer, new GhostOwner { NetworkId = clientId});
ecb.SetComponent(newCharacter, new TdTeam { Value = requestedTeam });
ecb.SetComponent(newCharacter, new CharacterConfig
@@ -68,8 +74,14 @@ namespace Server
Color = requestedColor
});
//Setup connection
FirstPersonPlayer playerComponent = SystemAPI.GetComponent<FirstPersonPlayer>(tdPrefabs.FPSPlayer);
playerComponent.ControlledCharacter = newCharacter;
ecb.SetComponent(newFPSPlayer, playerComponent);
//Destroy character prefab, when client disconnects
ecb.AppendToBuffer(requestSource.SourceConnection, new LinkedEntityGroup{Value = newCharacter});
ecb.AppendToBuffer(requestSource.SourceConnection, new LinkedEntityGroup{Value = newFPSPlayer});
}
ecb.Playback(state.EntityManager);