*data;
#pragma pack(pop)
- u32 frame;
+ int frame;
int initialzed;
- u32 sim_frame;
+ int sim_frame;
float sim_start;
int simulating;
- u32 sim_run, max_runs;
+ int sim_run, max_runs;
float frame_lerp;
int x2 = cell->links[trigger_id] % world.w;
int y2 = (cell->links[trigger_id] - x2) / world.w;
- v2f drag_to_co;
+ v2f startpoint;
+ v2f midpoint;
+ v2f endpoint;
- drag_to_co[0] = (float)x2 + (trigger_id? 0.75f: 0.25f);
- drag_to_co[1] = (float)y2 + 0.25f;
+ startpoint[0] = (float)x2 + (trigger_id? 0.75f: 0.25f);
+ startpoint[1] = (float)y2 + 0.25f;
- vg_line2( (v2f){x+0.5f,y+0.5f}, drag_to_co, 0xff0000ff, 0xff00ffff );
+ endpoint[0] = x+0.5f;
+ endpoint[1] = y+0.5f;
+ v2_add( startpoint, endpoint, midpoint );
+ v2_muls( midpoint, 0.5f, midpoint );
+ midpoint[1] += -0.8f;
+
+ float t, ta;
+ v2f lastpoint; v2f curpoint;
+ v2_copy( startpoint, lastpoint );
+
+ for( int i = 0; i < 10; i ++ )
+ {
+ t = ((float)i+1.f)/10.0f;
+ ta = 1.0f-t;
+
+ v2_muls( startpoint, ta*ta, curpoint );
+ v2_muladds( curpoint, midpoint, 2.0f*ta*t, curpoint );
+ v2_muladds( curpoint, endpoint, t*t, curpoint );
+
+ vg_line2( lastpoint, curpoint, 0xff444444, 0xff444444 );
+ v2_copy( curpoint, lastpoint );
+ }
}
if( cell->config == k_cell_type_split )