public override void OnInitGeometry() { var rbCmp = Arena.Owner.RigidBodyCmp; m_wallTimer = new Timer(Engine.GameTime.Source, 1500); m_wallTimerEvent = new TimerEvent(StartRotation); m_wallTimer.OnTime += m_wallTimerEvent; Asset <GameObjectDefinition> centerObjDef = Engine.AssetManager.GetAsset <GameObjectDefinition>("Arenas/JungleArena2/Center.lua::Center"); m_centerPieceObject = new GameObject(centerObjDef); var centerPieceObjBodyCmp = m_centerPieceObject.FindComponent <RigidBodyComponent>(); centerPieceObjBodyCmp.Body.CollidesWith = (Category)CollisionType.All | (Category)CollisionType.Ball; centerPieceObjBodyCmp.Body.CollisionCategories = (Category)CollisionType.Wall; Engine.World.EventManager.AddListener((int)EventId.FirstPeriod, OnFirstPeriod); Engine.World.EventManager.AddListener((int)EventId.HalfTime, OnHalfTime); Engine.World.EventManager.AddListener((int)EventId.HalfTimeTransition, OnHalfTimeTransition); Engine.World.EventManager.AddListener((int)EventId.SecondPeriod, OnSecondPeriod); Engine.World.EventManager.AddListener((int)EventId.MatchEnd, OnMatchEnd); m_launchersInitTransform = new LBE.Core.Transform[Arena.Launchers.Count]; for (int i = 0; i < Arena.Launchers.Count; i++) { LauncherComponent launcher = (LauncherComponent)Arena.Launchers[i]; m_launchersInitTransform[i] = new LBE.Core.Transform(launcher.Position, launcher.Owner.Orientation); } rbCmp.Body.CollidesWith = (Category)CollisionType.All | (Category)CollisionType.Ball; rbCmp.Body.CollisionCategories = (Category)CollisionType.Wall; }
protected override void DoDraw(Sprite sprite, LBE.Core.Transform transform) { Matrix world = Matrix.Identity; world *= Matrix.CreateScale(sprite.Size.X * 0.5f * sprite.Scale.X, sprite.Size.Y * 0.5f * Sprite.Scale.Y, 1); world *= Matrix.CreateRotationZ(transform.Orientation); world *= Matrix.CreateTranslation(new Vector3(transform.Position, 0)); m_effect.World = world; m_effect.Texture = sprite.Texture; m_effect.Mask = m_mask; m_effect.Color1 = m_color1; m_effect.Color2 = m_color2; m_effect.Color3 = m_color3; m_effect.Color4 = m_color4; m_effect.Alpha = sprite.Alpha; Engine.Renderer.DrawMesh(m_quadMesh, m_effect); }
public void SelectALauncher(Team team) { m_selectedLauncher = null; if (m_lDSettings.LaunchersSelection == LaunchersSelectionType.Random) { int randomIndex = Engine.Random.Next(0, m_launchers.Count); m_selectedLauncher = m_launchers[randomIndex]; m_selectedLauncher.Scan(); } else if (m_lDSettings.LaunchersSelection == LaunchersSelectionType.KickOffTeam) { m_selectedLauncher = Game.Arena.Launchers[0]; float shortestPlayerDist = float.MaxValue; for (int i = 0; i < Game.Arena.Launchers.Count; i++) { AssistBallLauncherComponent launcher = (AssistBallLauncherComponent)Game.Arena.Launchers[i]; if (launcher.Team != team) { continue; } launcher.Scan(); if (launcher.PlayerToAim != null) { LBE.Core.Transform launcherParent = new LBE.Core.Transform(launcher.Owner.Position, launcher.Owner.Orientation); LBE.Core.Transform launcherWorld = launcherParent.Compose(launcher.Transform); float launcherToPlayerDist = Vector2.Distance(launcherWorld.Position, launcher.PlayerToAim.Position); if (launcherToPlayerDist < shortestPlayerDist) { shortestPlayerDist = launcherToPlayerDist; m_selectedLauncher = launcher; } } } } else if (m_lDSettings.LaunchersSelection == LaunchersSelectionType.Central) { m_selectedLauncher = Game.Arena.Launchers[0]; int randomIndex = Engine.Random.Next(0, m_launchers.Count); m_selectedLauncher = m_launchers[randomIndex]; for (int i = 0; i < Game.Arena.Launchers.Count; i++) { CentralBallLauncherComponent launcher = (CentralBallLauncherComponent)Game.Arena.Launchers[i]; launcher.Team = team; Vector2 goalPosition; if (launcher.Team == m_leftGoal.Team) { goalPosition = m_leftGoal.Position; } else { goalPosition = m_rightGoal.Position; } Vector2 launcherToGoalDir = goalPosition - launcher.GetWorldTransform().Position; launcherToGoalDir.Normalize(); launcher.Owner.Orientation = launcherToGoalDir.Angle(); launcher.Scan(); } } }