public static Entity CreatePlayerEntityTemplate(List <string> clientAttributeSet, Generated.Improbable.Vector3f position) { var clientSet = new WorkerRequirementSet(new Improbable.Collections.List <WorkerAttributeSet>() { new WorkerAttributeSet(clientAttributeSet as Improbable.Collections.List <string>) }); var location = new Improbable.Transform.Location(position.X, position.Y, position.Z); var rotation = new Improbable.Transform.Quaternion(1, 0, 0, 0); var coordinates = new Coordinates(0, 0, 0); var transformData = new Improbable.Transform.Transform.Data(location, rotation, 0); var metadata = new Metadata.Data(ArchetypeConfig.CharacterArchetype); var playerInput = new Playground.PlayerInput.Data(0, 0, false); var playerHeartbeatClient = new Improbable.PlayerLifecycle.PlayerHeartbeatClient.Data(); var playerHeartbeatServer = new Improbable.PlayerLifecycle.PlayerHeartbeatServer.Data(); var prefab = new Playground.Prefab.Data(ArchetypeConfig.CharacterArchetype); var archetype = new Playground.ArchetypeComponent.Data(ArchetypeConfig.CharacterArchetype); var launcher = new Playground.Launcher.Data(100, 0); return(EntityBuilder.Begin() .AddPositionComponent(coordinates, GameLogicSet) .AddComponent(metadata, GameLogicSet) .SetPersistence(false) .SetReadAcl(AllWorkersSet) .AddComponent(transformData, GameLogicSet) .AddComponent(playerInput, clientSet) .AddComponent(playerHeartbeatClient, clientSet) .AddComponent(playerHeartbeatServer, GameLogicSet) .AddComponent(prefab, GameLogicSet) .AddComponent(archetype, GameLogicSet) .AddComponent(launcher, GameLogicSet) .Build()); }
public static Entity CreatePlayerEntityTemplate(List <string> clientAttributeSet, Generated.Improbable.Vector3f position) { var clientAttribute = clientAttributeSet.First(attribute => attribute != SystemConfig.UnityClient); if (clientAttribute == null) { throw new InvalidOperationException( "Expected an attribute that is not \"UnityClient\" but none was found."); } var transform = SpatialOSTransform.CreateSchemaComponentData(new Location(), new Quaternion { W = 1, X = 0, Y = 0, Z = 0 }, 0); var playerInput = SpatialOSPlayerInput.CreateSchemaComponentData(0, 0, false); var prefab = SpatialOSPrefab.CreateSchemaComponentData(ArchetypeConfig.CharacterArchetype); var archetype = SpatialOSArchetypeComponent.CreateSchemaComponentData(ArchetypeConfig.CharacterArchetype); var launcher = SpatialOSLauncher.CreateSchemaComponentData(100, 0); var clientHeartbeat = SpatialOSPlayerHeartbeatClient.CreateSchemaComponentData(); var serverHeartbeat = SpatialOSPlayerHeartbeatServer.CreateSchemaComponentData(); var score = SpatialOSScore.CreateSchemaComponentData(0); var entityBuilder = EntityBuilder.Begin() .AddPosition(0, 0, 0, SystemConfig.UnityGameLogic) .AddMetadata(ArchetypeConfig.CharacterArchetype, SystemConfig.UnityGameLogic) .SetPersistence(false) .SetReadAcl(AllWorkerAttributes) .SetEntityAclComponentWriteAccess(SystemConfig.UnityGameLogic) .AddComponent(transform, SystemConfig.UnityGameLogic) .AddComponent(playerInput, clientAttribute) .AddComponent(prefab, SystemConfig.UnityGameLogic) .AddComponent(archetype, SystemConfig.UnityGameLogic) .AddComponent(launcher, SystemConfig.UnityGameLogic) .AddComponent(clientHeartbeat, clientAttribute) .AddComponent(serverHeartbeat, SystemConfig.UnityGameLogic) .AddComponent(score, SystemConfig.UnityGameLogic); return(entityBuilder.Build()); }