stretch cursor initial implementation & asset space rotation fixed
This commit is contained in:
parent
09747638d8
commit
92f3fc5df2
3 changed files with 31 additions and 6 deletions
|
@ -31,6 +31,8 @@ public class AssetSpace
|
||||||
Mesh mesh = new Mesh();
|
Mesh mesh = new Mesh();
|
||||||
mesh = polyVector.ToMesh(pgon.vectors);
|
mesh = polyVector.ToMesh(pgon.vectors);
|
||||||
Asset asset = new Asset();
|
Asset asset = new Asset();
|
||||||
|
asset.pos = Vector3.zero;
|
||||||
|
asset.rot = Quaternion.identity;
|
||||||
asset.mesh = mesh;
|
asset.mesh = mesh;
|
||||||
assets.Add(name, asset);
|
assets.Add(name, asset);
|
||||||
}
|
}
|
||||||
|
@ -40,8 +42,11 @@ public class AssetSpace
|
||||||
|
|
||||||
string held = null;
|
string held = null;
|
||||||
Vector3 grabOffset;
|
Vector3 grabOffset;
|
||||||
|
// Vector3 oldCursorPos;
|
||||||
|
Quaternion oldOffConRot;
|
||||||
public void Frame(Input input, Render render)
|
public void Frame(Input input, Render render)
|
||||||
{
|
{
|
||||||
|
Vector3 cursorPos = input.stretchCursor;
|
||||||
// instead of a rigid uniform list
|
// instead of a rigid uniform list
|
||||||
// make it a space where you can lay things out
|
// make it a space where you can lay things out
|
||||||
float closest = 1000f;
|
float closest = 1000f;
|
||||||
|
@ -55,32 +60,36 @@ public class AssetSpace
|
||||||
|
|
||||||
if (input.mainCon.trigger.down)
|
if (input.mainCon.trigger.down)
|
||||||
{
|
{
|
||||||
float reachDist = Vector3.Distance(asset.pos, input.twistCursor);
|
float reachDist = Vector3.Distance(asset.pos, cursorPos);
|
||||||
if (reachDist < closest)
|
if (reachDist < closest)
|
||||||
{
|
{
|
||||||
held = loadedNames[i];
|
held = loadedNames[i];
|
||||||
closest = reachDist;
|
closest = reachDist;
|
||||||
grabOffset = asset.pos - input.twistCursor;
|
grabOffset = asset.pos - cursorPos;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (input.mainCon.trigger.held)
|
if (input.mainCon.trigger.held)
|
||||||
{
|
{
|
||||||
if (held != null)
|
if (held != null)
|
||||||
{
|
{
|
||||||
if (input.mainCon.one.up)
|
if (input.mainCon.one.up)
|
||||||
{
|
{
|
||||||
grabOffset = assets[held].pos - input.twistCursor;
|
grabOffset = assets[held].pos - cursorPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input.mainCon.one.held)
|
if (input.mainCon.one.held)
|
||||||
{
|
{
|
||||||
assets[held].rot = Quaternion.LookRotation(input.twistCursor - assets[held].pos);
|
assets[held].rot *= input.offCon.physical.Rot() * Quaternion.Inverse(oldOffConRot);
|
||||||
|
// assets[held].rot *= Quaternion.LookRotation(cursorPos - assets[held].pos) *
|
||||||
|
// Quaternion.Inverse(Quaternion.LookRotation(oldCursorPos - assets[held].pos));
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
assets[held].pos = input.twistCursor + grabOffset;
|
assets[held].pos = cursorPos + grabOffset;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -89,6 +98,9 @@ public class AssetSpace
|
||||||
held = null;
|
held = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
oldOffConRot = input.offCon.physical.Rot();
|
||||||
|
// oldCursorPos = cursorPos;
|
||||||
|
|
||||||
// where to store persistent position and rotation?
|
// where to store persistent position and rotation?
|
||||||
// needs to be saved in the .pixelgon file then
|
// needs to be saved in the .pixelgon file then
|
||||||
// can assetspace have its own save file instead?
|
// can assetspace have its own save file instead?
|
||||||
|
|
|
@ -15,6 +15,8 @@ public class Input
|
||||||
|
|
||||||
[HideInInspector]
|
[HideInInspector]
|
||||||
public Vector3 twistCursor;
|
public Vector3 twistCursor;
|
||||||
|
[HideInInspector]
|
||||||
|
public Vector3 stretchCursor;
|
||||||
|
|
||||||
Vector3 mainCalibDir;
|
Vector3 mainCalibDir;
|
||||||
Quaternion mainCalibRot;
|
Quaternion mainCalibRot;
|
||||||
|
@ -47,6 +49,12 @@ public class Input
|
||||||
|
|
||||||
Quaternion rot = mainCon.physical.Rot() * Quaternion.Inverse(mainCalibRot);
|
Quaternion rot = mainCon.physical.Rot() * Quaternion.Inverse(mainCalibRot);
|
||||||
twistCursor = WorldPos(mainCon) + rot * mainCalibDir * calibDist * zValue;
|
twistCursor = WorldPos(mainCon) + rot * mainCalibDir * calibDist * zValue;
|
||||||
|
|
||||||
|
float stretch = Vector3.Distance(WorldPos(mainCon), WorldPos(offCon));
|
||||||
|
stretchCursor = WorldPos(mainCon) + mainCon.physical.Rot() * Vector3.forward * stretch * 3;
|
||||||
|
|
||||||
|
// Some way to switch between
|
||||||
|
// based on implementation (where switching needs to occur)
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector3 WorldPos(Con con)
|
public Vector3 WorldPos(Con con)
|
||||||
|
|
|
@ -187,6 +187,11 @@ public class Render
|
||||||
matCursor, 0
|
matCursor, 0
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Graphics.DrawMesh(meshCursor,
|
||||||
|
input.stretchCursor,
|
||||||
|
Quaternion.identity,
|
||||||
|
matCursor, 0
|
||||||
|
);
|
||||||
|
|
||||||
polyVector.Frame();
|
polyVector.Frame();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue