diff --git a/Assets/FurnitureMiniature.cs b/Assets/FurnitureMiniature.cs index 92aedeb..be4c75e 100755 --- a/Assets/FurnitureMiniature.cs +++ b/Assets/FurnitureMiniature.cs @@ -1,8 +1,8 @@ using UnityEngine; using System.Collections; -public class FurnitureMiniature : FurnitureObject { - public override void Grab(Transform attachment) { +public class FurnitureMiniature : MonoBehaviour { + public void Grab(Transform attachment) { transform.parent = null; foreach (var collider in GetComponentsInChildren()) { collider.enabled = false; @@ -14,7 +14,7 @@ public class FurnitureMiniature : FurnitureObject { mini.Duration = 0.33f; } - public override void Release() { + public void Release() { var mini = gameObject.GetComponent(); if (mini) { mini.End(); diff --git a/Assets/FurnitureObject.cs b/Assets/FurnitureObject.cs deleted file mode 100755 index 531d03b..0000000 --- a/Assets/FurnitureObject.cs +++ /dev/null @@ -1,7 +0,0 @@ -using UnityEngine; -using System.Collections; - -public class FurnitureObject : MonoBehaviour { - public virtual void Grab(Transform attachment) { } - public virtual void Release() { } -} diff --git a/Assets/FurnitureObject.cs.meta b/Assets/FurnitureObject.cs.meta deleted file mode 100755 index d2be5e1..0000000 --- a/Assets/FurnitureObject.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 44b6e16155f118a40b4c700c55978f9d -timeCreated: 1464233125 -licenseType: Free -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Materials/Color_000.mat b/Assets/Materials/Color_000.mat new file mode 100755 index 0000000..817f764 Binary files /dev/null and b/Assets/Materials/Color_000.mat differ diff --git a/Assets/Materials/Color_000.mat.meta b/Assets/Materials/Color_000.mat.meta new file mode 100755 index 0000000..5561d82 --- /dev/null +++ b/Assets/Materials/Color_000.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5199afd07a1d6704f9f637d2c69589ef +timeCreated: 1464283623 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Color_004.mat b/Assets/Materials/Color_004.mat new file mode 100755 index 0000000..10b499f Binary files /dev/null and b/Assets/Materials/Color_004.mat differ diff --git a/Assets/Materials/Color_004.mat.meta b/Assets/Materials/Color_004.mat.meta new file mode 100755 index 0000000..cd64831 --- /dev/null +++ b/Assets/Materials/Color_004.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 72f984ea83bdc9448af562fb6aae58f5 +timeCreated: 1464283623 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Color_009.mat b/Assets/Materials/Color_009.mat new file mode 100755 index 0000000..26e1985 Binary files /dev/null and b/Assets/Materials/Color_009.mat differ diff --git a/Assets/Materials/Color_009.mat.meta b/Assets/Materials/Color_009.mat.meta new file mode 100755 index 0000000..4d93a54 --- /dev/null +++ b/Assets/Materials/Color_009.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c26ef51d558cbfd4ea5aefd315c6bce2 +timeCreated: 1464283623 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/M_Glass.mat b/Assets/Materials/M_Glass.mat index 01ed26f..7e575c8 100755 Binary files a/Assets/Materials/M_Glass.mat and b/Assets/Materials/M_Glass.mat differ diff --git a/Assets/Materials/Metal_Aluminum_Anodized.mat b/Assets/Materials/Metal_Aluminum_Anodized.mat new file mode 100755 index 0000000..83f392a Binary files /dev/null and b/Assets/Materials/Metal_Aluminum_Anodized.mat differ diff --git a/Assets/Materials/Metal_Aluminum_Anodized.mat.meta b/Assets/Materials/Metal_Aluminum_Anodized.mat.meta new file mode 100755 index 0000000..d745651 --- /dev/null +++ b/Assets/Materials/Metal_Aluminum_Anodized.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ad48742d936eb5f4d9712328a2fa4b78 +timeCreated: 1464283623 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Metal_Panel.mat b/Assets/Materials/Metal_Panel.mat new file mode 100755 index 0000000..0b41714 Binary files /dev/null and b/Assets/Materials/Metal_Panel.mat differ diff --git a/Assets/Materials/Metal_Panel.mat.meta b/Assets/Materials/Metal_Panel.mat.meta new file mode 100755 index 0000000..0af8777 --- /dev/null +++ b/Assets/Materials/Metal_Panel.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3ed07849ee4a36e4bb43884947ad9d0b +timeCreated: 1464283623 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Metal_Rough.mat b/Assets/Materials/Metal_Rough.mat new file mode 100755 index 0000000..43a8751 Binary files /dev/null and b/Assets/Materials/Metal_Rough.mat differ diff --git a/Assets/Materials/Metal_Rough.mat.meta b/Assets/Materials/Metal_Rough.mat.meta new file mode 100755 index 0000000..d7c06a2 --- /dev/null +++ b/Assets/Materials/Metal_Rough.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 042e68e76d707f64d87ad81b1553689b +timeCreated: 1464283623 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Metal_Seamed.mat b/Assets/Materials/Metal_Seamed.mat new file mode 100755 index 0000000..1d62871 Binary files /dev/null and b/Assets/Materials/Metal_Seamed.mat differ diff --git a/Assets/Materials/Metal_Seamed.mat.meta b/Assets/Materials/Metal_Seamed.mat.meta new file mode 100755 index 0000000..18f995c --- /dev/null +++ b/Assets/Materials/Metal_Seamed.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0a1e038fe41be8e46943649e975a4388 +timeCreated: 1464283623 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Metal_Steel_Textured.mat b/Assets/Materials/Metal_Steel_Textured.mat new file mode 100755 index 0000000..4097858 Binary files /dev/null and b/Assets/Materials/Metal_Steel_Textured.mat differ diff --git a/Assets/Materials/Metal_Steel_Textured.mat.meta b/Assets/Materials/Metal_Steel_Textured.mat.meta new file mode 100755 index 0000000..b56a0ed --- /dev/null +++ b/Assets/Materials/Metal_Steel_Textured.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a6c72dd2f75ee0047aee409ee24fcc50 +timeCreated: 1464283623 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Wood_OSB.mat b/Assets/Materials/Wood_OSB.mat new file mode 100755 index 0000000..c41233e Binary files /dev/null and b/Assets/Materials/Wood_OSB.mat differ diff --git a/Assets/Materials/Wood_OSB.mat.meta b/Assets/Materials/Wood_OSB.mat.meta new file mode 100755 index 0000000..7f021f6 --- /dev/null +++ b/Assets/Materials/Wood_OSB.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 268472f8b4d3fd544b30cbf900577455 +timeCreated: 1464283623 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/skp_front_default.mat b/Assets/Materials/skp_front_default.mat new file mode 100755 index 0000000..6f39293 Binary files /dev/null and b/Assets/Materials/skp_front_default.mat differ diff --git a/Assets/Materials/skp_front_default.mat.meta b/Assets/Materials/skp_front_default.mat.meta new file mode 100755 index 0000000..d313b1c --- /dev/null +++ b/Assets/Materials/skp_front_default.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 93beb8d361d6fa74783fe650a8ac8345 +timeCreated: 1464283623 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RightController.cs b/Assets/RightController.cs index f154bf9..44bf79d 100755 --- a/Assets/RightController.cs +++ b/Assets/RightController.cs @@ -9,7 +9,7 @@ public class RightController : MonoBehaviour { SteamVR_ControllerEvents controllerEvents; WarehouseColumn warehouse; - FurnitureObject heldItem; + GameObject heldItem; WarehouseRow whRow = null; Vector3? whScrollStartPos = null; @@ -61,31 +61,62 @@ public class RightController : MonoBehaviour { return; } - var ray = new Ray(transform.position, transform.forward); - RaycastHit result; - bool hit = Physics.Raycast(ray, out result); - - if (!hit) { + if (grabByProximity()) { return; } - var item = result.transform.GetComponentInParent(); - if (!item) { + if (grabByLaser()) { return; } - - item.Grab(MiniatureAttachmentPoint); - heldItem = item; } void triggerUnclicked(object sender, ControllerClickedEventArgs e) { if (heldItem == null) { return; } - heldItem.Release(); + var furnitureMini = heldItem.GetComponent(); + if (furnitureMini) { + furnitureMini.Release(); + } heldItem = null; } + bool grabByProximity() { + return false; + } + + bool grabByLaser() { + var ray = new Ray(transform.position, transform.forward); + RaycastHit result; + bool hit = Physics.Raycast(ray, out result); + + if (!hit) { + return false; + } + + // Warehouse shelf grabbing + var warehouseItem = result.rigidbody.GetComponent(); + if (warehouseItem) { + var mini = warehouseItem.Pick(); + mini.Grab(MiniatureAttachmentPoint); + var anim = mini.GetComponent(); + anim.OriginItem = warehouseItem; + anim.GoalScale = new Vector3(0.05f, 0.05f, 0.05f); + heldItem = mini.gameObject; + return true; + } + + // Warehouse miniature grabbing remotely + var furnitureMini = result.rigidbody.GetComponent(); + if (furnitureMini) { + furnitureMini.Grab(MiniatureAttachmentPoint); + heldItem = furnitureMini.gameObject; + return true; + } + + return false; + } + // Furniture scrolling by drag void touchpadClicked(object sender, ControllerClickedEventArgs e) { var ray = new Ray(transform.position, transform.forward); diff --git a/Assets/Test.unity b/Assets/Test.unity index d8fa2c1..90a44d2 100755 Binary files a/Assets/Test.unity and b/Assets/Test.unity differ diff --git a/Assets/WarehouseItem.cs b/Assets/WarehouseItem.cs index 29289a4..b08e8da 100755 --- a/Assets/WarehouseItem.cs +++ b/Assets/WarehouseItem.cs @@ -1,40 +1,21 @@ using UnityEngine; using System.Collections; -public class WarehouseItem : FurnitureObject { +public class WarehouseItem : MonoBehaviour { - public override void Grab(Transform attachment) { - var replacement = GameObject.Instantiate(this); - replacement.transform.parent = transform.parent; - replacement.transform.SetSiblingIndex(transform.GetSiblingIndex()); + public FurnitureMiniature Pick() { + var clone = GameObject.Instantiate(this); - transform.parent = null; - foreach (var collider in GetComponentsInChildren()) { + foreach (var collider in clone.GetComponentsInChildren()) { collider.enabled = false; } - GetComponent().isKinematic = true; + clone.GetComponent().isKinematic = true; - var mini = gameObject.AddComponent(); - mini.OriginItem = replacement; - mini.DestinationAttachment = attachment; - mini.Duration = 0.33f; - mini.GoalScale = new Vector3(0.05f, 0.05f, 0.05f); - } + // Convert into a miniature + Destroy(clone.GetComponent()); + var mini = clone.gameObject.AddComponent(); - public override void Release() { - var mini = gameObject.GetComponent(); - if (mini) { - mini.End(); - } - - transform.parent = null; - foreach (var collider in GetComponentsInChildren()) { - collider.enabled = true; - } - GetComponent().isKinematic = false; - - gameObject.AddComponent(); - Destroy(this); + return mini; } // Use this for initialization