Пример #1
0
        public AiStateState Update(ShootyShootyBangBangEngine.Controllers.BaseControllers controllers, GameObject owner, double dt)
        {
            var transformComp = owner.GetComponents().GetComponent <ComponentTransform>();
            var dir           = m_point - transformComp.GetPosition();

            if (transformComp.GetPosition() == m_point || dir.LengthSquared() < 1)
            {
                return(AiStateState.ASS_Completed);
            }

            var dist = dir.Length();

            dir = Vector2.Normalize(dir);
            transformComp.SetPosition(transformComp.GetPosition() + dir * Math.Min(m_movementSpeed * (float)dt, dist));

            if (m_lookat.HasValue)
            {
                dir = m_lookat.Value;
            }
            var angle = (float)Math.Acos(Vector2.Dot(dir, new Vector2(1, 0)));

            if (Vector2.Dot(dir, new Vector2(0, 1)) < 0)
            {
                angle = -angle;
            }
            transformComp.SetAngle(angle);

            return(AiStateState.ASS_InProgress);
        }
Пример #2
0
        public AiStateState Update(ShootyShootyBangBangEngine.Controllers.BaseControllers controllers, GameObject owner, double dt)
        {
            m_timer += dt;

            var transformComp = owner.GetComponents().GetComponent <ComponentTransform>();
            var startToEnd    = m_endPoint - m_startPoint;

            var dist      = startToEnd.Length();
            var totalTime = dist / m_movementSpeed;
            var fac       = m_timer / totalTime;

            if (fac > 1.0f)
            {
                return(AiStateState.ASS_Completed);
            }

            var tarPos = m_startPoint + startToEnd * (float)fac;

            var curPosToTarPos = tarPos - transformComp.GetPosition();

            curPosToTarPos = Vector2.Normalize(curPosToTarPos);
            var dot   = Vector2.Dot(curPosToTarPos, new Vector2(1, 0));
            var angle = (float)Math.Acos(dot);

            if (Vector2.Dot(curPosToTarPos, new Vector2(0, 1)) < 0)
            {
                angle = -angle;
            }
            transformComp.SetAngle(angle);

            transformComp.SetPosition(tarPos);

            return(AiStateState.ASS_InProgress);
        }
Пример #3
0
        public AiStateState Update(ShootyShootyBangBangEngine.Controllers.BaseControllers controllers, GameObject owner, double dt)
        {
            var transformComp = owner.GetComponents().GetComponent <ComponentTransform>();

            var rnd   = new Random();
            var angle = rnd.NextDouble() * Math.PI * 2;

            owner.GetComponents().GetComponent <ComponentAiSystem>().AddState(new AiStateGoToPoint(new Vector2(rnd.Next((int)m_minPoints.X, (int)m_maxPoints.X), rnd.Next((int)m_minPoints.Y, (int)m_maxPoints.Y)), m_movementSpeed, new Vector2((float)Math.Sin(angle), (float)Math.Cos(angle))));
            return(AiStateState.ASS_InProgress);
        }
 public AiStateState Update(ShootyShootyBangBangEngine.Controllers.BaseControllers controllers, GameObject owner, double dt)
 {
     if (DateTime.Now.Second % m_secInterval == 0)
     {
         var lastPoint = m_currentPoint - 1;
         if (lastPoint < 0)
         {
             lastPoint = m_points.Count - 1;
         }
         var startTime = DateTime.Now;
         startTime = startTime.AddMilliseconds(-startTime.Millisecond);
         owner.GetComponents().GetComponent <ComponentAiSystem>().AddState(new AiStateGoToPointTimed(m_points[lastPoint], m_points[m_currentPoint], m_movementSpeed, startTime));
         m_currentPoint = (m_currentPoint + 1) % m_points.Count;
     }
     return(AiStateState.ASS_InProgress);
 }
Пример #5
0
        public AiStateState Update(ShootyShootyBangBangEngine.Controllers.BaseControllers controllers, GameObject owner, double dt)
        {
            var transformComp = owner.GetComponents().GetComponent <ComponentTransform>();

            var centerToMe = transformComp.GetPosition() - m_center;
            var perp       = new Vector2(centerToMe.Y, -centerToMe.X);

            perp  = Vector2.Normalize(perp);
            perp *= (float)(m_movementSpeed * dt);
            var newPoint = centerToMe + perp;

            newPoint  = Vector2.Normalize(newPoint);
            newPoint *= m_radius;
            newPoint += m_center;
            var dir = newPoint - transformComp.GetPosition();

            if (transformComp.GetPosition() == newPoint || dir.LengthSquared() < 1)
            {
                return(AiStateState.ASS_InProgress);
            }

            var dist = dir.Length();

            dir = Vector2.Normalize(dir);
            transformComp.SetPosition(transformComp.GetPosition() + dir * Math.Min(m_movementSpeed * (float)dt, dist));

            var angle = (float)Math.Acos(Vector2.Dot(dir, new Vector2(1, 0)));

            if (Vector2.Dot(dir, new Vector2(0, 1)) < 0)
            {
                angle = -angle;
            }
            transformComp.SetAngle(angle);

            return(AiStateState.ASS_InProgress);
        }
Пример #6
0
 public void OnChildStateFinished(ShootyShootyBangBangEngine.Controllers.BaseControllers controllers, GameObject owner, AiStateState state)
 {
 }
Пример #7
0
 public AiStateState Update(ShootyShootyBangBangEngine.Controllers.BaseControllers controllers, GameObject owner, double dt)
 {
     owner.GetComponents().GetComponent <ComponentAiSystem>().AddState(new AiStateGoToPoint(m_points[m_currentPoint], m_movementSpeed));
     m_currentPoint = (m_currentPoint + 1) % m_points.Count;
     return(AiStateState.ASS_InProgress);
 }
Пример #8
0
 public ShootyShootyBangBangGame(ShootyShootyBangBangEngine.Controllers.BaseControllers controllers)
     : base(controllers)
 {
 }