void Update() { if (WMOThreadQueue.Count > 0) { if (!WMO.ThreadWorking) { WMOQueueItem queueItem = WMOThreadQueue.Dequeue(); WMOThreadRun(queueItem.FileDataId, queueItem.uniqueID, queueItem.Position, queueItem.Rotation, queueItem.Scale); } } else if (WMOThreadQueue.Count == 0) { busy = false; } if (WMO.AllWMOData.Count > 0) { if (!WMOThread.IsAlive) { if (!terrainHandler.frameBusy) { terrainHandler.frameBusy = true; CreateWMOObject(); } } } if (WMOClones.Count > 0) { List <WMOQueueItem> RemoveElements = new List <WMOQueueItem>(); // Check if Copies are Required // foreach (WMOQueueItem item in WMOClones) { if (terrainHandler.LoadedWMOIds.ContainsKey(item.FileDataId)) { if (terrainHandler.LoadedWMOIds[item.FileDataId] != null) { WMOQueueItem clone = item; RemoveElements.Add(item); GameObject instance = Instantiate(terrainHandler.LoadedWMOIds[item.FileDataId]); instance.transform.position = clone.Position; instance.transform.rotation = clone.Rotation; instance.transform.localScale = Vector3.one; instance.transform.SetParent(terrainHandler.ADTBlockWMOParents[item.uniqueID].transform); } } } // Remove foreach (WMOQueueItem removeItem in RemoveElements) { WMOClones.Remove(removeItem); } RemoveElements.Clear(); } }
// Add WMO copies to a list so they will be copied after loading is done // public void CloneWMO(string objectDataPath, int uniqueID, Vector3 position, Quaternion rotation, Vector3 scale) { WMOQueueItem item = new WMOQueueItem(); item.objectDataPath = objectDataPath; item.uniqueID = uniqueID; item.Position = position; item.Rotation = rotation; item.Scale = scale; WMOClones.Add(item); }
public void AddToQueue(string objectDataPath, int uniqueID, Vector3 position, Quaternion rotation, Vector3 scale) { WMOQueueItem item = new WMOQueueItem(); item.objectDataPath = objectDataPath; item.uniqueID = uniqueID; item.Position = position; item.Rotation = rotation; item.Scale = scale; WMOThreadQueue.Enqueue(item); }
// Add WMO copies to a list so they will be copied after loading is done // public void CloneWMO(uint FileDataId, int uniqueID, Vector3 position, Quaternion rotation, Vector3 scale) { WMOQueueItem item = new WMOQueueItem(); item.FileDataId = FileDataId; item.uniqueID = uniqueID; item.Position = position; item.Rotation = rotation; item.Scale = scale; WMOClones.Add(item); }
public void AddToQueue(uint FileDataId, int uniqueID, Vector3 position, Quaternion rotation, Vector3 scale, CASCHandler Handler) { CascHandler = Handler; WMOQueueItem item = new WMOQueueItem(); item.FileDataId = FileDataId; item.uniqueID = uniqueID; item.Position = position; item.Rotation = rotation; item.Scale = scale; WMOThreadQueue.Enqueue(item); }