internal void Invalidate() { list = null; next = null; prev = null; ObjectAllocatorHolder <LinkedListNode <T> > .Free(this); }
public static EntitasGameEntity <TEntity> Allocate(TEntity entity, IComponentTypeLookup lookup) { var rc = ObjectAllocatorHolder <EntitasGameEntity <TEntity> > .Allocate(); rc.Init(entity, lookup); return(rc); }
public static ComponentWrapper Allocate(IGameComponent component) { var rc = ObjectAllocatorHolder <ComponentWrapper> .Allocate(); rc._component = component; return(rc); }
public int ProcessSendQueue(bool isMultiThread = false) { int count = 0; while (_sendQueue.Count > 0 && count < MaxLoopCount) { if (isMultiThread) { count++; } try { NetworkMessageItem item = (NetworkMessageItem)_sendQueue.Dequeue(); if (IsConnected) { DoSend(item); } ObjectAllocatorHolder <MemoryStream> .Free(item.MemoryStream); } catch (Exception e) { _logger.ErrorFormat("error while do send {0} {1}", IdInfo(), e); } } return(count); }
public static AssetLoadRequestBatch <T> Alloc() { var batch = ObjectAllocatorHolder <AssetLoadRequestBatch <T> > .Allocate(); batch._isDisposed = false; return(batch); }
public void Dispose() { Logger.Info("AbstractNetowrkChannel.Dispose"); try { ProcessSerializeQueue(); ProcessSendQueue(); ProcessDeserializeQueue(); //_serializer 有可能是公共的,这里不调Dispose // if (_serializer != null) // { // _serializer.Dispose(); // } ObjectAllocatorHolder <MemoryStream> .Free(_receiveMemoryStream); _receiveMemoryStream = null; if (_serializer != null) { _serializer.Dispose(); } } catch (Exception e) { Logger.ErrorFormat("{0}", e); } }
public static MyBinaryWriter Allocate(Stream stream) { var writer = ObjectAllocatorHolder <MyBinaryWriter> .Allocate(); writer.OutStream = stream; return(writer); }
public static ModifyEntityPatch Allocate(IGameEntity entity) { var rc = ObjectAllocatorHolder <ModifyEntityPatch> .Allocate(); rc.Key = entity.EntityKey; return(rc); }
public static ComponentWrapper Allocate(int componentId) { var rc = ObjectAllocatorHolder <ComponentWrapper> .Allocate(); rc._component = _gameCompoentInfo.Allocate(componentId); return(rc); }
public static EntityMapCacheGroup Allocate(EntityMap entityId2Entity) { EntityMapCacheGroup cacheGroup = ObjectAllocatorHolder <EntityMapCacheGroup> .Allocate(); cacheGroup.Initialize(entityId2Entity); return(cacheGroup); }
public static DeleteEntityPatch Allocate(EntityKey key) { var rc = ObjectAllocatorHolder <DeleteEntityPatch> .Allocate(); rc.Key = key; return(rc); }
public static VNetworkMessageItem Allocate(int messageType, object messageBody, int channel) { VNetworkMessageItem rc = ObjectAllocatorHolder <VNetworkMessageItem> .Allocate(); rc.Init(messageType, messageBody, channel); return(rc); }
public static AssetLoadRequestNode Alloc(AbstractAssetLoadRequest request) { var node = ObjectAllocatorHolder <AssetLoadRequestNode> .Allocate(); node.Value = request; return(node); }
public static ListBasedGameEntity Allocate(EntityKey entityKey) { var rc = ObjectAllocatorHolder <ListBasedGameEntity> .Allocate(); rc.EntityKey = entityKey; return(rc); }
public static CompensatioSnapshotGameEntity Allocate(EntityKey entityKey) { var rc = ObjectAllocatorHolder <CompensatioSnapshotGameEntity> .Allocate(); rc.EntityKey = entityKey; return(rc); }
public MemoryStream SerializeSinaglePackage(UpdateLatestPacakge msg) { MemoryStream stream = ObjectAllocatorHolder <MemoryStream> .Allocate(); stream.Seek(0, SeekOrigin.Begin); var binaryWriter = MyBinaryWriter.Allocate(stream); long bodyLength; var old = MessagePool.GetPackageBySeq(msg.Head.BaseUserCmdSeq); if (old != null) { msg.Head.Serialize(binaryWriter); bodyLength = SerializeComponents(binaryWriter, old.UpdateComponents, msg.UpdateComponents); } else { msg.Head.BaseUserCmdSeq = -1; msg.Head.Serialize(binaryWriter); bodyLength = SerializeComponents(binaryWriter, _emptyUpdateComponents, msg.UpdateComponents); } AssertUtility.Assert(bodyLength < 65535); msg.Head.ReWriteBodyLength(binaryWriter, (short)bodyLength); binaryWriter.ReleaseReference(); return(stream); }
private void RemoveHistoryFirst() { _sendHistorySeqs.RemoveFirst(); var old = _sendHistoryStreams.RemoveFirst(); ObjectAllocatorHolder <MemoryStream> .Free(old); }
public static EntityMapCache Allocate(EntityMap entityId2Entity) { EntityMapCache cache = ObjectAllocatorHolder <EntityMapCache> .Allocate(); cache.SetEntityMap(entityId2Entity); return(cache); }
public virtual object Deserialize(Stream inStream) { T message = ObjectAllocatorHolder <T> .Allocate(); MergeFrom(message, inStream); return(message); }
protected override void OnCleanUp() { _seq = -1; _snapshot = null; _filter.Init(EntityKey.Default, Vector3.zero); _preEntitys.Clear(); ObjectAllocatorHolder <PartialSnapshotFactory> .Free(this); }
public static SyncLatestEntityMap Allocate(bool ownEntity = true) { SyncLatestEntityMap rc = ObjectAllocatorHolder <SyncLatestEntityMap> .Allocate(); rc._ownEntity = ownEntity; rc._arrayDirty = true; return(rc); }
public static PredictionEntityMap Allocate(bool ownEntity = true) { PredictionEntityMap rc = ObjectAllocatorHolder <PredictionEntityMap> .Allocate(); rc._ownEntity = ownEntity; rc._arrayDirty = true; return(rc); }
public static CacheEntityMap Allocate(bool ownEntity = true) { CacheEntityMap rc = ObjectAllocatorHolder <CacheEntityMap> .Allocate(); rc._ownEntity = ownEntity; rc._arrayDirty = true; return(rc); }
public static PlayBackEntityMap Allocate(bool ownEntity = true) { PlayBackEntityMap rc = ObjectAllocatorHolder <PlayBackEntityMap> .Allocate(); rc.ownEntity = ownEntity; rc.arrayDirty = true; return(rc); }
internal static LinkedListNode <T> Allocate(MyLinkedList <T> list, T value) { var rc = ObjectAllocatorHolder <LinkedListNode <T> > .Allocate(); rc.list = list; rc.Value = value; return(rc); }
public static RemoveAssetStatus Allocate(AssetStatus status, ICommonResourceActions actions) { var ret = ObjectAllocatorHolder <RemoveAssetStatus> .Allocate(); ret.Actions = actions; ret.Status = status; return(ret); }
public void Free() { foreach (var value in EmitterDict.Values) { ObjectAllocatorHolder <AudioEmitter> .Free(value); } EmitterDict.Clear(); }
public static T AllocEvent <T>() where T : RoomEvent { var evt = ObjectAllocatorHolder <T> .Allocate(); evt._allocator = ObjectAllocatorHolder <T> .GetAllocator(); return(evt); }
public void SendSnapshot(int interval, SnapshotFactory snapshotFactory, Dictionary <INetworkChannel, PlayerEntity> channelToPlayer) { var sessionObjects = _contexts.session.serverSessionObjects; Bin2DConfig bin2DConfig = sessionObjects.Bin2DConfig; IBin2DManager bin = sessionObjects.Bin2dManager; int snapshotSeq = sessionObjects.GetNextSnapshotSeq(); int vehicleSimulationTime = sessionObjects.SimulationTimer.CurrentTime; int serverTime = _contexts.session.currentTimeObject.CurrentTime; _sendSnapshotTasks.Clear(); var freeMoveEntitys = _globalFreeMoveEntities.GetEntities(); var weaponEntities = _globalWeaponEntities.GetEntities(); foreach (var entry in channelToPlayer) { INetworkChannel channel = entry.Key; PlayerEntity player = entry.Value; if (player.hasStage && player.stage.CanSendSnapshot() && channel.IsConnected && !player.network.NetworkChannel.Serializer.MessageTypeInfo.SkipSendSnapShot(serverTime)) { var p = ObjectAllocatorHolder <CreateSnapshotParams> .Allocate().Build(snapshotFactory, player, bin2DConfig, bin, serverTime, snapshotSeq, vehicleSimulationTime, channel); var entitys = p.PreEnitys; AddTeamPlayers(player, entitys, _contexts); AddGlobalFreeMove(player, entitys, freeMoveEntitys); AddWeapon(player, entitys, weaponEntities); _sendSnapshotTasks.Add(p); } else { player.network.NetworkChannel.Serializer.MessageTypeInfo.IncSendSnapShot(); _logger.DebugFormat("channel:{2} skip SendSnapshot :{0} {1}!", channel.IsConnected, !player.network.NetworkChannel.Serializer.MessageTypeInfo.SkipSendSnapShot(serverTime), channel.IdInfo()); } } if (SharedConfig.MutilThread) { #if ENABLE_NEW_SENDSNAPSHOT_THREAD ConsumerExecute(); #else MutilExecute(); #endif } else { MainExecute(); } _logger.DebugFormat("SendSnapshot Threads Done;"); }
public static DeleteComponentPatch Allocate(IGameComponent comp) { var rc = ObjectAllocatorHolder <DeleteComponentPatch> .Allocate(); rc.CreateGameComponent(comp.GetComponentId()); // ReSharper disable once PossibleNullReferenceException (rc.Component as INetworkObject).CopyFrom(comp); return(rc); }