// ***********************************************************************
// Assembly : Game
// Author : Kimch
// Created : 2020-09-02
// Description :
// Last Modified By :
// Last Modified On :
// ***********************************************************************
//
//
// ***********************************************************************
using UnityEngine;
namespace G
{
public class Ef_swing1_ride : MonoBehaviour
{
private int uvAnimationTileX;
private int uvAnimationTileY;
private int framesPerSecond = 20;
private int index;
private int oldindex = -1;
private float starttime;
private int lastframe;
private bool efon;
private float delay;
private int impactframe = 1;
private Rigidbody cha_rigidbody;
public Transform pt_hit;
private Vector2 size;
private Vector2 offset;
private float uIndex;
private int vIndex;
private Pt_hit script_pthit;
private short layerindex;
private bool layerchange;
private bool pton;
private short rndefamount;
private int addforce;
private Renderer myrenderer;
private Collider mycollider;
private void Awake()
{
myrenderer = this.GetComponent();
mycollider = this.GetComponent();
}
private void Start()
{
GameObject gameObject = this.transform.root.gameObject;
cha_rigidbody = gameObject.GetComponent();
script_pthit = pt_hit.GetComponent();
Physics.IgnoreCollision(gameObject.GetComponent(), mycollider);
starttime = 0f;
myrenderer.enabled = false;
mycollider.isTrigger = true;
mycollider.enabled = false;
delay = 0f;
this.gameObject.SetActive(false);
}
public void SwingOn(float _delay, int cnt_x, int cnt_y, int uvspeed, int impact, int _addforce)
{
this.gameObject.layer = GameLayer.NormalAttack;
this.gameObject.SetActive(true);
delay = _delay;
efon = true;
uvAnimationTileX = cnt_x;
uvAnimationTileY = cnt_y;
lastframe = uvAnimationTileX * uvAnimationTileY;
framesPerSecond = uvspeed;
impactframe = impact;
addforce = _addforce;
size = new Vector2(1f / uvAnimationTileX, 1f / uvAnimationTileY);
if (layerchange)
{
if (rndefamount > GlobalUtils.RndHundred)
{
this.gameObject.layer = layerindex;
}
}
}
public void SwingOff()
{
efon = false;
this.gameObject.SetActive(false);
myrenderer.enabled = false;
mycollider.enabled = false;
pton = false;
oldindex = -1;
index = 0;
starttime = 0f;
}
private void Update()
{
if (efon)
{
if (delay > 0f)
{
delay -= Time.deltaTime;
}
else
{
if (addforce > 0)
{
cha_rigidbody.AddForce(base.transform.root.forward * addforce);
}
myrenderer.enabled = true;
starttime = 0f;
efon = false;
}
}
if (!myrenderer.enabled)
{
return;
}
starttime += Time.deltaTime;
index = (int)(starttime * framesPerSecond);
uIndex = index % uvAnimationTileX;
vIndex = index / uvAnimationTileX;
if (index == oldindex)
{
return;
}
if (index >= lastframe)
{
myrenderer.enabled = false;
base.gameObject.SetActive(false);
mycollider.enabled = false;
pton = false;
oldindex = -1;
}
else if (index == impactframe || index == impactframe + 1)
{
mycollider.enabled = true;
if (!pton)
{
script_pthit.ParticleOn();
pton = true;
}
}
else
{
mycollider.enabled = false;
}
offset = Vector2.right * uIndex * size.x + Vector2.up * (1f - size.y - vIndex * size.y);
myrenderer.material.mainTextureOffset = offset;
myrenderer.material.mainTextureScale = size;
oldindex = index;
}
}
}