diff --git a/Unity_2018_Frozen/Assets/Frozen/Frozen.unity b/Unity_2018_Frozen/Assets/Frozen/Frozen.unity index 347b407..dc4d1dd 100644 --- a/Unity_2018_Frozen/Assets/Frozen/Frozen.unity +++ b/Unity_2018_Frozen/Assets/Frozen/Frozen.unity @@ -1633,10 +1633,11 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 12ea4d85cdda0aa4981a82e5e18fed52, type: 3} m_Name: m_EditorClassIdentifier: + appearSataes: 01000000 videoStopTime: 1.5 disappearTime: 0.1 area: 0 - AppearArea: 0000000001000000 + appearAreas: 0000000001000000 specificPositions: [] roaming: 0.08 fakeButton: {fileID: 0} @@ -3345,10 +3346,11 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 12ea4d85cdda0aa4981a82e5e18fed52, type: 3} m_Name: m_EditorClassIdentifier: + appearSataes: 02000000 videoStopTime: 10 disappearTime: 1 area: 0 - AppearArea: 02000000 + appearAreas: specificPositions: - {fileID: 1216863878} roaming: 0 @@ -3418,10 +3420,11 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 12ea4d85cdda0aa4981a82e5e18fed52, type: 3} m_Name: m_EditorClassIdentifier: + appearSataes: 02000000 videoStopTime: 0.5 disappearTime: 0.5 area: 0 - AppearArea: 0000000001000000 + appearAreas: 0000000001000000 specificPositions: [] roaming: 0 fakeButton: {fileID: 0} @@ -3992,7 +3995,7 @@ MeshFilter: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1379541361} - m_Mesh: {fileID: 2128676547} + m_Mesh: {fileID: 2019943191} --- !u!1 &1390635887 GameObject: m_ObjectHideFlags: 0 @@ -4447,10 +4450,11 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 12ea4d85cdda0aa4981a82e5e18fed52, type: 3} m_Name: m_EditorClassIdentifier: + appearSataes: 0100000002000000 videoStopTime: 10 disappearTime: 1 area: 2 - AppearArea: 02000000 + appearAreas: specificPositions: - {fileID: 1690794391} roaming: 0 @@ -5212,10 +5216,11 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 12ea4d85cdda0aa4981a82e5e18fed52, type: 3} m_Name: m_EditorClassIdentifier: + appearSataes: 0100000002000000 videoStopTime: 1 disappearTime: 1 area: 0 - AppearArea: 000000000100000002000000 + appearAreas: specificPositions: - {fileID: 40068780} - {fileID: 1191975164} @@ -5426,10 +5431,11 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 12ea4d85cdda0aa4981a82e5e18fed52, type: 3} m_Name: m_EditorClassIdentifier: + appearSataes: 0100000002000000 videoStopTime: 10 disappearTime: 1 area: 2 - AppearArea: 02000000 + appearAreas: specificPositions: - {fileID: 1933714487} roaming: 0 @@ -5511,10 +5517,11 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 12ea4d85cdda0aa4981a82e5e18fed52, type: 3} m_Name: m_EditorClassIdentifier: + appearSataes: 0100000002000000 videoStopTime: 10 disappearTime: 1 area: 0 - AppearArea: 02000000 + appearAreas: specificPositions: - {fileID: 1973785478} roaming: 0 @@ -5595,10 +5602,11 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 12ea4d85cdda0aa4981a82e5e18fed52, type: 3} m_Name: m_EditorClassIdentifier: + appearSataes: 02000000 videoStopTime: 0.5 disappearTime: 0.5 area: 0 - AppearArea: 0000000001000000 + appearAreas: 0000000001000000 specificPositions: [] roaming: 0 fakeButton: {fileID: 0} @@ -5695,6 +5703,136 @@ MeshFilter: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 2008324328} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!43 &2019943191 +Mesh: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: 'Space Ground Mesh: (8x5x3)' + serializedVersion: 8 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 24 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 16 + localAABB: + m_Center: {x: 0, y: 1.5, z: 0} + m_Extent: {x: 4, y: 1.5, z: 2.5} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_MeshCompression: 0 + m_IsReadable: 0 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 000001000200010003000200040005000600050007000600080009000a0009000b000a000c000d000e000d000f000e00 + m_Skin: [] + m_VertexData: + m_CurrentChannels: 11 + m_VertexCount: 16 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 12 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 24 + format: 0 + dimension: 2 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 512 + _typelessdata: 000080c000000000000020c0000000000000803f00000000e4388e3e00000000000080c00000000000002040000000000000803f00000000e4388e3e0000203f0000804000000000000020c0000000000000803f000000008ee3383f00000000000080400000000000002040000000000000803f000000008ee3383f0000203f000080c000000000000020400000000000000000000080bfe4388e3e0000203f000080c000004040000020400000000000000000000080bfe4388e3e0000803f0000804000000000000020400000000000000000000080bf8ee3383f0000203f0000804000004040000020400000000000000000000080bf8ee3383f0000803f000080c000000000000020c00000803f0000000000000000000000000000203f000080c000004040000020c00000803f0000000000000000000000000000803f000080c000000000000020400000803f0000000000000000e4388e3e0000203f000080c000004040000020400000803f0000000000000000e4388e3e0000803f000080400000000000002040000080bf00000000000000008ee3383f0000203f000080400000404000002040000080bf00000000000000008ee3383f0000803f0000804000000000000020c0000080bf00000000000000000000803f0000203f0000804000004040000020c0000080bf00000000000000000000803f0000803f + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 1.5, z: 0} + m_Extent: {x: 4, y: 1.5, z: 2.5} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshOptimized: 0 --- !u!1 &2024329733 GameObject: m_ObjectHideFlags: 0 @@ -6010,133 +6148,3 @@ MeshFilter: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 2086317000} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!43 &2128676547 -Mesh: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_Name: 'Space Ground Mesh: (8x5x3)' - serializedVersion: 8 - m_SubMeshes: - - serializedVersion: 2 - firstByte: 0 - indexCount: 24 - topology: 0 - baseVertex: 0 - firstVertex: 0 - vertexCount: 16 - localAABB: - m_Center: {x: 0, y: 1.5, z: 0} - m_Extent: {x: 4, y: 1.5, z: 2.5} - m_Shapes: - vertices: [] - shapes: [] - channels: [] - fullWeights: [] - m_BindPose: [] - m_BoneNameHashes: - m_RootBoneNameHash: 0 - m_MeshCompression: 0 - m_IsReadable: 0 - m_KeepVertices: 1 - m_KeepIndices: 1 - m_IndexFormat: 0 - m_IndexBuffer: 000001000200010003000200040005000600050007000600080009000a0009000b000a000c000d000e000d000f000e00 - m_Skin: [] - m_VertexData: - m_CurrentChannels: 11 - m_VertexCount: 16 - m_Channels: - - stream: 0 - offset: 0 - format: 0 - dimension: 3 - - stream: 0 - offset: 12 - format: 0 - dimension: 3 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 24 - format: 0 - dimension: 2 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - m_DataSize: 512 - _typelessdata: 000080c000000000000020c0000000000000803f00000000e4388e3e00000000000080c00000000000002040000000000000803f00000000e4388e3e0000203f0000804000000000000020c0000000000000803f000000008ee3383f00000000000080400000000000002040000000000000803f000000008ee3383f0000203f000080c000000000000020400000000000000000000080bfe4388e3e0000203f000080c000004040000020400000000000000000000080bfe4388e3e0000803f0000804000000000000020400000000000000000000080bf8ee3383f0000203f0000804000004040000020400000000000000000000080bf8ee3383f0000803f000080c000000000000020c00000803f0000000000000000000000000000203f000080c000004040000020c00000803f0000000000000000000000000000803f000080c000000000000020400000803f0000000000000000e4388e3e0000203f000080c000004040000020400000803f0000000000000000e4388e3e0000803f000080400000000000002040000080bf00000000000000008ee3383f0000203f000080400000404000002040000080bf00000000000000008ee3383f0000803f0000804000000000000020c0000080bf00000000000000000000803f0000203f0000804000004040000020c0000080bf00000000000000000000803f0000803f - m_CompressedMesh: - m_Vertices: - m_NumItems: 0 - m_Range: 0 - m_Start: 0 - m_Data: - m_BitSize: 0 - m_UV: - m_NumItems: 0 - m_Range: 0 - m_Start: 0 - m_Data: - m_BitSize: 0 - m_Normals: - m_NumItems: 0 - m_Range: 0 - m_Start: 0 - m_Data: - m_BitSize: 0 - m_Tangents: - m_NumItems: 0 - m_Range: 0 - m_Start: 0 - m_Data: - m_BitSize: 0 - m_Weights: - m_NumItems: 0 - m_Data: - m_BitSize: 0 - m_NormalSigns: - m_NumItems: 0 - m_Data: - m_BitSize: 0 - m_TangentSigns: - m_NumItems: 0 - m_Data: - m_BitSize: 0 - m_FloatColors: - m_NumItems: 0 - m_Range: 0 - m_Start: 0 - m_Data: - m_BitSize: 0 - m_BoneIndices: - m_NumItems: 0 - m_Data: - m_BitSize: 0 - m_Triangles: - m_NumItems: 0 - m_Data: - m_BitSize: 0 - m_UVInfo: 0 - m_LocalAABB: - m_Center: {x: 0, y: 1.5, z: 0} - m_Extent: {x: 4, y: 1.5, z: 2.5} - m_MeshUsageFlags: 0 - m_BakedConvexCollisionMesh: - m_BakedTriangleCollisionMesh: - m_MeshOptimized: 0 diff --git a/Unity_2018_Frozen/Assets/Frozen/Script/CharacterBehaviour.cs b/Unity_2018_Frozen/Assets/Frozen/Script/CharacterBehaviour.cs index 0348745..d6b9e9a 100644 --- a/Unity_2018_Frozen/Assets/Frozen/Script/CharacterBehaviour.cs +++ b/Unity_2018_Frozen/Assets/Frozen/Script/CharacterBehaviour.cs @@ -5,402 +5,432 @@ using UnityEngine.Events; using UnityEngine.EventSystems; using UnityEngine.UI; -public class CharacterBehaviour : MonoBehaviour +namespace UltraCombos.Frozen { - public float videoStopTime = 1.5f; - [Range(0, 15)] - public float disappearTime = 5; + public class CharacterBehaviour : MonoBehaviour + { + public List appearSataes = new List(); - public Area area; - public List AppearArea = new List(); + public float videoStopTime = 1.5f; + public float disappearTime = 5.0f; - Vector2 wallRoi; - float origin_height = 0.0f; + public Area area; + public List appearAreas = new List(); - [SerializeField] - List specificPositions = new List(); + Vector2 wallRoi; + float origin_height = 0.0f; - [SerializeField, Range(0, 1)] - float roaming = 0.0f; - float roaming_seed = 0.0f; + [SerializeField] + List specificPositions = new List(); - [SerializeField] - private RectTransform fakeButton; + [SerializeField, Range(0, 1)] + float roaming = 0.0f; + float roaming_seed = 0.0f; - [Header("DShow Player")] - [SerializeField] - bool isStandbyLoop = true; - public DShowClip standbyClip; - public List triggerClips = new List(); - int trigger_clip_index = 0; - //[SerializeField] - private DShowMoviePlayer[] players; + [SerializeField] + private RectTransform fakeButton; - [Header("Event")] - [SerializeField] - UnityEvent onTrigger = new UnityEvent(); + [Header("DShow Player")] + [SerializeField] + bool isStandbyLoop = true; + public DShowClip standbyClip; + public List triggerClips = new List(); + int trigger_clip_index = 0; + //[SerializeField] + private DShowMoviePlayer[] players; - enum State - { - TRIGGER = 0, - STANDBY = 1, - SLEEP = 2 - } + [Header("Event")] + [SerializeField] + UnityEvent onTrigger = new UnityEvent(); - State state = State.SLEEP; - DShowMoviePlayer StatePlayer { get { return players[(int)state]; } } - MeshRenderer StateRenderer { get { return renderers[(int)state]; } } + enum Status + { + TRIGGER = 0, + STANDBY = 1, + SLEEP = 2 + } - MeshRenderer[] renderers; + Status status = Status.SLEEP; + DShowMoviePlayer StatePlayer { get { return players[(int)status]; } } + MeshRenderer StateRenderer { get { return renderers[(int)status]; } } - bool isTriggered = false; + MeshRenderer[] renderers; - Coroutine flow = null; + bool isTriggered = false; - [SerializeField, Header("Debug")] - bool mode = false; - [SerializeField] - string info; + Coroutine flow = null; - private void Awake() - { - renderers = GetComponentsInChildren(); - if (renderers.Length != 2) - Debug.LogWarningFormat("{0} renderer count is {1}", gameObject.name, renderers.Length); - //m_meshRender = GetComponent(); - //mat = new Material(Shader.Find("Unlit/ColorTransparent")); - //m_meshRender.material = mat; + bool is_alive = false; + const float alive_threshold = 1.0f / 255.0f; + float alive_value = 0.0f; + [SerializeField, Header("Debug")] + bool mode = false; + [SerializeField] + string info; - origin_height = transform.position.y; + private void Awake() + { + renderers = GetComponentsInChildren(); + if (renderers.Length != 2) + Debug.LogWarningFormat("{0} renderer count is {1}", gameObject.name, renderers.Length); + //m_meshRender = GetComponent(); + //mat = new Material(Shader.Find("Unlit/ColorTransparent")); + //m_meshRender.material = mat; - InitialiseDSPlayer(); - } - void InitialiseDSPlayer() - { - CreateDSPlayer(triggerClips[0]); - CreateDSPlayer(standbyClip); - players = GetComponentsInChildren(); - } + origin_height = transform.position.y; - void CreateDSPlayer(DShowClip clip) - { - GameObject triggerObj = new GameObject(clip.name); - triggerObj.transform.parent = this.transform; - var player = triggerObj.AddComponent(); - player.VideoAsset = clip; - player.Load(); - } + InitialiseDSPlayer(); + } - void InitialTouchButton() - { - if (fakeButton != null) - return; - GameObject obj = new GameObject(gameObject.name); - obj.transform.parent = GameObject.Find("Final Canvas").transform; - fakeButton = obj.AddComponent(); - fakeButton.anchorMin = new Vector2(0, 0); - fakeButton.anchorMax = new Vector2(0, 0); - fakeButton.pivot = new Vector2(0.5f, 0.5f); - var standby_scale = renderers[(int)State.STANDBY].transform.localScale; - fakeButton.sizeDelta = new Vector2(standby_scale.x, standby_scale.y) * FrozenScreenToWorldSpace.Instance.finalPixelsByMeter; - fakeButton.anchoredPosition3D = new Vector3(0, 0, 0); - fakeButton.localScale = Vector3.one; - fakeButton.gameObject.AddComponent(); - fakeButton.GetComponent().color = new Color(1, 1, 1, 0); - TouchArea touch_area = fakeButton.gameObject.AddComponent(); - touch_area.PointerDown.AddListener((data) => { Trigger(data); }); - touch_area.PointerDrag.AddListener((data) => { Trigger(data); }); - } + void InitialiseDSPlayer() + { + CreateDSPlayer(triggerClips[0]); + CreateDSPlayer(standbyClip); + players = GetComponentsInChildren(); + } - private void Start() - { - foreach (var rdr in renderers) + void CreateDSPlayer(DShowClip clip) { - rdr.material.mainTextureScale = new Vector2(1, -1); - rdr.material.mainTextureOffset = new Vector2(0, -1); + GameObject triggerObj = new GameObject(clip.name); + triggerObj.transform.parent = this.transform; + var player = triggerObj.AddComponent(); + player.VideoAsset = clip; + player.Load(); } - } - private void OnEnable() - { - InitialTouchButton(); - ResetFlow(); - //standby = true; - //isSleep = false; - //StartCoroutine(PlayStandbyOnStart()); - - //StartCoroutine(RandomPosNoTriggerOther()); - //color = new Color(1, 1, 1, 0); - //StartCoroutine(Sleep()); - if (fakeButton != null) - fakeButton.gameObject.SetActive(true); - } + void InitialTouchButton() + { + if (fakeButton != null) + return; + GameObject obj = new GameObject(gameObject.name); + obj.transform.parent = GameObject.Find("Final Canvas").transform; + fakeButton = obj.AddComponent(); + fakeButton.anchorMin = new Vector2(0, 0); + fakeButton.anchorMax = new Vector2(0, 0); + fakeButton.pivot = new Vector2(0.5f, 0.5f); + var standby_scale = renderers[(int)Status.STANDBY].transform.localScale; + fakeButton.sizeDelta = new Vector2(standby_scale.x, standby_scale.y) * FrozenScreenToWorldSpace.Instance.finalPixelsByMeter; + fakeButton.anchoredPosition3D = new Vector3(0, 0, 0); + fakeButton.localScale = Vector3.one; + fakeButton.gameObject.AddComponent(); + fakeButton.GetComponent().color = new Color(1, 1, 1, 0); + TouchArea touch_area = fakeButton.gameObject.AddComponent(); + touch_area.PointerDown.AddListener((data) => { Trigger(data); }); + touch_area.PointerDrag.AddListener((data) => { Trigger(data); }); + } - private void OnDisable() - { - if (fakeButton != null) - fakeButton.gameObject.SetActive(false); - } + private void Start() + { + foreach (var rdr in renderers) + { + rdr.material.mainTextureScale = new Vector2(1, -1); + rdr.material.mainTextureOffset = new Vector2(0, -1); + } + } - private void ResetFlow() - { - if (flow != null) + private void OnEnable() { - StopCoroutine(flow); - flow = null; + InitialTouchButton(); + ResetFlow(); + //standby = true; + //isSleep = false; + //StartCoroutine(PlayStandbyOnStart()); + + //StartCoroutine(RandomPosNoTriggerOther()); + //color = new Color(1, 1, 1, 0); + //StartCoroutine(Sleep()); + if (fakeButton != null) + fakeButton.gameObject.SetActive(true); + } + + private void OnDisable() + { + if (fakeButton != null) + fakeButton.gameObject.SetActive(false); + } + + public bool Active + { + set + { + if (value) Activate(); + else Deactivate(); + } } - isTriggered = false; - foreach (var rdr in renderers) + public void Activate() { - rdr.material.color = new Color(1, 1, 1, 0); - rdr.material.SetColor("_TintColor", new Color(1, 1, 1, 0)); + if (is_alive) + return; + is_alive = true; + gameObject.SetActive(true); } - foreach (var ply in players) + + public void Deactivate() { - ply.Pause(); - ply.Frame = 0; + if (is_alive == false) + return; + is_alive = false; } - flow = StartCoroutine(Flow()); - } - IEnumerator Flow() - { - if (mode) info = "setup"; - // setup + private void ResetFlow() { - if (specificPositions.Count > 0) + if (flow != null) + { + StopCoroutine(flow); + flow = null; + } + + isTriggered = false; + foreach (var rdr in renderers) { - SetSpecificPos(); + rdr.material.color = new Color(1, 1, 1, 0); + rdr.material.SetColor("_TintColor", new Color(1, 1, 1, 0)); } - else + foreach (var ply in players) { - RandomAppearWall(); + ply.Pause(); + ply.Frame = 0; } - roaming_seed = Random.Range(0.0f, 1.0f); - - trigger_clip_index = ++trigger_clip_index % triggerClips.Count; - players[(int)State.TRIGGER].VideoAsset = triggerClips[trigger_clip_index]; - - yield return null; + flow = StartCoroutine(Flow()); } - if (mode) info = "STANDBY"; - // standby + IEnumerator Flow() { - state = State.STANDBY; - var player = StatePlayer; - player.Loop = isStandbyLoop; - player.Play(); + if (mode) info = "setup"; + // setup + { + if (specificPositions.Count > 0) + { + SetSpecificPos(); + } + else + { + RandomAppearWall(); + } + + roaming_seed = Random.Range(0.0f, 1.0f); + + trigger_clip_index = ++trigger_clip_index % triggerClips.Count; + players[(int)Status.TRIGGER].VideoAsset = triggerClips[trigger_clip_index]; - while (isTriggered == false) + yield return null; + } + + if (mode) info = "STANDBY"; + // standby { - if (mode) info = "STANDBY is not triggered"; + status = Status.STANDBY; + var player = StatePlayer; + player.Loop = isStandbyLoop; + player.Play(); - if (player.Loop == false) + while (isTriggered == false) { - if (player.IsPlaying == false) + if (mode) info = "STANDBY is not triggered"; + + if (player.Loop == false) { - //player.Pause(); - //player.Frame = player.TotalNumFrames; - if (mode) info = "STANDBY is not triggered and set frame"; + if (player.IsPlaying == false) + { + //player.Pause(); + //player.Frame = player.TotalNumFrames; + if (mode) info = "STANDBY is not triggered and set frame"; + } } + + yield return null; } - yield return null; + } + if (mode) info = "TRIGGER"; + // trigger + { + onTrigger.Invoke(); + status = Status.TRIGGER; + var player = StatePlayer; + player.Play(); - } + while (player.IsPlaying) + { + if (mode) info = "TRIGGER is playing"; + yield return null; + } - if (mode) info = "TRIGGER"; - // trigger - { - onTrigger.Invoke(); - state = State.TRIGGER; - var player = StatePlayer; - player.Play(); + player.Pause(); + player.Frame = player.TotalNumFrames; - while (player.IsPlaying) - { - if (mode) info = "TRIGGER is playing"; - yield return null; + if (mode) info = "TRIGGER is stopped"; + yield return new WaitForSeconds(videoStopTime); } - player.Pause(); - player.Frame = player.TotalNumFrames; - - if (mode) info = "TRIGGER is stopped"; - yield return new WaitForSeconds(videoStopTime); - } - - if (mode) info = "SLEEP"; - // sleep - { - state = State.SLEEP; - yield return new WaitForSeconds(disappearTime); - } + if (mode) info = "SLEEP"; + // sleep + { + status = Status.SLEEP; + yield return new WaitForSeconds(disappearTime); + } - flow = null; - yield return null; - } - /* - IEnumerator PlayStandbyOnStart() - { - DShowMoviePlayer player = CurrentPlayer; - player.Loop = isStandbyLoop; - while (!player.IsPlaying) - { - player.Play(); - renderers[STANDBY].material.mainTexture = player.Texture; + flow = null; yield return null; } - } - */ - void Update() - { - for (int i = 0; i < players.Length; i++) + + void Update() { - if (players[i].IsPlaying) + alive_value = Mathf.Lerp(alive_value, is_alive ? 1.0f : 0.0f, Time.deltaTime); + if (is_alive == false && alive_value < alive_threshold) { - renderers[i].material.mainTexture = players[i].Texture; + alive_value = 0.0f; + gameObject.SetActive(false); } - - } - // standby material - { - float smooth = Time.deltaTime * 2.0f; - if (state != State.STANDBY && isStandbyLoop == false) - smooth = 1.0f; - float alpha = System.Convert.ToInt32(state == State.STANDBY); - var mat = renderers[(int)State.STANDBY].material; - var col = new Color(1, 1, 1, Mathf.Lerp(mat.color.a, alpha, smooth)); - mat.color = col; - mat.SetColor("_TintColor", col); - } - - // trigger material - { - float smooth = Time.deltaTime * 2.0f; - if (state == State.TRIGGER) - smooth = 1.0f; - float alpha = System.Convert.ToInt32(state == State.TRIGGER); - var mat = renderers[(int)State.TRIGGER].material; - var col = new Color(1, 1, 1, Mathf.Lerp(mat.color.a, alpha, smooth)); - mat.color = col; - mat.SetColor("_TintColor", col); - } - - switch (state) - { - case State.STANDBY: + for (int i = 0; i < players.Length; i++) + { + if (players[i].IsPlaying) { - if (roaming > 0.0f) - { - UpdateRoamingPosition(); - UpdateWallRoiFromPosition(); - UpdateButtonPos(); - } + renderers[i].material.mainTexture = players[i].Texture; } - break; - case State.TRIGGER: - { - } - break; - case State.SLEEP: - { + } - } - break; - } + // standby material + { + float smooth = Time.deltaTime * 2.0f; + if (status != Status.STANDBY && isStandbyLoop == false) + smooth = 1.0f; + float alpha = System.Convert.ToInt32(status == Status.STANDBY); + alpha = Mathf.Min(alpha, alive_value); + var mat = renderers[(int)Status.STANDBY].material; + var col = new Color(1, 1, 1, Mathf.Lerp(mat.color.a, alpha, smooth)); + mat.color = col; + mat.SetColor("_TintColor", col); + } - if (mode) - { - if (Input.GetKeyDown(KeyCode.R)) + // trigger material { - ResetFlow(); + float smooth = Time.deltaTime * 2.0f; + if (status == Status.TRIGGER) + smooth = 1.0f; + float alpha = System.Convert.ToInt32(status == Status.TRIGGER); + alpha = Mathf.Min(alpha, alive_value); + var mat = renderers[(int)Status.TRIGGER].material; + var col = new Color(1, 1, 1, Mathf.Lerp(mat.color.a, alpha, smooth)); + mat.color = col; + mat.SetColor("_TintColor", col); } - } - if (flow == null) - ResetFlow(); - } - void UpdateRoamingPosition() - { - float noise = Mathf.PerlinNoise(Time.time * 0.4f, roaming_seed) > 0.5f ? 1.0f : -1.0f; - noise *= roaming * Time.deltaTime; - //float padding = transform.localScale.x * 0.5f; - float padding = renderers[(int)State.TRIGGER].transform.localScale.x * 0.5f; - Vector3 pos = transform.position; - switch (area) - { - case Area.TopWall: - { - float minmax = Mathf.Abs(padding - FrozenScreenToWorldSpace.Instance.width * 0.5f); - float shift = FrozenScreenToWorldSpace.Instance.Position.x; - float x = Mathf.Clamp(pos.x + noise, -minmax + shift, minmax + shift); - transform.position = new Vector3(x, pos.y, pos.z); - } - break; - case Area.LeftWall: - case Area.RightWall: + switch (status) + { + case Status.STANDBY: + { + if (roaming > 0.0f) + { + UpdateRoamingPosition(); + UpdateWallRoiFromPosition(); + UpdateButtonPos(); + } + } + break; + case Status.TRIGGER: + { + + } + break; + case Status.SLEEP: + { + + } + break; + } + + if (mode) + { + if (Input.GetKeyDown(KeyCode.R)) { - float minmax = Mathf.Abs(padding - FrozenScreenToWorldSpace.Instance.length * 0.5f); - float shift = FrozenScreenToWorldSpace.Instance.Position.z; - float z = Mathf.Clamp(pos.z + noise, -minmax + shift, minmax + shift); - transform.position = new Vector3(pos.x, pos.y, z); + ResetFlow(); } - break; - } - } + } - void RandomAppearWall() - { - Vector3 newPos = Vector3.zero; - area = AppearArea[Random.Range(0, AppearArea.Count)]; - Quaternion q = new Quaternion(); - if (area == Area.LeftWall) - { - newPos.x = -FrozenScreenToWorldSpace.Instance.width / 2; - q.SetLookRotation(Vector3.left); + if (flow == null) + ResetFlow(); } - if (area == Area.RightWall) + + void UpdateRoamingPosition() { - newPos.x = FrozenScreenToWorldSpace.Instance.width / 2; - q.SetLookRotation(Vector3.right); + float noise = Mathf.PerlinNoise(Time.time * 0.4f, roaming_seed) > 0.5f ? 1.0f : -1.0f; + noise *= roaming * Time.deltaTime; + //float padding = transform.localScale.x * 0.5f; + float padding = renderers[(int)Status.TRIGGER].transform.localScale.x * 0.5f; + Vector3 pos = transform.position; + switch (area) + { + case Area.TopWall: + { + float minmax = Mathf.Abs(padding - FrozenScreenToWorldSpace.Instance.width * 0.5f); + float shift = FrozenScreenToWorldSpace.Instance.Position.x; + float x = Mathf.Clamp(pos.x + noise, -minmax + shift, minmax + shift); + transform.position = new Vector3(x, pos.y, pos.z); + } + break; + case Area.LeftWall: + case Area.RightWall: + { + float minmax = Mathf.Abs(padding - FrozenScreenToWorldSpace.Instance.length * 0.5f); + float shift = FrozenScreenToWorldSpace.Instance.Position.z; + float z = Mathf.Clamp(pos.z + noise, -minmax + shift, minmax + shift); + transform.position = new Vector3(pos.x, pos.y, z); + } + break; + } } - if (area == Area.TopWall) + + void RandomAppearWall() { - newPos.z = FrozenScreenToWorldSpace.Instance.length / 2; - q.SetLookRotation(Vector3.forward); + Vector3 newPos = Vector3.zero; + area = appearAreas[Random.Range(0, appearAreas.Count)]; + Quaternion q = new Quaternion(); + if (area == Area.LeftWall) + { + newPos.x = -FrozenScreenToWorldSpace.Instance.width / 2; + q.SetLookRotation(Vector3.left); + } + if (area == Area.RightWall) + { + newPos.x = FrozenScreenToWorldSpace.Instance.width / 2; + q.SetLookRotation(Vector3.right); + } + if (area == Area.TopWall) + { + newPos.z = FrozenScreenToWorldSpace.Instance.length / 2; + q.SetLookRotation(Vector3.forward); + } + transform.rotation = q; + transform.position = newPos;// + FrozenScreenToWorldSpace.Instance.Position; + RandomPos(); } - transform.rotation = q; - transform.position = newPos;// + FrozenScreenToWorldSpace.Instance.Position; - RandomPos(); - } - void RandomPos() - { - float minX = renderers[(int)State.TRIGGER].transform.localScale.x / 2; -#if true - switch (area) + void RandomPos() { - case Area.TopWall: - wallRoi.x = Random.Range(minX, FrozenScreenToWorldSpace.Instance.width - minX) / FrozenScreenToWorldSpace.Instance.width; - break; - case Area.LeftWall: - case Area.RightWall: - wallRoi.x = Random.Range(minX, FrozenScreenToWorldSpace.Instance.length - minX) / FrozenScreenToWorldSpace.Instance.length; - break; - } + float minX = renderers[(int)Status.TRIGGER].transform.localScale.x / 2; +#if true + switch (area) + { + case Area.TopWall: + wallRoi.x = Random.Range(minX, FrozenScreenToWorldSpace.Instance.width - minX) / FrozenScreenToWorldSpace.Instance.width; + break; + case Area.LeftWall: + case Area.RightWall: + wallRoi.x = Random.Range(minX, FrozenScreenToWorldSpace.Instance.length - minX) / FrozenScreenToWorldSpace.Instance.length; + break; + } #else Vector3 randomPos = transform.localPosition; if (randomPos.x == 0) @@ -408,27 +438,27 @@ public class CharacterBehaviour : MonoBehaviour else wallRoi.x = Random.Range(minX, FrozenScreenToWorldSpace.Instance.length - minX) / FrozenScreenToWorldSpace.Instance.length; #endif - wallRoi.y = origin_height / FrozenScreenToWorldSpace.Instance.height; - UpdatePos(); - UpdateButtonPos(); - } + wallRoi.y = origin_height / FrozenScreenToWorldSpace.Instance.height; + UpdatePos(); + UpdateButtonPos(); + } - void UpdatePos() - { -#if true - Vector3 n_pos = transform.position; - switch (area) + void UpdatePos() { - case Area.TopWall: - n_pos.x = Mathf.Lerp(-FrozenScreenToWorldSpace.Instance.width / 2, FrozenScreenToWorldSpace.Instance.width / 2, wallRoi.x); - break; - case Area.LeftWall: - case Area.RightWall: - n_pos.z = Mathf.Lerp(-FrozenScreenToWorldSpace.Instance.length / 2, FrozenScreenToWorldSpace.Instance.length / 2, wallRoi.x); - break; - } - n_pos.y = Mathf.Lerp(0.0f, FrozenScreenToWorldSpace.Instance.height, wallRoi.y); - transform.position = n_pos + FrozenScreenToWorldSpace.Instance.Position; +#if true + Vector3 n_pos = transform.position; + switch (area) + { + case Area.TopWall: + n_pos.x = Mathf.Lerp(-FrozenScreenToWorldSpace.Instance.width / 2, FrozenScreenToWorldSpace.Instance.width / 2, wallRoi.x); + break; + case Area.LeftWall: + case Area.RightWall: + n_pos.z = Mathf.Lerp(-FrozenScreenToWorldSpace.Instance.length / 2, FrozenScreenToWorldSpace.Instance.length / 2, wallRoi.x); + break; + } + n_pos.y = Mathf.Lerp(0.0f, FrozenScreenToWorldSpace.Instance.height, wallRoi.y); + transform.position = n_pos + FrozenScreenToWorldSpace.Instance.Position; #else Vector3 n_pos = transform.localPosition; @@ -439,38 +469,41 @@ public class CharacterBehaviour : MonoBehaviour n_pos.y = Mathf.Lerp(0, (float)FrozenScreenToWorldSpace.Instance.height, wallRoi.y); transform.localPosition = n_pos; #endif - //SetButtonPos(); - } + //SetButtonPos(); + } - void UpdateButtonPos() - { - //Vector2 newScreenPos = FrozenScreenToWorldSpace.Instance.GetFinalScreenPos(area, wallRoi); - var roi = FrozenScreenToWorldSpace.Instance.GetWallRoiFromPosition(area, renderers[(int)State.STANDBY].transform.position); - Vector2 newScreenPos = FrozenScreenToWorldSpace.Instance.GetFinalScreenPos(area, roi); - fakeButton.anchoredPosition = newScreenPos; - } + void UpdateButtonPos() + { + //Vector2 newScreenPos = FrozenScreenToWorldSpace.Instance.GetFinalScreenPos(area, wallRoi); + var roi = FrozenScreenToWorldSpace.Instance.GetWallRoiFromPosition(area, renderers[(int)Status.STANDBY].transform.position); + Vector2 newScreenPos = FrozenScreenToWorldSpace.Instance.GetFinalScreenPos(area, roi); + fakeButton.anchoredPosition = newScreenPos; + } - void SetSpecificPos() - { - int pos_index = Random.Range(0, specificPositions.Count); - var dummy = specificPositions[pos_index]; - area = dummy.area; - transform.position = dummy.transform.position; - transform.rotation = dummy.transform.rotation; - UpdateWallRoiFromPosition(); - UpdateButtonPos(); - } + void SetSpecificPos() + { + int pos_index = Random.Range(0, specificPositions.Count); + var dummy = specificPositions[pos_index]; + area = dummy.area; + transform.position = dummy.transform.position; + transform.rotation = dummy.transform.rotation; + UpdateWallRoiFromPosition(); + UpdateButtonPos(); + } - void UpdateWallRoiFromPosition() - { - wallRoi = FrozenScreenToWorldSpace.Instance.GetWallRoiFromPosition(area, transform.position); - } + void UpdateWallRoiFromPosition() + { + wallRoi = FrozenScreenToWorldSpace.Instance.GetWallRoiFromPosition(area, transform.position); + } - private void Trigger(PointerEventData data) - { - if (state != State.STANDBY) - return; + private void Trigger(PointerEventData data) + { + if (status != Status.STANDBY) + return; - isTriggered = true; + isTriggered = true; + } } + } + diff --git a/Unity_2018_Frozen/Assets/Frozen/Script/CharacterDummy.cs b/Unity_2018_Frozen/Assets/Frozen/Script/CharacterDummy.cs index fb58202..7eb79cd 100644 --- a/Unity_2018_Frozen/Assets/Frozen/Script/CharacterDummy.cs +++ b/Unity_2018_Frozen/Assets/Frozen/Script/CharacterDummy.cs @@ -2,13 +2,17 @@ using System.Collections.Generic; using UnityEngine; -public class CharacterDummy : MonoBehaviour +namespace UltraCombos.Frozen { - public Area area; - - private void Start() + public class CharacterDummy : MonoBehaviour { - if (GetComponent() == null) - gameObject.SetActive(false); + public Area area; + + private void Start() + { + if (GetComponent() == null) + gameObject.SetActive(false); + } } } + diff --git a/Unity_2018_Frozen/Assets/Frozen/Script/GiantSnowflake.cs b/Unity_2018_Frozen/Assets/Frozen/Script/GiantSnowflake.cs index c7266af..9498f8d 100644 --- a/Unity_2018_Frozen/Assets/Frozen/Script/GiantSnowflake.cs +++ b/Unity_2018_Frozen/Assets/Frozen/Script/GiantSnowflake.cs @@ -79,7 +79,7 @@ namespace UltraCombos.Frozen material.mainTexture = player.Texture; - if (flow == null && SceneController.Instance.state == SceneController.State.Night) + if (flow == null && SceneController.Instance.state == State.Night) flow = StartCoroutine(Flow()); } diff --git a/Unity_2018_Frozen/Assets/Frozen/Script/SceneController.cs b/Unity_2018_Frozen/Assets/Frozen/Script/SceneController.cs index 6df124a..8805c02 100644 --- a/Unity_2018_Frozen/Assets/Frozen/Script/SceneController.cs +++ b/Unity_2018_Frozen/Assets/Frozen/Script/SceneController.cs @@ -5,14 +5,15 @@ using UnityEngine.Events; namespace UltraCombos.Frozen { + public enum State + { + Standby, + Day, + Night, + } + public class SceneController : Singleton { - public enum State - { - Standby, - Day, - Night, - } public State state = State.Standby; [Range(0, 1)] @@ -43,6 +44,8 @@ namespace UltraCombos.Frozen ParticleViewerProcedural particleViewer; [SerializeField, Range(0, 1)] float dayParticleRate = 1.0f; + + List characters; [SerializeField] List dayCharacters = new List(); @@ -64,6 +67,8 @@ namespace UltraCombos.Frozen private void Start() { + var cbs = FindObjectsOfType(); + characters = new List(cbs); //debug = false; } @@ -128,6 +133,7 @@ namespace UltraCombos.Frozen kinect.kinectAmount = Mathf.Lerp(1.0f, nightKinectAmount, rate); particleViewer.VertexCount = (int)(Mathf.Lerp(dayParticleRate, 1.0f, rate) * particleViewer.buffer.count); +#if false foreach (var chr in dayCharacters) { chr.gameObject.SetActive(rate < 0.5); @@ -137,6 +143,12 @@ namespace UltraCombos.Frozen { chr.gameObject.SetActive(rate > 0.5); } +#else + foreach (var chr in characters) + { + chr.Active = chr.appearSataes.Contains(state); + } +#endif } } }