public static void Load(string dataPath, int uniqueID, Vector3 position, Quaternion rotation, Vector3 scale) { M2Data m2Data = new M2Data(); M2Texture m2Tex = new M2Texture(); m2Data.dataPath = dataPath; m2Data.uniqueID = uniqueID; m2Data.position = position; m2Data.rotation = rotation; m2Data.scale = scale; try { ThreadWorking = true; ParseM2_Root(dataPath, m2Data, m2Tex); ParseM2_Skin(dataPath, m2Data); AllM2Data.Enqueue(m2Data); ThreadWorking = false; } catch (Exception ex) { Debug.Log("Error : Trying to parse M2 - " + dataPath); Debug.LogException(ex); } }
public static void Load(uint FileDataId, int uniqueID, Vector3 position, Quaternion rotation, Vector3 scale, CASCHandler Handler) { M2Data m2Data = new M2Data(); M2Texture m2Tex = new M2Texture(); m2Data.FileDataId = FileDataId; m2Data.uniqueID = uniqueID; m2Data.position = position; m2Data.rotation = rotation; m2Data.scale = scale; try { ThreadWorking = true; ParseM2_Root(FileDataId, m2Data, m2Tex, Handler); foreach (uint skinFile in SkinFiles) { ParseM2_Skin(skinFile, m2Data, Handler); } AllM2Data.Enqueue(m2Data); ThreadWorking = false; } catch (Exception ex) { Debug.Log("Error : Trying to parse M2 - " + FileDataId); Debug.LogException(ex); } }
void Update() { if (M2ThreadQueue.Count > 0) { M2QueueItem queueItem = M2ThreadQueue.Dequeue(); M2ThreadRun(queueItem.FileDataId, queueItem.uniqueID, queueItem.Position, queueItem.Rotation, queueItem.Scale); } else if (M2ThreadQueue.Count == 0) { busy = false; } if (AllM2Data.Count > 0) { if (M2Thread != null) { if (!M2Thread.IsAlive) { terrainHandler.frameBusy = true; CreateM2Object(AllM2Data.Dequeue()); } } else { CreateM2Object(AllM2Data.Dequeue()); } } if (M2Clones.Count > 0) { List <M2QueueItem> RemoveElements = new List <M2QueueItem>(); // Check if copies are Required // foreach (M2QueueItem item in M2Clones) { if (terrainHandler.LoadedM2Ids.ContainsKey(item.FileDataId)) { if (terrainHandler.LoadedM2Ids[item.FileDataId] != null) { M2QueueItem clone = item; RemoveElements.Add(item); GameObject instance = Instantiate(terrainHandler.LoadedM2Ids[item.FileDataId]); instance.transform.position = clone.Position; instance.transform.rotation = clone.Rotation; instance.transform.localScale = Vector3.one; instance.transform.SetParent(terrainHandler.ADTBlockM2Parents[item.uniqueID].transform); } } } // Remove foreach (M2QueueItem removeItem in RemoveElements) { M2Clones.Remove(removeItem); } RemoveElements.Clear(); } }
public static void Load(uint FileDataId, int uniqueID, Vector3 position, Quaternion rotation, Vector3 scale, CASCHandler Handler) { M2Data m2Data = new M2Data(); M2Texture m2Tex = new M2Texture(); m2Data.FileDataId = FileDataId; m2Data.uniqueID = uniqueID; m2Data.position = position; m2Data.rotation = rotation; m2Data.scale = scale; ThreadWorking = true; ParseM2_Root(FileDataId, m2Data, m2Tex, Handler); foreach (uint skinFile in SkinFiles) { ParseM2_Skin(skinFile, m2Data, Handler); } AllM2Data.Enqueue(m2Data); ThreadWorking = false; }
public void StopLoading() { AllM2Data.Clear(); M2ThreadQueue.Clear(); }