コード例 #1
0
    private static Part[] LoadParts(GameSaving.VesselSave vesselToLoad)
    {
        int num = vesselToLoad.parts.Length;

        PartData[] array  = new PartData[num];
        Part[]     array2 = new Part[num];
        for (int i = 0; i < num; i++)
        {
            array[i]              = Ref.controller.partDatabase.GetPartByName(vesselToLoad.parts[i].partName);
            array2[i]             = UnityEngine.Object.Instantiate <Transform>(array[i].prefab, Vector3.zero, Quaternion.identity).GetComponent <Part>();
            array2[i].orientation = vesselToLoad.parts[i].orientation;
        }
        for (int j = 0; j < vesselToLoad.joints.Length; j++)
        {
            Part.Joint.Save save = vesselToLoad.joints[j];
            if (save.fromPartId != -1 && save.toPartId != -1)
            {
                new Part.Joint(save.anchor, array2[save.fromPartId], array2[save.toPartId], save.fromSurfaceIndex, save.toSurfaceIndex, save.fuelFlow);
            }
        }
        for (int k = 0; k < num; k++)
        {
            array2[k].UpdateConnected();
        }
        return(array2);
    }
コード例 #2
0
    private static Part[] LoadParts(GameSaving.VesselSave vesselToLoad)
    {
        int num = vesselToLoad.parts.Length;

        Part[] array = new Part[num];
        for (int i = 0; i < num; i++)
        {
            PartData partByName = Ref.controller.partDatabase.GetPartByName(vesselToLoad.parts[i].partName);
            bool     flag       = !(partByName == null);
            if (flag)
            {
                array[i]             = Instantiate(partByName.prefab, Vector3.zero, Quaternion.identity).GetComponent <Part>();
                array[i].orientation = vesselToLoad.parts[i].orientation;

                array[i].partData.tags = new Dictionary <string, object>();
                try
                {
                    array[i].partData.GUID = new Guid(vesselToLoad.parts[i].GUID);
                } catch
                {
                    array[i].partData.GUID = Guid.NewGuid();
                }
                try
                {
                    if (vesselToLoad.parts[i].tagsString != null)
                    {
                        foreach (string text in vesselToLoad.parts[i].tagsString.Split('|'))
                        {
                            if (!(text == ""))
                            {
                                Type   type = Type.GetType(text.Split('#')[0]);
                                string key  = text.Split('#')[1];

                                object obj = JsonUtility.FromJson(text.Split('#')[2], type);

                                array[i].partData.tags.Add(key, obj);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    ModLoader.mainConsole.logError(e);
                }
            }
        }
        for (int j = 0; j < vesselToLoad.joints.Length; j++)
        {
            Part.Joint.Save save  = vesselToLoad.joints[j];
            bool            flag2 = save.fromPartId != -1 && save.toPartId != -1;
            if (flag2)
            {
                bool flag3 = !(array[save.fromPartId] == null) && !(array[save.toPartId] == null);
                if (flag3)
                {
                    new Part.Joint(save.anchor, array[save.fromPartId], array[save.toPartId], save.fromSurfaceIndex, save.toSurfaceIndex, save.fuelFlow);
                }
            }
        }
        return(array);
    }