public void EvaluateOffState() { hasFired = true; isOn = false; if (target != null) { Tapestry_Activatable comp = target.GetComponent <Tapestry_Activatable>(); if (comp.GetType() == typeof(Tapestry_Door)) { Tapestry_Door d = target.GetComponent <Tapestry_Door>(); if (data.off_setOpen) { d.Open(); } if (data.off_setClosed) { d.Close(); } if (data.off_setLocked) { d.security.isLocked = true; } if (data.off_setUnlocked) { d.security.isLocked = false; } if (data.off_setBypassable) { d.security.canBeBypassed = data.off_setBypassable; } if (data.off_setInteractable) { d.isInteractable = data.off_setInteractable; } } if (comp.GetType() == typeof(Tapestry_AnimatedLight)) { Tapestry_AnimatedLight al = target.GetComponent <Tapestry_AnimatedLight>(); if (data.off_setOpen) { al.TurnOn(); } if (data.off_setClosed) { al.TurnOff(); } if (data.off_setInteractable) { al.isInteractable = data.on_setInteractable; } } } else { Debug.Log("TAPESTRY WARNING: Switch does not have a target object. Did you forget to set one?"); } }
public override void OnInspectorGUI() { Tapestry_AnimatedLight l = target as Tapestry_AnimatedLight; string displayTooltip = "What string will display on the player's HUD when looking at this object.", changeTimeTooltip = "The amount of time, in seconds, it takes for the door to open or close.", interactableTooltip = "Can the player interact with this door?", displayNameTooltip = "Should the object still show its display name when the player's cursor is hovering over the object?", toggleOnActivateTooltip = "Should the light switch between being on or off when the player activates it?"; GUILayout.BeginVertical("box"); GUILayout.BeginHorizontal(); GUILayout.Label(new GUIContent("Display Name", displayTooltip)); GUILayout.FlexibleSpace(); l.displayName = EditorGUILayout.DelayedTextField(l.displayName, GUILayout.Width(270)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label(new GUIContent("Change Time", changeTimeTooltip)); l.transitionSpeed = EditorGUILayout.DelayedFloatField(l.transitionSpeed, GUILayout.Width(30)); GUILayout.FlexibleSpace(); if (GUILayout.Button("Turn On", GUILayout.Width(70))) { if (Application.isPlaying) { l.TurnOn(); } else { l.TurnOn(true); } } if (GUILayout.Button("Turn Off", GUILayout.Width(70))) { if (Application.isPlaying) { l.TurnOff(); } else { l.TurnOff(true); } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); l.isInteractable = EditorGUILayout.Toggle(l.isInteractable, GUILayout.Width(12)); GUILayout.Label(new GUIContent("Interactable?", interactableTooltip)); GUILayout.Space(20); if (!l.isInteractable) { l.displayNameWhenUnactivatable = EditorGUILayout.Toggle(l.displayNameWhenUnactivatable, GUILayout.Width(12)); GUILayout.Label(new GUIContent("Display Name Anyway?", displayNameTooltip)); GUILayout.FlexibleSpace(); } else { l.toggleOnActivate = EditorGUILayout.Toggle(l.toggleOnActivate, GUILayout.Width(12)); GUILayout.Label(new GUIContent("Toggle on Activate?", toggleOnActivateTooltip)); GUILayout.FlexibleSpace(); } GUILayout.EndHorizontal(); GUILayout.EndVertical(); toolbarActive = GUILayout.Toolbar(toolbarActive, toolbarNames); if (toolbarActive != -1) { if (toolbarNames[toolbarActive] == "Jitter") { string lintJitterTooltip = "Does the intensity of the light randomly change over time?", lposJitterTooltip = "Does the position of the light randomly change over time?", emissionJitterTooltip = "Does this light contain something that has emission that changes randomly over time?"; GUILayout.BeginVertical("box"); GUILayout.BeginHorizontal(); l.lightIntensityJitter = EditorGUILayout.Toggle(l.lightIntensityJitter, GUILayout.Width(12)); GUILayout.Label(new GUIContent("Light Intensity Jitter?", lintJitterTooltip)); GUILayout.EndHorizontal(); if (l.lightIntensityJitter) { string lintBaseTooltip = "The base intensity of the light. This will override any changes made to the Intensity parameter of the Light component on T_Light; if you intend to use jitter, set the value here instead.", lvarTooltip = "How far the intensity can deviate from its base intensity.", lspeedTooltip = "How long, in seconds, it takes to reach the jitter target at maximum. (Minimum is 40% of this value)"; GUILayout.BeginVertical("box"); GUILayout.BeginHorizontal(); GUILayout.Label(new GUIContent("Intensity Variance", lvarTooltip)); l.lightIntensityJitterAmount = EditorGUILayout.DelayedFloatField(l.lightIntensityJitterAmount, GUILayout.Width(40)); GUILayout.FlexibleSpace(); GUILayout.Label(new GUIContent("Jitter Speed", lspeedTooltip)); l.lightJitterSpeed = EditorGUILayout.DelayedFloatField(l.lightJitterSpeed, GUILayout.Width(40)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label(new GUIContent("Base Intensity", lintBaseTooltip)); l.lightIntensityBase = EditorGUILayout.DelayedFloatField(l.lightIntensityBase, GUILayout.Width(40)); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.EndVertical(); } GUILayout.BeginHorizontal(); l.lightPositionJitter = EditorGUILayout.Toggle(l.lightPositionJitter, GUILayout.Width(12)); GUILayout.Label(new GUIContent("Light Position Jitter?", lposJitterTooltip)); GUILayout.EndHorizontal(); if (l.lightPositionJitter) { string ldistTooltip = "How far, in Unity units, the light can deviate from its starting position.", lspeedTooltip = "How long, in seconds, it takes to reach the jitter target at maximum. (Minimum is 40% of this value)"; GUILayout.BeginVertical("box"); GUILayout.BeginHorizontal(); GUILayout.Label(new GUIContent("Position Variance", ldistTooltip)); l.positionJitterAmount = EditorGUILayout.DelayedFloatField(l.positionJitterAmount, GUILayout.Width(40)); GUILayout.FlexibleSpace(); GUILayout.Label(new GUIContent("Jitter Speed", lspeedTooltip)); l.positionJitterSpeed = EditorGUILayout.DelayedFloatField(l.positionJitterSpeed, GUILayout.Width(40)); GUILayout.EndHorizontal(); GUILayout.EndVertical(); } GUILayout.BeginHorizontal(); l.emissionJitter = EditorGUILayout.Toggle(l.emissionJitter, GUILayout.Width(12)); GUILayout.Label(new GUIContent("Emission Jitter?", emissionJitterTooltip)); GUILayout.EndHorizontal(); if (l.emissionJitter) { string erangeTooltip = "The minimum and maximum emission values that the object will choose between randomly. Note that values above 1.0 will clamp to 1.0 unless the player has HDR enabled.", ecolTooltip = "What color is multiplied against the emissive map.", espeedTooltip = "How long, in seconds, it takes to reach the jitter target at maximum. (Minimum is 40% of this value)"; GUILayout.BeginVertical("box"); GUILayout.BeginHorizontal(); GUILayout.Label(new GUIContent("Emission Range", erangeTooltip)); l.emissionMin = EditorGUILayout.DelayedFloatField(l.emissionMin, GUILayout.Width(40)); l.emissionMax = EditorGUILayout.DelayedFloatField(l.emissionMax, GUILayout.Width(40)); GUILayout.FlexibleSpace(); GUILayout.Label(new GUIContent("Jitter Speed", espeedTooltip)); l.emissionJitterSpeed = EditorGUILayout.DelayedFloatField(l.emissionJitterSpeed, GUILayout.Width(40)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label(new GUIContent("Emission Color", ecolTooltip)); l.emissionColor = EditorGUILayout.ColorField(l.emissionColor, GUILayout.Width(80)); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.EndVertical(); } GUILayout.EndVertical(); } if (toolbarNames[toolbarActive] == "Particles") { string inTooltip = "Whether to use the particle system attached to T_PS_In. If true, plays the system when the light is turned on.", activeTooltip = "Whether to use the particle system attached to T_PS_Active. If true, plays the system when the light is on, and shuts off the system when the light is off.", outTooltip = "Whether to use the particle system attached to T_PS_Out. If true, plays the system when the light is turned off."; GUILayout.BeginVertical("box"); GUILayout.BeginHorizontal(); l.useInPsys = EditorGUILayout.Toggle(l.useInPsys, GUILayout.Width(12)); GUILayout.Label(new GUIContent("Use 'In'?", inTooltip)); GUILayout.FlexibleSpace(); l.useHoldPsys = EditorGUILayout.Toggle(l.useHoldPsys, GUILayout.Width(12)); GUILayout.Label(new GUIContent("Use 'Active'?", activeTooltip)); GUILayout.FlexibleSpace(); l.useOutPsys = EditorGUILayout.Toggle(l.useOutPsys, GUILayout.Width(12)); GUILayout.Label(new GUIContent("Use 'Out'?", outTooltip)); GUILayout.EndHorizontal(); GUILayout.EndVertical(); } if (toolbarNames[toolbarActive] == "Sound") { string inSoundTooltip = "The sound to play when the light is turned on.", activeSoundTooltip = "The sound to play while the light is on. This soundclip is looped for as long as the light stays on.", outSoundTooltip = "The sound to play when the light is turned off."; GUILayout.BeginVertical("box"); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUILayout.Label(new GUIContent("'In' Sound", inSoundTooltip)); l.inSound = (AudioClip)EditorGUILayout.ObjectField(l.inSound, typeof(AudioClip), true, GUILayout.Width(240)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUILayout.Label(new GUIContent("'Active' Sound", activeSoundTooltip)); l.activeSound = (AudioClip)EditorGUILayout.ObjectField(l.activeSound, typeof(AudioClip), true, GUILayout.Width(240)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUILayout.Label(new GUIContent("'Out' Sound", outSoundTooltip)); l.outSound = (AudioClip)EditorGUILayout.ObjectField(l.outSound, typeof(AudioClip), true, GUILayout.Width(240)); GUILayout.EndHorizontal(); GUILayout.EndVertical(); } if (toolbarNames[toolbarActive] == "Timing") { string clockLightTooltip = "Does this light turn itself on and off at specific times of day? Note: Enabling this option will disable the Timed Light controls.", timedLightTooltip = "Does this light switch between on and off after a certain amount of time elapses? Note: Enabling this option will disable the Clock Light controls.", durationTooltip = "How long the light remains on (or off, if inverted) before switching to the other state.", invertTooltip = "By default, a timed light will stay on for a certain time before turning itself off. Setting this to true reverses this behavior.", onTimeTooltip = "What time of day the light turns itself on. Please note, at extremely high time speeds, the light may miss its cue to change.", offTimeTooltip = "What time of day the light turns itself off. Please note, at extremely high time speeds, the light may miss its cue to change."; GUILayout.BeginVertical("box"); GUILayout.BeginHorizontal(); l.timedLight = EditorGUILayout.Toggle(l.timedLight, GUILayout.Width(12)); GUILayout.Label(new GUIContent("Timed Light?", timedLightTooltip)); GUILayout.FlexibleSpace(); l.clockLight = EditorGUILayout.Toggle(l.clockLight, GUILayout.Width(12)); GUILayout.Label(new GUIContent("Clock Light?", clockLightTooltip)); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); if (l.timedLight) { l.clockLight = false; GUILayout.BeginVertical("box"); GUILayout.BeginHorizontal(); GUILayout.Label(new GUIContent("Duration", durationTooltip)); l.timedDuration = EditorGUILayout.DelayedFloatField(l.timedDuration, GUILayout.Width(40)); GUILayout.FlexibleSpace(); l.invertTimed = EditorGUILayout.Toggle(l.invertTimed, GUILayout.Width(12)); GUILayout.Label(new GUIContent("Invert?", invertTooltip)); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.EndVertical(); } if (l.clockLight) { l.timedLight = false; GUILayout.BeginVertical("box"); GUILayout.BeginHorizontal(); GUILayout.Label(new GUIContent("On Time", onTimeTooltip)); l.timedOn.x = EditorGUILayout.DelayedIntField(l.timedOn.x, GUILayout.Width(24)); GUILayout.Label(":"); l.timedOn.y = EditorGUILayout.DelayedIntField(l.timedOn.y, GUILayout.Width(24)); GUILayout.FlexibleSpace(); GUILayout.Label(new GUIContent("Off Time", offTimeTooltip)); l.timedOff.x = EditorGUILayout.DelayedIntField(l.timedOff.x, GUILayout.Width(24)); GUILayout.Label(":"); l.timedOff.y = EditorGUILayout.DelayedIntField(l.timedOff.y, GUILayout.Width(24)); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.EndVertical(); } GUILayout.EndVertical(); } } }
public void EvaluateOnState() { hasFired = true; isOn = true; if (target != null) { Tapestry_Activatable comp = target.GetComponent <Tapestry_Activatable>(); if (pingPong) { if (comp.GetType() == typeof(Tapestry_Door)) { Tapestry_Door d = target.GetComponent <Tapestry_Door>(); if (data.pp_swapOpenState) { if (d.GetIsOpen()) { d.Close(); } else { d.Open(); } } if (data.pp_swapLockedState) { d.security.isLocked = !d.security.isLocked; } if (data.pp_swapBypassableState) { d.security.canBeBypassed = !d.security.canBeBypassed; } if (data.pp_swapInteractivityState) { d.isInteractable = !d.isInteractable; } } if (comp.GetType() == typeof(Tapestry_AnimatedLight)) { Tapestry_AnimatedLight al = target.GetComponent <Tapestry_AnimatedLight>(); if (data.pp_swapOpenState) { if (al.GetIsOn()) { al.TurnOff(); } else { al.TurnOn(); } } if (data.pp_swapInteractivityState) { al.isInteractable = !al.isInteractable; } } if (comp.GetType() == typeof(Tapestry_ItemSource)) { Tapestry_ItemSource i = target.GetComponent <Tapestry_ItemSource>(); if (data.pp_swapInteractivityState) { i.isInteractable = !i.isInteractable; } if (data.pp_setSourceHarvestable) { i.SetHarvestability(true); } } } else { if (comp.GetType() == typeof(Tapestry_Door)) { Tapestry_Door d = target.GetComponent <Tapestry_Door>(); if (data.on_setOpen) { d.Open(); } if (data.on_setClosed) { d.Close(); } if (data.on_setLocked) { d.security.isLocked = true; } if (data.on_setUnlocked) { d.security.isLocked = false; } if (data.on_setBypassable) { d.security.canBeBypassed = data.on_setBypassable; } if (data.on_setInteractable) { d.isInteractable = data.on_setInteractable; } } if (comp.GetType() == typeof(Tapestry_AnimatedLight)) { Tapestry_AnimatedLight al = target.GetComponent <Tapestry_AnimatedLight>(); if (data.on_setOpen) { al.TurnOn(); } if (data.on_setClosed) { al.TurnOff(); } if (data.on_setInteractable) { al.isInteractable = data.on_setInteractable; } } if (comp.GetType() == typeof(Tapestry_ItemSource)) { Tapestry_ItemSource i = target.GetComponent <Tapestry_ItemSource>(); if (data.on_setInteractable) { i.isInteractable = data.on_setInteractable; } } } } else { Debug.Log("TAPESTRY WARNING: Switch does not have a target object. Did you forget to set one?"); } }