void PrepareInputForScript(ControllerInput input) { if (input == null) { return; } if (userMain == null) { // Not ready yet. return; } inputStateForScript = new InputStateForScript(); if (input.GetKeyDown(PlayerBody.VKEY_JUMP)) { // V1 name: voosActor.EnqueueMessage("JumpTriggered"); // V2 name: voosActor.EnqueueMessage("Jump"); } if (input.GetKeyDown(PlayerBody.VKEY_PRIMARY_ACTION)) { // V1 name: voosActor.EnqueueMessage("Action1Triggered"); // V2 name: voosActor.EnqueueMessage("PrimaryAction"); } if (input.GetKeyDown(PlayerBody.VKEY_SECONDARY_ACTION)) { // V1 name: voosActor.EnqueueMessage("Action2Triggered"); // V2 name: voosActor.EnqueueMessage("SecondaryAction"); } List <string> keysHeld = new List <string>(); List <string> keysJustPressed = new List <string>(); List <string> keysJustReleased = new List <string>(); foreach (string key in ScriptableKeyNames) { bool isDown = input.GetKeyDown(key) && !keysHeldAsReportedToScript.Contains(key); bool isUp = !input.GetKeyHeld(key) && keysHeldAsReportedToScript.Contains(key); bool isHeld = input.GetKeyHeld(key); if (isHeld) { keysHeldAsReportedToScript.Add(key); } else { keysHeldAsReportedToScript.Remove(key); } if (isDown) { voosActor.EnqueueMessage("KeyDown", $"{{\"keyName\": \"{key}\"}}"); keysJustPressed.Add(key); } if (isHeld) { voosActor.EnqueueMessage("KeyHeld", $"{{\"keyName\": \"{key}\"}}"); keysHeld.Add(key); } if (isUp) { voosActor.EnqueueMessage("KeyUp", $"{{\"keyName\": \"{key}\"}}"); keysJustReleased.Add(key); } } bool mouseIsDown = Input.GetMouseButton(0) && !userMain.CursorOverUI() && !userMain.InEditMode(); if (mouseIsDown && !reportedMouseDown) { voosActor.EnqueueMessage("MouseDown"); reportedMouseDown = true; inputStateForScript.mouseButtonJustPressed = true; } if (reportedMouseDown) { voosActor.EnqueueMessage("MouseHeld"); inputStateForScript.mouseButtonIsPressed = true; } if (!mouseIsDown && reportedMouseDown) { voosActor.EnqueueMessage("MouseUp"); reportedMouseDown = false; inputStateForScript.mouseButtonJustReleased = true; } Vector2 mousePosUiCoords; Vector3 mousePosRaw = Input.mousePosition; mousePosUiCoords = gameUiMain.UnityScreenPointToGameUiPoint(mousePosRaw); inputStateForScript.mouseX = mousePosUiCoords.x; inputStateForScript.mouseY = mousePosUiCoords.y; inputStateForScript.keysHeld = keysHeld.ToArray(); inputStateForScript.keysJustPressed = keysJustPressed.ToArray(); inputStateForScript.keysJustReleased = keysJustReleased.ToArray(); Ray mouseRay = userMain.GetCamera().ScreenPointToRay(mousePosRaw); inputStateForScript.mouseRayOrigin = mouseRay.origin; inputStateForScript.mouseRayDirection = mouseRay.direction; if (inputStateForScript.mouseButtonJustPressed) { RaycastHit hit; if (Physics.Raycast(mouseRay.origin, mouseRay.direction, out hit, 1000, VoosActor.LayerMaskValue, QueryTriggerInteraction.Collide)) { VoosActor clickedActor = hit.collider.GetComponentInParent <VoosActor>(); if (clickedActor != null) { clickedActor.GetEngine().EnqueueMessage(new VoosEngine.ActorMessage { name = "ActorClicked", targetActor = clickedActor.GetName(), argsJson = "{}" }); } } } inputStateForScript.mouseWheelRaw = Input.GetAxis("Mouse ScrollWheel"); inputStateForScript.mouseWheel = inputStateForScript.mouseWheelRaw * MOUSEWHEEL_FACTOR; }