private static void Initialize() { foreach (var train in TrainTypes.Values) { var animatedObject = AnimationManager.RegisterNewAnimatedObject(train.name, train.mesh, train.sideall); animatedObject.ObjSettings.colliders = new List <RotatedBounds>() { new RotatedBounds(Vector3.zero, train.TrainConfiguration.TrainBounds, Quaternion.identity) }; animatedObject.ObjSettings.InterpolationLooseness = 1.5f; animatedObject.ObjSettings.sendUpdateRadius = 500; TrainAnimations[train.name] = animatedObject; } var worldFile = Path.Combine(GameInitializer.SAVE_LOC, "world.json"); if (File.Exists(worldFile)) { JObject rootObj = JsonConvert.DeserializeObject <JObject>(File.ReadAllText(worldFile)); if (rootObj.TryGetValue("transports", out JToken transports)) { if (transports.Type != JTokenType.Array) { return; } List <TransportSave> trainSaves = transports.ToObject <List <TransportSave> >(); foreach (var save in trainSaves) { if (TrainTransport.TryCreateFromSave(save, out var trainTransport)) { TransportManager.RegisterTransport(trainTransport); } } } } }