public void Execute() { GameEntity[] movingObjects = _movingObjects.GetEntities(); foreach (var entity in movingObjects) { InteractibleView interactibleView = entity.view.value.GetComponent <InteractibleView>(); if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow)) { interactibleView.MoveObject(PlayerView.transform.forward, FORWARD_POWER); } if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow)) { interactibleView.MoveObject(-PlayerView.transform.forward, BACKWARD_POWER); } if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow)) { interactibleView.MoveObject(-PlayerView.transform.right, SIDE_POWER); } if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow)) { interactibleView.MoveObject(PlayerView.transform.right, SIDE_POWER); } } }
private void Update() { Ray ray = Camera.main.ViewportPointToRay(new Vector3(SCREEN_MIDDLE_POSITION, SCREEN_MIDDLE_POSITION, 0)); RaycastHit rayHit = new RaycastHit(); if (_lastFocusedGameObject != null) { if (_lastFocusedGameObject.Type != InteractibleTypesEnum.Basketball) { Destroy(_lastFocusedGameObject.GetComponent <Outline>()); } } if (Physics.Raycast(ray, out rayHit, MAXIMUM_INTERACT_DISTANCE)) { InteractibleView interact = rayHit.collider.gameObject.GetComponent <InteractibleView>(); if (interact == null) { interact = rayHit.collider.gameObject.GetComponentInParent <InteractibleView>(); } if (interact != null && (interact.InteractionType == InteractionTypesEnum.Pickable || interact.InteractionType == InteractionTypesEnum.Movable)) { _entityLink.Entity.AddPlayerActionInput(interact.EntityLink.Entity, interact); if (interact.Type != InteractibleTypesEnum.Basketball) { interact.gameObject.AddComponent <Outline>(); } _lastFocusedGameObject = interact; } } }
public void ReplacePlayerActionInput(GameEntity newEntity, InteractibleView newInteractible) { var index = GameComponentsLookup.PlayerActionInput; var component = CreateComponent <PlayerActionInputComponent>(index); component.Entity = newEntity; component.Interactible = newInteractible; ReplaceComponent(index, component); }
private void OnTriggerEnter(Collider other) { InteractibleView interactible2 = other.gameObject.GetComponent <InteractibleView>(); if (interactible2 != null && interactible2.Type == InteractibleTypesEnum.Generator) { _brokenLamp.FixIt(); } }
protected override void Execute(List <GameEntity> entities) { foreach (var entity in entities) { PlayerView playerView = _gameContext.globals.value.player.view.value.GetComponent <PlayerView>(); InteractibleView interactibleView = entity.view.value.GetComponent <InteractibleView>(); interactibleView.TogglePickedUp(false); interactibleView.Throw(playerView.ForwardDirection, entity.dropped.Force * 1000); entity.RemoveDropped(); } }
protected override void Execute(List <GameEntity> entities) { foreach (var entity in entities) { InteractibleView interactibleView = entity.view.value.GetComponent <InteractibleView>(); interactibleView.ToggleContainer(entity.containedObject.ParentEntity); if (interactibleView.Type == InteractibleTypesEnum.Fruit) { TriggerEvent(EventsEnum.FruitInCrate, -1); } } }
private void OnTriggerEnter(Collider other) { InteractibleView interactible = other.gameObject.GetComponent <InteractibleView>(); if (interactible != null) { if (interactible.InteractionType == InteractionTypesEnum.Collectable) { _entityLink.Entity.AddPlayerCollectInput(CollectibleTypesEnum.Star, interactible.EntityLink.UUID); interactible.EntityLink.Entity.Destroy(); Destroy(interactible.gameObject); } } }
public void Execute() { GameEntity[] pickedUpObjects = _pickedUpObjects.GetEntities(); foreach (var entity in pickedUpObjects) { InteractibleView interactibleView = entity.view.value.GetComponent <InteractibleView>(); if (!interactibleView.IsPickedUp) { interactibleView.TogglePickedUp(true); entity.ReplacePickedUp(entity.pickedUp.InitialTime, entity.pickedUp.InitialPosition, Vector3.Distance(entity.pickedUp.InitialPosition, PlayerView.TargetPick.position)); } float distCovered = (Time.time - entity.pickedUp.InitialTime) * PICK_TRAVEL_TIME; float fracJourney = distCovered / entity.pickedUp.TotalTravelDistance; interactibleView.transform.position = Vector3.Lerp(entity.pickedUp.InitialPosition, PlayerView.TargetPick.position, fracJourney); } }
private void OnTriggerEnter(Collider other) { InteractibleView interactible2 = other.gameObject.GetComponent <InteractibleView>(); if (interactible2 != null) { if (interactible2.Type == InteractibleTypesEnum.Gear1) { _windmill.TurnOnGear(1); } if (interactible2.Type == InteractibleTypesEnum.Gear2) { _windmill.TurnOnGear(2); } if (interactible2.Type == InteractibleTypesEnum.Gear3) { _windmill.TurnOnGear(3); } } }
private void ProcessPick(GameEntity entity) { // Prevent picking more than one object at the same time. if (_pickedUpObjects.count > 0 || _movingObjects.count > 0) { return; } // If the object is out from a contained space, additional actions are required. if (entity.hasContainedObject) { InteractibleView interactibleView = entity.view.value.GetComponent <InteractibleView>(); entity.RemoveContainedObject(); interactibleView.ToggleContainer(null); if (interactibleView.Type == InteractibleTypesEnum.Fruit) { TriggerEvent(EventsEnum.FruitInCrate, 1); } } entity.AddPickedUp(Time.time, entity.view.value.transform.position, 0); }
private void OnTriggerEnter(Collider other) { if (InteractionType == InteractionTypesEnum.Pickable && IsCollectable) { if (other.gameObject.tag == CONTAINER_TAG && _entityLink != null) { if (!_entityLink.Entity.hasContainedObject) { _entityLink.Entity.AddContainedObject(other.gameObject); } } } if (Type == InteractibleTypesEnum.BasketballHoopTop) { _entityLink.Entity.AddBasketHoopTrigger(true); } if (Type == InteractibleTypesEnum.BasketballHoopBottom) { _entityLink.Entity.AddBasketHoopTrigger(false); } if (Type == InteractibleTypesEnum.GeneratorZone) { InteractibleView interactible2 = other.gameObject.GetComponent <InteractibleView>(); if (interactible2 != null && interactible2.Type == InteractibleTypesEnum.Generator) { _entityLink.Entity.AddEventTrigger(EventsEnum.GeneratorTriggered, -1); } } if (Type == InteractibleTypesEnum.WindmillZone) { InteractibleView interactible2 = other.gameObject.GetComponent <InteractibleView>(); if (interactible2 != null) { bool isOkToDelete = false; if (interactible2.Type == InteractibleTypesEnum.Gear1) { _entityLink.Entity.AddEventTrigger(EventsEnum.Gear1Ready, -1); isOkToDelete = true; } if (interactible2.Type == InteractibleTypesEnum.Gear2) { _entityLink.Entity.AddEventTrigger(EventsEnum.Gear2Ready, -1); isOkToDelete = true; } if (interactible2.Type == InteractibleTypesEnum.Gear3) { _entityLink.Entity.AddEventTrigger(EventsEnum.Gear3Ready, -1); isOkToDelete = true; } if (isOkToDelete) { interactible2.EntityLink.Entity.Destroy(); Destroy(interactible2.gameObject); } } } }