Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions proto/decentraland/kernel/apis/restricted_actions.proto
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,42 @@ message EmptyResponse { }

message StopEmoteRequest { }

// Identifies which fullscreen explorer panel OpenExplorerUi targets.
// EU_SETTINGS holds 0 so an unset `ui` field defaults to the least-intrusive panel.
enum ExplorerUi {
EU_SETTINGS = 0;
EU_MAP = 1;
EU_BACKPACK = 2;
EU_CAMERA_REEL = 3;
EU_COMMUNITIES = 4;
EU_PLACES = 5;
EU_EVENTS = 6;
}

// Verdict of an OpenExplorerUi request (enum rather than a bool so new outcomes stay expressible).
enum OpenExplorerUiResult {
UNSPECIFIED = 0;
OPENED = 1;
WAS_ALREADY_OPEN = 2; // a fullscreen panel is already open
REJECTED_NOT_CURRENT_SCENE = 3; // the standard restricted-actions current-scene gate rejected the call
REJECTED_FEATURE_DISABLED = 4; // the requested section is hidden by feature flags or client doesn't have that feature
REJECTED_NO_USER_GESTURE = 5; // rejected: the call did not originate from a user gesture
}

message OpenExplorerUiRequest {
ExplorerUi ui = 1;

// Extension point for future per-panel parameters, as a oneof so each panel gets its
// own optional param message without touching existing fields.
// message MapParams { int32 focus_x = 1; int32 focus_y = 2; }
// oneof params { MapParams map = 10; }
}

message OpenExplorerUiResponse {
// Carries only the verdict of the open action.
OpenExplorerUiResult open_result = 1;
}

service RestrictedActionsService {
// MovePlayerTo will move the player to a position relative to the current scene.
// If 'duration' field is used in the request, the success response depends on the
Expand Down Expand Up @@ -98,4 +134,7 @@ service RestrictedActionsService {

// StopEmote will stop the current emote
rpc StopEmote(StopEmoteRequest) returns (SuccessResponse) {}

// OpenExplorerUi opens a specific fullscreen explorer panel and returns the open verdict.
rpc OpenExplorerUi(OpenExplorerUiRequest) returns (OpenExplorerUiResponse) {}
}
11 changes: 11 additions & 0 deletions proto/decentraland/kernel/comms/v3/archipelago.proto
Original file line number Diff line number Diff line change
Expand Up @@ -84,3 +84,14 @@ message IslandData {
message IslandStatusMessage {
repeated IslandData data = 1;
}

message ServiceStatus {
uint64 current_time = 1;
optional string commit_hash = 2;
uint32 user_count = 3;
}

message ServiceDiscoveryMessage {
string server_name = 1;
ServiceStatus status = 2;
}
5 changes: 3 additions & 2 deletions proto/decentraland/sdk/components/avatar_emote_command.proto
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@ import "decentraland/sdk/components/common/id.proto";
import "decentraland/sdk/components/common/avatar_mask.proto";
option (common.ecs_component_id) = 1088;

// AvatarEmoteCommand is a grow only value set, used to signal the renderer about
// avatar emotes playback.
// AvatarEmoteCommand is a grow only value set, written by the explorer to report
// avatar emote playback to the scene. It is appended to every player entity in the
// scene (the local player and remote avatars alike).
message PBAvatarEmoteCommand {
string emote_urn = 1;
bool loop = 2;
Expand Down
38 changes: 38 additions & 0 deletions proto/decentraland/sdk/components/touch_screen_controls.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
syntax = "proto3";
package decentraland.sdk.components;
import "decentraland/sdk/components/common/id.proto";
import "decentraland/sdk/components/common/input_action.proto";
import "decentraland/common/texture.proto";
option (common.ecs_component_id) = 1218;

// The TouchScreenControls component lets a scene configure the native on-screen touch
// controls (the mobile joystick + gamepad). It must be set on the RootEntity.
//
// By default every on-screen button is shown; list a button in `touch_inputs` with
// `hide = true` to remove it (declutter). `main_action` picks which action the large
// central button triggers, and `hide_joystick` removes the native virtual joystick. It is
// a no-op on platforms without native on-screen controls (e.g. desktop).
//
// Accepted actions: only the on-screen gamepad actions map to a button — `IA_POINTER`,
// `IA_PRIMARY`, `IA_SECONDARY`, `IA_JUMP`, and `IA_ACTION_3`..`IA_ACTION_6`. Any other
// `InputAction` (movement actions, `IA_ANY`, `IA_MODIFIER`, or unknown/future values) is
// ignored: a `TouchInput` entry naming a non-button action has no effect, and a `main_action`
// that isn't a valid gamepad action falls back to the default central button (`IA_JUMP`).
message PBTouchScreenControls {
// Per-button configuration. A button not listed here keeps its default (shown).
message TouchInput {
common.InputAction input_action = 1; // which on-screen button this configures
bool hide = 2; // hide this button (default: shown)
// Override the button glyph with this texture. For the jump button it replaces all
// of its dynamic states (jump / double-jump / glide).
optional decentraland.common.TextureUnion icon = 3;
}

repeated TouchInput touch_inputs = 1;
// The large central button's action. Only the gamepad actions are valid:
// jump / pointer / primary (E) / secondary (F) / action_3..action_6 (1/2/3/4).
// When unset, the default central button (jump) is kept.
optional common.InputAction main_action = 2;
bool hide_joystick = 3; // hide the native virtual joystick
bool hide_crosshair = 4; // hide the on-screen crosshair / reticle
}
27 changes: 27 additions & 0 deletions proto/decentraland/sdk/components/ui_input_binding.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
syntax = "proto3";
package decentraland.sdk.components;
import "decentraland/sdk/components/common/id.proto";
import "decentraland/sdk/components/common/input_action.proto";
option (common.ecs_component_id) = 1219;

// The UiInputBinding component binds a UI entity to one or more InputActions. While the
// element is pressed (touch or pointer) the listed actions are held down, driving both
// the local player input and scene InputAction listeners, just like the native on-screen
// buttons. It is typically combined with PBTouchScreenControls to replace the native
// controls with a custom touch UI.
//
// Release semantics: the held actions are released as soon as the press that started them
// ends. A renderer MUST release all actions held by this binding when any of the following
// happens: the press/touch is lifted or cancelled, the pointer/touch leaves the element
// (loses press ownership), the actions list changes (the previous set is released before
// the new set is applied), the component is removed or its actions list becomes empty, the
// UI element is hidden, disabled or removed from the tree, or the scene unloads. In short,
// no action may remain held once the element is no longer both present and actively pressed.
//
// Multi-touch: the binding is a single held state, not reference-counted per pointer. The
// actions are held while the element is pressed and released when that press ends; a second
// simultaneous press on the same element does not stack, and does not extend the hold past
// the first release.
message PBUiInputBinding {
repeated common.InputAction actions = 1; // the input actions fired while this element is pressed
}
2 changes: 2 additions & 0 deletions proto/decentraland/sdk/components/virtual_camera.proto
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ option (common.ecs_component_id) = 1076;
// an 'instant' transition (like using speed/time = 0)
// * The lookAtEntity defines to which entity the Camera has to look at constantly (independent from
// the holding entity transform).
// * The fov defines the Field of View of the virtual camera
message PBVirtualCamera {
optional common.CameraTransition default_transition = 1;
optional uint32 look_at_entity = 2;
optional float fov = 3; // default: 60
}
2 changes: 2 additions & 0 deletions public/sdk-components.proto
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import public "decentraland/sdk/components/raycast_result.proto";
import public "decentraland/sdk/components/raycast.proto";
import public "decentraland/sdk/components/realm_info.proto";
import public "decentraland/sdk/components/text_shape.proto";
import public "decentraland/sdk/components/touch_screen_controls.proto";
import public "decentraland/sdk/components/tween.proto";
import public "decentraland/sdk/components/tween_state.proto";
import public "decentraland/sdk/components/tween_sequence.proto";
Expand All @@ -37,6 +38,7 @@ import public "decentraland/sdk/components/ui_dropdown_result.proto";
import public "decentraland/sdk/components/ui_dropdown.proto";
import public "decentraland/sdk/components/ui_input_result.proto";
import public "decentraland/sdk/components/ui_input.proto";
import public "decentraland/sdk/components/ui_input_binding.proto";
import public "decentraland/sdk/components/ui_text.proto";
import public "decentraland/sdk/components/ui_transform.proto";
import public "decentraland/sdk/components/video_player.proto";
Expand Down
Loading