private void Startup() { if (ObjectState.ObjectStates.Dead != StatefulObject.GetState(gameObject).State) { _isActive = true; BoxCollider2D collider = GetComponent <BoxCollider2D>(); collider.isTrigger = true; foreach (var obj in Physics2D.OverlapBoxAll(transform.position, collider.size, 0f)) { if (obj.CompareTag(_targetTag)) { _isActive = false; if (_canTriggerOnStart) { triggered.Invoke(); } } } } else { gameObject.SetActive(false); } }
public static byte[] SerializeStatefulObject(StatefulObject statefulObject) { var dictionary = new Dictionary <string, object>() { { "Type", statefulObject.GetType().AssemblyQualifiedName }, { "State", statefulObject.GetState() }, }; return(StateSerialization.SerializeState(dictionary)); }
public void OnTriggerEnter2D(Collider2D collision) { if ((_isActive) && collision.CompareTag(_targetTag)) { triggered.Invoke(); _isActive = false; if (_oneshot) { BoxCollider2D collider = GetComponent <BoxCollider2D>(); collider.enabled = false; StatefulObject.GetState(gameObject).State = ObjectState.ObjectStates.Dead; } } }
// Start is called before the first frame update void Start() { pantheroffset = Random.Range(-0.99f, 0.99f); StartPosition = this.transform.position; thisAnim = this.GetComponent <Animator>(); Player = GameObject.Find("character"); BloodSplatter = GameObject.Find("splat"); _state = StatefulObject.GetState(gameObject); if (null == _state) { Debug.Log("What " + GetComponent <StatefulObject>().UniqueID); } if (ObjectState.ObjectStates.Dead == _state.State) { GameObject splatter = GameObject.Instantiate(BloodSplatter); transform.position = _state.Position; splatter.transform.position = this.transform.position; GetComponent <SpriteRenderer>().enabled = false; GetComponent <PolygonCollider2D>().enabled = false; } }