From 8185ba6725f5b419e896ac64662df42790745b2a Mon Sep 17 00:00:00 2001 From: Pravus Date: Tue, 2 Sep 2025 20:02:05 +0200 Subject: [PATCH 1/8] added first version of main and result components --- .../sdk/components/mesh_collider.proto | 1 + .../sdk/components/trigger_area.proto | 23 +++++++++++++ .../sdk/components/trigger_area_result.proto | 33 +++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 proto/decentraland/sdk/components/trigger_area.proto create mode 100644 proto/decentraland/sdk/components/trigger_area_result.proto diff --git a/proto/decentraland/sdk/components/mesh_collider.proto b/proto/decentraland/sdk/components/mesh_collider.proto index 3289566b..a3ee44da 100644 --- a/proto/decentraland/sdk/components/mesh_collider.proto +++ b/proto/decentraland/sdk/components/mesh_collider.proto @@ -59,4 +59,5 @@ enum ColliderLayer { CL_CUSTOM6 = 8192; CL_CUSTOM7 = 16384; CL_CUSTOM8 = 32768; + CL_PLAYER = 65536; } \ No newline at end of file diff --git a/proto/decentraland/sdk/components/trigger_area.proto b/proto/decentraland/sdk/components/trigger_area.proto new file mode 100644 index 00000000..c99932d2 --- /dev/null +++ b/proto/decentraland/sdk/components/trigger_area.proto @@ -0,0 +1,23 @@ +syntax = "proto3"; + +package decentraland.sdk.components; + +import "decentraland/sdk/components/common/id.proto"; + +option (common.ecs_component_id) = 1060; + +// The PBTriggerArea component is used to raise collision triggering events (through the TriggerAreaResult component) +// when entities enter this component's defined area. +// +// ADR: https://github.com/decentraland/adr/blob/2b30a5e2b4f359a7c22a68fb827db282f6e5f887/content/ADR-258-trigger-areas.md +// +// The area size and rotation is defined by the Entity's Transform. +message PBTriggerArea { + optional MeshType mesh = 1; // default: MT_BOX + optional uint32 collision_mask = 2; // default: CL_PLAYER +} + +enum MeshType { + MT_BOX = 0; + MT_SPHERE = 1; +} \ No newline at end of file diff --git a/proto/decentraland/sdk/components/trigger_area_result.proto b/proto/decentraland/sdk/components/trigger_area_result.proto new file mode 100644 index 00000000..ac78ab1c --- /dev/null +++ b/proto/decentraland/sdk/components/trigger_area_result.proto @@ -0,0 +1,33 @@ +syntax = "proto3"; + +package decentraland.sdk.components; + +import "decentraland/common/vectors.proto"; +import "decentraland/sdk/components/common/id.proto"; + +option (common.ecs_component_id) = 1061; + +// The PBTriggerAreaResult component is used to transport the trigger collision event data for the PBTriggerArea component. +// ADR: https://github.com/decentraland/adr/blob/2b30a5e2b4f359a7c22a68fb827db282f6e5f887/content/ADR-258-trigger-areas.md +message PBTriggerAreaResult { + // Trigger data object + message Trigger { + uint32 entity = 1; // The entity that triggered the Trigger Area + uint32 layer = 2; // The collision layer of the entity that triggered the Trigger Area + decentraland.common.Vector3 position = 3; // The position of the entity that triggered the trigger + decentraland.common.Quaternion rotation = 4; // The rotation of the entity that triggered the trigger + decentraland.common.Vector3 scale = 5; // The scale of the entity that triggered the trigger + } + + uint32 triggered_entity = 1; // The entity that was triggered (this is the entity that owns the trigger area) + decentraland.common.Vector3 triggered_entity_position = 2; // The position of the triggered entity at the time of the trigger + decentraland.common.Quaternion triggered_entity_rotation = 3; // The rotation of the triggered entity at the time of the trigger + TriggerAreaEventType event_type = 4; // The state of the trigger event (ENTER, STAY, EXIT) + uint32 timestamp = 5; // The timestamp of the trigger event +} + +enum TriggerAreaEventType { + TAET_ENTER = 0; + TAET_STAY = 1; + TAET_EXIT = 2; +} \ No newline at end of file From ac8bac6f2916ef1efa744489c6c00aa7ffd24f22 Mon Sep 17 00:00:00 2001 From: Pravus Date: Tue, 2 Sep 2025 20:24:42 +0200 Subject: [PATCH 2/8] corrected TriggerAreaMeshType enum --- proto/decentraland/sdk/components/trigger_area.proto | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/proto/decentraland/sdk/components/trigger_area.proto b/proto/decentraland/sdk/components/trigger_area.proto index c99932d2..6c238f4d 100644 --- a/proto/decentraland/sdk/components/trigger_area.proto +++ b/proto/decentraland/sdk/components/trigger_area.proto @@ -13,11 +13,11 @@ option (common.ecs_component_id) = 1060; // // The area size and rotation is defined by the Entity's Transform. message PBTriggerArea { - optional MeshType mesh = 1; // default: MT_BOX + optional TriggerAreaMeshType mesh = 1; // default: MT_BOX optional uint32 collision_mask = 2; // default: CL_PLAYER } -enum MeshType { - MT_BOX = 0; - MT_SPHERE = 1; +enum TriggerAreaMeshType { + TAMT_BOX = 0; + TAMT_SPHERE = 1; } \ No newline at end of file From 614de761f07681156795cda5af7bce8138e73f71 Mon Sep 17 00:00:00 2001 From: Pravus Date: Fri, 5 Sep 2025 02:24:02 +0200 Subject: [PATCH 3/8] added forgotten trigger field --- proto/decentraland/sdk/components/trigger_area_result.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/proto/decentraland/sdk/components/trigger_area_result.proto b/proto/decentraland/sdk/components/trigger_area_result.proto index ac78ab1c..85146cb1 100644 --- a/proto/decentraland/sdk/components/trigger_area_result.proto +++ b/proto/decentraland/sdk/components/trigger_area_result.proto @@ -24,6 +24,7 @@ message PBTriggerAreaResult { decentraland.common.Quaternion triggered_entity_rotation = 3; // The rotation of the triggered entity at the time of the trigger TriggerAreaEventType event_type = 4; // The state of the trigger event (ENTER, STAY, EXIT) uint32 timestamp = 5; // The timestamp of the trigger event + Trigger trigger = 6; } enum TriggerAreaEventType { From 701cc2bf2dbe78d285e474d28a9837b378a8b9cc Mon Sep 17 00:00:00 2001 From: Pravus Date: Fri, 26 Sep 2025 12:52:35 +0200 Subject: [PATCH 4/8] renamed layers field Signed-off-by: Pravus --- proto/decentraland/sdk/components/trigger_area_result.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/proto/decentraland/sdk/components/trigger_area_result.proto b/proto/decentraland/sdk/components/trigger_area_result.proto index 85146cb1..63f22516 100644 --- a/proto/decentraland/sdk/components/trigger_area_result.proto +++ b/proto/decentraland/sdk/components/trigger_area_result.proto @@ -13,7 +13,7 @@ message PBTriggerAreaResult { // Trigger data object message Trigger { uint32 entity = 1; // The entity that triggered the Trigger Area - uint32 layer = 2; // The collision layer of the entity that triggered the Trigger Area + uint32 layers = 2; // The collision layermask of the entity that triggered the Trigger Area decentraland.common.Vector3 position = 3; // The position of the entity that triggered the trigger decentraland.common.Quaternion rotation = 4; // The rotation of the entity that triggered the trigger decentraland.common.Vector3 scale = 5; // The scale of the entity that triggered the trigger @@ -31,4 +31,4 @@ enum TriggerAreaEventType { TAET_ENTER = 0; TAET_STAY = 1; TAET_EXIT = 2; -} \ No newline at end of file +} From 2c7009e27bc01e1a3ebe6235e2f1d587fe061ce2 Mon Sep 17 00:00:00 2001 From: Pravus Date: Fri, 26 Sep 2025 15:24:06 +0200 Subject: [PATCH 5/8] renamed CL_RESERVED1 to CL_PLAYER Signed-off-by: Pravus --- proto/decentraland/sdk/components/mesh_collider.proto | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/proto/decentraland/sdk/components/mesh_collider.proto b/proto/decentraland/sdk/components/mesh_collider.proto index a3ee44da..031bc118 100644 --- a/proto/decentraland/sdk/components/mesh_collider.proto +++ b/proto/decentraland/sdk/components/mesh_collider.proto @@ -45,7 +45,7 @@ enum ColliderLayer { CL_NONE = 0; // no collisions CL_POINTER = 1; // collisions with the player's pointer ray (e.g. mouse cursor hovering) CL_PHYSICS = 2; // collision affecting your player's physics i.e. walls, floor, moving platfroms - CL_RESERVED1 = 4; + CL_PLAYER = 4; CL_RESERVED2 = 8; CL_RESERVED3 = 16; CL_RESERVED4 = 32; @@ -59,5 +59,4 @@ enum ColliderLayer { CL_CUSTOM6 = 8192; CL_CUSTOM7 = 16384; CL_CUSTOM8 = 32768; - CL_PLAYER = 65536; -} \ No newline at end of file +} From f43c58d449edc499bafef3170d2ab10e66f57c04 Mon Sep 17 00:00:00 2001 From: Pravus Date: Mon, 29 Sep 2025 01:27:10 +0200 Subject: [PATCH 6/8] added comment Signed-off-by: Pravus --- proto/decentraland/sdk/components/mesh_collider.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto/decentraland/sdk/components/mesh_collider.proto b/proto/decentraland/sdk/components/mesh_collider.proto index 031bc118..048b9553 100644 --- a/proto/decentraland/sdk/components/mesh_collider.proto +++ b/proto/decentraland/sdk/components/mesh_collider.proto @@ -45,7 +45,7 @@ enum ColliderLayer { CL_NONE = 0; // no collisions CL_POINTER = 1; // collisions with the player's pointer ray (e.g. mouse cursor hovering) CL_PHYSICS = 2; // collision affecting your player's physics i.e. walls, floor, moving platfroms - CL_PLAYER = 4; + CL_PLAYER = 4; // layer corresponding to any player avatar CL_RESERVED2 = 8; CL_RESERVED3 = 16; CL_RESERVED4 = 32; From 0c5c2a844761e0924df06f3fb60edb02ae096f25 Mon Sep 17 00:00:00 2001 From: Pravus Date: Mon, 29 Sep 2025 14:04:01 +0200 Subject: [PATCH 7/8] added allow_alias in ColliderLayer enum for deprecated reference Signed-off-by: Pravus --- proto/decentraland/sdk/components/mesh_collider.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/proto/decentraland/sdk/components/mesh_collider.proto b/proto/decentraland/sdk/components/mesh_collider.proto index 048b9553..c90812c5 100644 --- a/proto/decentraland/sdk/components/mesh_collider.proto +++ b/proto/decentraland/sdk/components/mesh_collider.proto @@ -42,9 +42,11 @@ message PBMeshCollider { // ColliderLayer determines the kind of collision to detect, in OR-able bit flag form. enum ColliderLayer { + option allow_alias = true; CL_NONE = 0; // no collisions CL_POINTER = 1; // collisions with the player's pointer ray (e.g. mouse cursor hovering) CL_PHYSICS = 2; // collision affecting your player's physics i.e. walls, floor, moving platfroms + CL_RESERVED1 = 4 [deprecated = true]; CL_PLAYER = 4; // layer corresponding to any player avatar CL_RESERVED2 = 8; CL_RESERVED3 = 16; From 372fa093bc80a53f12c9b026aa3a65d805b99e16 Mon Sep 17 00:00:00 2001 From: Pravus Date: Mon, 29 Sep 2025 17:52:55 +0200 Subject: [PATCH 8/8] Revert "added allow_alias in ColliderLayer enum for deprecated reference" This reverts commit 0c5c2a844761e0924df06f3fb60edb02ae096f25. --- proto/decentraland/sdk/components/mesh_collider.proto | 2 -- 1 file changed, 2 deletions(-) diff --git a/proto/decentraland/sdk/components/mesh_collider.proto b/proto/decentraland/sdk/components/mesh_collider.proto index c90812c5..048b9553 100644 --- a/proto/decentraland/sdk/components/mesh_collider.proto +++ b/proto/decentraland/sdk/components/mesh_collider.proto @@ -42,11 +42,9 @@ message PBMeshCollider { // ColliderLayer determines the kind of collision to detect, in OR-able bit flag form. enum ColliderLayer { - option allow_alias = true; CL_NONE = 0; // no collisions CL_POINTER = 1; // collisions with the player's pointer ray (e.g. mouse cursor hovering) CL_PHYSICS = 2; // collision affecting your player's physics i.e. walls, floor, moving platfroms - CL_RESERVED1 = 4 [deprecated = true]; CL_PLAYER = 4; // layer corresponding to any player avatar CL_RESERVED2 = 8; CL_RESERVED3 = 16;