示例#1
0
 private void AddComponent(AddComponentOp <T> add)
 {
     _components[add.EntityId] = add.Data;
     _hasUpdated = true;
 }
示例#2
0
 static void OnComponentAdded(AddComponentOp <PositionData> op)
 {
     components[op.EntityId.Id] = op.Data;
 }
示例#3
0
        static void ProccessGenerateResourceOps()
        {
            while (generateResourceRequestOps.TryDequeue(out var op))
            {
                var asteroidEntityId = op.EntityId.Id;

                var response = new ResourceGenerationReponse();

                if (ResourcesInventorySystem.TryGetResourceInfo(asteroidEntityId, 0, out var resourceInfo))
                {
                    response.databaseId = resourceInfo.databaseId;
                    response.type       = resourceInfo.type;
                    response.quantity   = resourceInfo.quantity;
                }
                else
                {
                    var position = PositionsSystem.GetComponent(asteroidEntityId).coords;

                    var time = (long)(DateTime.Now.ToUniversalTime() - centuryBegin).TotalSeconds;

                    var lowSample  = ProbabilityMap.EvaluateLowSample(position.x, position.y, position.z, time);
                    var medSample  = ProbabilityMap.EvaluateMedSample(position.x, position.y, position.z, time);
                    var highSample = ProbabilityMap.EvaluateHighSample(position.x, position.y, position.z, time);

                    var sample = ProbabilityMap.LayeringSample(lowSample, medSample, highSample);

                    var      seed = asteroidEntityId ^ BitConverter.ToInt64(Encoding.UTF8.GetBytes(op.Request.userDatabaseId), 0);
                    IRandomU prng = new XoShiRo128starstar(seed);

                    var scanner = op.Request.scanner;

                    var quantity = QuantityGenerator.Sample(sample, prng, scanner);

                    if (quantity > 0)
                    {
                        response.quantity = quantity;

                        var scannerResource = scanner.speciality;
                        if (scannerResource == ResourceType.Random)
                        {
                            scannerResource = (ResourceType)prng.Next(1, (int)ResourceType.Count);
                        }

                        response.type = scannerResource;

                        var resourceDBId = Helpers.GenerateCloudFireStoreRandomDocumentId(prng);
                        var asteroidDBId = Helpers.GenerateCloudFireStoreRandomDocumentId(prng);

                        response.databaseId = resourceDBId;

                        SpatialOSConnectionSystem.addPersistenceOps.Enqueue(
                            new AddComponentOp <PersistenceData>
                        {
                            EntityId = op.EntityId,
                            Data     = new PersistenceData()
                        });

                        var addComponentOp = new AddComponentOp <IdentificationData>
                        {
                            EntityId = op.EntityId,
                            Data     = new IdentificationData
                            {
                                entityDatabaseId = asteroidDBId,
                            }
                        };

                        IdentificationsSystem.OnComponentAdded(addComponentOp);
                        SpatialOSConnectionSystem.addIdentificationOps.Enqueue(addComponentOp);

                        ResourcesInventorySystem.QueueAddResourceOp(asteroidEntityId, resourceInfo.databaseId, new Resource(resourceInfo.type, resourceInfo.quantity));

                        var asteroidRef = CloudFirestoreInfo.Database.Collection(CloudFirestoreInfo.AsteroidsCollection).Document(asteroidDBId);
                        asteroidRef.CreateAsync(new Dictionary <string, object> {
                            { CloudFirestoreInfo.CoordinatesField, new double[3] {
                                  position.x, position.y, position.z
                              } }
                        });
                    }
                }

                SpatialOSConnectionSystem.responseGenerateResourceOps.Enqueue(
                    new CommandResponseOp <Harvestable.Commands.GenerateResource, ResourceGenerationReponse>//just using CommandResponseOp as container for request raw id and response
                {
                    EntityId  = new EntityId(),
                    RequestId = new RequestId <OutgoingCommandRequest <Harvestable.Commands.GenerateResource> >(op.RequestId.Id),
                    Response  = response,
                });
            }
        }
 public override void OnAddComponent(AddComponentOp op)
 {
     HasAddComponentReceived = true;
 }
示例#5
0
            public void AddComponentToDiff(AddComponentOp op, ViewDiff diff)
            {
                var data = Serialization.DeserializeUpdate(op.Data.SchemaData.Value);

                diff.AddComponent(data, op.EntityId, op.Data.ComponentId);
            }
示例#6
0
 private void OnSessionComponentAdded(AddComponentOp <Improbable.Session.Session> componentAddOp)
 {
     Improbable.Session.Session.Data data = (Improbable.Session.Session.Data)componentAddOp.Data;
     UpdateDeploymentStatus(data.Value.status);
 }
示例#7
0
 static void OnComponentAdded(AddComponentOp <MapItemsData> op)
 {
     addComponentOps.Enqueue(op);
 }
示例#8
0
            public override void OnAddComponent(AddComponentOp op)
            {
                if (!IsValidEntityId(op.EntityId, "AddComponentOp", out var entity))
                {
                    return;
                }

                var data = Generated.Improbable.Gdk.Tests.ExhaustiveSingular.Serialization.Deserialize(op.Data.SchemaData.Value.GetFields(), World);

                data.DirtyBit = false;
                entityManager.AddComponentData(entity, data);
                entityManager.AddComponentData(entity, new NotAuthoritative <Generated.Improbable.Gdk.Tests.ExhaustiveSingular.Component>());

                var update = new Generated.Improbable.Gdk.Tests.ExhaustiveSingular.Update
                {
                    Field1  = data.Field1,
                    Field2  = data.Field2,
                    Field3  = data.Field3,
                    Field4  = data.Field4,
                    Field5  = data.Field5,
                    Field6  = data.Field6,
                    Field7  = data.Field7,
                    Field8  = data.Field8,
                    Field9  = data.Field9,
                    Field10 = data.Field10,
                    Field11 = data.Field11,
                    Field12 = data.Field12,
                    Field13 = data.Field13,
                    Field14 = data.Field14,
                    Field15 = data.Field15,
                    Field16 = data.Field16,
                    Field17 = data.Field17,
                };

                var updates = new List <Generated.Improbable.Gdk.Tests.ExhaustiveSingular.Update>
                {
                    update
                };

                var updatesComponent = new Generated.Improbable.Gdk.Tests.ExhaustiveSingular.ReceivedUpdates
                {
                    handle = ReferenceTypeProviders.UpdatesProvider.Allocate(World)
                };

                ReferenceTypeProviders.UpdatesProvider.Set(updatesComponent.handle, updates);
                entityManager.AddComponentData(entity, updatesComponent);

                if (entityManager.HasComponent <ComponentRemoved <Generated.Improbable.Gdk.Tests.ExhaustiveSingular.Component> >(entity))
                {
                    entityManager.RemoveComponent <ComponentRemoved <Generated.Improbable.Gdk.Tests.ExhaustiveSingular.Component> >(entity);
                }
                else if (!entityManager.HasComponent <ComponentAdded <Generated.Improbable.Gdk.Tests.ExhaustiveSingular.Component> >(entity))
                {
                    entityManager.AddComponentData(entity, new ComponentAdded <Generated.Improbable.Gdk.Tests.ExhaustiveSingular.Component>());
                }
                else
                {
                    LogDispatcher.HandleLog(LogType.Error, new LogEvent(ReceivedDuplicateComponentAdded)
                                            .WithField(LoggingUtils.LoggerName, LoggerName)
                                            .WithField(LoggingUtils.EntityId, op.EntityId.Id)
                                            .WithField("Component", "Generated.Improbable.Gdk.Tests.ExhaustiveSingular")
                                            );
                }
            }
示例#9
0
 static void OnComponentAdded(AddComponentOp <SensorData> op)
 {
     components[op.EntityId.Id] = op.Data;
 }
示例#10
0
 public void OnTurretInfoComponentAdded(AddComponentOp <Improbable.Demo.TurretInfo> op)
 {
     checkOutTurretRotations[op.EntityId] = op.Data.Get().Value.rotation;
 }
示例#11
0
 static void OnComponentAdded(AddComponentOp <ClientConnectionData> op)
 {
     addComponentOps.Enqueue(op);
 }
 internal static void OnComponentAdded(AddComponentOp <IdentificationData> op)
 {
     components[op.EntityId.Id] = op.Data;
 }
示例#13
0
 static void OnComponentAdded(AddComponentOp <PositionData> op)
 {
     addComponentOps.Enqueue(op);
 }
示例#14
0
 static void OnComponentAdded(AddComponentOp <DamageableData> op)
 {
     components.Add(op.EntityId.Id);
 }
 static void OnComponentAdded(AddComponentOp <ModuleInventoryData> op)
 {
     addComponentOps.Enqueue(op);
 }
示例#16
0
 static void OnComponentAdded(AddComponentOp <ExplorationPhysicsData> op)
 {
     components[op.EntityId.Id] = op.Data;
 }
 public abstract void OnAddComponent(AddComponentOp op);
            public override void OnAddComponent(AddComponentOp op)
            {
                var entity = TryGetEntityFromEntityId(op.EntityId);

                Profiler.BeginSample("ExhaustiveRepeated");
                var data = Improbable.Gdk.Tests.ExhaustiveRepeated.Serialization.Deserialize(op.Data.SchemaData.Value.GetFields(), World);

                data.DirtyBit = false;
                entityManager.AddComponentData(entity, data);
                entityManager.AddComponent(entity, ComponentType.Create <NotAuthoritative <Improbable.Gdk.Tests.ExhaustiveRepeated.Component> >());

                var update = new Improbable.Gdk.Tests.ExhaustiveRepeated.Update
                {
                    Field1  = data.Field1,
                    Field2  = data.Field2,
                    Field3  = data.Field3,
                    Field4  = data.Field4,
                    Field5  = data.Field5,
                    Field6  = data.Field6,
                    Field7  = data.Field7,
                    Field8  = data.Field8,
                    Field9  = data.Field9,
                    Field10 = data.Field10,
                    Field11 = data.Field11,
                    Field12 = data.Field12,
                    Field13 = data.Field13,
                    Field14 = data.Field14,
                    Field15 = data.Field15,
                    Field16 = data.Field16,
                    Field17 = data.Field17,
                };

                var updates = new List <Improbable.Gdk.Tests.ExhaustiveRepeated.Update>
                {
                    update
                };

                var updatesComponent = new Improbable.Gdk.Tests.ExhaustiveRepeated.ReceivedUpdates
                {
                    handle = ReferenceTypeProviders.UpdatesProvider.Allocate(World)
                };

                ReferenceTypeProviders.UpdatesProvider.Set(updatesComponent.handle, updates);
                entityManager.AddComponentData(entity, updatesComponent);

                if (entityManager.HasComponent <ComponentRemoved <Improbable.Gdk.Tests.ExhaustiveRepeated.Component> >(entity))
                {
                    entityManager.RemoveComponent <ComponentRemoved <Improbable.Gdk.Tests.ExhaustiveRepeated.Component> >(entity);
                }
                else if (!entityManager.HasComponent <ComponentAdded <Improbable.Gdk.Tests.ExhaustiveRepeated.Component> >(entity))
                {
                    entityManager.AddComponent(entity, ComponentType.Create <ComponentAdded <Improbable.Gdk.Tests.ExhaustiveRepeated.Component> >());
                }
                else
                {
                    LogDispatcher.HandleLog(LogType.Error, new LogEvent(ReceivedDuplicateComponentAdded)
                                            .WithField(LoggingUtils.LoggerName, LoggerName)
                                            .WithField(LoggingUtils.EntityId, op.EntityId.Id)
                                            .WithField("Component", "Improbable.Gdk.Tests.ExhaustiveRepeated")
                                            );
                }

                Profiler.EndSample();
            }
示例#19
0
 static void OnComponentAdded(AddComponentOp <RechargeableData> op)
 {
     addComponentOps.Enqueue(op);
 }
示例#20
0
 private void HandleAddComponent(AddComponentOp op)
 {
     addComponentCallbacks.InvokeAll(op);
 }
示例#21
0
 static void OnComponentAdded(AddComponentOp <CraftingData> op) => components[op.EntityId.Id] = op.Data;