Exemplo n.º 1
0
        public void Initialize(UnitModelInitializer initializer)
        {
            transform.SetParent(initializer.UnitRenderer.transform, false);
            transform.localPosition = Vector3.zero;
            transform.localRotation = Quaternion.identity;
            transform.localScale    = Vector3.one;

            Settings         = initializer.ModelSettings;
            Animator.enabled = true;

            if (initializer.UnitRenderer.Unit.IsDead)
            {
                animator.SetBool("IsDead", true);
                animator.Play("Death");
            }

            switch (initializer.ReplacementMode)
            {
            case UnitModelReplacementMode.ScopeIn:
                ToggleTransparentMode(true, 0.0f, 1.0f);
                break;

            case UnitModelReplacementMode.Transformation:
                if (initializer.PreviousModel != null && initializer.PreviousModel.CurrentAlpha < 1.0f)
                {
                    ToggleTransparentMode(true, initializer.PreviousModel.CurrentAlpha, initializer.PreviousModel.TargetAlpha);
                }
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(initializer.ReplacementMode), initializer.ReplacementMode, "Unhandled model replacement mode!");
            }

            HandleVisualEffects(initializer.UnitRenderer, false, true);
        }
Exemplo n.º 2
0
        public void Deinitialize()
        {
            Animator.WriteDefaultValues();
            Animator.enabled = false;

            CurrentAlpha = 1.0f;
            TargetAlpha  = 1.0f;

            Settings = null;

            meshRenderer.materials = originalMaterials;
            unitHasTransparency    = false;

            GameObjectPool.Return(this, false);
        }
Exemplo n.º 3
0
        public void Initialize(UnitRenderer unitRenderer, UnitModelSettings modelSettings)
        {
            transform.SetParent(unitRenderer.transform, false);
            transform.localPosition = Vector3.zero;
            transform.localRotation = Quaternion.identity;
            transform.localScale    = Vector3.one;

            Renderer = unitRenderer;
            Settings = modelSettings;

            if (Renderer.Unit.IsDead)
            {
                animator.SetBool("IsDead", true);
                animator.Play("Death", 0, 1.0f);
                animator.Play("Death", 1, 1.0f);
            }
        }