Compare commits
7 commits
0badc52914
...
b69f5945af
Author | SHA1 | Date | |
---|---|---|---|
yuni | b69f5945af | ||
yuni | 792e68de08 | ||
yuni | 65ffee383e | ||
yuni | 1b13d9b0e0 | ||
yuni | 7ae7a1dd8b | ||
yuni | 1291971f38 | ||
yuni | 717bf34575 |
BIN
assets/models/frameflat.bin
Normal file
BIN
assets/models/frameflat.bin
Normal file
Binary file not shown.
244
assets/models/frameflat.gltf
Normal file
244
assets/models/frameflat.gltf
Normal file
|
@ -0,0 +1,244 @@
|
|||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v4.2.60",
|
||||
"version":"2.0"
|
||||
},
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Cube",
|
||||
"scale":[
|
||||
0.05000000074505806,
|
||||
0.05000000074505806,
|
||||
0.054999999701976776
|
||||
],
|
||||
"translation":[
|
||||
-0.949999988079071,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Cube.001",
|
||||
"scale":[
|
||||
0.05000000074505806,
|
||||
0.05000000074505806,
|
||||
0.054999999701976776
|
||||
],
|
||||
"translation":[
|
||||
0.949999988079071,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Cube.002",
|
||||
"scale":[
|
||||
0.05000000074505806,
|
||||
0.05000000074505806,
|
||||
0.054999999701976776
|
||||
]
|
||||
},
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Cube.003",
|
||||
"scale":[
|
||||
0.05000000074505806,
|
||||
0.05000000074505806,
|
||||
0.054999999701976776
|
||||
],
|
||||
"translation":[
|
||||
0.4749999940395355,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Cube.004",
|
||||
"scale":[
|
||||
0.05000000074505806,
|
||||
0.05000000074505806,
|
||||
0.054999999701976776
|
||||
],
|
||||
"translation":[
|
||||
-0.4749999940395355,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Cube.005",
|
||||
"rotation":[
|
||||
0.5,
|
||||
0.5,
|
||||
0.5,
|
||||
0.5000000596046448
|
||||
],
|
||||
"scale":[
|
||||
0.05000000074505806,
|
||||
0.05000000074505806,
|
||||
0.06499999761581421
|
||||
],
|
||||
"translation":[
|
||||
0,
|
||||
0,
|
||||
0.949999988079071
|
||||
]
|
||||
},
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Cube.006",
|
||||
"rotation":[
|
||||
0.5,
|
||||
0.5,
|
||||
0.5,
|
||||
0.5000000596046448
|
||||
],
|
||||
"scale":[
|
||||
0.05000000074505806,
|
||||
0.05000000074505806,
|
||||
0.06499999761581421
|
||||
],
|
||||
"translation":[
|
||||
0,
|
||||
0,
|
||||
-0.949999988079071
|
||||
]
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"doubleSided":true,
|
||||
"name":"Material",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":0
|
||||
},
|
||||
"metallicFactor":0.9920634627342224,
|
||||
"roughnessFactor":0.4047618806362152
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"Cube",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"POSITION":0,
|
||||
"NORMAL":1,
|
||||
"TEXCOORD_0":2
|
||||
},
|
||||
"indices":3,
|
||||
"material":0
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures":[
|
||||
{
|
||||
"sampler":0,
|
||||
"source":0
|
||||
}
|
||||
],
|
||||
"images":[
|
||||
{
|
||||
"mimeType":"image/jpeg",
|
||||
"name":"metal",
|
||||
"uri":"textures/metal.jpg"
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5126,
|
||||
"count":88,
|
||||
"max":[
|
||||
1,
|
||||
1,
|
||||
16.200002670288086
|
||||
],
|
||||
"min":[
|
||||
-1,
|
||||
-1,
|
||||
-16.200002670288086
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":88,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5126,
|
||||
"count":88,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5123,
|
||||
"count":180,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":1056,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":1056,
|
||||
"byteOffset":1056,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":704,
|
||||
"byteOffset":2112,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":360,
|
||||
"byteOffset":2816,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"samplers":[
|
||||
{
|
||||
"magFilter":9729,
|
||||
"minFilter":9987
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":3176,
|
||||
"uri":"frameflat.bin"
|
||||
}
|
||||
]
|
||||
}
|
BIN
src/blender/frameflat.blend
Normal file
BIN
src/blender/frameflat.blend
Normal file
Binary file not shown.
BIN
src/blender/lightorb.blend
Normal file
BIN
src/blender/lightorb.blend
Normal file
Binary file not shown.
Binary file not shown.
|
@ -125,5 +125,23 @@
|
|||
- So much dust and rocks out here and I can't touch any of it.
|
||||
- It's driving me nuts!!! Aaaah!!
|
||||
- goto: pig_node_main
|
||||
- if: pig$geologist
|
||||
I have some questions about geology:
|
||||
- Shoot!
|
||||
- label: pig_node_geo
|
||||
- I've seen some gigantic moonlets around here...:
|
||||
- Yeah they keep getting ejected from the moon Thebe!
|
||||
- Thebe is so tiny, it's gravitation is about the same as its centrifugal force, so the escape velocity is almost nonexistant.
|
||||
- So a small asteroid impact can release a bunch of rocks into the orbit, some large enough to be considered moonlets.
|
||||
- Makes you wonder how anything even still remains of Thebe after all these years.
|
||||
- What's the composition of the nearby rocks?:
|
||||
- It's debris ejected from Thebe, which is mostly silicate minerals and various metals.
|
||||
- Water ice is also very abundant here, and we're extracting oxygen and water from it.
|
||||
- I've seen simple organic molecules here too, but nothing alive.
|
||||
- Nothing native, anyway.
|
||||
- That's all, thanks!:
|
||||
- Cool, anything else you wanted?
|
||||
- goto: pig_node_main
|
||||
- goto: pig_node_geo
|
||||
- "[Hang up]": []
|
||||
- goto: EXIT
|
||||
|
|
|
@ -891,6 +891,24 @@
|
|||
- set: geologist
|
||||
- But that can wait, there's FLYING to be done!
|
||||
- goto: entrypoint
|
||||
- if: $geologist
|
||||
I have some questions about geology:
|
||||
- Shoot!
|
||||
- label: pig_node_geo
|
||||
- I've seen some gigantic moonlets around here...:
|
||||
- Yeah they keep getting ejected from the moon Thebe!
|
||||
- Thebe is so tiny, it's gravitation is about the same as its centrifugal force, so the escape velocity is almost nonexistant.
|
||||
- So a small asteroid impact can release a bunch of rocks into the orbit, some large enough to be considered moonlets.
|
||||
- Makes you wonder how anything even still remains of Thebe after all these years.
|
||||
- What's the composition of the nearby rocks?:
|
||||
- It's debris ejected from Thebe, which is mostly silicate minerals and various metals.
|
||||
- Water ice is also very abundant here, and we're extracting oxygen and water from it.
|
||||
- I've seen simple organic molecules here too, but nothing alive.
|
||||
- Nothing native, anyway.
|
||||
- That's all, thanks!:
|
||||
- Cool, anything else you wanted?
|
||||
- goto: pig_node_main
|
||||
- goto: pig_node_geo
|
||||
- if: $pig
|
||||
You're pork! Yummy! I'm starving!:
|
||||
- label: pork
|
||||
|
|
88
src/cmd.rs
88
src/cmd.rs
|
@ -747,22 +747,24 @@ fn spawn_scenes(
|
|||
for (name, template, pos, rot) in scene_defs {
|
||||
let pos = DVec3::new(
|
||||
root_state.pos[0] + pos[0],
|
||||
root_state.pos[1] - pos[2],
|
||||
root_state.pos[2] + pos[1],
|
||||
root_state.pos[1] + pos[2],
|
||||
root_state.pos[2] - pos[1],
|
||||
);
|
||||
if Some(name.to_string()) == root_state.name {
|
||||
let mut state = ParserState::default();
|
||||
state.class = DefClass::Actor;
|
||||
state.pos = pos;
|
||||
state.relative_to = root_state.relative_to.clone();
|
||||
|
||||
// Bevy's X is Blender's X (rot[0])
|
||||
// Bevy's Y is Blender's Z (rot[2])
|
||||
// Bevy's Z is Blender's -Y (-rot[1])
|
||||
state.rotation = Quat::from_euler(EulerRot::YZX, rot[2], -rot[1], rot[0]);
|
||||
|
||||
match template {
|
||||
"cruiser" => {
|
||||
let mut state = ParserState::default();
|
||||
state.class = DefClass::Actor;
|
||||
state.pos = pos;
|
||||
state.model = Some("cruiser".to_string());
|
||||
|
||||
state.rotation = Quat::from_euler(EulerRot::XYZ, rot[0], rot[1], rot[2]);
|
||||
|
||||
// command: relativeto ?
|
||||
state.relative_to = root_state.relative_to.clone();
|
||||
|
||||
// command: name Cruiser
|
||||
state.name = Some("Cruiser".to_string());
|
||||
|
||||
|
@ -796,19 +798,12 @@ fn spawn_scenes(
|
|||
|
||||
// command: pointofinterest yes
|
||||
state.is_point_of_interest = true;
|
||||
|
||||
ew_spawn.send(SpawnEvent(state));
|
||||
}
|
||||
"shippingcontainer" => {
|
||||
let mut state = ParserState::default();
|
||||
state.class = DefClass::Actor;
|
||||
state.pos = pos;
|
||||
state.model = Some("shippingcontainer".to_string());
|
||||
|
||||
state.rotation = Quat::from_euler(EulerRot::XYZ, rot[0], rot[1], rot[2]);
|
||||
|
||||
// command: relativeto ?
|
||||
state.relative_to = root_state.relative_to.clone();
|
||||
|
||||
// command: name Cruiser
|
||||
state.name = Some("Shipping Container".to_string());
|
||||
|
||||
|
@ -824,20 +819,11 @@ fn spawn_scenes(
|
|||
// command: density 500
|
||||
state.density = 500.0;
|
||||
|
||||
// command: pointofinterest yes
|
||||
ew_spawn.send(SpawnEvent(state));
|
||||
}
|
||||
"fueltank" => {
|
||||
let mut state = ParserState::default();
|
||||
state.class = DefClass::Actor;
|
||||
state.pos = pos;
|
||||
state.model = Some("fueltank".to_string());
|
||||
|
||||
state.rotation = Quat::from_euler(EulerRot::XYZ, rot[0], rot[1], rot[2]);
|
||||
|
||||
// command: relativeto ?
|
||||
state.relative_to = root_state.relative_to.clone();
|
||||
|
||||
// command: name "Fuel Tank"
|
||||
state.name = Some("Fuel Tank".to_string());
|
||||
|
||||
|
@ -860,10 +846,54 @@ fn spawn_scenes(
|
|||
// command: chat_achievement no
|
||||
state.chat_counts_towards_achievements = false;
|
||||
|
||||
// command: pointofinterest yes
|
||||
ew_spawn.send(SpawnEvent(state));
|
||||
}
|
||||
_ => {}
|
||||
"frameflat" => {
|
||||
state.model = Some("frameflat".to_string());
|
||||
|
||||
// command: name "Frame"
|
||||
state.name = Some("Frame".to_string());
|
||||
|
||||
// command: id lunaplatform
|
||||
state.id = String::from("lunaplatform");
|
||||
|
||||
// command: scale 30
|
||||
state.model_scale = 30.0;
|
||||
|
||||
// command: angularmomentum 0 0 0
|
||||
state.angular_momentum = DVec3::ZERO;
|
||||
|
||||
// command: collider mesh
|
||||
state.collider_is_one_mesh_of_scene = true;
|
||||
state.collider_is_mesh = true;
|
||||
|
||||
// command: density 50000
|
||||
state.density = 50000.0;
|
||||
|
||||
ew_spawn.send(SpawnEvent(state));
|
||||
}
|
||||
"lightorb" => {
|
||||
state.model = Some("lightorb".to_string());
|
||||
|
||||
// command: name "Light Orb"
|
||||
state.name = Some("Light Orb".to_string());
|
||||
|
||||
// command: collider mesh
|
||||
state.collider_is_one_mesh_of_scene = true;
|
||||
state.collider_is_mesh = true;
|
||||
|
||||
// command: scale 0.25
|
||||
state.model_scale = 0.25;
|
||||
|
||||
// command: light FF8F4A 4000000
|
||||
state.light_color = Some(Color::Srgba(Srgba::hex("FF8F4A").unwrap()));
|
||||
state.light_brightness = 4000000.0;
|
||||
|
||||
ew_spawn.send(SpawnEvent(state));
|
||||
}
|
||||
_ => {
|
||||
error!("Can't find template named `{template}' in cmd::spawn_scenes!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -337,11 +337,11 @@ actor 700 -100 -1100 suitv2
|
|||
armodel_tertiary suit_ar_bra
|
||||
angularmomentum 0 0 0
|
||||
wants maxrotation 0
|
||||
wants maxvelocity none
|
||||
wants matchvelocitywith lunaplatform
|
||||
rotationy 108
|
||||
rotationx 180
|
||||
pronoun she
|
||||
scene 22 0 0 workshop
|
||||
scene 12 0 -30 workshop
|
||||
relativeto Luna
|
||||
actor -20 10 -23 MeteorAceGT
|
||||
name "Luna's experimental MeteorAceGT"
|
||||
|
@ -356,18 +356,6 @@ actor 700 -100 -1100 suitv2
|
|||
angularmomentum 0 0 0.2
|
||||
pointofinterest yes
|
||||
message_on_entry "NOT DESIGNED FOR HUMAN USE"
|
||||
actor -9 4 11 lightorb
|
||||
relativeto Luna
|
||||
name "Light Orb"
|
||||
collider mesh
|
||||
scale 0.25
|
||||
light FF8F4A 4000000
|
||||
actor -8 1 -9 lightorb
|
||||
relativeto Luna
|
||||
name "Light Orb"
|
||||
collider mesh
|
||||
scale 0.25
|
||||
light FF8F4A 4000000
|
||||
|
||||
actor -55e3 31e3 0 suitv2
|
||||
template person
|
||||
|
@ -486,7 +474,7 @@ actor -3300 10 0 pizzeria
|
|||
pointofinterest yes
|
||||
collider handcrafted
|
||||
angularmomentum 0 0 0
|
||||
actor -120 0 20 MeteorAceGT
|
||||
actor -120 0 50 MeteorAceGT
|
||||
name "MeteorAceGT™"
|
||||
relativeto pizzeria
|
||||
scale 5
|
||||
|
@ -498,7 +486,7 @@ actor -3300 10 0 pizzeria
|
|||
density 500
|
||||
angularmomentum 0 0 0.2
|
||||
pointofinterest yes
|
||||
actor -133 5 14 suitv2
|
||||
actor -133 5 58 suitv2
|
||||
template person
|
||||
relativeto pizzeria
|
||||
wants matchvelocitywith pizzeria
|
||||
|
|
|
@ -2,8 +2,11 @@
|
|||
// DO NOT MODIFY MANUALLY, CHANGES WILL BE OVERWRITTEN!
|
||||
[
|
||||
("test", "cruiser", [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]),
|
||||
("workshop", "fueltank", [21.132, -24.376015, 0.0], [1.1160387, -1.308411, -0.9967722]),
|
||||
("workshop", "shippingcontainer", [0.0, 0.0, 0.0], [-0.026294278, 0.000376441, 0.014312184]),
|
||||
("workshop", "shippingcontainer", [0.0, 12.0, 0.0], [-0.053937975, -0.013098141, 0.0]),
|
||||
("workshop", "shippingcontainer", [0.0, -12.0, 0.0], [0.061487854, 0.08236491, -0.051188234]),
|
||||
("workshop", "frameflat", [0.0, 0.0, -21.541874], [0.0, 0.0, 0.0]),
|
||||
("workshop", "fueltank", [21.074543, -2.4312592, -4.7432747], [1.2519244, -0.0, -0.6819759]),
|
||||
("workshop", "lightorb", [-15.720036, -32.41476, 4.1765304], [0.0, 0.0, 0.0]),
|
||||
("workshop", "lightorb", [11.5042095, -21.65356, -4.566242], [0.0, 0.0, 0.0]),
|
||||
("workshop", "shippingcontainer", [-0.52376616, 12.351211, -2.6598575], [-0.11791781, -0.02345992, 1.5838965]),
|
||||
("workshop", "shippingcontainer", [-13.479424, 10.191104, -8.136984], [-0.05393797, -0.013098141, 1.7229813]),
|
||||
("workshop", "shippingcontainer", [12.42811, 14.157182, -4.2369785], [-0.02553346, 0.042504273, 1.5108364]),
|
||||
]
|
||||
|
|
|
@ -51,6 +51,7 @@ pub fn asset_name_to_path(name: &str) -> &'static str {
|
|||
"MeteorAceGT" => "models/MeteorAceGT.glb#Scene0",
|
||||
"cruiser" => "models/cruiser.glb#Scene0",
|
||||
"shippingcontainer" => "models/shippingcontainer.glb#Scene0",
|
||||
"frameflat" => "models/frameflat.gltf#Scene0",
|
||||
"fueltank" => "models/fueltank.glb#Scene0",
|
||||
"satellite" => "models/satellite.gltf#Scene0",
|
||||
"pizzeria" => "models/pizzeria3.gltf#Scene0",
|
||||
|
|
Loading…
Reference in a new issue