slash tip pos frame circle buffer
This commit is contained in:
parent
52c617713c
commit
abd223a623
1 changed files with 12 additions and 5 deletions
17
src/Arts.cs
17
src/Arts.cs
|
@ -18,10 +18,14 @@ static class Arts
|
||||||
|
|
||||||
public static Vec3 shake = new(0, 0, 0);
|
public static Vec3 shake = new(0, 0, 0);
|
||||||
// static Quat spin_ori = Quat.Identity;
|
// static Quat spin_ori = Quat.Identity;
|
||||||
public static Vec3 last_tip_pos = new(0, 0, 0);
|
|
||||||
|
|
||||||
static TextStyle text_style;
|
static TextStyle text_style;
|
||||||
|
|
||||||
|
// slash tip pos frame circle buffer
|
||||||
|
static int tip_index = 0;
|
||||||
|
static int tip_count = 12;
|
||||||
|
static Vec3[] tip_buffer = new Vec3[tip_count];
|
||||||
|
|
||||||
public static void Init()
|
public static void Init()
|
||||||
{
|
{
|
||||||
foreach (ModelNode node in assets_model.Nodes)
|
foreach (ModelNode node in assets_model.Nodes)
|
||||||
|
@ -239,11 +243,14 @@ static class Arts
|
||||||
Quat blade_ori = Rig.r_hld.orientation;
|
Quat blade_ori = Rig.r_hld.orientation;
|
||||||
Vec3 blade_pos = Rig.r_hld.position;
|
Vec3 blade_pos = Rig.r_hld.position;
|
||||||
Vec3 tip_pos = blade_pos + blade_ori * V.XYZ(0, 0, -1);
|
Vec3 tip_pos = blade_pos + blade_ori * V.XYZ(0, 0, -1);
|
||||||
|
tip_index = (tip_index + 1) % tip_count;
|
||||||
|
tip_buffer[tip_index] = tip_pos;
|
||||||
|
Vec3 oldest_tip = tip_buffer[(tip_index + 1) % tip_count];
|
||||||
mesh.SetData(
|
mesh.SetData(
|
||||||
new Vertex[] {
|
new Vertex[] {
|
||||||
new( blade_pos, V.XYZ(0,0,1)),
|
new( blade_pos, V.XYZ(0,0,1)),
|
||||||
new( tip_pos, V.XYZ(0,0,1)),
|
new( tip_pos, V.XYZ(0,0,1)),
|
||||||
new(last_tip_pos, V.XYZ(0,0,1))
|
new(oldest_tip, V.XYZ(0,0,1))
|
||||||
},
|
},
|
||||||
new uint[] {
|
new uint[] {
|
||||||
0, 1, 2
|
0, 1, 2
|
||||||
|
@ -254,9 +261,9 @@ static class Arts
|
||||||
Matrix.Identity,
|
Matrix.Identity,
|
||||||
Color.Hex(0xF9BF05FF).ToLinear()
|
Color.Hex(0xF9BF05FF).ToLinear()
|
||||||
);
|
);
|
||||||
Ray slash_ray = new Ray(tip_pos, Vec3.Direction(tip_pos, last_tip_pos));
|
Ray slash_ray = new Ray(tip_pos, Vec3.Direction(tip_pos, oldest_tip));
|
||||||
float ray_dist = Vec3.Distance(tip_pos, last_tip_pos);
|
float ray_dist = Vec3.Distance(tip_pos, oldest_tip);
|
||||||
last_tip_pos = Vec3.Lerp(last_tip_pos, tip_pos, Time.Stepf / 0.1f);
|
// last_tip_pos = Vec3.Lerp(last_tip_pos, tip_pos, Time.Stepf / 0.1f);
|
||||||
|
|
||||||
if (true) // hit test
|
if (true) // hit test
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue