Compare commits
4 commits
dc01cbfe12
...
d9dee1b48e
Author | SHA1 | Date | |
---|---|---|---|
yuni | d9dee1b48e | ||
yuni | e91dd8d995 | ||
yuni | a27036461a | ||
yuni | 192fdd0cba |
|
@ -23,10 +23,11 @@
|
|||
- Uranus: [By Askaniy, CC BY-SA 3.0](https://www.deviantart.com/askaniy/art/Uranus-Texture-Map-763551816)
|
||||
- Neptune: [By Solar System Scope, CC BY 4.0](https://www.solarsystemscope.com/textures/)
|
||||
- Textures:
|
||||
- metal.jpg: ["Seamless metal texture" by hhh316, CC BY 3.0](https://www.deviantart.com/hhh316/art/Seamless-metal-texture-182943398)
|
||||
- solarpanel.jpg: ["Solar panel-Texture 1" by Conquestus, CC BY 3.0](https://www.deviantart.com/conquestus/art/Solar-panel-Texture-1-703900580)
|
||||
- plant.jpg: [OTF_Macro_Leaf_19 by Brent Leimenstoll, CC BY-SA 2.0](https://www.flickr.com/photos/brentleimenstoll/9117089591)
|
||||
- denim.jpg: ["Seamless Denim" by fotogrph, CC BY 3.0](https://www.deviantart.com/fotogrph/art/Seamless-Denim-301565637)
|
||||
- exhaust.png: By Yuni, CC0 License
|
||||
- metal.jpg: ["Seamless metal texture" by hhh316, CC BY 3.0](https://www.deviantart.com/hhh316/art/Seamless-metal-texture-182943398)
|
||||
- plant.jpg: [OTF_Macro_Leaf_19 by Brent Leimenstoll, CC BY-SA 2.0](https://www.flickr.com/photos/brentleimenstoll/9117089591)
|
||||
- solarpanel.jpg: ["Solar panel-Texture 1" by Conquestus, CC BY 3.0](https://www.deviantart.com/conquestus/art/Solar-panel-Texture-1-703900580)
|
||||
- suit.jpg: By Yuni, CC0 License
|
||||
- Icon: By Yuni, CC0 License
|
||||
- Sounds by Yuni, CC0 License:
|
||||
|
|
BIN
assets/models/ar_nekomimi.bin
Normal file
BIN
assets/models/ar_nekomimi.bin
Normal file
Binary file not shown.
208
assets/models/ar_nekomimi.gltf
Normal file
208
assets/models/ar_nekomimi.gltf
Normal file
|
@ -0,0 +1,208 @@
|
|||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v4.2.60",
|
||||
"version":"2.0"
|
||||
},
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Cube",
|
||||
"rotation":[
|
||||
0.02528117410838604,
|
||||
0.1163245439529419,
|
||||
0.2057507038116455,
|
||||
0.9713373780250549
|
||||
],
|
||||
"scale":[
|
||||
0.4183187484741211,
|
||||
0.4183187484741211,
|
||||
0.08126619458198547
|
||||
],
|
||||
"translation":[
|
||||
-0.11588791012763977,
|
||||
0.9098548889160156,
|
||||
0.18442729115486145
|
||||
]
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"doubleSided":true,
|
||||
"name":"SuitV2_white",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":0
|
||||
},
|
||||
"metallicFactor":0.648099422454834,
|
||||
"roughnessFactor":0.75
|
||||
}
|
||||
},
|
||||
{
|
||||
"doubleSided":true,
|
||||
"name":"SuitV2_black",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorFactor":[
|
||||
0.026928085833787918,
|
||||
0.026928085833787918,
|
||||
0.026928085833787918,
|
||||
1
|
||||
],
|
||||
"metallicFactor":0.3655180037021637,
|
||||
"roughnessFactor":0.7267752289772034
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"Cube",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"POSITION":0,
|
||||
"TEXCOORD_0":1
|
||||
},
|
||||
"indices":2,
|
||||
"material":0
|
||||
},
|
||||
{
|
||||
"attributes":{
|
||||
"POSITION":3,
|
||||
"TEXCOORD_0":4
|
||||
},
|
||||
"indices":5,
|
||||
"material":1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures":[
|
||||
{
|
||||
"sampler":0,
|
||||
"source":0
|
||||
}
|
||||
],
|
||||
"images":[
|
||||
{
|
||||
"mimeType":"image/jpeg",
|
||||
"name":"suit",
|
||||
"uri":"textures/suit.jpg"
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5126,
|
||||
"count":16,
|
||||
"max":[
|
||||
0.5989817976951599,
|
||||
0.08483065664768219,
|
||||
0.8132073879241943
|
||||
],
|
||||
"min":[
|
||||
-0.14874723553657532,
|
||||
-0.5023269653320312,
|
||||
-0.3295954763889313
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":16,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5123,
|
||||
"count":60,
|
||||
"type":"SCALAR"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5126,
|
||||
"count":8,
|
||||
"max":[
|
||||
0.5835986137390137,
|
||||
0.06933381408452988,
|
||||
0.8132073879241943
|
||||
],
|
||||
"min":[
|
||||
-0.14856749773025513,
|
||||
-0.5023269653320312,
|
||||
-0.07371209561824799
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":4,
|
||||
"componentType":5126,
|
||||
"count":8,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":5,
|
||||
"componentType":5123,
|
||||
"count":12,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":192,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":128,
|
||||
"byteOffset":192,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":120,
|
||||
"byteOffset":320,
|
||||
"target":34963
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":96,
|
||||
"byteOffset":440,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":64,
|
||||
"byteOffset":536,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":24,
|
||||
"byteOffset":600,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"samplers":[
|
||||
{
|
||||
"magFilter":9729,
|
||||
"minFilter":9987
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":624,
|
||||
"uri":"ar_nekomimi.bin"
|
||||
}
|
||||
]
|
||||
}
|
BIN
src/blender/ar_nekomimi.blend
Normal file
BIN
src/blender/ar_nekomimi.blend
Normal file
Binary file not shown.
22
src/cmd.rs
22
src/cmd.rs
|
@ -125,6 +125,7 @@ struct ParserState {
|
|||
light_brightness: f32,
|
||||
light_color: Option<Color>,
|
||||
ar_model: Option<String>,
|
||||
ar_model2: Option<String>,
|
||||
show_only_in_map_at_distance: Option<(f64, String)>,
|
||||
}
|
||||
impl Default for ParserState {
|
||||
|
@ -186,6 +187,7 @@ impl Default for ParserState {
|
|||
light_brightness: 0.0,
|
||||
light_color: None,
|
||||
ar_model: None,
|
||||
ar_model2: None,
|
||||
show_only_in_map_at_distance: None,
|
||||
}
|
||||
}
|
||||
|
@ -685,6 +687,9 @@ pub fn load_defs(mut ew_spawn: EventWriter<SpawnEvent>) {
|
|||
["armodel", asset_name] => {
|
||||
state.ar_model = Some(asset_name.to_string());
|
||||
}
|
||||
["armodel_secondary", asset_name] => {
|
||||
state.ar_model2 = Some(asset_name.to_string());
|
||||
}
|
||||
["targeted", "yes"] => {
|
||||
state.is_targeted_on_startup = true;
|
||||
}
|
||||
|
@ -1182,6 +1187,23 @@ fn spawn_entities(
|
|||
load_asset(ar_asset_name, &mut entitycmd, &*asset_server);
|
||||
}
|
||||
|
||||
if let Some(ar_asset_name) = &state.ar_model2 {
|
||||
let mut entitycmd = commands.spawn((
|
||||
hud::AugmentedRealityOverlay {
|
||||
owner: actor_entity,
|
||||
scale: 1.0,
|
||||
},
|
||||
world::DespawnOnPlayerDeath,
|
||||
SpatialBundle {
|
||||
visibility: Visibility::Hidden,
|
||||
..default()
|
||||
},
|
||||
NotShadowCaster,
|
||||
NotShadowReceiver,
|
||||
));
|
||||
load_asset(ar_asset_name, &mut entitycmd, &*asset_server);
|
||||
}
|
||||
|
||||
if state.is_point_of_interest || state.is_moon || state.is_planet {
|
||||
let mut entitycmd = commands.spawn((
|
||||
hud::PointOfInterestMarker(actor_entity),
|
||||
|
|
|
@ -315,6 +315,7 @@ actor 700 -100 -1100 suitv2
|
|||
id Luna
|
||||
chatid Luna
|
||||
armodel suit_ar_skirt
|
||||
armodel_secondary suit_ar_nekomimi
|
||||
angularmomentum 0 0 0
|
||||
wants maxrotation 0
|
||||
wants maxvelocity none
|
||||
|
@ -349,13 +350,15 @@ actor 700 -100 -1100 suitv2
|
|||
scale 0.25
|
||||
light FF8F4A 4000000
|
||||
|
||||
actor -55e3 44e3 0 suitv2
|
||||
actor -55e3 31e3 0 suitv2
|
||||
template person
|
||||
relativeto thebe
|
||||
id yuni
|
||||
name "Yuni"
|
||||
chatid Yuni
|
||||
armodel suit_ar_skirt
|
||||
rotationx 180
|
||||
rotationy 90
|
||||
wants matchvelocitywith thebe
|
||||
|
||||
actor 5000 0 -3000 metis
|
||||
|
|
|
@ -47,6 +47,7 @@ pub const PLAYER_AR_AVATARS: &[(Avatar, &str, f32, &str)] = &[
|
|||
(Avatar::None, "", 1.0, "No Avatar"),
|
||||
(Avatar::ChefHat, "suit_ar_chefhat", 1.0, "Chef Hat"),
|
||||
(Avatar::Skirt, "suit_ar_skirt", 1.0, "Skirt"),
|
||||
(Avatar::Nekomimi, "suit_ar_nekomimi", 1.0, "Cat Ears"),
|
||||
(Avatar::Wings, "suit_ar_wings", 1.0, "Wings"),
|
||||
(Avatar::Asteroid, "asteroid2", 1.2, "Asteroid"),
|
||||
];
|
||||
|
@ -177,6 +178,7 @@ struct FPSUpdateTimer(Timer);
|
|||
pub enum Avatar {
|
||||
None,
|
||||
ChefHat,
|
||||
Nekomimi,
|
||||
Skirt,
|
||||
Wings,
|
||||
Asteroid,
|
||||
|
|
|
@ -30,6 +30,7 @@ pub fn asset_name_to_path(name: &str) -> &'static str {
|
|||
match name {
|
||||
"suitv2" => "models/suit_v2.gltf#Scene0",
|
||||
"suit_ar_chefhat" => "models/suit_v2/ar_chefhat.glb#Scene0",
|
||||
"suit_ar_nekomimi" => "models/ar_nekomimi.gltf#Scene0",
|
||||
"suit_ar_skirt" => "models/ar_skirt.gltf#Scene0",
|
||||
"suit_ar_wings" => "models/suit_v2/ar_wings.glb#Scene0",
|
||||
"sus" => "models/sus.glb#Scene0",
|
||||
|
|
Loading…
Reference in a new issue