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); }
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); }
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); } }