Compare commits
4 Commits
fw-calm-do
...
temp
| Author | SHA1 | Date | |
|---|---|---|---|
| 5ba0f3f8cb | |||
| 4b74ea8acf | |||
| dd7e48350d | |||
| 9bdb3ff403 |
14
Cargo.lock
generated
14
Cargo.lock
generated
@@ -623,7 +623,7 @@ checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da"
|
||||
[[package]]
|
||||
name = "fixed_wide"
|
||||
version = "0.1.0"
|
||||
source = "git+https://git.itzana.me/StrafesNET/fixed_wide_vectors?rev=861f9a081e60df6290f53742eb6a60c9ef8c0a0b#861f9a081e60df6290f53742eb6a60c9ef8c0a0b"
|
||||
source = "git+https://git.itzana.me/StrafesNET/fixed_wide_vectors?rev=438d0ec6ec4ae97d13d950ea317ce324dd205e10#438d0ec6ec4ae97d13d950ea317ce324dd205e10"
|
||||
dependencies = [
|
||||
"arrayvec",
|
||||
"bnum",
|
||||
@@ -952,7 +952,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "linear_ops"
|
||||
version = "0.1.0"
|
||||
source = "git+https://git.itzana.me/StrafesNET/fixed_wide_vectors?rev=861f9a081e60df6290f53742eb6a60c9ef8c0a0b#861f9a081e60df6290f53742eb6a60c9ef8c0a0b"
|
||||
source = "git+https://git.itzana.me/StrafesNET/fixed_wide_vectors?rev=438d0ec6ec4ae97d13d950ea317ce324dd205e10#438d0ec6ec4ae97d13d950ea317ce324dd205e10"
|
||||
dependencies = [
|
||||
"fixed_wide",
|
||||
"paste",
|
||||
@@ -1594,7 +1594,7 @@ checksum = "9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab"
|
||||
[[package]]
|
||||
name = "ratio_ops"
|
||||
version = "0.1.0"
|
||||
source = "git+https://git.itzana.me/StrafesNET/fixed_wide_vectors?rev=861f9a081e60df6290f53742eb6a60c9ef8c0a0b#861f9a081e60df6290f53742eb6a60c9ef8c0a0b"
|
||||
source = "git+https://git.itzana.me/StrafesNET/fixed_wide_vectors?rev=438d0ec6ec4ae97d13d950ea317ce324dd205e10#438d0ec6ec4ae97d13d950ea317ce324dd205e10"
|
||||
|
||||
[[package]]
|
||||
name = "raw-window-handle"
|
||||
@@ -1922,7 +1922,7 @@ dependencies = [
|
||||
"parking_lot",
|
||||
"pollster",
|
||||
"strafesnet_bsp_loader",
|
||||
"strafesnet_common 0.4.1 (git+https://git.itzana.me/StrafesNET/common?rev=c5f01d4c3ea3aa2ee3448ff42f020f5f5239dc95)",
|
||||
"strafesnet_common 0.4.1 (git+https://git.itzana.me/StrafesNET/common?rev=d3bc8e0e855503f368a60eee8e92b73302207272)",
|
||||
"strafesnet_deferred_loader",
|
||||
"strafesnet_rbx_loader",
|
||||
"strafesnet_snf",
|
||||
@@ -1957,7 +1957,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "strafesnet_common"
|
||||
version = "0.4.1"
|
||||
source = "git+https://git.itzana.me/StrafesNET/common?rev=c5f01d4c3ea3aa2ee3448ff42f020f5f5239dc95#c5f01d4c3ea3aa2ee3448ff42f020f5f5239dc95"
|
||||
source = "git+https://git.itzana.me/StrafesNET/common?rev=d3bc8e0e855503f368a60eee8e92b73302207272#d3bc8e0e855503f368a60eee8e92b73302207272"
|
||||
dependencies = [
|
||||
"arrayvec",
|
||||
"bitflags 2.6.0",
|
||||
@@ -1999,11 +1999,11 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "strafesnet_snf"
|
||||
version = "0.1.3"
|
||||
source = "git+https://git.itzana.me/StrafesNET/snf?rev=1e0095ed1583f0330d8dbdf1f56edd61bfb43eec#1e0095ed1583f0330d8dbdf1f56edd61bfb43eec"
|
||||
source = "git+https://git.itzana.me/StrafesNET/snf?rev=cbe20623046ec4dd41234b473c8d6171048d7b2d#cbe20623046ec4dd41234b473c8d6171048d7b2d"
|
||||
dependencies = [
|
||||
"binrw 0.14.0",
|
||||
"id",
|
||||
"strafesnet_common 0.4.1 (git+https://git.itzana.me/StrafesNET/common?rev=c5f01d4c3ea3aa2ee3448ff42f020f5f5239dc95)",
|
||||
"strafesnet_common 0.4.1 (git+https://git.itzana.me/StrafesNET/common?rev=d3bc8e0e855503f368a60eee8e92b73302207272)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
||||
@@ -23,10 +23,10 @@ id = { version = "0.1.0", registry = "strafesnet" }
|
||||
parking_lot = "0.12.1"
|
||||
pollster = "0.3.0"
|
||||
strafesnet_bsp_loader = { version = "0.1.3", registry = "strafesnet", optional = true }
|
||||
strafesnet_common = { git = "https://git.itzana.me/StrafesNET/common", rev = "c5f01d4c3ea3aa2ee3448ff42f020f5f5239dc95" }
|
||||
strafesnet_common = { git = "https://git.itzana.me/StrafesNET/common", rev = "d3bc8e0e855503f368a60eee8e92b73302207272" }
|
||||
strafesnet_deferred_loader = { version = "0.3.1", features = ["legacy"], registry = "strafesnet", optional = true }
|
||||
strafesnet_rbx_loader = { version = "0.3.2", registry = "strafesnet", optional = true }
|
||||
strafesnet_snf = { git = "https://git.itzana.me/StrafesNET/snf", rev = "1e0095ed1583f0330d8dbdf1f56edd61bfb43eec", optional = true }
|
||||
strafesnet_snf = { git = "https://git.itzana.me/StrafesNET/snf", rev = "cbe20623046ec4dd41234b473c8d6171048d7b2d", optional = true }
|
||||
wgpu = "22.0.0"
|
||||
winit = "0.30.4"
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ type MinkowskiTransition=Transition<MinkowskiFace,MinkowskiDirectedEdge,Minkowsk
|
||||
fn next_transition(fev:&MinkowskiFEV,body_time:GigaTime,mesh:&MinkowskiMesh,body:&Body,mut best_time:GigaTime)->MinkowskiTransition{
|
||||
//conflicting derivative means it crosses in the wrong direction.
|
||||
//if the transition time is equal to an already tested transition, do not replace the current best.
|
||||
let mut best_transtition=MinkowskiTransition::Miss;
|
||||
let mut best_transition=MinkowskiTransition::Miss;
|
||||
match fev{
|
||||
&MinkowskiFEV::Face(face_id)=>{
|
||||
//test own face collision time, ignoring roots with zero or conflicting derivative
|
||||
@@ -27,7 +27,7 @@ type MinkowskiTransition=Transition<MinkowskiFace,MinkowskiDirectedEdge,Minkowsk
|
||||
for dt in Fixed::<4,128>::zeroes2((n.dot(body.position)-d)*2,n.dot(body.velocity)*2,n.dot(body.acceleration)){
|
||||
if body_time.le_ratio(dt)&&dt.lt_ratio(best_time)&&n.dot(body.extrapolated_velocity_ratio_dt(dt)).is_negative(){
|
||||
best_time=dt;
|
||||
best_transtition=MinkowskiTransition::Hit(face_id,dt);
|
||||
best_transition=MinkowskiTransition::Hit(face_id,dt);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -41,7 +41,7 @@ type MinkowskiTransition=Transition<MinkowskiFace,MinkowskiDirectedEdge,Minkowsk
|
||||
for dt in Fixed::<4,128>::zeroes2(n.dot(body.position*2-(mesh.vert(verts[0])+mesh.vert(verts[1]))).fix_4(),n.dot(body.velocity).fix_4()*2,n.dot(body.acceleration).fix_4()){
|
||||
if body_time.le_ratio(dt)&&dt.lt_ratio(best_time)&&n.dot(body.extrapolated_velocity_ratio_dt(dt)).is_negative(){
|
||||
best_time=dt;
|
||||
best_transtition=MinkowskiTransition::Next(MinkowskiFEV::Edge(directed_edge_id.as_undirected()),dt);
|
||||
best_transition=MinkowskiTransition::Next(MinkowskiFEV::Edge(directed_edge_id.as_undirected()),dt);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -61,7 +61,7 @@ type MinkowskiTransition=Transition<MinkowskiFace,MinkowskiDirectedEdge,Minkowsk
|
||||
for dt in Fixed::<4,128>::zeroes2(n.dot(delta_pos).fix_4(),n.dot(body.velocity).fix_4()*2,n.dot(body.acceleration).fix_4()){
|
||||
if body_time.le_ratio(dt)&&dt.lt_ratio(best_time)&&n.dot(body.extrapolated_velocity_ratio_dt(dt)).is_negative(){
|
||||
best_time=dt;
|
||||
best_transtition=MinkowskiTransition::Next(MinkowskiFEV::Face(edge_face_id),dt);
|
||||
best_transition=MinkowskiTransition::Next(MinkowskiFEV::Face(edge_face_id),dt);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -74,7 +74,7 @@ type MinkowskiTransition=Transition<MinkowskiFace,MinkowskiDirectedEdge,Minkowsk
|
||||
if body_time.le_ratio(dt)&&dt.lt_ratio(best_time)&&n.dot(body.extrapolated_velocity_ratio_dt(dt)).is_negative(){
|
||||
let dt=Ratio::new(dt.num.fix_4(),dt.den.fix_4());
|
||||
best_time=dt;
|
||||
best_transtition=MinkowskiTransition::Next(MinkowskiFEV::Vert(vert_id),dt);
|
||||
best_transition=MinkowskiTransition::Next(MinkowskiFEV::Vert(vert_id),dt);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -90,7 +90,7 @@ type MinkowskiTransition=Transition<MinkowskiFace,MinkowskiDirectedEdge,Minkowsk
|
||||
if body_time.le_ratio(dt)&&dt.lt_ratio(best_time)&&n.dot(body.extrapolated_velocity_ratio_dt(dt)).is_negative(){
|
||||
let dt=Ratio::new(dt.num.fix_4(),dt.den.fix_4());
|
||||
best_time=dt;
|
||||
best_transtition=MinkowskiTransition::Next(MinkowskiFEV::Edge(directed_edge_id.as_undirected()),dt);
|
||||
best_transition=MinkowskiTransition::Next(MinkowskiFEV::Edge(directed_edge_id.as_undirected()),dt);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -98,7 +98,7 @@ type MinkowskiTransition=Transition<MinkowskiFace,MinkowskiDirectedEdge,Minkowsk
|
||||
//if none:
|
||||
},
|
||||
}
|
||||
best_transtition
|
||||
best_transition
|
||||
}
|
||||
pub enum CrawlResult<F,E:DirectedEdge,V>{
|
||||
Miss(FEV<F,E,V>),
|
||||
|
||||
@@ -707,7 +707,8 @@ impl MinkowskiMesh<'_>{
|
||||
infinity_body.velocity=dir;
|
||||
infinity_body.acceleration=vec3::ZERO;
|
||||
//crawl in from negative infinity along a tangent line to get the closest fev
|
||||
match crate::face_crawler::crawl_fev(infinity_fev,self,&infinity_body,integer::Time::MIN,infinity_body.time){
|
||||
// TODO: change crawl_fev args to delta time? Optional values?
|
||||
match crate::face_crawler::crawl_fev(infinity_fev,self,&infinity_body,integer::Time::MIN/4,infinity_body.time){
|
||||
crate::face_crawler::CrawlResult::Miss(fev)=>Some(fev),
|
||||
crate::face_crawler::CrawlResult::Hit(_,_)=>None,
|
||||
}
|
||||
@@ -767,7 +768,7 @@ impl MinkowskiMesh<'_>{
|
||||
}
|
||||
fn infinity_in(&self,infinity_body:crate::physics::Body)->Option<(MinkowskiFace,GigaTime)>{
|
||||
let infinity_fev=self.infinity_fev(-infinity_body.velocity,infinity_body.position);
|
||||
match crate::face_crawler::crawl_fev(infinity_fev,self,&infinity_body,integer::Time::MIN,infinity_body.time){
|
||||
match crate::face_crawler::crawl_fev(infinity_fev,self,&infinity_body,integer::Time::MIN/4,infinity_body.time){
|
||||
crate::face_crawler::CrawlResult::Miss(_)=>None,
|
||||
crate::face_crawler::CrawlResult::Hit(face,time)=>Some((face,time)),
|
||||
}
|
||||
|
||||
@@ -1957,7 +1957,7 @@ fn atomic_input_instruction(state:&mut PhysicsState,data:&PhysicsData,ins:TimedI
|
||||
_=>println!("{}|{:?}",ins.time,ins.instruction),
|
||||
}
|
||||
if ins.time<state.time{
|
||||
println!("@@@@ Time travel warning! {:?}",ins);
|
||||
println!("@@@@ Time travel warning! state.time={} ins.time={}\nInstruction={:?}",state.time,ins.time,ins.instruction);
|
||||
}
|
||||
//idle is special, it is specifically a no-op to get Internal events to catch up to real time
|
||||
match ins.instruction{
|
||||
|
||||
Reference in New Issue
Block a user