Exemple #1
0
    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));
        }
Exemple #3
0
 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;
         }
     }
 }
Exemple #4
0
    // 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;
        }
    }