Files
dungeons/Assets/Plugins/Zenject/OptionalExtras/SampleGame1 (Beginner)/Scripts/Ship/Ship.cs

88 lines
1.8 KiB
C#

using UnityEngine;
#pragma warning disable 649
#pragma warning disable 618
namespace Zenject.Asteroids
{
public class Ship : MonoBehaviour
{
[SerializeField]
MeshRenderer _meshRenderer;
#if UNITY_2018_1_OR_NEWER
[SerializeField]
ParticleSystem _particleSystem;
#else
[SerializeField]
ParticleEmitter _particleEmitter;
#endif
ShipStateFactory _stateFactory;
ShipState _state;
[Inject]
public void Construct(ShipStateFactory stateFactory)
{
_stateFactory = stateFactory;
}
public MeshRenderer MeshRenderer
{
get { return _meshRenderer; }
}
#if UNITY_2018_1_OR_NEWER
public ParticleSystem ParticleEmitter
{
get { return _particleSystem; }
}
#else
public ParticleEmitter ParticleEmitter
{
get { return _particleEmitter; }
}
#endif
public Vector3 Position
{
get { return transform.position; }
set { transform.position = value; }
}
public Quaternion Rotation
{
get { return transform.rotation; }
set { transform.rotation = value; }
}
public void Start()
{
ChangeState(ShipStates.WaitingToStart);
}
public void Update()
{
_state.Update();
}
public void OnTriggerEnter(Collider other)
{
_state.OnTriggerEnter(other);
}
public void ChangeState(ShipStates state)
{
if (_state != null)
{
_state.Dispose();
_state = null;
}
_state = _stateFactory.CreateState(state);
_state.Start();
}
}
}