From 809f90f3e8bb9bd44c9371b8f9997eb8cb340cf5 Mon Sep 17 00:00:00 2001 From: klemek Date: Wed, 23 Dec 2020 12:10:22 +0100 Subject: [PATCH] mux / demux SVG --- Assets/Scenes/Workspace.unity | 4 + Assets/Scripts/Utils.cs | 9 +- Assets/Scripts/Workspace/Anchor.cs | 2 +- Assets/Scripts/Workspace/GatePrefabFactory.cs | 11 +- .../Workspace/Gates/GateDefinitionList.cs | 32 ++--- Assets/Texts/gates.yaml | 58 ++++---- Assets/Textures/Gates/demux.png | Bin 0 -> 2664 bytes Assets/Textures/Gates/demux.png.meta | 130 ++++++++++++++++++ Assets/Textures/Gates/demux2.png | Bin 0 -> 4176 bytes Assets/Textures/Gates/demux2.png.meta | 130 ++++++++++++++++++ Assets/Textures/Gates/mux.png | Bin 0 -> 2639 bytes Assets/Textures/Gates/mux.png.meta | 130 ++++++++++++++++++ Assets/Textures/Gates/mux2.png | Bin 0 -> 4359 bytes Assets/Textures/Gates/mux2.png.meta | 130 ++++++++++++++++++ ProjectSettings/ProjectSettings.asset | 2 +- SVG/Gates/demux.svg | 44 ++++++ SVG/Gates/demux2.svg | 44 ++++++ SVG/Gates/mux.svg | 50 +++++++ SVG/Gates/mux2.svg | 50 +++++++ TODO.txt | 9 +- 20 files changed, 780 insertions(+), 55 deletions(-) create mode 100644 Assets/Textures/Gates/demux.png create mode 100755 Assets/Textures/Gates/demux.png.meta create mode 100644 Assets/Textures/Gates/demux2.png create mode 100755 Assets/Textures/Gates/demux2.png.meta create mode 100644 Assets/Textures/Gates/mux.png create mode 100755 Assets/Textures/Gates/mux.png.meta create mode 100644 Assets/Textures/Gates/mux2.png create mode 100755 Assets/Textures/Gates/mux2.png.meta create mode 100755 SVG/Gates/demux.svg create mode 100755 SVG/Gates/demux2.svg create mode 100755 SVG/Gates/mux.svg create mode 100755 SVG/Gates/mux2.svg diff --git a/Assets/Scenes/Workspace.unity b/Assets/Scenes/Workspace.unity index 928abcf..c4888bc 100755 --- a/Assets/Scenes/Workspace.unity +++ b/Assets/Scenes/Workspace.unity @@ -540,6 +540,10 @@ MonoBehaviour: - {fileID: 21300000, guid: 3aa2b0925144bb54193b25bf37dddf91, type: 3} - {fileID: 21300000, guid: 9ade58a4f17ab5a49bebda61d08ee88e, type: 3} - {fileID: 21300000, guid: b5f750949f494f64b8baf51ddce0cddc, type: 3} + - {fileID: 21300000, guid: fb9d75202bc34614386238db3fffc40f, type: 3} + - {fileID: 21300000, guid: fef17d5a676873948ba369ca15b6bd9b, type: 3} + - {fileID: 21300000, guid: d69b0f1133d01724bbdf18812cbed7bc, type: 3} + - {fileID: 21300000, guid: c0328b3c1f22daf458e6a053ee2a7fc7, type: 3} --- !u!4 &535412053 Transform: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Utils.cs b/Assets/Scripts/Utils.cs index 88a2f54..6ebd87b 100755 --- a/Assets/Scripts/Utils.cs +++ b/Assets/Scripts/Utils.cs @@ -61,13 +61,13 @@ namespace CompuLogic public static void SetSortingLayerRecursive(this UnityEngine.Component obj, string sortingLayer) { - if(obj.TryGetComponent(out var renderer)) + if(obj.TryGetComponent(out var renderer)) { renderer.SetSortingLayerRecursive(sortingLayer); } else { - foreach (var subrenderer in obj.GetComponentsInChildren()) + foreach (var subrenderer in obj.GetComponentsInChildren()) { subrenderer.SetSortingLayerRecursive(sortingLayer); } @@ -75,9 +75,10 @@ namespace CompuLogic } - public static void SetSortingLayerRecursive(this SpriteRenderer renderer, string sortingLayer) + public static void SetSortingLayerRecursive(this Renderer renderer, string sortingLayer) { - foreach (var subrenderer in renderer.GetComponentsInChildren()) + renderer.sortingLayerName = sortingLayer; + foreach (var subrenderer in renderer.GetComponentsInChildren()) { if(subrenderer != renderer) { diff --git a/Assets/Scripts/Workspace/Anchor.cs b/Assets/Scripts/Workspace/Anchor.cs index 58a8e29..739a3d2 100755 --- a/Assets/Scripts/Workspace/Anchor.cs +++ b/Assets/Scripts/Workspace/Anchor.cs @@ -48,7 +48,7 @@ namespace CompuLogic.Workspace { Text.text = Name; var rect = Text.GetComponent(); - var rotate = (Mathf.Abs(Orientation.y) > Mathf.Epsilon && Name.Length > 1); + var rotate = Mathf.Abs(Orientation.y) > Mathf.Epsilon && Name.Length > 1 && !Name.Contains("\x305"); rect.localRotation = rotate ? Quaternion.AngleAxis(90f, Vector3.forward) : Quaternion.identity; rect.localPosition = new Vector3(Orientation.x, Orientation.y, 0f) * -TextSpace; if (!rotate && Mathf.Abs(Orientation.y) > Mathf.Epsilon) diff --git a/Assets/Scripts/Workspace/GatePrefabFactory.cs b/Assets/Scripts/Workspace/GatePrefabFactory.cs index 0c87d31..cb7eb70 100755 --- a/Assets/Scripts/Workspace/GatePrefabFactory.cs +++ b/Assets/Scripts/Workspace/GatePrefabFactory.cs @@ -68,7 +68,7 @@ namespace CompuLogic.Workspace gate.UIName = string.IsNullOrEmpty(item.Name) ? gate.GateType.ToString() : item.Name; - var showAnchorNames = false; + var showAnchorNames = item.ShowNames; if (string.IsNullOrEmpty(item.Skin)) { @@ -91,7 +91,7 @@ namespace CompuLogic.Workspace var anchor = Instantiate(inputAnchor.Big ? _bigAnchorPrefab : _anchorPrefab); anchor.transform.parent = prefab.transform; inputAnchor.ConfigAnchor(anchor); - anchor.ShowName = showAnchorNames; + anchor.ShowName = showAnchorNames || inputAnchor.ShowName; anchor.IsInput = true; } } @@ -103,7 +103,7 @@ namespace CompuLogic.Workspace var anchor = Instantiate(outputAnchor.Big ? _bigAnchorPrefab : _anchorPrefab); anchor.transform.parent = prefab.transform; outputAnchor.ConfigAnchor(anchor); - anchor.ShowName = showAnchorNames; + anchor.ShowName = showAnchorNames || outputAnchor.ShowName; } } @@ -143,6 +143,7 @@ namespace CompuLogic.Workspace public int Width { get; set; } public int Height { get; set; } public string Class { get; set; } + public bool ShowNames { get; set; } public List Input { get; set; } public List Output { get; set; } public List InputAnchors => Input.Select(i => i.Split(new char[0])).Select(GateBookItemAnchor.Get).ToList(); @@ -157,6 +158,7 @@ namespace CompuLogic.Workspace public float Y { get; set; } public string Orientation { get; set; } public bool Big { get; set; } + public bool ShowName { get; set; } public Vector2 OrientationV => new Vector2( Orientation == "W" ? -1 : (Orientation == "E" ? 1 : 0), Orientation == "N" ? 1 : (Orientation == "S" ? -1 : 0) @@ -170,7 +172,8 @@ namespace CompuLogic.Workspace X = float.Parse(i[1], CultureInfo.InvariantCulture.NumberFormat), Y = float.Parse(i[2], CultureInfo.InvariantCulture.NumberFormat), Orientation = i[3], - Big = i.Length > 4 && i[4].Equals("big"), + Big = i.Contains("big"), + ShowName = i.Contains("named") }; } diff --git a/Assets/Scripts/Workspace/Gates/GateDefinitionList.cs b/Assets/Scripts/Workspace/Gates/GateDefinitionList.cs index d258add..dae83a8 100755 --- a/Assets/Scripts/Workspace/Gates/GateDefinitionList.cs +++ b/Assets/Scripts/Workspace/Gates/GateDefinitionList.cs @@ -331,17 +331,17 @@ namespace CompuLogic.Workspace.Gates internal class MuxGate : StatelessGateDefinition { - public override string[] Inputs { get; } = new string[] { "E", "S", "D0", "D1" }; + public override string[] Inputs { get; } = new string[] { "E̅", "S", "D0", "D1" }; public override string[] Outputs { get; } = new string[] { "Y" }; internal override Func Function => (input) => { - var e = input[0]; + var ne = input[0]; var s = input[1]; var d0 = input[2]; var d1 = input[3]; - var y = e && (!s && d0 || s && d1); + var y = !ne && (!s && d0 || s && d1); return new OutputState(y); }; @@ -349,17 +349,17 @@ namespace CompuLogic.Workspace.Gates internal class DemuxGate : StatelessGateDefinition { - public override string[] Inputs { get; } = new string[] { "E", "S", "D" }; + public override string[] Inputs { get; } = new string[] { "E̅", "S", "D" }; public override string[] Outputs { get; } = new string[] { "Y0", "Y1" }; internal override Func Function => (input) => { - var e = input[0]; + var ne = input[0]; var s = input[1]; var d = input[2]; - var y0 = e && !s && d; - var y1 = e && s && d; + var y0 = !ne && !s && d; + var y1 = !ne && s && d; return new OutputState(y0, y1); }; @@ -367,12 +367,12 @@ namespace CompuLogic.Workspace.Gates internal class Mux2bGate : StatelessGateDefinition { - public override string[] Inputs { get; } = new string[] { "E", "S0", "S1", "D0", "D1", "D2", "D3" }; + public override string[] Inputs { get; } = new string[] { "E̅", "S0", "S1", "D0", "D1", "D2", "D3" }; public override string[] Outputs { get; } = new string[] { "Y" }; internal override Func Function => (input) => { - var e = input[0]; + var ne = input[0]; var s0 = input[1]; var s1 = input[2]; var d0 = input[3]; @@ -380,7 +380,7 @@ namespace CompuLogic.Workspace.Gates var d2 = input[5]; var d3 = input[6]; - var y = e && ( + var y = ne && ( !s0 && !s1 && d0 || s0 && !s1 && d1 || !s0 && s1 && d2 || @@ -393,20 +393,20 @@ namespace CompuLogic.Workspace.Gates internal class Demux2bGate : StatelessGateDefinition { - public override string[] Inputs { get; } = new string[] { "E", "S0", "S1", "D" }; + public override string[] Inputs { get; } = new string[] { "E̅", "S0", "S1", "D" }; public override string[] Outputs { get; } = new string[] { "Y0", "Y1", "Y2", "Y3" }; internal override Func Function => (input) => { - var e = input[0]; + var ne = input[0]; var s0 = input[1]; var s1 = input[2]; var d = input[3]; - var y0 = e && !s0 && !s1 && d; - var y1 = e && s0 && !s1 && d; - var y2 = e && !s0 && s1 && d; - var y3 = e && s0 && s1 && d; + var y0 = !ne && !s0 && !s1 && d; + var y1 = !ne && s0 && !s1 && d; + var y2 = !ne && !s0 && s1 && d; + var y3 = !ne && s0 && s1 && d; return new OutputState(y0, y1, y2, y3); }; diff --git a/Assets/Texts/gates.yaml b/Assets/Texts/gates.yaml index ad6f8fd..7e2e938 100755 --- a/Assets/Texts/gates.yaml +++ b/Assets/Texts/gates.yaml @@ -244,54 +244,58 @@ list: - Cᴏ 4.5 5.5 E 600: name: Mux. - width: 7 - height: 7 + skin: mux + width: 3 + height: 5 input: - D0 0.5 1.5 W - D1 0.5 3.5 W - - E 2.5 6.5 S - - S 4.5 6.5 S + - E̅ 1.5 1.0 N + - S 1.5 4.0 S output: - - Y 6.5 2.5 E + - Y 2.5 2.5 E 610: name: Demux. - width: 7 - height: 7 + skin: demux + width: 3 + height: 5 input: - D 0.5 2.5 W - - E 2.5 6.5 S - - S 4.5 6.5 S + - E̅ 1.5 1.0 N + - S 1.5 4.0 S output: - - Y0 6.5 1.5 E - - Y1 6.5 3.5 E + - Y0 2.5 1.5 E + - Y1 2.5 3.5 E 620: name: 2bits Mux. - width: 7 - height: 7 + skin: mux2 + width: 4 + height: 6 input: - D0 0.5 1.5 W - D1 0.5 2.5 W - D2 0.5 3.5 W - D3 0.5 4.5 W - - E 2.5 6.5 S - - S0 3.5 6.5 S - - S1 4.5 6.5 S + - E̅ 1.5 1.0 N + - S0 1.5 5.0 S + - S1 2.5 4.5 S output: - - Y 6.5 3.5 E + - Y 3.5 3.0 E 630: name: 2bits Demux. - width: 7 - height: 7 + skin: demux2 + width: 4 + height: 6 input: - - D 0.5 3.5 W - - E 2.5 6.5 S - - S0 3.5 6.5 S - - S1 4.5 6.5 S + - D 0.5 3.0 W + - E̅ 2.5 1.0 S + - S0 1.5 4.5 S + - S1 2.5 5.0 S output: - - Y0 6.5 1.5 E - - Y1 6.5 2.5 E - - Y2 6.5 3.5 E - - Y3 6.5 4.5 E + - Y0 3.5 1.5 E + - Y1 3.5 2.5 E + - Y2 3.5 3.5 E + - Y3 3.5 4.5 E 640: name: 2b./4b. Enc. width: 5 diff --git a/Assets/Textures/Gates/demux.png b/Assets/Textures/Gates/demux.png new file mode 100644 index 0000000000000000000000000000000000000000..9bd23683410fc39675a421a3cc9ed5e7c1265b20 GIT binary patch literal 2664 zcmeHJ{Z|uL8cr~Qd=N;21c(R;5a`knK*)-&AcQXg1E~&npaBLfQoxUJ5acXiVHhJW z3R)ChD=txv%^BEqaEpQpIs-Xf7Y?#w02P7gx@!>&sHpXHWpDZy^oRYibIv^X-uHQ* z_kHg@ckbLHn$$!dN6ewoXuPB?aocD#x*WW(S@ytkn9pAi8hYurL>0|6;`sxO#_>st zi-9W6y?FFVs%Mf&|IeW>venxwS}$GCxbint7QA8 zHPy+r$q*gH`V|k~iod1NZoV|(Q9CUEnXaS#Jbcx#F)EuD+uMoX#OD^?2S6y(@oBGy zEegR(RWdmG(_r=~gr0T79}x3%K?b25ar+EQCTcESaRh|=I~KsNi#!5JyWe*u8X4S* z=EztXe5>QNjR?LQ26X50F%WRE^8^TZt2x1@oAKBH2q--PC`6}M2a;&KOrK03p|?Q> zc+e5xnW?Qdym!=w!^1Wl&LjRy`KK$+Yl zl^3t|_eV|7%y@fyc{P6jVgse7^oh}9ye?&rZA9Mb@;w=L3u3vjWrEo+n&39}BW?i2QRIGcp{F=fRr z_`F7WclLg6M#;*QR0aj`%4tIayfu81DUUUlk0Svgk%qZ;axappvSie)CHG@Rd|o+o zjE|GylOBUEc#Lv#?Vu1Rm6Osz0S-8JC>FT2u9aHE0-?G`6oCb5>(&nFup%L^oHxM7 zZ--BA*dG8j7ZH`u5{&*6vyR9CRd>C80sXoFH-|^Ke35DtS!Q>)c^ERabz$NMH!GcQ zb!c~3ywjHp(zD9WKb22ROq5kte&!ujWgHqBntsAhCN8sFQ(QV7RZJOt(IxPm9yyj| zoMod*kpV4Wjk{x<5eZz)cD+%9EK8w94%!`TK-cp-t68qQqlpK?z{%rCw-g$!LH48= z+oa?Jy@qsRJl}(H%KhMPeWB4>r0=LECJ`<3GN5$U_$!QK?*pf~1iBwbs?&@Jf-axZ z#MD^oWDx&z3&M6~WCp=1Cb@&%q9GZ(oB_t|;sL~VamRlLeF<3%ujB=Sz=#<+d94$l zdH#IODGk|v7wC!O_kdphQ4qW^_m`YYTvxfj40Mazf3`S_TKJtSJ1pu$*qkon-isG| z9!*Vw8O&dJODl+Y<2CC!ZG2{ZocF3}aa6sfVnBRWLmp&2KZSAL1i-<5&}b9Vnq+L- zOulCt&=S^o8q4))B5_axg(%2B`avQ6PeK0UJMV-1|H@E+`g`>srbjQTZ>GFkT$Dgt zcXlrbog$|$s_V)&B~+ajk6g|qK3FPgHKlA3KbEL*N120sxkQi9LmAw9DID!c+U2o+ zqkdbB|M%Y5*^BgjxzZn1{T|Bculga9v#4_GbBGw|GCTM6_nRI*eE5FR8k?1!eWiyP zexRi5r^Je9{*GYl`jZ<4im%w?6=&_A$MtOSgP+`&!2wjfkQCoB**GCdJhyuYu_&I30Z2`}!O6V3MrS{X-f(;Gp6>lW)P8S6@rSkcTkH}XB~I2n7HUpmxn;3M-%7RnrSOeIx~`AOJT7HcFdBl`ZfdqD zh~=hci9r8rq5O?RyIVy}HtUxB(RgRd+`$q>vfYAx;G@w!5e-PF(E2z7HP>Se0c?@4 zi=y8b_Tww?qCVur3mpG|<2O6z&gimoa=aH77Mh%$ofD@`q(@9C)orvdSan@svYqdf zt-7EKWJdIQO4(~)KzqcVXcy0W>80A{LZZ~YQK!B@nsQ;v)kHStR#2`uxmT*!9V#TY z*ZXRv;(1{ndtz2R&wtFGXcNynU6N|+3W=~YjXECCA(_-Kzp2+)N3;F)+I-f;h=3sNUq>+) zTTcuy7uy8@I!{ncU5fzNd?LXxFcS3qEA?E&r4r*J+k*y}qj3#7dU$t!53Rf_9>8*o zj=q2CEP&;&baY4SIRH;rn^wThM|!XWZ%SY8WpG(bdwOU-+GVd_adQJMHM$jt&vX4E R^EVT}2$JGc<4h_9{U7dR?IHjG literal 0 HcmV?d00001 diff --git a/Assets/Textures/Gates/demux.png.meta b/Assets/Textures/Gates/demux.png.meta new file mode 100755 index 0000000..ef76148 --- /dev/null +++ b/Assets/Textures/Gates/demux.png.meta @@ -0,0 +1,130 @@ +fileFormatVersion: 2 +guid: fb9d75202bc34614386238db3fffc40f +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 1 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 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 + - serializedVersion: 3 + buildTarget: Android + 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: WebGL + 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: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textures/Gates/demux2.png b/Assets/Textures/Gates/demux2.png new file mode 100644 index 0000000000000000000000000000000000000000..6fd5dfc0a7159c36e0e80508f39a6476e8487d4a GIT binary patch literal 4176 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 Y@J-?c_-$S4J4?SFh)s-XR%7^o0MB;wjQ{`u literal 0 HcmV?d00001 diff --git a/Assets/Textures/Gates/mux.png.meta b/Assets/Textures/Gates/mux.png.meta new file mode 100755 index 0000000..69db2d9 --- /dev/null +++ b/Assets/Textures/Gates/mux.png.meta @@ -0,0 +1,130 @@ +fileFormatVersion: 2 +guid: d69b0f1133d01724bbdf18812cbed7bc +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 1 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 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 + - serializedVersion: 3 + buildTarget: Android + 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: WebGL + 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: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textures/Gates/mux2.png b/Assets/Textures/Gates/mux2.png new file mode 100644 index 0000000000000000000000000000000000000000..58cc8820250b91f460359d26a3d8220b4642ce48 GIT binary patch literal 4359 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SVG/Gates/demux2.svg b/SVG/Gates/demux2.svg new file mode 100755 index 0000000..4552a19 --- /dev/null +++ b/SVG/Gates/demux2.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SVG/Gates/mux.svg b/SVG/Gates/mux.svg new file mode 100755 index 0000000..7b2dc41 --- /dev/null +++ b/SVG/Gates/mux.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SVG/Gates/mux2.svg b/SVG/Gates/mux2.svg new file mode 100755 index 0000000..73d45ed --- /dev/null +++ b/SVG/Gates/mux2.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TODO.txt b/TODO.txt index 5662a03..4ac6435 100755 --- a/TODO.txt +++ b/TODO.txt @@ -1,8 +1,13 @@ TODO --(1) mux/demux svg -(1) show current gate name when moving -(1) change fonts +-(1) light gray name on default gates -(3) cable overlap (same/diff circuit) -(5) cable management --(5) buses +-(?) anchor names tooltip +-(?) buses ? +-(?) Main Menu +-(?) Pause Menu +-(?) Tools +-(?) Levels