public void SaveCheckpoint() { foreach (SaveValue v in variablesToSave) { switch (v.name) { case "ACTIVE": v.value = gameObject.activeInHierarchy.ToString(); break; case "POSITION": v.value = transform.position.ToString(); break; case "ROTATION": v.value = transform.rotation.ToString(); break; default: EntityVariable entVariable = interactiveVariable.GetVariable(v.name, true); if (entVariable == null) { Debug.LogWarning("Try to save a wrong variable (" + v + ") in gameObject : " + name, gameObject); continue; } v.value = entVariable.Value; break; } } }
public void DisableCheckpoint() { if (player) { player.GetVariable("LIFE").RemoveOnSetValue(RespawnPlayer); } active = false; }
public void Init() { if (active) { return; } associatedRespawnable.Clear(); foreach (var obj in levelContainer.GetAllEntities()) { associatedRespawnable.Add(obj); } player = levelContainer.Player?.GetComponent <InteractiveBehaviour>(); if (player) { player.GetVariable("LIFE")?.AddOnSetValue(RespawnPlayer); } else { Debug.LogError("There is no player"); } foreach (IRespawnable obj in associatedRespawnable) { obj.SaveCheckpoint(); } active = true; }