public override void Start() { m_params = Engine.AssetManager.GetAsset <BallParameters>("Game/Ball.lua::Ball"); m_properties = new BallProperties(); m_effects = new List <BallEffect>(); m_bodyCmp = new RigidBodyComponent(); FarseerPhysics.Collision.Shapes.CircleShape bodyShape = new FarseerPhysics.Collision.Shapes.CircleShape(ConvertUnits.ToSimUnits(m_params.Content.Radius), 1.0f); Fixture fix = new Fixture(m_bodyCmp.Body, bodyShape); m_bodyCmp.Body.AngularDamping = m_params.Content.Physic.AngularDamping; m_bodyCmp.Body.Mass = m_params.Content.Physic.Mass; m_bodyCmp.Body.LinearDamping = m_params.Content.Physic.LinearDamping; m_bodyCmp.Body.Restitution = m_params.Content.Physic.Restitution; m_bodyCmp.Body.IsBullet = true; m_bodyCmp.Body.CollisionCategories = (Category)CollisionType.Gameplay | (Category)CollisionType.Ball; Owner.Attach(m_bodyCmp); if (Game.Arena.ColorScheme.Dark == true) { m_ballSprite = Sprite.Create("Graphics/ballSprite.lua::SpriteDark"); } else { m_ballSprite = Sprite.Create("Graphics/ballSprite.lua::Sprite"); } Owner.Attach(new SpriteComponent(m_ballSprite, "ArenaOverlay9")); m_ballBashSprite = Sprite.Create("Graphics/ballSprite.lua::SpriteBash"); m_ballBashSprite.Alpha = 0; m_ballBashSprite.Playing = true; Owner.Attach(new SpriteComponent(m_ballBashSprite, "ArenaOverlay9")); m_ballTrail = new BallTrailFx(this); Owner.Attach(m_ballTrail); m_bodyCmp.Body.FixedRotation = true; m_bodyCmp.UserData.Add("Tag", "Ball"); m_bodyCmp.OnCollision += new CollisionEvent(m_bodyCmp_OnCollision); m_player = null; m_lastPlayer = null; m_audioCmpBallBounce = new AudioComponent("Audio/Sounds.lua::BallBounce"); Owner.Attach(m_audioCmpBallBounce); m_audioCmpBallPlayerSnap = new AudioComponent("Audio/Sounds.lua::BallPlayerSnap"); Owner.Attach(m_audioCmpBallPlayerSnap); }
public void Reset() { m_properties = new BallProperties(); foreach (var e in m_effects) { e.End(); } m_effects.Clear(); m_player = null; m_lastPlayer = null; m_bodyCmp.Body.AngularDamping = m_params.Content.Physic.AngularDamping; m_bodyCmp.Body.Mass = m_params.Content.Physic.Mass; m_bodyCmp.Body.LinearDamping = m_params.Content.Physic.LinearDamping; m_bodyCmp.Body.Restitution = m_params.Content.Physic.Restitution; }