Ejemplo n.º 1
0
 public AutorizationSecurityView(Form1 form,
                                 BasicModel <SecurityUserInterface, SecurityUserInterface> model)
 {
     this.form  = form;
     this.model = model;
     this.model.subscribe(this);
 }
        public IActionResult Form(BasicModel model)
        {
            transportManager = new TransportManager();
            var route       = lb.returnRoute();
            var detailRoute = lb.returnRouteDetails();
            var category    = lb.returnCategory();
            var cost        = lb.returnCost();
            var orders      = lb.returnOrder();
            var value       = transportManager.returnRouteOrder(orders, route, detailRoute, category, cost);
            var value1      = transportManager.returnCategoryDetail(category, cost);
            var value2      = transportManager.returnRouteDetail(route, detailRoute);
            var model1      = new BasicModel
            {
                categoryList = value1,
                routeList    = value2,
                PersonId     = 2,
                FullName     = model.FullName,
                Email        = model.Email,
                Phone        = model.Phone,
                CategoryId   = model.CategoryId,
                RouteId      = model.RouteId,
                Status       = model.Status
            };

            Console.WriteLine(model.FullName);
            string orderString = model.PersonId + ";" + model.FullName + ";" + model.Phone + ";" + model.Email + ";" + model.CategoryId + ";" + model.RouteId;

            transportManager.writeToFile(Path, orderString);
            return(View(model1));
        }
Ejemplo n.º 3
0
        public EnemySquadron(List<Collidable> collidableListRef, CollidableType type, float boundingRadius, BasicModel enemyModel, List<Enemy> enemyList, List<EnemyFrigate> enemyFrigateList, WeaponSystem2D enemyWeaponSystem, Vector3 basePosition, int defaultLife, int amtShips, int shipsArsenal)
        {
            CollidableReference = collidableListRef;
            EnemyList = enemyList;
            _basePosition = basePosition;
            _enemyModel = enemyModel;
            _enemyWeaponSystem = enemyWeaponSystem;

            _type = type;
            _boundingRadius = boundingRadius;

            _randomVar = new Random();

            _enemyTemplate = new Enemy(EnemyList[0].CollidableType, EnemyList[0].BoundingSphereRadius, EnemyList[0].ShipPosition, EnemyList[0].ShipRotation, EnemyList[0].MinShipSpeed,
                EnemyList[0].MaxShipSpeed, EnemyList[0].TurningSpeed, EnemyList[0].DistanceThresholdFriend, EnemyList[0].DistanceThresholdEnemy, EnemyList[0].Life);

            _defaultLife = defaultLife;

            _amountShips = amtShips;

            ShipsArsenal = shipsArsenal;

            EnemyList.AddRange(enemyFrigateList);

            CollidableReference.AddRange(EnemyList);
        }
Ejemplo n.º 4
0
        private static void LogReturnedValueIfError(string msg, BasicModel ret)
        {
            if (ret == null || ret.StatusCode() != HttpStatusCode.OK)
            {
                StringBuilder sb = new StringBuilder();
                sb.Append($"{msg} Returned value = ");
                if (ret != null)
                {
                    sb.Append($"{{{Environment.NewLine}")
                    .Append($"   StatusCode: \"{ret.StatusCode()}\"");
                    if (ret.HasError())
                    {
                        sb.Append($",{Environment.NewLine}")
                        .Append($"   Error: {{{Environment.NewLine}")
                        .Append($"      Status: {ret.Error.Status},{Environment.NewLine}")
                        .Append($"      Message: \"{ret.Error.Message}\"{Environment.NewLine}")
                        .Append("   }");
                    }

                    sb.Append($"{Environment.NewLine}}}");
                }
                else
                {
                    sb.Append("null");
                }

                logger.Warn(sb.ToString());
            }
        }
Ejemplo n.º 5
0
        public void StopPosition(BasicModel otherModel)
        {
            if (filodendron.avatarPosition.X != 0)
            {
                filodendron.avatarPosition.X += Math.Sign(filodendron.avatarPosition.X) * distance;
            }

            if (filodendron.avatarPosition.Z != 0)
            {
                filodendron.avatarPosition.Z += Math.Sign(filodendron.avatarPosition.Z) * distance;
            }

            // Position for vertical axis
            if (filodendron.avatarPosition.Y != 0)
            {
                filodendron.avatarPosition.Y += Math.Sign(filodendron.avatarPosition.Y) * distance;
            }

            // Stop falling
            if (filodendron.avatarPosition.Y > 0)
            {
                filodendron.verticalSpeed = 0;
            }

            // My suggestion
            // filodendron.avatarPosition = filodendron.avatarPosition + t;
            // end suggestion
            filodendron.avatarPosition =
                new Vector3(filodendron.avatarPosition.X + -(float)Math.Sin(distance),
                            filodendron.avatarPosition.Y, filodendron.avatarPosition.Z + -(float)Math.Cos(distance));
            //filodendron.avatarPosition = Vector3.Reflect(filodendron.avatarPosition, new Vector3(1, 0, 0));
        }
Ejemplo n.º 6
0
        public FriendSquadron(List<Collidable> collidableList, CollidableType type, float boundingRadius, BasicModel friendModel, List<Friend> friendList, WeaponSystem2D weaponSystem, Vector3 basePosition, int defaultLife, int amtShips, int shipsArsenal)
        {
            CollidableReference = collidableList;
            FriendList = friendList;
            CollidableReference.AddRange(FriendList);
            _basePosition = basePosition;
            _friendModel = friendModel;
            _weaponSystem = weaponSystem;

            _type = type;
            _boundingRadius = boundingRadius;

            _randomVar = new Random();

            //Copies the first friend into a template, so a friend could be easily generated.
            _friendTemplate = new Friend(friendList[0].CollidableType, friendList[0].BoundingSphereRadius, friendList[0].ShipPosition, friendList[0].ShipRotation, friendList[0].MinShipSpeed,
                friendList[0].MaxShipSpeed, friendList[0].Acceleration, friendList[0].TurningSpeed, friendList[0].DistanceThresholdFriend, friendList[0].DistanceThresholdEnemy, friendList[0].Life);

            _defaultLife = defaultLife;

            _amountShips = amtShips;

            _soundDump = new List<Sound>();

            ShipsArsenal = shipsArsenal;
        }
Ejemplo n.º 7
0
        public override bool Init()
        {
            if (!base.Init())
            {
                return(false);
            }

            Effects.InitAll(Device);
            InputLayouts.InitAll(Device);
            RenderStates.InitAll(Device);

            _texMgr = new TextureManager();
            _texMgr.Init(Device);

            _bunnyModel = BasicModel.LoadSdkMesh(Device, _texMgr, "Models/bunny.sdkmesh", "Textures");

            _bunnyInstance = new BasicModelInstance(_bunnyModel);

            _effect = new DirectionalLightingEffect(Device, "FX/forwardLight.fxo");

            var passDesc = _effect.Ambient.GetPassByIndex(0).Description;

            _layout = new InputLayout(Device, passDesc.Signature, InputLayoutDescriptions.PosNormalTexTan);

            AddUIElements();

            return(true);
        }
Ejemplo n.º 8
0
        public Projectile(Vector3 pos, Vector3 direction, Game1 game, Weapon weapon, int type)
        {
            this.direction = direction;
            this.game = game;
            this.pos = pos;
            this.rot.Y = (float)Math.Atan2(direction.X, direction.Z);
            this.weapon = weapon;
            this.type = type;

            speed = 50;
            life = 300;
            delete = false;
            damage = 5;

            col = new CircleCollider(pos, 0.2f);

            boundingBox = new OOBB(pos, direction, 0.3f, 1); // Need to be changed to be actual projectile dimensions

            if(type == 1)
            //            model = new ProjectileModel(this, TextureManager.elecRound64, TextureManager.elecRound64, TextureManager.elecTrail64, Color.Magenta, Color.Purple, game);
                model = new ProjectileModel(ModelLibrary.projectile, pos, this, Color.Green, Color.CornflowerBlue, game);
            else if(type == 0)
                model = new ProjectileModel(ModelLibrary.projectile, pos, this, Color.Orange, Color.Purple, game);
            else
                model = new ProjectileModel(ModelLibrary.projectile, pos, this, new Color(255,0,255), Color.Green, game);

            game.modelManager.addEffect(model);
        }
Ejemplo n.º 9
0
 public CreateTestView(Form1 form, GoTestAdapterI adapter,
                       BasicModel <List <Subject>, List <Subject> > model)
 {
     this.form    = form;
     this.adapter = adapter;
     this.model   = model;
 }
Ejemplo n.º 10
0
        /// <summary>
        /// Primary update method.
        /// </summary>
        /// <param name="gameTime">This game time variable is updated automagically.</param>
        protected override void Update(GameTime gameTime)
        {
            KeyboardState keystate = Keyboard.GetState();

            BasicModel tempModel = _models[0];

            _movementDataReporter = ShipMovement.MoveShip(_movementDataReporter, gameTime, ref tempModel);
            _models[0]            = tempModel;

            if (keystate.IsKeyDown(Keys.Escape))
            {
                this.Exit();
            }

            if (_cameraType == CameraType.TargetCamera)
            {
                _camera.Update();
            }

            if (_cameraType == CameraType.FreeCamera)
            {
                _lastMouseState = ((FreeCamera)_camera).FreeCameraUpdate(gameTime, _camera, _lastMouseState);
            }

            _movementDataReporter = MouseGestures.CheckMouseClicked(_models, _boardPlane, _movementDataReporter, _camera, GraphicsDevice);



            base.Update(gameTime);
        }
Ejemplo n.º 11
0
        public void BuildQuery__Given_Target__When_ExpressionIsPropertyChain__Then_InvokePropertyAndAddFilter
            (BasicModel basicModel)
        {
            var mockQueryContext = new Mock <IQueryContext>();

            var session = Mock.Of <IQuerySession>();

            var mockTarget = new Mock <RemoteQueryable <AllPropertyTypes> >(session, Mock.Of <IQueryProvider>());

            mockTarget
            .Setup(x => x.BuildQuery())
            .Returns(mockQueryContext.Object);

            Expression <Func <AllPropertyTypes, bool> > predicate = x => x.StringProperty == basicModel.PropA;

            var subject = CreateSubject(
                session,
                mockTarget.Object,
                predicate);

            var result = subject.BuildQuery();

            Assert.Same(mockQueryContext.Object, result);

            mockQueryContext.Verify(x => x.AppendFilter("allPropertyTypes", $"stringProperty[eq]'{basicModel.PropA}'"),
                                    Times.Once);
        }
Ejemplo n.º 12
0
        public IHttpActionResult Post([FromBody] BasicModel basicModel)
        {
            if (string.IsNullOrWhiteSpace(basicModel.Value))
            {
                // Another way to handle invalid validations is by adding errors to the modelstate
                ModelState.AddModelError(nameof(basicModel.Value), "value cannot be null, empty, or all whitespace");
            }

            if (!ModelState.IsValid)
            {
                // And then if the modelstate is invalid, we tell them with an HTTP 400
                return(BadRequest(ModelState));
            }

            var basicModelFromData = _data.FirstOrDefault(model => model.Value.Equals(basicModel.Value, System.StringComparison.OrdinalIgnoreCase));

            if (_data.Any(model => model.Id == basicModel.Id))
            {
                // Since Posts create new resources, when the resource already exists, it is a conflict (HTTP 409)
                return(Conflict());
            }

            _data.Add(new BasicModel {
                Id = basicModel.Id, Value = basicModel.Value
            });

            // When there is a way to retrieve the value that was created, you want to send back
            // an HTTP 201 with response header "location" to indicate how to retrieve the resource created
            return(CreatedAtRoute("DemoApi", new { controller = "basic", id = basicModel.Id }, basicModel));
        }
Ejemplo n.º 13
0
        /// <summary>
        /// 插入BasicModel
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static int Insert(BasicModel model)
        {
            string strSql = string.Format(@"INSERT INTO [dbo].[UCML_NationRegion]([ParentNode],[Node],[Code],[Name],[Href],[IsLowerUp],[Level])
                                            VALUES('{0}','{1}','{2}','{3}','{4}','{5}','{6}')", model.ParentNode, model.Node, model.Code, model.Name, model.Href, 0, model.Level);

            return(DbHelperSQL.ExecuteSql(strSql.ToString()));
        }
Ejemplo n.º 14
0
        public EnemyFrigate(BasicModel model, CollidableType type, float boundingRadius, Vector3 shipPosition, Quaternion shipRotation, float minShipSpeed, float maxShipSpeed,
            float turningSpeed, float distanceThresholdEnemy, float distanceThresholdFriend, int life, List<WeaponSystem2D> weaponSystemList)
        {
            ShipPosition = shipPosition;
            ShipWorld = Matrix.CreateTranslation(shipPosition);
            ShipRotation = shipRotation;

            ShipSpeed = 1f;
            MinShipSpeed = minShipSpeed;
            MaxShipSpeed = maxShipSpeed;
            TurningSpeed = turningSpeed;

            DistanceThresholdEnemy = distanceThresholdEnemy;
            DistanceThresholdFriend = distanceThresholdFriend;

            this.CollidableType = type;
            this.BoundingSphereRadius = boundingRadius;
            IsFrigate = true;
            Life = life;

            _model = model;
            _momentum = 0f;
            _shipStopped = true;

            _weaponsList = weaponSystemList;

            _randomVar = new Random();
        }
Ejemplo n.º 15
0
        public async Task QtyUpdate()
        {
            try
            {
                countUpdate = 0;
                var items = await shopService.GetListItem();

                log.Debug("一共有" + items.Count + "件商品需要更新库存");
                bm = storeService.GetBasic("ZY0113");
                //仓库
                listStockCk = bm.StockCk.Split(',').ToList();
                //比例
                listStockPer = bm.StockPer.Split(',').ToList();
                foreach (var item in items)
                {
                    GetAndUpdate(item);
                }
                if (countUpdate == items.Count)
                {
                    log.Debug("ERP同步库存至贝贝店铺完成 一共更新了" + countUpdate + "件商品");
                }
            }
            catch (Exception e)
            {
                log.Error("执行QtyUpdate出错", e);
            }
        }
Ejemplo n.º 16
0
 /// <summary>
 /// Throws and logs an exception if the request made with
 /// the Spotify Web API library is not successful.
 /// </summary>
 private void CheckResponse(BasicModel webAPIResponse)
 {
     if (webAPIResponse.HasError())
     {
         Log.Error($"Something went wrong during a Spotify API request. Statuscode: {webAPIResponse.Error.Status}, ReasonPhrase: {webAPIResponse.Error.Message}");
         throw new SpotifyRequestException("Something went wrong during a Spotify API request.");
     }
 }
Ejemplo n.º 17
0
 public TestingView(Form1 form, GoTestAdapterI adapter,
                    BasicModel <List <Subject>, List <Subject> > model)
 {
     this.form    = form;
     this.adapter = adapter;
     this.model   = model;
     model.subscribe(this);
 }
Ejemplo n.º 18
0
 public void init()
 {
     Block = new BasicModel( "/Application/mdx/box.mdx", 0 );
     rotate = 0;
     preRotate = rotate;
     rotateMoveFlag = 0;
     rotateSpeed = 3.0f;
 }
Ejemplo n.º 19
0
 public void receive(JContainer jC, BasicModel model)
 {
     _typeR.text   = jC.type;
     _userIdR.text = model.userId;
     _s1R.text     = model.s1;
     _s2R.text     = model.s2;
     _i1R.text     = "" + model.i1; //to string
 }
Ejemplo n.º 20
0
 public Planet(Model planetModel, Vector3 position, Quaternion rotation, float rotationSpeed, float scale)
 {
     _planetModel = new BasicModel(planetModel, scale);
     _position = position;
     _rotation = rotation;
     _rotationSpeed = rotationSpeed;
     _scale = scale;
 }
Ejemplo n.º 21
0
 public void damageInitialize(int damage, Vector3 position)
 {
     position.Y = mAvatar.Peek.PlayerModel.Link.Position.Y;
     position.Z *= -1; //fix positioning of z for damage panel
     damagePanel = new BasicModel(Engine.PersistantContainer, ModelProperties.Alpha, "Models\\Planes\\Plane4", position);
     damagePanel.Link.Texture = normalDamage[damage];
     damageList.Add(damagePanel);
 }
Ejemplo n.º 22
0
 public void critInitialize(int damage, Vector3 position)
 {
     position.Y = mAvatar.Peek.PlayerModel.Link.Position.Y;
     position.Z *= -1;
     critPanel = new BasicModel(Engine.PersistantContainer, ModelProperties.Alpha, "Models\\Planes\\Plane4", position);
     critPanel.Link.Texture = critDamage[damage];
     critList.Add(critPanel);
 }
Ejemplo n.º 23
0
 public IHttpActionResult Patch(int id, [FromBody] BasicModel basicModel)
 {
     // For demo purposes, if security is implemented, you can respond with
     // an HTTP 401 to indicate they are not authorized. You can either choose
     // to include a challenge like below or not. When you do, it'll send to the
     // caller an HTTP response header key of "www-authenticate" with the value passed
     // in the constructor.
     return(Unauthorized(new System.Net.Http.Headers.AuthenticationHeaderValue("Basic")));
 }
Ejemplo n.º 24
0
        public static void ThrowOnError(this BasicModel model, string action)
        {
            if (!model.HasError())
            {
                return;
            }

            throw new Exception($"{action} failed. HTTP {model.Error.Status} - {model.Error.Message}");
        }
Ejemplo n.º 25
0
 public Starbase(CollidableType type, float radius, Model starBaseModel, Vector3 position, Quaternion rotation, float scale)
 {
     this.CollidableType = type;
     this.BoundingSphereRadius = radius;
     _baseModel = new BasicModel(starBaseModel, scale);
     _rotation = rotation;
     _scale = scale;
     Position = position;
 }
Ejemplo n.º 26
0
        public void returnToLobby()
        {
            BasicModel b = new BasicModel();

            b.userId = UserName;
            b.s1     = "returnToLobby";
            Debug.Log(b.s1);

            _client.Send(b, "returnToLobby"); //the
        }
Ejemplo n.º 27
0
        public void battleEnded()
        {
            BasicModel b = new BasicModel();

            b.userId = UserName;
            b.s1     = "battleEnd";
            Debug.Log(b.s1);

            _client.Send(b, "battleEnd"); //the
        }
Ejemplo n.º 28
0
        public void formationSet()
        {
            BasicModel b = new BasicModel();

            b.userId = UserName;
            b.s1     = "formationSet";
            Debug.Log(b.s1);

            _client.Send(b, "formationSet"); //the
        }
Ejemplo n.º 29
0
        public void commit()
        {
            BasicModel b = new BasicModel();

            b.userId = UserName;
            b.s1     = "commit";
            Debug.Log(b.s1);

            _client.Send(b, "commit"); //the
        }
Ejemplo n.º 30
0
Archivo: Dock.cs Proyecto: robertg/Soar
        public Dock(CollidableType type, float radius, BasicModel model, Vector3 pos, Quaternion rotation)
        {
            this.CollidableType = type;
            this.BoundingSphereRadius = radius;
            this.BoundingSphereCenter = pos;

            _model = model;
            _position = pos;
            _model.UpdateModel(Matrix.CreateTranslation(_position) * Matrix.CreateFromQuaternion(rotation));
        }
Ejemplo n.º 31
0
        public void mapSuggest()
        {
            BasicModel b = new BasicModel();

            b.userId = UserName;
            b.s1     = "map1";
            Debug.Log(b.s1);

            _client.Send(b, "mapSuggest"); //the
        }
Ejemplo n.º 32
0
        public void userLeft()
        {
            BasicModel b = new BasicModel();

            b.userId = UserName;
            b.s1     = "userLeft";
            Debug.Log(b.s1);

            _client.Send(b, "userLeft"); //the type is not the class, it is the type of message
        }
Ejemplo n.º 33
0
 /// <summary>
 /// Creates DFRSimilarity from the three components.
 /// <p>
 /// Note that <code>null</code> values are not allowed:
 /// if you want no normalization or after-effect, instead pass
 /// <seealso cref="NoNormalization"/> or <seealso cref="NoAfterEffect"/> respectively. </summary>
 /// <param name="basicModel"> Basic model of information content </param>
 /// <param name="afterEffect"> First normalization of information gain </param>
 /// <param name="normalization"> Second (length) normalization </param>
 public DFRSimilarity(BasicModel basicModel, AfterEffect afterEffect, Normalization normalization)
 {
     if (basicModel == null || afterEffect == null || normalization == null)
     {
         throw new System.NullReferenceException("null parameters not allowed.");
     }
     this.BasicModel_Renamed    = basicModel;
     this.AfterEffect_Renamed   = afterEffect;
     this.Normalization_Renamed = normalization;
 }
Ejemplo n.º 34
0
 public FireWorkRule(int type, float minAge, float maxAge, Vector3 minVel, Vector3 maxVel, float damping, BasicModel model)
     : this()
 {
     Type        = type;
     MinAge      = minAge;
     MaxAge      = maxAge;
     MinVelocity = minVel;
     MaxVelocity = maxVel;
     Damping     = damping;
     _model      = model;
 }
        public JsonResult ModalAction_Basic(BasicModel model)
        {
            DynamicModalDisplay response = new DynamicModalDisplay();

            if (ModelState.IsValid)
            {
                response.CloseModal  = true;
                response.PageMessage = Resources.Models.Basic.BASIC_ACTION_COMPLETE;
            }
            return(Json(response));
        }
Ejemplo n.º 36
0
        private BasicModel CreateFireworkModel(Color diffuse)
        {
            var m1 = new BasicModel();

            m1.CreateSphere(Device, .2f, 5, 5);
            m1.Materials[0] = new Material {
                Ambient = Color.White, Diffuse = diffuse, Specular = new Color4(128.0f, 1.0f, 1.0f, 1.0f)
            };

            return(m1);
        }
Ejemplo n.º 37
0
        public BasicModel basicMake()
        {
            BasicModel b = new BasicModel();

            b.userId = _userId.text;
            b.s1     = _s1.text;
            b.s2     = _s2.text;
            b.i1     = int.Parse(_i1.text);

            return(b);
        }
Ejemplo n.º 38
0
 private static void WriteResponse(BasicModel response)
 {
     if (!response.HasError())
     {
         Extensions.WriteColoredConsole("Success", ConsoleColor.Green);
     }
     else
     {
         Extensions.WriteColoredConsole(response.Error.Message, ConsoleColor.Red);
     }
 }
Ejemplo n.º 39
0
 private void RebuildGeosphere()
 {
     if (_inputDelay < 0)
     {
         Util.ReleaseCom(ref _geosphereModel);
         _geosphereModel = new BasicModel();
         _geosphereModel.CreateGeosphere(Device, 5, _subdivisions);
         _geosphere.Model             = _geosphereModel;
         _geosphereModel.Materials[0] = _material;
         _inputDelay = 1;
     }
 }
Ejemplo n.º 40
0
        public void QuaUpdate()
        {
            countUpdate = 0;
            token       = shopService.QueryToken();
            //获取有赞商店里所有的商品
            var items = shopService.GetGoods(token);

            log.Debug("一共有" + items.Count + "件商品需要更新库存");
            bm = storeService.GetBasic("ZY0112");
            //仓库
            listStockCk = bm.StockCk.Split(',').ToList();
            //比例
            listStockPer = bm.StockPer.Split(',').ToList();
            int count     = 10;//每次执行条数
            int pageAll   = items.Count % count == 0 ? items.Count / count : (items.Count / count) + 1;
            int lastCount = items.Count % count;

            for (int i = 0; i < pageAll; i++)
            {
                //最后一页
                if (i == pageAll - 1)
                {
                    if (lastCount != 0)
                    {
                        ThreadPool.QueueUserWorkItem(UpdateData, items.Skip(i * count).Take(lastCount).ToList());
                    }
                    else
                    {
                        ThreadPool.QueueUserWorkItem(UpdateData, items.Skip(i * count).Take(count).ToList());
                    }
                }
                else
                {
                    ThreadPool.QueueUserWorkItem(UpdateData, items.Skip(i * count).Take(count).ToList());
                }
            }
            if (countUpdate == items.Count)
            {
                log.Debug("ERP同步库存至有赞店铺完成 一共更新了" + countUpdate + "件商品");
            }

            //foreach (var item in items)
            //{

            //    //await GetData(item);
            //    //获取上传数据
            // // var listUpdateData = GetData(item.item_id).Result;
            //    //上传数据


            //}
        }
Ejemplo n.º 41
0
 public PlayerConfig(BasicModel model, int life, Vector3 cameraPosition, WeaponSystem2D wS, MissleSystem2D mS, int amtMissles, float maxSS, float minSS, float accl, float tS, float maxTS, float minTS)
 {
     ShipModel = model;
     Life = life;
     CameraFollowPosition = cameraPosition;
     WeaponSystem2D = wS;
     MissleSystem2D = mS;
     AmountMissles = amtMissles;
     MaxShipSpeed = maxSS;
     MinShipSpeed = minSS;
     Acceleration = accl;
     TurningSpeed = tS;
     MaxTurningSpeed = maxTS;
     MinTurningSpeed = minTS;
 }
Ejemplo n.º 42
0
        public PlayerShip(List<Collidable> collidableRef, CollidableType type, float boundingRadius, Model model, Vector3 shipPosition, GraphicsDevice device, Vector3 cameraFollowPosition, float scale, float minShipSpeed, float maxShipSpeed, float acceleration, float turningSpeed,
            float maxTurningSpeed, float minTurningSpeed, WeaponSystem2D weaponSystem2D, MissleSystem2D missleSystem2D, SpawnerManager spawnerManager, PlayerConfig[] playerConfigurations)
        {
            CollidableReference = collidableRef;

            _shipModel = new BasicModel(model, scale);

            ShipWorld = Matrix.CreateTranslation(shipPosition) * Matrix.CreateScale(scale);
            _dockingPosition = shipPosition;
            ShipPosition = shipPosition;

            _shipRotation = Quaternion.Identity;

            Camera = new Camera(device, cameraFollowPosition);

            _keyboard = new KeyboardInput();

            _minShipSpeed = minShipSpeed;
            _maxShipSpeed = maxShipSpeed;
            _acceleration = acceleration;
            _turningSpeed = turningSpeed;
            _gamePadInput = new GamePadInput();

            _weaponSystem2D = weaponSystem2D;
            _device = device;
            _shipRotation.Normalize();

            //Collidable Properties
            this.CollidableType = type;
            this.BoundingSphereRadius = boundingRadius;

            _maxTurningSpeed = maxTurningSpeed;
            _minTurningSpeed = minTurningSpeed;

            Life = 0;

            _soundDump = new List<Sound>();

            spawnerManager.Selected += (object sender, EventArgs args) =>
                {
                    SpawnerManager SM = sender as SpawnerManager;
                    Spawn(SM._selected);
                };

            _missleSystem2D = missleSystem2D;

            _playerConfigurations = playerConfigurations;
        }
Ejemplo n.º 43
0
        public AstGunProjectile(Vector3 pos, Vector3 direction, Game1 game, WeaponMissiles weapons, int type)
            : base()
        {
            this.direction = direction;
            this.game = game;
            this.pos = pos;
            this.rot.Y = (float)Math.Atan2(direction.X, direction.Z);
            this.wep = weapons;
            this.type = type;

            speed = 50;
            life = 120;
            damage = 5;
            active = true;

            col = new CircleCollider(pos, 0.2f);
            if (type == 1)
            {
                c1 = Color.White;
                c2 = Color.Aquamarine;
                model = new AstGunTip(this, game, c2);

            }
            else if (type == 2)
            {
                c1 = Color.White;
                c2 = Color.Purple;
                model = new AstGunTip(this, game, c2);
            }
            else
            {
                c1 = Color.White;
                c2 = Color.Red;
                model = new AstGunTip(this, game, c2);
                trailModel = new AstGunElecTrail(this, game, c1, c2);
                game.modelManager.addEffect(trailModel);
            }

            game.modelManager.addEffect(model);
        }
Ejemplo n.º 44
0
 /// <summary>
 /// Sets the model, life, speed, etc variables to the chosen ship.
 /// </summary>
 public void Spawn(int _selected)
 {
     _shipModel = new BasicModel(_playerConfigurations[_selected].ShipModel.ActualModel, _playerConfigurations[_selected].ShipModel.Scale);
     _weaponSystem2D = _playerConfigurations[_selected].WeaponSystem2D;
     _missleSystem2D = _playerConfigurations[_selected].MissleSystem2D;
     _missleSystem2D.AmountMissles = _playerConfigurations[_selected].AmountMissles;
     Camera.CameraFollowPosition = _playerConfigurations[_selected].CameraFollowPosition;
     _maxShipSpeed = _playerConfigurations[_selected].MaxShipSpeed;
     _minShipSpeed = _playerConfigurations[_selected].MinShipSpeed;
     _acceleration = _playerConfigurations[_selected].Acceleration;
     _turningSpeed = _playerConfigurations[_selected].TurningSpeed;
     _maxTurningSpeed = _playerConfigurations[_selected].MaxTurningSpeed;
     _minTurningSpeed = _playerConfigurations[_selected].MinTurningSpeed;
     Life = _playerConfigurations[_selected].Life;
     ShipPosition = _dockingPosition;
     _shipRotation = Quaternion.Identity;
 }
Ejemplo n.º 45
0
 public void toDeleteObject(BasicModel model)
 {
     toDeleteObjects.Add(model);
 }
Ejemplo n.º 46
0
 public void add(BasicModel model)
 {
     nodeModels.Add(model);
 }
Ejemplo n.º 47
0
        //===========================================================================
        // アプリ初期化
        //===========================================================================
        static void AppInit()
        {
            graphics = new GraphicsContext();

            stopwatch = new Stopwatch();
            stopwatch.Start();

            stage = (short[,])Place.PlaceData0.Clone ();

            //  load models&初期化
            player[0].idle  = new BasicModel( "/Application/mdx/player_idle.mdx", 0 );
            player[0].move  = new BasicModel( "/Application/mdx/player_move.mdx", 0 );
            player[0].clear = new BasicModel( "/Application/mdx/player_happy.mdx", 0 );
            player[0].mode = StateId.lookingDown;

            player[1].idle  = new BasicModel( "/Application/mdx/player2.mdx", 0 );
            player[1].move  = new BasicModel( "/Application/mdx/player2_move.mdx", 0 );
            player[1].clear = new BasicModel( "/Application/mdx/player2_happy.mdx", 0 );
            player[1].mode = StateId.lookingDown;

            mdl_wall		= new BasicModel( "/Application/mdx/box.mdx", 0 );
            mdl_floor		= new BasicModel( "/Application/mdx/floor.mdx", 0 );
            mdl_switch		= new BasicModel( "/Application/mdx/switch.mdx", 0 );

            SampleDraw.Init(graphics);
            /*
            soundClear = new Sound( "/Application/sound/clear.wav" );
            soundPlayerClear = soundClear.CreatePlayer();

            soundhitWall = new Sound( "/Application/sound/hitwall.wav" );
            soundPlayerhitWall =  soundhitWall.CreatePlayer();

            //@e Initialization of BGM
            //@j BGMの初期化
            bgm = new Bgm( "/Application/sound/GameBgm.wav" );
            bgmPlayer = bgm.CreatePlayer();
            bgmPlayer.Loop = true;
            bgmPlayer.Play();
            */
            program = new BasicProgram();

            menuCtrl = new MenuCtrl( graphics );

            rBlock.init();
        }
Ejemplo n.º 48
0
        /// <summary>
        /// Constructor for MapNode. Sets a lot of data based on the type of node it is.
        /// </summary>
        public MapNode(Game1 game, int type, Vector2 pos)
        {
            this.pos = new Vector3(pos.X * 30, 4.5f, pos.Y * 30);
            switch(type)
            {
                case 1:
                    // Is this node included in AI pathfinding?
                    traversable = true;
                    // Set the model for this node
                    model = new TileModel(ModelLibrary.railStraight, new Vector3(pos.X * 30, 0, pos.Y * 30), 0, 1.0f);
                    stationModel = new StationModel(ModelLibrary.stationStraight, new Vector3(pos.X * 30, -3f, pos.Y * 30), MathHelper.PiOver2, 1.0f);

                    //add turret bases
                    game.turretManager.addTurret(new Vector3(pos.X * 30, 4, pos.Y * 30 - 11), Vector3.Forward);
                    game.turretManager.addTurret(new Vector3(pos.X * 30, 4, pos.Y * 30 + 11), Vector3.Backward);

                    // Using the constructor of the OOBB that just takes four corners create the bounding boxes for this node and store their positional data
                    //Top long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    //Bottom long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    break;
                case 2:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railStraight, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2, 1.0f);

                    stationModel = new StationModel(ModelLibrary.stationStraight, new Vector3(pos.X * 30, -3f, pos.Y * 30), 0, 1.0f);

                    //add turret bases
                    game.turretManager.addTurret(new Vector3(pos.X * 30-11, 4, pos.Y * 30), Vector3.Left);
                    game.turretManager.addTurret(new Vector3(pos.X * 30+11, 4, pos.Y * 30), Vector3.Right);

                    //Left long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    //Right long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    break;
                case 3:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railDend, new Vector3(pos.X * 30, 0, pos.Y * 30), 0.0f, 1.0f);
                    stationModel = new StationModel(ModelLibrary.stationDend, new Vector3(pos.X * 30, -3, pos.Y * 30), 0.0f, 1.0f);
                    game.modelManager.addObject(new CollectableDrill(new Vector3(pos.X * 30, 4.5f, pos.Y * 30), game));
                    game.asteroidManager.addShip(new JsConsole(game, new Vector3(pos.X * 30, 0, pos.Y * 30), Vector3.Backward));

                    //Left long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    //Right long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    //Diagonal long top left
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 2), new Vector2((pos.X * 30) - 3, (pos.Y * 30) - 12), new Vector2((pos.X * 30), (pos.Y * 30) - 9), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 1), new Vector3(0.7071068f, 0f, 0.7071068f)));
                    //Diagonal long top right
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 3, (pos.Y * 30) - 12), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 2), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 1), new Vector2((pos.X * 30), (pos.Y * 30) - 9), new Vector3(-0.7071068f, 0f, 0.7071068f)));
                    break;
                case 4:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railDend, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2, 1.0f);
                    stationModel = new StationModel(ModelLibrary.stationDend, new Vector3(pos.X * 30, -3, pos.Y * 30), MathHelper.PiOver2, 1.0f);
                    game.modelManager.addObject(new CollectableDrill(new Vector3(pos.X * 30, 4.5f, pos.Y * 30), game));
                    game.asteroidManager.addShip(new JsConsole(game, new Vector3(pos.X * 30, 0, pos.Y * 30), Vector3.Right));

                    //Top long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    //Bottom long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    //Diagonal long top left
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 2), new Vector2((pos.X * 30) - 3, (pos.Y * 30) - 12), new Vector2((pos.X * 30), (pos.Y * 30) - 9), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 1), new Vector3(0.7071068f, 0f, 0.7071068f)));
                    //Diagonal long bottom left
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 9, (pos.Y * 30)), new Vector2((pos.X * 30) + 1, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 2, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 12, (pos.Y * 30) - 3), new Vector3(0.7071068f, 0f, -0.7071068f)));
                    break;
                case 5:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railDend, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 2, 1.0f);
                    stationModel = new StationModel(ModelLibrary.stationDend, new Vector3(pos.X * 30, -3, pos.Y * 30), MathHelper.Pi, 1.0f);
                    game.modelManager.addObject(new CollectableDrill(new Vector3(pos.X * 30, 4.5f, pos.Y * 30), game));
                                        game.asteroidManager.addShip(new JsConsole(game, new Vector3(pos.X * 30, 0, pos.Y * 30), Vector3.Forward));

                    //Left long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    //Right long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    //Diagonal long bottom left
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 9, (pos.Y * 30)), new Vector2((pos.X * 30) + 1, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 2, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 12, (pos.Y * 30) - 3), new Vector3(0.7071068f, 0f, -0.7071068f)));
                    //Diagonal long bottom right
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30), (pos.Y * 30) + 9), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 1), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 2), new Vector2((pos.X * 30) + 3, (pos.Y * 30) + 12), new Vector3(-0.7071068f, 0f, -0.7071068f)));
                    break;
                case 6:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railDend, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 3, 1.0f);
                    stationModel = new StationModel(ModelLibrary.stationDend, new Vector3(pos.X * 30, -3, pos.Y * 30), MathHelper.PiOver2 * 3, 1.0f);
                    game.modelManager.addObject(new CollectableDrill(new Vector3(pos.X * 30, 4.5f, pos.Y * 30), game));
                    game.asteroidManager.addShip(new JsConsole(game, new Vector3(pos.X * 30, 0, pos.Y * 30), Vector3.Left));

                    //Top long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    //Bottom long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    //Diagonal long top right
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 3, (pos.Y * 30) - 12), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 2), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 1), new Vector2((pos.X * 30), (pos.Y * 30) - 9), new Vector3(-0.7071068f, 0f, 0.7071068f)));
                    //Diagonal long bottom right
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30), (pos.Y * 30) + 9), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 1), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 2), new Vector2((pos.X * 30) + 3, (pos.Y * 30) + 12), new Vector3(-0.7071068f, 0f, -0.7071068f)));
                    break;
                case 7:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railDend, new Vector3(pos.X * 30, 0, pos.Y * 30), 0.0f, 1.0f);
                    stationModel = new StationModel(ModelLibrary.stationDend, new Vector3(pos.X * 30, -3, pos.Y * 30), 0.0f, 1.0f);
                    game.modelManager.addAdditive(new SpawnVortex(new Vector3(pos.X * 30, 4.5f, pos.Y * 30+10), new Vector3(0,MathHelper.Pi,0),game));

                    //Left long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    //Right long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    //Diagonal long top left
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 2), new Vector2((pos.X * 30) - 3, (pos.Y * 30) - 12), new Vector2((pos.X * 30), (pos.Y * 30) - 9), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 1), new Vector3(0.7071068f, 0f, 0.7071068f)));
                    //Diagonal long top right
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 3, (pos.Y * 30) - 12), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 2), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 1), new Vector2((pos.X * 30), (pos.Y * 30) - 9), new Vector3(-0.7071068f, 0f, 0.7071068f)));
                    break;
                case 8:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railDend, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2, 1.0f);
                    stationModel = new StationModel(ModelLibrary.stationDend, new Vector3(pos.X * 30, -3, pos.Y * 30), MathHelper.PiOver2, 1.0f);
                    game.modelManager.addAdditive(new SpawnVortex(new Vector3(pos.X * 30+10, 4.5f, pos.Y * 30), new Vector3(0, MathHelper.Pi*1.5f, 0), game));

                    //Top long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    //Bottom long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    //Diagonal long top left
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 2), new Vector2((pos.X * 30) - 3, (pos.Y * 30) - 12), new Vector2((pos.X * 30), (pos.Y * 30) - 9), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 1), new Vector3(0.7071068f, 0f, 0.7071068f)));
                    //Diagonal long bottom left
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 9, (pos.Y * 30)), new Vector2((pos.X * 30) + 1, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 2, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 12, (pos.Y * 30) - 3), new Vector3(0.7071068f, 0f, -0.7071068f)));
                    break;
                case 9:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railDend, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 2, 1.0f);
                    stationModel = new StationModel(ModelLibrary.stationDend, new Vector3(pos.X * 30, -3, pos.Y * 30), MathHelper.Pi, 1.0f);
                    game.modelManager.addAdditive(new SpawnVortex(new Vector3(pos.X * 30, 4.5f, pos.Y * 30-10), new Vector3(0, 0, 0), game));

                    //Left long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    //Right long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    //Diagonal long bottom left
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 9, (pos.Y * 30)), new Vector2((pos.X * 30) + 1, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 2, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 12, (pos.Y * 30) - 3), new Vector3(0.7071068f, 0f, -0.7071068f)));
                    //Diagonal long bottom right
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30), (pos.Y * 30) + 9), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 1), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 2), new Vector2((pos.X * 30) + 3, (pos.Y * 30) + 12), new Vector3(-0.7071068f, 0f, -0.7071068f)));
                    break;
                case 10:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railDend, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2*3, 1.0f);
                    stationModel = new StationModel(ModelLibrary.stationDend, new Vector3(pos.X * 30, -3, pos.Y * 30), MathHelper.PiOver2 * 3, 1.0f);
                    game.modelManager.addAdditive(new SpawnVortex(new Vector3(pos.X * 30-10, 4.5f, pos.Y * 30), new Vector3(0, MathHelper.PiOver2, 0), game));

                    //Top long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    //Bottom long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    //Diagonal long top right
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 3, (pos.Y * 30) - 12), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 2), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 1), new Vector2((pos.X * 30), (pos.Y * 30) - 9), new Vector3(-0.7071068f, 0f, 0.7071068f)));
                    //Diagonal long bottom right
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30), (pos.Y * 30) + 9), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 1), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 2), new Vector2((pos.X * 30) + 3, (pos.Y * 30) + 12), new Vector3(-0.7071068f, 0f, -0.7071068f)));
                    break;
                case 11:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railTInt4, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 3, 1);
                    stationModel = new StationModel(ModelLibrary.stationTInt4, new Vector3(pos.X * 30, -3, pos.Y * 30), 0.0f, 1.0f);

                    //top left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 12), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) - 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector3(0.7071068f, 0f, 0.7071068f)));
                    //top right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 13), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) + 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-0.7071068f, 0f, 0.7071068f)));
                    //bottom right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 14, (pos.Y * 30) + 11), new Vector2((pos.X * 30) + 11, (pos.Y * 30) + 14), new Vector3(-0.7071068f, 0f, -0.7071068f)));
                    //bottom left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 11, (pos.Y * 30) + 14), new Vector2((pos.X * 30) - 14, (pos.Y * 30) + 11), new Vector3(0.7071068f, 0f, -0.7071068f)));
                    break;
                case 12:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railTInt3, new Vector3(pos.X * 30, 0, pos.Y * 30), 0.0f, 1);
                    stationModel = new StationModel(ModelLibrary.stationTInt3, new Vector3(pos.X * 30, -3, pos.Y * 30), 0.0f, 1.0f);

                    //Left long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    //top right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 13), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) + 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-0.7071068f, 0f, 0.7071068f)));
                    //bottom right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 14, (pos.Y * 30) + 11), new Vector2((pos.X * 30) + 11, (pos.Y * 30) + 14), new Vector3(-0.7071068f, 0f, -0.7071068f)));
                    break;
                case 13:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railTInt3, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2, 1);
                    stationModel = new StationModel(ModelLibrary.stationTInt3, new Vector3(pos.X * 30, -3, pos.Y * 30), MathHelper.PiOver2, 1.0f);

                    //Bottom long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    //top left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 12), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) - 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector3(0.7071068f, 0f, 0.7071068f)));
                    //top right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 13), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) + 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-0.7071068f, 0f, 0.7071068f)));
                    break;
                case 14:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railTInt3, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 2, 1);
                    stationModel = new StationModel(ModelLibrary.stationTInt3, new Vector3(pos.X * 30, -3, pos.Y * 30), MathHelper.Pi, 1.0f);

                    //Right long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    //top left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 12), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) - 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector3(0.7071068f, 0f, 0.7071068f)));
                    //bottom left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 11, (pos.Y * 30) + 14), new Vector2((pos.X * 30) - 14, (pos.Y * 30) + 11), new Vector3(0.7071068f, 0f, -0.7071068f)));
                    break;
                case 15:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railTInt3, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 3, 1);
                    stationModel = new StationModel(ModelLibrary.stationTInt3, new Vector3(pos.X * 30, -3, pos.Y * 30), MathHelper.PiOver2 * 3, 1.0f);

                    //Top long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    //bottom left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 11, (pos.Y * 30) + 14), new Vector2((pos.X * 30) - 14, (pos.Y * 30) + 11), new Vector3(0.7071068f, 0f, -0.7071068f)));
                    //bottom right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 14, (pos.Y * 30) + 11), new Vector2((pos.X * 30) + 11, (pos.Y * 30) + 14), new Vector3(-0.7071068f, 0f, -0.7071068f)));
                    break;
                case 16:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railCorner, new Vector3(pos.X * 30, 0, pos.Y * 30), 0.0f, 1.0f);
                    stationModel = new StationModel(ModelLibrary.stationCorner, new Vector3(pos.X * 30, -3, pos.Y * 30), 0.0f, 1.0f);

                    //Top long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    //Left long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    //Diagonal long top left
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 2), new Vector2((pos.X * 30) - 3, (pos.Y * 30) - 12), new Vector2((pos.X * 30), (pos.Y * 30) - 9), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 1), new Vector3(0.7071068f, 0f, 0.7071068f)));
                    //bottom right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 14, (pos.Y * 30) + 11), new Vector2((pos.X * 30) + 11, (pos.Y * 30) + 14), new Vector3(-0.7071068f, 0f, -0.7071068f)));
                    break;
                case 17:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railCorner, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2, 1.0f);
                    stationModel = new StationModel(ModelLibrary.stationCorner, new Vector3(pos.X * 30, -3, pos.Y * 30), MathHelper.PiOver2, 1.0f);

                    //Bottom long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    //Left long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    //Diagonal long bottom left
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 9, (pos.Y * 30)), new Vector2((pos.X * 30) + 1, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 2, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 12, (pos.Y * 30) - 3), new Vector3(0.7071068f, 0f, -0.7071068f)));
                    //top right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 13), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) + 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-0.7071068f, 0f, 0.7071068f)));
                    break;
                case 18:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railCorner, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 2, 1.0f);
                    stationModel = new StationModel(ModelLibrary.stationCorner, new Vector3(pos.X * 30, -3, pos.Y * 30), MathHelper.Pi, 1.0f);

                    //Bottom long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    //Right long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    //Diagonal long bottom right
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30), (pos.Y * 30) + 9), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 1), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 2), new Vector2((pos.X * 30) + 3, (pos.Y * 30) + 12), new Vector3(-0.7071068f, 0f, -0.7071068f)));
                    //top left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 12), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) - 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector3(0.7071068f, 0f, 0.7071068f)));
                    break;
                case 19:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railCorner, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 3, 1.0f);
                    stationModel = new StationModel(ModelLibrary.stationCorner, new Vector3(pos.X * 30, -3, pos.Y * 30), MathHelper.PiOver2 * 3, 1.0f);

                    //Top long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    //Right long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    //Diagonal long top right
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 3, (pos.Y * 30) - 12), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 2), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 1), new Vector2((pos.X * 30), (pos.Y * 30) - 9), new Vector3(-0.7071068f, 0f, 0.7071068f)));
                    //bottom left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 11, (pos.Y * 30) + 14), new Vector2((pos.X * 30) - 14, (pos.Y * 30) + 11), new Vector3(0.7071068f, 0f, -0.7071068f)));
                    break;
                case 20:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railCorst, new Vector3(pos.X * 30, 0, pos.Y * 30), 0.0f, 1);
                    //Left long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    //top right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 13), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) + 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-0.7071068f, 0f, 0.7071068f)));
                    break;
                case 21:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railStraight1, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 3, 1.0f);
                    //Top long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    break;
                case 22:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railCorstFlip, new Vector3(pos.X * 30, 0, pos.Y * 30), 0.0f, 1);
                    //Right long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    //top left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 12), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) - 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector3(0.7071068f, 0f, 0.7071068f)));
                    break;
                case 23:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railStraight1, new Vector3(pos.X * 30, 0, pos.Y * 30), 0.0f, 1.0f);
                    //Left long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    break;
                case 24:
                    traversable = true;
                    game.core.setPos(new Vector3(pos.X * 30, 0, pos.Y * 30));
                    stationModel = new BaseModel(new Vector3(pos.X*30, 0, pos.Y*30));
                    coreCollider = new CircleCollider(pos, 7.38f);
                    break;
                case 25:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railStraight1, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 2, 1.0f);
                    //Right long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    break;
                case 26:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railCorner1big, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2, 1.0f);
                    //Bottom long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    //Left long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    //Diagonal long bottom left
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 9, (pos.Y * 30)), new Vector2((pos.X * 30) + 1, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 2, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 12, (pos.Y * 30) - 3), new Vector3(0.7071068f, 0f, -0.7071068f)));
                    break;
                case 27:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railStraight1, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2, 1.0f);
                    //Bottom long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    game.ship.setRespawn(new Vector3(pos.X * 30, 4.5f, pos.Y * 30+8));
                    break;
                case 28:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railCorner1big, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 2, 1.0f);
                    //Bottom long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    //Right long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    //Diagonal long bottom right
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30), (pos.Y * 30) + 9), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 1), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 2), new Vector2((pos.X * 30) + 3, (pos.Y * 30) + 12), new Vector3(-0.7071068f, 0f, -0.7071068f)));
                    break;
                case 29:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railCorner1big, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2, 1.0f);
                    //Top long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    //Left long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    //Diagonal long top left
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 2), new Vector2((pos.X * 30) - 3, (pos.Y * 30) - 12), new Vector2((pos.X * 30), (pos.Y * 30) - 9), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 1), new Vector3(0.7071068f, 0f, 0.7071068f)));
                    break;
                case 30:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railCorner1big, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 3, 1.0f);
                    //Top long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    //Right long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    //Diagonal long top right
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 3, (pos.Y * 30) - 12), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 2), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 1), new Vector2((pos.X * 30), (pos.Y * 30) - 9), new Vector3(-0.7071068f, 0f, 0.7071068f)));
                    break;
                case 31:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railCorner2small, new Vector3(pos.X * 30, 0, pos.Y * 30), 0.0f, 1.0f);
                    //top left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 12), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) - 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector3(0.7071068f, 0f, 0.7071068f)));
                    //bottom left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 11, (pos.Y * 30) + 14), new Vector2((pos.X * 30) - 14, (pos.Y * 30) + 11), new Vector3(0.7071068f, 0f, -0.7071068f)));
                    break;
                case 32:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railCorner2small, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 2, 1.0f);
                    //top right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 13), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) + 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-0.7071068f, 0f, 0.7071068f)));
                    //bottom right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 14, (pos.Y * 30) + 11), new Vector2((pos.X * 30) + 11, (pos.Y * 30) + 14), new Vector3(-0.7071068f, 0f, -0.7071068f)));
                    break;
                case 33:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railCorner2small, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 3, 1.0f);
                    //top left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 12), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) - 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector3(0.7071068f, 0f, 0.7071068f)));
                    //top right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 13), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) + 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-0.7071068f, 0f, 0.7071068f)));
                    break;
                case 34:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railCorner2small, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2, 1.0f);
                    //bottom right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 14, (pos.Y * 30) + 11), new Vector2((pos.X * 30) + 11, (pos.Y * 30) + 14), new Vector3(-0.7071068f, 0f, -0.7071068f)));
                    //bottom left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 11, (pos.Y * 30) + 14), new Vector2((pos.X * 30) - 14, (pos.Y * 30) + 11), new Vector3(0.7071068f, 0f, -0.7071068f)));
                    break;
                case 35:
                    traversable = false;
                    model = new TileModel(ModelLibrary.railCorner1big, new Vector3(pos.X * 30, 0, pos.Y * 30), 0.0f, 1.0f);
                    //Top long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    //Left long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    //Diagonal long top left
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 2), new Vector2((pos.X * 30) - 3, (pos.Y * 30) - 12), new Vector2((pos.X * 30), (pos.Y * 30) - 9), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 1), new Vector3(0.7071068f, 0f, 0.7071068f)));
                    break;
                case 36:
                    traversable = false;
                    model = new TileModel(ModelLibrary.railCorner1big, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2, 1.0f);
                    //Bottom long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    //Left long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    //Diagonal long bottom left
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 9, (pos.Y * 30)), new Vector2((pos.X * 30) + 1, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 2, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 12, (pos.Y * 30) - 3), new Vector3(0.7071068f, 0f, -0.7071068f)));
                    break;
                case 37:
                    traversable = false;
                    model = new TileModel(ModelLibrary.railCorner1big, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 2, 1.0f);
                    //Bottom long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    //Right long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    //Diagonal long bottom right
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30), (pos.Y * 30) + 9), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 1), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 2), new Vector2((pos.X * 30) + 3, (pos.Y * 30) + 12), new Vector3(-0.7071068f, 0f, -0.7071068f)));
                    break;
                case 38:
                    traversable = false;
                    model = new TileModel(ModelLibrary.railCorner1big, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 3, 1.0f);
                    //Top long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    //Right long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    //Diagonal long top right
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 3, (pos.Y * 30) - 12), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 2), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 1), new Vector2((pos.X * 30), (pos.Y * 30) - 9), new Vector3(-0.7071068f, 0f, 0.7071068f)));
                    break;
                case 39:
                    traversable = false;
                    model = new TileModel(ModelLibrary.railStraight1, new Vector3(pos.X * 30, 0, pos.Y * 30), 0.0f, 1.0f);
                    //Left long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    break;
                case 40:
                    traversable = false;
                    model = new TileModel(ModelLibrary.railStraight1, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2, 1.0f);
                    //Bottom long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    break;
                case 41:
                    traversable = false;
                    model = new TileModel(ModelLibrary.railStraight1, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 2, 1.0f);
                    //Right long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    break;
                case 42:
                    traversable = false;
                    model = new TileModel(ModelLibrary.railStraight1, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 3, 1.0f);
                    //Top long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    break;
                case 43:
                    traversable = false;
                    game.modelManager.addAdditive(new Forcefield(game, new Vector3(pos.X * 30-15.5f, 0, pos.Y * 30), 1));
                    model = new TileModel(ModelLibrary.railCorner2small, new Vector3(pos.X * 30, 0, pos.Y * 30), 0.0f, 1.0f);
                    //top left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 12), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) - 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector3(0.7071068f, 0f, 0.7071068f)));
                    //bottom left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 11, (pos.Y * 30) + 14), new Vector2((pos.X * 30) - 14, (pos.Y * 30) + 11), new Vector3(0.7071068f, 0f, -0.7071068f)));
                    //asteroid force field
                    asteroidBox = new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15));
                    break;
                case 44:
                    traversable = false;
                    game.modelManager.addAdditive(new Forcefield(game, new Vector3(pos.X * 30, 0, pos.Y * 30 + 15.5f), 0));
                    model = new TileModel(ModelLibrary.railCorner2small, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2, 1.0f);
                    //bottom right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 14, (pos.Y * 30) + 11), new Vector2((pos.X * 30) + 11, (pos.Y * 30) + 14), new Vector3(-0.7071068f, 0f, -0.7071068f)));
                    //bottom left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 11, (pos.Y * 30) + 14), new Vector2((pos.X * 30) - 14, (pos.Y * 30) + 11), new Vector3(0.7071068f, 0f, -0.7071068f)));
                    //asteroid force field
                    asteroidBox = new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15));
                    break;
                case 45:
                    traversable = false;
                    game.modelManager.addAdditive(new Forcefield(game, new Vector3(pos.X * 30 + 15.5f, 0, pos.Y * 30), 1));
                    model = new TileModel(ModelLibrary.railCorner2small, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 2, 1.0f);
                    //top right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 13), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) + 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-0.7071068f, 0f, 0.7071068f)));
                    //bottom right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 14, (pos.Y * 30) + 11), new Vector2((pos.X * 30) + 11, (pos.Y * 30) + 14), new Vector3(-0.7071068f, 0f, -0.7071068f)));
                    //asteroid force field
                    asteroidBox = new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15));
                    break;
                case 46:
                    traversable = false;
                    game.modelManager.addAdditive(new Forcefield(game, new Vector3(pos.X * 30, 0, pos.Y * 30 - 15.5f), 0));
                    model = new TileModel(ModelLibrary.railCorner2small, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 3, 1.0f);
                    //top left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 12), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) - 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector3(0.7071068f, 0f, 0.7071068f)));
                    //top right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 13), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) + 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-0.7071068f, 0f, 0.7071068f)));
                    //asteroid force field
                    asteroidBox = new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10));
                    break;
                case 47:
                    traversable = false;
                    model = new TileModel(ModelLibrary.railCorner1small, new Vector3(pos.X * 30, 0, pos.Y * 30), 0.0f, 1.0f);
                    //top left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 12), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) - 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector3(0.7071068f, 0f, 0.7071068f)));
                    break;
                case 48:
                    traversable = false;
                    model = new TileModel(ModelLibrary.railCorner1small, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2, 1.0f);
                    //bottom left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 11, (pos.Y * 30) + 14), new Vector2((pos.X * 30) - 14, (pos.Y * 30) + 11), new Vector3(0.7071068f, 0f, -0.7071068f)));
                    break;
                case 49:
                    traversable = false;
                    model = new TileModel(ModelLibrary.railCorner1small, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 2, 1.0f);
                    //bottom right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 14, (pos.Y * 30) + 11), new Vector2((pos.X * 30) + 11, (pos.Y * 30) + 14), new Vector3(-0.7071068f, 0f, -0.7071068f)));
                    break;
                case 50:
                    traversable = false;
                    model = new TileModel(ModelLibrary.railCorner1small, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 3, 1.0f);
                    //top right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 13), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) + 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-0.7071068f, 0f, 0.7071068f)));
                    break;
                case 51:
                    traversable = false;
                    game.modelManager.addAdditive(new Forcefield(game, new Vector3(pos.X * 30, 0, pos.Y * 30 - 15.5f), 0));
                    model = new TileModel(ModelLibrary.railCorst, new Vector3(pos.X * 30, 0, pos.Y * 30), 0.0f, 1);
                    //Left long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    //top right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 13), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) + 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-0.7071068f, 0f, 0.7071068f)));
                    //asteroid force field
                    asteroidBox = new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1));
                    break;
                case 52:
                    traversable = false;
                    game.modelManager.addAdditive(new Forcefield(game, new Vector3(pos.X * 30 - 15.5f, 0, pos.Y * 30), 1));
                    model = new TileModel(ModelLibrary.railCorst, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2, 1);
                    //Bottom long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    //top left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 12), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) - 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector3(0.7071068f, 0f, 0.7071068f)));
                    //asteroid force field
                    asteroidBox = new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0));
                    break;
                case 53:
                    traversable = false;
                    game.modelManager.addAdditive(new Forcefield(game, new Vector3(pos.X * 30, 0, pos.Y * 30 + 15.5f), 0));
                    model = new TileModel(ModelLibrary.railCorst, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 2, 1);
                    //Top long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    //bottom right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 14, (pos.Y * 30) + 11), new Vector2((pos.X * 30) + 11, (pos.Y * 30) + 14), new Vector3(-0.7071068f, 0f, -0.7071068f)));
                    //asteroid force field
                    asteroidBox = new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0));
                    break;
                case 54:
                    traversable = false;
                    game.modelManager.addAdditive(new Forcefield(game, new Vector3(pos.X * 30 + 15.5f, 0, pos.Y * 30), 1));
                    model = new TileModel(ModelLibrary.railCorst, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 3, 1);
                    //Right long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    //bottom left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 11, (pos.Y * 30) + 14), new Vector2((pos.X * 30) - 14, (pos.Y * 30) + 11), new Vector3(0.7071068f, 0f, -0.7071068f)));
                    //asteroid force field
                    asteroidBox = new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1));
                    break;
                case 55:
                    traversable = false;
                    game.modelManager.addAdditive(new Forcefield(game, new Vector3(pos.X * 30, 0, pos.Y * 30 - 15.5f), 0));
                    model = new TileModel(ModelLibrary.railCorstFlip, new Vector3(pos.X * 30, 0, pos.Y * 30), 0.0f, 1);
                    //Right long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    //top left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 12), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) - 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 13), new Vector2((pos.X * 30) - 13, (pos.Y * 30) - 10), new Vector3(0.7071068f, 0f, 0.7071068f)));
                    //asteroid force field
                    asteroidBox = new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1));
                    break;
                case 56:
                    traversable = false;
                    game.modelManager.addAdditive(new Forcefield(game, new Vector3(pos.X * 30 - 15.5f, 0, pos.Y * 30), 1));
                    model = new TileModel(ModelLibrary.railCorstFlip, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2, 1);
                    //Top long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    //bottom left little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) - 11, (pos.Y * 30) + 14), new Vector2((pos.X * 30) - 14, (pos.Y * 30) + 11), new Vector3(0.7071068f, 0f, -0.7071068f)));
                    //asteroid force field
                    asteroidBox = new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0));
                    break;
                case 57:
                    traversable = false;
                    game.modelManager.addAdditive(new Forcefield(game, new Vector3(pos.X * 30, 0, pos.Y * 30 + 15.5f), 0));
                    model = new TileModel(ModelLibrary.railCorstFlip, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 2, 1);
                    //Left long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    //bottom right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 13), new Vector2((pos.X * 30) + 13, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 14, (pos.Y * 30) + 11), new Vector2((pos.X * 30) + 11, (pos.Y * 30) + 14), new Vector3(-0.7071068f, 0f, -0.7071068f)));
                    //asteroid force field
                    asteroidBox = new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1));
                    break;
                case 58:
                    traversable = false;
                    game.modelManager.addAdditive(new Forcefield(game, new Vector3(pos.X * 30 + 15.5f, 0, pos.Y * 30), 1));
                    model = new TileModel(ModelLibrary.railCorstFlip, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2 * 3, 1);
                    //Bottom long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 10), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(0, 0, -1)));
                    //top right little corner
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 13), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-1, 0, 0)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector3(0, 0, 1)));
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 11, (pos.Y * 30) - 14), new Vector2((pos.X * 30) + 14, (pos.Y * 30) - 11), new Vector2((pos.X * 30) + 13, (pos.Y * 30) - 10), new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 13), new Vector3(-0.7071068f, 0f, 0.7071068f)));
                    //asteroid force field
                    asteroidBox = new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0));
                    break;
                case 59:
                    traversable = false;

                    //model = new TileModel(game.Content.Load<Model>(@"Models/TempRails/corstProto"), new Vector3(pos.X * 30, 0, pos.Y * 30), 0.0f, 1.0f);
                    break;
                case 60:
                    traversable = false;
                    break;
                case 61:
                    traversable = false;
                    model = new TileModel(ModelLibrary.node60, new Vector3(pos.X * 30, 0, pos.Y * 30), 0, 1);
                    break;
                case 62:
                    traversable = true;
                    model = new TileModel(ModelLibrary.railStraight, new Vector3(pos.X * 30, 0, pos.Y * 30), MathHelper.PiOver2, 1.0f);

                    //add turret bases
                    game.turretManager.addTurret(new Vector3(pos.X * 30 - 11, 4, pos.Y * 30), Vector3.Left);
                    game.turretManager.addTurret(new Vector3(pos.X * 30 + 11, 4, pos.Y * 30), Vector3.Right);

                    //Left long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) - 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) - 10, (pos.Y * 30) + 15), new Vector2((pos.X * 30) - 15, (pos.Y * 30) + 15), new Vector3(1, 0, 0)));
                    //Right long
                    collisionBoxes.Add(new OOBB(new Vector2((pos.X * 30) + 10, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) - 15), new Vector2((pos.X * 30) + 15, (pos.Y * 30) + 15), new Vector2((pos.X * 30) + 10, (pos.Y * 30) + 15), new Vector3(-1, 0, 0)));
                    break;
                default:
                    traversable = false;
                    //model = new TileModel(game.Content.Load<Model>(@"Models/TempRails/corstProto"), new Vector3(pos.X * 30, 0, pos.Y * 30), 0.0f, 1.0f);
                    break;
            }

            if(type > 34 && type < 60)//if the type is in the range of asteroid tiles
                game.asteroidManager.addPos(this);

            position = pos;
            this.type = type;
            damage = 0;
            playerDamage = 0;
            neighbors = new MapNode[4];
            if (model != null)
            {
                game.modelManager.addAdditive(model);
            }

            if (stationModel != null)
            {
                game.modelManager.add(stationModel);
            }
        }
Ejemplo n.º 49
0
 public void Setup()
 {
     _matcher = new BasicMatcher();
     _be = new BasicEntity { Id = Guid.NewGuid(), Name = "Dillon", Number = 69 };
     _bm = new BasicModel { id = Guid.NewGuid(), name = "Dillon", number = 69 };
 }
Ejemplo n.º 50
0
 public void addAdditive(BasicModel model)
 {
     additiveModels.Add(model);
 }
Ejemplo n.º 51
0
 /// <summary>
 /// Creates DFRSimilarity from the three components.
 /// <p>
 /// Note that <code>null</code> values are not allowed:
 /// if you want no normalization or after-effect, instead pass
 /// <seealso cref="NoNormalization"/> or <seealso cref="NoAfterEffect"/> respectively. </summary>
 /// <param name="basicModel"> Basic model of information content </param>
 /// <param name="afterEffect"> First normalization of information gain </param>
 /// <param name="normalization"> Second (length) normalization </param>
 public DFRSimilarity(BasicModel basicModel, AfterEffect afterEffect, Normalization normalization)
 {
     if (basicModel == null || afterEffect == null || normalization == null)
     {
         throw new System.NullReferenceException("null parameters not allowed.");
     }
     this.BasicModel_Renamed = basicModel;
     this.AfterEffect_Renamed = afterEffect;
     this.Normalization_Renamed = normalization;
 }
Ejemplo n.º 52
0
Archivo: Game1.cs Proyecto: hatRiot/XNA
    protected override void Update(GameTime gameTime)
    {
        networkHelper.Update();
        KeyboardState keyboardState = Keyboard.GetState();

        if (keyboardState.IsKeyDown(Keys.Escape))   // If ESC is pressed
            this.Exit();    // Exit the game

        if (!networkHelper.gameStart)
        {
            if (keyboardState.IsKeyDown(Keys.F1))
            {
                networkHelper.SignInGamer();
            }

            if (keyboardState.IsKeyDown(Keys.F2))
            {
                networkHelper.CreateSession();
                Host = true;
                camera = new Camera(this, hostPos);
                Components.Add(camera);         // Add camera to components
                Player2 = new Vector3(100, 100, 100);
                playerModel = new BasicModel(Content.Load<Model>("spaceship"));
            }

            if (keyboardState.IsKeyDown(Keys.F3))
            {
                networkHelper.FindSession();
                Guest = true;
                camera = new Camera(this, guestPos);
                Components.Add(camera);         // Add camera to components
                Player2 = new Vector3(100, 100, 100);
                playerModel = new BasicModel(Content.Load<Model>("spaceship"));
            }

            if (keyboardState.IsKeyDown(Keys.F4))
            {
                networkHelper.AsyncFindSession();
                Guest = true;
                camera = new Camera(this, guestPos);
                Components.Add(camera);         // Add camera to components
                Player2 = new Vector3(100, 100, 100);
                playerModel = new BasicModel(Content.Load<Model>("spaceship"));
            }

            if (Mouse.GetState().LeftButton == ButtonState.Pressed && (gameTime.TotalGameTime.TotalSeconds - shotTimer) >= 1)
            {
                shotTimer = gameTime.TotalGameTime.TotalSeconds;
                bulletPos.Add(camera.cameraPosition);
                bulletVel.Add(camera.forward);
                x = true;
            }
            if (bulletPos.Count > 0)
                bulletModel.Update(bulletPos[0]);
            playerModel.Update(Player2);
            jumpPadModel1.Update(jumpPadLocation1);

            if (camera.angle != pAngle)
            {
                Vector3 newgunPosition = gunPosition - camera.cameraPosition;
                newgunPosition = Vector3.Transform(newgunPosition, Matrix.CreateRotationY(pAngle.Y - camera.angle.Y));
                gunPosition = newgunPosition + camera.cameraPosition;
            }
            if (pAngle.X != camera.angle.X)
            {
                float dotprod, angle, degree;
                Vector3 tempAngle = gunPosition - camera.cameraPosition;
                tempAngle = Vector3.Transform(tempAngle, Matrix.CreateRotationY(0 - camera.angle.Y));

                dotprod = Vector3.Dot(camera.angle, tempAngle);
                angle = (float)Math.Acos(dotprod);
                degree = angle * 180 / MathHelper.Pi;
                Console.WriteLine(degree);

                tempAngle = Vector3.Transform(tempAngle, Matrix.CreateRotationX(pAngle.X - camera.angle.X));
                tempAngle = Vector3.Transform(tempAngle, Matrix.CreateRotationY(camera.angle.Y - 0));
                tempAngle = tempAngle + camera.cameraPosition;

            }
            /*gunPosition = camera.cameraPosition;
            gunPosition.Z -= 11;
            gunPosition.X += 6;
            gunPosition.Y -= 2;*/
            gunPosition.Y = camera.cameraPosition.Y - 2;
            //gunPosition.X = camera.cameraPosition.X + 6;
            //gunPosition.Z = camera.cameraPosition.Z - 11;
            gun.Update(gunPosition);

            pAngle = camera.angle;
        }
        else
        {
            if (Mouse.GetState().LeftButton == ButtonState.Pressed && (gameTime.TotalGameTime.TotalSeconds - shotTimer) >= 1)
            {
                shotTimer = gameTime.TotalGameTime.TotalSeconds;
                bulletPos.Add(camera.cameraPosition);
                bulletVel.Add(camera.forward);
                x = true;
            }

            if (bulletPos.Count > 0)
                bulletModel.Update(bulletPos[0]);

            jumpPadModel1.Update(jumpPadLocation1);

            if (networkHelper.p2hit)
            {
                ++p2kills;
                ++p1deaths;
                if (Host)
                {
                    camera.cameraPosition = hostPos;
                }
                else
                {
                    camera.cameraPosition = guestPos;
                }
            }
        }

        if (networkHelper.SessionState == NetworkSessionState.Playing)
        {
            // Send any key pressed to the remote player
            networkHelper.SendMessage(camera.cameraPosition);

            // Recieve the keys from the remote player
            networkHelper.ReceiveMessage();
            Player2 = networkHelper.Player2;
            playerModel.rot = networkHelper.rot;
            playerModel.Update(Player2);
        }
        bulletMove(gameTime);
        BulletCollision();                                        //check collision
        PlayerCollision();
        if (camera.gameStart != networkHelper.gameStart)
            camera.gameStart = networkHelper.gameStart;
        base.Update(gameTime);
    }
Ejemplo n.º 53
0
        public Level(List<Collidable> collidableRef, float[] radiusArray, BasicModel[] asteroidModels, Planet levelPlanet, 
            Starbase playerStarBase, Starbase enemyStarBase, Skybox skybox, Dock dock, Sun sun, PlayerShip pShip, int amtAsteroids, 
            List<Objective> objectiveList, GraphicsDevice device, TimeSpan time, Vector3 minArea, Vector3 maxArea, Save save)
        {
            CollidableReference = collidableRef;
            _radiusArray = radiusArray;

            _asteroidList = new List<Asteroid>();
            _skybox = skybox;
            _asteroidModels = asteroidModels;
            _dock = dock;
            _randomVar = new Random();

            for (int i = 0; i < amtAsteroids; i++)
            {
                GenerateAsteroid(minArea, maxArea);
            }

            _levelSoundVoiceDump = new List<SoundVoice>();

            foreach (Objective obj in objectiveList)
            {
                obj.Completed += (object sender, EventArgs args) =>
                    {
                        //Vector3.Zero is used because position is irrelevant.
                        _levelSoundVoiceDump.Add(new SoundVoice(SoundType.None, Vector3.Zero, false, SoundVoiceType.Completed));
                    };
                obj.Failed += (object sender, EventArgs args) =>
                    {
                        _levelSoundVoiceDump.Add(new SoundVoice(SoundType.None, Vector3.Zero, false, SoundVoiceType.Failed));
                    };
            }

            pShip.LeftBattlefield += (object sender, EventArgs args) =>
                {
                    _levelSoundVoiceDump.Add(new SoundVoice(SoundType.None, Vector3.Zero, false, SoundVoiceType.Leaving));
                };

            _levelPlanet = levelPlanet;

            PlayerStarBase = playerStarBase;
            EnemyStarBase = enemyStarBase;

            ObjectiveList = objectiveList;
            _device = device;

            TimeRemaining = time;

            _sun = sun;
            StartGame += (object sender, EventArgs args) =>
                {
                    _levelSoundVoiceDump.Add(new SoundVoice(SoundType.None, Vector3.Zero, false, SoundVoiceType.Start));
                };

            WinGame += (object sender, EventArgs args) =>
                {
                    _levelSoundVoiceDump.Add(new SoundVoice(SoundType.None, Vector3.Zero, false, SoundVoiceType.Win));
                };

            LoseGame += (object sender, EventArgs args) =>
                {
                    _levelSoundVoiceDump.Add(new SoundVoice(SoundType.None, Vector3.Zero, false, SoundVoiceType.Lose));
                };
            StartGameEvent();

            CollidableReference.Add(PlayerStarBase);
            CollidableReference.Add(EnemyStarBase);
            CollidableReference.AddRange(_asteroidList);
            CollidableReference.Add(_dock);

            foreach(Objective obj in ObjectiveList)
            {
                CollidableReference.Add(obj);
            }

            _save = save;
        }
Ejemplo n.º 54
0
 public void toDeleteModel(BasicModel model)
 {
     toDeleteEffect.Add(model);
 }
Ejemplo n.º 55
0
 public void addObject(BasicModel model)
 {
     objectModels.Add(model);
 }
Ejemplo n.º 56
0
 public void addEnemy(BasicModel model)
 {
     enemyModels.Add(model);
 }
Ejemplo n.º 57
0
Archivo: Game1.cs Proyecto: hatRiot/XNA
    protected override void LoadContent()
    {
        // Create a new SpriteBatch, which can be used to draw textures.
        //tertexture = Content.Load<Texture2D>("terraintex");
        spriteBatch = new SpriteBatch(GraphicsDevice);
        terrain.Load("heightMapR", 257, 257, 3f, .5f, Content.Load<Texture2D>("tTexture"));
        terrain.texture = Content.Load<Texture2D>("tTexture");

        Arial = Content.Load<SpriteFont>("Arial");
        splashScreen = Content.Load<Texture2D>("DoltMuck");
        ret = Content.Load<Texture2D>("reticule");
        playerModel = new BasicModel(Content.Load<Model>("spaceship"));
        jumpPadModel1 = new BasicModel(Content.Load<Model>("spaceship"));
        bulletModel = new BasicModel(Content.Load<Model>("spaceship"));
        gun = new BasicModel(Content.Load<Model>("Lasers"));
    }
Ejemplo n.º 58
0
 public void addEffect(BasicModel model)
 {
     effectModels.Add(model);
 }
Ejemplo n.º 59
0
 public void removeEnemy(BasicModel model)
 {
     enemyModels.Remove(model);
 }
Ejemplo n.º 60
0
 public void removeObject(BasicModel model)
 {
     objectModels.Remove(model);
 }