From d400b7a44471e02bcc91842854794ac0a2998924 Mon Sep 17 00:00:00 2001 From: Alexey Voronov Date: Sun, 9 Jun 2019 01:06:11 +0300 Subject: [PATCH] add figure method + drag --- Prism Refraction.xcodeproj/project.pbxproj | 8 +- .../UserInterfaceState.xcuserstate | Bin 38853 -> 39700 bytes Prism Refraction/ViewController.swift | 74 +++++++++++++----- 3 files changed, 59 insertions(+), 23 deletions(-) diff --git a/Prism Refraction.xcodeproj/project.pbxproj b/Prism Refraction.xcodeproj/project.pbxproj index b175fd5..ed78707 100644 --- a/Prism Refraction.xcodeproj/project.pbxproj +++ b/Prism Refraction.xcodeproj/project.pbxproj @@ -283,14 +283,14 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = N8VX7T6P4D; + DEVELOPMENT_TEAM = M3WBMTG67K; INFOPLIST_FILE = "Prism Refraction/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.rugyron.Prism-Refraction"; + PRODUCT_BUNDLE_IDENTIFIER = "com.rugyron.Prism-Refraction2"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -302,14 +302,14 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = N8VX7T6P4D; + DEVELOPMENT_TEAM = M3WBMTG67K; INFOPLIST_FILE = "Prism Refraction/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.rugyron.Prism-Refraction"; + PRODUCT_BUNDLE_IDENTIFIER = "com.rugyron.Prism-Refraction2"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; diff --git a/Prism Refraction.xcodeproj/project.xcworkspace/xcuserdata/alexeyvoronov.xcuserdatad/UserInterfaceState.xcuserstate b/Prism Refraction.xcodeproj/project.xcworkspace/xcuserdata/alexeyvoronov.xcuserdatad/UserInterfaceState.xcuserstate index 777b0689d6b6139217127873659e29e4e794398e..980479d6edde5aa40dfea9c8048528c579b3f401 100644 GIT binary patch delta 18651 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 SKNode { let yourline = SKShapeNode() let pathToDraw = CGMutablePath() pathToDraw.move(to: a) @@ -72,7 +87,7 @@ class ViewController: UIViewController, SKViewDelegate, SKSceneDelegate { yourline.glowWidth = 1.0 yourline.physicsBody = SKPhysicsBody(edgeFrom: a, to: b) yourline.physicsBody?.isDynamic = false - scene.addChild(yourline) + return yourline } func addLine(a: CGPoint, b: CGPoint, hue: CGFloat) { @@ -148,7 +163,22 @@ class ViewController: UIViewController, SKViewDelegate, SKSceneDelegate { } } + override func touchesBegan(_ touches: Set, with event: UIEvent?) { + if let touch = touches.first { + let location = touch.location(in: self.scene) + + let touchedNodes = self.scene.nodes(at: location) + for node in touchedNodes.reversed() { + if node.name == "draggable" { + self.currentNode = node + } + } + } + } + override func touchesEnded(_ touches: Set, with event: UIEvent?) { + self.currentNode = nil + for touch in touches { if touch.hash == t1h { t1h = 0 @@ -161,6 +191,12 @@ class ViewController: UIViewController, SKViewDelegate, SKSceneDelegate { } override func touchesMoved(_ touches: Set, with event: UIEvent?) { + + if let touch = touches.first, let node = self.currentNode { + let touchLocation = touch.location(in: self.scene) + node.position = touchLocation + } + // state is needed to define if touch is 1 or 2 (2 = true) var state:Bool = false