Example #1
0
    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);
        }
    }
Example #2
0
    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);
        }
    }
Example #3
0
        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();
            }
        }
Example #4
0
    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;
    }
Example #5
0
 public void StopLoading()
 {
     AllM2Data.Clear();
     M2ThreadQueue.Clear();
 }