52 lines
1.7 KiB
C#
52 lines
1.7 KiB
C#
|
|
using UnityEngine;
|
|||
|
|
|
|||
|
|
namespace Com.LuisPedroFonseca.ProCamera2D
|
|||
|
|
{
|
|||
|
|
[HelpURLAttribute("http://www.procamera2d.com/user-guide/extension-geometry-boundaries/")]
|
|||
|
|
public class ProCamera2DGeometryBoundaries : BasePC2D, IPositionDeltaChanger
|
|||
|
|
{
|
|||
|
|
public static string ExtensionName = "Geometry Boundaries";
|
|||
|
|
|
|||
|
|
[Tooltip("The layer that contains the (3d) colliders that define the boundaries for the camera")]
|
|||
|
|
public LayerMask BoundariesLayerMask;
|
|||
|
|
|
|||
|
|
public MoveInColliderBoundaries MoveInColliderBoundaries;
|
|||
|
|
|
|||
|
|
override protected void Awake()
|
|||
|
|
{
|
|||
|
|
base.Awake();
|
|||
|
|
|
|||
|
|
MoveInColliderBoundaries = new MoveInColliderBoundaries(ProCamera2D);
|
|||
|
|
MoveInColliderBoundaries.CameraTransform = ProCamera2D.transform;
|
|||
|
|
MoveInColliderBoundaries.CameraCollisionMask = BoundariesLayerMask;
|
|||
|
|
|
|||
|
|
ProCamera2D.AddPositionDeltaChanger(this);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override void OnDestroy()
|
|||
|
|
{
|
|||
|
|
base.OnDestroy();
|
|||
|
|
|
|||
|
|
if(ProCamera2D)
|
|||
|
|
ProCamera2D.RemovePositionDeltaChanger(this);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#region IPositionDeltaChanger implementation
|
|||
|
|
|
|||
|
|
public Vector3 AdjustDelta(float deltaTime, Vector3 originalDelta)
|
|||
|
|
{
|
|||
|
|
if (!enabled)
|
|||
|
|
return originalDelta;
|
|||
|
|
|
|||
|
|
MoveInColliderBoundaries.CameraSize = ProCamera2D.ScreenSizeInWorldCoordinates;
|
|||
|
|
|
|||
|
|
// Apply movement considering the collider boundaries
|
|||
|
|
return MoveInColliderBoundaries.Move(originalDelta);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public int PDCOrder { get { return _pdcOrder; } set { _pdcOrder = value; } }
|
|||
|
|
int _pdcOrder = 3000;
|
|||
|
|
|
|||
|
|
#endregion
|
|||
|
|
}
|
|||
|
|
}
|