├── CHANGELOG.md ├── CHANGELOG.md.meta ├── Component.meta ├── Component ├── Base.meta ├── Base │ ├── EventPlayerForCompBase.cs │ ├── EventPlayerForCompBase.cs.meta │ ├── EventPlayerForCompWithParamBase.cs │ ├── EventPlayerForCompWithParamBase.cs.meta │ ├── EventPlayerListener.cs │ ├── EventPlayerListener.cs.meta │ ├── EventPlayerWithParamBase.cs │ ├── EventPlayerWithParamBase.cs.meta │ ├── EventPlayerWithParamListener.cs │ ├── EventPlayerWithParamListener.cs.meta │ ├── IEventPlayerWithParam.cs │ ├── IEventPlayerWithParam.cs.meta │ ├── Sequence_EventPlayerBase.cs │ └── Sequence_EventPlayerBase.cs.meta ├── Coroutine.meta ├── Coroutine │ ├── CoroutineEventPlayerBase.cs │ ├── CoroutineEventPlayerBase.cs.meta │ ├── DelayEventPlayer.cs │ ├── DelayEventPlayer.cs.meta │ ├── RepeatEventPlayer.cs │ ├── RepeatEventPlayer.cs.meta │ ├── TempEventPlayer.cs │ └── TempEventPlayer.cs.meta ├── EventPlayer.cs ├── EventPlayer.cs.meta ├── EventPlayerInitManager.cs ├── EventPlayerInitManager.cs.meta ├── Param.meta ├── Param │ ├── EventPlayer_Float.cs │ ├── EventPlayer_Float.cs.meta │ ├── EventPlayer_Int.cs │ ├── EventPlayer_Int.cs.meta │ ├── EventPlayer_String.cs │ └── EventPlayer_String.cs.meta ├── SO.meta ├── SO │ ├── SOEventPlayerSettingManager.cs │ └── SOEventPlayerSettingManager.cs.meta ├── Sequence.meta ├── Sequence │ ├── Sequence_EventPlayer.cs │ └── Sequence_EventPlayer.cs.meta ├── Wasted.meta └── Wasted │ ├── EventPlayerGroup_Wasted.cs │ └── EventPlayerGroup_Wasted.cs.meta ├── Definition.meta ├── Definition ├── EditorDefinition_EventPlayer.cs └── EditorDefinition_EventPlayer.cs.meta ├── Editor.meta ├── Editor ├── EventPlayerSettingWindow.cs ├── EventPlayerSettingWindow.cs.meta ├── Extend.meta ├── Extend │ ├── Timeline.meta │ └── Timeline │ │ ├── EventPlayerClipEditor.cs │ │ ├── EventPlayerClipEditor.cs.meta │ │ ├── EventPlayerTrackEditor.cs │ │ ├── EventPlayerTrackEditor.cs.meta │ │ ├── InspectorView_EventPlayerClip.cs │ │ └── InspectorView_EventPlayerClip.cs.meta ├── HierarchyView_EventPlayer.cs ├── HierarchyView_EventPlayer.cs.meta ├── InspectorView_EventPlayer.cs ├── InspectorView_EventPlayer.cs.meta ├── Resources.meta ├── Resources │ ├── Icons.meta │ └── Icons │ │ ├── DisplayBG.psd │ │ ├── DisplayBG.psd.meta │ │ ├── EPSkin.guiskin │ │ ├── EPSkin.guiskin.meta │ │ ├── EPToggleBG_Off.psd │ │ ├── EPToggleBG_Off.psd.meta │ │ ├── EPToggleBG_On.psd │ │ ├── EPToggleBG_On.psd.meta │ │ ├── SwitchToggleBG_Off.psd │ │ ├── SwitchToggleBG_Off.psd.meta │ │ ├── SwitchToggleBG_On.psd │ │ └── SwitchToggleBG_On.psd.meta ├── Threeyes.EventPlayer.Editor.asmdef └── Threeyes.EventPlayer.Editor.asmdef.meta ├── Extend.meta ├── Extend ├── BezierSolution.meta ├── BezierSolution │ ├── TLEPListener_BezierWalker.cs │ └── TLEPListener_BezierWalker.cs.meta ├── DOTweenPro.meta ├── DOTweenPro │ ├── DOTweenPreviewManagerEx.cs │ ├── DOTweenPreviewManagerEx.cs.meta │ ├── LazyExtension_DoTweenPro.cs │ ├── LazyExtension_DoTweenPro.cs.meta │ ├── TLEPListener_DoTween.cs │ └── TLEPListener_DoTween.cs.meta ├── Timeline.meta ├── Timeline │ ├── Base.meta │ ├── Base │ │ ├── BehaviourBase.cs │ │ ├── BehaviourBase.cs.meta │ │ ├── ClipBase.cs │ │ ├── ClipBase.cs.meta │ │ ├── MixerBehaviourBase.cs │ │ ├── MixerBehaviourBase.cs.meta │ │ ├── TrackBase.cs │ │ └── TrackBase.cs.meta │ ├── EventPlayer_PlayableInfo.cs │ ├── EventPlayer_PlayableInfo.cs.meta │ ├── Interface.meta │ ├── Interface │ │ ├── ITimelineProgress.cs │ │ └── ITimelineProgress.cs.meta │ ├── Listener.meta │ ├── Listener │ │ ├── TLEPListener.cs │ │ ├── TLEPListener.cs.meta │ │ ├── TLEPListenerForCompBase.cs │ │ └── TLEPListenerForCompBase.cs.meta │ ├── Playables.meta │ ├── Playables │ │ ├── EventPlayerBehaviour.cs │ │ ├── EventPlayerBehaviour.cs.meta │ │ ├── EventPlayerClip.cs │ │ ├── EventPlayerClip.cs.meta │ │ ├── EventPlayerMixerBehaviour.cs │ │ ├── EventPlayerMixerBehaviour.cs.meta │ │ ├── EventPlayerTrack.cs │ │ └── EventPlayerTrack.cs.meta │ ├── Preview.meta │ └── Preview │ │ ├── TimelinePreviewManager.cs │ │ └── TimelinePreviewManager.cs.meta ├── Video.meta └── Video │ ├── EventPlayer_Video.cs │ └── EventPlayer_Video.cs.meta ├── LICENSE ├── LICENSE.meta ├── README.md ├── ReadMe.md.meta ├── Samples.meta ├── Samples ├── #YouCanSafelyDeletethisFolder.txt ├── #YouCanSafelyDeletethisFolder.txt.meta ├── Materials.meta ├── Materials │ ├── BG Plane.mat │ ├── BG Plane.mat.meta │ ├── Capsule.mat │ ├── Capsule.mat.meta │ ├── Cuber_Blue Eye.mat │ ├── Cuber_Blue Eye.mat.meta │ ├── Cuber_Body.mat │ ├── Cuber_Body.mat.meta │ ├── Cuber_Green Eye.mat │ ├── Cuber_Green Eye.mat.meta │ ├── Cuber_Red Eye.mat │ ├── Cuber_Red Eye.mat.meta │ ├── Sphere_Deactive.mat │ ├── Sphere_Deactive.mat.meta │ ├── Sphere_Normal.mat │ └── Sphere_Normal.mat.meta ├── Materials_BuildInRP.unitypackage ├── Materials_BuildInRP.unitypackage.meta ├── Materials_URP.unitypackage ├── Materials_URP.unitypackage.meta ├── Playables.meta ├── Playables │ ├── 21 Extend_Timeline.playable │ ├── 21 Extend_Timeline.playable.meta │ ├── 21_1 Extend_Timeline_BezierSolution.playable │ ├── 21_1 Extend_Timeline_BezierSolution.playable.meta │ ├── 21_2 Extend_Timeline_DoTweenPro.playable │ └── 21_2 Extend_Timeline_DoTweenPro.playable.meta ├── Prefabs.meta ├── Prefabs │ ├── 3D.meta │ ├── 3D │ │ ├── Change Scene Manager.prefab │ │ ├── Change Scene Manager.prefab.meta │ │ ├── Cuber.prefab │ │ ├── Cuber.prefab.meta │ │ ├── Enivronment.prefab │ │ └── Enivronment.prefab.meta │ ├── EP.meta │ ├── EP │ │ ├── EP Child.prefab │ │ ├── EP Child.prefab.meta │ │ ├── EP Light Controller.prefab │ │ ├── EP Light Controller.prefab.meta │ │ ├── VideoEP Child.prefab │ │ └── VideoEP Child.prefab.meta │ ├── UI.meta │ └── UI │ │ ├── Slider.prefab │ │ ├── Slider.prefab.meta │ │ ├── State Indicator.prefab │ │ ├── State Indicator.prefab.meta │ │ ├── Text Area.prefab │ │ ├── Text Area.prefab.meta │ │ ├── UI Button.prefab │ │ ├── UI Button.prefab.meta │ │ ├── UI Toggle.prefab │ │ ├── UI Toggle.prefab.meta │ │ ├── Video Area.prefab │ │ └── Video Area.prefab.meta ├── Scenes.meta ├── Scenes │ ├── 0 BasicSetting.unity │ ├── 0 BasicSetting.unity.meta │ ├── 1 GroupSetting.unity │ ├── 1 GroupSetting.unity.meta │ ├── 10 Sequence.unity │ ├── 10 Sequence.unity.meta │ ├── 2 IDSetting.unity │ ├── 2 IDSetting.unity.meta │ ├── 21 Extend_Timeline.unity │ ├── 21 Extend_Timeline.unity.meta │ ├── 21_1 Extend_Timeline_BezierSolution.unity │ ├── 21_1 Extend_Timeline_BezierSolution.unity.meta │ ├── 21_2 Extend_Timeline_DoTweenPro.unity │ ├── 21_2 Extend_Timeline_DoTweenPro.unity.meta │ ├── 3 Coroutine.unity │ ├── 3 Coroutine.unity.meta │ ├── 31 Extend_VideoPlayer.unity │ ├── 31 Extend_VideoPlayer.unity.meta │ ├── 4 Param.unity │ ├── 4 Param.unity.meta │ ├── 51 Combined Use.unity │ └── 51 Combined Use.unity.meta ├── Scripts.meta ├── Scripts │ ├── Example_ChangeSceneManager.cs │ ├── Example_ChangeSceneManager.cs.meta │ ├── Example_SliderModifier.cs │ ├── Example_SliderModifier.cs.meta │ ├── Example_TransformTweener.cs │ └── Example_TransformTweener.cs.meta ├── Textures.meta ├── Textures │ ├── Video RT_Group 0.renderTexture │ ├── Video RT_Group 0.renderTexture.meta │ ├── Video RT_Group 1.renderTexture │ ├── Video RT_Group 1.renderTexture.meta │ ├── Video RT_Group 2.renderTexture │ ├── Video RT_Group 2.renderTexture.meta │ ├── Video RT_Sequence.renderTexture │ ├── Video RT_Sequence.renderTexture.meta │ ├── Video RT_Solo.renderTexture │ └── Video RT_Solo.renderTexture.meta ├── Threeyes.EventPlayer.Samples.asmdef ├── Threeyes.EventPlayer.Samples.asmdef.meta ├── Videos.meta └── Videos │ ├── DemoVideo1.mp4 │ ├── DemoVideo1.mp4.meta │ ├── DemoVideo2.mp4 │ ├── DemoVideo2.mp4.meta │ ├── DemoVideo3.mp4 │ └── DemoVideo3.mp4.meta ├── Threeyes.EventPlayer.asmdef ├── Threeyes.EventPlayer.asmdef.meta ├── locale.meta ├── locale ├── README-zh-CN.md └── README-zh-CN.md.meta ├── package.json └── package.json.meta /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## [4.0.3] 4 | - Fix: Unable to create correct Clip link when dragging EventPlayer instance onto Timeline Track. 5 | 6 | ## [4.0.2] 7 | - This update optimizes the code structure in the Core module. You may need to first delete the "Threeyes/Core" folder in the project and then import. 8 | 9 | 10 | ## [4.0.1] 11 | - Reduce dependencies on EP: Move CoroutineManager module to Core Library, move Timeline module to EventPlayer Library. If you have previously used components from these modules, you may need to change the referenced namespace. If you find duplicate code errors, please delete and reimport the entire Threeyes folder. 12 | 13 | ## [4.0.0] 14 | - Add Asmdef for each library. 15 | - Optimize Sequence related logic. 16 | - Provide basic Networking support. 17 | - Fix error caused by EventPlayer attempting to detect or version when opening project 18 | 19 | ## [3.0.0] 20 | ### Incompatibility Warning! Please backup your project before update to this version!Some class's name are changed to ensure consistency: 21 | - Eventplayer with param, such as: IntEventPlayer→EventPlayer_Int, TimelineEventPlayer→EventPlayer_PlayableInfo 22 | - Sequence, such as:EventPlayerSequence→Sequence_EventPlayer 23 | 24 | 25 | ## [2.8.0] 26 | ### Warning: To make the Timeline Plugin more felxible, I had remove TLEPListener_BezierWalker's [Go Target] property and replace it with EventPlayerTrack's [Binding] and EventPlayerClip's [BindingOverride]. If you had update this plugin from V2.7, Please set the binding before you play the Timeline, or else it will set the BezierWalkerWithTime's GameObject as default Target! 27 | - Add [Binding] property for EventPlayerTrack and EventPlayerClip, so we can override the target inside Timeline. 28 | - Add DoTweenPro support. 29 | 30 | ## [2.7.0] 31 | - Fix: Manual Invoke EventPlayer.PlayWithID cause Endless loop Error 32 | - Improve EventPlayerSequence's Hierarchy GUI Info. 33 | - Add BezierSolution support (Thanks to yasirkula again!). 34 | 35 | 36 | ## [2.6.0] 37 | - Fix Time Format display error 38 | - Fix reverse Play/Stop bug 39 | - Improve VideoEventPlayer Component 40 | 41 | ## [2.5.0] 42 | - Auto Detect and update EventPlayerSetting for newer version. 43 | 44 | ## [2.4.0] 45 | - Fix Error on build. 46 | 47 | ## [2.3.0] 48 | - Update Demo 49 | - Add Hierarchy Display for EventPlayerSequence 50 | 51 | ## [2.2.0] 52 | - Fix Error on build. 53 | 54 | ## [2.1.0] 55 | - Fix DelayEventPlayer's 'delay' problem 56 | - Add EventPlayerSequence Component 57 | - Add VideoEventPlayer Component 58 | - Provide "EventPlayer Setting" Window to config Extern plugin support. 59 | 60 | 61 | ## [2.0.0] 62 | ### Warning:We use EventPlayerClip's [IsFlip] property to change Clip's output process instead of TimelineEventPlayer's [IsReverse] property, be carefully if you use this feature before. 63 | - Now the Label in Hierarchy can show more details about EPs. 64 | - More improvement for CoroutineEventPlayerBase's subclass, check the "3 Coroutine" scene. 65 | - This version has lot's of changes, Please backup your work first! 66 | 67 | ## [1.7.0] 68 | Cheers! Now that every component that inherit from EventPlayer can be a 'Group' when the IsGroup property is checked.(EventPlayerGroup, you are fired!) Also, the EditorLabel on the Hierarchy will be Trim when there is not enough space. 69 | 70 | ## [1.6.0] 71 | - Now you can directly preview the EventPlayer reference of EventPlayerClip in Inspector! I promise that will save you tons of time! (Thanks to the Programmers of Cinemachine! ) 72 | 73 | ## [1.5.0] 74 | - Fix bug 75 | - EditorGUI improment. 76 | 77 | ## [1.4.0] 78 | - I am so sorry for the inconvenient, but I have to rename RepeatPlayer.duration to RepeatPlayer.defaultDuration, 79 | you may need to reassign this property, hope that don't bring you a lot of trouble. 80 | - Add Extra EditorGUI for TimelineEventPlayer, now it can show the playable info such as time or duration. 81 | 82 | ## [1.3.0] 83 | - Add Extra EditorGUI for EventPlayer, easier to modify property without using Inspector Window 84 | 85 | ## [1.2.0] 86 | - Small UI improvement 87 | - Replace System.Action with UnityAction 88 | 89 | ## [1.1.0] 90 | - Fix bug 91 | 92 | ## [1.0.0] 93 | - First release. -------------------------------------------------------------------------------- /CHANGELOG.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9a0dcf92a5d5c0344866484d7477b758 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Component.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0488aab0cbac8c542a88ecf0816ec838 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Component/Base.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cc697e63bbaffd743880a6e3fac21110 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Component/Base/EventPlayerForCompBase.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.Events; 5 | 6 | namespace Threeyes.EventPlayer 7 | { 8 | /// 9 | /// Work with Component that don't need to pass extra param 10 | /// 11 | public class EventPlayerForCompBase : EventPlayer 12 | where TComp : Component 13 | { 14 | #region Property & Field 15 | 16 | public TComp comp;//待绑定的组件 17 | public TComp Comp 18 | { 19 | get 20 | { 21 | if (!comp) 22 | comp = GetCompFunc(); 23 | return comp; 24 | } 25 | set 26 | { 27 | comp = value; 28 | } 29 | } 30 | 31 | #endregion 32 | 33 | #region Inner Method 34 | 35 | protected virtual TComp GetCompFunc() 36 | { 37 | if (this)//避免物体被销毁 38 | return this.GetComponent(); 39 | 40 | return null; 41 | } 42 | 43 | #endregion 44 | } 45 | } -------------------------------------------------------------------------------- /Component/Base/EventPlayerForCompBase.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5f64e53371393a947a3b6730635cecd3 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Component/Base/EventPlayerForCompWithParamBase.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using Threeyes.Core; 4 | using UnityEngine; 5 | using UnityEngine.Events; 6 | 7 | namespace Threeyes.EventPlayer 8 | { 9 | /// 10 | /// Manage Sepcify Component 11 | /// 12 | /// 13 | /// 14 | /// 15 | /// 16 | public class EventPlayerForCompWithParamBase : EventPlayerWithParamBase 17 | where TEP : EventPlayerWithParamBase 18 | where TUnityEvent : UnityEvent 19 | where TComp : Component 20 | { 21 | #region Property & Field 22 | 23 | public TComp Comp 24 | { 25 | get 26 | { 27 | if (!comp) 28 | comp = GetCompFunc(); 29 | return comp; 30 | } 31 | set 32 | { 33 | comp = value; 34 | } 35 | } 36 | 37 | [SerializeField] protected TComp comp;//The relate Component 38 | [SerializeField] protected GameObject goTarget;//The GameObject that Component attached to 39 | 40 | #endregion 41 | 42 | #region Inner Method 43 | 44 | protected virtual TComp GetCompFunc() 45 | { 46 | if (this && !goTarget && gameObject) 47 | goTarget = gameObject; 48 | 49 | if (goTarget)//避免物体被销毁导致丢失 50 | return goTarget.GetComponent(); 51 | 52 | return null; 53 | } 54 | 55 | #endregion 56 | 57 | #region Editor Method 58 | #if UNITY_EDITOR 59 | 60 | public override void SetInspectorGUISubProperty(GUIPropertyGroup group) 61 | { 62 | base.SetInspectorGUISubProperty(group); 63 | group.listProperty.Add(new GUIProperty(nameof(goTarget), "Comp")); 64 | } 65 | #endif 66 | #endregion 67 | } 68 | 69 | public class EventPlayerForCompWithParamBaseDummy : EventPlayer 70 | { 71 | [SerializeField] protected GameObject goTarget;//Maintain the reference 72 | 73 | #region Editor Method 74 | #if UNITY_EDITOR 75 | 76 | public override void SetInspectorGUISubProperty(GUIPropertyGroup group) 77 | { 78 | base.SetInspectorGUISubProperty(group); 79 | group.listProperty.Add(new GUIProperty(nameof(goTarget), "Comp")); 80 | } 81 | #endif 82 | #endregion 83 | } 84 | } -------------------------------------------------------------------------------- /Component/Base/EventPlayerForCompWithParamBase.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2eba60fbc8b288d4ebbf800c90f8841f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Component/Base/EventPlayerListener.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | namespace Threeyes.EventPlayer 6 | { 7 | /// 8 | /// For custom coding 9 | /// 10 | public class EventPlayerListener : MonoBehaviour, IEventPlayerHandler 11 | { 12 | public virtual void OnActiveDeactive(bool isActive) 13 | { 14 | } 15 | 16 | public virtual void OnPlay() 17 | { 18 | } 19 | 20 | public virtual void OnPlayStop(bool isPlay) 21 | { 22 | } 23 | 24 | public virtual void OnStop() 25 | { 26 | } 27 | } 28 | 29 | public interface IEventPlayerHandler 30 | { 31 | void OnPlayStop(bool isPlay); 32 | void OnPlay(); 33 | void OnStop(); 34 | void OnActiveDeactive(bool isActive); 35 | } 36 | 37 | 38 | 39 | } -------------------------------------------------------------------------------- /Component/Base/EventPlayerListener.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9ca980f89df127c48b6749175f270727 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Component/Base/EventPlayerWithParamBase.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ecf81d759e725d84c9ac8258cbc175b7 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Component/Base/EventPlayerWithParamListener.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | namespace Threeyes.EventPlayer 5 | { 6 | public class EventPlayerWithParamListener : EventPlayerListener, IEventPlayerWithParamHandler 7 | { 8 | 9 | public virtual void OnPlayWithParam(TParam value) 10 | { 11 | } 12 | 13 | public virtual void OnStopWithParam(TParam value) 14 | { 15 | } 16 | 17 | } 18 | 19 | public interface IEventPlayerWithParamHandler 20 | { 21 | void OnPlayWithParam(TParam value); 22 | void OnStopWithParam(TParam value); 23 | } 24 | 25 | } -------------------------------------------------------------------------------- /Component/Base/EventPlayerWithParamListener.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 355bf9aa9d22b3d4d8e87d82d88fd6b7 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Component/Base/IEventPlayerWithParam.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | /// 5 | /// PS: 该接口的作用是便于EventPlayerInspector鉴别EP类型 6 | /// 7 | namespace Threeyes.EventPlayer 8 | { 9 | public interface IEventPlayerWithParam 10 | { 11 | bool IsPlayWithParam { get; set; } 12 | bool IsStopWithParam { get; set; } 13 | 14 | string ValueToString { get; }//Editor Display usage 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Component/Base/IEventPlayerWithParam.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5e560ec4591fb744aa1dc952a034243e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Component/Base/Sequence_EventPlayerBase.cs: -------------------------------------------------------------------------------- 1 | using Threeyes.Core; 2 | namespace Threeyes.EventPlayer 3 | { 4 | public interface ISequence_EventPlayer : ISequence 5 | { 6 | /// 7 | /// 功能:Hierarchy中返回子EP的序号 8 | /// 9 | /// 10 | /// 11 | int FindIndexForDataEditor(EventPlayer data); 12 | } 13 | 14 | public class Sequence_EventPlayerBase : SequenceForCompBase, ISequence_EventPlayer 15 | where TEventPlayer : EventPlayer 16 | { 17 | #region Inner Method 18 | protected override void SetDataValid(TEventPlayer data) 19 | { 20 | data.IsActive = true; 21 | } 22 | protected override bool IsDataVaild(TEventPlayer data) 23 | { 24 | return data.IsActive; 25 | } 26 | protected override void SetDataFunc(TEventPlayer data, int index) 27 | { 28 | SetData_CustomFunc(data, index); 29 | base.SetDataFunc(data, index); 30 | } 31 | protected override void ResetDataFunc(TEventPlayer data, int index) 32 | { 33 | ResetData_CustomFunc(data, index); 34 | base.ResetDataFunc(data, index); 35 | } 36 | 37 | protected virtual void SetData_CustomFunc(TEventPlayer data, int index) 38 | { 39 | data.Play(); 40 | } 41 | protected virtual void ResetData_CustomFunc(TEventPlayer data, int index) 42 | { 43 | data.Stop(); 44 | } 45 | #endregion 46 | 47 | public int FindIndexForDataEditor(EventPlayer data) 48 | { 49 | if (IsLoadChildOnAwake && data is TEventPlayer eventPlayerReal) 50 | { 51 | return GetComponentsFromChild().IndexOf(eventPlayerReal); 52 | } 53 | return -1; 54 | } 55 | } 56 | } -------------------------------------------------------------------------------- /Component/Base/Sequence_EventPlayerBase.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e069bde8f4cc9d4448d75194294911d3 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Component/Coroutine.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7df4605f7fcf8fd4a8336044b9b1e7a6 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Component/Coroutine/CoroutineEventPlayerBase.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using Threeyes.Core; 5 | using UnityEngine; 6 | 7 | namespace Threeyes.EventPlayer 8 | { 9 | public abstract class CoroutineEventPlayerBase : EventPlayer 10 | { 11 | #region Property & Field 12 | 13 | public bool IsCoroutineRunning { get { return isCoroutineRunning; } set { isCoroutineRunning = value; } } 14 | public bool IsIgnoreTimeScale { get { return isIgnoreTimeScale; } set { isIgnoreTimeScale = value; } } 15 | protected float CurGameTime { get { return IsIgnoreTimeScale ? Time.realtimeSinceStartup : Time.time; } } 16 | protected float DeltaGameTime { get { return IsIgnoreTimeScale ? Time.unscaledDeltaTime : Time.deltaTime; } } 17 | protected bool HasDestoryed { get { return this == null; } } 18 | 19 | 20 | 21 | [SerializeField] 22 | [Tooltip("If set to ture, it will ignore the Time scale")] 23 | protected bool isIgnoreTimeScale = false; 24 | [SerializeField] 25 | protected bool isCoroutineRunning = false;//Is the CoroutineRunning 26 | protected UnityEngine.Coroutine cacheEnum; 27 | 28 | //Editor Display 29 | protected float CoroutineUsedTime { get { return coroutineUsedTime; } set { coroutineUsedTime = value; RepaintHierarchyWindow(); } } 30 | private float coroutineUsedTime = 0; 31 | 32 | #endregion 33 | 34 | #region Inner Method 35 | 36 | protected virtual void TryStopCoroutine() 37 | { 38 | if (cacheEnum != null) 39 | { 40 | CoroutineManager.StopCoroutineEx(cacheEnum); 41 | cacheEnum = null; 42 | } 43 | } 44 | protected override void StopFunc() 45 | { 46 | TryStopCoroutine();//In case the developer has manual stop the Coroutine 47 | base.StopFunc(); 48 | } 49 | 50 | #endregion 51 | 52 | #region Editor Method 53 | #if UNITY_EDITOR 54 | 55 | 56 | const string strCoroutineRunningSymbol1 = "▶"; 57 | const string strCoroutineRunningSymbol2 = "▷"; 58 | /// 59 | /// 根据已运行时间,显示对应的提示光标 60 | /// 61 | /// 62 | /// 63 | protected string GetRunningSymbol(float runedTime) 64 | { 65 | //定时显隐,模拟闪烁效果 66 | return (int)(runedTime * 2) % 2 == 0 ? strCoroutineRunningSymbol1 : strCoroutineRunningSymbol2; 67 | } 68 | 69 | public override void SetInspectorGUISubProperty(GUIPropertyGroup group) 70 | { 71 | base.SetInspectorGUISubProperty(group); 72 | group.listProperty.Add(new GUIProperty(nameof(isCoroutineRunning), "CoroutineRunning", isEnable: false));//Readonly 73 | group.listProperty.Add(new GUIProperty(nameof(isIgnoreTimeScale), "IgnoreTimeScale")); 74 | } 75 | 76 | #endif 77 | #endregion 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /Component/Coroutine/CoroutineEventPlayerBase.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b2ad60875542b1c498ffe3b1528ce1b9 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Component/Coroutine/DelayEventPlayer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1304f7ede51974f499ace04f87fdf475 3 | timeCreated: 1516345557 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /Component/Coroutine/RepeatEventPlayer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aa341de36c1cc9340bbaf550539a75b2 3 | timeCreated: 1516693524 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /Component/Coroutine/TempEventPlayer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using UnityEngine; 3 | using System.Text; 4 | using Threeyes.Core.Editor; 5 | using Threeyes.Core; 6 | #if UNITY_EDITOR 7 | using UnityEditor; 8 | #endif 9 | 10 | namespace Threeyes.EventPlayer 11 | { 12 | 13 | /// 14 | /// Invoke Play Event for a while, then Invoke Stop Event 15 | /// 16 | [AddComponentMenu(EditorDefinition_EventPlayer.AssetMenuPrefix_Action_Coroutine + "TempEventPlayer")] 17 | public class TempEventPlayer : CoroutineEventPlayerBase 18 | { 19 | #region Property & Field 20 | 21 | public bool IsContinuous { get { return isContinuous; } set { isContinuous = value; } } 22 | public float Duration { get { return defaultDuration; } set { defaultDuration = value; } } 23 | 24 | //[Header("Temp Setting")] 25 | [SerializeField] 26 | [Tooltip("Invoke Play Event on every frame, just like Update")] 27 | protected bool isContinuous = false; 28 | [SerializeField] 29 | [Tooltip("Total play time. if less than or equal to 0, it will never stop")] 30 | protected float defaultDuration = 1; 31 | 32 | #endregion 33 | 34 | #region Public Method 35 | 36 | public void TempPlay(float duration) 37 | { 38 | TryStopCoroutine(); 39 | cacheEnum = CoroutineManager.StartCoroutineEx(IETempContinuousPlay(duration)); 40 | } 41 | 42 | #endregion 43 | 44 | #region Inner Method 45 | 46 | protected override void PlayFunc() 47 | { 48 | TempPlay(Duration); 49 | } 50 | 51 | protected override void StopFunc() 52 | { 53 | IsCoroutineRunning = false; 54 | base.StopFunc(); 55 | } 56 | 57 | IEnumerator IETempContinuousPlay(float duration) 58 | { 59 | IsCoroutineRunning = true; 60 | SetStateFunc(EventPlayer_State.Played); 61 | 62 | #if UNITY_EDITOR 63 | CoroutineUsedTime = 0; 64 | if (IsLogOnPlay) 65 | print(name + " TempEventPlay!"); 66 | #endif 67 | 68 | base.PlayFunc(); 69 | if (IsPropertyValid(duration)) 70 | { 71 | float tempStartTime = CurGameTime; 72 | float leftTime = duration; 73 | while (leftTime >= 0) 74 | { 75 | if (IsContinuous) 76 | { 77 | base.PlayFunc(); 78 | } 79 | 80 | leftTime -= DeltaGameTime; 81 | 82 | #if UNITY_EDITOR 83 | CoroutineUsedTime += DeltaGameTime; 84 | #endif 85 | if (HasDestoryed)//In case get destroy 86 | yield break; 87 | yield return null; 88 | } 89 | StopFunc(); 90 | } 91 | else//Infinite 92 | { 93 | while (true) 94 | { 95 | if (IsContinuous) 96 | { 97 | base.PlayFunc(); 98 | } 99 | 100 | #if UNITY_EDITOR 101 | CoroutineUsedTime += DeltaGameTime; 102 | #endif 103 | 104 | if (HasDestoryed)//In case get destroy 105 | yield break; 106 | yield return null; 107 | } 108 | } 109 | } 110 | 111 | bool IsPropertyValid(float value) 112 | { 113 | return value > 0; 114 | } 115 | 116 | #endregion 117 | 118 | #region Editor Method 119 | 120 | #if UNITY_EDITOR 121 | 122 | //——MenuItem—— 123 | static string instName = "TempEP "; 124 | [MenuItem(strMenuItem_RootCoroutine + "TempEventPlayer", false, intCoroutineMenuOrder + 2)] 125 | public static void CreateTempEventPlayer() 126 | { 127 | EditorTool.CreateGameObjectAsChild(instName); 128 | } 129 | [MenuItem(strMenuItem_Root_Collection + "TempEPG Child", false, intCollectionMenuOrder + 6)] 130 | public static void CreateTempEventPlayerGroupChild() 131 | { 132 | var eventPlayer = EditorTool.CreateGameObjectAsChild("TempEPG "); 133 | eventPlayer.IsGroup = true; 134 | } 135 | //——Hierarchy GUI—— 136 | public override string ShortTypeName { get { return "T"; } } 137 | /// 138 | /// Show the key property of this class 139 | /// 140 | /// 141 | public override void SetHierarchyGUIProperty(StringBuilder sB) 142 | { 143 | base.SetHierarchyGUIProperty(sB); 144 | 145 | //Show Coroutine 146 | if (IsCoroutineRunning) 147 | { 148 | sbCache.Length = 0; 149 | sbCache.Append(GetRunningSymbol(CoroutineUsedTime)); 150 | sbCache.Append(CoroutineUsedTime.ToString("#0.00")).Append("s"); 151 | AddSplit(sB, sbCache); 152 | } 153 | 154 | 155 | //——Config—— 156 | sbCache.Length = 0; 157 | if (IsIgnoreTimeScale) 158 | sbCache.Append("Ⓘ "); 159 | if (IsContinuous) 160 | sbCache.Append("Ⓒ ");//Symbol from: http://www.fhdq.net 161 | 162 | if (IsPropertyValid(Duration)) 163 | { sbCache.Append(":").Append(Duration.ToString()).Append("s"); } 164 | else 165 | { sbCache.Append(":").Append("∞").Append("s"); } 166 | AddSplit(sB, sbCache); 167 | } 168 | 169 | //——Inspector GUI—— 170 | public override void SetInspectorGUISubProperty(GUIPropertyGroup group) 171 | { 172 | base.SetInspectorGUISubProperty(group); 173 | group.title = "Temp Setting"; 174 | group.listProperty.Add(new GUIProperty(nameof(isContinuous), "Continuous")); 175 | group.listProperty.Add(new GUIProperty(nameof(defaultDuration), "Duration")); 176 | } 177 | #endif 178 | #endregion 179 | } 180 | } 181 | -------------------------------------------------------------------------------- /Component/Coroutine/TempEventPlayer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9016a29dcbd1ff349b54bf8a68288507 3 | timeCreated: 1516351205 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /Component/EventPlayer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a862823d819b2434da07a9aff5488bef 3 | timeCreated: 1516761493 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /Component/EventPlayerInitManager.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using Threeyes.Core; 4 | using Threeyes.EventPlayer; 5 | using UnityEngine; 6 | namespace Threeyes.EventPlayer 7 | { 8 | /// 9 | /// Force All child EP to Init, useful for EP with ID that is hidden 10 | /// 11 | [DefaultExecutionOrder(-23000)] 12 | [AddComponentMenu(EditorDefinition_EventPlayer.AssetMenuPrefix_EventPlayer + "EventPlayerInitManager", -99)] 13 | public class EventPlayerInitManager : ComponentGroupBase 14 | { 15 | private void Awake() 16 | { 17 | Init(); 18 | } 19 | public void Init() 20 | { 21 | ForEachChildComponent((ep) => ep.Init()); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /Component/EventPlayerInitManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2da0171ed5fd2b044ae1588131111b54 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Component/Param.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 94daaad9f1b497a4e91e68e282be2394 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Component/Param/EventPlayer_Float.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using UnityEngine; 5 | using Threeyes.Core.Editor; 6 | using Threeyes.Core; 7 | #if UNITY_EDITOR 8 | #endif 9 | 10 | namespace Threeyes.EventPlayer 11 | { 12 | /// 13 | /// Event with float 14 | /// 15 | [AddComponentMenu(EditorDefinition_EventPlayer.AssetMenuPrefix_Action_Param + "EventPlayer_Float")] 16 | public class EventPlayer_Float : EventPlayerWithParamBase 17 | { 18 | #region Editor Method 19 | #if UNITY_EDITOR 20 | 21 | //——MenuItem—— 22 | static string instName = "FloatEP "; 23 | [UnityEditor.MenuItem(strMenuItem_Root_Param + "Float", false, intParamMenuOrder + 1)] 24 | public static void CreateFloatEventPlayer() 25 | { 26 | EditorTool.CreateGameObjectAsChild(instName); 27 | } 28 | 29 | //——Hierarchy GUI—— 30 | public override string ShortTypeName { get { return "F"; } } 31 | 32 | #endif 33 | #endregion 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Component/Param/EventPlayer_Float.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c3cd103f40021124cb1d36569affaf11 3 | timeCreated: 1525226974 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /Component/Param/EventPlayer_Int.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using UnityEngine; 5 | using Threeyes.Core.Editor; 6 | using Threeyes.Core; 7 | #if UNITY_EDITOR 8 | #endif 9 | namespace Threeyes.EventPlayer 10 | { /// 11 | /// Event with int 12 | /// 13 | [AddComponentMenu(EditorDefinition_EventPlayer.AssetMenuPrefix_Action_Param + "EventPlayer_Int")] 14 | public class EventPlayer_Int : EventPlayerWithParamBase 15 | { 16 | #region Editor Method 17 | #if UNITY_EDITOR 18 | 19 | //——MenuItem—— 20 | static string instName = "IntEP "; 21 | [UnityEditor.MenuItem(strMenuItem_Root_Param + "Int", false, intParamMenuOrder + 0)] 22 | public static void CreateFloatEventPlayer() 23 | { 24 | EditorTool.CreateGameObjectAsChild(instName); 25 | } 26 | 27 | //——Hierarchy GUI—— 28 | public override string ShortTypeName { get { return "I"; } } 29 | 30 | #endif 31 | #endregion 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Component/Param/EventPlayer_Int.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fff115c8599bc3e43888d7341f0ed760 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Component/Param/EventPlayer_String.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using UnityEngine; 5 | using Threeyes.Core.Editor; 6 | using Threeyes.Core; 7 | #if UNITY_EDITOR 8 | #endif 9 | 10 | namespace Threeyes.EventPlayer 11 | { 12 | /// 13 | /// Event with string 14 | /// 15 | [AddComponentMenu(EditorDefinition_EventPlayer.AssetMenuPrefix_Action_Param + "EventPlayer_String")] 16 | public class EventPlayer_String : EventPlayerWithParamBase 17 | { 18 | #region Editor Method 19 | #if UNITY_EDITOR 20 | 21 | //——MenuItem—— 22 | static string instName = "StringEP "; 23 | [UnityEditor.MenuItem(strMenuItem_Root_Param + "String", false, intParamMenuOrder + 2)] 24 | public static void CreateFloatEventPlayer() 25 | { 26 | EditorTool.CreateGameObjectAsChild(instName); 27 | } 28 | 29 | //——Hierarchy GUI—— 30 | public override string ShortTypeName { get { return "S"; } } 31 | 32 | #endif 33 | #endregion 34 | } 35 | } -------------------------------------------------------------------------------- /Component/Param/EventPlayer_String.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 14e8c3fe62561614eaefec9a39d81dec 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Component/SO.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0bbc2b9625ea5e74c99caabfb61b801a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Component/SO/SOEventPlayerSettingManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a068085e5ef358145aea8e47427c61b4 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Component/Sequence.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7d78ffaa8f79d6442815be40d1c8fc32 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Component/Sequence/Sequence_EventPlayer.cs: -------------------------------------------------------------------------------- 1 | using System.Text; 2 | using UnityEngine; 3 | #if UNITY_EDITOR 4 | using UnityEditor; 5 | using Threeyes.Core.Editor; 6 | #endif 7 | 8 | namespace Threeyes.EventPlayer 9 | { 10 | /// 11 | /// Manage List EP 12 | /// 13 | [AddComponentMenu(EditorDefinition_EventPlayer.AssetMenuPrefix_Action_Sequence + "Sequence_EventPlayer")] 14 | public class Sequence_EventPlayer : Sequence_EventPlayerBase 15 | { 16 | #region Editor Method 17 | #if UNITY_EDITOR 18 | //——MenuItem—— 19 | static string instGroupName = "EPS "; 20 | [MenuItem(EventPlayer.strMenuItem_Root_Collection + "EventPlayerSequence", false, EventPlayer.intCollectionMenuOrder + 2)] 21 | public static void CreateEventPlayerSequence() 22 | { 23 | EditorTool.CreateGameObject(instGroupName); 24 | } 25 | [MenuItem(EventPlayer.strMenuItem_Root_Collection + "EventPlayerSequence Child", false, EventPlayer.intCollectionMenuOrder + 3)] 26 | public static void CreateEventPlayerSequenceChild() 27 | { 28 | EditorTool.CreateGameObjectAsChild(instGroupName); 29 | } 30 | 31 | //——Hierarchy GUI—— 32 | public override string ShortTypeName { get { return "EPS"; } } 33 | 34 | public override void SetHierarchyGUIProperty(StringBuilder sB) 35 | { 36 | base.SetHierarchyGUIProperty(sB); 37 | } 38 | 39 | #endif 40 | #endregion 41 | } 42 | } -------------------------------------------------------------------------------- /Component/Sequence/Sequence_EventPlayer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a1ac11396ebcf5749b5e91ceb4f3a338 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Component/Wasted.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7fe64b172b670fd40915a84de256d65b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Component/Wasted/EventPlayerGroup_Wasted.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | using UnityEngine.Events; 4 | 5 | namespace Threeyes.EventPlayer { 6 | #if UNITY_EDITOR 7 | using UnityEditor; 8 | #endif 9 | 10 | /// 11 | /// Manage child EventPlayer 12 | /// 13 | [Obsolete("Use EventPlayer + isGroup=true instead")] 14 | public class EventPlayerGroup_Wasted : EventPlayer 15 | { 16 | private void OnValidate() 17 | { 18 | //Default Set IsGroup as true 19 | if (!IsGroup) 20 | { 21 | IsGroup = true; 22 | } 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Component/Wasted/EventPlayerGroup_Wasted.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 55cbe98804ea93547a62bc0d34339d53 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Definition.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8481cc8a55e757c479ea4d27c843621c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Definition/EditorDefinition_EventPlayer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | namespace Threeyes.EventPlayer 5 | { 6 | public static class EditorDefinition_EventPlayer 7 | { 8 | //——Asset Menu—— 9 | public const string AssetMenuPrefix_EventPlayer = "EventPlayer/"; 10 | 11 | public const string AssetMenuPrefix_Action_Coroutine = AssetMenuPrefix_EventPlayer + "Coroutine/"; 12 | public const string AssetMenuPrefix_Action_Param = AssetMenuPrefix_EventPlayer + "Param/"; 13 | public const string AssetMenuPrefix_Action_Sequence = AssetMenuPrefix_EventPlayer + "Sequence/"; 14 | } 15 | } -------------------------------------------------------------------------------- /Definition/EditorDefinition_EventPlayer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2bdb27356d28ff94f82364a9a6d64711 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 569fb5e2cb1928841a948fbf5443ac75 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/EventPlayerSettingWindow.cs: -------------------------------------------------------------------------------- 1 | #if UNITY_EDITOR 2 | using Threeyes.Core; 3 | using Threeyes.Core.Editor; 4 | using UnityEditor; 5 | using UnityEngine; 6 | using UnityEngine.Events; 7 | 8 | namespace Threeyes.EventPlayer.Editor 9 | { 10 | /// 11 | /// ToUpdate: 12 | /// -增加跳转链接(可以是文本跳转) 13 | /// 14 | public class EventPlayerSettingWindow : EditorWindow 15 | { 16 | const string windowTitle = "EventPlayer Setting"; 17 | static readonly Vector2 _WinSize = new Vector2(400, 400); 18 | 19 | SOEventPlayerSettingManager inst { get { return SOEventPlayerSettingManager.Instance; } } 20 | 21 | [MenuItem("Tools/Threeyes/" + windowTitle)] 22 | static void OpenWindow() 23 | { 24 | EventPlayerSettingWindow window = EditorWindow.GetWindow(true, windowTitle, true); 25 | window.minSize = _WinSize; 26 | window.maxSize = _WinSize; 27 | window.ShowUtility(); 28 | } 29 | 30 | const string lineBreak = "└─"; 31 | static Color colorGray = Color.white * 0.8f; 32 | static bool isSettingChange = false; 33 | void OnGUI() 34 | { 35 | EditorDrawerTool.RecordGUIColors(); 36 | EditorGUI.BeginChangeCheck(); 37 | 38 | //Display Setting 39 | GUILayout.BeginVertical(GUI.skin.box); 40 | EditorDrawerTool.DrawGroupTitleText("Display Setting"); 41 | EditorDrawerTool.DrawSpace(); 42 | DrawToggle(new GUIContent("Show property in Hierarchy Window"), () => inst.showPropertyInHierarchy, 43 | (b) => 44 | { 45 | inst.showPropertyInHierarchy = b; 46 | EditorApplication.RepaintHierarchyWindow(); 47 | } 48 | , ref isSettingChange); 49 | GUILayout.EndVertical(); 50 | 51 | //Other Plugin Support 52 | GUILayout.BeginVertical(GUI.skin.box); 53 | EditorDrawerTool.DrawGroupTitleText("Extern Support"); 54 | EditorDrawerTool.DrawSpace(); 55 | 56 | //————Third-Party———— 57 | //#TimeLine 58 | if (DrawToggle(new GUIContent("TimeLine", "Import Timeline before you active this!"), () => inst.useTimeline, (b) => inst.useTimeline = b, ref isSettingChange)) 59 | DrawSubLines("[Unity.Timeline]", "[Unity.Timeline.Editor]"); 60 | 61 | //#BezierSolution 62 | EditorDrawerTool.DrawSpace(); 63 | if (DrawToggle(new GUIContent("BezierSolution"), () => inst.useBezierSolution, (b) => inst.useBezierSolution = b, ref isSettingChange)) 64 | DrawSubLines("[BezierSolution.Runtime]"); 65 | 66 | //#DoTweenPro 67 | EditorDrawerTool.DrawSpace(); 68 | if (DrawToggle(new GUIContent("DoTweenPro"), () => inst.useDoTweenPro, (b) => inst.useDoTweenPro = b, ref isSettingChange)) 69 | { 70 | DrawSubLines("[DOTweenPro.Scripts] (If Exists)"); 71 | GUILayout.BeginHorizontal(); 72 | DrawLineBreak(); 73 | DrawToggle(new GUIContent("Preview (Still in development, Bug inside!)", "In preview mode, The Tween may not reset to origin state, if so, you can reload the scene without saving it"), () => inst.activeDoTweenProPreview, (b) => inst.activeDoTweenProPreview = b, ref isSettingChange); 74 | GUILayout.EndHorizontal(); 75 | } 76 | 77 | //————BuiltIn———— 78 | //#VideoPlayer 79 | EditorDrawerTool.DrawSpace(); 80 | DrawToggle(new GUIContent("VideoPlayer"), () => inst.useVideoPlayer, (b) => inst.useVideoPlayer = b, ref isSettingChange); 81 | 82 | EditorDrawerTool.DrawSpace(); 83 | EditorDrawerTool.RecordGUIColors(); 84 | 85 | if (GUILayout.Button("Apply")) 86 | { 87 | inst.RefreshDefine(); 88 | } 89 | GUI.color = colorGray; 90 | GUILayout.Label("—Select and click Apply, then wait for compile to complete—", EditorDrawerTool.gUITitleText);//Hints 91 | GUILayout.Label("—Also you should link to the require asmdef—", EditorDrawerTool.gUITitleText);//Hints 92 | EditorDrawerTool.RestoreGUIColors(); 93 | GUILayout.EndVertical(); 94 | 95 | //Plugin Info 96 | GUILayout.BeginVertical(GUI.skin.box); 97 | EditorDrawerTool.DrawGroupTitleText("Info"); 98 | GUILayout.Label("Version: " + inst.version); 99 | GUILayout.EndVertical(); 100 | 101 | 102 | if (EditorGUI.EndChangeCheck()) 103 | { 104 | EditorUtility.SetDirty(inst);//!需要调用该方法保存更改 105 | } 106 | 107 | //Debug.Log(isSettingChange); 108 | } 109 | 110 | void DrawSubLines(params string[] listText) 111 | { 112 | GUILayout.BeginHorizontal(); 113 | DrawLineBreak(); 114 | GUI.color = colorGray; 115 | GUILayout.Label(new GUIContent("Require asmdef: " + listText.ConnectToString("+"))); 116 | EditorDrawerTool.RestoreGUIColors(); 117 | GUILayout.EndHorizontal(); 118 | } 119 | 120 | void DrawLineBreak() 121 | { 122 | GUILayout.Label(lineBreak, GUILayout.MaxWidth(16)); 123 | } 124 | 125 | bool DrawToggle(GUIContent gUIContent, CustomFunc getter, UnityAction setter, ref bool isChanged) 126 | { 127 | bool curValue = getter(); 128 | bool result = EditorGUILayout.ToggleLeft(gUIContent, getter()); 129 | if (result != curValue) 130 | { 131 | if (setter != null) 132 | { 133 | Undo.RecordObject(inst, "Changed Property"); 134 | setter(result);//Change setting 135 | EditorUtility.SetDirty(inst); 136 | } 137 | isChanged |= true;//Mark as changed 138 | } 139 | return result; 140 | } 141 | } 142 | } 143 | #endif -------------------------------------------------------------------------------- /Editor/EventPlayerSettingWindow.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a701196ababd9ad499404dd173c0ca1a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Extend.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 72b2ca5e5166b5247a4340dcd7038f3f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/Extend/Timeline.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 10a0d56e772f9f64ca7a626b9f52043e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/Extend/Timeline/EventPlayerClipEditor.cs: -------------------------------------------------------------------------------- 1 | #if Threeyes_Timeline 2 | #if UNITY_EDITOR 3 | #if UNITY_2019_2_OR_NEWER//Unity2019.2及以上才有此接口 4 | using System.Collections.Generic; 5 | using UnityEngine; 6 | using UnityEngine.Timeline; 7 | using UnityEditor.Timeline; 8 | using UnityEngine.Playables; 9 | 10 | namespace Threeyes.EventPlayer.Editor 11 | { 12 | /// 13 | /// Warning: Require Unity.Timeline.Editor reference 14 | /// 15 | [CustomTimelineEditor(typeof(EventPlayerClip))] 16 | public class EventPlayerClipEditor : ClipEditor 17 | { 18 | Dictionary dicClipEPRef = new Dictionary();//缓存EventPlayerClip的EP赋值状态 19 | public override ClipDrawOptions GetClipOptions(TimelineClip clip) 20 | { 21 | var clipOptions = base.GetClipOptions(clip); 22 | if (dicClipEPRef.ContainsKey(clip.asset)) 23 | clipOptions.highlightColor = dicClipEPRef[clip.asset] ? Color.green * 0.8f : Color.red * 0.8f;//根据是否有引用,更新Clip的颜色 24 | return clipOptions; 25 | } 26 | 27 | public override void GetSubTimelines(TimelineClip clip, PlayableDirector director, List subTimelines) 28 | { 29 | EventPlayerClip eventPlayerClip = clip.asset as EventPlayerClip; 30 | EventPlayer eventPlayer = eventPlayerClip.eventPlayer.Resolve(director); 31 | dicClipEPRef[clip.asset] = eventPlayer != null; 32 | base.GetSubTimelines(clip, director, subTimelines); 33 | } 34 | } 35 | } 36 | #endif 37 | #endif 38 | #endif 39 | -------------------------------------------------------------------------------- /Editor/Extend/Timeline/EventPlayerClipEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: afdba6be9f003874a8d9e882f8d52920 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Extend/Timeline/EventPlayerTrackEditor.cs: -------------------------------------------------------------------------------- 1 | #if Threeyes_Timeline 2 | //#if UNITY_EDITOR 3 | //#if UNITY_2019_2_OR_NEWER//Unity2019.2及以上才有此接口 4 | //namespace Threeyes.CommonEditor 5 | //{ 6 | // using System.Collections.Generic; 7 | // using UnityEngine; 8 | // using UnityEngine.Timeline; 9 | // using UnityEditor.Timeline; 10 | // using Threeyes; 11 | // using UnityEngine.Playables; 12 | // using global::Threeyes.EventPlayer; 13 | 14 | // /// 15 | // /// ToAdd: 1.在binding旁边加上Track名字 16 | // /// 17 | // public class EventPlayerTrackEditor : TrackEditor 18 | // { 19 | 20 | // } 21 | //} 22 | //#endif 23 | //#endif 24 | #endif 25 | -------------------------------------------------------------------------------- /Editor/Extend/Timeline/EventPlayerTrackEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5621f22914df8a143a180dbfe0b7e749 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Extend/Timeline/InspectorView_EventPlayerClip.cs: -------------------------------------------------------------------------------- 1 | #if Threeyes_Timeline 2 | #if UNITY_EDITOR 3 | using System.Collections.Generic; 4 | using Threeyes.Core.Editor; 5 | using UnityEditor; 6 | using UnityEngine; 7 | 8 | namespace Threeyes.EventPlayer.Editor 9 | { 10 | /// 11 | /// Bug: 其他绑定的Component可能不会及时更新 12 | /// 13 | [CanEditMultipleObjects] 14 | [CustomEditor(typeof(EventPlayerClip))] 15 | public class InspectorView_EventPlayerClip : BaseClipEditor 16 | { 17 | private SerializedProperty mserialPropertyEventPlayer = null; 18 | private static readonly GUIContent tipsLabel = new GUIContent("Event Player", "Event Player / TimelineEventPlayer"); 19 | 20 | /// 21 | /// 需要排除的物体 22 | /// 23 | /// 24 | protected override List GetExcludedPropertiesInInspector() 25 | { 26 | List excluded = base.GetExcludedPropertiesInInspector(); 27 | excluded.Add(FieldPath(x => x.eventPlayer)); 28 | return excluded; 29 | } 30 | 31 | 32 | public override void OnInspectorGUI() 33 | { 34 | if (serializedObject == null) 35 | return; 36 | 37 | BeginInspector(); 38 | 39 | EditorGUI.indentLevel = 0; // otherwise subeditor layouts get screwed up 40 | EditorGUI.BeginChangeCheck(); 41 | 42 | //Draw EP Field 43 | mserialPropertyEventPlayer = FindProperty(x => x.eventPlayer); 44 | EventPlayer ep = mserialPropertyEventPlayer.exposedReferenceValue as EventPlayer; 45 | if (ep != null) 46 | { 47 | //Todo:如果是刚拖进来,那就根据参数设置其长度 48 | EditorGUILayout.PropertyField(mserialPropertyEventPlayer, tipsLabel); 49 | } 50 | else//点击创建EP 51 | { 52 | GUIContent createLabel = new GUIContent("Create"); 53 | Vector2 createSize = GUI.skin.button.CalcSize(createLabel); 54 | 55 | Rect rect = EditorGUILayout.GetControlRect(true); 56 | rect.width -= createSize.x; 57 | 58 | EditorGUI.PropertyField(rect, mserialPropertyEventPlayer, tipsLabel); 59 | rect.x += rect.width; rect.width = createSize.x; 60 | if (GUI.Button(rect, createLabel)) 61 | { 62 | ep = EventPlayer.CreateEventPlayer(false); 63 | mserialPropertyEventPlayer.exposedReferenceValue = ep; 64 | } 65 | serializedObject.ApplyModifiedProperties(); 66 | } 67 | EditorDrawerTool.DrawSpace(); 68 | 69 | //只绘制未在Inspector显示的代码.以下代码复制自:DrawRemainingPropertiesInInspector 70 | DrawPropertiesExcluding(serializedObject, GetExcludedPropertiesInInspector().ToArray()); 71 | 72 | if (EditorGUI.EndChangeCheck()) 73 | { 74 | serializedObject.ApplyModifiedProperties(); 75 | //EditorUtility.SetDirty(target);//!因为Target是ScriptableObject,不需要调用该方法保存更改 76 | } 77 | 78 | //只有当EP不为空才绘制其物体所有的Component 79 | if (ep != null) 80 | DrawSubEditors(ep); 81 | } 82 | 83 | 84 | int flags; 85 | } 86 | } 87 | #endif 88 | #endif 89 | -------------------------------------------------------------------------------- /Editor/Extend/Timeline/InspectorView_EventPlayerClip.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bd9d5e9e5d7e8c5499b036b6d36ab3c3 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/HierarchyView_EventPlayer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 83afbbbdcf025304da557b8714845fc2 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/InspectorView_EventPlayer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8d34cf722a0495f48afad06c9befeaf6 3 | timeCreated: 1526096053 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /Editor/Resources.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 396e7eb7f2a3eaa42b716980802b06d1 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/Resources/Icons.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 02949093e0fe56f4eac9768157799609 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/Resources/Icons/DisplayBG.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Threeyes/EventPlayer/c6fe32e7510eec5ec3f734073b415786be591010/Editor/Resources/Icons/DisplayBG.psd -------------------------------------------------------------------------------- /Editor/Resources/Icons/DisplayBG.psd.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c56a7edc44604344e9bc6927c1ee6c52 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 7 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: Android 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | spriteSheet: 95 | serializedVersion: 2 96 | sprites: [] 97 | outline: [] 98 | physicsShape: [] 99 | bones: [] 100 | spriteID: 5e97eb03825dee720800000000000000 101 | vertices: [] 102 | indices: 103 | edges: [] 104 | weights: [] 105 | spritePackingTag: 106 | pSDRemoveMatte: 0 107 | pSDShowRemoveMatteOption: 1 108 | userData: 109 | assetBundleName: 110 | assetBundleVariant: 111 | -------------------------------------------------------------------------------- /Editor/Resources/Icons/EPSkin.guiskin.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ff9de68cc58f3684d98a57464bbc6a50 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/Resources/Icons/EPToggleBG_Off.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Threeyes/EventPlayer/c6fe32e7510eec5ec3f734073b415786be591010/Editor/Resources/Icons/EPToggleBG_Off.psd -------------------------------------------------------------------------------- /Editor/Resources/Icons/EPToggleBG_Off.psd.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 558f060a0b35eaa4a882d1414378db65 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 7 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: Android 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | spriteSheet: 95 | serializedVersion: 2 96 | sprites: [] 97 | outline: [] 98 | physicsShape: [] 99 | bones: [] 100 | spriteID: 5e97eb03825dee720800000000000000 101 | vertices: [] 102 | indices: 103 | edges: [] 104 | weights: [] 105 | spritePackingTag: 106 | pSDRemoveMatte: 0 107 | pSDShowRemoveMatteOption: 1 108 | userData: 109 | assetBundleName: 110 | assetBundleVariant: 111 | -------------------------------------------------------------------------------- /Editor/Resources/Icons/EPToggleBG_On.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Threeyes/EventPlayer/c6fe32e7510eec5ec3f734073b415786be591010/Editor/Resources/Icons/EPToggleBG_On.psd -------------------------------------------------------------------------------- /Editor/Resources/Icons/EPToggleBG_On.psd.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 13e862a0b3246c24294c0736cc371bb6 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 0 30 | seamlessCubemap: 0 31 | textureFormat: 1 32 | maxTextureSize: 2048 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: -1 36 | aniso: -1 37 | mipBias: -100 38 | wrapU: 1 39 | wrapV: 1 40 | wrapW: -1 41 | nPOTScale: 0 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 1 45 | spriteExtrude: 1 46 | spriteMeshType: 1 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 100 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 1 52 | alphaUsage: 1 53 | alphaIsTransparency: 1 54 | spriteTessellationDetail: -1 55 | textureType: 8 56 | textureShape: 1 57 | singleChannelComponent: 0 58 | maxTextureSizeSet: 0 59 | compressionQualitySet: 0 60 | textureFormatSet: 0 61 | ignorePngGamma: 0 62 | applyGammaDecoding: 1 63 | platformSettings: 64 | - serializedVersion: 3 65 | buildTarget: DefaultTexturePlatform 66 | maxTextureSize: 2048 67 | resizeAlgorithm: 0 68 | textureFormat: -1 69 | textureCompression: 1 70 | compressionQuality: 50 71 | crunchedCompression: 0 72 | allowsAlphaSplitting: 0 73 | overridden: 0 74 | androidETC2FallbackOverride: 0 75 | forceMaximumCompressionQuality_BC6H_BC7: 1 76 | - serializedVersion: 3 77 | buildTarget: Standalone 78 | maxTextureSize: 2048 79 | resizeAlgorithm: 0 80 | textureFormat: -1 81 | textureCompression: 1 82 | compressionQuality: 50 83 | crunchedCompression: 0 84 | allowsAlphaSplitting: 0 85 | overridden: 0 86 | androidETC2FallbackOverride: 0 87 | forceMaximumCompressionQuality_BC6H_BC7: 1 88 | - serializedVersion: 3 89 | buildTarget: Android 90 | maxTextureSize: 2048 91 | resizeAlgorithm: 0 92 | textureFormat: -1 93 | textureCompression: 1 94 | compressionQuality: 50 95 | crunchedCompression: 0 96 | allowsAlphaSplitting: 0 97 | overridden: 0 98 | androidETC2FallbackOverride: 0 99 | forceMaximumCompressionQuality_BC6H_BC7: 1 100 | spriteSheet: 101 | serializedVersion: 2 102 | sprites: [] 103 | outline: [] 104 | physicsShape: [] 105 | bones: [] 106 | spriteID: 5e97eb03825dee720800000000000000 107 | internalID: 0 108 | vertices: [] 109 | indices: 110 | edges: [] 111 | weights: [] 112 | secondaryTextures: [] 113 | spritePackingTag: 114 | pSDRemoveMatte: 0 115 | pSDShowRemoveMatteOption: 1 116 | userData: 117 | assetBundleName: 118 | assetBundleVariant: 119 | -------------------------------------------------------------------------------- /Editor/Resources/Icons/SwitchToggleBG_Off.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Threeyes/EventPlayer/c6fe32e7510eec5ec3f734073b415786be591010/Editor/Resources/Icons/SwitchToggleBG_Off.psd -------------------------------------------------------------------------------- /Editor/Resources/Icons/SwitchToggleBG_Off.psd.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9dcaeb3684fc35c44ab18cd2af56106f 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 7 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: Android 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | spriteSheet: 95 | serializedVersion: 2 96 | sprites: [] 97 | outline: [] 98 | physicsShape: [] 99 | bones: [] 100 | spriteID: 5e97eb03825dee720800000000000000 101 | vertices: [] 102 | indices: 103 | edges: [] 104 | weights: [] 105 | spritePackingTag: 106 | pSDRemoveMatte: 0 107 | pSDShowRemoveMatteOption: 1 108 | userData: 109 | assetBundleName: 110 | assetBundleVariant: 111 | -------------------------------------------------------------------------------- /Editor/Resources/Icons/SwitchToggleBG_On.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Threeyes/EventPlayer/c6fe32e7510eec5ec3f734073b415786be591010/Editor/Resources/Icons/SwitchToggleBG_On.psd -------------------------------------------------------------------------------- /Editor/Resources/Icons/SwitchToggleBG_On.psd.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c7dfe3de283c4af4599003fd03a4ffdb 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 7 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 4, y: 4, z: 4, w: 4} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: Android 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | spriteSheet: 95 | serializedVersion: 2 96 | sprites: [] 97 | outline: [] 98 | physicsShape: [] 99 | bones: [] 100 | spriteID: 54b151602052b0c44be89b2dca2baa15 101 | vertices: [] 102 | indices: 103 | edges: [] 104 | weights: [] 105 | spritePackingTag: 106 | pSDRemoveMatte: 0 107 | pSDShowRemoveMatteOption: 0 108 | userData: 109 | assetBundleName: 110 | assetBundleVariant: 111 | -------------------------------------------------------------------------------- /Editor/Threeyes.EventPlayer.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Threeyes.EventPlayer.Editor", 3 | "rootNamespace": "", 4 | "references": [ 5 | "GUID:b2435c17de217264ebdae08cf9d32e1d", 6 | "GUID:5861f409ea7a0d943950d9a0a572e046", 7 | "GUID:f06555f75b070af458a003d92f9efb00", 8 | "GUID:02f771204943f4a40949438e873e3eff" 9 | ], 10 | "includePlatforms": [ 11 | "Editor" 12 | ], 13 | "excludePlatforms": [], 14 | "allowUnsafeCode": false, 15 | "overrideReferences": false, 16 | "precompiledReferences": [], 17 | "autoReferenced": true, 18 | "defineConstraints": [], 19 | "versionDefines": [], 20 | "noEngineReferences": false 21 | } -------------------------------------------------------------------------------- /Editor/Threeyes.EventPlayer.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 03d8d616c65d99f4eb5339d50e1c7f2d 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Extend.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9fa8e689d9227824ea7fd7f5a877e320 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Extend/BezierSolution.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fe74978ba7273c34caf4ae6c00d18475 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Extend/BezierSolution/TLEPListener_BezierWalker.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | #if Threeyes_BezierSolution 3 | using BezierSolution; 4 | #endif 5 | namespace Threeyes.EventPlayer 6 | { 7 | public class TLEPListener_BezierWalker : 8 | #if Threeyes_BezierSolution 9 | TLEPListenerForCompBase 10 | #else 11 | TLEPListenerForCompBaseDummy 12 | #endif 13 | { 14 | 15 | #region Property & Field 16 | 17 | public GameObject goSplineOverride;//Override the Default BezierSpline 18 | 19 | #endregion 20 | 21 | #if Threeyes_BezierSolution 22 | 23 | Transform cacheTarget; 24 | public override void OnPlayWithParam(PlayableInfo value) 25 | { 26 | if (value.clipState == ClipState.BehaviourPlay) 27 | { 28 | if (Comp) 29 | { 30 | if (Comp.enabled) 31 | { 32 | Comp.enabled = false;//Stop Update 33 | } 34 | cacheTarget = GetTarget(value); 35 | 36 | if (goSplineOverride) 37 | Comp.spline = goSplineOverride.GetComponent(); 38 | } 39 | } 40 | switch (value.clipState) 41 | { 42 | case ClipState.BehaviourPlay: 43 | case ClipState.ProcessFrame: 44 | case ClipState.BehaviourPause: 45 | Evaluate(value); 46 | break; 47 | } 48 | } 49 | public override void OnReset(PlayableInfo value) 50 | { 51 | Evaluate(value); 52 | } 53 | 54 | public override void OnComplete(PlayableInfo value) 55 | { 56 | Evaluate(value); 57 | } 58 | 59 | #region Inner Method 60 | Transform GetTarget(PlayableInfo value) 61 | { 62 | return value.binding ? value.binding.transform : Comp.transform; 63 | } 64 | 65 | void Evaluate(PlayableInfo value) 66 | { 67 | Evaluate(value.subPercent, !value.isFlip); 68 | } 69 | 70 | void Evaluate(float normalizedT, bool isForward) 71 | { 72 | if (!Comp) 73 | return; 74 | if (!Comp.spline) 75 | return; 76 | if (!Comp.spline.gameObject.activeInHierarchy)//隐藏时不调用 77 | return; 78 | 79 | if (!cacheTarget) 80 | return; 81 | if (!cacheTarget.gameObject.activeInHierarchy) 82 | return; 83 | 84 | float _normalizedT = Comp.highQuality ? Comp.spline.evenlySpacedPoints.GetNormalizedTAtPercentage(normalizedT) : normalizedT;//Smoothing 85 | 86 | //Position 87 | cacheTarget.position = Comp.spline.GetPoint(_normalizedT); 88 | 89 | //Rotation 90 | if (Comp.lookAt == LookAtMode.Forward) 91 | { 92 | BezierSpline.Segment segment = Comp.spline.GetSegmentAt(_normalizedT); 93 | Quaternion targetRotation; 94 | if (isForward) 95 | targetRotation = Quaternion.LookRotation(segment.GetTangent(), segment.GetNormal()); 96 | else 97 | targetRotation = Quaternion.LookRotation(-segment.GetTangent(), segment.GetNormal()); 98 | 99 | cacheTarget.rotation = targetRotation; 100 | } 101 | else if (Comp.lookAt == LookAtMode.SplineExtraData)//Wait for extraDataLerpAsQuaternionFunction to expost 102 | cacheTarget.rotation = Comp.spline.GetExtraData(_normalizedT, extraDataLerpAsQuaternionFunction); 103 | } 104 | 105 | protected static readonly ExtraDataLerpFunction extraDataLerpAsQuaternionFunction = InterpolateExtraDataAsQuaternion; 106 | private static BezierPoint.ExtraData InterpolateExtraDataAsQuaternion(BezierPoint.ExtraData data1, BezierPoint.ExtraData data2, float normalizedT) 107 | { 108 | return Quaternion.LerpUnclamped(data1, data2, normalizedT); 109 | } 110 | 111 | #endregion 112 | 113 | #else 114 | const string tipsInfo = "You need to open the Setting Window and active BezierSolution support!"; 115 | [Header(tipsInfo)] 116 | public string tips = tipsInfo; 117 | #endif 118 | } 119 | } 120 | -------------------------------------------------------------------------------- /Extend/BezierSolution/TLEPListener_BezierWalker.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 446f500681f460042a89fcfce8cc96c2 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Extend/DOTweenPro.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2d1b5028fbf90b24ea616dc26ee41827 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Extend/DOTweenPro/DOTweenPreviewManagerEx.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f1f43b9db84bff8438c03779b0006522 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Extend/DOTweenPro/LazyExtension_DoTweenPro.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5d0a4614852624643965e6222ae8a0da 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Extend/DOTweenPro/TLEPListener_DoTween.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7a78da0b957b99e46a4f2dba4f9e942f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Extend/Timeline.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 27b356442e2a0bb45ac5f63e3b164672 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Extend/Timeline/Base.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 43210147b911d25439542238dfc3f259 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Extend/Timeline/Base/BehaviourBase.cs: -------------------------------------------------------------------------------- 1 | //Compate with Company Plugin 2 | #if UNITY_2020_1_OR_NEWER 3 | #define NewVersion 4 | #else//旧版本直接激活 5 | #define Active 6 | #endif 7 | #if NewVersion && USE_Timeline 8 | #define Active 9 | #endif 10 | 11 | #if Threeyes_Timeline 12 | #define Active 13 | #endif 14 | 15 | #if Active 16 | using UnityEngine; 17 | using UnityEngine.Playables; 18 | namespace Threeyes.EventPlayer 19 | { 20 | [System.Serializable] 21 | public abstract class BehaviourBase : PlayableBehaviour 22 | { 23 | public override void OnBehaviourPause(Playable playable, FrameData info) 24 | { 25 | //Prevent get call on Timeline Start https://forum.unity.com/threads/release-event-player-visual-play-and-organize-unityevent.536984/#post-3605916 26 | if (playable.GetRootTime() > 0) 27 | OnBehaviourPauseFunc(playable, info); 28 | else 29 | { 30 | OnBehaviourResetFunc(playable, info); 31 | } 32 | } 33 | 34 | public virtual void OnBehaviourPauseFunc(Playable playable, FrameData info) 35 | { 36 | 37 | } 38 | 39 | public virtual void OnBehaviourResetFunc(Playable playable, FrameData info) 40 | { 41 | 42 | } 43 | } 44 | 45 | [System.Serializable] 46 | public abstract class BehaviourBase : BehaviourBase 47 | { 48 | public TBinding trackBinding; 49 | } 50 | 51 | //PS:放到这里方便重用宏定义 52 | public static class LazyExtension_Timeline 53 | { 54 | public static float GetPercent(this Playable playable) 55 | { 56 | return (float)(playable.GetTime() / playable.GetDuration()); 57 | } 58 | 59 | /// 60 | /// 返回顶层的时间 61 | /// 62 | /// 63 | /// 64 | public static double GetRootTime(this Playable playable) 65 | { 66 | return playable.GetGraph().GetRootPlayable(0).GetTime(); 67 | } 68 | public static double GetRootDuration(this Playable playable) 69 | { 70 | return playable.GetGraph().GetRootPlayable(0).GetDuration(); 71 | } 72 | 73 | public static PlayableDirector GetDirector(this Playable playable) 74 | { 75 | //https://forum.unity.com/threads/accessing-playable-director-from-a-track-to-get-the-current-time.503319/ 76 | return playable.GetGraph().GetResolver() as PlayableDirector; 77 | } 78 | 79 | public static T TryResolve(this ExposedReference target, IExposedPropertyTable resolver) where T : Object 80 | { 81 | T result = default(T); 82 | //if (target != null) 83 | result = target.Resolve(resolver); 84 | return result; 85 | } 86 | } 87 | } 88 | #endif 89 | -------------------------------------------------------------------------------- /Extend/Timeline/Base/BehaviourBase.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9797e34f225dd624e98f9e6439c967ae 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Extend/Timeline/Base/ClipBase.cs: -------------------------------------------------------------------------------- 1 | //Compate with Company Plugin 2 | #if UNITY_2020_1_OR_NEWER 3 | #define NewVersion 4 | #else//旧版本直接激活 5 | #define Active 6 | #endif 7 | #if NewVersion && USE_Timeline 8 | #define Active 9 | #endif 10 | 11 | #if Threeyes_Timeline 12 | #define Active 13 | #endif 14 | #if Active 15 | using System.Collections; 16 | using System.Collections.Generic; 17 | using UnityEngine; 18 | using UnityEngine.Playables; 19 | using UnityEngine.Timeline; 20 | namespace Threeyes.EventPlayer 21 | { 22 | [System.Serializable] 23 | public class ClipBase : PlayableAsset, ITimelineClipAsset 24 | where TBehaviour : BehaviourBase, new() 25 | { 26 | public TTrack track { get; set; } 27 | 28 | public virtual ClipCaps clipCaps 29 | { 30 | get { return ClipCaps.All; } 31 | } 32 | 33 | public override Playable CreatePlayable(PlayableGraph graph, GameObject owner) 34 | { 35 | ScriptPlayable playable = ScriptPlayable.Create(graph); 36 | TBehaviour clone = playable.GetBehaviour(); 37 | 38 | InitClone(clone, graph, owner); 39 | return playable; 40 | } 41 | 42 | public virtual void InitClone(TBehaviour clone, PlayableGraph graph, GameObject owner) 43 | { 44 | } 45 | } 46 | 47 | public class ClipBase : ClipBase 48 | where TBehaviour : BehaviourBase, new() 49 | where TBinding : Object 50 | { 51 | public Object binding { get; set; } 52 | 53 | public override void InitClone(TBehaviour clone, PlayableGraph graph, GameObject owner) 54 | { 55 | clone.trackBinding = binding as TBinding; 56 | } 57 | } 58 | 59 | [System.Serializable] 60 | public class ClipBaseWithOverride : ClipBase 61 | where TBehaviour : BehaviourBase, new() 62 | where TBinding : Object 63 | { 64 | 65 | //如果不想太多Track,可以用bindingOverride(Bug:在创建Clip时,Editor只针对第一个ExposedReference自动获取,所以改为由Clip自己定义该字段而不是使用共用的) 66 | public ExposedReference bindingOverride;//PS:Nullable 67 | 68 | public override void InitClone(TBehaviour clone, PlayableGraph graph, GameObject owner) 69 | { 70 | TBinding bindingOverrideObj = bindingOverride.Resolve(graph.GetResolver()); 71 | clone.trackBinding = bindingOverrideObj ? bindingOverrideObj : binding as TBinding; 72 | } 73 | } 74 | } 75 | #endif 76 | -------------------------------------------------------------------------------- /Extend/Timeline/Base/ClipBase.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7c0ed2e8f4b00ee4a81271f795ca8233 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Extend/Timeline/Base/MixerBehaviourBase.cs: -------------------------------------------------------------------------------- 1 | //Compate with Company Plugin 2 | #if UNITY_2020_1_OR_NEWER 3 | #define NewVersion 4 | #else//旧版本直接激活 5 | #define Active 6 | #endif 7 | #if NewVersion && USE_Timeline 8 | #define Active 9 | #endif 10 | 11 | #if Threeyes_Timeline 12 | #define Active 13 | #endif 14 | #if Active 15 | using System; 16 | using UnityEngine; 17 | using UnityEngine.Playables; 18 | 19 | namespace Threeyes.EventPlayer 20 | { 21 | public class MixerBehaviourBase : PlayableBehaviour where TBehaviour : class, IPlayableBehaviour, new() 22 | { 23 | //// NOTE: This function is called at runtime and edit time. Keep that in mind when setting the values of properties. 24 | //public override void ProcessFrame(Playable playable, FrameData info, object playerData) 25 | //{ 26 | // int inputCount = playable.GetInputCount(); 27 | 28 | // for (int i = 0; i < inputCount; i++) 29 | // { 30 | // float inputWeight = playable.GetInputWeight(i); 31 | // ScriptPlayable inputPlayable = (ScriptPlayable)playable.GetInput(i); 32 | // TBehaviour input = inputPlayable.GetBehaviour(); 33 | 34 | // // Use the above variables to process each frame of this playable. 35 | // } 36 | //} 37 | } 38 | } 39 | #endif 40 | -------------------------------------------------------------------------------- /Extend/Timeline/Base/MixerBehaviourBase.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f43f67c22870eb749b3cb12d236bc210 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Extend/Timeline/Base/TrackBase.cs: -------------------------------------------------------------------------------- 1 | //Compate with Company Plugin 2 | #if UNITY_2020_1_OR_NEWER 3 | #define NewVersion 4 | #else//旧版本直接激活 5 | #define Active 6 | #endif 7 | #if NewVersion && USE_Timeline 8 | #define Active 9 | #endif 10 | 11 | #if Threeyes_Timeline 12 | #define Active 13 | #endif 14 | #if Active 15 | using UnityEngine; 16 | using UnityEngine.Playables; 17 | using UnityEngine.Timeline; 18 | 19 | namespace Threeyes.EventPlayer 20 | { 21 | public abstract class TrackBase : TrackAsset 22 | where TMixBehaviour : class, IPlayableBehaviour, new() 23 | where TBehaviour : BehaviourBase, new() 24 | where TClip : ClipBase 25 | where TTrack : TrackAsset 26 | { 27 | /// 28 | /// Get Call when you change the content of Track: 29 | /// 1.Drag/Create/Delete Clip 30 | /// 2.Change binding object 31 | /// 32 | /// 33 | /// 34 | /// 35 | /// 36 | public override Playable CreateTrackMixer(PlayableGraph graph, GameObject go, int inputCount) 37 | { 38 | InitTrack(graph, go, inputCount); 39 | return ScriptPlayable.Create(graph, inputCount); 40 | } 41 | 42 | /// 43 | /// 初始化Track 44 | /// 45 | /// 46 | /// 47 | /// 48 | protected virtual void InitTrack(PlayableGraph graph, GameObject go, int inputCount) 49 | { 50 | foreach (TimelineClip timelineClip in GetClips()) 51 | { 52 | var clip = timelineClip.asset as TClip; 53 | if (clip != null) 54 | { 55 | InitClip(timelineClip, clip, graph, go, inputCount); 56 | } 57 | } 58 | } 59 | 60 | /// 61 | /// 初始化单个Clip 62 | /// 63 | /// 64 | /// 65 | /// 66 | /// 67 | /// 68 | protected virtual void InitClip(TimelineClip timelineClip, TClip clip, PlayableGraph graph, GameObject go, int inputCount) 69 | { 70 | } 71 | 72 | ///// 73 | ///// 创建一个Clip时调用 74 | ///// 75 | ///// 76 | //protected override void OnCreateClip(TimelineClip clip) 77 | //{ 78 | // base.OnCreateClip(clip); 79 | //} 80 | } 81 | 82 | public abstract class TrackBase : TrackBase 83 | where TMixBehaviour : class, IPlayableBehaviour, new() 84 | where TBehaviour : BehaviourBase, new() 85 | where TClip : ClipBase 86 | where TTrack : TrackAsset 87 | where TBinding : Object 88 | { 89 | protected override void InitClip(TimelineClip timelineClip, TClip clip, PlayableGraph graph, GameObject go, int inputCount) 90 | { 91 | Object binding = go.GetComponent().GetGenericBinding(this); 92 | clip.binding = binding; 93 | } 94 | } 95 | } 96 | #endif 97 | -------------------------------------------------------------------------------- /Extend/Timeline/Base/TrackBase.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4fdfedd43a0d14a4296533f817eff585 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Extend/Timeline/EventPlayer_PlayableInfo.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Threeyes/EventPlayer/c6fe32e7510eec5ec3f734073b415786be591010/Extend/Timeline/EventPlayer_PlayableInfo.cs -------------------------------------------------------------------------------- /Extend/Timeline/EventPlayer_PlayableInfo.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: af02a21600076984288ac9f8c42cf35c 3 | timeCreated: 1523843372 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /Extend/Timeline/Interface.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3d2d06ede72f21242b9ec595ed997e75 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Extend/Timeline/Interface/ITimelineProgress.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | using UnityEngine.Events; 4 | using Threeyes.Core; 5 | #if Threeyes_Timeline 6 | using UnityEngine.Playables; 7 | #endif 8 | namespace Threeyes.EventPlayer 9 | { 10 | 11 | /// 12 | /// 处理Timeline中Clip的事件 13 | /// 14 | public interface ITimelineProgress 15 | { 16 | void OnClipUpdate(PlayableInfo playableInfo);//Execute on every state 17 | 18 | //Editor 19 | void OnClipReset(PlayableInfo playableInfo);//Execute on desire state 20 | void OnClipComplete(PlayableInfo playableInfo);//Execute on desire state 21 | } 22 | 23 | /// 24 | /// Execute Order: 25 | /// OnPlayableCreate 26 | /// OnGraphStart 27 | /// OnBehaviourPlay 28 | /// ProcessFrame 29 | /// OnBehaviourPause 30 | /// OnGraphStop 31 | /// OnPlayableDestroy 32 | /// 33 | [Flags] 34 | public enum ClipState : int 35 | { 36 | None = 0, 37 | PlayableCreate = 1 << 0,//Play inside the Clip, before ProcessFrame 38 | GraphStart = 1 << 1, 39 | BehaviourPlay = 1 << 2, 40 | ProcessFrame = 1 << 3, 41 | BehaviourPause = 1 << 4, 42 | GraphStop = 1 << 5, 43 | PlayableDestroy = 1 << 6 44 | } 45 | 46 | public enum ClipLoopType 47 | { 48 | Restart = 0, 49 | PingPong = 1 50 | } 51 | 52 | [System.Serializable] 53 | public class PlayableInfo : DataObjectBase 54 | { 55 | //#Clip Setting 56 | [Header("Config")] 57 | public GameObject binding; 58 | public ClipLoopType loopType = ClipLoopType.Restart; 59 | public double clipLength = -1; 60 | public bool isFlip; 61 | public AnimationCurve curvePercent = AnimationCurve.Linear(0, 0, 1, 1); 62 | public int subClipCount = 1;// { get { return clipLength > 0 ? Mathd.CeilToInt(duration / clipLength) : 1; } }//默认为1 63 | 64 | //#Editor Setting 65 | public bool isResetOnJump = false; 66 | public bool isCompleteOnJump = false; 67 | public bool isResetOnPlay = false; 68 | public bool isEditorPreparePlay = false;//Editor is about to play 69 | 70 | //#RunTime 71 | [Header("Run Time")] 72 | public ClipState clipState = ClipState.BehaviourPlay; 73 | #if Threeyes_Timeline 74 | public Playable playable; 75 | public FrameData? info;//FrameData only valid on Play/Process/Pause 76 | 77 | //Mix Data 78 | public int indexInTrack; 79 | public float inputWeight; 80 | 81 | #endif 82 | 83 | public double time;//Current Time 84 | public double duration;//Total Time 85 | public float deltaTime; 86 | public float percent { get { return CalculatePercent(time, duration); } }//Total percent 87 | 88 | public int subClipIndex = -1;//PS: When Clip Length>0, it will split as multi sub-Clip 89 | public double subTime { get { return clipLength > 0 ? Mathd.Repeat(time, clipLength) : time; } } 90 | public double subDuration { get { return clipLength > 0 ? clipLength : duration; } } 91 | public float subPercent { get { return clipLength > 0 ? CalculatePercent(subTime, subDuration) : percent; } } 92 | 93 | /// 94 | /// 手动计算并克隆一个PlayableInfo(不应该影响原有值)),常用于重置 95 | /// 96 | /// desire time 97 | /// 98 | public PlayableInfo ClonePlayableInfo(double time) 99 | { 100 | PlayableInfo playableInfo = ReflectionTool.DeepCopy(this); 101 | playableInfo.time = time; 102 | return playableInfo; 103 | } 104 | #if Threeyes_Timeline 105 | public void UpdateData(Playable playable, FrameData? info = null) 106 | { 107 | this.playable = playable; 108 | 109 | //PS:该数据可能会被销毁,因此需要及时保存其值 110 | time = playable.GetTime(); 111 | duration = playable.GetDuration(); 112 | 113 | this.info = info; 114 | if (info.HasValue) 115 | deltaTime = info.Value.deltaTime; 116 | } 117 | 118 | #endif 119 | 120 | #region Utility 121 | 122 | float cachePercentResult; 123 | float CalculatePercent(double time, double duration) 124 | { 125 | if (duration > 0) 126 | { 127 | if (isFlip)//Reverse the process 128 | time = duration - time; 129 | 130 | float curPercent = (float)(time / duration); 131 | curPercent = curvePercent.Evaluate(curPercent);//Remap 132 | 133 | cachePercentResult = Mathf.Clamp01(curPercent);//ToUpdate:后期增加一个UnClamp的选项 134 | if (loopType == ClipLoopType.PingPong && subClipIndex != -1 && IsOdd(subClipIndex)) 135 | { 136 | cachePercentResult = 1 - cachePercentResult; //Reverse the process 137 | } 138 | } 139 | else 140 | { 141 | cachePercentResult = 0; 142 | } 143 | return cachePercentResult; 144 | } 145 | 146 | /// 147 | /// 奇数 148 | /// 149 | /// 150 | /// 151 | public static bool IsOdd(int n) 152 | { 153 | return (n % 2 == 1) ? true : false; 154 | } 155 | 156 | #endregion 157 | 158 | } 159 | 160 | 161 | [System.Serializable] 162 | public class PlayableInfoEvent : UnityEvent 163 | { 164 | } 165 | } 166 | -------------------------------------------------------------------------------- /Extend/Timeline/Interface/ITimelineProgress.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e2765e267fc60224da1a7604f403f82f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Extend/Timeline/Listener.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3b79c86b13c21984c88e761478fd0b00 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Extend/Timeline/Listener/TLEPListener.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | namespace Threeyes.EventPlayer 6 | { 7 | 8 | public class TLEPListener : EventPlayerWithParamListener 9 | { 10 | public virtual void OnReset(PlayableInfo value) 11 | { 12 | 13 | } 14 | public virtual void OnComplete(PlayableInfo value) 15 | { 16 | 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /Extend/Timeline/Listener/TLEPListener.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ba2f8ece7b675ab46b261db56c589610 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Extend/Timeline/Listener/TLEPListenerForCompBase.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | namespace Threeyes.EventPlayer 5 | { 6 | /// 7 | /// PS: 8 | /// 1.Ref TComp to use it's param 9 | /// 2.Keep the name short in case Windows Explorer hates it 10 | /// 11 | /// ToAdd: Interface For TempEP, can simluate and send PlayableInfo data, don't need Timeline support(可以是一个方法Evaluate(perecent)) 12 | 13 | /// 14 | public class TLEPListenerForCompBase : TLEPListener 15 | where TComp : Component 16 | { 17 | #region Property & Field 18 | 19 | public TComp Comp 20 | { 21 | get 22 | { 23 | if (!comp) 24 | comp = GetCompFunc(); 25 | return comp; 26 | } 27 | set 28 | { 29 | comp = value; 30 | } 31 | } 32 | 33 | [Tooltip("The GameObject that TComp attached to")] 34 | [SerializeField] protected GameObject goCompTarget;//PS: if set to null, it will be this GameObject 35 | protected TComp comp;//The relate Component(PS: this can't show in the Inspector, cause it may be missing if the relate Plugin is not active) 36 | 37 | #endregion 38 | 39 | #region Inner Method 40 | 41 | protected virtual TComp GetCompFunc() 42 | { 43 | if (this && !goCompTarget && gameObject) 44 | goCompTarget = gameObject; 45 | 46 | if (goCompTarget)//避免物体被销毁导致丢失 47 | return goCompTarget.GetComponent(); 48 | 49 | return null; 50 | } 51 | 52 | #endregion 53 | } 54 | 55 | public class TLEPListenerForCompBaseDummy : TLEPListener 56 | { 57 | [SerializeField] protected GameObject goCompTarget;//Maintain the reference 58 | } 59 | } -------------------------------------------------------------------------------- /Extend/Timeline/Listener/TLEPListenerForCompBase.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c67cbfe2a6dcb114099df6eebde3e0d3 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Extend/Timeline/Playables.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ea192b7eed1e05345ab6c120f389427e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Extend/Timeline/Playables/EventPlayerBehaviour.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a2322d3934cd11c4fa49d325b89b04ec 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Extend/Timeline/Playables/EventPlayerClip.cs: -------------------------------------------------------------------------------- 1 | #if Threeyes_Timeline 2 | using System; 3 | using Threeyes.Core; 4 | using UnityEngine; 5 | using UnityEngine.Playables; 6 | using UnityEngine.Timeline; 7 | 8 | namespace Threeyes.EventPlayer 9 | { 10 | [Serializable] 11 | public class EventPlayerClip : ClipBase, ITimelineClipAsset 12 | { 13 | /// 14 | /// Specify each loop's length, default is Infinity 15 | /// 16 | public override double duration { get { return clipLength > 0 ? clipLength : base.duration; } } 17 | public override ClipCaps clipCaps { get { return ClipCaps.All; } } 18 | 19 | 20 | public ExposedReference eventPlayer; 21 | public ExposedReference bindingOverride;//PS:Nullable 22 | 23 | [Header("Clip Setting")] 24 | [SerializeField] protected ClipLoopType loopType = ClipLoopType.Restart; 25 | [Tooltip("Per Clip Length, Only work when larger than 0 and less than duration")] 26 | [SerializeField] protected double clipLength = -1; 27 | [Tooltip("Flip the percent value")] 28 | [SerializeField] protected bool isFlip = false;//Reverse the percent 29 | [Tooltip("Remap the percent value")] 30 | [SerializeField] protected AnimationCurve curvePercent = AnimationCurve.Linear(0, 0, 1, 1);//percent remapping 31 | 32 | [EnumMask] 33 | public ClipState resetOn = ClipState.None;//When to call Reset 34 | 35 | [Header("Editor Setting")] 36 | [Tooltip("Reset when you jump to any clip before this")] 37 | public bool isResetOnJump = true; 38 | [Tooltip("Complete when you jump to any clip after this")] 39 | public bool isCompleteOnJump = true; 40 | [Tooltip("Reset when Editor Play")] 41 | public bool isResetOnPlay = false;//(Set to true if this Clip is the first one in track) 42 | 43 | public override void InitClone(EventPlayerBehaviour clone, PlayableGraph graph, GameObject owner) 44 | { 45 | GameObject bindingOverrideObj = bindingOverride.Resolve(graph.GetResolver()); 46 | clone.trackBinding = bindingOverrideObj ? bindingOverrideObj : binding as GameObject; 47 | 48 | clone.eventPlayer = eventPlayer.Resolve(graph.GetResolver()); 49 | clone.loopType = loopType; 50 | clone.clipLength = clipLength; 51 | clone.isFlip = isFlip; 52 | clone.curvePercent = curvePercent; 53 | clone.resetOn = resetOn; 54 | clone.isResetOnJump = isResetOnJump; 55 | clone.isCompleteOnJump = isCompleteOnJump; 56 | clone.isResetOnPlay = isResetOnPlay; 57 | } 58 | } 59 | } 60 | #endif 61 | -------------------------------------------------------------------------------- /Extend/Timeline/Playables/EventPlayerClip.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7c0b37c6c544aca4e910c13f864bb90b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Extend/Timeline/Playables/EventPlayerMixerBehaviour.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5826737a08b280046b79dc23c061c5dc 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Extend/Timeline/Playables/EventPlayerTrack.cs: -------------------------------------------------------------------------------- 1 | #if Threeyes_Timeline 2 | using Threeyes.Core; 3 | using UnityEngine; 4 | using UnityEngine.Playables; 5 | using UnityEngine.Timeline; 6 | 7 | namespace Threeyes.EventPlayer 8 | { 9 | [TrackColor(0f, 1f, 0f)]//(0f, 0.8f, 0.8f) 10 | [TrackClipType(typeof(EventPlayerClip))] 11 | [TrackBindingType(typeof(GameObject))] 12 | public class EventPlayerTrack : TrackBase 13 | { 14 | //Update:不通过更改名字提示有无EP,便于用户设置Clip 名称 15 | protected override void InitClip(TimelineClip timelineClip, EventPlayerClip clip, PlayableGraph graph, GameObject go, int inputCount) 16 | { 17 | base.InitClip(timelineClip, clip, graph, go, inputCount); 18 | 19 | var resolver = graph.GetResolver(); 20 | EventPlayer eventPlayer = clip.eventPlayer.Resolve(resolver); 21 | string suffixNull = " (Null)";//空引用名称标记 22 | 23 | #if UNITY_2019_2_OR_NEWER 24 | if (eventPlayer) 25 | { 26 | timelineClip.displayName = eventPlayer.name; 27 | } 28 | else 29 | { 30 | timelineClip.displayName = timelineClip.displayName.Remove(suffixNull);//Unity2019.2:删掉名称标记,改为TrackColor标记 31 | } 32 | #else 33 | //https://forum.unity.com/threads/whats-the-mean-of-exposedreference-t.483864/:In the case of Timeline, all (non - prefab) GameObjects and Component references are stored inside the PlayableDirector that is playing the Timeline.The resolver is actually the PlayableDirector, and Resolve() is asking it to retrieve the assigned game object. 34 | //PS:在这里,resolver跟go都是PlayerDirector组件所在物体的对应组件 35 | //PS:不管是新旧版都需要与EP同名,避免引用丢失导致无法获取原意图 36 | //PS:Unity2018会有替换EP后不更新的问题 37 | if (eventPlayer) 38 | { 39 | timelineClip.displayName = eventPlayer.name; 40 | } 41 | else 42 | { 43 | //检查是否无引用 44 | if (!timelineClip.displayName.Contains(suffixNull)) 45 | timelineClip.displayName = timelineClip.displayName + suffixNull; 46 | } 47 | #endif 48 | } 49 | 50 | } 51 | } 52 | #endif 53 | -------------------------------------------------------------------------------- /Extend/Timeline/Playables/EventPlayerTrack.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 88d5a7925ae0e4b4e8b8142d0f880657 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Extend/Timeline/Preview.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 07da2d5b69553bf42ad79b2bf5eb4a78 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Extend/Timeline/Preview/TimelinePreviewManager.cs: -------------------------------------------------------------------------------- 1 | #if UNITY_EDITOR 2 | using System; 3 | using System.Collections; 4 | using System.Collections.Generic; 5 | using Threeyes.Core; 6 | using UnityEditor; 7 | using UnityEditorInternal; 8 | using UnityEngine; 9 | using UnityEngine.Events; 10 | 11 | namespace Threeyes.EventPlayer 12 | { 13 | /// 14 | /// 在切换PlayMode时,调用特定方法 15 | /// 16 | public class TimelinePreviewManager : MonoBehaviour 17 | { 18 | static readonly List listAction = new List(); 19 | 20 | static readonly List _TmpKeys = new List(); 21 | 22 | /// 23 | /// 24 | /// 25 | /// 26 | /// Stop时调用的委托 27 | public static void StartPreview(GameObject go, UnityAction actionOnStop) 28 | { 29 | bool isPreviewing = listAction.Count > 0; 30 | if (!isPreviewing) StartupGlobalPreview(); 31 | AddAnimationToGlobalPreview(actionOnStop); 32 | } 33 | public static void StartPreview(UnityAction action) 34 | { 35 | bool isPreviewing = listAction.Count > 0; 36 | if (!isPreviewing) StartupGlobalPreview(); 37 | AddAnimationToGlobalPreview(action); 38 | } 39 | static void AddAnimationToGlobalPreview(UnityAction action) 40 | { 41 | if (!listAction.Contains(action)) 42 | { 43 | listAction.Add(action); 44 | } 45 | } 46 | public static void StopPreview(GameObject go) 47 | { 48 | //To Imple 49 | } 50 | public static void StopPreview(UnityAction action) 51 | { 52 | if (action == null) 53 | return; 54 | 55 | _TmpKeys.Clear(); 56 | foreach (var cacheAction in listAction) 57 | { 58 | if (cacheAction == action) 59 | _TmpKeys.Add(cacheAction); 60 | } 61 | StopPreview(_TmpKeys); 62 | _TmpKeys.Clear(); 63 | 64 | if (listAction.Count == 0) 65 | StopAllPreviews(); 66 | else 67 | InternalEditorUtility.RepaintAllViews(); 68 | } 69 | 70 | static void StopPreview(List listTempAction) 71 | { 72 | foreach (var action in listTempAction) 73 | { 74 | action.Execute(); 75 | } 76 | } 77 | static void StartupGlobalPreview() 78 | { 79 | UnityEditor.EditorApplication.playModeStateChanged += StopAllPreviews; 80 | } 81 | 82 | #if !(UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5) 83 | public static void StopAllPreviews(PlayModeStateChange state) 84 | { 85 | if (state == PlayModeStateChange.ExitingEditMode) 86 | StopAllPreviews(); 87 | } 88 | #endif 89 | 90 | public static void StopAllPreviews() 91 | { 92 | StopPreview(listAction); 93 | _TmpKeys.Clear(); 94 | listAction.Clear(); 95 | 96 | EditorApplication.playModeStateChanged -= StopAllPreviews; 97 | InternalEditorUtility.RepaintAllViews(); 98 | } 99 | } 100 | 101 | } 102 | #endif -------------------------------------------------------------------------------- /Extend/Timeline/Preview/TimelinePreviewManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6b30d48b807530d4499f32bbab9e8d1d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Extend/Video.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 31e769c78b758b742aaa4c8baafa32d9 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Extend/Video/EventPlayer_Video.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fe25d1f7f359e5d41bdf63a305cef6c7 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Threeyes 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /LICENSE.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e034ca708b982fa42aa66e0980632f57 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 

EventPlayer

2 |

3 | Logo 4 |
5 |
6 | 7 |
8 |

9 | 10 | ## Language 11 |

12 | 中文 | 13 | English 14 |

15 | 16 | 17 | ## Description 18 | I have sick of writing scripts that can't be reuse, so here it is!Visual Scripting without extra editorwindow! 19 | 20 | **EventPlayer** extends Unity's built-in Event System, provide several Components that invoke Event in specific Time, such as Delay, Repeat and CountDown, You can visual reorder, reorganize or deactive events, execute them at desire time. 21 | 22 | 23 | ## Features 24 | - Easy to use, no coding required. 25 | - Visual parenting and organizing Event, manage Event by Group or Sequence, mark them by ID. 26 | - Supports most platforms. 27 | - Support following Plugin: 28 | - [Timeline](https://docs.unity3d.com/Packages/com.unity.timeline@1.5/manual/index.html): Unity's timeline library. 29 | - [VideoPlayer](https://docs.unity3d.com/Manual/class-VideoPlayer.html): Unity's built-in video player library. 30 | - [BezierSolution](https://assetstore.unity.com/packages/tools/level-design/bezier-solution-113074): Runtime bezier splines. 31 | - [DoTweenPro](https://assetstore.unity.com/packages/tools/visual-scripting/dotween-pro-32416): Powerful animation tool. 32 | - (You can also write code to support more plugins...) 33 | 34 | 35 | ## Note 36 | This plugin depends on the **Threeyes Core** library (The AssetStore version already includes this library). If your project does not have this library, please download it from [GitHub](https://github.com/Threeyes/Core). 37 | 38 | 39 | ## Setup 40 | ### Add/Remove extern plugin support 41 | Click 'Tools/Threeyes/EventPlayer Setting' menu, select the plugin you need to use, then click 'Apply'. Please ensure that you have install those plugin in project and link to their's asmdef file (if exists) correctly. 42 | 43 | ## Samples 44 | Select the extern support as mention above, then add all demo scenes in 'Samples' folder to the BuildSettings Windows, then hit play the first scene! You can see the explanation from **Remarker** Component in the Hierarchy window. 45 | 46 | 47 | ## Trouble Shooting 48 | ### Some files conflicts after update to newer version? 49 | I might move/rename the folder, please delete the old plugin and reimport the latest plugin (always backup your project first!). 50 | 51 | ### Unity version is 2018.4 or higher and can't find the Timeline plugin? 52 | Because the new version of Unity has remove Timeline by default, you need to download Timeline from package Manager, and you are good to go. If you are using asmdef, you will also need to reference the relate file: https://docs.unity3d.com/Manual/ScriptCompilationAssemblyDefinitionFiles.html 53 | 54 | ### Why does the code related to DOTweenPro report errors? 55 | This may occur because the library corresponding to DOTweenPro is not properly linked. Firstly, ensure that the DOTweenPro folder contains the 'DOTweenPro. Scripts. asmdef' file, if the file does not exist, you can open its settings window through the menu 'Tools/Demographics/DOTween Utility Panel', and then click 'Create ASMDEF...' to generate it. If there are still errors, it is possible that the meta information of the above generated asmdef file has changed, you need to add that asmdef file to the Threeyes.EventPlayer.asmdef's 'Assembly Definition References' list and click Apply. 56 | 57 | ### Sample's material become purple on Built-In Pipeline? 58 | Sample include URP material by default. You need to import 'Materials_BuildInRP. unitypackage' from the Sample folder to cover all existing materials. 59 | 60 | ### Sample's material become purple on HDRP Pipeline? 61 | First, import all materials of Built-In Pipeline as mentioned above, and then select all materials, then click on the menu 'Edit/Rendering/Materials/Convert selected Built-in Materials to HDRP'. 62 | 63 | 64 | ## Q&A 65 | ### Support platform? 66 | Since this implement only use the Unity Buildin EventSystem, and doesn't use Reflection feature at runtime, it may support as many platform as possible. 67 | 68 | ## More Info 69 | [AssetStore Version](https://assetstore.unity.com/packages/tools/visual-scripting/event-player-116731) 70 | 71 | [Unity Forum Thread](https://forum.unity.com/threads/release-event-player-visual-play-and-organize-unityevent.536984/) 72 | 73 | [Unity Community - Chinese Tutorial](https://developer.unity.cn/projects/603086a7edbc2a00202c3878) -------------------------------------------------------------------------------- /ReadMe.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d87981974d672454c89deef9fb91110e 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Samples.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d5df38d156d124242af5b367914106de 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/#YouCanSafelyDeletethisFolder.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Threeyes/EventPlayer/c6fe32e7510eec5ec3f734073b415786be591010/Samples/#YouCanSafelyDeletethisFolder.txt -------------------------------------------------------------------------------- /Samples/#YouCanSafelyDeletethisFolder.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4cf2adc2c8ff0b54d8a927434f6925bb 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Samples/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b169638bb527cb6449c5c7f5053e78aa 3 | folderAsset: yes 4 | timeCreated: 1524043121 5 | licenseType: Store 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Samples/Materials/BG Plane.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-3315043981064019965 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 11 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | version: 7 16 | --- !u!21 &2100000 17 | Material: 18 | serializedVersion: 8 19 | m_ObjectHideFlags: 0 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_Name: BG Plane 24 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 25 | m_ValidKeywords: 26 | - _EMISSION 27 | m_InvalidKeywords: [] 28 | m_LightmapFlags: 0 29 | m_EnableInstancingVariants: 0 30 | m_DoubleSidedGI: 0 31 | m_CustomRenderQueue: -1 32 | stringTagMap: 33 | RenderType: Opaque 34 | disabledShaderPasses: [] 35 | m_SavedProperties: 36 | serializedVersion: 3 37 | m_TexEnvs: 38 | - _BaseMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _BumpMap: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _Cube: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _DetailAlbedoMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _DetailMask: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | - _DetailNormalMap: 59 | m_Texture: {fileID: 0} 60 | m_Scale: {x: 1, y: 1} 61 | m_Offset: {x: 0, y: 0} 62 | - _EmissionMap: 63 | m_Texture: {fileID: 0} 64 | m_Scale: {x: 1, y: 1} 65 | m_Offset: {x: 0, y: 0} 66 | - _MainTex: 67 | m_Texture: {fileID: 0} 68 | m_Scale: {x: 1, y: 1} 69 | m_Offset: {x: 0, y: 0} 70 | - _MetallicGlossMap: 71 | m_Texture: {fileID: 0} 72 | m_Scale: {x: 1, y: 1} 73 | m_Offset: {x: 0, y: 0} 74 | - _OcclusionMap: 75 | m_Texture: {fileID: 0} 76 | m_Scale: {x: 1, y: 1} 77 | m_Offset: {x: 0, y: 0} 78 | - _ParallaxMap: 79 | m_Texture: {fileID: 0} 80 | m_Scale: {x: 1, y: 1} 81 | m_Offset: {x: 0, y: 0} 82 | - _SpecGlossMap: 83 | m_Texture: {fileID: 0} 84 | m_Scale: {x: 1, y: 1} 85 | m_Offset: {x: 0, y: 0} 86 | - unity_Lightmaps: 87 | m_Texture: {fileID: 0} 88 | m_Scale: {x: 1, y: 1} 89 | m_Offset: {x: 0, y: 0} 90 | - unity_LightmapsInd: 91 | m_Texture: {fileID: 0} 92 | m_Scale: {x: 1, y: 1} 93 | m_Offset: {x: 0, y: 0} 94 | - unity_ShadowMasks: 95 | m_Texture: {fileID: 0} 96 | m_Scale: {x: 1, y: 1} 97 | m_Offset: {x: 0, y: 0} 98 | m_Ints: [] 99 | m_Floats: 100 | - _AlphaClip: 0 101 | - _AlphaToMask: 0 102 | - _Blend: 0 103 | - _BlendModePreserveSpecular: 1 104 | - _BumpScale: 1 105 | - _ClearCoatMask: 0 106 | - _ClearCoatSmoothness: 0 107 | - _Cull: 2 108 | - _Cutoff: 0.375 109 | - _DetailAlbedoMapScale: 1 110 | - _DetailNormalMapScale: 1 111 | - _DstBlend: 0 112 | - _DstBlendAlpha: 0 113 | - _EnvironmentReflections: 1 114 | - _GlossMapScale: 1 115 | - _Glossiness: 0 116 | - _GlossyReflections: 1 117 | - _Metallic: 0 118 | - _Mode: 0 119 | - _OcclusionStrength: 1 120 | - _Parallax: 0.02 121 | - _QueueOffset: 0 122 | - _ReceiveShadows: 1 123 | - _Shininess: 0.574 124 | - _Smoothness: 0 125 | - _SmoothnessTextureChannel: 0 126 | - _SpecularHighlights: 1 127 | - _SrcBlend: 1 128 | - _SrcBlendAlpha: 1 129 | - _Surface: 0 130 | - _UVSec: 0 131 | - _WorkflowMode: 1 132 | - _ZWrite: 1 133 | m_Colors: 134 | - _BaseColor: {r: 0.3773585, g: 0.3773585, b: 0.3773585, a: 1} 135 | - _Color: {r: 0.3773585, g: 0.3773585, b: 0.3773585, a: 1} 136 | - _EmissionColor: {r: 0.16981131, g: 0.16981131, b: 0.16981131, a: 1} 137 | - _ReflectColor: {r: 0.39705884, g: 0.39705884, b: 0.39705884, a: 0.5} 138 | - _SpecColor: {r: 1, g: 1, b: 1, a: 1} 139 | m_BuildTextureStacks: [] 140 | -------------------------------------------------------------------------------- /Samples/Materials/BG Plane.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 064cc7491af7b444d860c0fdfa7c99a4 3 | timeCreated: 1524047802 4 | licenseType: Store 5 | NativeFormatImporter: 6 | externalObjects: {} 7 | mainObjectFileID: 2100000 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Samples/Materials/Capsule.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-8640305496052854358 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 11 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | version: 7 16 | --- !u!21 &2100000 17 | Material: 18 | serializedVersion: 8 19 | m_ObjectHideFlags: 0 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_Name: Capsule 24 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 25 | m_Parent: {fileID: 0} 26 | m_ModifiedSerializedProperties: 0 27 | m_ValidKeywords: [] 28 | m_InvalidKeywords: [] 29 | m_LightmapFlags: 4 30 | m_EnableInstancingVariants: 0 31 | m_DoubleSidedGI: 0 32 | m_CustomRenderQueue: -1 33 | stringTagMap: 34 | RenderType: Opaque 35 | disabledShaderPasses: [] 36 | m_LockedProperties: 37 | m_SavedProperties: 38 | serializedVersion: 3 39 | m_TexEnvs: 40 | - _BaseMap: 41 | m_Texture: {fileID: 0} 42 | m_Scale: {x: 1, y: 1} 43 | m_Offset: {x: 0, y: 0} 44 | - _BumpMap: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - _Cube: 49 | m_Texture: {fileID: 0} 50 | m_Scale: {x: 1, y: 1} 51 | m_Offset: {x: 0, y: 0} 52 | - _DetailAlbedoMap: 53 | m_Texture: {fileID: 0} 54 | m_Scale: {x: 1, y: 1} 55 | m_Offset: {x: 0, y: 0} 56 | - _DetailMask: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - _DetailNormalMap: 61 | m_Texture: {fileID: 0} 62 | m_Scale: {x: 1, y: 1} 63 | m_Offset: {x: 0, y: 0} 64 | - _EmissionMap: 65 | m_Texture: {fileID: 0} 66 | m_Scale: {x: 1, y: 1} 67 | m_Offset: {x: 0, y: 0} 68 | - _MainTex: 69 | m_Texture: {fileID: 0} 70 | m_Scale: {x: 1, y: 1} 71 | m_Offset: {x: 0, y: 0} 72 | - _MetallicGlossMap: 73 | m_Texture: {fileID: 0} 74 | m_Scale: {x: 1, y: 1} 75 | m_Offset: {x: 0, y: 0} 76 | - _OcclusionMap: 77 | m_Texture: {fileID: 0} 78 | m_Scale: {x: 1, y: 1} 79 | m_Offset: {x: 0, y: 0} 80 | - _ParallaxMap: 81 | m_Texture: {fileID: 0} 82 | m_Scale: {x: 1, y: 1} 83 | m_Offset: {x: 0, y: 0} 84 | - _SpecGlossMap: 85 | m_Texture: {fileID: 0} 86 | m_Scale: {x: 1, y: 1} 87 | m_Offset: {x: 0, y: 0} 88 | - unity_Lightmaps: 89 | m_Texture: {fileID: 0} 90 | m_Scale: {x: 1, y: 1} 91 | m_Offset: {x: 0, y: 0} 92 | - unity_LightmapsInd: 93 | m_Texture: {fileID: 0} 94 | m_Scale: {x: 1, y: 1} 95 | m_Offset: {x: 0, y: 0} 96 | - unity_ShadowMasks: 97 | m_Texture: {fileID: 0} 98 | m_Scale: {x: 1, y: 1} 99 | m_Offset: {x: 0, y: 0} 100 | m_Ints: [] 101 | m_Floats: 102 | - _AlphaClip: 0 103 | - _AlphaToMask: 0 104 | - _Blend: 0 105 | - _BlendModePreserveSpecular: 1 106 | - _BumpScale: 1 107 | - _ClearCoatMask: 0 108 | - _ClearCoatSmoothness: 0 109 | - _Cull: 2 110 | - _Cutoff: 0.375 111 | - _DetailAlbedoMapScale: 1 112 | - _DetailNormalMapScale: 1 113 | - _DstBlend: 0 114 | - _DstBlendAlpha: 0 115 | - _EnvironmentReflections: 1 116 | - _GlossMapScale: 1 117 | - _Glossiness: 1 118 | - _GlossyReflections: 1 119 | - _Metallic: 0.382 120 | - _Mode: 0 121 | - _OcclusionStrength: 1 122 | - _Parallax: 0.02 123 | - _QueueOffset: 0 124 | - _ReceiveShadows: 1 125 | - _Shininess: 0.574 126 | - _Smoothness: 1 127 | - _SmoothnessTextureChannel: 0 128 | - _SpecularHighlights: 1 129 | - _SrcBlend: 1 130 | - _SrcBlendAlpha: 1 131 | - _Surface: 0 132 | - _UVSec: 0 133 | - _WorkflowMode: 1 134 | - _ZWrite: 1 135 | m_Colors: 136 | - _BaseColor: {r: 1, g: 1, b: 1, a: 0.24313726} 137 | - _Color: {r: 1, g: 1, b: 1, a: 0.24313726} 138 | - _EmissionColor: {r: 0.2509804, g: 0.2509804, b: 0.2509804, a: 1} 139 | - _ReflectColor: {r: 0.39705884, g: 0.39705884, b: 0.39705884, a: 0.5} 140 | - _SpecColor: {r: 1, g: 1, b: 1, a: 1} 141 | m_BuildTextureStacks: [] 142 | -------------------------------------------------------------------------------- /Samples/Materials/Capsule.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fe2a44b3e7996204a8931226f175599a 3 | timeCreated: 1524047802 4 | licenseType: Store 5 | NativeFormatImporter: 6 | externalObjects: {} 7 | mainObjectFileID: 2100000 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Samples/Materials/Cuber_Blue Eye.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 8 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Cuber_Blue Eye 11 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 12 | m_ValidKeywords: 13 | - _EMISSION 14 | m_InvalidKeywords: [] 15 | m_LightmapFlags: 0 16 | m_EnableInstancingVariants: 0 17 | m_DoubleSidedGI: 0 18 | m_CustomRenderQueue: -1 19 | stringTagMap: 20 | RenderType: Opaque 21 | disabledShaderPasses: [] 22 | m_SavedProperties: 23 | serializedVersion: 3 24 | m_TexEnvs: 25 | - _BaseMap: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _BumpMap: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailAlbedoMap: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _DetailMask: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _DetailNormalMap: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _EmissionMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _MainTex: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _MetallicGlossMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | - _OcclusionMap: 58 | m_Texture: {fileID: 0} 59 | m_Scale: {x: 1, y: 1} 60 | m_Offset: {x: 0, y: 0} 61 | - _ParallaxMap: 62 | m_Texture: {fileID: 0} 63 | m_Scale: {x: 1, y: 1} 64 | m_Offset: {x: 0, y: 0} 65 | - _SpecGlossMap: 66 | m_Texture: {fileID: 0} 67 | m_Scale: {x: 1, y: 1} 68 | m_Offset: {x: 0, y: 0} 69 | - unity_Lightmaps: 70 | m_Texture: {fileID: 0} 71 | m_Scale: {x: 1, y: 1} 72 | m_Offset: {x: 0, y: 0} 73 | - unity_LightmapsInd: 74 | m_Texture: {fileID: 0} 75 | m_Scale: {x: 1, y: 1} 76 | m_Offset: {x: 0, y: 0} 77 | - unity_ShadowMasks: 78 | m_Texture: {fileID: 0} 79 | m_Scale: {x: 1, y: 1} 80 | m_Offset: {x: 0, y: 0} 81 | m_Ints: [] 82 | m_Floats: 83 | - _AlphaClip: 0 84 | - _AlphaToMask: 0 85 | - _Blend: 0 86 | - _BlendModePreserveSpecular: 1 87 | - _BumpScale: 1 88 | - _ClearCoatMask: 0 89 | - _ClearCoatSmoothness: 0 90 | - _Cull: 2 91 | - _Cutoff: 0.5 92 | - _DetailAlbedoMapScale: 1 93 | - _DetailNormalMapScale: 1 94 | - _DstBlend: 0 95 | - _DstBlendAlpha: 0 96 | - _EnvironmentReflections: 1 97 | - _GlossMapScale: 1 98 | - _Glossiness: 0 99 | - _GlossyReflections: 1 100 | - _Metallic: 0 101 | - _Mode: 0 102 | - _OcclusionStrength: 1 103 | - _Parallax: 0.02 104 | - _QueueOffset: 0 105 | - _ReceiveShadows: 1 106 | - _Smoothness: 0 107 | - _SmoothnessTextureChannel: 0 108 | - _SpecularHighlights: 1 109 | - _SrcBlend: 1 110 | - _SrcBlendAlpha: 1 111 | - _Surface: 0 112 | - _UVSec: 0 113 | - _WorkflowMode: 1 114 | - _ZWrite: 1 115 | m_Colors: 116 | - _BaseColor: {r: 0.042452782, g: 1, b: 0.97098094, a: 1} 117 | - _Color: {r: 0.042452782, g: 1, b: 0.97098094, a: 1} 118 | - _EmissionColor: {r: 0, g: 1, b: 0.8512273, a: 1} 119 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 120 | m_BuildTextureStacks: [] 121 | --- !u!114 &3600465444834353626 122 | MonoBehaviour: 123 | m_ObjectHideFlags: 11 124 | m_CorrespondingSourceObject: {fileID: 0} 125 | m_PrefabInstance: {fileID: 0} 126 | m_PrefabAsset: {fileID: 0} 127 | m_GameObject: {fileID: 0} 128 | m_Enabled: 1 129 | m_EditorHideFlags: 0 130 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 131 | m_Name: 132 | m_EditorClassIdentifier: 133 | version: 7 134 | -------------------------------------------------------------------------------- /Samples/Materials/Cuber_Blue Eye.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3a3976c0cf00ecc4bb2edc3f19c8443f 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Materials/Cuber_Body.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 8 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Cuber_Body 11 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 12 | m_ValidKeywords: [] 13 | m_InvalidKeywords: [] 14 | m_LightmapFlags: 4 15 | m_EnableInstancingVariants: 0 16 | m_DoubleSidedGI: 0 17 | m_CustomRenderQueue: -1 18 | stringTagMap: 19 | RenderType: Opaque 20 | disabledShaderPasses: [] 21 | m_SavedProperties: 22 | serializedVersion: 3 23 | m_TexEnvs: 24 | - _BaseMap: 25 | m_Texture: {fileID: 0} 26 | m_Scale: {x: 1, y: 1} 27 | m_Offset: {x: 0, y: 0} 28 | - _BumpMap: 29 | m_Texture: {fileID: 0} 30 | m_Scale: {x: 1, y: 1} 31 | m_Offset: {x: 0, y: 0} 32 | - _DetailAlbedoMap: 33 | m_Texture: {fileID: 0} 34 | m_Scale: {x: 1, y: 1} 35 | m_Offset: {x: 0, y: 0} 36 | - _DetailMask: 37 | m_Texture: {fileID: 0} 38 | m_Scale: {x: 1, y: 1} 39 | m_Offset: {x: 0, y: 0} 40 | - _DetailNormalMap: 41 | m_Texture: {fileID: 0} 42 | m_Scale: {x: 1, y: 1} 43 | m_Offset: {x: 0, y: 0} 44 | - _EmissionMap: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - _MainTex: 49 | m_Texture: {fileID: 0} 50 | m_Scale: {x: 1, y: 1} 51 | m_Offset: {x: 0, y: 0} 52 | - _MetallicGlossMap: 53 | m_Texture: {fileID: 0} 54 | m_Scale: {x: 1, y: 1} 55 | m_Offset: {x: 0, y: 0} 56 | - _OcclusionMap: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - _ParallaxMap: 61 | m_Texture: {fileID: 0} 62 | m_Scale: {x: 1, y: 1} 63 | m_Offset: {x: 0, y: 0} 64 | - _SpecGlossMap: 65 | m_Texture: {fileID: 0} 66 | m_Scale: {x: 1, y: 1} 67 | m_Offset: {x: 0, y: 0} 68 | - unity_Lightmaps: 69 | m_Texture: {fileID: 0} 70 | m_Scale: {x: 1, y: 1} 71 | m_Offset: {x: 0, y: 0} 72 | - unity_LightmapsInd: 73 | m_Texture: {fileID: 0} 74 | m_Scale: {x: 1, y: 1} 75 | m_Offset: {x: 0, y: 0} 76 | - unity_ShadowMasks: 77 | m_Texture: {fileID: 0} 78 | m_Scale: {x: 1, y: 1} 79 | m_Offset: {x: 0, y: 0} 80 | m_Ints: [] 81 | m_Floats: 82 | - _AlphaClip: 0 83 | - _AlphaToMask: 0 84 | - _Blend: 0 85 | - _BlendModePreserveSpecular: 1 86 | - _BumpScale: 1 87 | - _ClearCoatMask: 0 88 | - _ClearCoatSmoothness: 0 89 | - _Cull: 2 90 | - _Cutoff: 0.5 91 | - _DetailAlbedoMapScale: 1 92 | - _DetailNormalMapScale: 1 93 | - _DstBlend: 0 94 | - _DstBlendAlpha: 0 95 | - _EnvironmentReflections: 1 96 | - _GlossMapScale: 1 97 | - _Glossiness: 0.5 98 | - _GlossyReflections: 1 99 | - _Metallic: 0 100 | - _Mode: 0 101 | - _OcclusionStrength: 1 102 | - _Parallax: 0.02 103 | - _QueueOffset: 0 104 | - _ReceiveShadows: 1 105 | - _Smoothness: 0.5 106 | - _SmoothnessTextureChannel: 0 107 | - _SpecularHighlights: 1 108 | - _SrcBlend: 1 109 | - _SrcBlendAlpha: 1 110 | - _Surface: 0 111 | - _UVSec: 0 112 | - _WorkflowMode: 1 113 | - _ZWrite: 1 114 | m_Colors: 115 | - _BaseColor: {r: 0.6792453, g: 0.6792453, b: 0.6792453, a: 1} 116 | - _Color: {r: 0.6792453, g: 0.6792453, b: 0.6792453, a: 1} 117 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 118 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 119 | m_BuildTextureStacks: [] 120 | --- !u!114 &2935153099294409360 121 | MonoBehaviour: 122 | m_ObjectHideFlags: 11 123 | m_CorrespondingSourceObject: {fileID: 0} 124 | m_PrefabInstance: {fileID: 0} 125 | m_PrefabAsset: {fileID: 0} 126 | m_GameObject: {fileID: 0} 127 | m_Enabled: 1 128 | m_EditorHideFlags: 0 129 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 130 | m_Name: 131 | m_EditorClassIdentifier: 132 | version: 7 133 | -------------------------------------------------------------------------------- /Samples/Materials/Cuber_Body.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e9a4b258fc9921846ba9644861dfa52f 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Materials/Cuber_Green Eye.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 8 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Cuber_Green Eye 11 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 12 | m_ValidKeywords: 13 | - _EMISSION 14 | m_InvalidKeywords: [] 15 | m_LightmapFlags: 0 16 | m_EnableInstancingVariants: 0 17 | m_DoubleSidedGI: 0 18 | m_CustomRenderQueue: -1 19 | stringTagMap: 20 | RenderType: Opaque 21 | disabledShaderPasses: [] 22 | m_SavedProperties: 23 | serializedVersion: 3 24 | m_TexEnvs: 25 | - _BaseMap: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _BumpMap: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailAlbedoMap: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _DetailMask: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _DetailNormalMap: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _EmissionMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _MainTex: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _MetallicGlossMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | - _OcclusionMap: 58 | m_Texture: {fileID: 0} 59 | m_Scale: {x: 1, y: 1} 60 | m_Offset: {x: 0, y: 0} 61 | - _ParallaxMap: 62 | m_Texture: {fileID: 0} 63 | m_Scale: {x: 1, y: 1} 64 | m_Offset: {x: 0, y: 0} 65 | - _SpecGlossMap: 66 | m_Texture: {fileID: 0} 67 | m_Scale: {x: 1, y: 1} 68 | m_Offset: {x: 0, y: 0} 69 | - unity_Lightmaps: 70 | m_Texture: {fileID: 0} 71 | m_Scale: {x: 1, y: 1} 72 | m_Offset: {x: 0, y: 0} 73 | - unity_LightmapsInd: 74 | m_Texture: {fileID: 0} 75 | m_Scale: {x: 1, y: 1} 76 | m_Offset: {x: 0, y: 0} 77 | - unity_ShadowMasks: 78 | m_Texture: {fileID: 0} 79 | m_Scale: {x: 1, y: 1} 80 | m_Offset: {x: 0, y: 0} 81 | m_Ints: [] 82 | m_Floats: 83 | - _AlphaClip: 0 84 | - _AlphaToMask: 0 85 | - _Blend: 0 86 | - _BlendModePreserveSpecular: 1 87 | - _BumpScale: 1 88 | - _ClearCoatMask: 0 89 | - _ClearCoatSmoothness: 0 90 | - _Cull: 2 91 | - _Cutoff: 0.5 92 | - _DetailAlbedoMapScale: 1 93 | - _DetailNormalMapScale: 1 94 | - _DstBlend: 0 95 | - _DstBlendAlpha: 0 96 | - _EnvironmentReflections: 1 97 | - _GlossMapScale: 1 98 | - _Glossiness: 0 99 | - _GlossyReflections: 1 100 | - _Metallic: 0 101 | - _Mode: 0 102 | - _OcclusionStrength: 1 103 | - _Parallax: 0.02 104 | - _QueueOffset: 0 105 | - _ReceiveShadows: 1 106 | - _Smoothness: 0 107 | - _SmoothnessTextureChannel: 0 108 | - _SpecularHighlights: 1 109 | - _SrcBlend: 1 110 | - _SrcBlendAlpha: 1 111 | - _Surface: 0 112 | - _UVSec: 0 113 | - _WorkflowMode: 1 114 | - _ZWrite: 1 115 | m_Colors: 116 | - _BaseColor: {r: 0, g: 1, b: 0, a: 1} 117 | - _Color: {r: 0, g: 1, b: 0, a: 1} 118 | - _EmissionColor: {r: 0, g: 1, b: 0, a: 1} 119 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 120 | m_BuildTextureStacks: [] 121 | --- !u!114 &3598525137451903486 122 | MonoBehaviour: 123 | m_ObjectHideFlags: 11 124 | m_CorrespondingSourceObject: {fileID: 0} 125 | m_PrefabInstance: {fileID: 0} 126 | m_PrefabAsset: {fileID: 0} 127 | m_GameObject: {fileID: 0} 128 | m_Enabled: 1 129 | m_EditorHideFlags: 0 130 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 131 | m_Name: 132 | m_EditorClassIdentifier: 133 | version: 7 134 | -------------------------------------------------------------------------------- /Samples/Materials/Cuber_Green Eye.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: db6ed99d45ad8ea4998a3d8ccc39a127 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Materials/Cuber_Red Eye.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 8 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Cuber_Red Eye 11 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 12 | m_ValidKeywords: 13 | - _EMISSION 14 | m_InvalidKeywords: [] 15 | m_LightmapFlags: 0 16 | m_EnableInstancingVariants: 0 17 | m_DoubleSidedGI: 0 18 | m_CustomRenderQueue: -1 19 | stringTagMap: 20 | RenderType: Opaque 21 | disabledShaderPasses: [] 22 | m_SavedProperties: 23 | serializedVersion: 3 24 | m_TexEnvs: 25 | - _BaseMap: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _BumpMap: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailAlbedoMap: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _DetailMask: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _DetailNormalMap: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _EmissionMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _MainTex: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _MetallicGlossMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | - _OcclusionMap: 58 | m_Texture: {fileID: 0} 59 | m_Scale: {x: 1, y: 1} 60 | m_Offset: {x: 0, y: 0} 61 | - _ParallaxMap: 62 | m_Texture: {fileID: 0} 63 | m_Scale: {x: 1, y: 1} 64 | m_Offset: {x: 0, y: 0} 65 | - _SpecGlossMap: 66 | m_Texture: {fileID: 0} 67 | m_Scale: {x: 1, y: 1} 68 | m_Offset: {x: 0, y: 0} 69 | - unity_Lightmaps: 70 | m_Texture: {fileID: 0} 71 | m_Scale: {x: 1, y: 1} 72 | m_Offset: {x: 0, y: 0} 73 | - unity_LightmapsInd: 74 | m_Texture: {fileID: 0} 75 | m_Scale: {x: 1, y: 1} 76 | m_Offset: {x: 0, y: 0} 77 | - unity_ShadowMasks: 78 | m_Texture: {fileID: 0} 79 | m_Scale: {x: 1, y: 1} 80 | m_Offset: {x: 0, y: 0} 81 | m_Ints: [] 82 | m_Floats: 83 | - _AlphaClip: 0 84 | - _AlphaToMask: 0 85 | - _Blend: 0 86 | - _BlendModePreserveSpecular: 1 87 | - _BumpScale: 1 88 | - _ClearCoatMask: 0 89 | - _ClearCoatSmoothness: 0 90 | - _Cull: 2 91 | - _Cutoff: 0.5 92 | - _DetailAlbedoMapScale: 1 93 | - _DetailNormalMapScale: 1 94 | - _DstBlend: 0 95 | - _DstBlendAlpha: 0 96 | - _EnvironmentReflections: 1 97 | - _GlossMapScale: 1 98 | - _Glossiness: 0 99 | - _GlossyReflections: 1 100 | - _Metallic: 0 101 | - _Mode: 0 102 | - _OcclusionStrength: 1 103 | - _Parallax: 0.02 104 | - _QueueOffset: 0 105 | - _ReceiveShadows: 1 106 | - _Smoothness: 0 107 | - _SmoothnessTextureChannel: 0 108 | - _SpecularHighlights: 1 109 | - _SrcBlend: 1 110 | - _SrcBlendAlpha: 1 111 | - _Surface: 0 112 | - _UVSec: 0 113 | - _WorkflowMode: 1 114 | - _ZWrite: 1 115 | m_Colors: 116 | - _BaseColor: {r: 1, g: 0, b: 0, a: 1} 117 | - _Color: {r: 1, g: 0, b: 0, a: 1} 118 | - _EmissionColor: {r: 1, g: 0, b: 0, a: 1} 119 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 120 | m_BuildTextureStacks: [] 121 | --- !u!114 &5169599777108817469 122 | MonoBehaviour: 123 | m_ObjectHideFlags: 11 124 | m_CorrespondingSourceObject: {fileID: 0} 125 | m_PrefabInstance: {fileID: 0} 126 | m_PrefabAsset: {fileID: 0} 127 | m_GameObject: {fileID: 0} 128 | m_Enabled: 1 129 | m_EditorHideFlags: 0 130 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 131 | m_Name: 132 | m_EditorClassIdentifier: 133 | version: 7 134 | -------------------------------------------------------------------------------- /Samples/Materials/Cuber_Red Eye.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6767633d68e757f43bf48e79a7e95624 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Materials/Sphere_Deactive.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 8 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Sphere_Deactive 11 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 12 | m_Parent: {fileID: 0} 13 | m_ModifiedSerializedProperties: 0 14 | m_ValidKeywords: 15 | - _ALPHAPREMULTIPLY_ON 16 | - _EMISSION 17 | - _SURFACE_TYPE_TRANSPARENT 18 | m_InvalidKeywords: 19 | - _ALPHABLEND_ON 20 | m_LightmapFlags: 0 21 | m_EnableInstancingVariants: 0 22 | m_DoubleSidedGI: 0 23 | m_CustomRenderQueue: 3000 24 | stringTagMap: 25 | RenderType: Transparent 26 | disabledShaderPasses: 27 | - DepthOnly 28 | m_LockedProperties: 29 | m_SavedProperties: 30 | serializedVersion: 3 31 | m_TexEnvs: 32 | - _BaseMap: 33 | m_Texture: {fileID: 0} 34 | m_Scale: {x: 1, y: 1} 35 | m_Offset: {x: 0, y: 0} 36 | - _BumpMap: 37 | m_Texture: {fileID: 0} 38 | m_Scale: {x: 1, y: 1} 39 | m_Offset: {x: 0, y: 0} 40 | - _Cube: 41 | m_Texture: {fileID: 0} 42 | m_Scale: {x: 1, y: 1} 43 | m_Offset: {x: 0, y: 0} 44 | - _DetailAlbedoMap: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - _DetailMask: 49 | m_Texture: {fileID: 0} 50 | m_Scale: {x: 1, y: 1} 51 | m_Offset: {x: 0, y: 0} 52 | - _DetailNormalMap: 53 | m_Texture: {fileID: 0} 54 | m_Scale: {x: 1, y: 1} 55 | m_Offset: {x: 0, y: 0} 56 | - _EmissionMap: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - _MainTex: 61 | m_Texture: {fileID: 0} 62 | m_Scale: {x: 1, y: 1} 63 | m_Offset: {x: 0, y: 0} 64 | - _MetallicGlossMap: 65 | m_Texture: {fileID: 0} 66 | m_Scale: {x: 1, y: 1} 67 | m_Offset: {x: 0, y: 0} 68 | - _OcclusionMap: 69 | m_Texture: {fileID: 0} 70 | m_Scale: {x: 1, y: 1} 71 | m_Offset: {x: 0, y: 0} 72 | - _ParallaxMap: 73 | m_Texture: {fileID: 0} 74 | m_Scale: {x: 1, y: 1} 75 | m_Offset: {x: 0, y: 0} 76 | - _SpecGlossMap: 77 | m_Texture: {fileID: 0} 78 | m_Scale: {x: 1, y: 1} 79 | m_Offset: {x: 0, y: 0} 80 | - unity_Lightmaps: 81 | m_Texture: {fileID: 0} 82 | m_Scale: {x: 1, y: 1} 83 | m_Offset: {x: 0, y: 0} 84 | - unity_LightmapsInd: 85 | m_Texture: {fileID: 0} 86 | m_Scale: {x: 1, y: 1} 87 | m_Offset: {x: 0, y: 0} 88 | - unity_ShadowMasks: 89 | m_Texture: {fileID: 0} 90 | m_Scale: {x: 1, y: 1} 91 | m_Offset: {x: 0, y: 0} 92 | m_Ints: [] 93 | m_Floats: 94 | - _AlphaClip: 0 95 | - _AlphaToMask: 0 96 | - _Blend: 0 97 | - _BlendModePreserveSpecular: 1 98 | - _BumpScale: 1 99 | - _ClearCoatMask: 0 100 | - _ClearCoatSmoothness: 0 101 | - _Cull: 2 102 | - _Cutoff: 0.375 103 | - _DetailAlbedoMapScale: 1 104 | - _DetailNormalMapScale: 1 105 | - _DstBlend: 10 106 | - _DstBlendAlpha: 10 107 | - _EnvironmentReflections: 1 108 | - _GlossMapScale: 1 109 | - _Glossiness: 1 110 | - _GlossyReflections: 1 111 | - _Metallic: 1 112 | - _Mode: 2 113 | - _OcclusionStrength: 1 114 | - _Parallax: 0.02 115 | - _QueueOffset: 0 116 | - _ReceiveShadows: 1 117 | - _Shininess: 0.574 118 | - _Smoothness: 1 119 | - _SmoothnessTextureChannel: 0 120 | - _SpecularHighlights: 1 121 | - _SrcBlend: 1 122 | - _SrcBlendAlpha: 1 123 | - _Surface: 1 124 | - _UVSec: 0 125 | - _WorkflowMode: 1 126 | - _ZWrite: 0 127 | m_Colors: 128 | - _BaseColor: {r: 0, g: 0, b: 0, a: 0.28627452} 129 | - _Color: {r: 1, g: 1, b: 1, a: 1} 130 | - _EmissionColor: {r: 1, g: 0.028497312, b: 0, a: 1} 131 | - _ReflectColor: {r: 0.39705884, g: 0.39705884, b: 0.39705884, a: 0.5} 132 | - _SpecColor: {r: 1, g: 1, b: 1, a: 1} 133 | m_BuildTextureStacks: [] 134 | --- !u!114 &6789830310263493028 135 | MonoBehaviour: 136 | m_ObjectHideFlags: 11 137 | m_CorrespondingSourceObject: {fileID: 0} 138 | m_PrefabInstance: {fileID: 0} 139 | m_PrefabAsset: {fileID: 0} 140 | m_GameObject: {fileID: 0} 141 | m_Enabled: 1 142 | m_EditorHideFlags: 0 143 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 144 | m_Name: 145 | m_EditorClassIdentifier: 146 | version: 7 147 | -------------------------------------------------------------------------------- /Samples/Materials/Sphere_Deactive.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 72aa064c31bc09b4f87e2fcabfa3c143 3 | timeCreated: 1524047802 4 | licenseType: Store 5 | NativeFormatImporter: 6 | externalObjects: {} 7 | mainObjectFileID: 2100000 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Samples/Materials/Sphere_Normal.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-6541442167868150019 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 11 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | version: 7 16 | --- !u!21 &2100000 17 | Material: 18 | serializedVersion: 8 19 | m_ObjectHideFlags: 0 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_Name: Sphere_Normal 24 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 25 | m_Parent: {fileID: 0} 26 | m_ModifiedSerializedProperties: 0 27 | m_ValidKeywords: 28 | - _ALPHAPREMULTIPLY_ON 29 | - _EMISSION 30 | - _SURFACE_TYPE_TRANSPARENT 31 | m_InvalidKeywords: 32 | - _ALPHABLEND_ON 33 | m_LightmapFlags: 0 34 | m_EnableInstancingVariants: 0 35 | m_DoubleSidedGI: 0 36 | m_CustomRenderQueue: 3000 37 | stringTagMap: 38 | RenderType: Transparent 39 | disabledShaderPasses: 40 | - DepthOnly 41 | m_LockedProperties: 42 | m_SavedProperties: 43 | serializedVersion: 3 44 | m_TexEnvs: 45 | - _BaseMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _BumpMap: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _Cube: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | - _DetailAlbedoMap: 58 | m_Texture: {fileID: 0} 59 | m_Scale: {x: 1, y: 1} 60 | m_Offset: {x: 0, y: 0} 61 | - _DetailMask: 62 | m_Texture: {fileID: 0} 63 | m_Scale: {x: 1, y: 1} 64 | m_Offset: {x: 0, y: 0} 65 | - _DetailNormalMap: 66 | m_Texture: {fileID: 0} 67 | m_Scale: {x: 1, y: 1} 68 | m_Offset: {x: 0, y: 0} 69 | - _EmissionMap: 70 | m_Texture: {fileID: 0} 71 | m_Scale: {x: 1, y: 1} 72 | m_Offset: {x: 0, y: 0} 73 | - _MainTex: 74 | m_Texture: {fileID: 0} 75 | m_Scale: {x: 1, y: 1} 76 | m_Offset: {x: 0, y: 0} 77 | - _MetallicGlossMap: 78 | m_Texture: {fileID: 0} 79 | m_Scale: {x: 1, y: 1} 80 | m_Offset: {x: 0, y: 0} 81 | - _OcclusionMap: 82 | m_Texture: {fileID: 0} 83 | m_Scale: {x: 1, y: 1} 84 | m_Offset: {x: 0, y: 0} 85 | - _ParallaxMap: 86 | m_Texture: {fileID: 0} 87 | m_Scale: {x: 1, y: 1} 88 | m_Offset: {x: 0, y: 0} 89 | - _SpecGlossMap: 90 | m_Texture: {fileID: 0} 91 | m_Scale: {x: 1, y: 1} 92 | m_Offset: {x: 0, y: 0} 93 | - unity_Lightmaps: 94 | m_Texture: {fileID: 0} 95 | m_Scale: {x: 1, y: 1} 96 | m_Offset: {x: 0, y: 0} 97 | - unity_LightmapsInd: 98 | m_Texture: {fileID: 0} 99 | m_Scale: {x: 1, y: 1} 100 | m_Offset: {x: 0, y: 0} 101 | - unity_ShadowMasks: 102 | m_Texture: {fileID: 0} 103 | m_Scale: {x: 1, y: 1} 104 | m_Offset: {x: 0, y: 0} 105 | m_Ints: [] 106 | m_Floats: 107 | - _AlphaClip: 0 108 | - _AlphaToMask: 0 109 | - _Blend: 0 110 | - _BlendModePreserveSpecular: 1 111 | - _BumpScale: 1 112 | - _ClearCoatMask: 0 113 | - _ClearCoatSmoothness: 0 114 | - _Cull: 2 115 | - _Cutoff: 0.375 116 | - _DetailAlbedoMapScale: 1 117 | - _DetailNormalMapScale: 1 118 | - _DstBlend: 10 119 | - _DstBlendAlpha: 10 120 | - _EnvironmentReflections: 1 121 | - _GlossMapScale: 1 122 | - _Glossiness: 1 123 | - _GlossyReflections: 1 124 | - _Metallic: 1 125 | - _Mode: 2 126 | - _OcclusionStrength: 1 127 | - _Parallax: 0.02 128 | - _QueueOffset: 0 129 | - _ReceiveShadows: 1 130 | - _Shininess: 0.574 131 | - _Smoothness: 1 132 | - _SmoothnessTextureChannel: 0 133 | - _SpecularHighlights: 1 134 | - _SrcBlend: 1 135 | - _SrcBlendAlpha: 1 136 | - _Surface: 1 137 | - _UVSec: 0 138 | - _WorkflowMode: 1 139 | - _ZWrite: 0 140 | m_Colors: 141 | - _BaseColor: {r: 0, g: 0, b: 0, a: 0.28627452} 142 | - _Color: {r: 1, g: 1, b: 1, a: 1} 143 | - _EmissionColor: {r: 0, g: 1, b: 0.61283064, a: 1} 144 | - _ReflectColor: {r: 0.39705884, g: 0.39705884, b: 0.39705884, a: 0.5} 145 | - _SpecColor: {r: 1, g: 1, b: 1, a: 1} 146 | m_BuildTextureStacks: [] 147 | -------------------------------------------------------------------------------- /Samples/Materials/Sphere_Normal.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2413bb4ff9c9de54b86a05a48c8e2a79 3 | timeCreated: 1524047802 4 | licenseType: Store 5 | NativeFormatImporter: 6 | externalObjects: {} 7 | mainObjectFileID: 2100000 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Samples/Materials_BuildInRP.unitypackage: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Threeyes/EventPlayer/c6fe32e7510eec5ec3f734073b415786be591010/Samples/Materials_BuildInRP.unitypackage -------------------------------------------------------------------------------- /Samples/Materials_BuildInRP.unitypackage.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 28a54a3af2ff6044c9a2ddeb9eaf781d 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Samples/Materials_URP.unitypackage: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Threeyes/EventPlayer/c6fe32e7510eec5ec3f734073b415786be591010/Samples/Materials_URP.unitypackage -------------------------------------------------------------------------------- /Samples/Materials_URP.unitypackage.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 87858161b319aeb4daee5f615168f91f 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Samples/Playables.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8246e7149a24ba5498051e08abe692dc 3 | folderAsset: yes 4 | timeCreated: 1523612384 5 | licenseType: Store 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Samples/Playables/21 Extend_Timeline.playable.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0ea2445939dbf964d8aafd6d34e0d4bb 3 | timeCreated: 1523612384 4 | licenseType: Store 5 | NativeFormatImporter: 6 | externalObjects: {} 7 | mainObjectFileID: 11400000 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Samples/Playables/21_1 Extend_Timeline_BezierSolution.playable.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: eb1f7623fbf3fda408175afe25e15f07 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Playables/21_2 Extend_Timeline_DoTweenPro.playable.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ccc4fa5d0de3eac42b2487258e33e8c8 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b34cfdf7d08307d48b2b07a8fd2501d3 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Prefabs/3D.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7852440705ec80f449f4606ea8280136 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Prefabs/3D/Change Scene Manager.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a6dc9e4a5a7737e4ba758791430eb61e 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 100100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Prefabs/3D/Cuber.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1d9fe8aadac2b9c4cb4b0653241d6ea4 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 100100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Prefabs/3D/Enivronment.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ffe70447c2bd7794988d9f0ebaaabec1 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 100100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Prefabs/EP.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8ef24c798dfe0a146b6a8e96e9b8b622 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Prefabs/EP/EP Child.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1001 &100100000 4 | Prefab: 5 | m_ObjectHideFlags: 1 6 | serializedVersion: 2 7 | m_Modification: 8 | m_TransformParent: {fileID: 0} 9 | m_Modifications: [] 10 | m_RemovedComponents: [] 11 | m_SourcePrefab: {fileID: 0} 12 | m_RootGameObject: {fileID: 1001356478810060} 13 | m_IsPrefabAsset: 1 14 | --- !u!1 &1001356478810060 15 | GameObject: 16 | m_ObjectHideFlags: 0 17 | m_CorrespondingSourceObject: {fileID: 0} 18 | m_PrefabInternal: {fileID: 100100000} 19 | serializedVersion: 6 20 | m_Component: 21 | - component: {fileID: 4054678356680244} 22 | - component: {fileID: 114373349571195348} 23 | - component: {fileID: 114826863995526232} 24 | m_Layer: 0 25 | m_Name: EP Child 26 | m_TagString: Untagged 27 | m_Icon: {fileID: 0} 28 | m_NavMeshLayer: 0 29 | m_StaticEditorFlags: 0 30 | m_IsActive: 1 31 | --- !u!4 &4054678356680244 32 | Transform: 33 | m_ObjectHideFlags: 1 34 | m_CorrespondingSourceObject: {fileID: 0} 35 | m_PrefabInternal: {fileID: 100100000} 36 | m_GameObject: {fileID: 1001356478810060} 37 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 38 | m_LocalPosition: {x: 0, y: 0, z: 0} 39 | m_LocalScale: {x: 1, y: 1, z: 1} 40 | m_Children: [] 41 | m_Father: {fileID: 0} 42 | m_RootOrder: 0 43 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 44 | --- !u!114 &114373349571195348 45 | MonoBehaviour: 46 | m_ObjectHideFlags: 1 47 | m_CorrespondingSourceObject: {fileID: 0} 48 | m_PrefabInternal: {fileID: 100100000} 49 | m_GameObject: {fileID: 1001356478810060} 50 | m_Enabled: 1 51 | m_EditorHideFlags: 0 52 | m_Script: {fileID: 11500000, guid: a862823d819b2434da07a9aff5488bef, type: 3} 53 | m_Name: 54 | m_EditorClassIdentifier: 55 | onPlayStop: 56 | m_PersistentCalls: 57 | m_Calls: [] 58 | m_TypeName: BoolEvent, ColyuPlugins, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null 59 | onPlay: 60 | m_PersistentCalls: 61 | m_Calls: 62 | - m_Target: {fileID: 114826863995526232} 63 | m_MethodName: Log 64 | m_Mode: 5 65 | m_Arguments: 66 | m_ObjectArgument: {fileID: 0} 67 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 68 | m_IntArgument: 0 69 | m_FloatArgument: 0 70 | m_StringArgument: Play 71 | m_BoolArgument: 0 72 | m_CallState: 1 73 | m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, 74 | Culture=neutral, PublicKeyToken=null 75 | onStop: 76 | m_PersistentCalls: 77 | m_Calls: 78 | - m_Target: {fileID: 114826863995526232} 79 | m_MethodName: Log 80 | m_Mode: 5 81 | m_Arguments: 82 | m_ObjectArgument: {fileID: 0} 83 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 84 | m_IntArgument: 0 85 | m_FloatArgument: 0 86 | m_StringArgument: Stop 87 | m_BoolArgument: 0 88 | m_CallState: 1 89 | m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, 90 | Culture=neutral, PublicKeyToken=null 91 | canPlay: 1 92 | canStop: 1 93 | isActive: 1 94 | isPlayOnAwake: 0 95 | isPlayOnce: 0 96 | isReverse: 0 97 | isGroup: 0 98 | isIncludeHide: 1 99 | isRecursive: 0 100 | id: 101 | isInvokeByID: 0 102 | targetIDLocation: 1 103 | targetId: 104 | isLogOnPlay: 0 105 | isLogOnStop: 0 106 | isPlayed: 0 107 | --- !u!114 &114826863995526232 108 | MonoBehaviour: 109 | m_ObjectHideFlags: 1 110 | m_CorrespondingSourceObject: {fileID: 0} 111 | m_PrefabInternal: {fileID: 100100000} 112 | m_GameObject: {fileID: 1001356478810060} 113 | m_Enabled: 1 114 | m_EditorHideFlags: 0 115 | m_Script: {fileID: 11500000, guid: 05f9bbca5de24ec479d5ade46c196b21, type: 3} 116 | m_Name: 117 | m_EditorClassIdentifier: 118 | logType: 3 119 | withName: 1 120 | format: 121 | tips: 122 | -------------------------------------------------------------------------------- /Samples/Prefabs/EP/EP Child.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6ca83d7ff805a3649994bbe9bb20e8dd 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 100100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Prefabs/EP/EP Light Controller.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c9de0d75a64e11b4084514107ae4dd16 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 100100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Prefabs/EP/VideoEP Child.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &1742414726498774 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 4284603131385734} 12 | - component: {fileID: 114351836454948394} 13 | - component: {fileID: 328543152572913518} 14 | m_Layer: 0 15 | m_Name: VideoEP Child 16 | m_TagString: Untagged 17 | m_Icon: {fileID: 0} 18 | m_NavMeshLayer: 0 19 | m_StaticEditorFlags: 0 20 | m_IsActive: 1 21 | --- !u!4 &4284603131385734 22 | Transform: 23 | m_ObjectHideFlags: 0 24 | m_CorrespondingSourceObject: {fileID: 0} 25 | m_PrefabInstance: {fileID: 0} 26 | m_PrefabAsset: {fileID: 0} 27 | m_GameObject: {fileID: 1742414726498774} 28 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 29 | m_LocalPosition: {x: 0, y: 1.3889999, z: 0} 30 | m_LocalScale: {x: 1.656, y: 0.92, z: 0.92} 31 | m_ConstrainProportionsScale: 0 32 | m_Children: [] 33 | m_Father: {fileID: 0} 34 | m_RootOrder: 0 35 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 36 | --- !u!114 &114351836454948394 37 | MonoBehaviour: 38 | m_ObjectHideFlags: 0 39 | m_CorrespondingSourceObject: {fileID: 0} 40 | m_PrefabInstance: {fileID: 0} 41 | m_PrefabAsset: {fileID: 0} 42 | m_GameObject: {fileID: 1742414726498774} 43 | m_Enabled: 1 44 | m_EditorHideFlags: 0 45 | m_Script: {fileID: 11500000, guid: fe25d1f7f359e5d41bdf63a305cef6c7, type: 3} 46 | m_Name: 47 | m_EditorClassIdentifier: 48 | onPlayStop: 49 | m_PersistentCalls: 50 | m_Calls: [] 51 | onPlay: 52 | m_PersistentCalls: 53 | m_Calls: [] 54 | onStop: 55 | m_PersistentCalls: 56 | m_Calls: [] 57 | onActiveDeactive: 58 | m_PersistentCalls: 59 | m_Calls: [] 60 | isActive: 1 61 | canPlay: 1 62 | canStop: 1 63 | isPlayOnAwake: 0 64 | isPlayOnce: 0 65 | isReverse: 0 66 | listListener: [] 67 | isGroup: 0 68 | isIncludeHide: 1 69 | isRecursive: 0 70 | id: 71 | isInvokeByID: 0 72 | targetIDLocation: 1 73 | targetId: 74 | isLogOnPlay: 0 75 | isLogOnStop: 0 76 | isPlayed: 0 77 | state: 0 78 | onPlayWithParam: 79 | m_PersistentCalls: 80 | m_Calls: [] 81 | onStopWithParam: 82 | m_PersistentCalls: 83 | m_Calls: [] 84 | isPlayWithParam: 0 85 | isStopWithParam: 0 86 | value: {fileID: 0} 87 | isDetectMatch: 0 88 | targetValue: {fileID: 0} 89 | comp: {fileID: 328543152572913518} 90 | goTarget: {fileID: 0} 91 | onPlayPause: 92 | m_PersistentCalls: 93 | m_Calls: [] 94 | onInit: 95 | m_PersistentCalls: 96 | m_Calls: [] 97 | onPrepareCompleted: 98 | m_PersistentCalls: 99 | m_Calls: [] 100 | onVideoPercentChanged: 101 | m_PersistentCalls: 102 | m_Calls: [] 103 | onVideoTimeInfoChanged: 104 | m_PersistentCalls: 105 | m_Calls: [] 106 | onFinish: 107 | m_PersistentCalls: 108 | m_Calls: [] 109 | --- !u!328 &328543152572913518 110 | VideoPlayer: 111 | m_ObjectHideFlags: 0 112 | m_CorrespondingSourceObject: {fileID: 0} 113 | m_PrefabInstance: {fileID: 0} 114 | m_PrefabAsset: {fileID: 0} 115 | m_GameObject: {fileID: 1742414726498774} 116 | m_Enabled: 1 117 | m_VideoClip: {fileID: 0} 118 | m_TargetCameraAlpha: 1 119 | m_TargetCamera3DLayout: 0 120 | m_TargetCamera: {fileID: 0} 121 | m_TargetTexture: {fileID: 0} 122 | m_TimeReference: 0 123 | m_TargetMaterialRenderer: {fileID: 0} 124 | m_TargetMaterialProperty: _MainTex 125 | m_RenderMode: 2 126 | m_AspectRatio: 2 127 | m_DataSource: 0 128 | m_PlaybackSpeed: 1 129 | m_AudioOutputMode: 2 130 | m_TargetAudioSources: 131 | - {fileID: 0} 132 | m_DirectAudioVolumes: 133 | - 1 134 | m_Url: 135 | m_EnabledAudioTracks: 01 136 | m_DirectAudioMutes: 00 137 | m_ControlledAudioTrackCount: 1 138 | m_PlayOnAwake: 0 139 | m_SkipOnDrop: 1 140 | m_Looping: 0 141 | m_WaitForFirstFrame: 1 142 | m_FrameReadyEventEnabled: 0 143 | m_VideoShaders: [] 144 | -------------------------------------------------------------------------------- /Samples/Prefabs/EP/VideoEP Child.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 83c2dc356fa9ee04e9e01c92f195bd86 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 100100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Prefabs/UI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 423ffadfec3fc7642859fffd09344eb1 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Prefabs/UI/Slider.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 17cdec835f704934a888f7c75e6d3d9b 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 100100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Prefabs/UI/State Indicator.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cc8bc394ad86afe4a999f808803b3dec 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 100100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Prefabs/UI/Text Area.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1001 &100100000 4 | Prefab: 5 | m_ObjectHideFlags: 1 6 | serializedVersion: 2 7 | m_Modification: 8 | m_TransformParent: {fileID: 0} 9 | m_Modifications: [] 10 | m_RemovedComponents: [] 11 | m_SourcePrefab: {fileID: 0} 12 | m_RootGameObject: {fileID: 1779383759626632} 13 | m_IsPrefabAsset: 1 14 | --- !u!1 &1182582349000574 15 | GameObject: 16 | m_ObjectHideFlags: 0 17 | m_CorrespondingSourceObject: {fileID: 0} 18 | m_PrefabInternal: {fileID: 100100000} 19 | serializedVersion: 6 20 | m_Component: 21 | - component: {fileID: 224196226939924536} 22 | - component: {fileID: 222393954566400748} 23 | - component: {fileID: 114078563988862660} 24 | m_Layer: 5 25 | m_Name: Text 26 | m_TagString: Untagged 27 | m_Icon: {fileID: 0} 28 | m_NavMeshLayer: 0 29 | m_StaticEditorFlags: 0 30 | m_IsActive: 1 31 | --- !u!1 &1779383759626632 32 | GameObject: 33 | m_ObjectHideFlags: 0 34 | m_CorrespondingSourceObject: {fileID: 0} 35 | m_PrefabInternal: {fileID: 100100000} 36 | serializedVersion: 6 37 | m_Component: 38 | - component: {fileID: 224516815151314974} 39 | - component: {fileID: 222170395107386308} 40 | - component: {fileID: 114112455961713952} 41 | m_Layer: 5 42 | m_Name: Text Area 43 | m_TagString: Untagged 44 | m_Icon: {fileID: 0} 45 | m_NavMeshLayer: 0 46 | m_StaticEditorFlags: 0 47 | m_IsActive: 1 48 | --- !u!114 &114078563988862660 49 | MonoBehaviour: 50 | m_ObjectHideFlags: 1 51 | m_CorrespondingSourceObject: {fileID: 0} 52 | m_PrefabInternal: {fileID: 100100000} 53 | m_GameObject: {fileID: 1182582349000574} 54 | m_Enabled: 1 55 | m_EditorHideFlags: 0 56 | m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} 57 | m_Name: 58 | m_EditorClassIdentifier: 59 | m_Material: {fileID: 0} 60 | m_Color: {r: 1, g: 1, b: 1, a: 1} 61 | m_RaycastTarget: 1 62 | m_OnCullStateChanged: 63 | m_PersistentCalls: 64 | m_Calls: [] 65 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, 66 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 67 | m_FontData: 68 | m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} 69 | m_FontSize: 18 70 | m_FontStyle: 0 71 | m_BestFit: 0 72 | m_MinSize: 1 73 | m_MaxSize: 40 74 | m_Alignment: 4 75 | m_AlignByGeometry: 0 76 | m_RichText: 1 77 | m_HorizontalOverflow: 0 78 | m_VerticalOverflow: 0 79 | m_LineSpacing: 1 80 | m_Text: Control 81 | --- !u!114 &114112455961713952 82 | MonoBehaviour: 83 | m_ObjectHideFlags: 1 84 | m_CorrespondingSourceObject: {fileID: 0} 85 | m_PrefabInternal: {fileID: 100100000} 86 | m_GameObject: {fileID: 1779383759626632} 87 | m_Enabled: 1 88 | m_EditorHideFlags: 0 89 | m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3} 90 | m_Name: 91 | m_EditorClassIdentifier: 92 | m_IgnoreLayout: 0 93 | m_MinWidth: -1 94 | m_MinHeight: -1 95 | m_PreferredWidth: -1 96 | m_PreferredHeight: 32 97 | m_FlexibleWidth: -1 98 | m_FlexibleHeight: -1 99 | m_LayoutPriority: 1 100 | --- !u!222 &222170395107386308 101 | CanvasRenderer: 102 | m_ObjectHideFlags: 1 103 | m_CorrespondingSourceObject: {fileID: 0} 104 | m_PrefabInternal: {fileID: 100100000} 105 | m_GameObject: {fileID: 1779383759626632} 106 | m_CullTransparentMesh: 0 107 | --- !u!222 &222393954566400748 108 | CanvasRenderer: 109 | m_ObjectHideFlags: 1 110 | m_CorrespondingSourceObject: {fileID: 0} 111 | m_PrefabInternal: {fileID: 100100000} 112 | m_GameObject: {fileID: 1182582349000574} 113 | m_CullTransparentMesh: 0 114 | --- !u!224 &224196226939924536 115 | RectTransform: 116 | m_ObjectHideFlags: 1 117 | m_CorrespondingSourceObject: {fileID: 0} 118 | m_PrefabInternal: {fileID: 100100000} 119 | m_GameObject: {fileID: 1182582349000574} 120 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 121 | m_LocalPosition: {x: 0, y: 0, z: 0} 122 | m_LocalScale: {x: 1, y: 1, z: 1} 123 | m_Children: [] 124 | m_Father: {fileID: 224516815151314974} 125 | m_RootOrder: 0 126 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 127 | m_AnchorMin: {x: 0, y: 0} 128 | m_AnchorMax: {x: 1, y: 1} 129 | m_AnchoredPosition: {x: 0, y: 0} 130 | m_SizeDelta: {x: 0, y: 0} 131 | m_Pivot: {x: 0.5, y: 0.5} 132 | --- !u!224 &224516815151314974 133 | RectTransform: 134 | m_ObjectHideFlags: 1 135 | m_CorrespondingSourceObject: {fileID: 0} 136 | m_PrefabInternal: {fileID: 100100000} 137 | m_GameObject: {fileID: 1779383759626632} 138 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 139 | m_LocalPosition: {x: 0, y: 0, z: 0} 140 | m_LocalScale: {x: 1, y: 1, z: 1} 141 | m_Children: 142 | - {fileID: 224196226939924536} 143 | m_Father: {fileID: 0} 144 | m_RootOrder: 0 145 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 146 | m_AnchorMin: {x: 0, y: 0} 147 | m_AnchorMax: {x: 0, y: 0} 148 | m_AnchoredPosition: {x: 0, y: 0} 149 | m_SizeDelta: {x: 0, y: 0} 150 | m_Pivot: {x: 0.5, y: 0.5} 151 | -------------------------------------------------------------------------------- /Samples/Prefabs/UI/Text Area.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: df44053aa4b65e042bb9be1b54955dc6 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 100100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Prefabs/UI/UI Button.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 42d8e322da6aacf438c60620f8d3b6e1 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 100100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Prefabs/UI/UI Toggle.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c90faca6a1bff8b428d223cedaad3ebb 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 100100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Prefabs/UI/Video Area.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &581350816172099526 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 581350816172099527} 12 | - component: {fileID: 581350816172099522} 13 | - component: {fileID: 581350816172099525} 14 | - component: {fileID: 7801514759281942549} 15 | m_Layer: 5 16 | m_Name: Video Area 17 | m_TagString: Untagged 18 | m_Icon: {fileID: 0} 19 | m_NavMeshLayer: 0 20 | m_StaticEditorFlags: 0 21 | m_IsActive: 1 22 | --- !u!224 &581350816172099527 23 | RectTransform: 24 | m_ObjectHideFlags: 0 25 | m_CorrespondingSourceObject: {fileID: 0} 26 | m_PrefabInstance: {fileID: 0} 27 | m_PrefabAsset: {fileID: 0} 28 | m_GameObject: {fileID: 581350816172099526} 29 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 30 | m_LocalPosition: {x: 0, y: 0, z: 0} 31 | m_LocalScale: {x: 1, y: 1, z: 1} 32 | m_ConstrainProportionsScale: 0 33 | m_Children: [] 34 | m_Father: {fileID: 0} 35 | m_RootOrder: 0 36 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 37 | m_AnchorMin: {x: 0, y: 0} 38 | m_AnchorMax: {x: 0, y: 0} 39 | m_AnchoredPosition: {x: 0, y: 0} 40 | m_SizeDelta: {x: 0, y: 0} 41 | m_Pivot: {x: 0.5, y: 0.5} 42 | --- !u!222 &581350816172099522 43 | CanvasRenderer: 44 | m_ObjectHideFlags: 0 45 | m_CorrespondingSourceObject: {fileID: 0} 46 | m_PrefabInstance: {fileID: 0} 47 | m_PrefabAsset: {fileID: 0} 48 | m_GameObject: {fileID: 581350816172099526} 49 | m_CullTransparentMesh: 1 50 | --- !u!114 &581350816172099525 51 | MonoBehaviour: 52 | m_ObjectHideFlags: 0 53 | m_CorrespondingSourceObject: {fileID: 0} 54 | m_PrefabInstance: {fileID: 0} 55 | m_PrefabAsset: {fileID: 0} 56 | m_GameObject: {fileID: 581350816172099526} 57 | m_Enabled: 1 58 | m_EditorHideFlags: 0 59 | m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} 60 | m_Name: 61 | m_EditorClassIdentifier: 62 | m_Material: {fileID: 0} 63 | m_Color: {r: 1, g: 1, b: 1, a: 1} 64 | m_RaycastTarget: 1 65 | m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} 66 | m_Maskable: 1 67 | m_OnCullStateChanged: 68 | m_PersistentCalls: 69 | m_Calls: [] 70 | m_Texture: {fileID: 0} 71 | m_UVRect: 72 | serializedVersion: 2 73 | x: 0 74 | y: 0 75 | width: 1 76 | height: 1 77 | --- !u!114 &7801514759281942549 78 | MonoBehaviour: 79 | m_ObjectHideFlags: 0 80 | m_CorrespondingSourceObject: {fileID: 0} 81 | m_PrefabInstance: {fileID: 0} 82 | m_PrefabAsset: {fileID: 0} 83 | m_GameObject: {fileID: 581350816172099526} 84 | m_Enabled: 1 85 | m_EditorHideFlags: 0 86 | m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} 87 | m_Name: 88 | m_EditorClassIdentifier: 89 | m_IgnoreLayout: 0 90 | m_MinWidth: -1 91 | m_MinHeight: -1 92 | m_PreferredWidth: -1 93 | m_PreferredHeight: 94 94 | m_FlexibleWidth: -1 95 | m_FlexibleHeight: -1 96 | m_LayoutPriority: 1 97 | -------------------------------------------------------------------------------- /Samples/Prefabs/UI/Video Area.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 46ac3425de690c843b18265fdf7ac056 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Samples/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b04a013ed9860d6408c1a8e9c06caae9 3 | folderAsset: yes 4 | timeCreated: 1523612353 5 | licenseType: Store 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Samples/Scenes/0 BasicSetting.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a3c1483a67961d442a7747eb14664ab4 3 | timeCreated: 1523611759 4 | licenseType: Store 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Samples/Scenes/1 GroupSetting.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e89e68d06c752234e85d71301514d961 3 | timeCreated: 1523611759 4 | licenseType: Store 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Samples/Scenes/10 Sequence.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 569d5c607afb8b648b2c5a84926adf75 3 | timeCreated: 1523611759 4 | licenseType: Store 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Samples/Scenes/2 IDSetting.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 13a8991f34df122428ab5778967fda5f 3 | timeCreated: 1523611759 4 | licenseType: Store 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Samples/Scenes/21 Extend_Timeline.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 65ad3edc96ec95a42a770f633cb004f2 3 | timeCreated: 1523612078 4 | licenseType: Store 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Samples/Scenes/21_1 Extend_Timeline_BezierSolution.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e85eb5c88740012438c55df7b589edcd 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Samples/Scenes/21_2 Extend_Timeline_DoTweenPro.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e47ca86827e3d7b43b33341e769b2252 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Samples/Scenes/3 Coroutine.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5adf5b755177fcb40bb30fb3c9812927 3 | timeCreated: 1523862675 4 | licenseType: Store 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Samples/Scenes/31 Extend_VideoPlayer.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c925d780fc2acf643a8f92c337ecef1c 3 | timeCreated: 1523612078 4 | licenseType: Store 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Samples/Scenes/4 Param.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3086e81c6cf9cc84d9fc775b7a53c68a 3 | timeCreated: 1523862675 4 | licenseType: Store 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Samples/Scenes/51 Combined Use.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a279ebeb3269c004cbb4615ba8666416 3 | timeCreated: 1523612078 4 | licenseType: Store 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Samples/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1dcbba5d4f5dc8f40919aba4fb5ae0b6 3 | folderAsset: yes 4 | timeCreated: 1523850792 5 | licenseType: Store 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Samples/Scripts/Example_ChangeSceneManager.cs: -------------------------------------------------------------------------------- 1 | using Threeyes.Core; 2 | using UnityEngine; 3 | using UnityEngine.SceneManagement; 4 | namespace Threeyes.EventPlayer.Example 5 | { 6 | /// 7 | /// 8 | /// PS: 9 | /// -为了避免Example依赖别的库,因此克隆Threeyes.BuiltIn.Example_ChangeSceneManager的相关代码 10 | /// 11 | public class Example_ChangeSceneManager : MonoBehaviour 12 | { 13 | public static Example_ChangeSceneManager Instance; 14 | public KeyCode keyCodeLoadPrevious = KeyCode.None; 15 | public KeyCode keyCodeLoadNext = KeyCode.None; 16 | public StringEvent onSceneNameChanged = new StringEvent(); 17 | 18 | private void Awake() 19 | { 20 | if (!Instance) 21 | { 22 | Instance = this; 23 | Scene curScene = SceneManager.GetActiveScene(); 24 | SetSceneName(curScene); 25 | DontDestroyOnLoad(gameObject); 26 | } 27 | else 28 | { 29 | Destroy(gameObject); 30 | } 31 | } 32 | 33 | void Update() 34 | { 35 | if (keyCodeLoadPrevious != KeyCode.None && UnityEngine.Input.GetKeyDown(keyCodeLoadPrevious)) 36 | { 37 | LoadPrevious(); 38 | } 39 | if (keyCodeLoadNext != KeyCode.None && UnityEngine.Input.GetKeyDown(keyCodeLoadNext)) 40 | { 41 | LoadNext(); 42 | } 43 | } 44 | 45 | public void LoadPrevious() 46 | { 47 | LoadScene(-1); 48 | } 49 | public void LoadNext() 50 | { 51 | LoadScene(1); 52 | } 53 | 54 | float lastChangeTime = 0; 55 | private void LoadScene(int deltaScene) 56 | { 57 | if (deltaScene != 0) 58 | { 59 | if (Time.time - lastChangeTime < 0.3f) 60 | return; 61 | 62 | deltaScene = (int)Mathf.Sign(deltaScene); 63 | Scene curScene = SceneManager.GetActiveScene(); 64 | int nextSceneID = curScene.buildIndex + deltaScene; 65 | if (nextSceneID < 0) 66 | nextSceneID += SceneManager.sceneCountInBuildSettings; 67 | else if (nextSceneID >= SceneManager.sceneCountInBuildSettings) 68 | nextSceneID -= SceneManager.sceneCountInBuildSettings; 69 | Scene nextScene = SceneManager.LoadScene(nextSceneID, new LoadSceneParameters(LoadSceneMode.Single)); 70 | SetSceneName(nextScene); 71 | lastChangeTime = Time.time; 72 | } 73 | } 74 | 75 | void SetSceneName(Scene scene) 76 | { 77 | onSceneNameChanged.Invoke(scene.name); 78 | } 79 | } 80 | } -------------------------------------------------------------------------------- /Samples/Scripts/Example_ChangeSceneManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a0b72b305fb065942a6cf68e8b8a9b8e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Samples/Scripts/Example_SliderModifier.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | namespace Threeyes.EventPlayer.Example 6 | { 7 | public class Example_SliderModifier : MonoBehaviour 8 | { 9 | 10 | static Slider.SliderEvent emptySliderEvent = new Slider.SliderEvent(); 11 | /// 12 | /// Update the value without invoke the relate Event 13 | /// 14 | /// 15 | public void SetValueWithoutNotify(float value) 16 | { 17 | //PS:If you are using latest version of Unity, you can just use Slider.SetValueWithoutNotify 18 | Slider slider = GetComponent(); 19 | var originalEvent = slider.onValueChanged; 20 | slider.onValueChanged = emptySliderEvent; 21 | slider.value = value; 22 | slider.onValueChanged = originalEvent; 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /Samples/Scripts/Example_SliderModifier.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d73954206b8dbfb408e931ba51b86b2d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Samples/Scripts/Example_TransformTweener.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | namespace Threeyes.EventPlayer.Example 6 | { 7 | public class Example_TransformTweener : MonoBehaviour 8 | { 9 | public Transform target; 10 | 11 | public Transform tfStart; 12 | public Transform tfEnd; 13 | public AnimationCurve animTranslateCurve = AnimationCurve.EaseInOut(0f, 0f, 1f, 1f); 14 | public AnimationCurve animRotateCurve = AnimationCurve.EaseInOut(0f, 0f, 1f, 1f); 15 | 16 | 17 | public Transform tfThis 18 | { 19 | get 20 | { 21 | if (!_tfThis) 22 | _tfThis = transform; 23 | return _tfThis; 24 | 25 | } 26 | } 27 | protected Transform _tfThis; 28 | 29 | 30 | public void TranslatePercent(float percent) 31 | { 32 | if (!tfStart || !tfEnd) 33 | return; 34 | 35 | if (!target) 36 | target = tfThis; 37 | float tweenProgress = animTranslateCurve.Evaluate(percent); 38 | target.position = Vector3.LerpUnclamped(tfStart.position, tfEnd.position, tweenProgress); 39 | } 40 | 41 | public void RotatePercent(float percent) 42 | { 43 | if (!tfStart || !tfEnd) 44 | return; 45 | 46 | if (!target) 47 | target = tfThis; 48 | 49 | float tweenProgress = animRotateCurve.Evaluate(percent); 50 | target.rotation = Quaternion.LerpUnclamped(tfStart.rotation, tfEnd.rotation, tweenProgress); 51 | } 52 | } 53 | } -------------------------------------------------------------------------------- /Samples/Scripts/Example_TransformTweener.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 33bcf8d3fe7e5ba4490ec291783b9a74 3 | timeCreated: 1523867599 4 | licenseType: Store 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /Samples/Textures.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9f6c84d113698cf4789c40f96b16d8a3 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Textures/Video RT_Group 0.renderTexture: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!84 &8400000 4 | RenderTexture: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: Video RT_Group 0 10 | m_ImageContentsHash: 11 | serializedVersion: 2 12 | Hash: 00000000000000000000000000000000 13 | m_ForcedFallbackFormat: 4 14 | m_DownscaleFallback: 0 15 | m_IsAlphaChannelOptional: 0 16 | serializedVersion: 5 17 | m_Width: 1280 18 | m_Height: 720 19 | m_AntiAliasing: 1 20 | m_MipCount: -1 21 | m_DepthStencilFormat: 94 22 | m_ColorFormat: 8 23 | m_MipMap: 0 24 | m_GenerateMips: 1 25 | m_SRGB: 0 26 | m_UseDynamicScale: 0 27 | m_BindMS: 0 28 | m_EnableCompatibleFormat: 1 29 | m_EnableRandomWrite: 0 30 | m_TextureSettings: 31 | serializedVersion: 2 32 | m_FilterMode: 1 33 | m_Aniso: 0 34 | m_MipBias: 0 35 | m_WrapU: 1 36 | m_WrapV: 1 37 | m_WrapW: 1 38 | m_Dimension: 2 39 | m_VolumeDepth: 1 40 | m_ShadowSamplingMode: 2 41 | -------------------------------------------------------------------------------- /Samples/Textures/Video RT_Group 0.renderTexture.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 48da208020b24a3448cd8f618ee0392b 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 8400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Textures/Video RT_Group 1.renderTexture: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!84 &8400000 4 | RenderTexture: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: Video RT_Group 1 10 | m_ImageContentsHash: 11 | serializedVersion: 2 12 | Hash: 00000000000000000000000000000000 13 | m_ForcedFallbackFormat: 4 14 | m_DownscaleFallback: 0 15 | m_IsAlphaChannelOptional: 0 16 | serializedVersion: 5 17 | m_Width: 1280 18 | m_Height: 720 19 | m_AntiAliasing: 1 20 | m_MipCount: -1 21 | m_DepthStencilFormat: 94 22 | m_ColorFormat: 8 23 | m_MipMap: 0 24 | m_GenerateMips: 1 25 | m_SRGB: 0 26 | m_UseDynamicScale: 0 27 | m_BindMS: 0 28 | m_EnableCompatibleFormat: 1 29 | m_EnableRandomWrite: 0 30 | m_TextureSettings: 31 | serializedVersion: 2 32 | m_FilterMode: 1 33 | m_Aniso: 0 34 | m_MipBias: 0 35 | m_WrapU: 1 36 | m_WrapV: 1 37 | m_WrapW: 1 38 | m_Dimension: 2 39 | m_VolumeDepth: 1 40 | m_ShadowSamplingMode: 2 41 | -------------------------------------------------------------------------------- /Samples/Textures/Video RT_Group 1.renderTexture.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8ff3c4ea2008c4047bac45a35f0d6ad8 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 8400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Textures/Video RT_Group 2.renderTexture: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!84 &8400000 4 | RenderTexture: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: Video RT_Group 2 10 | m_ImageContentsHash: 11 | serializedVersion: 2 12 | Hash: 00000000000000000000000000000000 13 | m_ForcedFallbackFormat: 4 14 | m_DownscaleFallback: 0 15 | m_IsAlphaChannelOptional: 0 16 | serializedVersion: 5 17 | m_Width: 1280 18 | m_Height: 720 19 | m_AntiAliasing: 1 20 | m_MipCount: -1 21 | m_DepthStencilFormat: 94 22 | m_ColorFormat: 8 23 | m_MipMap: 0 24 | m_GenerateMips: 1 25 | m_SRGB: 0 26 | m_UseDynamicScale: 0 27 | m_BindMS: 0 28 | m_EnableCompatibleFormat: 1 29 | m_EnableRandomWrite: 0 30 | m_TextureSettings: 31 | serializedVersion: 2 32 | m_FilterMode: 1 33 | m_Aniso: 0 34 | m_MipBias: 0 35 | m_WrapU: 1 36 | m_WrapV: 1 37 | m_WrapW: 1 38 | m_Dimension: 2 39 | m_VolumeDepth: 1 40 | m_ShadowSamplingMode: 2 41 | -------------------------------------------------------------------------------- /Samples/Textures/Video RT_Group 2.renderTexture.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e0bc32822e54af74c97e46358d70c5cc 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 8400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Textures/Video RT_Sequence.renderTexture: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!84 &8400000 4 | RenderTexture: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: Video RT_Sequence 10 | m_ImageContentsHash: 11 | serializedVersion: 2 12 | Hash: 00000000000000000000000000000000 13 | m_ForcedFallbackFormat: 4 14 | m_DownscaleFallback: 0 15 | m_IsAlphaChannelOptional: 0 16 | serializedVersion: 5 17 | m_Width: 1280 18 | m_Height: 720 19 | m_AntiAliasing: 1 20 | m_MipCount: -1 21 | m_DepthStencilFormat: 94 22 | m_ColorFormat: 8 23 | m_MipMap: 0 24 | m_GenerateMips: 1 25 | m_SRGB: 0 26 | m_UseDynamicScale: 0 27 | m_BindMS: 0 28 | m_EnableCompatibleFormat: 1 29 | m_EnableRandomWrite: 0 30 | m_TextureSettings: 31 | serializedVersion: 2 32 | m_FilterMode: 1 33 | m_Aniso: 0 34 | m_MipBias: 0 35 | m_WrapU: 1 36 | m_WrapV: 1 37 | m_WrapW: 1 38 | m_Dimension: 2 39 | m_VolumeDepth: 1 40 | m_ShadowSamplingMode: 2 41 | -------------------------------------------------------------------------------- /Samples/Textures/Video RT_Sequence.renderTexture.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1b15f9cfc5ee84d48863a9a216b02148 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 8400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Textures/Video RT_Solo.renderTexture: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!84 &8400000 4 | RenderTexture: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: Video RT_Solo 10 | m_ImageContentsHash: 11 | serializedVersion: 2 12 | Hash: 00000000000000000000000000000000 13 | m_ForcedFallbackFormat: 4 14 | m_DownscaleFallback: 0 15 | m_IsAlphaChannelOptional: 0 16 | serializedVersion: 5 17 | m_Width: 1280 18 | m_Height: 720 19 | m_AntiAliasing: 1 20 | m_MipCount: -1 21 | m_DepthStencilFormat: 94 22 | m_ColorFormat: 8 23 | m_MipMap: 0 24 | m_GenerateMips: 1 25 | m_SRGB: 0 26 | m_UseDynamicScale: 0 27 | m_BindMS: 0 28 | m_EnableCompatibleFormat: 1 29 | m_EnableRandomWrite: 0 30 | m_TextureSettings: 31 | serializedVersion: 2 32 | m_FilterMode: 1 33 | m_Aniso: 0 34 | m_MipBias: 0 35 | m_WrapU: 1 36 | m_WrapV: 1 37 | m_WrapW: 1 38 | m_Dimension: 2 39 | m_VolumeDepth: 1 40 | m_ShadowSamplingMode: 2 41 | -------------------------------------------------------------------------------- /Samples/Textures/Video RT_Solo.renderTexture.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2e886b71a634ce946ab977efcde70c34 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 8400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Threeyes.EventPlayer.Samples.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Threeyes.EventPlayer.Samples", 3 | "rootNamespace": "", 4 | "references": [ 5 | "GUID:b2435c17de217264ebdae08cf9d32e1d" 6 | ], 7 | "includePlatforms": [], 8 | "excludePlatforms": [], 9 | "allowUnsafeCode": false, 10 | "overrideReferences": false, 11 | "precompiledReferences": [], 12 | "autoReferenced": true, 13 | "defineConstraints": [], 14 | "versionDefines": [], 15 | "noEngineReferences": false 16 | } -------------------------------------------------------------------------------- /Samples/Threeyes.EventPlayer.Samples.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dda88d4bf5b410c4789990fb5f7d5694 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Samples/Videos.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f5f9c760a684441419953a17e2754495 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples/Videos/DemoVideo1.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Threeyes/EventPlayer/c6fe32e7510eec5ec3f734073b415786be591010/Samples/Videos/DemoVideo1.mp4 -------------------------------------------------------------------------------- /Samples/Videos/DemoVideo1.mp4.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 17794e0675e8f6b4c9c86f31692e1159 3 | VideoClipImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | frameRange: 0 7 | startFrame: -1 8 | endFrame: -1 9 | colorSpace: 0 10 | deinterlace: 0 11 | encodeAlpha: 0 12 | flipVertical: 0 13 | flipHorizontal: 0 14 | importAudio: 1 15 | targetSettings: 16 | 0: 17 | enableTranscoding: 1 18 | codec: 2 19 | resizeFormat: 0 20 | aspectRatio: 0 21 | customWidth: 960 22 | customHeight: 544 23 | bitrateMode: 2 24 | spatialQuality: 2 25 | userData: 26 | assetBundleName: 27 | assetBundleVariant: 28 | -------------------------------------------------------------------------------- /Samples/Videos/DemoVideo2.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Threeyes/EventPlayer/c6fe32e7510eec5ec3f734073b415786be591010/Samples/Videos/DemoVideo2.mp4 -------------------------------------------------------------------------------- /Samples/Videos/DemoVideo2.mp4.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ba7092838bd169a45a887643b435471b 3 | VideoClipImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | frameRange: 0 7 | startFrame: -1 8 | endFrame: -1 9 | colorSpace: 0 10 | deinterlace: 0 11 | encodeAlpha: 0 12 | flipVertical: 0 13 | flipHorizontal: 0 14 | importAudio: 1 15 | targetSettings: 16 | 0: 17 | enableTranscoding: 1 18 | codec: 2 19 | resizeFormat: 0 20 | aspectRatio: 0 21 | customWidth: 568 22 | customHeight: 320 23 | bitrateMode: 2 24 | spatialQuality: 2 25 | userData: 26 | assetBundleName: 27 | assetBundleVariant: 28 | -------------------------------------------------------------------------------- /Samples/Videos/DemoVideo3.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Threeyes/EventPlayer/c6fe32e7510eec5ec3f734073b415786be591010/Samples/Videos/DemoVideo3.mp4 -------------------------------------------------------------------------------- /Samples/Videos/DemoVideo3.mp4.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3872957be1b110347849b161635183fc 3 | VideoClipImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | frameRange: 0 7 | startFrame: -1 8 | endFrame: -1 9 | colorSpace: 0 10 | deinterlace: 0 11 | encodeAlpha: 0 12 | flipVertical: 0 13 | flipHorizontal: 0 14 | importAudio: 0 15 | targetSettings: 16 | 0: 17 | enableTranscoding: 1 18 | codec: 2 19 | resizeFormat: 0 20 | aspectRatio: 0 21 | customWidth: 568 22 | customHeight: 320 23 | bitrateMode: 2 24 | spatialQuality: 2 25 | userData: 26 | assetBundleName: 27 | assetBundleVariant: 28 | -------------------------------------------------------------------------------- /Threeyes.EventPlayer.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Threeyes.EventPlayer", 3 | "rootNamespace": "", 4 | "references": [ 5 | "GUID:b2435c17de217264ebdae08cf9d32e1d", 6 | "GUID:f06555f75b070af458a003d92f9efb00", 7 | "GUID:624c061ee4dfdaf4787b9c0bb51b4c1f", 8 | "GUID:afeb5fdeb43d77a4b8a2ebf7304868a0" 9 | ], 10 | "includePlatforms": [], 11 | "excludePlatforms": [], 12 | "allowUnsafeCode": false, 13 | "overrideReferences": false, 14 | "precompiledReferences": [], 15 | "autoReferenced": true, 16 | "defineConstraints": [], 17 | "versionDefines": [], 18 | "noEngineReferences": false 19 | } -------------------------------------------------------------------------------- /Threeyes.EventPlayer.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5861f409ea7a0d943950d9a0a572e046 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /locale.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 96147d170af926348b7293c830e05c7e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /locale/README-zh-CN.md: -------------------------------------------------------------------------------- 1 |

EventPlayer

2 | 3 |

4 | Logo 5 |
6 |
7 | 8 |
9 |

10 | 11 | ## 语言 12 |

13 | 中文 | 14 | English 15 |

16 | 17 | 18 | ## 简介 19 | 我已经厌倦了总是写不能复用的脚本,所以写了这个可视化事件管理库,无需额外的编辑器窗口! 20 | 21 | EventPlayer扩展了Unity的内置事件系统,提供了几个在特定时间调用事件的组件,如延迟、重复和倒计时。您可以对事件进行可视化重新排序、重组或停用,并在所需时间执行它们。 22 | 23 | 24 | ## 特性 25 | - 简单粗暴,无需编程! 26 | - 通过组或序列的形式可视化管理事件,将他们按ID进行标记。 27 | - 支持大多数平台。 28 | - 支持以下插件: 29 | - [Timeline](https://docs.unity3d.com/Packages/com.unity.timeline@1.5/manual/index.html): Unity的时间轴库。 30 | - [VideoPlayer](https://docs.unity3d.com/Manual/class-VideoPlayer.html): Unity内置的视频播放库。 31 | - [BezierSolution](https://assetstore.unity.com/packages/tools/level-design/bezier-solution-113074): 运行时贝塞尔曲线库。 32 | - [DoTweenPro](https://assetstore.unity.com/packages/tools/visual-scripting/dotween-pro-32416): 强大的动画库。 33 | - (您还可以编写代码来支持更多插件...) 34 | 35 | 36 | ## 注意 37 | 该插件依赖于 **Threeyes Core库** (AssetStore版本已经包含该库). 如果你的项目没有此库,请从[GitHub](https://github.com/Threeyes/Core)上下载。 38 | 39 | 40 | ## 初始化/更新 41 | ### 添加/删除外部插件支持 42 | 单击“Tools/Threeeyes/EventPlayer Setting”菜单,选择需要使用的插件,然后单击“Apply”。激活前请确保项目内拥有这些插件,并已经正确链接到它们的asmdef文件(如果存在)。 43 | 44 | 45 | ## 案例 46 | 配置好外部支持后,将“Samples”文件夹中的所有场景文件添加到BuildSettings窗口,然后运行第一个场景,按左/右键可切换场景。你可以从Hierarchy窗口的**Remarker**组件中看到更多说明。 47 | 48 | 49 | ## 故障排查 50 | ### 更新到新版本后部分文件冲突怎么办? 51 | 可能是我移动或重命名了文件夹,请先删除旧插件并重新导入最新插件(务必事先备份项目!)。 52 | 53 | ### Unity 版本为 2018.4 或更高,找不到 Timeline 插件怎么办? 54 | 由于 Unity 新版本已默认移除 Timeline,您需要从包管理器中下载 Timeline,之后即可正常使用。如果您正在使用 asmdef,还需要引用相关文件:https://docs.unity3d.com/Manual/ScriptCompilationAssemblyDefinitionFiles.html 55 | 56 | ### 为什么与 DOTweenPro 相关的代码报错? 57 | 这可能是因为 DOTweenPro 对应的库没有正确链接。首先,请确认 DOTweenPro 文件夹内包含 'DOTweenPro.Scripts.asmdef' 文件,如不存在,可通过菜单 'Tools/Demographics/DOTween Utility Panel' 打开设置窗口,然后点击 'Create ASMDEF...' 生成它。如果仍有错误,可能是上述生成的 asmdef 文件的元数据信息发生了变化,您需要将该 asmdef 文件添加到 Threeyes.EventPlayer.asmdef 的 'Assembly Definition References' 列表中并点击应用。 58 | 59 | ### 示例项目的材质在内置渲染管线下变为紫色? 60 | 示例默认包含 URP 材质。您需要从示例文件夹中导入 'Materials_BuildInRP.unitypackage' 以覆盖所有现有材质。 61 | 62 | ### 示例项目的材质在 HDRP 渲染管线下变为紫色怎么办? 63 | 首先,按照上述方法导入内置渲染管线的所有材质,然后选中所有材质,接着在菜单中选择 'Edit/Rendering/Materials/Convert selected Built-in Materials to HDRP' 转换为 HDRP 材质。 64 | 65 | 66 | ## 更多信息 67 | [Unity商店版本](https://assetstore.unity.com/packages/tools/visual-scripting/event-player-116731) 68 | 69 | [Unity论坛](https://forum.unity.com/threads/release-event-player-visual-play-and-organize-unityevent.536984/) 70 | 71 | [Unity社区-中文教程](https://developer.unity.cn/projects/603086a7edbc2a00202c3878) -------------------------------------------------------------------------------- /locale/README-zh-CN.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4956f331ffd73fa4b932c444972ab14a 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.threeyes.eventplayer", 3 | "displayName": "Threeyes EventPlayer", 4 | "description": "Visual reorder, reorganize or deactive events, execute them at desire time.", 5 | "version": "4.0.2", 6 | "unity": "2021.3", 7 | "author": 8 | { 9 | "name": "Threeyes", 10 | "url": "https://github.com/Threeyes" 11 | }, 12 | "__comment__": "If the plugin is currently in another Unity project folder, the following Samples cannot be imported into the current project!", 13 | "samples": 14 | [ 15 | { 16 | "displayName": "Samples", 17 | "description": "Samples", 18 | "path": "Samples" 19 | } 20 | ] 21 | } -------------------------------------------------------------------------------- /package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f3ef5140938973e428730c67d814a725 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | --------------------------------------------------------------------------------