From 2d92c524edfacbc70b0d3338123b5c1089c758dd Mon Sep 17 00:00:00 2001 From: Patrice Vignola Date: Sat, 15 Aug 2015 23:11:45 -0400 Subject: [PATCH] - More rotation related changes --- Assets/Art/LinkBeam.png | Bin 13172 -> 8954 bytes Assets/Prefabs/FriendshipLink.prefab | 8 +- Assets/Prefabs/NetworkingSphere.prefab | 14 +- Assets/Prefabs/PersonDetailsPanel.prefab | 20 +- Assets/Prefabs/PersonNode.prefab | 6 +- Assets/Scenes/Gameplay.unity | 192 +-- Assets/Scripts/{FriendshipLink.cs => Link.cs} | 95 +- .../SphereSR.cs.meta => Scripts/Link.cs.meta} | 4 +- Assets/Scripts/Models/Friendship.cs | 57 +- Assets/Scripts/Models/FriendshipLink.cs | 30 + .../{ => Models}/FriendshipLink.cs.meta | 4 +- Assets/Scripts/Models/Level.cs | 30 +- Assets/Scripts/Models/LevelGenerator.cs | 60 +- Assets/Scripts/Models/LevelManager.cs | 23 + Assets/Scripts/Models/LevelManager.cs.meta | 12 + Assets/Scripts/Models/Person.cs | 150 +- Assets/Scripts/Models/Utils.cs | 32 + Assets/Scripts/Models/Utils.cs.meta | 12 + Assets/Scripts/NetworkingSphere.cs | 100 +- Assets/Scripts/ObserverPattern/IObservable.cs | 61 +- Assets/Scripts/ObserverPattern/IObserver.cs | 9 +- Assets/Scripts/ObserverPattern/IUpdatable.cs | 9 + .../ObserverPattern/IUpdatable.cs.meta | 12 + Assets/Scripts/PersonDetailsPanel.cs | 31 +- Assets/Scripts/PersonNode.cs | 339 +++-- Assets/Scripts/UIFriendPicture.cs | 33 + Assets/Scripts/UIFriendPicture.cs.meta | 12 + Assets/Tests/Gameplay_SR.unity | 1296 +++++++++++++++++ Assets/Tests/Gameplay_SR.unity.meta | 8 + Assets/Tests/SphereSR.cs | 114 -- 30 files changed, 2185 insertions(+), 588 deletions(-) rename Assets/Scripts/{FriendshipLink.cs => Link.cs} (53%) rename Assets/{Tests/SphereSR.cs.meta => Scripts/Link.cs.meta} (76%) create mode 100644 Assets/Scripts/Models/FriendshipLink.cs rename Assets/Scripts/{ => Models}/FriendshipLink.cs.meta (76%) create mode 100644 Assets/Scripts/Models/LevelManager.cs create mode 100644 Assets/Scripts/Models/LevelManager.cs.meta create mode 100644 Assets/Scripts/Models/Utils.cs create mode 100644 Assets/Scripts/Models/Utils.cs.meta create mode 100644 Assets/Scripts/ObserverPattern/IUpdatable.cs create mode 100644 Assets/Scripts/ObserverPattern/IUpdatable.cs.meta create mode 100644 Assets/Scripts/UIFriendPicture.cs create mode 100644 Assets/Scripts/UIFriendPicture.cs.meta create mode 100644 Assets/Tests/Gameplay_SR.unity create mode 100644 Assets/Tests/Gameplay_SR.unity.meta delete mode 100644 Assets/Tests/SphereSR.cs diff --git a/Assets/Art/LinkBeam.png b/Assets/Art/LinkBeam.png index 23886c70a7cef0d208825e7b5530f10952b00be6..74c4b657c0753a2ee03d0da3c780b4bfc6ceb065 100644 GIT binary patch literal 8954 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 MOkT7~*dXwK0ha@-DF6Tf diff --git a/Assets/Prefabs/FriendshipLink.prefab b/Assets/Prefabs/FriendshipLink.prefab index d3c567f..5bd9d47 100644 --- a/Assets/Prefabs/FriendshipLink.prefab +++ b/Assets/Prefabs/FriendshipLink.prefab @@ -135,7 +135,7 @@ Transform: m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 195142} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -.573046267, y: -.809006572, z: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 495136} @@ -151,15 +151,13 @@ MonoBehaviour: m_GameObject: {fileID: 195142} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c495d00d780bd3d49866ec60f5efbf66, type: 3} + m_Script: {fileID: 11500000, guid: 9c9bbff116cac264d9d7fdcce8cf92e5, type: 3} m_Name: m_EditorClassIdentifier: - HighlightedColor: {r: 1, g: 1, b: 1, a: .501960814} + HighlightedColor: {r: 1, g: 1, b: 1, a: .258823544} StartPoint: {fileID: 495136} EndPoint: {fileID: 495134} BeamLine: {fileID: 12095142} - StartObject: {fileID: 0} - EndObject: {fileID: 0} --- !u!120 &12095142 LineRenderer: m_ObjectHideFlags: 1 diff --git a/Assets/Prefabs/NetworkingSphere.prefab b/Assets/Prefabs/NetworkingSphere.prefab index 94c7961..60c3796 100644 --- a/Assets/Prefabs/NetworkingSphere.prefab +++ b/Assets/Prefabs/NetworkingSphere.prefab @@ -88,12 +88,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0907c1567bad554c8b995de3459e517, type: 3} m_Name: m_EditorClassIdentifier: - LinkObj: {fileID: 11495142, guid: fab430cecad80ad4391987a06b550cb7, type: 2} - PersonObj: {fileID: 11417564, guid: 7a5b1db47a2c30e419038df40dffa79a, type: 2} - NumPeople: 50 - AvgNumFriends: 8 - FriendshipLikeliness: .400000006 - SphereRadius: 7 + gameObjects: + LinkObj: {fileID: 11495142, guid: fab430cecad80ad4391987a06b550cb7, type: 2} + PersonObj: {fileID: 11417564, guid: 7a5b1db47a2c30e419038df40dffa79a, type: 2} + levelOptions: + NumPeople: 50 + AvgNumFriends: 8 + FriendshipLikeliness: .400000006 + SphereRadius: 7 rotationSpeed: .699999988 torqueForce: 1 DetailsPanel: {fileID: 0} diff --git a/Assets/Prefabs/PersonDetailsPanel.prefab b/Assets/Prefabs/PersonDetailsPanel.prefab index fc2a19e..0701142 100644 --- a/Assets/Prefabs/PersonDetailsPanel.prefab +++ b/Assets/Prefabs/PersonDetailsPanel.prefab @@ -395,7 +395,19 @@ MonoBehaviour: m_TargetGraphic: {fileID: 11443318} m_OnClick: m_PersistentCalls: - m_Calls: [] + m_Calls: + - m_Target: {fileID: 11476684} + m_MethodName: KillNode + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null --- !u!114 &11411578 @@ -457,8 +469,8 @@ MonoBehaviour: m_TargetGraphic: {fileID: 11431992} m_HandleRect: {fileID: 22417254} m_Direction: 2 - m_Value: 1 - m_Size: .427392095 + m_Value: .999378026 + m_Size: .427392036 m_NumberOfSteps: 0 m_OnValueChanged: m_PersistentCalls: @@ -1093,7 +1105,7 @@ RectTransform: m_RootOrder: 0 m_AnchorMin: {x: .5, y: 1} m_AnchorMax: {x: .5, y: 1} - m_AnchoredPosition: {x: 0, y: -65.9999924} + m_AnchoredPosition: {x: 0, y: -65.95298} m_SizeDelta: {x: 90, y: 132} m_Pivot: {x: .5, y: .5} --- !u!224 &22462244 diff --git a/Assets/Prefabs/PersonNode.prefab b/Assets/Prefabs/PersonNode.prefab index a312410..51bf4c8 100644 --- a/Assets/Prefabs/PersonNode.prefab +++ b/Assets/Prefabs/PersonNode.prefab @@ -62,7 +62,7 @@ Transform: m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 193868} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalPosition: {x: -544.163269, y: -235.973114, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 496448} @@ -75,8 +75,8 @@ Transform: m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 136744} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -9.99999975e-05} - m_LocalScale: {x: .899999976, y: .899999976, z: 1} + m_LocalPosition: {x: 0, y: 0, z: -.00100000005} + m_LocalScale: {x: .800000012, y: .800000012, z: 1} m_Children: - {fileID: 498100} m_Father: {fileID: 410576} diff --git a/Assets/Scenes/Gameplay.unity b/Assets/Scenes/Gameplay.unity index 810ad66..541cd25 100644 --- a/Assets/Scenes/Gameplay.unity +++ b/Assets/Scenes/Gameplay.unity @@ -431,12 +431,12 @@ CanvasRenderer: RectTransform: m_PrefabParentObject: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} - m_PrefabInternal: {fileID: 1267491657} + m_PrefabInternal: {fileID: 1009381200} --- !u!114 &724043967 stripped MonoBehaviour: m_PrefabParentObject: {fileID: 11476684, guid: c993e87661906234fba410e55ed66832, type: 2} - m_PrefabInternal: {fileID: 1267491657} + m_PrefabInternal: {fileID: 1009381200} m_Script: {fileID: 11500000, guid: 88fb1885d6f8fd6409e3866b7707a12a, type: 3} --- !u!1 &997683484 GameObject: @@ -500,6 +500,100 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 997683484} +--- !u!1001 &1009381200 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 523974151} + m_Modifications: + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_AnchorMin.x + value: .0299999993 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_AnchorMin.y + value: .0299999993 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_AnchorMax.x + value: .970000029 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_AnchorMax.y + value: .970000029 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_Pivot.x + value: .5 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_Pivot.y + value: .5 + objectReference: {fileID: 0} + - target: {fileID: 22417254, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22417254, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22417254, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: c993e87661906234fba410e55ed66832, type: 2} + m_IsPrefabParent: 0 --- !u!1 &1057734534 GameObject: m_ObjectHideFlags: 0 @@ -651,100 +745,6 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_RootOrder: 1 ---- !u!1001 &1267491657 -Prefab: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 523974151} - m_Modifications: - - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} - propertyPath: m_RootOrder - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} - propertyPath: m_AnchorMin.x - value: .0299999993 - objectReference: {fileID: 0} - - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} - propertyPath: m_AnchorMin.y - value: .0299999993 - objectReference: {fileID: 0} - - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} - propertyPath: m_AnchorMax.x - value: .970000029 - objectReference: {fileID: 0} - - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} - propertyPath: m_AnchorMax.y - value: .970000029 - objectReference: {fileID: 0} - - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} - propertyPath: m_Pivot.x - value: .5 - objectReference: {fileID: 0} - - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} - propertyPath: m_Pivot.y - value: .5 - objectReference: {fileID: 0} - - target: {fileID: 22417254, guid: c993e87661906234fba410e55ed66832, type: 2} - propertyPath: m_AnchorMin.y - value: .572607875 - objectReference: {fileID: 0} - - target: {fileID: 22417254, guid: c993e87661906234fba410e55ed66832, type: 2} - propertyPath: m_AnchorMax.x - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 22417254, guid: c993e87661906234fba410e55ed66832, type: 2} - propertyPath: m_AnchorMax.y - value: 1 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: c993e87661906234fba410e55ed66832, type: 2} - m_IsPrefabParent: 0 --- !u!1 &1413393085 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/FriendshipLink.cs b/Assets/Scripts/Link.cs similarity index 53% rename from Assets/Scripts/FriendshipLink.cs rename to Assets/Scripts/Link.cs index 1275422..f2730c9 100644 --- a/Assets/Scripts/FriendshipLink.cs +++ b/Assets/Scripts/Link.cs @@ -1,11 +1,22 @@ using UnityEngine; -using System.Collections; +using System.Collections; +using DeathBook.Util; +using DeathBook.Model; [RequireComponent(typeof(LineRenderer))] -public class FriendshipLink : MonoBehaviour -{ - public Color HighlightedColor = new Color(1f, 1f, 1f, 0.5f); - +public class Link : MonoBehaviour, IObserver +{ + private float highlightAlpha = 0.8f; + private float defaultAlpha = 0.5f; + + private Color currentDefaultColor; + private Color currentHighlightColor; + + private static float defaultScale = 0.03f; + private float hightlightScale = 0.2f; + + private bool isHighlighted = false; + [SerializeField] private Transform StartPoint; @@ -16,16 +27,28 @@ public class FriendshipLink : MonoBehaviour private LineRenderer BeamLine; //public ParticleSystem BeamParticles; - [SerializeField] private Transform StartObject; - - [SerializeField] - private Transform EndObject; + private Transform EndObject; + + private FriendshipLink model; + public FriendshipLink Model + { + get { return model; } + set + { + model = value; + model.Subscribe(this); + + //Make it between 0.1 and 0.4 + GetColors(Model.Awareness); + hightlightScale = Model.Importance * 0.3f + 0.1f; + Highlight(false); + } + } private float LIFETIME_RATIO = 0.025f; private Renderer _renderer; - private Color _defaultColor; void Awake() { @@ -36,14 +59,21 @@ public class FriendshipLink : MonoBehaviour _renderer.material = Instantiate(_renderer.material); - _defaultColor = _renderer.material.GetColor("_TintColor"); + //_defaultColor = _renderer.material.GetColor("_TintColor"); //Activate(false); - } + } + + public void Notify() + { + GetColors(Model.Awareness); + UpdateBeam(); + //TODO SR + } void Update() - { - UpdateVisualEffects(); + { + UpdateVisualEffects(); } public void Activate(bool state) @@ -79,10 +109,35 @@ public class FriendshipLink : MonoBehaviour EndObject = destination.transform; } - public void Highlight(bool state, float weight) - { - // For now, the weight does nothing but it should eventually influence the intensity and size of the link - - _renderer.material.SetColor("_TintColor", state ? HighlightedColor : _defaultColor); - } + public void Highlight(bool state) + { +; isHighlighted = state; + UpdateBeam(); + } + + private void GetColors(float level) + { + //If level is 0.0, green [0,1,0]. + //If level is 0.5, yellow [1,1,0]. + //If level is 1.0, red [1,0,0]. + + float r = 1f; + float g = 1f; + + if (level < 0.5f) + r = Mathf.Lerp(0, 1, level*2); + else + g = Mathf.Lerp(1, 0, level * 2 - 1); + + currentDefaultColor = new Color(r, g, 0f, defaultAlpha); + currentHighlightColor = new Color(r, g, 0f, highlightAlpha); + } + + private void UpdateBeam() + { + float width = isHighlighted ? hightlightScale : defaultScale; + BeamLine.SetWidth(width, width); + + _renderer.material.SetColor("_TintColor", isHighlighted ? currentHighlightColor : currentDefaultColor); + } } diff --git a/Assets/Tests/SphereSR.cs.meta b/Assets/Scripts/Link.cs.meta similarity index 76% rename from Assets/Tests/SphereSR.cs.meta rename to Assets/Scripts/Link.cs.meta index d55f23a..a0b7e66 100644 --- a/Assets/Tests/SphereSR.cs.meta +++ b/Assets/Scripts/Link.cs.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: a24d489629b440b4d9fcfafc24239241 -timeCreated: 1439446791 +guid: 9c9bbff116cac264d9d7fdcce8cf92e5 +timeCreated: 1439591140 licenseType: Free MonoImporter: serializedVersion: 2 diff --git a/Assets/Scripts/Models/Friendship.cs b/Assets/Scripts/Models/Friendship.cs index a5563a9..a1ff053 100644 --- a/Assets/Scripts/Models/Friendship.cs +++ b/Assets/Scripts/Models/Friendship.cs @@ -1,18 +1,61 @@ using System; using System.Collections.Generic; +using UnityEngine; +using DeathBook.Util; namespace DeathBook.Model { - public class Friendship + public class Friendship : Updatable { - public Person friend1, friend2; - private int importance; //on a scale from 1 to 100 + private Person self; + public Person Self { get { return self; } } + private Person friend; + public Person Friend { get { return friend; } } + + private Friendship other; + public Friendship Other { get { return other; } set { other = value; } } - public Friendship(Person p1, Person p2, int scale) + private FriendshipLink link; + public FriendshipLink Link { get { return link; } } + + private bool noticedDeath = false; + + public Friendship(Person self, Person friend, FriendshipLink link) { - friend1 = p1; - friend2 = p2; - importance = scale; + this.self = self; + this.friend = friend; + this.link = link; } + + public void Update(float deltaTime) + { + if (noticedDeath) + return; + + //This function is only called when friend is dead + //awareness = Mathf.Min(awareness + deltaTime * CalculateWeight(), 1); + link.Awareness = Mathf.Min(link.Awareness + deltaTime * 0.1f, 1f); + if (link.Awareness >= 1f) + { + self.NoticeDeath(this); + noticedDeath = true; + } + } + + //returns a number between 0 and 1 + private float CalculateWeight() + { + float weight = 0; + + weight += link.Importance; + //weight += friend.TimeBetweenPosts; + + return weight * 0.1f; + } + + /*internal enum Knowledge + { + Alive, Doubt, Dead + }*/ } } diff --git a/Assets/Scripts/Models/FriendshipLink.cs b/Assets/Scripts/Models/FriendshipLink.cs new file mode 100644 index 0000000..231a861 --- /dev/null +++ b/Assets/Scripts/Models/FriendshipLink.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using DeathBook.Util; + +namespace DeathBook.Model +{ + public class FriendshipLink : Observable + { + private Person friend1, friend2; + public Person Friend1 { get { return friend1; } } + public Person Friend2 { get { return friend2; } } + + private float importance; //on a scale from 0 to 1 + public float Importance { get { return importance; } } + + private float awareness = 0; //on a scale from 0 to 1 + public float Awareness + { + get { return awareness; } + set { awareness = value; NotifyObservers(); } + } + + public FriendshipLink(Person p1, Person p2, float importance) + { + friend1 = p1; + friend2 = p2; + this.importance = importance; + } + } +} diff --git a/Assets/Scripts/FriendshipLink.cs.meta b/Assets/Scripts/Models/FriendshipLink.cs.meta similarity index 76% rename from Assets/Scripts/FriendshipLink.cs.meta rename to Assets/Scripts/Models/FriendshipLink.cs.meta index 71c5c31..1ef5d1f 100644 --- a/Assets/Scripts/FriendshipLink.cs.meta +++ b/Assets/Scripts/Models/FriendshipLink.cs.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: c495d00d780bd3d49866ec60f5efbf66 -timeCreated: 1439307989 +guid: 5c672f95914b3f04088de0f562834941 +timeCreated: 1439578834 licenseType: Free MonoImporter: serializedVersion: 2 diff --git a/Assets/Scripts/Models/Level.cs b/Assets/Scripts/Models/Level.cs index ba99bd7..83b74b1 100644 --- a/Assets/Scripts/Models/Level.cs +++ b/Assets/Scripts/Models/Level.cs @@ -1,24 +1,40 @@ using UnityEngine; using System.Collections.Generic; +using DeathBook.Util; namespace DeathBook.Model { - public class Level + public class Level : Observable, Updatable { + private const float TimeScale = 30f; + private int score; + public int Score { get { return score; } } - public List people; - public List friendships; + private List people; + public List People { get { return people; } } + private List friendships; + public List Friendships { get { return friendships; } } + //1 = 1 minute + private float gameTime; + public int GameTime { get { return (int)(gameTime * TimeScale); } } - //private Generator gen; - private int gameTime; - private int globalAwareness; + private float globalAwareness; //on a scale from 0 to 1 + public float GlobalAwareness { get { return globalAwareness; } } - public Level(List people, List friendships) + public Level(List people, List friendships) { this.people = people; this.friendships = friendships; } + + public void Update(float deltaTime) + { + gameTime += deltaTime; + NotifyObservers(); + + //TODO Global awareness - start trends + } } } diff --git a/Assets/Scripts/Models/LevelGenerator.cs b/Assets/Scripts/Models/LevelGenerator.cs index 6e8ffb3..b380224 100644 --- a/Assets/Scripts/Models/LevelGenerator.cs +++ b/Assets/Scripts/Models/LevelGenerator.cs @@ -10,6 +10,9 @@ namespace DeathBook.Model private float probability; private float radius; + private const float minConnTime = 3; + private const float maxConnTime = 20; + public Level GenerateLevel(int numPeople, int avgFriends, float probability, float radius) { this.numPeople = numPeople; @@ -18,7 +21,7 @@ namespace DeathBook.Model this.radius = radius; List people = CreatePeople(); - List friendships = CreateFriendships(people); + List friendships = CreateFriendships(people); return new Level(people, friendships); } @@ -48,7 +51,8 @@ namespace DeathBook.Model x = Mathf.Cos(longitude) * r; y = Mathf.Sin(longitude) * r; - p = new Person(i, x, y, z); + p = CreatePerson(i, x, y, z); + people.Add(p); z -= dz; @@ -56,16 +60,12 @@ namespace DeathBook.Model longitude += dlong; } - Debug.Log("People: " + people.Count); - return people; } - private List CreateFriendships(List people) + private List CreateFriendships(List people) { - Debug.Log("Creating friendships" + probability); - - List friendships = new List(); + List friendships = new List(); Person p1, p2; int totalCount = people.Count; @@ -76,7 +76,7 @@ namespace DeathBook.Model for (int i = 0; i < totalCount; i++) { p1 = people[i]; - missing = avgConnections - p1.numFriends; // TODO Add randomness + missing = avgConnections - p1.FriendCount; // TODO Add randomness if (missing <= 0) continue; @@ -86,7 +86,7 @@ namespace DeathBook.Model for (int j = i+1; j < totalCount; j++) { p2 = people[j]; - if (p2.numFriends < avgConnections * 1.2) + if (p2.FriendCount < avgConnections * 1.2) list.AddLast(new DistanceNode(p1, p2)); } @@ -112,17 +112,33 @@ namespace DeathBook.Model list.Remove(smallest); } } - Debug.Log(friendships.Count); + return friendships; } - private Friendship CreateFriendship(Person p1, Person p2) + private FriendshipLink CreateFriendship(Person p1, Person p2) { - Friendship f = new Friendship(p1, p2, Random.Range(1,100)); - p1.AddFriendship(f); - p2.AddFriendship(f); + FriendshipLink f = new FriendshipLink(p1, p2, Random.value); + Friendship f1 = new Friendship(p1, p2, f); + Friendship f2 = new Friendship(p2, p1, f); + f1.Other = f2; + f2.Other = f1; + + p1.AddFriendship(f1); + p2.AddFriendship(f2); + return f; } + + private Person CreatePerson(int id, float x, float y, float z) + { + Vector3 pos = new Vector3(x, y, z); + //Vector2 times = + + Person p = new Person(id, pos); + + return p; + } } internal class DistanceNode @@ -133,19 +149,7 @@ namespace DeathBook.Model public DistanceNode(Person p1, Person p2) { p = p2; - dist = (p2.initialPosition - p1.initialPosition).sqrMagnitude; + dist = (p2.InitialPosition - p1.InitialPosition).sqrMagnitude; } } - - - /* - * 1. Friendship urgency - 0-1 - * Number of friends missing - * VS number of nodes left - * - * 2. Friendship possibility - * Closeness - * 0 < distance^2 < root(2)*rSq < 4*rSq - * - */ } diff --git a/Assets/Scripts/Models/LevelManager.cs b/Assets/Scripts/Models/LevelManager.cs new file mode 100644 index 0000000..393cd01 --- /dev/null +++ b/Assets/Scripts/Models/LevelManager.cs @@ -0,0 +1,23 @@ +using UnityEngine; +using System.Collections.Generic; + +namespace DeathBook.Model +{ + public class LevelManager + { + private static LevelManager instance = new LevelManager(); + public static LevelManager Instance { get {return instance; } } + + private Level level = null; + public Level GameLevel { get { return level; } } + + private LevelGenerator gen = new LevelGenerator(); + + private LevelManager() {} + + public void NewLevel(int numPeople, int avgFriends, float probability, float radius) + { + level = gen.GenerateLevel(numPeople, avgFriends, probability, radius); + } + } +} diff --git a/Assets/Scripts/Models/LevelManager.cs.meta b/Assets/Scripts/Models/LevelManager.cs.meta new file mode 100644 index 0000000..ed2c179 --- /dev/null +++ b/Assets/Scripts/Models/LevelManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ccfb5fe3d9ad971499b807bde15217c4 +timeCreated: 1439591141 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Models/Person.cs b/Assets/Scripts/Models/Person.cs index 0e47446..27a0b1f 100644 --- a/Assets/Scripts/Models/Person.cs +++ b/Assets/Scripts/Models/Person.cs @@ -1,92 +1,124 @@ using UnityEngine; using System.Collections.Generic; using System; +using DeathBook.Util; namespace DeathBook.Model { - public class Person : Observable + public class Person : Observable, Updatable { + public Action OnSelected; + public int id; - private string name; - private List friendList = new List(); - public Vector3 initialPosition; - public int numFriends; + public int Id { get { return id; } } + + private string firstName; + private string lastName; + public string Name { get { return firstName + " " + lastName; } } + public string FirstName { get { return firstName; } } + + private Vector3 initialPosition; + public Vector3 InitialPosition { get { return initialPosition; } } + + private List friendsList = new List(); + public List FriendList { get { return friendsList; } } + private List deadFriendsList = new List(); + public List DeadFriendList { get { return deadFriendsList; } } + + private int numAliveFriends = 0; + private int numDeadFriends = 0; + private int friendCount = 0; + public int FriendCount { get { return friendCount; } } + private int timeBetweenPosts; // f = 1/T; - private int connectionTime; - private int disconnectionTime; - private int awarenessLevel; - private bool alive; + public int TimeBetweenPosts { get { return timeBetweenPosts; } } - private int happiness; - private bool connected; + private float connectionTime; + public float ConnectionTime { get { return connectionTime; } } - private Sprite picture; + private float disconnectionTime; + public float DisconnectionTime { get { return disconnectionTime; } } - //private Node node; + private float awarenessLevel = 0; //on a scale from 0 to 1 + public float AwarenessLevel { get { return awarenessLevel; } } - public string Name - { - get { return name; } - } + private bool alive = true; + public bool Alive { get { return alive; } } - public bool Alive - { - get { return alive; } - } + private bool online = true; + public bool Online { get { return online; } } + + private Sprite picture; + public Sprite Picture { get { return picture; } } - public int AwarenessLevel - { - get { return awarenessLevel; } - } - public List FriendList - { - get { return friendList; } - } - - public int FriendsCount - { - get { return numFriends; } - } - - public bool Online - { - get { return connected; } - } - - public Sprite Picture - { - get { return picture; } - } - - public Person(int id, float x, float y, float z) + public Person(int id, Vector3 pos) { this.id = id; - initialPosition = new Vector3(x, y, z); - alive = true; + initialPosition = pos; - // For testing purposes - picture = UnityEngine.Random.Range(0, 2) == 0 ? PictureGenerator.GetFemalePicture() : PictureGenerator.GetMalePicture(); + // TODO Use names from db + firstName = "Mark"; + lastName = "Zuckerberg"; - // Temporary - name = String.Format("Firstname{0} Lastname{0}", id); + // For testing purposes + picture = UnityEngine.Random.Range(0, 2) == 0 ? PictureGenerator.GetFemalePicture() : PictureGenerator.GetMalePicture(); } public void AddFriendship(Friendship f) { - friendList.Add(f); - numFriends++; + friendsList.Add(f); + numAliveFriends++; + friendCount++; } - private bool isConnected(int time) + public void NotifyFriendWasKilled(Friendship f) { - return disconnectionTime > time && time > connectionTime; + //Debug.Log("I am " + id + " and my friend " + f.Friend.Id + " was killed"); + numAliveFriends--; + numDeadFriends++; + deadFriendsList.Add(f); } - private int calculateWeight() + public void Kill() { - //friendCount * ____ + 1/timeBetweenPosts + } - return 0; + //Debug.Log("Person " + id + " died!"); + alive = false; + foreach (Friendship f in friendsList) + f.Friend.NotifyFriendWasKilled(f.Other); + NotifyObservers(); } + + public void NoticeDeath(Friendship f) + { + //TODO apply more rules here + awarenessLevel = Mathf.Min(AwarenessLevel + 0.2f, 1f); + //Debug.Log("I am " + id + " and I know my friend " + f.Friend.Id + " was killed.. " + AwarenessLevel); + //TODO remove from dead friends list to accelerate + NotifyObservers(); + } + + public void Update(float deltaTime) + { + //TODO Update if connected + int time = LevelManager.Instance.GameLevel.GameTime; + + + + //The following actions are only performed if user is online + if (!Online) + return; + + foreach (Friendship f in deadFriendsList) + f.Update(deltaTime); + } + + public void SelectNode() + { + if (OnSelected != null) + { + OnSelected(); + } + } } } \ No newline at end of file diff --git a/Assets/Scripts/Models/Utils.cs b/Assets/Scripts/Models/Utils.cs new file mode 100644 index 0000000..08f33ca --- /dev/null +++ b/Assets/Scripts/Models/Utils.cs @@ -0,0 +1,32 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace DeathBook.Model +{ + public class Utils + { + public static void Test() + { + float mean = 50; + float range = 50; + int numSteps = 2; + + int numTries = 100; + + for (int i = 0; i < numTries; i++) + { + Debug.Log(GetRandomValue(mean, range, numSteps)); + } + } + + public static float GetRandomValue(float mean, float range, int numSteps) + { + float sum = 0; + for (int i = 0; i < numSteps; i++) + { + sum += Random.value; + } + return (sum / numSteps * 2 - 1) * range + mean; + } + } +} diff --git a/Assets/Scripts/Models/Utils.cs.meta b/Assets/Scripts/Models/Utils.cs.meta new file mode 100644 index 0000000..18e99e8 --- /dev/null +++ b/Assets/Scripts/Models/Utils.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 710c7285af897124a8e7e5c5ecf05109 +timeCreated: 1439506723 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/NetworkingSphere.cs b/Assets/Scripts/NetworkingSphere.cs index 2076501..d143c66 100644 --- a/Assets/Scripts/NetworkingSphere.cs +++ b/Assets/Scripts/NetworkingSphere.cs @@ -5,14 +5,27 @@ using DeathBook.Model; public class NetworkingSphere : MonoBehaviour { - public FriendshipLink LinkObj; - public PersonNode PersonObj; - public int NumPeople = 50; - public int AvgNumFriends = 20; - public float FriendshipLikeliness = 0.4f; - public float SphereRadius = 1f; - public float rotationSpeed = 0.7f; + public GameObjectsOptions gameObjects = new GameObjectsOptions(); + public LevelOptions levelOptions = new LevelOptions(); + private NetworkDisconnection sphere; + [System.Serializable] + public class GameObjectsOptions + { + public Link LinkObj; + public PersonNode PersonObj; + } + + [System.Serializable] + public class LevelOptions + { + public int NumPeople = 50; + public int AvgNumFriends = 20; + public float FriendshipLikeliness = 0.4f; + public float SphereRadius = 1f; + } + + public float rotationSpeed = 0.7f; public float torqueForce = 50f; public PersonDetailsPanel DetailsPanel; @@ -21,23 +34,35 @@ public class NetworkingSphere : MonoBehaviour private Vector3 delta = new Vector3(); private Rigidbody rb; + private LevelManager manager; + private PersonNode[] peopleNodes; - //TODO private Friendship[] friendships; private PersonNode _selectedNode; + // Used to disable the physics when the user has clicked on a node + private bool _isRotatingTowardsNode = false; + void Awake() { - LevelGenerator lGen = new LevelGenerator(); - Level lvl = lGen.GenerateLevel(NumPeople, AvgNumFriends, FriendshipLikeliness, SphereRadius); + manager = LevelManager.Instance; + manager.NewLevel(levelOptions.NumPeople, levelOptions.AvgNumFriends, levelOptions.FriendshipLikeliness, levelOptions.SphereRadius); + Level lvl = manager.GameLevel; InstantiateNodes(lvl); AssignLinks(lvl); rb = GetComponent(); } + /*void OnGUI() + { + GUI.Button(new Rect(10, 100, 400, 40), manager.GameLevel.GameTime + ""); + }*/ + void Update() { + manager.GameLevel.Update(Time.deltaTime); + //TEMPORARY QUICK FIX: Even though we are never moving the sphere, it starts moving as soon as it stops rotating transform.position = Vector3.zero; @@ -48,12 +73,12 @@ public class NetworkingSphere : MonoBehaviour Vector3 worldMousePos = Camera.main.ScreenToWorldPoint(screenMousePos); // If the world position of the mouse is greater than the radius of the sphere, we are outside - if (Mathf.Sqrt(worldMousePos.x * worldMousePos.x + worldMousePos.y * worldMousePos.y) > SphereRadius + 1f) + if (Mathf.Sqrt(worldMousePos.x * worldMousePos.x + worldMousePos.y * worldMousePos.y) > levelOptions.SphereRadius + 1f) { transform.Rotate(Vector3.one * Time.deltaTime * rotationSpeed); } - //when right btn clicked, call MoveSphere + //when right btn clicked, call the change rotation if (Input.GetMouseButtonDown(1)) { dragging = true; @@ -64,20 +89,21 @@ public class NetworkingSphere : MonoBehaviour delta = new Vector3(); } - if (dragging) + if (dragging && !_isRotatingTowardsNode) { MoveSphere(); } - //scroll - if (Input.GetAxis("Mouse ScrollWheel") != 0) - { - // if (Camera.main.ScreenToViewportPoint(Input.mousePosition) < new Vector3(1,1,1)) - if (Camera.main.ScreenToViewportPoint(Input.mousePosition).x < 1) - { - Camera.main.fieldOfView -= Input.GetAxis("Mouse ScrollWheel") * 10f; - } - } + + //scroll + if (Input.GetAxis("Mouse ScrollWheel") != 0) + { + // if (Camera.main.ScreenToViewportPoint(Input.mousePosition) < new Vector3(1,1,1)) + if (Camera.main.ScreenToViewportPoint(Input.mousePosition).x < 1) + { + Camera.main.fieldOfView -= Input.GetAxis("Mouse ScrollWheel") * 10f; + } + } } void MoveSphere() @@ -97,13 +123,13 @@ public class NetworkingSphere : MonoBehaviour private void InstantiateNodes(Level lvl) { - peopleNodes = new PersonNode[lvl.people.Count]; + peopleNodes = new PersonNode[lvl.People.Count]; - for (int i = 0; i < lvl.people.Count; i++) + for (int i = 0; i < lvl.People.Count; i++) { - Person person = lvl.people[i]; + Person person = lvl.People[i]; - PersonNode pInst = Instantiate(PersonObj, person.initialPosition, Quaternion.identity) as PersonNode; + PersonNode pInst = Instantiate(gameObjects.PersonObj, person.InitialPosition, Quaternion.identity) as PersonNode; pInst.OnClicked += OnNodeClicked; @@ -116,6 +142,8 @@ public class NetworkingSphere : MonoBehaviour private void OnNodeClicked(PersonNode node) { + if (node == _selectedNode) return; + if (_selectedNode != null) { _selectedNode.Select(false); @@ -132,11 +160,12 @@ public class NetworkingSphere : MonoBehaviour private void AssignLinks(Level lvl) { - foreach (Friendship f in lvl.friendships) + foreach (FriendshipLink f in lvl.Friendships) { - FriendshipLink link = Instantiate(LinkObj) as FriendshipLink; - int id1 = f.friend1.id; - int id2 = f.friend2.id; + Link link = Instantiate(gameObjects.LinkObj) as Link; + int id1 = f.Friend1.id; + int id2 = f.Friend2.id; + link.Model = f; link.AttachToObjects(peopleNodes[id1].gameObject, peopleNodes[id2].gameObject); // Temporary stuff, for testing @@ -171,6 +200,9 @@ public class NetworkingSphere : MonoBehaviour private IEnumerator RotateTowardsNodeCoroutine(PersonNode node) { + _isRotatingTowardsNode = true; + rb.angularVelocity = Vector3.zero; + //Vector3 finalPos = new Vector3(0f, 0f, -SphereRadius); Quaternion initialRot = transform.localRotation; @@ -184,10 +216,10 @@ public class NetworkingSphere : MonoBehaviour Vector3 longDir = nodePos; longDir.y = 0; - float longitude = Vector3.Angle(-Vector3.forward, longDir) * (longDir.x < 0 ? -1 : 1); - float latitude = Mathf.Asin(nodePos.normalized.y) * Mathf.Rad2Deg; + float xAngle = Mathf.Asin(nodePos.normalized.y) * Mathf.Rad2Deg; // Latitude + float yAngle = Vector3.Angle(-Vector3.forward, longDir) * (longDir.x < 0 ? -1 : 1); // Longitude - Quaternion finalRot = Quaternion.AngleAxis(-latitude, Vector3.right) * Quaternion.AngleAxis(longitude, Vector3.up); + Quaternion finalRot = Quaternion.AngleAxis(-xAngle, Vector3.right) * Quaternion.AngleAxis(yAngle, Vector3.up); float ratio = 0f; @@ -199,5 +231,7 @@ public class NetworkingSphere : MonoBehaviour yield return null; } + + _isRotatingTowardsNode = false; } } diff --git a/Assets/Scripts/ObserverPattern/IObservable.cs b/Assets/Scripts/ObserverPattern/IObservable.cs index b4e01a2..b896eb0 100644 --- a/Assets/Scripts/ObserverPattern/IObservable.cs +++ b/Assets/Scripts/ObserverPattern/IObservable.cs @@ -1,30 +1,33 @@ -using System.Collections.Generic; - -// Using an abstract class to avoid repeating code, but could be implemented as an interface if inheritance is somehow needed for the subjects -public abstract class Observable -{ - private List observers; - - public Observable() - { - observers = new List(); - } - - public void Subscribe(IObserver observer) - { - observers.Add(observer); - } - - public void UnSubscribe(IObserver observer) - { - observers.Remove(observer); - } - - public void NotifyObservers() - { - foreach (IObserver observer in observers) - { - observer.Notify(); - } - } +using System.Collections.Generic; + +namespace DeathBook.Util +{ + // Using an abstract class to avoid repeating code, but could be implemented as an interface if inheritance is somehow needed for the subjects + public abstract class Observable + { + private List observers; + + public Observable() + { + observers = new List(); + } + + public void Subscribe(IObserver observer) + { + observers.Add(observer); + } + + public void UnSubscribe(IObserver observer) + { + observers.Remove(observer); + } + + public void NotifyObservers() + { + foreach (IObserver observer in observers) + { + observer.Notify(); + } + } + } } diff --git a/Assets/Scripts/ObserverPattern/IObserver.cs b/Assets/Scripts/ObserverPattern/IObserver.cs index 0f7baeb..d271d55 100644 --- a/Assets/Scripts/ObserverPattern/IObserver.cs +++ b/Assets/Scripts/ObserverPattern/IObserver.cs @@ -1,4 +1,7 @@ -public interface IObserver -{ - void Notify(); +namespace DeathBook.Util +{ + public interface IObserver + { + void Notify(); + } } \ No newline at end of file diff --git a/Assets/Scripts/ObserverPattern/IUpdatable.cs b/Assets/Scripts/ObserverPattern/IUpdatable.cs new file mode 100644 index 0000000..c7cf49a --- /dev/null +++ b/Assets/Scripts/ObserverPattern/IUpdatable.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; + +namespace DeathBook.Util +{ + public interface Updatable + { + void Update(float deltaTime); + } +} diff --git a/Assets/Scripts/ObserverPattern/IUpdatable.cs.meta b/Assets/Scripts/ObserverPattern/IUpdatable.cs.meta new file mode 100644 index 0000000..a9a43a5 --- /dev/null +++ b/Assets/Scripts/ObserverPattern/IUpdatable.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 897f94f455c7ce64394a644bd3cf070b +timeCreated: 1439591140 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/PersonDetailsPanel.cs b/Assets/Scripts/PersonDetailsPanel.cs index 3668009..aa7e182 100644 --- a/Assets/Scripts/PersonDetailsPanel.cs +++ b/Assets/Scripts/PersonDetailsPanel.cs @@ -2,6 +2,7 @@ using System.Collections; using UnityEngine.UI; using DeathBook.Model; +using DeathBook.Util; public class PersonDetailsPanel : MonoBehaviour, IObserver { @@ -13,7 +14,7 @@ public class PersonDetailsPanel : MonoBehaviour, IObserver public Button XButton; public GameObject Container; - public Image UIFriendPicture; + public UIFriendPicture FriendPicture; private PersonNode _node; private Person _model; @@ -49,6 +50,9 @@ public class PersonDetailsPanel : MonoBehaviour, IObserver { Name.text = _model.Name; + KillButton.gameObject.SetActive(_model.Alive); + WatchButton.gameObject.SetActive(_model.Alive); + foreach (Transform picture in FriendsPanel.transform) { Destroy(picture.gameObject); @@ -67,17 +71,21 @@ public class PersonDetailsPanel : MonoBehaviour, IObserver for (int i = 0; i < _model.FriendList.Count; i++) { - Person friend = _model.FriendList[i].friend1 == _model ? _model.FriendList[i].friend2 : _model.FriendList[i].friend1; + Person friend = _model.FriendList[i].Friend; - Image friendPicture = Instantiate(UIFriendPicture) as Image; + UIFriendPicture friendPicture = Instantiate(FriendPicture) as UIFriendPicture; - friendPicture.sprite = friend.Picture; + friendPicture.Model = friend; - friendPicture.transform.SetParent(FriendsPanel.transform); - friendPicture.rectTransform.anchorMin = new Vector2(0.022f, 1f - (height - 0.01f) * (i + 1) - i * 0.01f); - friendPicture.rectTransform.anchorMax = new Vector2(0.26f, (1f - height * i)); - friendPicture.rectTransform.offsetMin = Vector2.zero; - friendPicture.rectTransform.offsetMax = Vector2.zero; + Image picture = friendPicture.Picture; + + picture.sprite = friend.Picture; + + picture.transform.SetParent(FriendsPanel.transform); + picture.rectTransform.anchorMin = new Vector2(0.022f, 1f - (height - 0.01f) * (i + 1) - i * 0.01f); + picture.rectTransform.anchorMax = new Vector2(0.26f, (1f - height * i)); + picture.rectTransform.offsetMin = Vector2.zero; + picture.rectTransform.offsetMax = Vector2.zero; } } @@ -86,4 +94,9 @@ public class PersonDetailsPanel : MonoBehaviour, IObserver Container.SetActive(false); _node.Select(false); } + + public void KillNode() + { + _node.Kill(); + } } diff --git a/Assets/Scripts/PersonNode.cs b/Assets/Scripts/PersonNode.cs index 0b65516..71b3def 100644 --- a/Assets/Scripts/PersonNode.cs +++ b/Assets/Scripts/PersonNode.cs @@ -1,161 +1,178 @@ -using UnityEngine; -using System.Collections; -using System.Collections.Generic; -using DeathBook.Model; -using System; - -[RequireComponent(typeof(Collider))] -public class PersonNode : MonoBehaviour, IObserver -{ - public Action OnClicked; - - public Color SelectedColor = Color.blue; - - public Color StartColor = Color.green; - public Color MiddleColor = Color.yellow; - public Color EndColor = Color.red; - - public Renderer internQuad; - public Renderer xQuad; - - private List _links; - private bool _highlighted = false; - private bool _selected = false; - - private Person _model; - private Renderer _renderer; - private Transform _transform; - - public Person Model - { - get { return _model; } - set - { - _model = value; - _model.Subscribe(this); - UpdateInfo(); - SetProfilePicture(); - } - } - - private void SetProfilePicture() - { - internQuad.material.mainTexture = _model.Picture.texture; - internQuad.material.SetTexture("_MainTex", _model.Picture.texture); - } - - void Awake() - { - _links = new List(); - _renderer = GetComponent(); - _transform = GetComponent(); - } - - void Update() - { - // Find another way to do it if it lags to much - _transform.LookAt(new Vector3(_transform.position.x, _transform.position.y, _transform.position.z + 1)); - } - - public void AddLink(FriendshipLink link) - { - _links.Add(link); - } - - public void Select(bool state) - { - _selected = state; - UpdateLinks(state); - - if (state) - { - _renderer.material.color = SelectedColor; - } - else - { - UpdateInfo(); - } - } - - private void UpdateLinks(bool state) - { - foreach (FriendshipLink link in _links) - { - link.Highlight(state, 1f); - } - } - - public void Notify() - { - UpdateInfo(); - } - - private void UpdateInfo() - { - //If dead -> set offline until all friends are aware, then add a big red X to profile pic - if (_model.Alive) - { - xQuad.enabled = false; - SetColors(); - } - else - { - xQuad.enabled = true; - gameObject.GetComponent().material.color = new Color32(50, 50, 50, 1); - UpdateLinks(false); - } - } - - private void SetColors() - { - //set greyed out for offline - if (_model.Online) - { - internQuad.material.color = new Color32(255, 255, 255, 1); - } - else - { - internQuad.material.color = new Color32(80, 80, 80, 1); - } - - if (_model.AwarenessLevel < 0.5) - { - gameObject.GetComponent().material.color = Color.Lerp(StartColor, MiddleColor, _model.AwarenessLevel * 2); - } - else - { - gameObject.GetComponent().material.color = Color.Lerp(MiddleColor, EndColor, _model.AwarenessLevel * 2 - 1); - } - } - - void OnMouseEnter() - { - if (!_selected && !_highlighted) - { - UpdateLinks(true); - } - - _highlighted = true; - } - - void OnMouseExit() - { - if (!_selected) - { - UpdateLinks(false); - } - - _highlighted = false; - } - - void OnMouseDown() - { - // The sphere should be subscribed to this event and update the data accordingly - if (OnClicked != null) - { - OnClicked(this); - } - - Debug.Log("clicked"); - } -} +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using DeathBook.Model; +using DeathBook.Util; +using System; + +[RequireComponent(typeof(Collider))] +public class PersonNode : MonoBehaviour, IObserver +{ + private const float UpdateFrequency = 0.5f; + private float time = 0; + + public Action OnClicked; + + public Color SelectedColor = Color.blue; + + public Color StartColor = Color.green; + public Color MiddleColor = Color.yellow; + public Color EndColor = Color.red; + + public Renderer internQuad; + public Renderer xQuad; + + private List _links; + private bool _highlighted = false; + private bool _selected = false; + + private Person _model; + private Renderer _renderer; + private Transform _transform; + + + public Person Model + { + get { return _model; } + set + { + _model = value; + _model.Subscribe(this); + _model.OnSelected += () => { OnClicked(this); }; + UpdateInfo(); + SetProfilePicture(); + } + } + + private void SetProfilePicture() + { + internQuad.material.mainTexture = _model.Picture.texture; + internQuad.material.SetTexture("_MainTex", _model.Picture.texture); + } + + void Awake() + { + _links = new List(); + _renderer = GetComponent(); + _transform = GetComponent(); + } + + void Update() + { + time += Time.deltaTime; + if (time > UpdateFrequency) + { + _model.Update(time); + time = 0; + } + + // Find another way to do it if it lags to much + _transform.LookAt(new Vector3(_transform.position.x, _transform.position.y, _transform.position.z + 1)); + } + + public void AddLink(Link link) + { + _links.Add(link); + } + + public void Select(bool state) + { + _selected = state; + UpdateLinks(state); + + if (state) + { + _renderer.material.color = SelectedColor; + } + else + { + UpdateInfo(); + } + } + + private void UpdateLinks(bool isHighlighted) + { + foreach (Link link in _links) + { + link.Highlight(isHighlighted); + } + } + + public void Kill() + { + _model.Kill(); + } + + public void Notify() + { + //Debug.Log("Received notification! " + Model.AwarenessLevel); + UpdateInfo(); + } + + private void UpdateInfo() + { + //If dead -> set offline until all friends are aware, then add a big red X to profile pic + if (_model.Alive) + { + xQuad.enabled = false; + SetColors(); + } + else + { + xQuad.enabled = true; + gameObject.GetComponent().material.color = new Color32(50, 50, 50, 1); + UpdateLinks(false); + } + } + + private void SetColors() + { + //set greyed out for offline + if (_model.Online) + { + internQuad.material.color = new Color32(255, 255, 255, 1); + } + else + { + internQuad.material.color = new Color32(80, 80, 80, 1); + } + + if (_model.AwarenessLevel < 0.5) + { + gameObject.GetComponent().material.color = Color.Lerp(StartColor, MiddleColor, _model.AwarenessLevel * 2); + } + else + { + gameObject.GetComponent().material.color = Color.Lerp(MiddleColor, EndColor, _model.AwarenessLevel * 2 - 1); + } + } + + void OnMouseEnter() + { + if (!_selected && !_highlighted) + { + UpdateLinks(true); + } + + _highlighted = true; + } + + void OnMouseExit() + { + if (!_selected) + { + UpdateLinks(false); + } + + _highlighted = false; + } + + void OnMouseDown() + { + // The sphere should be subscribed to this event and update the data accordingly + if (OnClicked != null) + { + OnClicked(this); + } + } +} diff --git a/Assets/Scripts/UIFriendPicture.cs b/Assets/Scripts/UIFriendPicture.cs new file mode 100644 index 0000000..47e5196 --- /dev/null +++ b/Assets/Scripts/UIFriendPicture.cs @@ -0,0 +1,33 @@ +using UnityEngine; +using System.Collections; +using DeathBook.Model; +using UnityEngine.UI; + +[RequireComponent(typeof(Image))] +public class UIFriendPicture : MonoBehaviour +{ + private Person _model; + + public Person Model + { + get { return _model; } + set { _model = value; } + } + + private Image _picture; + + public Image Picture + { + get { return _picture; } + } + + void Awake() + { + _picture = GetComponent(); + } + + public void OnClick() + { + _model.SelectNode(); + } +} diff --git a/Assets/Scripts/UIFriendPicture.cs.meta b/Assets/Scripts/UIFriendPicture.cs.meta new file mode 100644 index 0000000..bddc54f --- /dev/null +++ b/Assets/Scripts/UIFriendPicture.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 343d57f2bac42ae48ba9722c53e5526f +timeCreated: 1439693427 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/Gameplay_SR.unity b/Assets/Tests/Gameplay_SR.unity new file mode 100644 index 0000000..824d850 --- /dev/null +++ b/Assets/Tests/Gameplay_SR.unity @@ -0,0 +1,1296 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +SceneSettings: + m_ObjectHideFlags: 0 + m_PVSData: + m_PVSObjectsArray: [] + m_PVSPortalsArray: [] + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: .25 + backfaceThreshold: 100 +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 6 + m_Fog: 0 + m_FogColor: {r: .5, g: .5, b: .5, a: 1} + m_FogMode: 3 + m_FogDensity: .00999999978 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: .211999997, g: .226999998, b: .259000003, a: 1} + m_AmbientEquatorColor: {r: .114, g: .125, b: .133000001, a: 1} + m_AmbientGroundColor: {r: .0469999984, g: .0430000015, b: .0350000001, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: .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} +--- !u!127 &3 +LevelGameManager: + m_ObjectHideFlags: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 5 + m_GIWorkflowMode: 0 + m_LightmapsMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 3 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AOMaxDistance: 1 + m_Padding: 2 + m_CompAOExponent: 0 + m_LightmapParameters: {fileID: 0} + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherRayCount: 1024 + m_LightmapSnapshot: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentRadius: .5 + agentHeight: 2 + agentSlope: 45 + agentClimb: .400000006 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + accuratePlacement: 0 + minRegionArea: 2 + cellSize: .166666672 + manualCellSize: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &61719360 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 61719365} + - 20: {fileID: 61719364} + - 92: {fileID: 61719363} + - 124: {fileID: 61719362} + - 81: {fileID: 61719361} + 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 &61719361 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 61719360} + m_Enabled: 1 +--- !u!124 &61719362 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 61719360} + m_Enabled: 1 +--- !u!92 &61719363 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 61719360} + m_Enabled: 1 +--- !u!20 &61719364 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 61719360} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: .329584748, g: .33866781, b: .352941155, a: .0196078438} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: .699999988 + height: .899999976 + near clip plane: .300000012 + far clip plane: 1000 + field of view: 59 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: .0219999999 +--- !u!4 &61719365 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 61719360} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -15.1300001} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!1 &443951980 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 443951981} + - 222: {fileID: 443951983} + - 114: {fileID: 443951982} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &443951981 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 443951980} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2006180051} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: .800000012} + m_AnchorMax: {x: 1, y: .949999988} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!114 &443951982 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 443951980} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .196078435, g: .196078435, b: .196078435, a: 1} + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Recent Posts +--- !u!222 &443951983 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 443951980} +--- !u!1 &466670520 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 466670521} + - 222: {fileID: 466670523} + - 114: {fileID: 466670522} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &466670521 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 466670520} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 523974151} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: .828599989} + m_AnchorMax: {x: 1, y: .957099974} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -3.05175781e-05, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!114 &466670522 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 466670520} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .196078435, g: .196078435, b: .196078435, a: 1} + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Person Details +--- !u!222 &466670523 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 466670520} +--- !u!1 &523974148 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 523974151} + - 222: {fileID: 523974150} + - 114: {fileID: 523974149} + m_Layer: 5 + m_Name: PersonDetails + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &523974149 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 523974148} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: .39199999} + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &523974150 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 523974148} +--- !u!224 &523974151 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 523974148} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 466670521} + - {fileID: 724043966} + m_Father: {fileID: 1608274018} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: .200000003} + m_AnchorMax: {x: 1, y: .550000012} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!1 &534364716 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 534364717} + - 222: {fileID: 534364719} + - 114: {fileID: 534364718} + m_Layer: 5 + m_Name: TopUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &534364717 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 534364716} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1057734538} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: .899999976} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!114 &534364718 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 534364716} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: .39199999} + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &534364719 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 534364716} +--- !u!224 &724043966 stripped +RectTransform: + m_PrefabParentObject: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, + type: 2} + m_PrefabInternal: {fileID: 1009381200} +--- !u!114 &724043967 stripped +MonoBehaviour: + m_PrefabParentObject: {fileID: 11476684, guid: c993e87661906234fba410e55ed66832, + type: 2} + m_PrefabInternal: {fileID: 1009381200} + m_Script: {fileID: 11500000, guid: 88fb1885d6f8fd6409e3866b7707a12a, type: 3} +--- !u!1 &997683484 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 997683485} + - 222: {fileID: 997683487} + - 114: {fileID: 997683486} + m_Layer: 5 + m_Name: Trending + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &997683485 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 997683484} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2116360766} + m_Father: {fileID: 1608274018} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: .550000012} + m_AnchorMax: {x: 1, y: .699999988} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!114 &997683486 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 997683484} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: .39199999} + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &997683487 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 997683484} +--- !u!1001 &1009381200 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 523974151} + m_Modifications: + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_AnchorMin.x + value: .0299999993 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_AnchorMin.y + value: .0299999993 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_AnchorMax.x + value: .970000029 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_AnchorMax.y + value: .970000029 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_Pivot.x + value: .5 + objectReference: {fileID: 0} + - target: {fileID: 22436630, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_Pivot.y + value: .5 + objectReference: {fileID: 0} + - target: {fileID: 22417254, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_AnchorMin.y + value: .590630949 + objectReference: {fileID: 0} + - target: {fileID: 22417254, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22417254, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_AnchorMax.y + value: .999632359 + objectReference: {fileID: 0} + - target: {fileID: 11414010, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_Value + value: .999377966 + objectReference: {fileID: 0} + - target: {fileID: 11414010, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_Size + value: .40900141 + objectReference: {fileID: 0} + - target: {fileID: 11458616, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_Sprite + value: + objectReference: {fileID: 21300000, guid: 0c813218655d0a1468d7269b69deb9d5, + type: 3} + - target: {fileID: 11402414, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_Sprite + value: + objectReference: {fileID: 21300000, guid: 0c813218655d0a1468d7269b69deb9d5, + type: 3} + - target: {fileID: 11450318, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_Sprite + value: + objectReference: {fileID: 21300000, guid: 0c813218655d0a1468d7269b69deb9d5, + type: 3} + - target: {fileID: 11469610, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_Sprite + value: + objectReference: {fileID: 21300000, guid: 0c813218655d0a1468d7269b69deb9d5, + type: 3} + - target: {fileID: 22458514, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_AnchoredPosition.y + value: -65.9512177 + objectReference: {fileID: 0} + - target: {fileID: 11476684, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: Container + value: + objectReference: {fileID: 1178093757} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: c993e87661906234fba410e55ed66832, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1012864059 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1012864060} + m_Layer: 0 + m_Name: Level + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1012864060 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1012864059} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 +--- !u!1 &1057734534 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1057734538} + - 223: {fileID: 1057734537} + - 114: {fileID: 1057734536} + - 114: {fileID: 1057734535} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1057734535 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1057734534} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1057734536 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1057734534} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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 +--- !u!223 &1057734537 +Canvas: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1057734534} + m_Enabled: 1 + serializedVersion: 2 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!224 &1057734538 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1057734534} + 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_Children: + - {fileID: 534364717} + - {fileID: 1608274018} + m_Father: {fileID: 0} + m_RootOrder: 4 + 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 &1126063559 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1126063561} + - 108: {fileID: 1126063560} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1126063560 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1126063559} + m_Enabled: 1 + serializedVersion: 6 + m_Type: 1 + m_Color: {r: 1, g: .956862748, b: .839215696, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_Strength: 1 + m_Bias: .0500000007 + m_NormalBias: .400000006 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_BounceIntensity: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 + m_AreaSize: {x: 1, y: 1} +--- !u!4 &1126063561 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1126063559} + m_LocalRotation: {x: .408217937, y: -.234569728, z: .109381676, w: .875426054} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 +--- !u!1 &1178093757 stripped +GameObject: + m_PrefabParentObject: {fileID: 147852, guid: c993e87661906234fba410e55ed66832, type: 2} + m_PrefabInternal: {fileID: 1009381200} +--- !u!1 &1413393085 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1413393086} + - 222: {fileID: 1413393088} + - 114: {fileID: 1413393087} + m_Layer: 5 + m_Name: WatchArea + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1413393086 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1413393085} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2084455285} + - {fileID: 1619281955} + m_Father: {fileID: 1608274018} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: .200000003} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!114 &1413393087 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1413393085} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: .39199999} + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1413393088 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1413393085} +--- !u!1 &1608274017 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1608274018} + m_Layer: 5 + m_Name: RightUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1608274018 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1608274017} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2006180051} + - {fileID: 997683485} + - {fileID: 523974151} + - {fileID: 1413393086} + m_Father: {fileID: 1057734538} + m_RootOrder: 1 + m_AnchorMin: {x: .699999988, y: 0} + m_AnchorMax: {x: 1, y: .899999976} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!1 &1619281954 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1619281955} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1619281955 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1619281954} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1413393086} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: .850000024} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!1 &1999982083 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1999982087} + - 114: {fileID: 1999982086} + - 114: {fileID: 1999982085} + - 114: {fileID: 1999982084} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1999982084 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1999982083} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1997211142, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowActivationOnStandalone: 0 +--- !u!114 &1999982085 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1999982083} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1077351063, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_AllowActivationOnMobileDevice: 0 +--- !u!114 &1999982086 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1999982083} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -619905303, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1999982087 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1999982083} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 +--- !u!1 &2006180048 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 2006180051} + - 222: {fileID: 2006180050} + - 114: {fileID: 2006180049} + m_Layer: 5 + m_Name: RecentPosts + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2006180049 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2006180048} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: .39199999} + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &2006180050 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2006180048} +--- !u!224 &2006180051 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2006180048} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 443951981} + m_Father: {fileID: 1608274018} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: .699999988} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!1001 &2065124246 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 433422, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 433422, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 433422, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 433422, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 433422, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 433422, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 433422, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 433422, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: DetailsPanel + value: + objectReference: {fileID: 724043967} + - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: FriendshipLikeliness + value: .600000024 + objectReference: {fileID: 0} + - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: NumPeople + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: AvgNumFriends + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: gameObjects.PersonObj + value: + objectReference: {fileID: 11417564, guid: 7a5b1db47a2c30e419038df40dffa79a, + type: 2} + - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: gameObjects.LinkObj + value: + objectReference: {fileID: 11495142, guid: fab430cecad80ad4391987a06b550cb7, + type: 2} + - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: levelOptions.AvgNumFriends + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: levelOptions.SphereRadius + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: levelOptions.NumPeople + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: levelOptions.FriendshipLikeliness + value: .600000024 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &2084455284 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 2084455285} + - 222: {fileID: 2084455287} + - 114: {fileID: 2084455286} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2084455285 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2084455284} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1413393086} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: .699999988} + m_AnchorMax: {x: 1, y: .925000012} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -3.05175781e-05, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!114 &2084455286 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2084455284} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .196078435, g: .196078435, b: .196078435, a: 1} + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Watchs +--- !u!222 &2084455287 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2084455284} +--- !u!1 &2116360765 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 2116360766} + - 222: {fileID: 2116360768} + - 114: {fileID: 2116360767} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2116360766 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2116360765} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 997683485} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: .600000024} + m_AnchorMax: {x: 1, y: .899999976} + m_AnchoredPosition: {x: -1.21593475e-05, y: 0} + m_SizeDelta: {x: -3.05180001e-05, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!114 &2116360767 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2116360765} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .196078435, g: .196078435, b: .196078435, a: 1} + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Trending +--- !u!222 &2116360768 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2116360765} diff --git a/Assets/Tests/Gameplay_SR.unity.meta b/Assets/Tests/Gameplay_SR.unity.meta new file mode 100644 index 0000000..8b5cb84 --- /dev/null +++ b/Assets/Tests/Gameplay_SR.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 43c96e134d44b1646b218de6f0e4c659 +timeCreated: 1439592514 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tests/SphereSR.cs b/Assets/Tests/SphereSR.cs deleted file mode 100644 index ca758f2..0000000 --- a/Assets/Tests/SphereSR.cs +++ /dev/null @@ -1,114 +0,0 @@ -using UnityEngine; -using System.Collections; -using System.Collections.Generic; -using DeathBook.Model; - -public class SphereSR : MonoBehaviour -{ - public FriendshipLink LinkObj; - public PersonNode PersonObj; - public int NumPeople = 50; - public int AvgNumFriends = 20; - public float FriendshipLikeliness = 0.4f; - public float SphereRadius = 1f; - public float rotationSpeed = 0.7f; - - public float torqueForce = 50f; - private bool dragging = false; - private Vector3 delta = new Vector3(); - private Rigidbody rb; - - private PersonNode[] peopleNodes; - //TODO private Friendship[] friendships; - private GameObject[] nodes; - - void Awake() - { - LevelGenerator lGen = new LevelGenerator(); - Level lvl = lGen.GenerateLevel(NumPeople, AvgNumFriends, FriendshipLikeliness, SphereRadius); - - InstantiateNodes(lvl); - AssignLinks(lvl); - rb = GetComponent(); - } - - void Update() - { - Vector3 screenMousePos = Input.mousePosition; - - screenMousePos.z = transform.position.z - Camera.main.transform.position.z; - - Vector3 worldMousePos = Camera.main.ScreenToWorldPoint(screenMousePos); - - // If the world position of the mouse is greater than the radius of the sphere, we are outside - if (Mathf.Sqrt(worldMousePos.x * worldMousePos.x + worldMousePos.y * worldMousePos.y) > SphereRadius + 1f) - { - transform.Rotate(Vector3.one * Time.deltaTime * rotationSpeed); - } - - //when right btn clicked, call the chnge rotation - if (Input.GetMouseButtonDown(1)) - { - dragging = true; - } - else if (Input.GetMouseButtonUp(1)) - { - dragging = false; - delta = new Vector3(); - } - - if (dragging) - { - MoveSphere(); - } - } - - void MoveSphere() - { - float deltaX = Input.GetAxis("Mouse X"); - float deltaY = Input.GetAxis("Mouse Y"); - if (deltaX == 0 && deltaY == 0) - { - delta = new Vector3(); - rb.angularVelocity *= 0.8f; - } - delta += new Vector3(deltaX, deltaY, 0); - //rigidbody.AddTorque(); - rb.AddTorque(Vector3.down * delta.x * torqueForce * Time.deltaTime, ForceMode.Impulse); - rb.AddTorque(Vector3.right * delta.y * torqueForce * Time.deltaTime, ForceMode.Impulse); - Debug.Log(delta.x + ", " + delta.y); - - - } - - private void InstantiateNodes(Level lvl) - { - peopleNodes = new PersonNode[lvl.people.Count]; - - int ctr = 0; - foreach (Person p in lvl.people) - { - - PersonNode pInst = Instantiate(PersonObj, p.initialPosition, Quaternion.identity) as PersonNode; - - pInst.transform.parent = this.transform; - - peopleNodes[ctr++] = pInst; - } - } - - private void AssignLinks(Level lvl) - { - foreach (Friendship f in lvl.friendships) - { - FriendshipLink link = Instantiate(LinkObj) as FriendshipLink; - int id1 = f.friend1.id; - int id2 = f.friend2.id; - link.AttachToObjects(peopleNodes[id1].gameObject, peopleNodes[id2].gameObject); - - // Temporary stuff, for testing - peopleNodes[id1].AddLink(link); - peopleNodes[id2].AddLink(link); - } - } -}