42 lines
1.2 KiB
C#
42 lines
1.2 KiB
C#
using OctoberStudio.Pool;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace OctoberStudio
|
|
{
|
|
public abstract class BossFenceBehavior : MonoBehaviour
|
|
{
|
|
[SerializeField] protected GameObject fenceLink;
|
|
[SerializeField] protected float linkDistance;
|
|
|
|
protected PoolObject fenceLinkPool;
|
|
protected List<GameObject> fenceLinks;
|
|
|
|
public Vector2 Center { get; protected set; }
|
|
|
|
protected int FencePoolSize { get; set; }
|
|
|
|
public virtual void Init()
|
|
{
|
|
if (FencePoolSize < 1) FencePoolSize = 1;
|
|
|
|
fenceLinkPool = new PoolObject(fenceLink, FencePoolSize);
|
|
}
|
|
|
|
public virtual void SpawnFence(Vector2 center)
|
|
{
|
|
Center = center;
|
|
|
|
fenceLinks = new List<GameObject>();
|
|
}
|
|
|
|
public virtual void RemoveFence()
|
|
{
|
|
fenceLinkPool.DisableAllEntities();
|
|
}
|
|
|
|
public abstract bool ValidatePosition(Vector2 position, Vector2 offset);
|
|
public abstract Vector2 GetIntersectionPoint(Vector2 start, Vector2 end, float offset);
|
|
public abstract Vector2 GetRandomPointInside(float offset);
|
|
}
|
|
} |