Browse Source

MusicController and CameraController singletons are now managed by one FungusManager singleton

master
Christopher 9 years ago
parent
commit
1baf9e6fe5
  1. 2
      Assets/Fungus/Scripts/Commands/FadeScreen.cs
  2. 6
      Assets/Fungus/Scripts/Commands/FadeToView.cs
  3. 6
      Assets/Fungus/Scripts/Commands/MoveToView.cs
  4. 10
      Assets/Fungus/Scripts/Commands/PlayMusic.cs
  5. 8
      Assets/Fungus/Scripts/Commands/PlaySound.cs
  6. 8
      Assets/Fungus/Scripts/Commands/SetAudioPitch.cs
  7. 18
      Assets/Fungus/Scripts/Commands/SetAudioVolume.cs
  8. 2
      Assets/Fungus/Scripts/Commands/StartSwipe.cs
  9. 8
      Assets/Fungus/Scripts/Commands/StopMusic.cs
  10. 2
      Assets/Fungus/Scripts/Commands/StopSwipe.cs
  11. 17
      Assets/Fungus/Scripts/Components/CameraController.cs
  12. 78
      Assets/Fungus/Scripts/Components/FungusManager.cs
  13. 12
      Assets/Fungus/Scripts/Components/FungusManager.cs.meta
  14. 18
      Assets/Fungus/Scripts/Components/MusicController.cs
  15. 3
      Assets/Fungus/Scripts/Components/Writer.cs

2
Assets/Fungus/Scripts/Commands/FadeScreen.cs

@ -35,7 +35,7 @@ namespace Fungus.Commands
public override void OnEnter()
{
var cameraController = CameraController.GetInstance();
var cameraController = FungusManager.Instance.Camera;
if (fadeTexture)
{

6
Assets/Fungus/Scripts/Commands/FadeToView.cs

@ -71,7 +71,7 @@ namespace Fungus.Commands
return;
}
var cameraController = CameraController.GetInstance();
var cameraController = FungusManager.Instance.Camera;
if (fadeTexture)
{
@ -97,7 +97,9 @@ namespace Fungus.Commands
public override void OnStopExecuting()
{
CameraController.GetInstance().Stop();
var cameraController = FungusManager.Instance.Camera;
cameraController.Stop();
}
public override string GetSummary()

6
Assets/Fungus/Scripts/Commands/MoveToView.cs

@ -58,7 +58,7 @@ namespace Fungus.Commands
return;
}
var cameraController = CameraController.GetInstance();
var cameraController = FungusManager.Instance.Camera;
Vector3 targetPosition = targetView.transform.position;
Quaternion targetRotation = targetView.transform.rotation;
@ -79,7 +79,9 @@ namespace Fungus.Commands
public override void OnStopExecuting()
{
CameraController.GetInstance().Stop();
var cameraController = FungusManager.Instance.Camera;
cameraController.Stop();
}
public override string GetSummary()

10
Assets/Fungus/Scripts/Commands/PlayMusic.cs

@ -30,12 +30,10 @@ namespace Fungus.Commands
public override void OnEnter()
{
var musicController = MusicController.GetInstance();
if (musicController != null)
{
float startTime = Mathf.Max(0, atTime);
musicController.PlayMusic(musicClip, loop, fadeDuration, startTime);
}
var musicController = FungusManager.Instance.Music;
float startTime = Mathf.Max(0, atTime);
musicController.PlayMusic(musicClip, loop, fadeDuration, startTime);
Continue();
}

8
Assets/Fungus/Scripts/Commands/PlaySound.cs

@ -39,11 +39,9 @@ namespace Fungus.Commands
return;
}
var musicController = MusicController.GetInstance();
if (musicController != null)
{
musicController.PlaySound(soundClip, volume);
}
var musicController = FungusManager.Instance.Music;
musicController.PlaySound(soundClip, volume);
if (waitUntilFinished)
{

8
Assets/Fungus/Scripts/Commands/SetAudioPitch.cs

@ -36,11 +36,9 @@ namespace Fungus.Commands
}
};
var musicController = MusicController.GetInstance();
if (musicController != null)
{
musicController.SetAudioPitch(pitch, fadeDuration, onComplete);
}
var musicController = FungusManager.Instance.Music;
musicController.SetAudioPitch(pitch, fadeDuration, onComplete);
if (!waitUntilFinished)
{

18
Assets/Fungus/Scripts/Commands/SetAudioVolume.cs

@ -29,16 +29,14 @@ namespace Fungus.Commands
public override void OnEnter()
{
var musicController = MusicController.GetInstance();
if (musicController != null)
{
musicController.SetAudioVolume(volume, fadeDuration, () => {
if (waitUntilFinished)
{
Continue();
}
});
}
var musicController = FungusManager.Instance.Music;
musicController.SetAudioVolume(volume, fadeDuration, () => {
if (waitUntilFinished)
{
Continue();
}
});
if (!waitUntilFinished)
{

2
Assets/Fungus/Scripts/Commands/StartSwipe.cs

@ -53,7 +53,7 @@ namespace Fungus.Commands
return;
}
var cameraController = CameraController.GetInstance();
var cameraController = FungusManager.Instance.Camera;
cameraController.StartSwipePan(targetCamera, viewA, viewB, duration, speedMultiplier, () => Continue() );
}

8
Assets/Fungus/Scripts/Commands/StopMusic.cs

@ -18,11 +18,9 @@ namespace Fungus.Commands
public override void OnEnter()
{
var musicController = MusicController.GetInstance();
if (musicController != null)
{
musicController.StopMusic();
}
var musicController = FungusManager.Instance.Music;
musicController.StopMusic();
Continue();
}

2
Assets/Fungus/Scripts/Commands/StopSwipe.cs

@ -18,7 +18,7 @@ namespace Fungus.Commands
public override void OnEnter()
{
var cameraController = CameraController.GetInstance();
var cameraController = FungusManager.Instance.Camera;
cameraController.StopSwipePan();

17
Assets/Fungus/Scripts/Components/CameraController.cs

@ -51,8 +51,6 @@ namespace Fungus
protected Dictionary<string, CameraView> storedViews = new Dictionary<string, CameraView>();
protected static CameraController instance;
protected virtual void OnGUI()
{
if (swipePanActive)
@ -302,21 +300,6 @@ namespace Fungus
#region Public members
/// <summary>
/// Returns the CameraController singleton instance.
/// Will create a CameraController game object if none currently exists.
/// </summary>
public static CameraController GetInstance()
{
if (instance == null)
{
GameObject go = new GameObject("CameraController");
instance = go.AddComponent<CameraController>();
}
return instance;
}
/// <summary>
/// Moves camera smoothly through a sequence of Views over a period of time.
/// </summary>

78
Assets/Fungus/Scripts/Components/FungusManager.cs

@ -0,0 +1,78 @@
using UnityEngine;
using System.Collections;
namespace Fungus
{
/// <summary>
/// Fungus manager singleton. Manages access to all Fungus singletons in a consistent manner.
/// </summary>
[RequireComponent(typeof(CameraController))]
[RequireComponent(typeof(MusicController))]
public sealed class FungusManager : MonoBehaviour
{
static FungusManager instance;
static bool applicationIsQuitting = false;
static object _lock = new object();
void Awake()
{
Camera = GetComponent<CameraController>();
Music = GetComponent<MusicController>();
}
/// <summary>
/// When Unity quits, it destroys objects in a random order.
/// In principle, a Singleton is only destroyed when application quits.
/// If any script calls Instance after it have been destroyed,
/// it will create a buggy ghost object that will stay on the Editor scene
/// even after stopping playing the Application. Really bad!
/// So, this was made to be sure we're not creating that buggy ghost object.
/// </summary>
void OnDestroy ()
{
applicationIsQuitting = true;
}
#region Public methods
/// <summary>
/// Gets the camera manager singleton instance.
/// </summary>
public CameraController Camera { get; private set; }
/// <summary>
/// Gets the music manager singleton instance.
/// </summary>
public MusicController Music { get; private set; }
/// <summary>
/// Gets the FungusManager singleton instance.
/// </summary>
public static FungusManager Instance
{
get
{
if (applicationIsQuitting)
{
Debug.LogWarning("FungusManager.Instance() was called while application is quitting. Returning null instead.");
return null;
}
lock (_lock)
{
if (instance == null)
{
var go = new GameObject();
go.name = "FungusManager";
DontDestroyOnLoad(go);
instance = go.AddComponent<FungusManager>();
}
return instance;
}
}
}
#endregion
}
}

12
Assets/Fungus/Scripts/Components/FungusManager.cs.meta

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: fa59a268bb22b4646bd9a89fa66582b1
timeCreated: 1475164406
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

18
Assets/Fungus/Scripts/Components/MusicController.cs

@ -12,8 +12,6 @@ namespace Fungus
[RequireComponent(typeof(AudioSource))]
public class MusicController : MonoBehaviour
{
protected static MusicController instance;
protected virtual void Start()
{
GetComponent<AudioSource>().playOnAwake = false;
@ -22,22 +20,6 @@ namespace Fungus
#region Public members
/// <summary>
/// Returns the MusicController singleton instance.
/// Will create a MusicController game object if none currently exists.
/// </summary>
public static MusicController GetInstance()
{
if (instance == null)
{
GameObject go = new GameObject("MusicController");
DontDestroyOnLoad(go);
instance = go.AddComponent<MusicController>();
}
return instance;
}
/// <summary>
/// Plays game music using an audio clip.
/// One music clip may be played at a time.

3
Assets/Fungus/Scripts/Components/Writer.cs

@ -665,7 +665,8 @@ namespace Fungus
protected virtual void Flash(float duration)
{
var cameraController = CameraController.GetInstance();
var cameraController = FungusManager.Instance.Camera;
cameraController.ScreenFadeTexture = CameraController.CreateColorTexture(new Color(1f,1f,1f,1f), 32, 32);
cameraController.Fade(1f, duration, delegate {
cameraController.ScreenFadeTexture = CameraController.CreateColorTexture(new Color(1f,1f,1f,1f), 32, 32);

Loading…
Cancel
Save