private void OnUpdate(EngineUpdateEventArgs args) { if (TryTransition()) { return; } CurrentStrategy?.OnUpdate(args, this, CurrentState); }
private void OnUpdate(EngineUpdateEventArgs args) { var carEntity = Entity.Level.Instantiate(EntityTemplates.Car, Entity); carEntity.GetBehavior <MovableBehavior>().SetLastTarget(Entity); var car = carEntity.GetBehavior <CarBehavior>(); var passengerCount = new Random().Next(5) + 1; car.Slots = passengerCount; for (var i = 0; i < passengerCount; i++) { car.TryLoad(Entity.Level.Instantiate(EntityTemplates.Customer, carEntity)); } carEntity.IsEnabled = true; }
private void OnUpdate(EngineUpdateEventArgs args) { var thisPosition = Entity.GetBehavior <TransformBehavior>().Position; var targetPosition = Target?.GetBehavior <TransformBehavior>()?.Position ?? Vector3.Zero; if (Vector3.Distance(thisPosition, targetPosition) <= float.Epsilon) { lock (_lock) { if (_hasTargetReached) { return; } _hasTargetReached = true; var parentEnterResult = Entity.SetParent(Target, Reasons.TargetReached); _targetReached.OnNext(new TargetReachedEngineEventArgs(Engine.Engine.Current, Target, parentEnterResult)); } } else { if (_hasTargetReached) { _hasTargetReached = false; var location = _lastTarget?.GetImplementation <IGraphNode>()? .AdjacentEdges.FirstOrDefault( _ => (Equals(_.GetImplementation <IGraphEdge>().Start.Entity, _lastTarget) && Equals(_.GetImplementation <IGraphEdge>().End.Entity, Target)) || (Equals(_.GetImplementation <IGraphEdge>().End.Entity, _lastTarget) && Equals(_.GetImplementation <IGraphEdge>().Start.Entity, Target))); Entity.SetParent(location, Reasons.MovingStarted); } var movementVector = Vector3.Normalize(targetPosition - thisPosition); var movementFactor = Speed * (float)args.DeltaTime.TotalSeconds; var maxMovementFactor = Vector3.Distance(thisPosition, targetPosition); var newPosition = thisPosition + Math.Min(movementFactor, maxMovementFactor) * movementVector; Entity.GetBehavior <TransformBehavior>().Position = newPosition; } }
public virtual void OnUpdate(EngineUpdateEventArgs args, IArtificialIntelligence ai, IArtificialIntelligenceState currentState) { }
private static MouseEnterEngineEventArgs CreateMouseEnterEventArgs(Entity entity, MouseInteractionFeature feature, EngineUpdateEventArgs args) { return(new MouseEnterEngineEventArgs(Engine.Current, feature._lastMousePosition)); }
private static bool IsMousePointerLeavingEntity(Entity entity, MouseInteractionFeature feature, EngineUpdateEventArgs args) { var isLeaving = !IsLastMousePositionOverEntity(feature, entity) && feature._lastEntityStates[entity] == MousePointerOverEntityState.Over; if (isLeaving) { feature._lastEntityStates[entity] = MousePointerOverEntityState.NotOver; } return(isLeaving); }
private void OnUpdate(EngineUpdateEventArgs args) { HasBeenParkedAtSomeTime |= IsParked; }