You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
2.7 KiB
C#

4 years ago
using MalbersAnimations.Utilities;
using UnityEngine;
namespace MalbersAnimations.Controller
{
[HelpURL("https://docs.google.com/document/d/1QBLQVWcDSyyWBDrrcS2PthhsToWkOayU0HUtiiSWTF8/edit#heading=h.kraxblx9518t")]
public class Death : State
{
public override string StateName => "Death";
[Header("Death Parameters")]
public bool DisableAllComponents = true;
public bool RemoveAllColliders = false;
public bool RemoveAllTriggers = true;
public int DelayFrames = 2;
public float RigidbodyDrag = 5;
public float RigidbodyAngularDrag = 15;
[Space]
public bool disableAnimal = true;
[Hide("disableAnimal",true,false)]
public float disableAnimalTime = 5f;
public override void Activate()
{
animal.Mode_Stop(); //Interrupt all modes.
base.Activate();
}
public override void EnterCoreAnimation()
{
animal.Mode_Interrupt();
//animal.Mode_Disable_All();
animal.StopMoving();
animal.Mode_Stop();
animal.Delay_Action(DelayFrames, ()=> DisableAll()); //Wait 2 frames
}
void DisableAll()
{
SetEnterStatus(0);
if (DisableAllComponents)
{
var AllComponents = animal.GetComponentsInChildren<MonoBehaviour>();
foreach (var comp in AllComponents)
{
if (comp == animal) continue;
if (comp != null) comp.enabled = false;
}
}
var AllTriggers = animal.GetComponentsInChildren<Collider>();
foreach (var trig in AllTriggers)
{
if (RemoveAllColliders || (RemoveAllTriggers && trig.isTrigger))
{
Destroy(trig);
}
}
animal.SetCustomSpeed(new MSpeed("Death"));
if (animal.RB)
{
animal.RB.drag = RigidbodyDrag;
animal.RB.angularDrag = RigidbodyAngularDrag;
}
if (disableAnimal)
animal.DisableSelf(disableAnimalTime); //Disable the Animal Component after x time
}
#if UNITY_EDITOR
void Reset()
{
ID = MTools.GetInstance<StateID>("Death");
General = new AnimalModifier()
{
modify = (modifier)(-1),
Persistent = true,
LockInput = true,
LockMovement = true,
AdditiveRotation = true,
};
}
#endif
}
}