/// <inheritdoc /> public NetworkEntityNowVisibleEventArgs Create(EntityCreationData context) { NetworkEntityGuid guid = context.EntityGuid; IEntityDataFieldContainer container = CreateInitialEntityFieldContainer(context.InitialFieldValues); ChangeTrackingEntityFieldDataCollectionDecorator trackingEntityFieldDataCollectionDecorator = new ChangeTrackingEntityFieldDataCollectionDecorator(container, context.InitialFieldValues.FieldValueUpdateMask); ChangeTrackableCollection.AddObject(guid, trackingEntityFieldDataCollectionDecorator); MovementBlockMappable.AddObject(guid, context.InitialMovementData); return(new NetworkEntityNowVisibleEventArgs(guid)); }
protected override void OnEventFired(object source, EntityCreationRequestedEventArgs args) { NetworkEntityGuid guid = args.EntityGuid; //TODO: handle non-players //TODO: Fix the issue with having to hardcore the field count. //Build the update values stuff and initialize the initial movement data. EntityFieldDataCollection container = new EntityFieldDataCollection(ComputeEntityDataFieldLength(args.EntityGuid)); DataCollectionMappable.AddObject(guid, container); ChangeTrackableCollection.AddObject(guid, new ChangeTrackingEntityFieldDataCollectionDecorator(container)); EntityDataContainer.AddObject(guid, ChangeTrackableCollection.RetrieveEntity(guid)); }