From 7e46a7cf954ccdd98d49381e7971933b4d76b64c Mon Sep 17 00:00:00 2001 From: Felix Klenner Date: Fri, 17 Nov 2023 16:09:21 +0100 Subject: [PATCH] first implementation --- .gitignore | 1 + Assets/CableJointsAlgorithm.cs | 92 +++ Assets/CableJointsAlgorithm.cs.meta | 3 + Assets/Controller.cs | 113 +++- Assets/Extensions.cs | 23 + Assets/Extensions.cs.meta | 11 + Assets/Resources.meta | 8 + Assets/Resources/Fixed.png | 3 + Assets/Resources/Fixed.png.meta | 137 ++++ Assets/Resources/Free.png | 3 + Assets/Resources/Free.png.meta | 137 ++++ Assets/Resources/Powered.png | 3 + Assets/Resources/Powered.png.meta | 137 ++++ Assets/Resources/Rotatable.png | 3 + Assets/Resources/Rotatable.png.meta | 137 ++++ Assets/Resources/Textures.kra | Bin 0 -> 48988 bytes .../Textures.kra.meta} | 2 +- Assets/RollerProperties.cs | 52 +- Assets/Scenes/SampleScene.unity | 208 ------ Assets/Scenes/SimpleDemo.unity | 640 ++++++++++++++++++ Assets/Scenes/SimpleDemo.unity.meta | 7 + Assets/TextMesh Pro.meta | 8 + ProjectSettings/SceneTemplateSettings.json | 121 ++++ 23 files changed, 1618 insertions(+), 231 deletions(-) create mode 100644 Assets/CableJointsAlgorithm.cs create mode 100644 Assets/CableJointsAlgorithm.cs.meta create mode 100644 Assets/Extensions.cs create mode 100644 Assets/Extensions.cs.meta create mode 100644 Assets/Resources.meta create mode 100644 Assets/Resources/Fixed.png create mode 100644 Assets/Resources/Fixed.png.meta create mode 100644 Assets/Resources/Free.png create mode 100644 Assets/Resources/Free.png.meta create mode 100644 Assets/Resources/Powered.png create mode 100644 Assets/Resources/Powered.png.meta create mode 100644 Assets/Resources/Rotatable.png create mode 100644 Assets/Resources/Rotatable.png.meta create mode 100644 Assets/Resources/Textures.kra rename Assets/{Scenes/SampleScene.unity.meta => Resources/Textures.kra.meta} (74%) delete mode 100644 Assets/Scenes/SampleScene.unity create mode 100644 Assets/Scenes/SimpleDemo.unity create mode 100644 Assets/Scenes/SimpleDemo.unity.meta create mode 100644 Assets/TextMesh Pro.meta create mode 100644 ProjectSettings/SceneTemplateSettings.json diff --git a/.gitignore b/.gitignore index 58cbc82..76eb5cb 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,4 @@ crashlytics-build.properties # Temporary auto-generated Android Assets /[Aa]ssets/[Ss]treamingAssets/aa.meta /[Aa]ssets/[Ss]treamingAssets/aa/* +/Assets/TextMesh Pro \ No newline at end of file diff --git a/Assets/CableJointsAlgorithm.cs b/Assets/CableJointsAlgorithm.cs new file mode 100644 index 0000000..6c3c3df --- /dev/null +++ b/Assets/CableJointsAlgorithm.cs @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using static System.Math; + +public static class CableJointsAlgorithm { + public static void TimeStep(List cables) { + //handle each cable individually + foreach (var cable in cables) { + //calculate new attachment points for all joints + for(var go = cable.firstRoller; go != null; go = go.GetComponent().linkTo) { + if (go.GetComponent().linkTo != null) { + var dist = go.GetComponent(); + var rp = go.GetComponent(); + var (left, right) = TangentCircleCircle(go, rp.linkTo); + + //TODO: assumes circles are flat for sufficiently small timesteps + var leftSurfaceDist = + (go.transform.TransformPoint(dist.anchor) - go.transform.TransformPoint(left)).magnitude; + var rightSurfaceDist = (dist.attachedRigidbody.transform.TransformPoint(dist.connectedAnchor) - + dist.attachedRigidbody.transform.TransformPoint(right)).magnitude; + + Debug.Log(go.name+": left dist: "+leftSurfaceDist+" right Dist: "+rightSurfaceDist); + + dist.anchor = left; + dist.connectedAnchor = right; + } + } + } + } + + + public static (Vector2, Vector2) TangentCircleCircle(GameObject g1, GameObject g2) { + var roller1 = g1.GetComponent(); + var roller2 = g2.GetComponent(); + var t1 = g1.transform; + var t2 = g2.transform; + + //assume round rollers only + var r1 = t1.lossyScale.x/2; + var r2 = t2.lossyScale.x/2; + + Vector2 d = t2.Position2d() - t1.Position2d(); + float r = r1 + r2; + if (roller1.clockwise == roller2.clockwise) { + r = r2 - r1; + } + + var dLen = d.magnitude; + if (dLen > r) { + float alpha; + if (d.x >= 0) { + alpha = (float)Asin(d.y / dLen); + } + else { + alpha = (float)(PI - Asin(d.y / dLen)); + } + + float phi = (float)Asin(r / dLen); //TODO verify, paper says "|c|" + + float alpha1, alpha2; + if (roller1.clockwise == roller2.clockwise) { + if (roller1.clockwise) { + alpha1 = (float)(alpha - PI / 2 - phi); + alpha2 = (float)(alpha - PI / 2 + phi); + } + else { + alpha1 = (float)(alpha + PI / 2 + phi); + alpha2 = (float)(alpha + PI / 2 + phi); + } + } + else { + if (roller1.clockwise) { + alpha1 = (float)(alpha - PI / 2 + phi); + alpha2 = (float)(alpha + PI / 2 + phi); + } + else { + alpha1 = (float)(alpha + PI / 2 - phi); + alpha2 = (float)(alpha - PI / 2 - phi); + } + } + + var p1 = t1.Position2d() + r1 * new Vector2((float)Cos(alpha1), (float)Sin(alpha1)); + var p2 = t2.Position2d() + r2 * new Vector2((float)Cos(alpha2), (float)Sin(alpha2)); + + return (t1.InverseTransformPoint(p1), t2.InverseTransformPoint(p2)); + + } + + throw new Exception("Overlapping Rollers Error"); + } +} \ No newline at end of file diff --git a/Assets/CableJointsAlgorithm.cs.meta b/Assets/CableJointsAlgorithm.cs.meta new file mode 100644 index 0000000..ffdf032 --- /dev/null +++ b/Assets/CableJointsAlgorithm.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 091ab8204ddb43eabfb870958861ae96 +timeCreated: 1700149837 \ No newline at end of file diff --git a/Assets/Controller.cs b/Assets/Controller.cs index c1256b8..32f732b 100644 --- a/Assets/Controller.cs +++ b/Assets/Controller.cs @@ -1,27 +1,116 @@ using System.Collections; using System.Collections.Generic; +using NUnit.Framework; +using TMPro; +using Unity.Collections; +using Unity.VisualScripting; using UnityEditor; using UnityEngine; -using UnityEngine.SceneManagement; +using FontWeight = TMPro.FontWeight; -public class Controller : MonoBehaviour -{ - // Start is called before the first frame update - void Start() { - +public class Controller : MonoBehaviour { + private List cables = new(); + + //Initialize + void OnEnable() { + + var rotatableSprite = Resources.Load("Rotatable"); + var fixedSprite = Resources.Load("Fixed"); + var poweredSprite = Resources.Load("Powered"); + var freeSprite = Resources.Load("Free"); + + //prepare rollers var gameObjects = FindObjectsByType(FindObjectsInactive.Exclude, FindObjectsSortMode.None); foreach (GameObject go in gameObjects) { - if (go.GetComponent() != null) { - Debug.Log("Object: "+go.name); + RollerProperties rp = go.GetComponent(); + if (rp != null) { + Rigidbody2D settings = go.GetOrAddComponent(); - go.AddComponent(); + switch (rp.movement) { + case RollerProperties.RotationType.Rotatable: + go.GetComponent().sprite = rotatableSprite; + break; + case RollerProperties.RotationType.Fixed: + go.GetComponent().sprite = fixedSprite; + break; + case RollerProperties.RotationType.Free: + go.GetComponent().sprite = freeSprite; + break; + case RollerProperties.RotationType.Powered: + go.GetComponent().sprite = poweredSprite; + break; + } + + if (rp.movement == RollerProperties.RotationType.Fixed) { + settings.bodyType = RigidbodyType2D.Static; + } + + if (rp.start) { + cables.Add(new Cable { firstRoller = go }); + } + + Debug.Log("Initialized roller: " + go.name); } } + + //create canvas to display information + var canvas = FindAnyObjectByType(); + + //prepare joints + foreach (var go in gameObjects) { + RollerProperties rp = go.GetComponent(); + if (rp != null) { + if (rp.linkTo != null) { + var dist = go.AddComponent(); + dist.enableCollision = true; + dist.connectedBody = rp.linkTo.GetComponent(); + dist.maxDistanceOnly = true; + var (left, right) = CableJointsAlgorithm.TangentCircleCircle(go, rp.linkTo); + dist.anchor = left; + dist.connectedAnchor = right; + rp.currentDistance = dist.distance = dist.DistanceInWorld(left, right); + } + + if (rp.movement == RollerProperties.RotationType.Rotatable || + rp.movement == RollerProperties.RotationType.Powered) { + var wheel = go.AddComponent(); + wheel.anchor = Vector2.zero; + if (rp.movement == RollerProperties.RotationType.Powered) { + wheel.useMotor = true; + wheel.motor = new JointMotor2D() { maxMotorTorque = 10000, motorSpeed = 10 }; + } + } + + //create names on objects + GameObject text = new GameObject(go.name + "_text"); + text.transform.parent = canvas.transform; + + var textMeshPro = text.AddComponent(); + textMeshPro.text = go.name + "\n" + (rp.clockwise ? "cw" : "ccw") + " - " + rp.movement; + textMeshPro.fontSize = .3f; + textMeshPro.color = Color.red; + textMeshPro.fontWeight = FontWeight.Bold; + textMeshPro.outlineColor = Color.white; + textMeshPro.outlineWidth = 1; + textMeshPro.horizontalAlignment = HorizontalAlignmentOptions.Center; + textMeshPro.verticalAlignment = VerticalAlignmentOptions.Middle; + textMeshPro.transform.localScale = new Vector3(100, 100, 1); + textMeshPro.fontSize = .03f; + textMeshPro.autoSizeTextContainer = true; + textMeshPro.fontSizeMin = 0; + rp.text = text; + } + } + } + // Update is called once per frame - void Update() - { - + void Update() { + CableJointsAlgorithm.TimeStep(cables); } } + +public class Cable { + public GameObject firstRoller; +} \ No newline at end of file diff --git a/Assets/Extensions.cs b/Assets/Extensions.cs new file mode 100644 index 0000000..02106eb --- /dev/null +++ b/Assets/Extensions.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public static class Extensions +{ + public static ComponentA GetOrAddComponent(this GameObject gameObject) + where ComponentA : Component { + + ComponentA result = gameObject.GetComponent(); + return result == null ? gameObject.AddComponent() : result; + } + + public static Vector2 Position2d(this Transform t) { + Vector3 pos = t.position; + return new Vector2(pos.x, pos.y); + } + + public static float DistanceInWorld(this DistanceJoint2D dist, Vector2 pointInSelf, Vector2 pointInConnected) { + return (dist.transform.TransformPoint(dist.anchor) - + dist.connectedBody.transform.TransformPoint(pointInConnected)).magnitude; + } +} diff --git a/Assets/Extensions.cs.meta b/Assets/Extensions.cs.meta new file mode 100644 index 0000000..8b54ea9 --- /dev/null +++ b/Assets/Extensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c54014bcffbab84429b5399321b05316 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources.meta b/Assets/Resources.meta new file mode 100644 index 0000000..c55818a --- /dev/null +++ b/Assets/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 87f25c637d7f6f648a6eb1f2efcdad53 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Fixed.png b/Assets/Resources/Fixed.png new file mode 100644 index 0000000..60c1fe1 --- /dev/null +++ b/Assets/Resources/Fixed.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe9c043be8a2829025fc802015eaca023a2874407a10abbea2ab9fb61957463e +size 21331 diff --git a/Assets/Resources/Fixed.png.meta b/Assets/Resources/Fixed.png.meta new file mode 100644 index 0000000..4aae6e4 --- /dev/null +++ b/Assets/Resources/Fixed.png.meta @@ -0,0 +1,137 @@ +fileFormatVersion: 2 +guid: e5f9c1ce5ef70f3489f6001e79bacd91 +TextureImporter: + internalIDToNameTable: + - first: + 213: -5630437566756149864 + second: Fixed_0 + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 256 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: Fixed_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 256 + height: 256 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 8952c774ddaacd1b0800000000000000 + internalID: -5630437566756149864 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: + Fixed_0: -5630437566756149864 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Free.png b/Assets/Resources/Free.png new file mode 100644 index 0000000..274dd66 --- /dev/null +++ b/Assets/Resources/Free.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe9c2d15a3c15eb8959b16dd676b5ed1f633c3889a0baee81d530c9bb9a63e56 +size 6083 diff --git a/Assets/Resources/Free.png.meta b/Assets/Resources/Free.png.meta new file mode 100644 index 0000000..e50d671 --- /dev/null +++ b/Assets/Resources/Free.png.meta @@ -0,0 +1,137 @@ +fileFormatVersion: 2 +guid: 494891b7ad6de454081812c8ab3d58d6 +TextureImporter: + internalIDToNameTable: + - first: + 213: 7102297422374941452 + second: Free_0 + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 256 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: Free_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 256 + height: 256 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: c03b4d540ed609260800000000000000 + internalID: 7102297422374941452 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: + Free_0: 7102297422374941452 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Powered.png b/Assets/Resources/Powered.png new file mode 100644 index 0000000..cef7659 --- /dev/null +++ b/Assets/Resources/Powered.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ddcd5ed31b41e27e9b8509eacc302ea4a14e733a09b7c3a720364530a880ab1 +size 8243 diff --git a/Assets/Resources/Powered.png.meta b/Assets/Resources/Powered.png.meta new file mode 100644 index 0000000..7abc0be --- /dev/null +++ b/Assets/Resources/Powered.png.meta @@ -0,0 +1,137 @@ +fileFormatVersion: 2 +guid: 98a2b03bd8dd66e4aae260721a9aedb5 +TextureImporter: + internalIDToNameTable: + - first: + 213: -651118493561739035 + second: Powered_0 + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 256 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: Powered_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 256 + height: 256 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 5e8a09c0e23c6f6f0800000000000000 + internalID: -651118493561739035 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: + Powered_0: -651118493561739035 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Rotatable.png b/Assets/Resources/Rotatable.png new file mode 100644 index 0000000..49694e0 --- /dev/null +++ b/Assets/Resources/Rotatable.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90263a5967b34c8f4b8cdad45692fcc41ac5135573a335cb3e5531f3cf7ff699 +size 8749 diff --git a/Assets/Resources/Rotatable.png.meta b/Assets/Resources/Rotatable.png.meta new file mode 100644 index 0000000..b9d0df1 --- /dev/null +++ b/Assets/Resources/Rotatable.png.meta @@ -0,0 +1,137 @@ +fileFormatVersion: 2 +guid: 5f24f6fb8ae0e9c47853ecd478cb6990 +TextureImporter: + internalIDToNameTable: + - first: + 213: 1979343656999651553 + second: Roller_0 + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 256 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: Roller_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 256 + height: 256 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 1e803eba19a087b10800000000000000 + internalID: 1979343656999651553 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: + Roller_0: 1979343656999651553 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Textures.kra b/Assets/Resources/Textures.kra new file mode 100644 index 0000000000000000000000000000000000000000..c0aeb951edfc3a7c82ac836e9610e0aff8dc13f4 GIT binary patch literal 48988 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 A_W%F@ literal 0 HcmV?d00001 diff --git a/Assets/Scenes/SampleScene.unity.meta b/Assets/Resources/Textures.kra.meta similarity index 74% rename from Assets/Scenes/SampleScene.unity.meta rename to Assets/Resources/Textures.kra.meta index c1e3c88..4c5f31f 100644 --- a/Assets/Scenes/SampleScene.unity.meta +++ b/Assets/Resources/Textures.kra.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2cda990e2423bbf4892e6590ba056729 +guid: af13a4aad11a6794a89698ce12bb39be DefaultImporter: externalObjects: {} userData: diff --git a/Assets/RollerProperties.cs b/Assets/RollerProperties.cs index 8258d98..ce7cb36 100644 --- a/Assets/RollerProperties.cs +++ b/Assets/RollerProperties.cs @@ -1,19 +1,51 @@ +using System; using System.Collections; using System.Collections.Generic; +using NUnit.Framework.Internal; +using TMPro; +using UnityEditor; using UnityEngine; +using UnityEngine.Serialization; +[System.Serializable] public class RollerProperties : MonoBehaviour { - public bool Direction { get; set; } = false; - - // Start is called before the first frame update - void Start() - { - + [SerializeField] public bool start = false; + + [SerializeField] public bool clockwise = false; + + [SerializeField] public GameObject linkTo = null; + + [SerializeField] public RotationType movement = RotationType.Fixed; + + protected internal float currentDistance; + + protected internal GameObject text; + + private void Update() { + if (text != null) { + text.transform.position = transform.position; + text.transform.rotation = transform.rotation; + } } // Update is called once per frame - void Update() - { - + void OnDrawGizmos() { + foreach (var distanceJoint in gameObject.GetComponents()) { + Gizmos.color = new Color(1, .3f, 0); + var cableStart = transform.TransformPoint(distanceJoint.anchor); + var cableEnd = distanceJoint.connectedBody.transform.TransformPoint(distanceJoint.connectedAnchor); + Gizmos.DrawLine(cableStart, cableEnd); + Gizmos.color = Color.yellow; + Gizmos.DrawCube(cableStart, new Vector3(0.1f, 0.1f, 0.1f)); + Gizmos.color = Color.red; + Gizmos.DrawCube(cableEnd, new Vector3(0.1f, 0.1f, 0.1f)); + } } -} + + public enum RotationType { + Fixed, + Rotatable, + Powered, + Free + } +} \ No newline at end of file diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity deleted file mode 100644 index 9421266..0000000 --- a/Assets/Scenes/SampleScene.unity +++ /dev/null @@ -1,208 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 3 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 12 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 0 - m_EnableRealtimeLightmaps: 0 - m_LightmapEditorSettings: - serializedVersion: 12 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_ExtractAmbientOcclusion: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVREnvironmentSampleCount: 500 - m_PVREnvironmentReferencePointCount: 2048 - m_PVRFilteringMode: 2 - m_PVRDenoiserTypeDirect: 0 - m_PVRDenoiserTypeIndirect: 0 - m_PVRDenoiserTypeAO: 0 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVREnvironmentMIS: 0 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ExportTrainingData: 0 - m_TrainingDataDestination: TrainingData - m_LightProbeSampleCountMultiplier: 4 - m_LightingDataAsset: {fileID: 0} - m_LightingSettings: {fileID: 0} ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - maxJobWorkers: 0 - preserveTilesOutsideBounds: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &519420028 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 519420032} - - component: {fileID: 519420031} - - component: {fileID: 519420029} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &519420029 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 519420028} - m_Enabled: 1 ---- !u!20 &519420031 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 519420028} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 2 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 1 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 0 - m_HDR: 1 - m_AllowMSAA: 0 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 0 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &519420032 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 519420028} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -10} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Scenes/SimpleDemo.unity b/Assets/Scenes/SimpleDemo.unity new file mode 100644 index 0000000..d2634c8 --- /dev/null +++ b/Assets/Scenes/SimpleDemo.unity @@ -0,0 +1,640 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &197689340 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 197689344} + - component: {fileID: 197689343} + - component: {fileID: 197689342} + - component: {fileID: 197689341} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &197689341 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 197689340} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &197689342 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 197689340} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &197689343 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 197689340} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &197689344 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 197689340} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &1073098765 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1073098768} + - component: {fileID: 1073098767} + - component: {fileID: 1073098766} + m_Layer: 0 + m_Name: left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1073098766 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1073098765} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 371c00a70d1ac344fae68d1834928173, type: 3} + m_Name: + m_EditorClassIdentifier: + start: 1 + clockwise: 0 + linkTo: {fileID: 1983224135} + movement: 1 +--- !u!212 &1073098767 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1073098765} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &1073098768 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1073098765} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -9.72, y: -2.61, z: 0} + m_LocalScale: {x: 3, y: 3, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1200065142 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1200065145} + - component: {fileID: 1200065144} + - component: {fileID: 1200065143} + - component: {fileID: 1200065146} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1200065143 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1200065142} + m_Enabled: 1 +--- !u!20 &1200065144 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1200065142} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 8 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1200065145 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1200065142} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1200065146 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1200065142} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d406720d26e7d1e4ba8afd140d67de7e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1588024395 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1588024398} + - component: {fileID: 1588024397} + - component: {fileID: 1588024396} + m_Layer: 0 + m_Name: right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1588024396 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1588024395} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 371c00a70d1ac344fae68d1834928173, type: 3} + m_Name: + m_EditorClassIdentifier: + start: 0 + clockwise: 0 + linkTo: {fileID: 0} + movement: 2 +--- !u!212 &1588024397 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1588024395} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &1588024398 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1588024395} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 4.53, y: 0.98, z: 0} + m_LocalScale: {x: 2, y: 2, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1983224135 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1983224137} + - component: {fileID: 1983224136} + - component: {fileID: 1983224138} + m_Layer: 0 + m_Name: middle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!212 &1983224136 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1983224135} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -2413806693520163455, guid: ebe73ca9363db456bacf42c025bb4847, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &1983224137 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1983224135} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.31, y: 0.38, z: 0} + m_LocalScale: {x: 2, y: 2, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1983224138 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1983224135} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 371c00a70d1ac344fae68d1834928173, type: 3} + m_Name: + m_EditorClassIdentifier: + start: 0 + clockwise: 0 + linkTo: {fileID: 1588024395} + movement: 1 +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1200065145} + - {fileID: 197689344} + - {fileID: 1983224137} + - {fileID: 1588024398} + - {fileID: 1073098768} diff --git a/Assets/Scenes/SimpleDemo.unity.meta b/Assets/Scenes/SimpleDemo.unity.meta new file mode 100644 index 0000000..5124a04 --- /dev/null +++ b/Assets/Scenes/SimpleDemo.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 86aa0baefcb2d91449736f8fe647d314 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro.meta b/Assets/TextMesh Pro.meta new file mode 100644 index 0000000..f9da8b5 --- /dev/null +++ b/Assets/TextMesh Pro.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f54d1bd14bd3ca042bd867b519fee8cc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/SceneTemplateSettings.json b/ProjectSettings/SceneTemplateSettings.json new file mode 100644 index 0000000..5e97f83 --- /dev/null +++ b/ProjectSettings/SceneTemplateSettings.json @@ -0,0 +1,121 @@ +{ + "templatePinStates": [], + "dependencyTypeInfos": [ + { + "userAdded": false, + "type": "UnityEngine.AnimationClip", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.Animations.AnimatorController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.AnimatorOverrideController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.Audio.AudioMixerController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.ComputeShader", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Cubemap", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.GameObject", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.LightingDataAsset", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.LightingSettings", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Material", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.MonoScript", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicMaterial", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicsMaterial2D", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.VolumeProfile", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.SceneAsset", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Shader", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.ShaderVariantCollection", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Texture", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Texture2D", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Timeline.TimelineAsset", + "defaultInstantiationMode": 0 + } + ], + "defaultDependencyTypeInfo": { + "userAdded": false, + "type": "", + "defaultInstantiationMode": 1 + }, + "newSceneOverride": 0 +} \ No newline at end of file