public MotionDriver.MotionTarget Tick(MotionDriver.MotionState state, double delta)
    {
        if (entity.IsEmpty())
        {
            return(Tick(state, entity, delta));
        }

        Vector3D entityVelocity = new Vector3D(entity.Velocity);
        Vector3D scanPosition   = entity.HitPosition.Value + entityVelocity * (state.Time - lastScanTime);
        Vector3D difference     = scanPosition - camera.GetPosition();
        double   scanDistance   = difference.Length() + 50;

        if (camera.CanScan(scanDistance + 5))
        {
            difference.Normalize();
            MyDetectedEntityInfo detected = camera.Raycast(scanPosition + 50 * difference);
            if (!detected.IsEmpty())
            {
                entity       = detected;
                lastScanTime = state.Time;
            }
        }

        return(Tick(state, entity, delta));
    }
Exemplo n.º 2
0
    public override MotionDriver.MotionTarget Tick(MotionDriver.MotionState state, MyDetectedEntityInfo entity, double delta)
    {
        Vector3D entityVelocity = new Vector3D(entity.Velocity);
        double   entityDistance = Vector3D.Distance(state.Position, entity.HitPosition.Value);
        double   bulletTime     = entityDistance / bulletVelocity;
        Vector3D targetPosition = entity.Position + Vector3D.TransformNormal(blockPosition, entity.Orientation) + entityVelocity * (state.Time - lastScanTime + delta + bulletTime);

        Vector3D forward = -(state.Position - targetPosition);

        forward.Normalize();
        Quaternion orientation = Quaternion.CreateFromForwardUp(forward, state.WorldMatrix.Up);

        return(MotionDriver.MotionTarget.Orientation(orientation));
    }
    public MotionDriver.MotionTarget Tick(MotionDriver.MotionState s, double d)
    {
        if (entity.IsEmpty())
        {
            return(Tick(s, entity, d));
        }
        var v = new Vector3D(entity.Velocity); var p = entity.HitPosition.Value + v * (s.Time - lastScanTime); var f = p - camera.GetPosition(); var t = f.Length() + 50; if (camera.CanScan(t + 5))

        {
            f.Normalize(); var x = camera.Raycast(p + 50 * f); if (!x.IsEmpty())
            {
                entity = x; lastScanTime = s.Time;
            }
        }
        return(Tick(s, entity, d));
    }
 public abstract MotionDriver.MotionTarget Tick(MotionDriver.MotionState state, MyDetectedEntityInfo entity, double delta);
 public virtual void OnArrived(MotionDriver.MotionState state)
 {
 }
 public void OnArrived(MotionDriver.MotionState s)
 {
 }
 public MotionDriver.MotionTarget Tick(MotionDriver.MotionState s, double d)
 {
     return(T);
 }
 public abstract MotionDriver.MotionTarget Tick(MotionDriver.MotionState s, MyDetectedEntityInfo e, double d);
Exemplo n.º 9
0
 public override MotionDriver.MotionTarget Tick(MotionDriver.MotionState s, MyDetectedEntityInfo e, double d)
 {
     var v = new Vector3D(e.Velocity); var a = Vector3D.Distance(s.Position, e.HitPosition.Value); var b = a / V; var t = e.Position + Vector3D.TransformNormal(P, e.Orientation) + v * (s.Time - lastScanTime + d + b); var f = -(s.Position - t); f.Normalize(); return(MotionDriver.MotionTarget.Orientation(Quaternion.CreateFromForwardUp(f, s.WorldMatrix.Up)));
 }
Exemplo n.º 10
0
 public override void OnArrived(MotionDriver.MotionState s)
 {
 }
Exemplo n.º 11
0
 public void OnArrivedOrientation(MotionDriver.MotionState state)
 {
     target.Rotation = null;
 }
Exemplo n.º 12
0
 public void OnArrivedPosition(MotionDriver.MotionState state)
 {
     target.Position = null;
 }
Exemplo n.º 13
0
 public MotionDriver.MotionTarget Tick(MotionDriver.MotionState state, double delta)
 {
     return(target);
 }