Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Bevy Micro LDTK
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Model registry
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Microhacks
Bevy Micro LDTK
Commits
3e277359
Verified
Commit
3e277359
authored
4 months ago
by
Louis
Browse files
Options
Downloads
Patches
Plain Diff
Include layer UI tags in LdtkLayer type
parent
590b48a6
No related branches found
No related tags found
No related merge requests found
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
Cargo.lock
+322
-291
322 additions, 291 deletions
Cargo.lock
Cargo.toml
+1
-1
1 addition, 1 deletion
Cargo.toml
src/assets/asset_events.rs
+2
-1
2 additions, 1 deletion
src/assets/asset_events.rs
src/system/types.rs
+31
-8
31 additions, 8 deletions
src/system/types.rs
with
356 additions
and
301 deletions
Cargo.lock
+
322
−
291
View file @
3e277359
This diff is collapsed.
Click to expand it.
Cargo.toml
+
1
−
1
View file @
3e277359
[package]
[package]
name
=
"micro_ldtk"
name
=
"micro_ldtk"
version
=
"0.1
3
.0"
version
=
"0.1
4
.0"
edition
=
"2021"
edition
=
"2021"
authors
=
[
authors
=
[
...
...
This diff is collapsed.
Click to expand it.
src/assets/asset_events.rs
+
2
−
1
View file @
3e277359
...
@@ -19,8 +19,9 @@ pub fn handle_ldtk_project_events(
...
@@ -19,8 +19,9 @@ pub fn handle_ldtk_project_events(
if
let
Some
(
project
)
=
assets
.get
(
*
id
)
{
if
let
Some
(
project
)
=
assets
.get
(
*
id
)
{
for
level
in
project
.get_all_levels
()
{
for
level
in
project
.get_all_levels
()
{
if
level
.external_rel_path
.is_none
()
{
if
level
.external_rel_path
.is_none
()
{
level_index
level_index
.insert
(
level
.identifier
.clone
(),
LdtkLevel
::
from
(
level
.clone
()));
.insert
(
level
.identifier
.clone
(),
LdtkLevel
::
from
_project
(
&
project
,
level
.clone
()));
update_events
.send
(
LevelDataUpdated
(
level
.identifier
.clone
()));
update_events
.send
(
LevelDataUpdated
(
level
.identifier
.clone
()));
}
}
}
}
...
...
This diff is collapsed.
Click to expand it.
src/system/types.rs
+
31
−
8
View file @
3e277359
...
@@ -16,7 +16,7 @@ use quadtree_rs::Quadtree;
...
@@ -16,7 +16,7 @@ use quadtree_rs::Quadtree;
use
serde
::{
Deserialize
,
Serialize
};
use
serde
::{
Deserialize
,
Serialize
};
use
serde_json
::{
Map
,
Number
,
Value
};
use
serde_json
::{
Map
,
Number
,
Value
};
use
crate
::
ldtk
::{
EntityInstance
,
FieldInstance
,
LayerInstance
,
Level
,
TileInstance
};
use
crate
::
ldtk
::{
EntityInstance
,
FieldInstance
,
LayerInstance
,
Level
,
Project
,
TileInstance
};
use
crate
::
system
::
Indexer
;
use
crate
::
system
::
Indexer
;
use
crate
::{
get_ldtk_tile_scale
,
px_to_grid
};
use
crate
::{
get_ldtk_tile_scale
,
px_to_grid
};
use
crate
::
MapQuery
;
use
crate
::
MapQuery
;
...
@@ -117,6 +117,17 @@ pub struct LdtkLevel {
...
@@ -117,6 +117,17 @@ pub struct LdtkLevel {
}
}
impl
LdtkLevel
{
impl
LdtkLevel
{
pub
fn
from_project
(
project
:
&
Project
,
level
:
Level
)
->
Self
{
let
mut
level_data
=
LdtkLevel
::
from
(
level
);
level_data
.layers_mut
()
.for_each
(|
layer
|
{
if
let
Some
(
def
)
=
project
.defs.layers
.iter
()
.find
(|
inner
|
{
inner
.uid
==
layer
.layer.layer_def_uid
})
{
layer
.tags
=
def
.ui_filter_tags
.clone
();
}
});
level_data
}
pub
fn
width
(
&
self
)
->
f32
{
pub
fn
width
(
&
self
)
->
f32
{
self
.level.px_wid
as
f32
self
.level.px_wid
as
f32
}
}
...
@@ -162,6 +173,7 @@ impl LdtkLevel {
...
@@ -162,6 +173,7 @@ impl LdtkLevel {
pub
fn
get_indexer
(
&
self
)
->
Indexer
{
pub
fn
get_indexer
(
&
self
)
->
Indexer
{
Indexer
::
new
(
px_to_grid
(
self
.level.px_wid
),
px_to_grid
(
self
.level.px_hei
))
Indexer
::
new
(
px_to_grid
(
self
.level.px_wid
),
px_to_grid
(
self
.level.px_hei
))
}
}
}
}
#[derive(Debug,
Clone,
Default)]
#[derive(Debug,
Clone,
Default)]
...
@@ -200,7 +212,7 @@ impl From<Level> for LdtkLevel {
...
@@ -200,7 +212,7 @@ impl From<Level> for LdtkLevel {
let
mut
collider_quads
=
Quadtree
::
<
i64
,
LocatedEntity
>
::
new
(
32
);
let
mut
collider_quads
=
Quadtree
::
<
i64
,
LocatedEntity
>
::
new
(
32
);
for
entity
in
MapQuery
::
get_entities_of
(
&
level
)
{
for
entity
in
MapQuery
::
get_entities_of
(
&
level
)
{
if
entity
.tags
.contains
(
&
String
::
from
(
"
C
ollider"
))
{
if
entity
.tags
.contains
(
&
String
::
from
(
"
c
ollider"
))
{
let
mut
properties
=
HashMap
::
with_capacity
(
entity
.field_instances
.len
());
let
mut
properties
=
HashMap
::
with_capacity
(
entity
.field_instances
.len
());
for
field
in
entity
.field_instances
.iter
()
{
for
field
in
entity
.field_instances
.iter
()
{
properties
.insert
(
properties
.insert
(
...
@@ -209,14 +221,16 @@ impl From<Level> for LdtkLevel {
...
@@ -209,14 +221,16 @@ impl From<Level> for LdtkLevel {
);
);
}
}
let
_width
=
entity
.width
;
let
x
=
entity
.px
[
0
]
as
i32
;
let
y
=
entity
.px
[
1
];
let
width
=
entity
.width
as
i32
;
let
height
=
entity
.height
;
let
height
=
entity
.height
;
let
_left_x
=
entity
.px
[
0
];
let
_bottom_y
=
level_height
-
(
entity
.px
[
1
]
+
height
);
let
size
=
IVec2
::
new
(
entity
.width
as
i32
,
entity
.height
as
i32
);
// y indicates top left, we want bottom left
let
position
=
IVec2
::
new
(
level
.level.px_wid
as
i32
,
level
.level.px_hei
as
i32
)
let
y
=
(
level_height
-
y
)
-
height
;
-
(
IVec2
::
new
(
entity
.px
[
0
]
as
i32
,
entity
.px
[
1
]
as
i32
)
+
size
);
let
position
=
IVec2
::
new
(
x
,
y
as
i32
);
let
size
=
IVec2
::
new
(
width
,
height
as
i32
);
let
entity
=
LocatedEntity
{
let
entity
=
LocatedEntity
{
position
,
position
,
...
@@ -245,6 +259,7 @@ pub struct LdtkLayer {
...
@@ -245,6 +259,7 @@ pub struct LdtkLayer {
layer
:
LayerInstance
,
layer
:
LayerInstance
,
position_lookup
:
HashMap
<
SpatialIndex
,
TileInstance
>
,
position_lookup
:
HashMap
<
SpatialIndex
,
TileInstance
>
,
indexer
:
Indexer
,
indexer
:
Indexer
,
tags
:
Vec
<
String
>
,
}
}
impl
LdtkLayer
{
impl
LdtkLayer
{
...
@@ -268,6 +283,7 @@ impl LdtkLayer {
...
@@ -268,6 +283,7 @@ impl LdtkLayer {
indexer
,
indexer
,
layer
,
layer
,
position_lookup
,
position_lookup
,
tags
:
Vec
::
new
(),
}
}
}
}
...
@@ -325,6 +341,13 @@ impl LdtkLayer {
...
@@ -325,6 +341,13 @@ impl LdtkLayer {
pub
fn
layer_ref_mut
(
&
mut
self
)
->
&
mut
LayerInstance
{
pub
fn
layer_ref_mut
(
&
mut
self
)
->
&
mut
LayerInstance
{
&
mut
self
.layer
&
mut
self
.layer
}
}
pub
fn
tags
(
&
self
)
->
&
[
String
]
{
&
self
.tags
}
pub
fn
has_tag
(
&
self
,
tag
:
&
str
)
->
bool
{
self
.tags
.iter
()
.any
(|
t
|
t
==
tag
)
}
}
}
impl
AsRef
<
LayerInstance
>
for
LdtkLayer
{
impl
AsRef
<
LayerInstance
>
for
LdtkLayer
{
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment