public ItemIterator(Item *ptr, int count) { _ptr = ptr; _index = -1; _current = 0; _count = count; }
private unsafe void VerifyInputItemType(MyObjectBuilderType inputType) { Item[] prerequisites = this.Prerequisites; for (int i = 0; i < prerequisites.Length; i++) { Item *itemPtr1 = (Item *)ref prerequisites[i]; } }
public MurmurHash3 GetHash() { unsafe { Item i = this; Item *p = &i; return(MurmurHash3.Create((byte *)p, (uint)sizeof(Item), 0)); } }
public void Clear() { if (!IsEmpty()) { Item *pItem = m_pBack; while (pItem != null) { Item *pPrevItem = pItem->pPrev; m_ItemAllocator.Free(pItem); pItem = pPrevItem; } m_pFront = null; m_pBack = null; m_Count = 0; } }
public Item *PushFront() { Item *pNewItem = m_ItemAllocator.Alloc(); pNewItem->pPrev = null; if (IsEmpty()) { pNewItem->pNext = null; m_pFront = pNewItem; m_pBack = pNewItem; m_Count = 1; } else { pNewItem->pNext = m_pFront; m_pFront->pPrev = pNewItem; m_pFront = pNewItem; ++m_Count; } return(pNewItem); }
public void OnItemDestroy(Context context, Item *entity) { }
public void OnItemCreated(Context context, Item *entity) { }
private unsafe void ThreadProc() { Thread.CurrentThread.Name = "Entity creation thread"; HkBaseSystem.InitThread("Entity creation thread"); MyEntityIdentifier.InEntityCreationBlock = true; MyEntityIdentifier.InitPerThreadStorage(0x800); while (!this.m_exitting) { Item item; if (!this.ConsumeWork(out item)) { continue; } if (item.ReleaseMatrices != null) { foreach (Item item2 in this.m_waitingItems) { if (item2.WaitGroup == item.WaitGroup) { MatrixD xd; if (item.ReleaseMatrices.TryGetValue(item2.Result.EntityId, out xd)) { item2.Result.PositionComp.WorldMatrix = xd; } this.m_waitingItems.Remove(item2, false); this.m_resultQueue.Enqueue(item2); } } this.m_waitingItems.ApplyRemovals(); continue; } if (item.ObjectBuilder == null) { if (item.Result != null) { item.Result.DebugAsyncLoading = true; } if (item.WaitGroup == 0) { this.m_resultQueue.Enqueue(item); } else { this.m_waitingItems.Add(item); this.m_waitingItems.ApplyAdditions(); } continue; } if (item.Result == null) { Item *itemPtr1 = (Item *)ref item; itemPtr1->Result = MyEntities.CreateFromObjectBuilderNoinit(item.ObjectBuilder); } Item *itemPtr2 = (Item *)ref item; itemPtr2->InScene = (item.ObjectBuilder.PersistentFlags & MyPersistentEntityFlags2.InScene) == MyPersistentEntityFlags2.InScene; item.ObjectBuilder.PersistentFlags &= ~MyPersistentEntityFlags2.InScene; item.Result.DebugAsyncLoading = true; MyEntities.InitEntity(item.ObjectBuilder, ref item.Result); if (item.Result != null) { item.Result.Render.FadeIn = item.FadeIn; item.EntityIds = new List <IMyEntity>(); MyEntityIdentifier.GetPerThreadEntities(item.EntityIds); MyEntityIdentifier.ClearPerThreadEntities(); if (item.WaitGroup == 0) { this.m_resultQueue.Enqueue(item); } else { this.m_waitingItems.Add(item); this.m_waitingItems.ApplyAdditions(); } } } MyEntityIdentifier.DestroyPerThreadStorage(); HkBaseSystem.QuitThread(); }
public static extern Int8 DeserializeItemFromStream(CIO.StreamHandle stream, Item *item, Uint32 size);
public static extern Int8 SerializeItemToStream(CIO.StreamHandle stream, Item *item, Uint32 size);
public static extern Uint32 GetSerializedItemSize(Item *item);
public static extern Item *ItemCreate(CIO.StorageHandle storage, Item *item);