public Player(string assetFile, RenderContext context, Vector2 originalPos) : base(assetFile, "Textures/Collision/c_Piece1", context) { base.Name = "Player"; m_OrginalPos = originalPos; //Create rigidBody RigidBody = BodyFactory.CreateRectangle(context.World, ConvertUnits.ToSimUnits(20), ConvertUnits.ToSimUnits(10), 1.0f); RigidBody.BodyType = BodyType.Dynamic; RigidBody.OnCollision += RigidBody_OnCollision; RigidBody.OnSeparation += RigidBody_OnSeparation; RigidBody.UserData = this; //Add this class as data for easy access in collision RigidBody.Restitution = 0.1f; Depth = -200; //Xml var xmlPlayerData = XmlLoader.Load <PlayerSettings>("PlayerSettings"); m_Multplier = xmlPlayerData.multiplier; m_TurnAmount = xmlPlayerData.turnAmount; m_CurrentIncrement = xmlPlayerData.windIncrement; m_Velocity = Vector2.Zero; }
Vector2 Wind(float delta) { Vector2 wind; if (!PickUpFromGround) { wind = new Vector2(m_CurrentWindForce, -0.4f - 0.02f * (Position.Y / 25)); if (wind.Y < 4f) { wind = new Vector2(wind.X, 4f); } } else //Get Sucked in or pushed out { wind = new Vector2(0f, m_VulcanoPower * PullDirection); m_PickupFromGroundTime += delta; if (m_PickupFromGroundTime > m_PickupFromGroundMaxTime) { m_PickupFromGroundTime = 0; PickUpFromGround = false; } } var xmlPlayerData = XmlLoader.Load <PlayerSettings>("PlayerSettings"); if (xmlPlayerData.windX != -1f) { wind = new Vector2(xmlPlayerData.windX, wind.Y); } if (xmlPlayerData.windY != -1f) { wind = new Vector2(wind.X, xmlPlayerData.windY); } return(wind); }