From baf8ef835415eeac643a37c75d9190026a7d6da7 Mon Sep 17 00:00:00 2001
From: jukrb0x <15688641+jukrb0x@users.noreply.github.com>
Date: Fri, 5 Aug 2022 14:03:02 +0800
Subject: [PATCH 01/10] fix: do not grab the air
---
Assets/Scripts/Gameplay/Ragdoll/Core/RagdollGrab.cs | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollGrab.cs b/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollGrab.cs
index f4c8aa1..1610e7b 100644
--- a/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollGrab.cs
+++ b/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollGrab.cs
@@ -34,11 +34,13 @@ private void Start()
public void GrabWithLeftHand(float weight)
{
_leftHand.enabled = weight < leftHandBearWeight;
+ _leftHand.enabled = weight < leftHandBearWeight && weight > 0.1f;
}
public void GrabWithRightHand(float weight)
{
_rightHand.enabled = weight < rightHandBearWeight;
+ _rightHand.enabled = weight < rightHandBearWeight && weight > 0.1f;
}
}
From b40727d089ac0cd370083a16d917881a584e9dac Mon Sep 17 00:00:00 2001
From: jukrb0x <15688641+jukrb0x@users.noreply.github.com>
Date: Fri, 5 Aug 2022 14:44:27 +0800
Subject: [PATCH 02/10] rm old code
---
Assets/Scripts/Gameplay/Fracture.meta | 3 -
Assets/Scripts/Gameplay/Fracture/Fracture.cs | 16 --
.../Gameplay/Fracture/Fracture.cs.meta | 3 -
.../Scripts/Gameplay/Fracture/Fragment.meta | 3 -
.../Gameplay/Fracture/Fragment/MeshVertex.cs | 57 ----
.../Fracture/Fragment/MeshVertex.cs.meta | 3 -
Assets/Scripts/Gameplay/Fracture/Options.meta | 3 -
.../Fracture/Options/CallbackOptions.cs | 17 --
.../Fracture/Options/CallbackOptions.cs.meta | 3 -
.../Fracture/Options/FractureOptions.cs | 28 --
.../Fracture/Options/FractureOptions.cs.meta | 3 -
.../Scripts/Gameplay/Fracture/Utilities.meta | 3 -
.../Gameplay/Fracture/Utilities/BinSort.cs | 101 --------
.../Fracture/Utilities/BinSort.cs.meta | 3 -
.../Gameplay/Fracture/Utilities/MathUtils.cs | 131 ----------
.../Fracture/Utilities/MathUtils.cs.meta | 3 -
.../Gameplay/Fracture/Utilities/MeshUtils.cs | 245 ------------------
.../Fracture/Utilities/MeshUtils.cs.meta | 3 -
.../Fracture/Utilities/Vector3Extensions.cs | 26 --
.../Utilities/Vector3Extensions.cs.meta | 3 -
20 files changed, 657 deletions(-)
delete mode 100644 Assets/Scripts/Gameplay/Fracture.meta
delete mode 100644 Assets/Scripts/Gameplay/Fracture/Fracture.cs
delete mode 100644 Assets/Scripts/Gameplay/Fracture/Fracture.cs.meta
delete mode 100644 Assets/Scripts/Gameplay/Fracture/Fragment.meta
delete mode 100644 Assets/Scripts/Gameplay/Fracture/Fragment/MeshVertex.cs
delete mode 100644 Assets/Scripts/Gameplay/Fracture/Fragment/MeshVertex.cs.meta
delete mode 100644 Assets/Scripts/Gameplay/Fracture/Options.meta
delete mode 100644 Assets/Scripts/Gameplay/Fracture/Options/CallbackOptions.cs
delete mode 100644 Assets/Scripts/Gameplay/Fracture/Options/CallbackOptions.cs.meta
delete mode 100644 Assets/Scripts/Gameplay/Fracture/Options/FractureOptions.cs
delete mode 100644 Assets/Scripts/Gameplay/Fracture/Options/FractureOptions.cs.meta
delete mode 100644 Assets/Scripts/Gameplay/Fracture/Utilities.meta
delete mode 100644 Assets/Scripts/Gameplay/Fracture/Utilities/BinSort.cs
delete mode 100644 Assets/Scripts/Gameplay/Fracture/Utilities/BinSort.cs.meta
delete mode 100644 Assets/Scripts/Gameplay/Fracture/Utilities/MathUtils.cs
delete mode 100644 Assets/Scripts/Gameplay/Fracture/Utilities/MathUtils.cs.meta
delete mode 100644 Assets/Scripts/Gameplay/Fracture/Utilities/MeshUtils.cs
delete mode 100644 Assets/Scripts/Gameplay/Fracture/Utilities/MeshUtils.cs.meta
delete mode 100644 Assets/Scripts/Gameplay/Fracture/Utilities/Vector3Extensions.cs
delete mode 100644 Assets/Scripts/Gameplay/Fracture/Utilities/Vector3Extensions.cs.meta
diff --git a/Assets/Scripts/Gameplay/Fracture.meta b/Assets/Scripts/Gameplay/Fracture.meta
deleted file mode 100644
index a3f5529..0000000
--- a/Assets/Scripts/Gameplay/Fracture.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: b6169bea461d4144b1dd869e6910039d
-timeCreated: 1659002525
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/Fracture/Fracture.cs b/Assets/Scripts/Gameplay/Fracture/Fracture.cs
deleted file mode 100644
index 96c56d6..0000000
--- a/Assets/Scripts/Gameplay/Fracture/Fracture.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using Gameplay.Fracture.Options;
-using UnityEngine;
-
-namespace Gameplay.Fracture
-{
- // Fracture Component
- public class Fracture : MonoBehaviour
- {
- // --- Inspector Options ---
- public FractureOptions fractureOptions;
- public CallbackOptions callbackOptions;
-
-
-
- }
-}
diff --git a/Assets/Scripts/Gameplay/Fracture/Fracture.cs.meta b/Assets/Scripts/Gameplay/Fracture/Fracture.cs.meta
deleted file mode 100644
index c601dda..0000000
--- a/Assets/Scripts/Gameplay/Fracture/Fracture.cs.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: dcb81d28944043aaab3befb91e9428ca
-timeCreated: 1659337623
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/Fracture/Fragment.meta b/Assets/Scripts/Gameplay/Fracture/Fragment.meta
deleted file mode 100644
index 5ac853f..0000000
--- a/Assets/Scripts/Gameplay/Fracture/Fragment.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: 093e10fb8685415b8bc67fb8ab4a2dd1
-timeCreated: 1659349941
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/Fracture/Fragment/MeshVertex.cs b/Assets/Scripts/Gameplay/Fracture/Fragment/MeshVertex.cs
deleted file mode 100644
index d824a0a..0000000
--- a/Assets/Scripts/Gameplay/Fracture/Fragment/MeshVertex.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-using UnityEngine;
-using UnityEngine.TestTools;
-
-namespace Gameplay.Fracture.Fragment
-{
- ///
- /// Data structure containing position/normal/UV data for a single vertex
- ///
- public struct MeshVertex
- {
- public Vector3 position;
- public Vector3 normal;
- public Vector2 uv;
-
- public MeshVertex(Vector3 position)
- {
- this.position = position;
- this.normal = Vector3.zero;
- this.uv = Vector2.zero;
- }
-
- public MeshVertex(Vector3 position, Vector3 normal, Vector2 uv)
- {
- this.position = position;
- this.normal = normal;
- this.uv = uv;
- }
-
- public override bool Equals(object obj)
- {
- if (!(obj is MeshVertex)) return false;
-
- return ((MeshVertex)obj).position.Equals(this.position);
- }
-
- public static bool operator ==(MeshVertex lhs, MeshVertex rhs)
- {
- return lhs.Equals(rhs);
- }
-
- public static bool operator !=(MeshVertex lhs, MeshVertex rhs)
- {
- return !lhs.Equals(rhs);
- }
-
- public override int GetHashCode()
- {
- return this.position.GetHashCode();
- }
-
- [ExcludeFromCoverage]
- public override string ToString()
- {
- return $"Position = {position}, Normal = {normal}, UV = {uv}";
- }
- }
-}
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/Fracture/Fragment/MeshVertex.cs.meta b/Assets/Scripts/Gameplay/Fracture/Fragment/MeshVertex.cs.meta
deleted file mode 100644
index 14b9626..0000000
--- a/Assets/Scripts/Gameplay/Fracture/Fragment/MeshVertex.cs.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: 2d94a76aeb3149839e3bd515c749cb4d
-timeCreated: 1659349954
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/Fracture/Options.meta b/Assets/Scripts/Gameplay/Fracture/Options.meta
deleted file mode 100644
index 7249687..0000000
--- a/Assets/Scripts/Gameplay/Fracture/Options.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: ae87cf4676ab4f6cad605e38c3c94b98
-timeCreated: 1659338162
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/Fracture/Options/CallbackOptions.cs b/Assets/Scripts/Gameplay/Fracture/Options/CallbackOptions.cs
deleted file mode 100644
index 613caf6..0000000
--- a/Assets/Scripts/Gameplay/Fracture/Options/CallbackOptions.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System;
-using UnityEngine;
-using UnityEngine.Events;
-
-namespace Gameplay.Fracture.Options
-{
- [Serializable]
- public class CallbackOptions
- {
- public UnityEvent onCompleted;
-
- public CallbackOptions()
- {
- this.onCompleted = null;
- }
- }
-}
diff --git a/Assets/Scripts/Gameplay/Fracture/Options/CallbackOptions.cs.meta b/Assets/Scripts/Gameplay/Fracture/Options/CallbackOptions.cs.meta
deleted file mode 100644
index e3f5203..0000000
--- a/Assets/Scripts/Gameplay/Fracture/Options/CallbackOptions.cs.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: a8fd5b80afcd42d6bbb6eedafd2738dc
-timeCreated: 1659338528
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/Fracture/Options/FractureOptions.cs b/Assets/Scripts/Gameplay/Fracture/Options/FractureOptions.cs
deleted file mode 100644
index a492233..0000000
--- a/Assets/Scripts/Gameplay/Fracture/Options/FractureOptions.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using System;
-using UnityEngine;
-
-namespace Gameplay.Fracture.Options
-{
- public enum TriggerType
- {
- Collision,
- }
-
- [Serializable]
- public class FractureOptions
- {
- [Range(1, 100)]
- public int maxFractures;
- public bool detectFloatingFragment;
- public TriggerType triggerType;
- public float minCollisionForce;
-
- FractureOptions()
- {
- maxFractures = 50;
- detectFloatingFragment = true;
- triggerType = TriggerType.Collision;
- minCollisionForce = 1f;
- }
- }
-}
diff --git a/Assets/Scripts/Gameplay/Fracture/Options/FractureOptions.cs.meta b/Assets/Scripts/Gameplay/Fracture/Options/FractureOptions.cs.meta
deleted file mode 100644
index b71ea3f..0000000
--- a/Assets/Scripts/Gameplay/Fracture/Options/FractureOptions.cs.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: ae76b77e16ad4e2ea8779b50ddaf59b6
-timeCreated: 1659338198
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/Fracture/Utilities.meta b/Assets/Scripts/Gameplay/Fracture/Utilities.meta
deleted file mode 100644
index dd6f1da..0000000
--- a/Assets/Scripts/Gameplay/Fracture/Utilities.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: 751ce9a88a2c426ea755f4013af9523e
-timeCreated: 1659349711
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/Fracture/Utilities/BinSort.cs b/Assets/Scripts/Gameplay/Fracture/Utilities/BinSort.cs
deleted file mode 100644
index e343c0d..0000000
--- a/Assets/Scripts/Gameplay/Fracture/Utilities/BinSort.cs
+++ /dev/null
@@ -1,101 +0,0 @@
-// This script is originated from https://github.com/dgreenheck/OpenFracture
-
-namespace Gameplay.Fracture.Utilities
-{
- ///
- /// Defines an interface for an object that is sorted by bin number
- ///
- public interface IBinSortable
- {
- int bin { get; set; }
- }
-
- ///
- /// Methods for sorting objects on an ordered grid by bin number.
- ///
- /// The grid ordering is shown by example below. Even rows (row 0 = bottom row) are ordered
- /// right-to-left while odd rows are ordered left-to-right.
- /// _____ _____ _____
- /// | | | |
- /// | 6 | 7 | 8 |
- /// |_____|_____|_____|
- /// | | | |
- /// | 5 | 4 | 3 |
- /// |_____|_____|_____|
- /// | | | |
- /// | 0 | 1 | 2 |
- /// |_____|_____|_____|
- ///
- ///
- public class BinSort
- {
- ///
- /// Computes the bin number for the set of grid coordinates
- ///
- /// Grid row
- /// Grid column
- /// Grid size
- ///
- internal static int GetBinNumber(int i, int j, int n)
- {
- return (i % 2 == 0) ? (i * n) + j : (i + 1) * n - j - 1;
- }
-
- ///
- /// Performs a counting sort of the input points based on their bin number. Only
- /// sorts the elements in the index range [0, count]. If binCount is <= 1, no sorting
- /// is performed. If lastIndex > input.Length, the entire input array is sorted.
- ///
- /// The input array to sort
- /// The index of the last element in `input` to sort. Only the
- /// elements [0, lastIndex) are sorted.
- /// Number of bins
- internal static T[] Sort(T[] input, int lastIndex, int binCount) where T: IBinSortable
- {
- int[] count = new int[binCount];
- T[] output = new T[input.Length];
-
- #region Validation
- // Need at least two bins to sort
- if (binCount <= 1)
- {
- return input;
- }
-
- // If lastIndex is out of range, default to sorting the entire input array
- if (lastIndex > input.Length)
- {
- lastIndex = input.Length;
- }
- #endregion
-
- // Only sort the first [0, count] points, don't want to sort super-triangle vertices
- for (int i = 0; i < lastIndex; i++)
- {
- int j = input[i].bin;
- count[j] += 1;
- }
-
- for (int i = 1; i < binCount; i++)
- {
- count[i] += count[i - 1];
- }
-
- for (int i = lastIndex - 1; i >= 0; i--)
- {
- int j = input[i].bin;
- count[j] -= 1;
- output[count[j]] = input[i];
- }
-
- // Copy over the rest of the un-sorted points
- for (int i = lastIndex; i < output.Length; i++)
- {
- output[i] = input[i];
- }
-
- return output;
- }
-
- }
-}
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/Fracture/Utilities/BinSort.cs.meta b/Assets/Scripts/Gameplay/Fracture/Utilities/BinSort.cs.meta
deleted file mode 100644
index 1e7900e..0000000
--- a/Assets/Scripts/Gameplay/Fracture/Utilities/BinSort.cs.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: 290d7c7c596c4542928bc9ac6fed2bb8
-timeCreated: 1659349711
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/Fracture/Utilities/MathUtils.cs b/Assets/Scripts/Gameplay/Fracture/Utilities/MathUtils.cs
deleted file mode 100644
index 41ef1ea..0000000
--- a/Assets/Scripts/Gameplay/Fracture/Utilities/MathUtils.cs
+++ /dev/null
@@ -1,131 +0,0 @@
-// This script is originated from https://github.com/dgreenheck/OpenFracture
-
-using UnityEngine;
-
-namespace Gameplay.Fracture.Utilities
-{
- public static class MathUtils
- {
- ///
- /// Returns true if the quad specified by the two diagonals a1->a2 and b1->b2 is convex
- /// Quad is convex if a1->a2 and b1->b2 intersect each other
- ///
- /// Start point of diagonal A
- /// End point of diagonal A
- /// Start point of diagonal B
- /// End point of diagonal B
- ///
- public static bool IsQuadConvex(Vector2 a1, Vector2 a2, Vector2 b1, Vector2 b2)
- {
- return LinesIntersectInternal(a1, a2, b1, b2, true);
- }
-
- ///
- /// Returns true lines a1->a2 and b1->b2 is intersect
- ///
- /// Start point of line A
- /// End point of line A
- /// Start point of line B
- /// End point of line B
- ///
- public static bool LinesIntersect(Vector2 a1, Vector2 a2, Vector2 b1, Vector2 b2)
- {
- return LinesIntersectInternal(a1, a2, b1, b2, false);
- }
-
- ///
- /// Returns true lines a1->a2 and b1->b2 is intersect
- ///
- /// Start point of line A
- /// End point of line A
- /// Start point of line B
- /// End point of line B
- ///
- private static bool LinesIntersectInternal(Vector2 a1, Vector2 a2, Vector2 b1, Vector2 b2, bool includeSharedEndpoints)
- {
- Vector2 a12 = new Vector2(a2.x - a1.x, a2.y - a1.y);
- Vector2 b12 = new Vector2(b2.x - b1.x, b2.y - b1.y);
-
- // If any of the vertices are shared between the two diagonals,
- // the quad collapses into a triangle and is convex by default.
- if (a1 == b1 || a1 == b2 || a2 == b1 || a2 == b2)
- {
- return includeSharedEndpoints;
- }
- else
- {
- // Compute cross product between each point and the opposite diagonal
- // Look at sign of the Z component to see which side of line point is on
- float a1xb = (a1.x - b1.x) * b12.y - (a1.y - b1.y) * b12.x;
- float a2xb = (a2.x - b1.x) * b12.y - (a2.y - b1.y) * b12.x;
- float b1xa = (b1.x - a1.x) * a12.y - (b1.y - a1.y) * a12.x;
- float b2xa = (b2.x - a1.x) * a12.y - (b2.y - a1.y) * a12.x;
-
- // Check that the points for each diagonal lie on opposite sides of the other
- // diagonal. Quad is also convex if a1/a2 lie on b1->b2 (and vice versa) since
- // the shape collapses into a triangle (hence >= instead of >)
- return ((a1xb >= 0 && a2xb <= 0) || (a1xb <= 0 && a2xb >= 0)) &&
- ((b1xa >= 0 && b2xa <= 0) || (b1xa <= 0 && b2xa >= 0));
- }
- }
-
- ///
- /// Determines the intersection between the line segment a->b and the plane defined by the specified normal and origin point. If an intersection point exists, it is returned via the out parameter `intersection`. The parameter `s` is defined below and is used to properly interpolate normals/uvs for intersection vertices.
- ///
- /// Start point of line
- /// End point of line
- /// Plane normal
- /// Plane origin
- /// If intersection exists, intersection point return as out parameter.
- /// Returns the parameterization of the intersection where x = a + (b - a) * s
- ///
- public static bool LinePlaneIntersection(Vector3 a,
- Vector3 b,
- Vector3 n,
- Vector3 p0,
- out Vector3 x,
- out float s)
- {
- // Initialize out params
- s = 0;
- x = Vector3.zero;
-
- // Handle degenerate cases
- if (a == b)
- {
- return false;
- }
- else if (n == Vector3.zero)
- {
- return false;
- }
-
- // `s` is the parameter for the line segment a -> b where 0.0 <= s <= 1.0
- s = Vector3.Dot(p0 - a, n) / Vector3.Dot(b - a, n);
-
- if (s >= 0 && s <= 1)
- {
- x = a + (b - a) * s;
- return true;
- }
-
- return false;
- }
-
- ///
- /// Returns true of the point `p` is on the left side of the directed line segment `i` -> `j`
- /// Use for checking if a point is inside of a triangle. Since triangle vertices oriented
- /// CCW, a point on the left side of a triangle edge is "inside" that edge of the triangle.
- ///
- /// Index of test point in `points` array
- /// Index of first vertex of the edge in the `points` array
- /// /// Index of second vertex of the edge in the `points` array
- /// True if the point `p` is on the left side of the line `i`->`j`
- public static bool IsPointOnRightSideOfLine(Vector2 a, Vector2 b, Vector2 c)
- {
- // The <= is essential; if it is <, the whole thing falls apart
- return ((b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x)) <= 0;
- }
-
- }
-}
diff --git a/Assets/Scripts/Gameplay/Fracture/Utilities/MathUtils.cs.meta b/Assets/Scripts/Gameplay/Fracture/Utilities/MathUtils.cs.meta
deleted file mode 100644
index 6bc9dd7..0000000
--- a/Assets/Scripts/Gameplay/Fracture/Utilities/MathUtils.cs.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: 0581da0036ee48c1ae1048744d0ef642
-timeCreated: 1659349711
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/Fracture/Utilities/MeshUtils.cs b/Assets/Scripts/Gameplay/Fracture/Utilities/MeshUtils.cs
deleted file mode 100644
index 7bee951..0000000
--- a/Assets/Scripts/Gameplay/Fracture/Utilities/MeshUtils.cs
+++ /dev/null
@@ -1,245 +0,0 @@
-// This script is originated from https://github.com/dgreenheck/OpenFracture
-
-using System.Collections.Generic;
-using Gameplay.Fracture.Fragment;
-using Unity.Collections;
-using UnityEngine;
-using UnityEngine.Rendering;
-
-namespace Gameplay.Fracture.Utilities
-{
- public static class MeshUtils
- {
- // Description of vertex attributes for the island mesh
- private static VertexAttributeDescriptor[] layout = new[]
- {
- new VertexAttributeDescriptor(VertexAttribute.Position, VertexAttributeFormat.Float32, 3),
- new VertexAttributeDescriptor(VertexAttribute.Normal, VertexAttributeFormat.Float32, 3),
- new VertexAttributeDescriptor(VertexAttribute.TexCoord0, VertexAttributeFormat.Float32, 2),
- };
-
- ///
- /// Identifies all disconnected sets of geometry contained within the mesh.
- /// Each set of geometry is split into a separate meshes.
- ///
- /// The mesh to search
- /// Returns an array of all disconnected meshes found.
- public static Mesh[] FindDisconnectedMeshes(Mesh mesh)
- {
- // Each disconnected set of geometry is referred to as an "island"
- List islands = new List();
-
- #region Preliminaries
-
- // Extract mesh data
- var vertices = mesh.vertices;
- var triangles = mesh.triangles;
- var normals = mesh.normals;
- var uvs = mesh.uv;
-
- // For each triangle, find the corresponding sub-mesh index. (Mesh.triangles contains
- // the triangles for all sub-meshes)
- int[] triangleSubMesh = new int[triangles.Length / 3];
- int subMeshIndex = 0;
- int subMeshSize = mesh.GetTriangles(subMeshIndex).Length / 3;
- for (int i = 0; i < triangles.Length / 3; i++)
- {
- if (i >= subMeshSize)
- {
- subMeshIndex++;
- subMeshSize += mesh.GetTriangles(subMeshIndex).Length / 3;
- }
- triangleSubMesh[i] = subMeshIndex;
- }
-
- // Identify coincident vertices
- List[] coincidentVertices = new List[vertices.Length];
- for(int i = 0; i < vertices.Length; i++)
- {
- coincidentVertices[i] = new List();
- }
- for(int i = 0; i < vertices.Length; i++)
- {
- Vector3 v_i = vertices[i];
- for (int k = i + 1; k < vertices.Length; k++)
- {
- Vector3 v_k = vertices[k];
- if (v_i == v_k)
- {
- coincidentVertices[k].Add(i);
- coincidentVertices[i].Add(k);
- }
- }
- }
-
- // Find the triangles the each vertex belongs to. Need to do this for each submesh
- List[] vertexTriangles = new List[vertices.Length];
-
- for (int i = 0; i < vertices.Length; i++)
- {
- vertexTriangles[i] = new List();
- }
-
- int v1, v2, v3;
- for (int i = 0; i < triangles.Length; i += 3)
- {
- // Index of the triangle
- int t = i / 3;
-
- v1 = triangles[i];
- v2 = triangles[i + 1];
- v3 = triangles[i + 2];
-
- vertexTriangles[v1].Add(t);
- vertexTriangles[v2].Add(t);
- vertexTriangles[v3].Add(t);
- }
-
- #endregion
-
- // Search the mesh geometry and identify all islands
- // 1) Start by finding a vertex that has not yet been visited
- // 2) Insert the vertex into a queue, begin a breadth-first search
- // 3) Dequeue the next vertex 'v'
- // 4) Find all triangles that 'v' is connected to. Add each triangle to a list
- // 5) Enqueue the vertices for each connected triangle if they haven't been visited yet
- // 6) Enqueue all vertices coincident with 'v' if they haven't been visited yet
- // 7) Repeat Steps 3-6 until the queue is empty
- // 8) Take the list of triangles and use the existing mesh data to create a new island mesh
- // 9) Go back to Step 1, continue until all vertices have been visited.
-
- bool[] visitedVertices = new bool[vertices.Length];
- bool[] visitedTriangles = new bool[triangles.Length];
- Queue frontier = new Queue();
-
- // Vertex data for the island mesh. Only initialize once and keep track of pointer to last element to minimize GC
- NativeArray islandVertices = new NativeArray(vertices.Length, Allocator.Temp, NativeArrayOptions.UninitializedMemory);
-
- // Array containing triangle data for the island mesh. Need to keep track of triangles for each sub-mesh separately
- int[][] islandTriangles = new int[mesh.subMeshCount][];
- for (int i = 0; i < mesh.subMeshCount; i++)
- {
- islandTriangles[i] = new int[triangles.Length];
- }
-
- // Counters to keep track of how many vertices
- int vertexCount = 0;
- int totalIndexCount = 0;
- int[] subMeshIndexCounts = new int[mesh.subMeshCount];
-
- for (int i = 0; i < vertices.Length; i++)
- {
- if (visitedVertices[i]) continue;
-
- // Reset the vertex/triangle counts
- vertexCount = 0;
- totalIndexCount = 0;
- for(int j = 0; j < mesh.subMeshCount; j++)
- {
- subMeshIndexCounts[j] = 0;
- }
-
- // Search the mesh geometry starting at vertex 'i'. Search is performed by looking up
- // the triangles that contain each vertex, adding their vertices, etc. until all
- // triangles have been visited.
- frontier.Enqueue(i);
-
- // Index map between source mesh vertex array and the sub mesh vertex arrays
- int[] vertexMap = new int[vertices.Length];
- // Initialize map to '-1' to serve as "unmapped" value
- for(int j = 0; j < vertices.Length; j++)
- {
- vertexMap[j] = -1;
- }
-
- while (frontier.Count > 0)
- {
- int k = frontier.Dequeue();
-
- // Ignore vertex if we've already visited it
- if (visitedVertices[k])
- {
- continue;
- }
- else
- {
- visitedVertices[k] = true;
- }
-
- // Add this vertex array for the island mesh
- // Map between the original vertex index to the vertex's new index in the island
- // mesh vertex array. This will be used to update the indices for the triangles later
- vertexMap[k] = vertexCount;
- islandVertices[vertexCount++] = new MeshVertex(vertices[k], normals[k], uvs[k]);
-
- // Get the list of all triangles that this vertex is a part of
- foreach(int t in vertexTriangles[k])
- {
- // If triangle is already included, skip it
- if (!visitedTriangles[t])
- {
- visitedTriangles[t] = true;
-
- // Loop through each vertex of the triangle and add the non-visited ones
- // to the search frontier
- for (int m = t * 3; m < t * 3 + 3; m++)
- {
- int v = triangles[m];
- subMeshIndex = triangleSubMesh[t];
- islandTriangles[subMeshIndex][subMeshIndexCounts[subMeshIndex]++] = v;
- totalIndexCount++;
-
- frontier.Enqueue(v);
-
- // If this vertex is coincident with other vertices, add those to the search frontier
- foreach(int cv in coincidentVertices[v])
- {
- frontier.Enqueue(cv);
- }
- }
- }
- }
- }
-
- // If the island contains at least one triangle, create a new mesh
- if (vertexCount > 0)
- {
- Mesh island = new Mesh();
-
- island.SetIndexBufferParams(totalIndexCount, IndexFormat.UInt32);
- island.SetVertexBufferParams(vertexCount, layout);
- island.SetVertexBufferData(islandVertices, 0, 0, vertexCount);
-
- // Set the triangles for each submesh
- island.subMeshCount = mesh.subMeshCount;
- int indexStart = 0;
- for (subMeshIndex = 0; subMeshIndex < mesh.subMeshCount; subMeshIndex++)
- {
- var subMeshIndexBuffer = islandTriangles[subMeshIndex];
- var subMeshIndexCount = subMeshIndexCounts[subMeshIndex];
-
- // Map vertex indexes from the original mesh to the island mesh
- for(int k = 0; k < subMeshIndexCount; k++)
- {
- int originalIndex = subMeshIndexBuffer[k];
- subMeshIndexBuffer[k] = vertexMap[originalIndex];
- }
-
- // Set the index data for this sub mesh
- island.SetIndexBufferData(subMeshIndexBuffer, 0, indexStart, (int)subMeshIndexCount);
- island.SetSubMesh(subMeshIndex, new SubMeshDescriptor(indexStart, subMeshIndexCount));
-
- indexStart += subMeshIndexCount;
- }
-
- island.RecalculateBounds();
-
- islands.Add(island);
- }
- }
-
- // Loop through rest of triangles
- return islands.ToArray();
- }
- }
-}
diff --git a/Assets/Scripts/Gameplay/Fracture/Utilities/MeshUtils.cs.meta b/Assets/Scripts/Gameplay/Fracture/Utilities/MeshUtils.cs.meta
deleted file mode 100644
index b8c983f..0000000
--- a/Assets/Scripts/Gameplay/Fracture/Utilities/MeshUtils.cs.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: b9189791c85048a7ba79c1ad82a8f64b
-timeCreated: 1659349711
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/Fracture/Utilities/Vector3Extensions.cs b/Assets/Scripts/Gameplay/Fracture/Utilities/Vector3Extensions.cs
deleted file mode 100644
index 11305ce..0000000
--- a/Assets/Scripts/Gameplay/Fracture/Utilities/Vector3Extensions.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-// This script is originated from https://github.com/dgreenheck/OpenFracture
-
-using UnityEngine;
-
-namespace Gameplay.Fracture.Utilities
-{
- public static class Vector3Extensions
- {
- //
- // that the normal is pointing to
- // - p: The point being checked
- // - n: The normal of the plane
- // - o: The origin of the plane
- ///
- /// Returns true if the point is either on or above the plane. "Above" is the side of the place in the direction of the normal.
- ///
- /// The test point
- /// The plane normal
- /// The plane origin
- ///
- public static bool IsAbovePlane(this Vector3 p, Vector3 n, Vector3 o)
- {
- return (n.x * (p.x - o.x) + n.y * (p.y - o.y) + n.z * (p.z - o.z)) >= 0;
- }
- }
-}
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/Fracture/Utilities/Vector3Extensions.cs.meta b/Assets/Scripts/Gameplay/Fracture/Utilities/Vector3Extensions.cs.meta
deleted file mode 100644
index 7e45e7c..0000000
--- a/Assets/Scripts/Gameplay/Fracture/Utilities/Vector3Extensions.cs.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: 2331a5eec99f407eac0e79821bb56d04
-timeCreated: 1659349711
\ No newline at end of file
From 8bb8ee8526c9b0e76111bee55d106f6c2fcb1b9a Mon Sep 17 00:00:00 2001
From: jukrb0x <15688641+jukrb0x@users.noreply.github.com>
Date: Fri, 5 Aug 2022 14:24:10 +0800
Subject: [PATCH 03/10] feat: delegates event in ragdoll core
---
.../Gameplay/Ragdoll/Core/RagdollAnimation.cs | 15 ++++++---
.../Gameplay/Ragdoll/Core/RagdollBody.cs | 9 ++++--
.../Gameplay/Ragdoll/Core/RagdollCamera.cs | 32 ++++++++++++++++---
.../Gameplay/Ragdoll/Core/RagdollGrab.cs | 12 ++++---
.../Gameplay/Ragdoll/Core/RagdollMovement.cs | 8 +++--
.../Gameplay/Ragdoll/Core/RagdollPhysics.cs | 12 ++++---
.../Gameplay/Ragdoll/Input/InputBase.cs | 18 ++++++++---
.../Gameplay/Ragdoll/Input/RagdollInputs.cs | 12 +++++--
.../Scripts/Gameplay/Ragdoll/RagdollCore.cs | 13 +++++++-
9 files changed, 99 insertions(+), 32 deletions(-)
diff --git a/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollAnimation.cs b/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollAnimation.cs
index 25e79be..508e2af 100644
--- a/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollAnimation.cs
+++ b/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollAnimation.cs
@@ -50,12 +50,9 @@ public class RagdollAnimation : RagdollCore
private float _targetDirVerticalPercent;
- private void Start()
+ protected override void Start()
{
-
- // input event delegates
- ragdoll.inputs.OnLeftClickDelegates += UseLeftArm;
- ragdoll.inputs.OnRightClickDelegates += UseRightArm;
+ base.Start();
// binding
_joints = ragdoll.ragdollBody.physicalJoints;
@@ -70,6 +67,14 @@ private void Start()
}
}
+ protected override void OnInputDelegate()
+ {
+ base.OnInputDelegate();
+ // input event delegates
+ ragdoll.inputs.OnLeftClickDelegates += UseLeftArm;
+ ragdoll.inputs.OnRightClickDelegates += UseRightArm;
+ }
+
private void FixedUpdate()
{
UpdatePhysicalJoints();
diff --git a/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollBody.cs b/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollBody.cs
index 14cf6f6..c3dc43c 100644
--- a/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollBody.cs
+++ b/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollBody.cs
@@ -5,9 +5,12 @@
namespace Gameplay.Ragdoll.Core
{
- // The boyd and connections of the ragdoll
- // the ragdoll has two bodies: animated one and physical one
- // they bodies need to be synchronized in the runtime
+ /// The body and connections of the ragdoll
+ ///
public class RagdollBody : RagdollCore
{
[Header("Body Torso")]
diff --git a/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollCamera.cs b/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollCamera.cs
index 060a4e7..50527ea 100644
--- a/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollCamera.cs
+++ b/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollCamera.cs
@@ -51,8 +51,9 @@ public class RagdollCamera : RagdollCore
public float minVerticalAngle = -20; // look down
public float maxVerticalAngle = 60; // look up
- public void Start()
+ protected override void Start()
{
+ base.Start();
// create camera object in runtime
if (cameraObject == null)
{
@@ -65,6 +66,15 @@ public void Start()
_startDirection = lookAt.forward;
}
+
+ protected override void OnInputDelegate()
+ {
+ base.OnInputDelegate();
+ ragdoll.inputs.OnLookDelegates += LookAroundInput;
+ ragdoll.inputs.OnScrollWheelDelegates += ScrollWheelInput;
+ }
+
+
public void Update()
{
UpdateCamera();
@@ -122,17 +132,29 @@ private void AvoidObstacles()
}
// Player inputs
- public void OnLook(InputValue value)
+ // no need to call delegates
+ // public void OnLook(InputValue value)
+ // {
+ // _inputDelta = value.Get() / 10;
+ // }
+
+ private void LookAroundInput(Vector2 vector)
{
- _inputDelta = value.Get() / 10;
+ _inputDelta = vector / 10;
}
+ private void ScrollWheelInput(Vector2 vector)
+ {
+ _currentDistance = Mathf.Clamp(_currentDistance + vector.y / 1200 * -scrollSensitivity,
+ minDistance, maxDistance);
+ }
+
+
public void OnScrollWheel(InputValue value)
{
var scrollValue = value.Get();
- _currentDistance = Mathf.Clamp(_currentDistance + scrollValue.y / 1200 * -scrollSensitivity,
- minDistance, maxDistance);
}
+
}
}
diff --git a/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollGrab.cs b/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollGrab.cs
index 1610e7b..65f1792 100644
--- a/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollGrab.cs
+++ b/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollGrab.cs
@@ -13,8 +13,10 @@ public class RagdollGrab : RagdollCore
private Hand _leftHand, _rightHand;
- private void Start()
+ protected override void Start()
{
+ base.Start();
+
var leftHand = ragdoll.ragdollBody.GetPhysicalBone(HumanBodyBones.LeftHand).gameObject;
var rightHand = ragdoll.ragdollBody.GetPhysicalBone(HumanBodyBones.RightHand).gameObject;
@@ -26,20 +28,22 @@ private void Start()
_leftHand.Init(ragdoll, jointMotionsConfig);
_rightHand.Init(ragdoll, jointMotionsConfig);
+ }
+
+ protected override void OnInputDelegate()
+ {
+ base.OnInputDelegate();
// input events binding
ragdoll.inputs.OnLeftClickDelegates += GrabWithLeftHand;
ragdoll.inputs.OnRightClickDelegates += GrabWithRightHand;
}
-
public void GrabWithLeftHand(float weight)
{
- _leftHand.enabled = weight < leftHandBearWeight;
_leftHand.enabled = weight < leftHandBearWeight && weight > 0.1f;
}
public void GrabWithRightHand(float weight)
{
- _rightHand.enabled = weight < rightHandBearWeight;
_rightHand.enabled = weight < rightHandBearWeight && weight > 0.1f;
}
}
diff --git a/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollMovement.cs b/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollMovement.cs
index ed0142f..3bcf581 100644
--- a/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollMovement.cs
+++ b/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollMovement.cs
@@ -19,19 +19,23 @@ public class RagdollMovement : RagdollCore
private float raycastMaxDistance = 0.2f;
private Rigidbody _footLeft, _footRight;
- private void Start()
+ protected override void Start()
{
+ base.Start();
// init the feet
_footLeft = ragdoll.ragdollBody.GetPhysicalBone(HumanBodyBones.RightFoot).GetComponent();
_footRight = ragdoll.ragdollBody.GetPhysicalBone(HumanBodyBones.LeftFoot).GetComponent();
+ }
+ protected override void OnInputDelegate()
+ {
+ base.OnInputDelegate();
// input events delegates
ragdoll.inputs.OnMoveDelegates += MovementInput;
ragdoll.inputs.OnJumpDelegates += JumpInput;
ragdoll.inputs.OnGroundDelegates += UpdateRagdollOnGround;
}
-
private void Update()
{
_aimAt = ragdoll.ragdollCamera.cameraObject.transform.forward;
diff --git a/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollPhysics.cs b/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollPhysics.cs
index 7d05e7d..593460b 100644
--- a/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollPhysics.cs
+++ b/Assets/Scripts/Gameplay/Ragdoll/Core/RagdollPhysics.cs
@@ -71,17 +71,21 @@ public bool JumpState
_jumping = value;
}
}
- private void Start()
+ protected override void Start()
{
- // input delegates
- ragdoll.inputs.OnMoveDelegates += ManualTorqueInput;
-
+ base.Start();
// physics system starts
UpdateTargetRotation();
InitStabilizer();
StartBalance();
}
+ protected override void OnInputDelegate()
+ {
+ base.OnInputDelegate();
+ ragdoll.inputs.OnMoveDelegates += ManualTorqueInput;
+ }
+
// stabilizer is used to stable the ragdoll in upright position
private void InitStabilizer()
{
diff --git a/Assets/Scripts/Gameplay/Ragdoll/Input/InputBase.cs b/Assets/Scripts/Gameplay/Ragdoll/Input/InputBase.cs
index 6b7f624..efdc3e5 100644
--- a/Assets/Scripts/Gameplay/Ragdoll/Input/InputBase.cs
+++ b/Assets/Scripts/Gameplay/Ragdoll/Input/InputBase.cs
@@ -16,19 +16,27 @@ private void OnApplicationFocus(bool hasFocus)
public delegate void OnLeftClickDelegate(float armWeight);
public delegate void OnRightClickDelegate(float armWeight);
public delegate void OnGroundDelegate(bool onFloor); // use to update the on-floor state
+ public delegate void OnLookDelegate(Vector2 look);
+ public delegate void OnScrollWheelDelegate(Vector2 scroll);
// ------ Delegates ------
- public OnMoveDelegate OnMoveDelegates;
- public OnJumpDelegate OnJumpDelegates;
- public OnLeftClickDelegate OnLeftClickDelegates;
- public OnRightClickDelegate OnRightClickDelegates;
+ public OnMoveDelegate OnMoveDelegates;
+ public OnJumpDelegate OnJumpDelegates;
+ public OnLeftClickDelegate OnLeftClickDelegates;
+ public OnRightClickDelegate OnRightClickDelegates;
public OnGroundDelegate OnGroundDelegates;
+ public OnLookDelegate OnLookDelegates;
+ public OnScrollWheelDelegate OnScrollWheelDelegates;
+
// ------ Input System Events ------
public abstract void OnMove(InputValue value);
public abstract void OnJump(InputValue value);
public abstract void OnLeftClick(InputValue value);
public abstract void OnRightClick(InputValue value);
-
+
+ public abstract void OnLook(InputValue value);
+ public abstract void OnScrollWheel(InputValue value);
+
}
}
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/Ragdoll/Input/RagdollInputs.cs b/Assets/Scripts/Gameplay/Ragdoll/Input/RagdollInputs.cs
index 93542a8..9d0e7ce 100644
--- a/Assets/Scripts/Gameplay/Ragdoll/Input/RagdollInputs.cs
+++ b/Assets/Scripts/Gameplay/Ragdoll/Input/RagdollInputs.cs
@@ -26,15 +26,21 @@ public override void OnRightClick(InputValue value)
{
OnRightClickDelegates?.Invoke(value.Get());
}
-
-
+ public override void OnLook(InputValue value)
+ {
+ OnLookDelegates?.Invoke(value.Get());
+ }
+ public override void OnScrollWheel(InputValue value)
+ {
+ OnScrollWheelDelegates?.Invoke(value.Get());
+ }
// ----------------------------------
private void OnApplicationFocus(bool hasFocus)
{
+ // todo: gm can control this, pause menu...
Cursor.lockState = hasFocus ? CursorLockMode.Locked : CursorLockMode.None;
}
-
private void Start()
{
diff --git a/Assets/Scripts/Gameplay/Ragdoll/RagdollCore.cs b/Assets/Scripts/Gameplay/Ragdoll/RagdollCore.cs
index bef7170..1d8791b 100644
--- a/Assets/Scripts/Gameplay/Ragdoll/RagdollCore.cs
+++ b/Assets/Scripts/Gameplay/Ragdoll/RagdollCore.cs
@@ -24,5 +24,16 @@ private void OnValidate()
}
}
+ protected virtual void Start()
+ {
+ // call to bind the inputs
+ OnInputDelegate();
+ }
+
+ ///
+ /// the input system events delegates binding
+ ///
+ protected virtual void OnInputDelegate() { }
+
}
-}
\ No newline at end of file
+}
From 028eb8a818c8331e98d6207a5a4dd0941a594a5a Mon Sep 17 00:00:00 2001
From: jukrb0x <15688641+jukrb0x@users.noreply.github.com>
Date: Fri, 5 Aug 2022 14:24:50 +0800
Subject: [PATCH 04/10] fix: update my stickman
---
Assets/Prefabs/Characters/MyStickman.prefab | 32 +-
Assets/Scenes/Levels/Platform.unity | 508 +-------------------
2 files changed, 38 insertions(+), 502 deletions(-)
diff --git a/Assets/Prefabs/Characters/MyStickman.prefab b/Assets/Prefabs/Characters/MyStickman.prefab
index cd067d9..ed0cc9d 100644
--- a/Assets/Prefabs/Characters/MyStickman.prefab
+++ b/Assets/Prefabs/Characters/MyStickman.prefab
@@ -18,6 +18,7 @@ GameObject:
- component: {fileID: 860747899}
- component: {fileID: 860747892}
- component: {fileID: 860747897}
+ - component: {fileID: 4557964835017376221}
m_Layer: 8
m_Name: MyStickman
m_TagString: Untagged
@@ -60,6 +61,7 @@ MonoBehaviour:
ragdollPhysics: {fileID: 860747895}
ragdollMovement: {fileID: 860747896}
ragdollCamera: {fileID: 860747899}
+ ragdollGrab: {fileID: 4557964835017376221}
--- !u!114 &860747893
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -349,6 +351,10 @@ MonoBehaviour:
cameraObject: {fileID: 0}
smoothSpeed: 5
smooth: 1
+ dontBlockCamera:
+ serializedVersion: 2
+ m_Bits: 768
+ cameraRepositionOffset: 0.15
improveSteepInclinations: 1
inclinationAngle: 30
inclinationDistance: 1.5
@@ -357,10 +363,6 @@ MonoBehaviour:
initialDistance: 2
minVerticalAngle: -23
maxVerticalAngle: 60
- dontBlockCamera:
- serializedVersion: 2
- m_Bits: 768
- cameraRepositionOffset: 0.15
--- !u!114 &860747892
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -404,6 +406,28 @@ MonoBehaviour:
m_DefaultActionMap: Player
m_SplitScreenIndex: -1
m_Camera: {fileID: 0}
+--- !u!114 &4557964835017376221
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4551733872406489797}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 3edbf242a2844ae7be4af74f23234afb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ ragdoll: {fileID: 860747891}
+ leftHandBearWeight: 30
+ rightHandBearWeight: 30
+ jointMotionsConfig:
+ angularXMotion: 2
+ angularYMotion: 2
+ angularZMotion: 2
+ angularXLimit: 30
+ angularYLimit: 30
+ angularZLimit: 30
--- !u!1001 &4551733871454457453
PrefabInstance:
m_ObjectHideFlags: 0
diff --git a/Assets/Scenes/Levels/Platform.unity b/Assets/Scenes/Levels/Platform.unity
index 1b57888..76316b5 100644
--- a/Assets/Scenes/Levels/Platform.unity
+++ b/Assets/Scenes/Levels/Platform.unity
@@ -197,18 +197,6 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 0f93d97ac712644429c206aa76833d5d, type: 3}
---- !u!4 &77047230 stripped
-Transform:
- m_CorrespondingSourceObject: {fileID: 3006365400855981113, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- m_PrefabInstance: {fileID: 8542116741661447839}
- m_PrefabAsset: {fileID: 0}
---- !u!153 &77047231 stripped
-ConfigurableJoint:
- m_CorrespondingSourceObject: {fileID: 4551733872418819845, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- m_PrefabInstance: {fileID: 8542116741661447839}
- m_PrefabAsset: {fileID: 0}
--- !u!1 &180654462
GameObject:
m_ObjectHideFlags: 0
@@ -744,24 +732,6 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 9f3deac2160b418439ea330a7e476549, type: 3}
---- !u!4 &385886788 stripped
-Transform:
- m_CorrespondingSourceObject: {fileID: 7108420293042584280, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- m_PrefabInstance: {fileID: 8542116741661447839}
- m_PrefabAsset: {fileID: 0}
---- !u!95 &400917859 stripped
-Animator:
- m_CorrespondingSourceObject: {fileID: 7944794490637169660, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- m_PrefabInstance: {fileID: 8542116741661447839}
- m_PrefabAsset: {fileID: 0}
---- !u!153 &443429887 stripped
-ConfigurableJoint:
- m_CorrespondingSourceObject: {fileID: 4551733873132799323, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- m_PrefabInstance: {fileID: 8542116741661447839}
- m_PrefabAsset: {fileID: 0}
--- !u!1 &445774368
GameObject:
m_ObjectHideFlags: 0
@@ -1304,12 +1274,6 @@ Mesh:
offset: 0
size: 0
path:
---- !u!153 &620634820 stripped
-ConfigurableJoint:
- m_CorrespondingSourceObject: {fileID: 4551733872356072197, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- m_PrefabInstance: {fileID: 8542116741661447839}
- m_PrefabAsset: {fileID: 0}
--- !u!1001 &689899825
PrefabInstance:
m_ObjectHideFlags: 0
@@ -1379,12 +1343,6 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 77a7909e6debdbe4baf0f88f076c29a7, type: 3}
---- !u!153 &811629077 stripped
-ConfigurableJoint:
- m_CorrespondingSourceObject: {fileID: 4551733871820952243, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- m_PrefabInstance: {fileID: 8542116741661447839}
- m_PrefabAsset: {fileID: 0}
--- !u!1001 &856102268
PrefabInstance:
m_ObjectHideFlags: 0
@@ -1454,347 +1412,6 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 4c1686a5131ac8b45bfe913f509289c0, type: 3}
---- !u!1 &860747889 stripped
-GameObject:
- m_CorrespondingSourceObject: {fileID: 4551733872406489797, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- m_PrefabInstance: {fileID: 8542116741661447839}
- m_PrefabAsset: {fileID: 0}
---- !u!114 &860747891
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 860747889}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 3bb5245cd29e47889ea97714941a063d, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- inputs: {fileID: 860747892}
- ragdollAnimation: {fileID: 860747893}
- ragdollBody: {fileID: 860747894}
- ragdollPhysics: {fileID: 860747895}
- ragdollMovement: {fileID: 860747896}
- ragdollCamera: {fileID: 860747899}
---- !u!114 &860747892
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 860747889}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: d41f6993e6394d64980ba974d6d17f66, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!114 &860747893
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 860747889}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 6d4de14da1d7479885d641cecbada4af, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- ragdoll: {fileID: 860747891}
- enableIK: 1
- minTargetDirAngle: -30
- maxTargetDirAngle: 60
- minArmsAngle: -70
- maxArmsAngle: 100
- minLookAngle: -50
- maxLookAngle: 60
- lookAngleOffset: 0
- armsAngleOffset: 0
- handsRotationOffset: 20
- armsHorizontalSeparation: 0.45
- armsDistance:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0.0083351135
- value: 0.79074097
- inSlope: -4.884974
- outSlope: -4.884974
- tangentMode: 34
- weightedMode: 0
- inWeight: 0
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 0.13333333
- value: 0.18012801
- inSlope: -1.9694839
- outSlope: -1.9694839
- tangentMode: 34
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 1
- value: 1
- inSlope: 0.9460062
- outSlope: 0.9460062
- tangentMode: 34
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
---- !u!114 &860747894
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 860747889}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f5d0899785c94d10b1a561897181c806, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- ragdoll: {fileID: 860747891}
- animatedTorso: {fileID: 385886788}
- physicalTorso: {fileID: 1645791404}
- animatedAnimator: {fileID: 400917859}
- physicalAnimator: {fileID: 1229992235}
- bodyParts:
- - name: Head Neck
- joints:
- - {fileID: 77047231}
- - {fileID: 620634820}
- strengthScale: 1
- - name: Torso
- joints:
- - {fileID: 1360756859}
- strengthScale: 1
- - name: Left Arm
- joints:
- - {fileID: 1500272685}
- - {fileID: 2002604404}
- - {fileID: 811629077}
- strengthScale: 1
- - name: Right Arm
- joints:
- - {fileID: 1700639830}
- - {fileID: 1558071355}
- - {fileID: 1594036011}
- strengthScale: 1
- - name: Left Leg
- joints:
- - {fileID: 1871546982}
- - {fileID: 955805659}
- - {fileID: 1178394290}
- strengthScale: 1
- - name: Right Leg
- joints:
- - {fileID: 443429887}
- - {fileID: 2015752439}
- - {fileID: 1629741870}
- strengthScale: 1
- maxAngularVelocity: 50
- animatorHelper: {fileID: 0}
---- !u!114 &860747895
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 860747889}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 9e409cd6a1b346bbbabc10aa11385d69, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- ragdoll: {fileID: 860747891}
- customTorsoAngularDrag: 0.05
- balanceMode: 2
- _stabilizerJointDriveConfig:
- _positionSpring: 10000
- _positionDamper: 50
- _maximumForce: 800
- uprightTorque: 10000
- uprightTorqueFunction:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: 2
- outSlope: 2
- tangentMode: 0
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 0.30369666
- value: 0.6073601
- inSlope: 1.10094
- outSlope: 1.10094
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 1
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- rotationTorque: 500
- manualTorque: 280
- maxManualRotSpeed: 3.5
- freezeRotationSpeed: 5
- jumpForce: 20000
---- !u!114 &860747896
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 860747889}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: af71462dc9b24ab9be96acd26d3ef314, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- ragdoll: {fileID: 860747891}
- enable: 1
- speed: 2
- maxSlopeAngle: 60
---- !u!114 &860747897
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 860747889}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 62899f850307741f2a39c98a8b639597, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Actions: {fileID: -944628639613478452, guid: f9a872b08583af94e96bbec862d26655,
- type: 3}
- m_NotificationBehavior: 0
- m_UIInputModule: {fileID: 0}
- m_DeviceLostEvent:
- m_PersistentCalls:
- m_Calls: []
- m_DeviceRegainedEvent:
- m_PersistentCalls:
- m_Calls: []
- m_ControlsChangedEvent:
- m_PersistentCalls:
- m_Calls: []
- m_ActionEvents: []
- m_NeverAutoSwitchControlSchemes: 0
- m_DefaultControlScheme:
- m_DefaultActionMap: Player
- m_SplitScreenIndex: -1
- m_Camera: {fileID: 0}
---- !u!114 &860747898
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 860747889}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 6d4de14da1d7479885d641cecbada4af, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- ragdoll: {fileID: 860747891}
- enableIK: 1
- minTargetDirAngle: -30
- maxTargetDirAngle: 60
- minArmsAngle: -70
- maxArmsAngle: 100
- minLookAngle: -50
- maxLookAngle: 60
- lookAngleOffset: 0
- armsAngleOffset: 0
- handsRotationOffset: 0
- armsHorizontalSeparation: 0.45
- armsDistance:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0.025001526
- value: 0.74450684
- inSlope: -4.4048233
- outSlope: -4.4048233
- tangentMode: 34
- weightedMode: 0
- inWeight: 0
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 0.14583333
- value: 0.21226412
- inSlope: -1.741298
- outSlope: -1.741298
- tangentMode: 34
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 1
- value: 1
- inSlope: 0.9222273
- outSlope: 0.9222273
- tangentMode: 34
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
---- !u!114 &860747899
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 860747889}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: d05560c1f5d34d9f9d0ca7328e1e1b94, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- ragdoll: {fileID: 860747891}
- lookAt: {fileID: 77047230}
- lookSensitivity: 0.5
- scrollSensitivity: 1
- invertX: 0
- invertY: 0
- cameraObject: {fileID: 0}
- smoothSpeed: 5
- smooth: 1
- improveSteepInclinations: 1
- inclinationAngle: 30
- inclinationDistance: 1.5
- minDistance: 2
- maxDistance: 5
- initialDistance: 3.5
- minVerticalAngle: -30
- maxVerticalAngle: 60
- dontBlockCamera:
- serializedVersion: 2
- m_Bits: 768
- cameraRepositionOffset: 0.15
--- !u!1 &921070632 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 6186655807582633324, guid: 0082833bc02dc544da92cd8e6e4a0743,
@@ -1814,10 +1431,15 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
fractureOptions:
- maxFractures: 50
- detectFloatingFragment: 1
- triggerType: 0
- minCollisionForce: 1
+ fragmentCount: 10
+ xAxis: 1
+ yAxis: 1
+ zAxis: 1
+ detectFloatingFragments: 0
+ asynchronous: 0
+ insideMaterial: {fileID: 0}
+ textureScale: {x: 1, y: 1}
+ textureOffset: {x: 0, y: 0}
callbackOptions:
onCompleted:
m_PersistentCalls:
@@ -1920,12 +1542,6 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 7
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!153 &955805659 stripped
-ConfigurableJoint:
- m_CorrespondingSourceObject: {fileID: 4551733873424653649, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- m_PrefabInstance: {fileID: 8542116741661447839}
- m_PrefabAsset: {fileID: 0}
--- !u!850595691 &994926449
LightingSettings:
m_ObjectHideFlags: 0
@@ -2386,7 +2002,6 @@ GameObject:
- component: {fileID: 1148390486}
- component: {fileID: 1148390485}
- component: {fileID: 1148390484}
- - component: {fileID: 1148390488}
m_Layer: 0
m_Name: GrassCube
m_TagString: Untagged
@@ -2472,39 +2087,6 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 30
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1148390488
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1148390482}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: dcb81d28944043aaab3befb91e9428ca, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- fractureOptions:
- maxFractures: 50
- detectFloatingFragment: 1
- triggerType: 0
- minCollisionForce: 1
- callbackOptions:
- onCompleted:
- m_PersistentCalls:
- m_Calls: []
---- !u!153 &1178394290 stripped
-ConfigurableJoint:
- m_CorrespondingSourceObject: {fileID: 4551733872325988808, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- m_PrefabInstance: {fileID: 8542116741661447839}
- m_PrefabAsset: {fileID: 0}
---- !u!95 &1229992235 stripped
-Animator:
- m_CorrespondingSourceObject: {fileID: 4925778503157553368, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- m_PrefabInstance: {fileID: 8542116741661447839}
- m_PrefabAsset: {fileID: 0}
--- !u!1 &1318425278
GameObject:
m_ObjectHideFlags: 0
@@ -2846,12 +2428,6 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 18
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!153 &1360756859 stripped
-ConfigurableJoint:
- m_CorrespondingSourceObject: {fileID: 4551733871328887481, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- m_PrefabInstance: {fileID: 8542116741661447839}
- m_PrefabAsset: {fileID: 0}
--- !u!1 &1398975427
GameObject:
m_ObjectHideFlags: 0
@@ -3055,12 +2631,6 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 14
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!153 &1500272685 stripped
-ConfigurableJoint:
- m_CorrespondingSourceObject: {fileID: 4551733871829148519, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- m_PrefabInstance: {fileID: 8542116741661447839}
- m_PrefabAsset: {fileID: 0}
--- !u!1 &1502892291
GameObject:
m_ObjectHideFlags: 0
@@ -3333,12 +2903,6 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 27
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!153 &1558071355 stripped
-ConfigurableJoint:
- m_CorrespondingSourceObject: {fileID: 4551733871948155711, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- m_PrefabInstance: {fileID: 8542116741661447839}
- m_PrefabAsset: {fileID: 0}
--- !u!43 &1566421615
Mesh:
m_ObjectHideFlags: 0
@@ -3503,18 +3067,6 @@ Mesh:
offset: 0
size: 0
path:
---- !u!153 &1594036011 stripped
-ConfigurableJoint:
- m_CorrespondingSourceObject: {fileID: 4551733872275885467, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- m_PrefabInstance: {fileID: 8542116741661447839}
- m_PrefabAsset: {fileID: 0}
---- !u!153 &1629741870 stripped
-ConfigurableJoint:
- m_CorrespondingSourceObject: {fileID: 4551733871660420916, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- m_PrefabInstance: {fileID: 8542116741661447839}
- m_PrefabAsset: {fileID: 0}
--- !u!1 &1641821735
GameObject:
m_ObjectHideFlags: 0
@@ -3546,12 +3098,6 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 35
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!54 &1645791404 stripped
-Rigidbody:
- m_CorrespondingSourceObject: {fileID: 4551733871879056946, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- m_PrefabInstance: {fileID: 8542116741661447839}
- m_PrefabAsset: {fileID: 0}
--- !u!1001 &1687374470
PrefabInstance:
m_ObjectHideFlags: 0
@@ -3644,7 +3190,7 @@ PrefabInstance:
- target: {fileID: 8894856259471134342, guid: b21f208237dfa604184a809772254745,
type: 3}
propertyPath: m_IsActive
- value: 1
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 8894856259471134342, guid: b21f208237dfa604184a809772254745,
type: 3}
@@ -3653,12 +3199,6 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: b21f208237dfa604184a809772254745, type: 3}
---- !u!153 &1700639830 stripped
-ConfigurableJoint:
- m_CorrespondingSourceObject: {fileID: 4551733871785560313, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- m_PrefabInstance: {fileID: 8542116741661447839}
- m_PrefabAsset: {fileID: 0}
--- !u!1 &1722860682 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 1315125114229348, guid: 4c1686a5131ac8b45bfe913f509289c0,
@@ -3862,12 +3402,6 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1845180436}
m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0}
---- !u!153 &1871546982 stripped
-ConfigurableJoint:
- m_CorrespondingSourceObject: {fileID: 4551733871530681641, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- m_PrefabInstance: {fileID: 8542116741661447839}
- m_PrefabAsset: {fileID: 0}
--- !u!43 &1885208437
Mesh:
m_ObjectHideFlags: 0
@@ -4509,18 +4043,6 @@ MonoBehaviour:
m_RequiresDepthTexture: 0
m_RequiresColorTexture: 0
m_Version: 2
---- !u!153 &2002604404 stripped
-ConfigurableJoint:
- m_CorrespondingSourceObject: {fileID: 4551733873418698430, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- m_PrefabInstance: {fileID: 8542116741661447839}
- m_PrefabAsset: {fileID: 0}
---- !u!153 &2015752439 stripped
-ConfigurableJoint:
- m_CorrespondingSourceObject: {fileID: 4551733873054704272, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- m_PrefabInstance: {fileID: 8542116741661447839}
- m_PrefabAsset: {fileID: 0}
--- !u!1 &2024690498
GameObject:
m_ObjectHideFlags: 0
@@ -5305,11 +4827,6 @@ PrefabInstance:
propertyPath: m_Name
value: MyStickman
objectReference: {fileID: 0}
- - target: {fileID: 4551733872406489797, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- propertyPath: m_IsActive
- value: 1
- objectReference: {fileID: 0}
- target: {fileID: 4551733872406489798, guid: f16385ae5cc42664485bf041389d5b7b,
type: 3}
propertyPath: m_RootOrder
@@ -5365,11 +4882,6 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- - target: {fileID: 6189107397490735715, guid: f16385ae5cc42664485bf041389d5b7b,
- type: 3}
- propertyPath: m_Materials.Array.data[0]
- value:
- objectReference: {fileID: 2100000, guid: 95fcf9331ca635c459a201f2c56f44dc, type: 2}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: f16385ae5cc42664485bf041389d5b7b, type: 3}
--- !u!1001 &8638334861115870275
From 0ee23bcfd23776d3a30b68e064fa08a14fb44927 Mon Sep 17 00:00:00 2001
From: jukrb0x <15688641+jukrb0x@users.noreply.github.com>
Date: Fri, 5 Aug 2022 14:26:13 +0800
Subject: [PATCH 05/10] remove old testing code
---
Assets/Scripts/Gameplay/DeprecatedChubby.meta | 3 -
.../DeprecatedChubbyController.cs | 76 -----
.../DeprecatedChubbyController.cs.meta | 11 -
.../DeprecatedChubby/DeprecatedCopyLimb.cs | 37 ---
.../DeprecatedCopyLimb.cs.meta | 11 -
.../DeprecatedChubby/InputSystem.meta | 8 -
.../InputSystem/InputEvents.cs | 78 -----
.../InputSystem/InputEvents.cs.meta | 11 -
.../InputSystem/MF1.inputsettings.asset | 35 ---
.../InputSystem/MF1.inputsettings.asset.meta | 8 -
.../PlayerInputAction.inputactions | 274 ------------------
.../PlayerInputAction.inputactions.meta | 14 -
.../Gameplay/DeprecatedChubby/Movement.cs | 9 -
.../DeprecatedChubby/Movement.cs.meta | 3 -
14 files changed, 578 deletions(-)
delete mode 100644 Assets/Scripts/Gameplay/DeprecatedChubby.meta
delete mode 100644 Assets/Scripts/Gameplay/DeprecatedChubby/DeprecatedChubbyController.cs
delete mode 100644 Assets/Scripts/Gameplay/DeprecatedChubby/DeprecatedChubbyController.cs.meta
delete mode 100644 Assets/Scripts/Gameplay/DeprecatedChubby/DeprecatedCopyLimb.cs
delete mode 100644 Assets/Scripts/Gameplay/DeprecatedChubby/DeprecatedCopyLimb.cs.meta
delete mode 100644 Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem.meta
delete mode 100644 Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/InputEvents.cs
delete mode 100644 Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/InputEvents.cs.meta
delete mode 100644 Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/MF1.inputsettings.asset
delete mode 100644 Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/MF1.inputsettings.asset.meta
delete mode 100644 Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/PlayerInputAction.inputactions
delete mode 100644 Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/PlayerInputAction.inputactions.meta
delete mode 100644 Assets/Scripts/Gameplay/DeprecatedChubby/Movement.cs
delete mode 100644 Assets/Scripts/Gameplay/DeprecatedChubby/Movement.cs.meta
diff --git a/Assets/Scripts/Gameplay/DeprecatedChubby.meta b/Assets/Scripts/Gameplay/DeprecatedChubby.meta
deleted file mode 100644
index 7a8f154..0000000
--- a/Assets/Scripts/Gameplay/DeprecatedChubby.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: 690ca2d78627450795fd78394f599ea2
-timeCreated: 1658456205
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/DeprecatedChubby/DeprecatedChubbyController.cs b/Assets/Scripts/Gameplay/DeprecatedChubby/DeprecatedChubbyController.cs
deleted file mode 100644
index f64df98..0000000
--- a/Assets/Scripts/Gameplay/DeprecatedChubby/DeprecatedChubbyController.cs
+++ /dev/null
@@ -1,76 +0,0 @@
-using InputSystem;
-using UnityEngine;
-
-namespace Chubby
-{
- public class DeprecatedChubbyController : MonoBehaviour
- {
- [SerializeField] private float speed = 5f;
- [SerializeField] private float jumpForce = 60f;
- [SerializeField] private ConfigurableJoint hipJoint;
- [SerializeField] private Rigidbody hip;
- [SerializeField] private Animator targetAnimator;
- private InputEvents _inputEvents;
- private bool _isGrounded;
-
- private bool _walking;
-
- // Start is called before the first frame update
- private void Start()
- {
- _inputEvents = GetComponent();
- }
-
- // Update is called once per frame
- private void Update()
- {
- var horizontal = _inputEvents.move.x;
- var vertical = _inputEvents.move.y;
- var direction = new Vector3(horizontal, 0f, vertical).normalized;
-
-
- // move
- if (_inputEvents.move.magnitude >= 0.1f) // validation, 0f is not accurate
- {
- Move(direction);
- }
- else
- {
- _walking = false;
- }
-
- // jump
- if (_inputEvents.jump /* && isGrounded */)
- {
- Jump();
- }
-
- if (targetAnimator) targetAnimator.SetBool("Walk", _walking);
- }
-
- private void GroundCheck()
- {
- // todo
- _isGrounded = false;
- }
-
-
- private void Move(Vector3 direction)
- {
- var targetAngle = Mathf.Atan2(direction.z, direction.x) * Mathf.Rad2Deg;
-
- hipJoint.targetRotation = Quaternion.Euler(0f, targetAngle, 0f);
-
- hip.AddForce(direction * speed);
-
- _walking = true;
- }
-
- private void Jump()
- {
- if (targetAnimator) targetAnimator.SetBool("Jump", true);
- hip.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
- _inputEvents.jump = false;
- }
- }
-}
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/DeprecatedChubby/DeprecatedChubbyController.cs.meta b/Assets/Scripts/Gameplay/DeprecatedChubby/DeprecatedChubbyController.cs.meta
deleted file mode 100644
index 2463691..0000000
--- a/Assets/Scripts/Gameplay/DeprecatedChubby/DeprecatedChubbyController.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: d51ede52931a21d4c8a3e981df323d0e
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/Scripts/Gameplay/DeprecatedChubby/DeprecatedCopyLimb.cs b/Assets/Scripts/Gameplay/DeprecatedChubby/DeprecatedCopyLimb.cs
deleted file mode 100644
index 71acbde..0000000
--- a/Assets/Scripts/Gameplay/DeprecatedChubby/DeprecatedCopyLimb.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using Unity.Collections;
-using UnityEngine;
-using UnityEngine.Serialization;
-
-public class DeprecatedCopyLimb : MonoBehaviour
-{
- [FormerlySerializedAs("targetLimb")] [SerializeField]
- private Transform animatedLimb;
-
- private ConfigurableJoint _configurableJoint;
-
- private Quaternion _lastAnimatedRotation;
-
- void Start()
- {
- _configurableJoint = gameObject.GetComponent();
- _lastAnimatedRotation = animatedLimb.transform.localRotation;
- }
-
- private void FixedUpdate()
- {
- SyncRotation();
- }
-
- ///
- /// set physical limb rotation to match animated limb rotation.
- /// the animated rotation should be cached in the Start()
- ///
- private void SyncRotation()
- {
- // todo: the position can be synced as well
- Quaternion localRotation = animatedLimb.transform.localRotation;
- _configurableJoint.targetRotation = Quaternion.Inverse(localRotation) * _lastAnimatedRotation;
- }
-}
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/DeprecatedChubby/DeprecatedCopyLimb.cs.meta b/Assets/Scripts/Gameplay/DeprecatedChubby/DeprecatedCopyLimb.cs.meta
deleted file mode 100644
index cb94134..0000000
--- a/Assets/Scripts/Gameplay/DeprecatedChubby/DeprecatedCopyLimb.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 5f896e662cb8f19439396c39076aece4
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem.meta b/Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem.meta
deleted file mode 100644
index 5d31ac9..0000000
--- a/Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 48c9acd554a28814b922162e3fa889b0
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/InputEvents.cs b/Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/InputEvents.cs
deleted file mode 100644
index ada3011..0000000
--- a/Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/InputEvents.cs
+++ /dev/null
@@ -1,78 +0,0 @@
-using UnityEngine;
-using UnityEngine.InputSystem;
-
-namespace InputSystem
-{
- public class InputEvents : MonoBehaviour
- {
- [Header("Character Input Values")]
- public Vector2 move;
- public Vector2 look;
- public bool jump;
- public bool sprint;
-
- [Header("Movement Settings")]
- public bool analogMovement;
-
- [Header("Mouse Cursor Settings")]
- public bool cursorLocked = true;
- public bool cursorInputForLook = true;
-
-#if ENABLE_INPUT_SYSTEM && STARTER_ASSETS_PACKAGES_CHECKED
- public void OnMove(InputValue value)
- {
- MoveInput(value.Get());
- }
-
- public void OnLook(InputValue value)
- {
- if(cursorInputForLook)
- {
- LookInput(value.Get());
- }
- }
-
- public void OnJump(InputValue value)
- {
- JumpInput(value.isPressed);
- }
-
- public void OnSprint(InputValue value)
- {
- SprintInput(value.isPressed);
- }
-#endif
-
-
- public void MoveInput(Vector2 newMoveDirection)
- {
- move = newMoveDirection;
- }
-
- public void LookInput(Vector2 newLookDirection)
- {
- look = newLookDirection;
- }
-
- public void JumpInput(bool newJumpState)
- {
- jump = newJumpState;
- }
-
- public void SprintInput(bool newSprintState)
- {
- sprint = !sprint;
- }
-
- private void OnApplicationFocus(bool hasFocus)
- {
- SetCursorState(cursorLocked);
- }
-
- private void SetCursorState(bool newState)
- {
- Cursor.lockState = newState ? CursorLockMode.Locked : CursorLockMode.None;
- }
- }
-
-}
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/InputEvents.cs.meta b/Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/InputEvents.cs.meta
deleted file mode 100644
index 796f375..0000000
--- a/Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/InputEvents.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: e087ecce43ebbff45a1b360637807d93
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/MF1.inputsettings.asset b/Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/MF1.inputsettings.asset
deleted file mode 100644
index bb91482..0000000
--- a/Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/MF1.inputsettings.asset
+++ /dev/null
@@ -1,35 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!114 &11400000
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 0}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: c46f07b5ed07e4e92aa78254188d3d10, type: 3}
- m_Name: MF1.inputsettings
- m_EditorClassIdentifier:
- m_SupportedDevices: []
- m_UpdateMode: 1
- m_MaxEventBytesPerUpdate: 5242880
- m_MaxQueuedEventsPerUpdate: 1000
- m_CompensateForScreenOrientation: 0
- m_BackgroundBehavior: 0
- m_EditorInputBehaviorInPlayMode: 0
- m_DefaultDeadzoneMin: 0.125
- m_DefaultDeadzoneMax: 0.925
- m_DefaultButtonPressPoint: 0.5
- m_ButtonReleaseThreshold: 0.75
- m_DefaultTapTime: 0.2
- m_DefaultSlowTapTime: 0.5
- m_DefaultHoldTime: 0.4
- m_TapRadius: 5
- m_MultiTapDelayTime: 0.75
- m_DisableRedundantEventsMerging: 0
- m_iOSSettings:
- m_MotionUsage:
- m_Enabled: 0
- m_Description:
diff --git a/Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/MF1.inputsettings.asset.meta b/Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/MF1.inputsettings.asset.meta
deleted file mode 100644
index bb5f3dd..0000000
--- a/Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/MF1.inputsettings.asset.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 9e7be553448fa2546aea5752021cbcf7
-NativeFormatImporter:
- externalObjects: {}
- mainObjectFileID: 0
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/PlayerInputAction.inputactions b/Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/PlayerInputAction.inputactions
deleted file mode 100644
index c1cbf54..0000000
--- a/Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/PlayerInputAction.inputactions
+++ /dev/null
@@ -1,274 +0,0 @@
-{
- "name": "PlayerInputAction",
- "maps": [
- {
- "name": "Player",
- "id": "f62a4b92-ef5e-4175-8f4c-c9075429d32c",
- "actions": [
- {
- "name": "Move",
- "type": "Value",
- "id": "6bc1aaf4-b110-4ff7-891e-5b9fe6f32c4d",
- "expectedControlType": "Vector2",
- "processors": "",
- "interactions": "",
- "initialStateCheck": true
- },
- {
- "name": "Look",
- "type": "Value",
- "id": "2690c379-f54d-45be-a724-414123833eb4",
- "expectedControlType": "Vector2",
- "processors": "",
- "interactions": "",
- "initialStateCheck": true
- },
- {
- "name": "Jump",
- "type": "Button",
- "id": "8c4abdf8-4099-493a-aa1a-129acec7c3df",
- "expectedControlType": "Button",
- "processors": "",
- "interactions": "",
- "initialStateCheck": false
- },
- {
- "name": "Sprint",
- "type": "PassThrough",
- "id": "980e881e-182c-404c-8cbf-3d09fdb48fef",
- "expectedControlType": "",
- "processors": "",
- "interactions": "",
- "initialStateCheck": false
- }
- ],
- "bindings": [
- {
- "name": "WASD",
- "id": "b7594ddb-26c9-4ba2-bd5a-901468929edc",
- "path": "2DVector(mode=1)",
- "interactions": "",
- "processors": "",
- "groups": "",
- "action": "Move",
- "isComposite": true,
- "isPartOfComposite": false
- },
- {
- "name": "up",
- "id": "2063a8b5-6a45-43de-851b-65f3d46e7b58",
- "path": "/w",
- "interactions": "",
- "processors": "",
- "groups": "KeyboardMouse",
- "action": "Move",
- "isComposite": false,
- "isPartOfComposite": true
- },
- {
- "name": "down",
- "id": "64e4d037-32e1-4fb9-80e4-fc7330404dfe",
- "path": "/s",
- "interactions": "",
- "processors": "",
- "groups": "KeyboardMouse",
- "action": "Move",
- "isComposite": false,
- "isPartOfComposite": true
- },
- {
- "name": "left",
- "id": "0fce8b11-5eab-4e4e-a741-b732e7b20873",
- "path": "/a",
- "interactions": "",
- "processors": "",
- "groups": "KeyboardMouse",
- "action": "Move",
- "isComposite": false,
- "isPartOfComposite": true
- },
- {
- "name": "right",
- "id": "7bdda0d6-57a8-47c8-8238-8aecf3110e47",
- "path": "/d",
- "interactions": "",
- "processors": "",
- "groups": "KeyboardMouse",
- "action": "Move",
- "isComposite": false,
- "isPartOfComposite": true
- },
- {
- "name": "up",
- "id": "bb94b405-58d3-4998-8535-d705c1218a98",
- "path": "/upArrow",
- "interactions": "",
- "processors": "",
- "groups": "KeyboardMouse",
- "action": "Move",
- "isComposite": false,
- "isPartOfComposite": true
- },
- {
- "name": "down",
- "id": "929d9071-7dd0-4368-9743-6793bb98087e",
- "path": "/downArrow",
- "interactions": "",
- "processors": "",
- "groups": "KeyboardMouse",
- "action": "Move",
- "isComposite": false,
- "isPartOfComposite": true
- },
- {
- "name": "left",
- "id": "28abadba-06ff-4d37-bb70-af2f1e35a3b9",
- "path": "/leftArrow",
- "interactions": "",
- "processors": "",
- "groups": "KeyboardMouse",
- "action": "Move",
- "isComposite": false,
- "isPartOfComposite": true
- },
- {
- "name": "right",
- "id": "45f115b6-9b4f-4ba8-b500-b94c93bf7d7e",
- "path": "/rightArrow",
- "interactions": "",
- "processors": "",
- "groups": "KeyboardMouse",
- "action": "Move",
- "isComposite": false,
- "isPartOfComposite": true
- },
- {
- "name": "",
- "id": "e2f9aa65-db06-4c5b-a2e9-41bc8acb9517",
- "path": "/leftStick",
- "interactions": "",
- "processors": "StickDeadzone",
- "groups": "Gamepad",
- "action": "Move",
- "isComposite": false,
- "isPartOfComposite": false
- },
- {
- "name": "",
- "id": "ed66cbff-2900-4a62-8896-696503cfcd31",
- "path": "/delta",
- "interactions": "",
- "processors": "InvertVector2(invertX=false),ScaleVector2(x=0.05,y=0.05)",
- "groups": "KeyboardMouse",
- "action": "Look",
- "isComposite": false,
- "isPartOfComposite": false
- },
- {
- "name": "",
- "id": "d1d171b6-19d8-47a6-ba3a-71b6a8e7b3c0",
- "path": "/rightStick",
- "interactions": "",
- "processors": "InvertVector2(invertX=false),StickDeadzone,ScaleVector2(x=300,y=300)",
- "groups": "Gamepad",
- "action": "Look",
- "isComposite": false,
- "isPartOfComposite": false
- },
- {
- "name": "",
- "id": "1bd55a0b-761e-4ae4-89ae-8ec127e08a29",
- "path": "/space",
- "interactions": "",
- "processors": "",
- "groups": "KeyboardMouse",
- "action": "Jump",
- "isComposite": false,
- "isPartOfComposite": false
- },
- {
- "name": "",
- "id": "9f973413-5e27-4239-acee-38c4a63feeba",
- "path": "/buttonSouth",
- "interactions": "",
- "processors": "",
- "groups": "Gamepad",
- "action": "Jump",
- "isComposite": false,
- "isPartOfComposite": false
- },
- {
- "name": "",
- "id": "dc65b89f-9bd3-43fb-92af-d0d87ba5faa4",
- "path": "/leftShift",
- "interactions": "Press",
- "processors": "",
- "groups": "KeyboardMouse",
- "action": "Sprint",
- "isComposite": false,
- "isPartOfComposite": false
- },
- {
- "name": "",
- "id": "c8fcd86e-dcfd-4f88-8e93-b638cdbf3320",
- "path": "/leftTrigger",
- "interactions": "",
- "processors": "",
- "groups": "Gamepad",
- "action": "Sprint",
- "isComposite": false,
- "isPartOfComposite": false
- }
- ]
- }
- ],
- "controlSchemes": [
- {
- "name": "KeyboardMouse",
- "bindingGroup": "KeyboardMouse",
- "devices": [
- {
- "devicePath": "",
- "isOptional": false,
- "isOR": false
- },
- {
- "devicePath": "",
- "isOptional": false,
- "isOR": false
- }
- ]
- },
- {
- "name": "Gamepad",
- "bindingGroup": "Gamepad",
- "devices": [
- {
- "devicePath": "",
- "isOptional": true,
- "isOR": false
- },
- {
- "devicePath": "",
- "isOptional": true,
- "isOR": false
- },
- {
- "devicePath": "",
- "isOptional": true,
- "isOR": false
- }
- ]
- },
- {
- "name": "Xbox Controller",
- "bindingGroup": "Xbox Controller",
- "devices": []
- },
- {
- "name": "PS4 Controller",
- "bindingGroup": "PS4 Controller",
- "devices": []
- }
- ]
-}
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/PlayerInputAction.inputactions.meta b/Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/PlayerInputAction.inputactions.meta
deleted file mode 100644
index 7d4fb54..0000000
--- a/Assets/Scripts/Gameplay/DeprecatedChubby/InputSystem/PlayerInputAction.inputactions.meta
+++ /dev/null
@@ -1,14 +0,0 @@
-fileFormatVersion: 2
-guid: 4419d82f33d36e848b3ed5af4c8da37e
-ScriptedImporter:
- internalIDToNameTable: []
- externalObjects: {}
- serializedVersion: 2
- userData:
- assetBundleName:
- assetBundleVariant:
- script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3}
- generateWrapperCode: 0
- wrapperCodePath:
- wrapperClassName:
- wrapperCodeNamespace:
diff --git a/Assets/Scripts/Gameplay/DeprecatedChubby/Movement.cs b/Assets/Scripts/Gameplay/DeprecatedChubby/Movement.cs
deleted file mode 100644
index de9695c..0000000
--- a/Assets/Scripts/Gameplay/DeprecatedChubby/Movement.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using UnityEngine;
-
-namespace Chubby
-{
- public class Movement : MonoBehaviour
- {
-
- }
-}
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/DeprecatedChubby/Movement.cs.meta b/Assets/Scripts/Gameplay/DeprecatedChubby/Movement.cs.meta
deleted file mode 100644
index 62c55e4..0000000
--- a/Assets/Scripts/Gameplay/DeprecatedChubby/Movement.cs.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: c1760deeabbf40cca3b7ce217cb03f77
-timeCreated: 1658456211
\ No newline at end of file
From 3e63c6d7c37558562611b589785d01908b753b44 Mon Sep 17 00:00:00 2001
From: jukrb0x <15688641+jukrb0x@users.noreply.github.com>
Date: Fri, 5 Aug 2022 14:27:36 +0800
Subject: [PATCH 06/10] clean up
---
Assets/Scripts/Gameplay/{Active Ragdoll.meta => Old Ragdoll.meta} | 0
.../Gameplay/{Active Ragdoll => Old Ragdoll}/ActiveRagdoll.cs | 0
.../{Active Ragdoll => Old Ragdoll}/ActiveRagdoll.cs.meta | 0
.../Gameplay/{Active Ragdoll => Old Ragdoll}/DefaultBehaviour.cs | 0
.../{Active Ragdoll => Old Ragdoll}/DefaultBehaviour.cs.meta | 0
.../Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Input.meta | 0
.../Input/ActiveRagdollActions.inputactions | 0
.../Input/ActiveRagdollActions.inputactions.meta | 0
.../Input/InputSystem.inputsettings.asset | 0
.../Input/InputSystem.inputsettings.asset.meta | 0
.../Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Modules.meta | 0
.../{Active Ragdoll => Old Ragdoll}/Modules/AnimationModule.cs | 0
.../Modules/AnimationModule.cs.meta | 0
.../{Active Ragdoll => Old Ragdoll}/Modules/CameraModule.cs | 0
.../{Active Ragdoll => Old Ragdoll}/Modules/CameraModule.cs.meta | 0
.../{Active Ragdoll => Old Ragdoll}/Modules/GripModule.cs | 0
.../{Active Ragdoll => Old Ragdoll}/Modules/GripModule.cs.meta | 0
.../{Active Ragdoll => Old Ragdoll}/Modules/InputModule.cs | 0
.../{Active Ragdoll => Old Ragdoll}/Modules/InputModule.cs.meta | 0
.../Gameplay/{Active Ragdoll => Old Ragdoll}/Modules/Module.cs | 0
.../{Active Ragdoll => Old Ragdoll}/Modules/Module.cs.meta | 0
.../{Active Ragdoll => Old Ragdoll}/Modules/PhysicsModule.cs | 0
.../{Active Ragdoll => Old Ragdoll}/Modules/PhysicsModule.cs.meta | 0
.../Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Others.meta | 0
.../{Active Ragdoll => Old Ragdoll}/Others/AnimatorHelper.cs | 0
.../{Active Ragdoll => Old Ragdoll}/Others/AnimatorHelper.cs.meta | 0
.../Gameplay/{Active Ragdoll => Old Ragdoll}/Others/Auxiliary.cs | 0
.../{Active Ragdoll => Old Ragdoll}/Others/Auxiliary.cs.meta | 0
.../Others/ConfigurableJointExtensions.cs | 0
.../Others/ConfigurableJointExtensions.cs.meta | 0
.../Gameplay/{Active Ragdoll => Old Ragdoll}/Others/Floor.cs | 0
.../Gameplay/{Active Ragdoll => Old Ragdoll}/Others/Floor.cs.meta | 0
.../Gameplay/{Active Ragdoll => Old Ragdoll}/Others/Grippable.cs | 0
.../{Active Ragdoll => Old Ragdoll}/Others/Grippable.cs.meta | 0
.../Gameplay/{Active Ragdoll => Old Ragdoll}/Others/Gripper.cs | 0
.../{Active Ragdoll => Old Ragdoll}/Others/Gripper.cs.meta | 0
36 files changed, 0 insertions(+), 0 deletions(-)
rename Assets/Scripts/Gameplay/{Active Ragdoll.meta => Old Ragdoll.meta} (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/ActiveRagdoll.cs (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/ActiveRagdoll.cs.meta (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/DefaultBehaviour.cs (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/DefaultBehaviour.cs.meta (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Input.meta (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Input/ActiveRagdollActions.inputactions (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Input/ActiveRagdollActions.inputactions.meta (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Input/InputSystem.inputsettings.asset (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Input/InputSystem.inputsettings.asset.meta (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Modules.meta (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Modules/AnimationModule.cs (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Modules/AnimationModule.cs.meta (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Modules/CameraModule.cs (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Modules/CameraModule.cs.meta (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Modules/GripModule.cs (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Modules/GripModule.cs.meta (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Modules/InputModule.cs (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Modules/InputModule.cs.meta (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Modules/Module.cs (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Modules/Module.cs.meta (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Modules/PhysicsModule.cs (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Modules/PhysicsModule.cs.meta (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Others.meta (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Others/AnimatorHelper.cs (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Others/AnimatorHelper.cs.meta (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Others/Auxiliary.cs (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Others/Auxiliary.cs.meta (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Others/ConfigurableJointExtensions.cs (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Others/ConfigurableJointExtensions.cs.meta (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Others/Floor.cs (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Others/Floor.cs.meta (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Others/Grippable.cs (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Others/Grippable.cs.meta (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Others/Gripper.cs (100%)
rename Assets/Scripts/Gameplay/{Active Ragdoll => Old Ragdoll}/Others/Gripper.cs.meta (100%)
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll.meta b/Assets/Scripts/Gameplay/Old Ragdoll.meta
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll.meta
rename to Assets/Scripts/Gameplay/Old Ragdoll.meta
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/ActiveRagdoll.cs b/Assets/Scripts/Gameplay/Old Ragdoll/ActiveRagdoll.cs
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/ActiveRagdoll.cs
rename to Assets/Scripts/Gameplay/Old Ragdoll/ActiveRagdoll.cs
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/ActiveRagdoll.cs.meta b/Assets/Scripts/Gameplay/Old Ragdoll/ActiveRagdoll.cs.meta
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/ActiveRagdoll.cs.meta
rename to Assets/Scripts/Gameplay/Old Ragdoll/ActiveRagdoll.cs.meta
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/DefaultBehaviour.cs b/Assets/Scripts/Gameplay/Old Ragdoll/DefaultBehaviour.cs
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/DefaultBehaviour.cs
rename to Assets/Scripts/Gameplay/Old Ragdoll/DefaultBehaviour.cs
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/DefaultBehaviour.cs.meta b/Assets/Scripts/Gameplay/Old Ragdoll/DefaultBehaviour.cs.meta
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/DefaultBehaviour.cs.meta
rename to Assets/Scripts/Gameplay/Old Ragdoll/DefaultBehaviour.cs.meta
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Input.meta b/Assets/Scripts/Gameplay/Old Ragdoll/Input.meta
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Input.meta
rename to Assets/Scripts/Gameplay/Old Ragdoll/Input.meta
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Input/ActiveRagdollActions.inputactions b/Assets/Scripts/Gameplay/Old Ragdoll/Input/ActiveRagdollActions.inputactions
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Input/ActiveRagdollActions.inputactions
rename to Assets/Scripts/Gameplay/Old Ragdoll/Input/ActiveRagdollActions.inputactions
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Input/ActiveRagdollActions.inputactions.meta b/Assets/Scripts/Gameplay/Old Ragdoll/Input/ActiveRagdollActions.inputactions.meta
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Input/ActiveRagdollActions.inputactions.meta
rename to Assets/Scripts/Gameplay/Old Ragdoll/Input/ActiveRagdollActions.inputactions.meta
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Input/InputSystem.inputsettings.asset b/Assets/Scripts/Gameplay/Old Ragdoll/Input/InputSystem.inputsettings.asset
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Input/InputSystem.inputsettings.asset
rename to Assets/Scripts/Gameplay/Old Ragdoll/Input/InputSystem.inputsettings.asset
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Input/InputSystem.inputsettings.asset.meta b/Assets/Scripts/Gameplay/Old Ragdoll/Input/InputSystem.inputsettings.asset.meta
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Input/InputSystem.inputsettings.asset.meta
rename to Assets/Scripts/Gameplay/Old Ragdoll/Input/InputSystem.inputsettings.asset.meta
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Modules.meta b/Assets/Scripts/Gameplay/Old Ragdoll/Modules.meta
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Modules.meta
rename to Assets/Scripts/Gameplay/Old Ragdoll/Modules.meta
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Modules/AnimationModule.cs b/Assets/Scripts/Gameplay/Old Ragdoll/Modules/AnimationModule.cs
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Modules/AnimationModule.cs
rename to Assets/Scripts/Gameplay/Old Ragdoll/Modules/AnimationModule.cs
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Modules/AnimationModule.cs.meta b/Assets/Scripts/Gameplay/Old Ragdoll/Modules/AnimationModule.cs.meta
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Modules/AnimationModule.cs.meta
rename to Assets/Scripts/Gameplay/Old Ragdoll/Modules/AnimationModule.cs.meta
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Modules/CameraModule.cs b/Assets/Scripts/Gameplay/Old Ragdoll/Modules/CameraModule.cs
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Modules/CameraModule.cs
rename to Assets/Scripts/Gameplay/Old Ragdoll/Modules/CameraModule.cs
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Modules/CameraModule.cs.meta b/Assets/Scripts/Gameplay/Old Ragdoll/Modules/CameraModule.cs.meta
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Modules/CameraModule.cs.meta
rename to Assets/Scripts/Gameplay/Old Ragdoll/Modules/CameraModule.cs.meta
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Modules/GripModule.cs b/Assets/Scripts/Gameplay/Old Ragdoll/Modules/GripModule.cs
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Modules/GripModule.cs
rename to Assets/Scripts/Gameplay/Old Ragdoll/Modules/GripModule.cs
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Modules/GripModule.cs.meta b/Assets/Scripts/Gameplay/Old Ragdoll/Modules/GripModule.cs.meta
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Modules/GripModule.cs.meta
rename to Assets/Scripts/Gameplay/Old Ragdoll/Modules/GripModule.cs.meta
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Modules/InputModule.cs b/Assets/Scripts/Gameplay/Old Ragdoll/Modules/InputModule.cs
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Modules/InputModule.cs
rename to Assets/Scripts/Gameplay/Old Ragdoll/Modules/InputModule.cs
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Modules/InputModule.cs.meta b/Assets/Scripts/Gameplay/Old Ragdoll/Modules/InputModule.cs.meta
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Modules/InputModule.cs.meta
rename to Assets/Scripts/Gameplay/Old Ragdoll/Modules/InputModule.cs.meta
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Modules/Module.cs b/Assets/Scripts/Gameplay/Old Ragdoll/Modules/Module.cs
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Modules/Module.cs
rename to Assets/Scripts/Gameplay/Old Ragdoll/Modules/Module.cs
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Modules/Module.cs.meta b/Assets/Scripts/Gameplay/Old Ragdoll/Modules/Module.cs.meta
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Modules/Module.cs.meta
rename to Assets/Scripts/Gameplay/Old Ragdoll/Modules/Module.cs.meta
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Modules/PhysicsModule.cs b/Assets/Scripts/Gameplay/Old Ragdoll/Modules/PhysicsModule.cs
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Modules/PhysicsModule.cs
rename to Assets/Scripts/Gameplay/Old Ragdoll/Modules/PhysicsModule.cs
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Modules/PhysicsModule.cs.meta b/Assets/Scripts/Gameplay/Old Ragdoll/Modules/PhysicsModule.cs.meta
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Modules/PhysicsModule.cs.meta
rename to Assets/Scripts/Gameplay/Old Ragdoll/Modules/PhysicsModule.cs.meta
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Others.meta b/Assets/Scripts/Gameplay/Old Ragdoll/Others.meta
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Others.meta
rename to Assets/Scripts/Gameplay/Old Ragdoll/Others.meta
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Others/AnimatorHelper.cs b/Assets/Scripts/Gameplay/Old Ragdoll/Others/AnimatorHelper.cs
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Others/AnimatorHelper.cs
rename to Assets/Scripts/Gameplay/Old Ragdoll/Others/AnimatorHelper.cs
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Others/AnimatorHelper.cs.meta b/Assets/Scripts/Gameplay/Old Ragdoll/Others/AnimatorHelper.cs.meta
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Others/AnimatorHelper.cs.meta
rename to Assets/Scripts/Gameplay/Old Ragdoll/Others/AnimatorHelper.cs.meta
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Others/Auxiliary.cs b/Assets/Scripts/Gameplay/Old Ragdoll/Others/Auxiliary.cs
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Others/Auxiliary.cs
rename to Assets/Scripts/Gameplay/Old Ragdoll/Others/Auxiliary.cs
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Others/Auxiliary.cs.meta b/Assets/Scripts/Gameplay/Old Ragdoll/Others/Auxiliary.cs.meta
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Others/Auxiliary.cs.meta
rename to Assets/Scripts/Gameplay/Old Ragdoll/Others/Auxiliary.cs.meta
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Others/ConfigurableJointExtensions.cs b/Assets/Scripts/Gameplay/Old Ragdoll/Others/ConfigurableJointExtensions.cs
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Others/ConfigurableJointExtensions.cs
rename to Assets/Scripts/Gameplay/Old Ragdoll/Others/ConfigurableJointExtensions.cs
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Others/ConfigurableJointExtensions.cs.meta b/Assets/Scripts/Gameplay/Old Ragdoll/Others/ConfigurableJointExtensions.cs.meta
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Others/ConfigurableJointExtensions.cs.meta
rename to Assets/Scripts/Gameplay/Old Ragdoll/Others/ConfigurableJointExtensions.cs.meta
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Others/Floor.cs b/Assets/Scripts/Gameplay/Old Ragdoll/Others/Floor.cs
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Others/Floor.cs
rename to Assets/Scripts/Gameplay/Old Ragdoll/Others/Floor.cs
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Others/Floor.cs.meta b/Assets/Scripts/Gameplay/Old Ragdoll/Others/Floor.cs.meta
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Others/Floor.cs.meta
rename to Assets/Scripts/Gameplay/Old Ragdoll/Others/Floor.cs.meta
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Others/Grippable.cs b/Assets/Scripts/Gameplay/Old Ragdoll/Others/Grippable.cs
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Others/Grippable.cs
rename to Assets/Scripts/Gameplay/Old Ragdoll/Others/Grippable.cs
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Others/Grippable.cs.meta b/Assets/Scripts/Gameplay/Old Ragdoll/Others/Grippable.cs.meta
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Others/Grippable.cs.meta
rename to Assets/Scripts/Gameplay/Old Ragdoll/Others/Grippable.cs.meta
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Others/Gripper.cs b/Assets/Scripts/Gameplay/Old Ragdoll/Others/Gripper.cs
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Others/Gripper.cs
rename to Assets/Scripts/Gameplay/Old Ragdoll/Others/Gripper.cs
diff --git a/Assets/Scripts/Gameplay/Active Ragdoll/Others/Gripper.cs.meta b/Assets/Scripts/Gameplay/Old Ragdoll/Others/Gripper.cs.meta
similarity index 100%
rename from Assets/Scripts/Gameplay/Active Ragdoll/Others/Gripper.cs.meta
rename to Assets/Scripts/Gameplay/Old Ragdoll/Others/Gripper.cs.meta
From 67cdd392b83c68021167f80d21b82490277c892c Mon Sep 17 00:00:00 2001
From: jukrb0x <15688641+jukrb0x@users.noreply.github.com>
Date: Fri, 5 Aug 2022 14:39:23 +0800
Subject: [PATCH 07/10] git error
From 8691187228217270d9d34945e8820f073793d446 Mon Sep 17 00:00:00 2001
From: jukrb0x <15688641+jukrb0x@users.noreply.github.com>
Date: Fri, 5 Aug 2022 14:42:25 +0800
Subject: [PATCH 08/10] rm old code
---
.../Gameplay/DeprecatedBasicRigidBodyPush.cs | 35 --
.../DeprecatedBasicRigidBodyPush.cs.meta | 11 -
.../Gameplay/DeprecatedPlayerController.cs | 393 ------------------
.../DeprecatedPlayerController.cs.meta | 11 -
4 files changed, 450 deletions(-)
delete mode 100644 Assets/Scripts/Gameplay/DeprecatedBasicRigidBodyPush.cs
delete mode 100644 Assets/Scripts/Gameplay/DeprecatedBasicRigidBodyPush.cs.meta
delete mode 100644 Assets/Scripts/Gameplay/DeprecatedPlayerController.cs
delete mode 100644 Assets/Scripts/Gameplay/DeprecatedPlayerController.cs.meta
diff --git a/Assets/Scripts/Gameplay/DeprecatedBasicRigidBodyPush.cs b/Assets/Scripts/Gameplay/DeprecatedBasicRigidBodyPush.cs
deleted file mode 100644
index acbf20b..0000000
--- a/Assets/Scripts/Gameplay/DeprecatedBasicRigidBodyPush.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using UnityEngine;
-
-public class DeprecatedBasicRigidBodyPush : MonoBehaviour
-{
- public LayerMask pushLayers;
- public bool canPush;
- [Range(0.5f, 50f)] public float strength = 1.1f;
-
- private void OnControllerColliderHit(ControllerColliderHit hit)
- {
- if (canPush) PushRigidBodies(hit);
- }
-
- private void PushRigidBodies(ControllerColliderHit hit)
- {
- // https://docs.unity3d.com/ScriptReference/CharacterController.OnControllerColliderHit.html
-
- // make sure we hit a non kinematic rigidbody
- Rigidbody body = hit.collider.attachedRigidbody;
- if (body == null || body.isKinematic) return;
-
- // make sure we only push desired layer(s)
- var bodyLayerMask = 1 << body.gameObject.layer;
- if ((bodyLayerMask & pushLayers.value) == 0) return;
-
- // We dont want to push objects below us
- if (hit.moveDirection.y < -0.3f) return;
-
- // Calculate push direction from move direction, horizontal motion only
- Vector3 pushDir = new Vector3(hit.moveDirection.x, 0.0f, hit.moveDirection.z);
-
- // Apply the push and take strength into account
- body.AddForce(pushDir * strength, ForceMode.Impulse);
- }
-}
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/DeprecatedBasicRigidBodyPush.cs.meta b/Assets/Scripts/Gameplay/DeprecatedBasicRigidBodyPush.cs.meta
deleted file mode 100644
index d0dc3af..0000000
--- a/Assets/Scripts/Gameplay/DeprecatedBasicRigidBodyPush.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 909d917d73a63f940ac158d02e936645
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/Scripts/Gameplay/DeprecatedPlayerController.cs b/Assets/Scripts/Gameplay/DeprecatedPlayerController.cs
deleted file mode 100644
index 1778b47..0000000
--- a/Assets/Scripts/Gameplay/DeprecatedPlayerController.cs
+++ /dev/null
@@ -1,393 +0,0 @@
-using InputSystem;
-using UnityEngine;
-using UnityEngine.InputSystem;
-
-/* Note: animations are called via the controller for both the character and capsule using animator null checks
- */
-
-namespace Gameplay
-{
- [RequireComponent(typeof(CharacterController))]
-#if ENABLE_INPUT_SYSTEM && STARTER_ASSETS_PACKAGES_CHECKED
- [RequireComponent(typeof(PlayerInput))]
-#endif
- public class DeprecatedPlayerController : MonoBehaviour
- {
- [Header("Player")]
- [Tooltip("Move speed of the character in m/s")]
- public float MoveSpeed = 2.0f;
-
- [Tooltip("Sprint speed of the character in m/s")]
- public float SprintSpeed = 5.335f;
-
- [Tooltip("How fast the character turns to face movement direction")]
- [Range(0.0f, 0.3f)]
- public float RotationSmoothTime = 0.12f;
-
- [Tooltip("Acceleration and deceleration")]
- public float SpeedChangeRate = 10.0f;
-
- public AudioClip LandingAudioClip;
- public AudioClip[] FootstepAudioClips;
- [Range(0, 1)] public float FootstepAudioVolume = 0.5f;
-
- [Space(10)]
- [Tooltip("The height the player can jump")]
- public float JumpHeight = 1.2f;
-
- [Tooltip("The character uses its own gravity value. The engine default is -9.81f")]
- public float Gravity = -15.0f;
-
- [Space(10)]
- [Tooltip("Time required to pass before being able to jump again. Set to 0f to instantly jump again")]
- public float JumpTimeout = 0.50f;
-
- [Tooltip("Time required to pass before entering the fall state. Useful for walking down stairs")]
- public float FallTimeout = 0.15f;
-
- [Header("Player Grounded")]
- [Tooltip("If the character is grounded or not. Not part of the CharacterController built in grounded check")]
- public bool Grounded = true;
-
- [Tooltip("Useful for rough ground")]
- public float GroundedOffset = -0.14f;
-
- [Tooltip("The radius of the grounded check. Should match the radius of the CharacterController")]
- public float GroundedRadius = 0.28f;
-
- [Tooltip("What layers the character uses as ground")]
- public LayerMask GroundLayers;
-
- [Header("Cinemachine")]
- [Tooltip("The follow target set in the Cinemachine Virtual Camera that the camera will follow")]
- public GameObject CinemachineCameraTarget;
-
- [Tooltip("How far in degrees can you move the camera up")]
- public float TopClamp = 70.0f;
-
- [Tooltip("How far in degrees can you move the camera down")]
- public float BottomClamp = -30.0f;
-
- [Tooltip("Additional degress to override the camera. Useful for fine tuning camera position when locked")]
- public float CameraAngleOverride = 0.0f;
-
- [Tooltip("For locking the camera position on all axis")]
- public bool LockCameraPosition = false;
-
- // cinemachine
- private float _cinemachineTargetYaw;
- private float _cinemachineTargetPitch;
-
- // player
- private float _speed;
- private float _animationBlend;
- private float _targetRotation = 0.0f;
- private float _rotationVelocity;
- private float _verticalVelocity;
- private float _terminalVelocity = 53.0f;
-
- // timeout deltatime
- private float _jumpTimeoutDelta;
- private float _fallTimeoutDelta;
-
- // animation IDs
- private int _animIDSpeed;
- private int _animIDGrounded;
- private int _animIDJump;
- private int _animIDFreeFall;
- private int _animIDMotionSpeed;
-
-#if ENABLE_INPUT_SYSTEM && STARTER_ASSETS_PACKAGES_CHECKED
- private PlayerInput _playerInput;
-#endif
- private Animator _animator;
- private CharacterController _controller;
- private InputEvents _input;
- private GameObject _mainCamera;
-
- private const float _threshold = 0.01f;
-
- private bool _hasAnimator;
-
- private bool IsCurrentDeviceMouse
- {
- get
- {
-#if ENABLE_INPUT_SYSTEM && STARTER_ASSETS_PACKAGES_CHECKED
- return _playerInput.currentControlScheme == "KeyboardMouse";
-#else
- return false;
-#endif
- }
- }
-
-
- private void Awake()
- {
- // get a reference to our main camera
- if (_mainCamera == null)
- {
- _mainCamera = GameObject.FindGameObjectWithTag("MainCamera");
- }
- }
-
- private void Start()
- {
- _cinemachineTargetYaw = CinemachineCameraTarget.transform.rotation.eulerAngles.y;
-
- _hasAnimator = TryGetComponent(out _animator);
- _controller = GetComponent();
- _input = GetComponent();
-#if ENABLE_INPUT_SYSTEM && STARTER_ASSETS_PACKAGES_CHECKED
- _playerInput = GetComponent();
-#else
- Debug.LogError( "Starter Assets package is missing dependencies. Please use Tools/Starter Assets/Reinstall Dependencies to fix it");
-#endif
-
- AssignAnimationIDs();
-
- // reset our timeouts on start
- _jumpTimeoutDelta = JumpTimeout;
- _fallTimeoutDelta = FallTimeout;
- }
-
- private void Update()
- {
- _hasAnimator = TryGetComponent(out _animator);
-
- // check all inputs every frame
- JumpAndGravity();
- GroundedCheck();
- Move();
- }
-
- private void LateUpdate()
- {
- CameraRotation();
- }
-
- private void AssignAnimationIDs()
- {
- _animIDSpeed = Animator.StringToHash("Speed");
- _animIDGrounded = Animator.StringToHash("Grounded");
- _animIDJump = Animator.StringToHash("Jump");
- _animIDFreeFall = Animator.StringToHash("FreeFall");
- _animIDMotionSpeed = Animator.StringToHash("MotionSpeed");
- }
-
- private void GroundedCheck()
- {
- // set sphere position, with offset
- var position = transform.position;
- Vector3 spherePosition = new Vector3(position.x, position.y - GroundedOffset,
- position.z);
- Grounded = Physics.CheckSphere(spherePosition, GroundedRadius, GroundLayers,
- QueryTriggerInteraction.Ignore);
-
- // update animator if using character
- if (_hasAnimator)
- {
- _animator.SetBool(_animIDGrounded, Grounded);
- }
- }
-
- private void CameraRotation()
- {
- // if there is an input and camera position is not fixed
- if (_input.look.sqrMagnitude >= _threshold && !LockCameraPosition)
- {
- //Don't multiply mouse input by Time.deltaTime;
- float deltaTimeMultiplier = IsCurrentDeviceMouse ? 1.0f : Time.deltaTime;
-
- _cinemachineTargetYaw += _input.look.x * deltaTimeMultiplier;
- _cinemachineTargetPitch += _input.look.y * deltaTimeMultiplier;
- }
-
- // clamp our rotations so our values are limited 360 degrees
- _cinemachineTargetYaw = ClampAngle(_cinemachineTargetYaw, float.MinValue, float.MaxValue);
- _cinemachineTargetPitch = ClampAngle(_cinemachineTargetPitch, BottomClamp, TopClamp);
-
- // Cinemachine will follow this target
- CinemachineCameraTarget.transform.rotation = Quaternion.Euler(_cinemachineTargetPitch + CameraAngleOverride,
- _cinemachineTargetYaw, 0.0f);
- }
-
- private void Move()
- {
- // set target speed based on move speed, sprint speed and if sprint is pressed
- float targetSpeed = _input.sprint ? SprintSpeed : MoveSpeed;
-
- // a simplistic acceleration and deceleration designed to be easy to remove, replace, or iterate upon
-
- // note: Vector2's == operator uses approximation so is not floating point error prone, and is cheaper than magnitude
- // if there is no input, set the target speed to 0
- if (_input.move == Vector2.zero) targetSpeed = 0.0f;
-
- // a reference to the players current horizontal velocity
- float currentHorizontalSpeed = new Vector3(_controller.velocity.x, 0.0f, _controller.velocity.z).magnitude;
-
- float speedOffset = 0.1f;
- float inputMagnitude = _input.analogMovement ? _input.move.magnitude : 1f;
-
- // accelerate or decelerate to target speed
- if (currentHorizontalSpeed < targetSpeed - speedOffset ||
- currentHorizontalSpeed > targetSpeed + speedOffset)
- {
- // creates curved result rather than a linear one giving a more organic speed change
- // note T in Lerp is clamped, so we don't need to clamp our speed
- _speed = Mathf.Lerp(currentHorizontalSpeed, targetSpeed * inputMagnitude,
- Time.deltaTime * SpeedChangeRate);
-
- // round speed to 3 decimal places
- _speed = Mathf.Round(_speed * 1000f) / 1000f;
- }
- else
- {
- _speed = targetSpeed;
- }
-
- _animationBlend = Mathf.Lerp(_animationBlend, targetSpeed, Time.deltaTime * SpeedChangeRate);
- if (_animationBlend < 0.01f) _animationBlend = 0f;
-
- // normalise input direction
- Vector3 inputDirection = new Vector3(_input.move.x, 0.0f, _input.move.y).normalized;
-
- // note: Vector2's != operator uses approximation so is not floating point error prone, and is cheaper than magnitude
- // if there is a move input rotate player when the player is moving
- if (_input.move != Vector2.zero)
- {
- _targetRotation = Mathf.Atan2(inputDirection.x, inputDirection.z) * Mathf.Rad2Deg +
- _mainCamera.transform.eulerAngles.y;
- float rotation = Mathf.SmoothDampAngle(transform.eulerAngles.y, _targetRotation, ref _rotationVelocity,
- RotationSmoothTime);
-
- // rotate to face input direction relative to camera position
- transform.rotation = Quaternion.Euler(0.0f, rotation, 0.0f);
- }
-
-
- Vector3 targetDirection = Quaternion.Euler(0.0f, _targetRotation, 0.0f) * Vector3.forward;
-
- // move the player
- _controller.Move(targetDirection.normalized * (_speed * Time.deltaTime) +
- new Vector3(0.0f, _verticalVelocity, 0.0f) * Time.deltaTime);
-
- // update animator if using character
- if (_hasAnimator)
- {
- _animator.SetFloat(_animIDSpeed, _animationBlend);
- _animator.SetFloat(_animIDMotionSpeed, inputMagnitude);
- }
- }
-
- private void JumpAndGravity()
- {
- if (Grounded)
- {
- // reset the fall timeout timer
- _fallTimeoutDelta = FallTimeout;
-
- // update animator if using character
- if (_hasAnimator)
- {
- _animator.SetBool(_animIDJump, false);
- _animator.SetBool(_animIDFreeFall, false);
- }
-
- // stop our velocity dropping infinitely when grounded
- if (_verticalVelocity < 0.0f)
- {
- _verticalVelocity = -2f;
- }
-
- // Jump
- if (_input.jump && _jumpTimeoutDelta <= 0.0f)
- {
- // the square root of H * -2 * G = how much velocity needed to reach desired height
- _verticalVelocity = Mathf.Sqrt(JumpHeight * -2f * Gravity);
-
- // update animator if using character
- if (_hasAnimator)
- {
- _animator.SetBool(_animIDJump, true);
- }
- }
-
- // jump timeout
- if (_jumpTimeoutDelta >= 0.0f)
- {
- _jumpTimeoutDelta -= Time.deltaTime;
- }
- }
- else
- {
- // reset the jump timeout timer
- _jumpTimeoutDelta = JumpTimeout;
-
- // fall timeout
- if (_fallTimeoutDelta >= 0.0f)
- {
- _fallTimeoutDelta -= Time.deltaTime;
- }
- else
- {
- // update animator if using character
- if (_hasAnimator)
- {
- _animator.SetBool(_animIDFreeFall, true);
- }
- }
-
- // if we are not grounded, do not jump
- _input.jump = false;
- }
-
- // apply gravity over time if under terminal (multiply by delta time twice to linearly speed up over time)
- if (_verticalVelocity < _terminalVelocity)
- {
- _verticalVelocity += Gravity * Time.deltaTime;
- }
- }
-
- private static float ClampAngle(float lfAngle, float lfMin, float lfMax)
- {
- if (lfAngle < -360f) lfAngle += 360f;
- if (lfAngle > 360f) lfAngle -= 360f;
- return Mathf.Clamp(lfAngle, lfMin, lfMax);
- }
-
- private void OnDrawGizmosSelected()
- {
- Color transparentGreen = new Color(0.0f, 1.0f, 0.0f, 0.35f);
- Color transparentRed = new Color(1.0f, 0.0f, 0.0f, 0.35f);
-
- Gizmos.color = Grounded ? transparentGreen : transparentRed;
-
- // when selected, draw a gizmo in the position of, and matching radius of, the grounded collider
- var position = transform.position;
- Gizmos.DrawSphere(
- new Vector3(position.x, position.y - GroundedOffset, position.z),
- GroundedRadius);
- }
-
- private void OnFootstep(AnimationEvent animationEvent)
- {
- if (animationEvent.animatorClipInfo.weight > 0.5f)
- {
- if (FootstepAudioClips.Length > 0)
- {
- var index = Random.Range(0, FootstepAudioClips.Length);
- AudioSource.PlayClipAtPoint(FootstepAudioClips[index], transform.TransformPoint(_controller.center), FootstepAudioVolume);
- }
- }
- }
-
- private void OnLand(AnimationEvent animationEvent)
- {
- if (animationEvent.animatorClipInfo.weight > 0.5f)
- {
- AudioSource.PlayClipAtPoint(LandingAudioClip, transform.TransformPoint(_controller.center), FootstepAudioVolume);
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/DeprecatedPlayerController.cs.meta b/Assets/Scripts/Gameplay/DeprecatedPlayerController.cs.meta
deleted file mode 100644
index 8c670a3..0000000
--- a/Assets/Scripts/Gameplay/DeprecatedPlayerController.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 26e54e5a728a9234ab24fcf1460ed8a2
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
From c7cc1f0afd9aa9de8ac5ff3b5627e70bb8404066 Mon Sep 17 00:00:00 2001
From: jukrb0x <15688641+jukrb0x@users.noreply.github.com>
Date: Fri, 5 Aug 2022 14:49:10 +0800
Subject: [PATCH 09/10] feat: add my open fracture
---
Assets/Scripts/Gameplay/Fracture.meta | 8 +
Assets/Scripts/Gameplay/Fracture/Editor.meta | 8 +
.../Editor/CallbackOptionsPropertyDrawer.cs | 25 +
.../CallbackOptionsPropertyDrawer.cs.meta | 11 +
.../Fracture/Editor/FractureEditor.cs | 8 +
.../Fracture/Editor/FractureEditor.cs.meta | 11 +
.../Editor/FractureOptionsPropertyDrawer.cs | 38 +
.../FractureOptionsPropertyDrawer.cs.meta | 11 +
.../Editor/OpenFracture.Editor.asmdef | 18 +
.../Editor/OpenFracture.Editor.asmdef.meta | 7 +
.../Fracture/Editor/PrefractureEditor.cs | 8 +
.../Fracture/Editor/PrefractureEditor.cs.meta | 11 +
.../PrefractureOptionsPropertyDrawer.cs | 63 ++
.../PrefractureOptionsPropertyDrawer.cs.meta | 11 +
.../Editor/RefractureOptionsPropertyDrawer.cs | 35 +
.../RefractureOptionsPropertyDrawer.cs.meta | 11 +
.../Gameplay/Fracture/Editor/SliceEditor.cs | 8 +
.../Fracture/Editor/SliceEditor.cs.meta | 11 +
.../Editor/TriggerOptionsPropertyDrawer.cs | 57 ++
.../TriggerOptionsPropertyDrawer.cs.meta | 11 +
.../Fracture/Editor/UnfreezeFragmentEditor.cs | 8 +
.../Editor/UnfreezeFragmentEditor.cs.meta | 11 +
Assets/Scripts/Gameplay/Fracture/Runtime.meta | 8 +
.../Gameplay/Fracture/Runtime/Audio.meta | 8 +
.../Fracture/Runtime/Audio/AudioMixer.mixer | 65 ++
.../Runtime/Audio/AudioMixer.mixer.meta | 8 +
.../Fracture/Runtime/Audio/GlassBreaking.mp3 | Bin 0 -> 87057 bytes
.../Runtime/Audio/GlassBreaking.mp3.meta | 22 +
.../Fracture/Runtime/Audio/Slicing.mp3 | Bin 0 -> 5383 bytes
.../Fracture/Runtime/Audio/Slicing.mp3.meta | 22 +
.../Fracture/Runtime/Audio/StoneBreaking.mp3 | Bin 0 -> 9027 bytes
.../Runtime/Audio/StoneBreaking.mp3.meta | 22 +
.../Gameplay/Fracture/Runtime/Scripts.meta | 8 +
.../Fracture/Runtime/Scripts/AssemblyInfo.cs | 4 +
.../Runtime/Scripts/AssemblyInfo.cs.meta | 11 +
.../Fracture/Runtime/Scripts/Fracture.cs | 257 ++++++
.../Fracture/Runtime/Scripts/Fracture.cs.meta | 11 +
.../Fracture/Runtime/Scripts/Fragment.meta | 8 +
.../Fragment/ConstrainedTriangulator.cs | 764 ++++++++++++++++++
.../Fragment/ConstrainedTriangulator.cs.meta | 11 +
.../Scripts/Fragment/EdgeConstraint.cs | 87 ++
.../Scripts/Fragment/EdgeConstraint.cs.meta | 11 +
.../Runtime/Scripts/Fragment/FragmentData.cs | 317 ++++++++
.../Scripts/Fragment/FragmentData.cs.meta | 11 +
.../Runtime/Scripts/Fragment/Fragmenter.cs | 300 +++++++
.../Scripts/Fragment/Fragmenter.cs.meta | 11 +
.../Runtime/Scripts/Fragment/MeshSlicer.cs | 320 ++++++++
.../Scripts/Fragment/MeshSlicer.cs.meta | 11 +
.../Runtime/Scripts/Fragment/MeshVertex.cs | 54 ++
.../Scripts/Fragment/MeshVertex.cs.meta | 11 +
.../Fracture/Runtime/Scripts/Fragment/Quad.cs | 56 ++
.../Runtime/Scripts/Fragment/Quad.cs.meta | 11 +
.../Scripts/Fragment/TriangulationPoint.cs | 40 +
.../Fragment/TriangulationPoint.cs.meta | 11 +
.../Runtime/Scripts/Fragment/Triangulator.cs | 599 ++++++++++++++
.../Scripts/Fragment/Triangulator.cs.meta | 11 +
.../Scripts/Fragment/UnfreezeFragment.cs | 83 ++
.../Scripts/Fragment/UnfreezeFragment.cs.meta | 11 +
.../Scripts/OpenFracture.Runtime.asmdef | 14 +
.../Scripts/OpenFracture.Runtime.asmdef.meta | 7 +
.../Fracture/Runtime/Scripts/Options.meta | 8 +
.../Scripts/Options/CallbackOptions.cs | 15 +
.../Scripts/Options/CallbackOptions.cs.meta | 11 +
.../Scripts/Options/FractureOptions.cs | 50 ++
.../Scripts/Options/FractureOptions.cs.meta | 11 +
.../Scripts/Options/PrefractureOptions.cs | 25 +
.../Options/PrefractureOptions.cs.meta | 11 +
.../Scripts/Options/RefractureOptions.cs | 27 +
.../Scripts/Options/RefractureOptions.cs.meta | 11 +
.../Runtime/Scripts/Options/SliceOptions.cs | 39 +
.../Scripts/Options/SliceOptions.cs.meta | 11 +
.../Runtime/Scripts/Options/TriggerOptions.cs | 48 ++
.../Scripts/Options/TriggerOptions.cs.meta | 11 +
.../Fracture/Runtime/Scripts/Prefracture.cs | 130 +++
.../Runtime/Scripts/Prefracture.cs.meta | 11 +
.../Fracture/Runtime/Scripts/Slice.cs | 131 +++
.../Fracture/Runtime/Scripts/Slice.cs.meta | 11 +
.../Fracture/Runtime/Scripts/Slicers.meta | 8 +
.../Runtime/Scripts/Slicers/PlaneSlicer.cs | 84 ++
.../Scripts/Slicers/PlaneSlicer.cs.meta | 11 +
.../Fracture/Runtime/Scripts/Support.meta | 8 +
.../Scripts/Support/CameraController.cs | 77 ++
.../Scripts/Support/CameraController.cs.meta | 11 +
.../Runtime/Scripts/Support/Projectile.cs | 26 +
.../Scripts/Support/Projectile.cs.meta | 11 +
.../Runtime/Scripts/Support/ToggleText.cs | 17 +
.../Scripts/Support/ToggleText.cs.meta | 11 +
.../Runtime/Scripts/Support/UniqueMaterial.cs | 13 +
.../Scripts/Support/UniqueMaterial.cs.meta | 11 +
.../Fracture/Runtime/Scripts/Utilities.meta | 8 +
.../Runtime/Scripts/Utilities/BinSort.cs | 96 +++
.../Runtime/Scripts/Utilities/BinSort.cs.meta | 11 +
.../Runtime/Scripts/Utilities/MathUtils.cs | 128 +++
.../Scripts/Utilities/MathUtils.cs.meta | 11 +
.../Runtime/Scripts/Utilities/MeshUtils.cs | 239 ++++++
.../Scripts/Utilities/MeshUtils.cs.meta | 11 +
.../Scripts/Utilities/Vector3Extensions.cs | 22 +
.../Utilities/Vector3Extensions.cs.meta | 11 +
98 files changed, 4981 insertions(+)
create mode 100644 Assets/Scripts/Gameplay/Fracture.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Editor.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Editor/CallbackOptionsPropertyDrawer.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Editor/CallbackOptionsPropertyDrawer.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Editor/FractureEditor.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Editor/FractureEditor.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Editor/FractureOptionsPropertyDrawer.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Editor/FractureOptionsPropertyDrawer.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Editor/OpenFracture.Editor.asmdef
create mode 100644 Assets/Scripts/Gameplay/Fracture/Editor/OpenFracture.Editor.asmdef.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Editor/PrefractureEditor.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Editor/PrefractureEditor.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Editor/PrefractureOptionsPropertyDrawer.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Editor/PrefractureOptionsPropertyDrawer.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Editor/RefractureOptionsPropertyDrawer.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Editor/RefractureOptionsPropertyDrawer.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Editor/SliceEditor.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Editor/SliceEditor.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Editor/TriggerOptionsPropertyDrawer.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Editor/TriggerOptionsPropertyDrawer.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Editor/UnfreezeFragmentEditor.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Editor/UnfreezeFragmentEditor.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Audio.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Audio/AudioMixer.mixer
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Audio/AudioMixer.mixer.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Audio/GlassBreaking.mp3
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Audio/GlassBreaking.mp3.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Audio/Slicing.mp3
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Audio/Slicing.mp3.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Audio/StoneBreaking.mp3
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Audio/StoneBreaking.mp3.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/AssemblyInfo.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/AssemblyInfo.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fracture.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fracture.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fragment.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fragment/ConstrainedTriangulator.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fragment/ConstrainedTriangulator.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fragment/EdgeConstraint.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fragment/EdgeConstraint.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fragment/FragmentData.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fragment/FragmentData.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fragment/Fragmenter.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fragment/Fragmenter.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fragment/MeshSlicer.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fragment/MeshSlicer.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fragment/MeshVertex.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fragment/MeshVertex.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fragment/Quad.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fragment/Quad.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fragment/TriangulationPoint.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fragment/TriangulationPoint.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fragment/Triangulator.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fragment/Triangulator.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fragment/UnfreezeFragment.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Fragment/UnfreezeFragment.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/OpenFracture.Runtime.asmdef
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/OpenFracture.Runtime.asmdef.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Options.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Options/CallbackOptions.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Options/CallbackOptions.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Options/FractureOptions.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Options/FractureOptions.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Options/PrefractureOptions.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Options/PrefractureOptions.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Options/RefractureOptions.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Options/RefractureOptions.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Options/SliceOptions.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Options/SliceOptions.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Options/TriggerOptions.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Options/TriggerOptions.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Prefracture.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Prefracture.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Slice.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Slice.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Slicers.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Slicers/PlaneSlicer.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Slicers/PlaneSlicer.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Support.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Support/CameraController.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Support/CameraController.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Support/Projectile.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Support/Projectile.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Support/ToggleText.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Support/ToggleText.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Support/UniqueMaterial.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Support/UniqueMaterial.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Utilities.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Utilities/BinSort.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Utilities/BinSort.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Utilities/MathUtils.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Utilities/MathUtils.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Utilities/MeshUtils.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Utilities/MeshUtils.cs.meta
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Utilities/Vector3Extensions.cs
create mode 100644 Assets/Scripts/Gameplay/Fracture/Runtime/Scripts/Utilities/Vector3Extensions.cs.meta
diff --git a/Assets/Scripts/Gameplay/Fracture.meta b/Assets/Scripts/Gameplay/Fracture.meta
new file mode 100644
index 0000000..681afef
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4b9afaa70aedb224a81faec990d79e81
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Gameplay/Fracture/Editor.meta b/Assets/Scripts/Gameplay/Fracture/Editor.meta
new file mode 100644
index 0000000..93b520a
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8028e5705acb01c4c9a053b2bd52227d
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Gameplay/Fracture/Editor/CallbackOptionsPropertyDrawer.cs b/Assets/Scripts/Gameplay/Fracture/Editor/CallbackOptionsPropertyDrawer.cs
new file mode 100644
index 0000000..da4aff2
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Editor/CallbackOptionsPropertyDrawer.cs
@@ -0,0 +1,25 @@
+using UnityEditor;
+using UnityEngine;
+
+[CustomPropertyDrawer(typeof(CallbackOptions))]
+public class CallbackOptionsPropertyDrawer : PropertyDrawer
+{
+ private static bool foldout = true;
+
+ // Draw the property inside the given rect
+ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
+ {
+ foldout = EditorGUILayout.BeginFoldoutHeaderGroup(foldout, label);
+
+ if (foldout)
+ {
+ EditorGUILayout.PropertyField(property.FindPropertyRelative("onCompleted"));
+ }
+
+ EditorGUILayout.EndFoldoutHeaderGroup();
+ }
+
+ // Hack to prevent extra space at top of property drawer. This is due to using EditorGUILayout
+ // in OnGUI, but I don't want to have to manually specify control sizes
+ public override float GetPropertyHeight(SerializedProperty property, GUIContent label) { return 0; }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/Fracture/Editor/CallbackOptionsPropertyDrawer.cs.meta b/Assets/Scripts/Gameplay/Fracture/Editor/CallbackOptionsPropertyDrawer.cs.meta
new file mode 100644
index 0000000..b8346a7
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Editor/CallbackOptionsPropertyDrawer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e56ee0315133e004e8ef0f70106090ef
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Gameplay/Fracture/Editor/FractureEditor.cs b/Assets/Scripts/Gameplay/Fracture/Editor/FractureEditor.cs
new file mode 100644
index 0000000..304f471
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Editor/FractureEditor.cs
@@ -0,0 +1,8 @@
+using UnityEditor;
+
+[CustomEditor(typeof(Fracture))]
+[CanEditMultipleObjects]
+public class FractureEditor : Editor
+{
+ // Empty editor required for custom property drawers to work properly
+}
diff --git a/Assets/Scripts/Gameplay/Fracture/Editor/FractureEditor.cs.meta b/Assets/Scripts/Gameplay/Fracture/Editor/FractureEditor.cs.meta
new file mode 100644
index 0000000..afc0768
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Editor/FractureEditor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 69f5d525b9339e54d97390fa221d2097
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Gameplay/Fracture/Editor/FractureOptionsPropertyDrawer.cs b/Assets/Scripts/Gameplay/Fracture/Editor/FractureOptionsPropertyDrawer.cs
new file mode 100644
index 0000000..7ac455e
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Editor/FractureOptionsPropertyDrawer.cs
@@ -0,0 +1,38 @@
+using UnityEditor;
+using UnityEngine;
+
+// IngredientDrawerUIE
+[CustomPropertyDrawer(typeof(FractureOptions))]
+public class FractureOptionsPropertyDrawer : PropertyDrawer
+{
+ private static bool foldout = true;
+
+ // Draw the property inside the given rect
+ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
+ {
+ EditorGUI.indentLevel = 0;
+ foldout = EditorGUILayout.BeginFoldoutHeaderGroup(foldout, label);
+
+ if (foldout)
+ {
+ EditorGUI.indentLevel = 1;
+
+ EditorGUILayout.PropertyField(property.FindPropertyRelative("fragmentCount"));
+ EditorGUILayout.PropertyField(property.FindPropertyRelative("asynchronous"));
+ EditorGUILayout.PropertyField(property.FindPropertyRelative("detectFloatingFragments"));
+ EditorGUILayout.PropertyField(property.FindPropertyRelative("xAxis"), new GUIContent("Fracture Along X Plane"));
+ EditorGUILayout.PropertyField(property.FindPropertyRelative("yAxis"), new GUIContent("Fracture Along Y Plane"));
+ EditorGUILayout.PropertyField(property.FindPropertyRelative("zAxis"), new GUIContent("Fracture Along Z Plane"));
+ EditorGUILayout.PropertyField(property.FindPropertyRelative("insideMaterial"));
+ EditorGUILayout.PropertyField(property.FindPropertyRelative("textureScale"));
+ EditorGUILayout.PropertyField(property.FindPropertyRelative("textureOffset"));
+ }
+
+ EditorGUILayout.EndFoldoutHeaderGroup();
+ EditorGUI.indentLevel = 0;
+ }
+
+ // Hack to prevent extra space at top of property drawer. This is due to using EditorGUILayout
+ // in OnGUI, but I don't want to have to manually specify control sizes
+ public override float GetPropertyHeight(SerializedProperty property, GUIContent label) { return 0; }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/Fracture/Editor/FractureOptionsPropertyDrawer.cs.meta b/Assets/Scripts/Gameplay/Fracture/Editor/FractureOptionsPropertyDrawer.cs.meta
new file mode 100644
index 0000000..f72638c
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Editor/FractureOptionsPropertyDrawer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6dc10c5bce663b74da7236629b70b065
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Gameplay/Fracture/Editor/OpenFracture.Editor.asmdef b/Assets/Scripts/Gameplay/Fracture/Editor/OpenFracture.Editor.asmdef
new file mode 100644
index 0000000..9d7b8bf
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Editor/OpenFracture.Editor.asmdef
@@ -0,0 +1,18 @@
+{
+ "name": "OpenFracture.Editor",
+ "rootNamespace": "",
+ "references": [
+ "GUID:7b1a8d9f4355a214f9a95471fa510c86"
+ ],
+ "includePlatforms": [
+ "Editor"
+ ],
+ "excludePlatforms": [],
+ "allowUnsafeCode": false,
+ "overrideReferences": false,
+ "precompiledReferences": [],
+ "autoReferenced": true,
+ "defineConstraints": [],
+ "versionDefines": [],
+ "noEngineReferences": false
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/Fracture/Editor/OpenFracture.Editor.asmdef.meta b/Assets/Scripts/Gameplay/Fracture/Editor/OpenFracture.Editor.asmdef.meta
new file mode 100644
index 0000000..1bf3df1
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Editor/OpenFracture.Editor.asmdef.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 948c819856827144ba8a7bba3f8946df
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Gameplay/Fracture/Editor/PrefractureEditor.cs b/Assets/Scripts/Gameplay/Fracture/Editor/PrefractureEditor.cs
new file mode 100644
index 0000000..fd075c8
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Editor/PrefractureEditor.cs
@@ -0,0 +1,8 @@
+using UnityEditor;
+
+[CustomEditor(typeof(Prefracture))]
+[CanEditMultipleObjects]
+public class PrefractureEditor : Editor
+{
+ // Empty editor required for custom property drawers to work properly
+}
diff --git a/Assets/Scripts/Gameplay/Fracture/Editor/PrefractureEditor.cs.meta b/Assets/Scripts/Gameplay/Fracture/Editor/PrefractureEditor.cs.meta
new file mode 100644
index 0000000..fd10a2d
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Editor/PrefractureEditor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b13c64051dd526c4f8906d68712e987b
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Gameplay/Fracture/Editor/PrefractureOptionsPropertyDrawer.cs b/Assets/Scripts/Gameplay/Fracture/Editor/PrefractureOptionsPropertyDrawer.cs
new file mode 100644
index 0000000..e4c7664
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Editor/PrefractureOptionsPropertyDrawer.cs
@@ -0,0 +1,63 @@
+using UnityEditor;
+using UnityEngine;
+
+[CustomPropertyDrawer(typeof(PrefractureOptions))]
+public class PrefractureOptionsPropertyDrawer : PropertyDrawer
+{
+ private static bool foldout = true;
+
+ // Draw the property inside the given rect
+ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
+ {
+ var unfreezeAll = property.FindPropertyRelative("unfreezeAll");
+ var saveFragmentsToDisk = property.FindPropertyRelative("saveFragmentsToDisk");
+ var saveLocation = property.FindPropertyRelative("saveLocation");
+
+ EditorGUI.indentLevel = 0;
+ foldout = EditorGUILayout.BeginFoldoutHeaderGroup(foldout, label);
+
+ if (foldout)
+ {
+ EditorGUI.indentLevel = 1;
+
+ EditorGUILayout.PropertyField(unfreezeAll, new GUIContent("Unfreeze All"));
+ EditorGUILayout.PropertyField(saveFragmentsToDisk, new GUIContent("Save Fragments To Disk"));
+
+ EditorGUILayout.BeginHorizontal();
+ EditorGUILayout.PropertyField(saveLocation, new GUIContent("Save Location"));
+
+ if (GUILayout.Button(" . . . ", GUILayout.ExpandWidth(false)))
+ {
+ string path = EditorUtility.OpenFolderPanel("Select Save Location", "", "");
+ if (path.StartsWith(Application.dataPath))
+ {
+ saveLocation.stringValue = "Assets" + path.Substring(Application.dataPath.Length);
+ saveLocation.serializedObject.ApplyModifiedProperties();
+ }
+ else
+ {
+ throw new System.ArgumentException("Full path does not contain the current project's Assets folder", "absolutePath");
+ }
+ }
+ EditorGUILayout.EndHorizontal();
+
+ GUILayout.Space(4);
+ EditorGUILayout.BeginHorizontal();
+ GUILayout.Space(16);
+ if (GUILayout.Button("Prefracture Mesh", new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.Height(32) }))
+ {
+ ((Prefracture)property.serializedObject.targetObject).ComputeFracture();
+ }
+ GUILayout.Space(16);
+ EditorGUILayout.EndHorizontal();
+ GUILayout.Space(4);
+ }
+
+ EditorGUILayout.EndFoldoutHeaderGroup();
+ EditorGUI.indentLevel = 0;
+ }
+
+ // Hack to prevent extra space at top of property drawer. This is due to using EditorGUILayout
+ // in OnGUI, but I don't want to have to manually specify control sizes
+ public override float GetPropertyHeight(SerializedProperty property, GUIContent label) { return 0; }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/Fracture/Editor/PrefractureOptionsPropertyDrawer.cs.meta b/Assets/Scripts/Gameplay/Fracture/Editor/PrefractureOptionsPropertyDrawer.cs.meta
new file mode 100644
index 0000000..14e6e33
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Editor/PrefractureOptionsPropertyDrawer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d08b34658d6e1ea4d83a8079e48bb270
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Gameplay/Fracture/Editor/RefractureOptionsPropertyDrawer.cs b/Assets/Scripts/Gameplay/Fracture/Editor/RefractureOptionsPropertyDrawer.cs
new file mode 100644
index 0000000..02ccff2
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Editor/RefractureOptionsPropertyDrawer.cs
@@ -0,0 +1,35 @@
+using UnityEditor;
+using UnityEngine;
+
+// IngredientDrawerUIE
+[CustomPropertyDrawer(typeof(RefractureOptions))]
+public class RefractureOptionsPropertyDrawer : PropertyDrawer
+{
+ private static bool foldout = true;
+
+ // Draw the property inside the given rect
+ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
+ {
+ var enableRefracturing = property.FindPropertyRelative("enableRefracturing");
+ var maxRefractureCount = property.FindPropertyRelative("maxRefractureCount");
+ var invokeCallbacks = property.FindPropertyRelative("invokeCallbacks");
+
+ EditorGUI.indentLevel = 0;
+ foldout = EditorGUILayout.BeginFoldoutHeaderGroup(foldout, label);
+
+ if (foldout)
+ {
+ EditorGUI.indentLevel = 1;
+ EditorGUILayout.PropertyField(enableRefracturing, new GUIContent("Enabled"));
+ EditorGUILayout.PropertyField(invokeCallbacks, new GUIContent("Invoke Callbacks"));
+ EditorGUILayout.PropertyField(maxRefractureCount, new GUIContent("Max # of Refractures"));
+ }
+
+ EditorGUILayout.EndFoldoutHeaderGroup();
+ EditorGUI.indentLevel = 0;
+ }
+
+ // Hack to prevent extra space at top of property drawer. This is due to using EditorGUILayout
+ // in OnGUI, but I don't want to have to manually specify control sizes
+ public override float GetPropertyHeight(SerializedProperty property, GUIContent label) { return 0; }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/Fracture/Editor/RefractureOptionsPropertyDrawer.cs.meta b/Assets/Scripts/Gameplay/Fracture/Editor/RefractureOptionsPropertyDrawer.cs.meta
new file mode 100644
index 0000000..20d67ee
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Editor/RefractureOptionsPropertyDrawer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5d99dbaf6b5735b4c9af0896040ac65b
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Gameplay/Fracture/Editor/SliceEditor.cs b/Assets/Scripts/Gameplay/Fracture/Editor/SliceEditor.cs
new file mode 100644
index 0000000..381d3af
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Editor/SliceEditor.cs
@@ -0,0 +1,8 @@
+using UnityEditor;
+
+[CustomEditor(typeof(Slice))]
+[CanEditMultipleObjects]
+public class SliceEditor : Editor
+{
+ // Empty editor required for custom property drawers to work properly
+}
diff --git a/Assets/Scripts/Gameplay/Fracture/Editor/SliceEditor.cs.meta b/Assets/Scripts/Gameplay/Fracture/Editor/SliceEditor.cs.meta
new file mode 100644
index 0000000..f8bdd5f
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Editor/SliceEditor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f692bceb73d91e24681b607ab09f2ee6
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Gameplay/Fracture/Editor/TriggerOptionsPropertyDrawer.cs b/Assets/Scripts/Gameplay/Fracture/Editor/TriggerOptionsPropertyDrawer.cs
new file mode 100644
index 0000000..444e78f
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Editor/TriggerOptionsPropertyDrawer.cs
@@ -0,0 +1,57 @@
+using UnityEditor;
+using UnityEngine;
+
+// IngredientDrawerUIE
+[CustomPropertyDrawer(typeof(TriggerOptions))]
+public class TriggerOptionsPropertyDrawer : PropertyDrawer
+{
+ private static bool foldout = true;
+
+ // Draw the property inside the given rect
+ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
+ {
+ // Create property container element.
+ var minimumCollisionForce = property.FindPropertyRelative("minimumCollisionForce");
+ var triggerType = property.FindPropertyRelative("triggerType");
+ var triggerKey = property.FindPropertyRelative("triggerKey");
+ var filterCollisionsByTag = property.FindPropertyRelative("filterCollisionsByTag");
+ var triggerAllowedTags = property.FindPropertyRelative("triggerAllowedTags");
+
+ EditorGUI.indentLevel = 0;
+ foldout = EditorGUILayout.BeginFoldoutHeaderGroup(foldout, label);
+
+ if (foldout)
+ {
+ EditorGUI.indentLevel = 1;
+ EditorGUILayout.PropertyField(triggerType);
+
+ switch (triggerType.enumValueIndex)
+ {
+ case ((int)TriggerType.Collision):
+ EditorGUILayout.PropertyField(minimumCollisionForce);
+ EditorGUILayout.PropertyField(filterCollisionsByTag, new GUIContent("Limit collisions to selected tags?"));
+ if (filterCollisionsByTag.boolValue)
+ {
+ EditorGUILayout.EndFoldoutHeaderGroup();
+ EditorGUILayout.PropertyField(triggerAllowedTags, new GUIContent("Included Tags"));
+ }
+ break;
+ case ((int)TriggerType.Trigger):
+ EditorGUILayout.PropertyField(filterCollisionsByTag);
+ EditorGUILayout.EndFoldoutHeaderGroup();
+ EditorGUILayout.PropertyField(triggerAllowedTags);
+ break;
+ case ((int)TriggerType.Keyboard):
+ EditorGUILayout.PropertyField(triggerKey);
+ break;
+ }
+ }
+
+ EditorGUILayout.EndFoldoutHeaderGroup();
+ EditorGUI.indentLevel = 0;
+ }
+
+ // Hack to prevent extra space at top of property drawer. This is due to using EditorGUILayout
+ // in OnGUI, but I don't want to have to manually specify control sizes
+ public override float GetPropertyHeight(SerializedProperty property, GUIContent label) { return 0; }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Gameplay/Fracture/Editor/TriggerOptionsPropertyDrawer.cs.meta b/Assets/Scripts/Gameplay/Fracture/Editor/TriggerOptionsPropertyDrawer.cs.meta
new file mode 100644
index 0000000..b1e06cb
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Editor/TriggerOptionsPropertyDrawer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2e2055e9f36d75c4e9cf52e3380fa95b
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Gameplay/Fracture/Editor/UnfreezeFragmentEditor.cs b/Assets/Scripts/Gameplay/Fracture/Editor/UnfreezeFragmentEditor.cs
new file mode 100644
index 0000000..5ad7dc4
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Editor/UnfreezeFragmentEditor.cs
@@ -0,0 +1,8 @@
+using UnityEditor;
+
+[CustomEditor(typeof(UnfreezeFragment))]
+[CanEditMultipleObjects]
+public class UnfreezeFragmentEditor : Editor
+{
+ // Empty editor required for custom property drawers to work properly
+}
diff --git a/Assets/Scripts/Gameplay/Fracture/Editor/UnfreezeFragmentEditor.cs.meta b/Assets/Scripts/Gameplay/Fracture/Editor/UnfreezeFragmentEditor.cs.meta
new file mode 100644
index 0000000..ed8b945
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Editor/UnfreezeFragmentEditor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: acbae3f2ee815e34c8322878fe2df558
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Gameplay/Fracture/Runtime.meta b/Assets/Scripts/Gameplay/Fracture/Runtime.meta
new file mode 100644
index 0000000..f8bd8e2
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Runtime.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2690d5679e5dc50469ccc1ce019094be
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Gameplay/Fracture/Runtime/Audio.meta b/Assets/Scripts/Gameplay/Fracture/Runtime/Audio.meta
new file mode 100644
index 0000000..506f140
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Runtime/Audio.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 74d35284bc1d52a41b7220d8151cda46
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Gameplay/Fracture/Runtime/Audio/AudioMixer.mixer b/Assets/Scripts/Gameplay/Fracture/Runtime/Audio/AudioMixer.mixer
new file mode 100644
index 0000000..5bcd307
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Runtime/Audio/AudioMixer.mixer
@@ -0,0 +1,65 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!241 &24100000
+AudioMixerController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: AudioMixer
+ m_OutputGroup: {fileID: 0}
+ m_MasterGroup: {fileID: 24300002}
+ m_Snapshots:
+ - {fileID: 24500006}
+ m_StartSnapshot: {fileID: 24500006}
+ m_SuspendThreshold: -80
+ m_EnableSuspend: 1
+ m_UpdateMode: 0
+ m_ExposedParameters: []
+ m_AudioMixerGroupViews: []
+ m_CurrentViewIndex: 0
+ m_TargetSnapshot: {fileID: 24500006}
+--- !u!243 &24300002
+AudioMixerGroupController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Master
+ m_AudioMixer: {fileID: 24100000}
+ m_GroupID: b03a4a433743a1e4d97e201160f02a05
+ m_Children: []
+ m_Volume: 48d82f53e0dfb594bbda36fa1ca57359
+ m_Pitch: f1c1eed7160108a4d87e38efebf8b26b
+ m_Send: 00000000000000000000000000000000
+ m_Effects:
+ - {fileID: 24400004}
+ m_UserColorIndex: 0
+ m_Mute: 0
+ m_Solo: 0
+ m_BypassEffects: 0
+--- !u!244 &24400004
+AudioMixerEffectController:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_EffectID: 52f6edff12c88324297aee83688952d8
+ m_EffectName: Attenuation
+ m_MixLevel: 98af7356ff32408429c800bcb435171d
+ m_Parameters: []
+ m_SendTarget: {fileID: 0}
+ m_EnableWetMix: 0
+ m_Bypass: 0
+--- !u!245 &24500006
+AudioMixerSnapshotController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Snapshot
+ m_AudioMixer: {fileID: 24100000}
+ m_SnapshotID: fba0b3d55d166094abc6f120475969df
+ m_FloatValues: {}
+ m_TransitionOverrides: {}
diff --git a/Assets/Scripts/Gameplay/Fracture/Runtime/Audio/AudioMixer.mixer.meta b/Assets/Scripts/Gameplay/Fracture/Runtime/Audio/AudioMixer.mixer.meta
new file mode 100644
index 0000000..f72d3f5
--- /dev/null
+++ b/Assets/Scripts/Gameplay/Fracture/Runtime/Audio/AudioMixer.mixer.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3369d0f8fe8bcb54daee528b26ee74b9
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 24100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Gameplay/Fracture/Runtime/Audio/GlassBreaking.mp3 b/Assets/Scripts/Gameplay/Fracture/Runtime/Audio/GlassBreaking.mp3
new file mode 100644
index 0000000000000000000000000000000000000000..af786c0ceb2b151a815e55b9d1cdd0d1d97ab1c3
GIT binary patch
literal 87057
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
ZbRJMqH3H~-@9ST6B=BVtH7W?XA8Kl
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