private void InitAnimation(GameObject go) { if (!Running) { #if DEBUG_FLORA PrefabIdentifier id = go.GetComponent <PrefabIdentifier>(); if (id != null) { Logger.Log("DEBUG: LandTree1Controller.Update(): gameObject name=[" + go.name + "] id=[" + id.Id + "] position x=[" + go.transform.localPosition.x + "] y=[" + go.transform.localPosition.y + "] z=[" + go.transform.localPosition.z + "] => Initializing"); } else { Logger.Log("DEBUG: LandTree1Controller.Update(): gameObject name=[" + go.name + "] position x=[" + go.transform.localPosition.x + "] y=[" + go.transform.localPosition.y + "] z=[" + go.transform.localPosition.z + "] => Initializing"); } #endif if (StaticPrefab != null) { // Configure static renderer StaticPrefab.transform.parent = go.transform; StaticPrefab.transform.localPosition = new Vector3(0.0f, 0.0f, 0.0f); StaticPrefab.transform.localScale = new Vector3(12f, 12f, 12f); StaticPrefab.transform.localEulerAngles = new Vector3(0.0f, 0.0f, 0.0f); // Update sky applier SkyApplier skyApplier = go.GetComponent <SkyApplier>(); skyApplier.renderers = go.GetComponentsInChildren <Renderer>(); skyApplier.anchorSky = Skies.Auto; StaticPrefab.SetActive(true); } // Hide seed model and show plant model PrefabsHelper.ShowPlantAndHideSeed(_grownPlant.gameObject.transform); // Store init values _initTimeValue = DayNightCycle.main.timePassed; foreach (Transform tr in go.transform) { bool isStatic = tr.name.StartsWith("Land_tree_01_static", true, CultureInfo.InvariantCulture); if (_origScale == Vector3.zero && !isStatic) { _origScale = new Vector3(tr.localScale.x, tr.localScale.y, tr.localScale.z); } else if (_origStaticScale == Vector3.zero && isStatic) { _origStaticScale = new Vector3(tr.localScale.x, tr.localScale.y, tr.localScale.z); } } // Init trees sizes foreach (Transform tr in go.transform) { tr.localScale = new Vector3(0.0001f, 0.0001f, 0.0001f); } Running = true; } }
public static bool OnHandClick_Prefix(Pickupable __instance, GUIHand hand) { if (__instance.gameObject != null) { // Get current item PID var pid = __instance.gameObject.GetComponent <PrefabIdentifier>(); // If current item is one of our new flora if (pid != null && !string.IsNullOrEmpty(pid.ClassId) && CustomFlora.AllPlants.Contains(pid.ClassId)) { // If hand is free and item allowed to pickup if (hand.IsFreeToInteract() && ((bool)allowedToPickUpMethod.Invoke(__instance, null) == true)) { // Try pickup flora if (Inventory.Get().Pickup(__instance, false)) { // Show plant, hide seed and disable pickupable now that plant has been picked up PrefabsHelper.ShowPlantAndHideSeed(__instance.gameObject.transform, pid.ClassId); // Play grab animation Player.main.PlayGrab(); // Refresh waterpark status WaterParkItem component = __instance.GetComponent <WaterParkItem>(); if (component == null) { component = __instance.gameObject.GetComponent <WaterParkItem>(); } if (component != null) { component.SetWaterPark(null); } } else { ErrorMessage.AddWarning(Language.main.Get("InventoryFull")); } } // Don't call origin function if current item is one of our new flora return(false); } } // Give back execution to origin function return(true); }
public void Update() { #if (DEBUG_FLORA || DEBUG_FLORA_ENTRY || DEBUG_FLORA_ANIMATION) PrefabIdentifier id = GetComponent <PrefabIdentifier>(); #endif #if DEBUG_FLORA_ENTRY if (id != null) { Logger.Log("DEBUG: Entering PlantGenericController.Update() for gameObject name=[" + this.gameObject.name + "] id=[" + id.Id + "] position x=[" + this.gameObject.transform.localPosition.x + "] y=[" + this.gameObject.transform.localPosition.y + "] z=[" + this.gameObject.transform.localPosition.z + "]"); } else { Logger.Log("DEBUG: Entering PlantGenericController.Update() for gameObject name=[" + this.gameObject.name + "] position x=[" + this.gameObject.transform.localPosition.x + "] y=[" + this.gameObject.transform.localPosition.y + "] z=[" + this.gameObject.transform.localPosition.z + "]"); } #endif if (_plant == null) { _plant = GetComponent <Plantable>(); } if (_grownPlant == null) { _grownPlant = GetComponent <GrownPlant>(); } if (_grownPlant == null && _plant != null) { if (_plant.linkedGrownPlant != null) { #if DEBUG_FLORA Logger.Log("DEBUG: PlantGenericController.Update() Associating grown plant in gameObject name=[" + this.gameObject.name + "] position x=[" + this.gameObject.transform.localPosition.x + "] y=[" + this.gameObject.transform.localPosition.y + "] z=[" + this.gameObject.transform.localPosition.z + "]"); #endif _grownPlant = _plant.linkedGrownPlant; _grownPlant.seed = _plant; } } if (_grownPlant != null) { if (!Running) { #if DEBUG_FLORA if (id != null) { Logger.Log("DEBUG: PlantGenericController.Update(): gameObject name=[" + _grownPlant.gameObject.name + "] id=[" + id.Id + "] position x=[" + _grownPlant.transform.localPosition.x + "] y=[" + _grownPlant.transform.localPosition.y + "] z=[" + _grownPlant.transform.localPosition.z + "] => Initializing"); } else { Logger.Log("DEBUG: PlantGenericController.Update(): gameObject name=[" + _grownPlant.gameObject.name + "] position x=[" + _grownPlant.transform.localPosition.x + "] y=[" + _grownPlant.transform.localPosition.y + "] z=[" + _grownPlant.transform.localPosition.z + "] => Initializing"); } #endif // Hide seed model and show plant model PrefabsHelper.ShowPlantAndHideSeed(_grownPlant.gameObject.transform); // Store init values _initTimeValue = DayNightCycle.main.timePassed; foreach (Transform tr in _grownPlant.gameObject.transform) { _origScale = new Vector3(tr.localScale.x, tr.localScale.y, tr.localScale.z); break; } // If we need to add a temporary collider, do it before scaling if (EnableColliders) { var coveTreeModel = _grownPlant.gameObject.FindChild("lost_river_cove_tree_01"); if (coveTreeModel != null) { _tmpCollider = coveTreeModel.AddComponent <BoxCollider>(); if (_tmpCollider != null) { _tmpCollider.size = new Vector3(7.0f, 20.0f, 7.0f); _tmpCollider.center = new Vector3(_tmpCollider.center.x, _tmpCollider.center.y + 10.0f, _tmpCollider.center.z); } } } // Init tree/plant size foreach (Transform tr in _grownPlant.gameObject.transform) { if (tr.name != "Generic_plant_seed") { tr.localScale = new Vector3(0.0001f, 0.0001f, 0.0001f); } } // Init colliders size if (RestoreColliders) { Collider[] colliders = _grownPlant.gameObject.GetComponentsInChildren <Collider>(); foreach (Collider collider in colliders) { collider.transform.localScale *= 1000.0f; collider.enabled = true; } } if (RestoreRadius) { SphereCollider[] colliders = _grownPlant.gameObject.GetComponentsInChildren <SphereCollider>(); foreach (SphereCollider collider in colliders) { collider.radius *= 1000.0f; collider.enabled = true; } } if (RestoreBoxColliders) { BoxCollider[] colliders = _grownPlant.gameObject.GetComponentsInChildren <BoxCollider>(); foreach (BoxCollider collider in colliders) { collider.size *= 1000.0f; collider.enabled = true; } } Running = true; } else { // Animation _progress = ((float)(DayNightCycle.main.timePassed - _initTimeValue) / GrowthDuration) + _passedProgress; #if DEBUG_FLORA_ANIMATION if (id != null) { Logger.Log("DEBUG: PlantGenericController.Update(): PROGRESS gameObject name=[" + _grownPlant.gameObject.name + "] id=[" + id.Id + "] position x=[" + _grownPlant.transform.localPosition.x + "] y=[" + _grownPlant.transform.localPosition.y + "] z=[" + _grownPlant.transform.localPosition.z + "] => progress=[" + _progress + "] pastProgress=[" + _passedProgress + "] originScale x=[" + _origScale.x + "] y=[" + _origScale.y + "] z=[" + _origScale.z + "]"); } else { Logger.Log("DEBUG: PlantGenericController.Update(): PROGRESS gameObject name=[" + _grownPlant.gameObject.name + "] position x=[" + _grownPlant.transform.localPosition.x + "] y=[" + _grownPlant.transform.localPosition.y + "] z=[" + _grownPlant.transform.localPosition.z + "] => progress=[" + _progress + "] pastProgress=[" + _passedProgress + "] originScale x=[" + _origScale.x + "] y=[" + _origScale.y + "] z=[" + _origScale.z + "]"); } #endif if (_grownPlant.gameObject.transform.localPosition.x > 4500.0f && _grownPlant.gameObject.transform.localPosition.z > 4500.0f) { #if DEBUG_FLORA if (id != null) { Logger.Log("DEBUG: PlantGenericController.Update(): gameObject name=[" + _grownPlant.gameObject.name + "] id=[" + id.Id + "] position x=[" + _grownPlant.gameObject.transform.localPosition.x + "] y=[" + _grownPlant.gameObject.transform.localPosition.y + "] z=[" + _grownPlant.gameObject.transform.localPosition.z + "] => Disabling animation component"); } else { Logger.Log("DEBUG: PlantGenericController.Update(): gameObject name=[" + _grownPlant.gameObject.name + "] position x=[" + _grownPlant.gameObject.transform.localPosition.x + "] y=[" + _grownPlant.gameObject.transform.localPosition.y + "] z=[" + _grownPlant.gameObject.transform.localPosition.z + "] => Disabling animation component"); } #endif this.enabled = false; } else { if (_progress < 1.0f) { foreach (Transform tr in _grownPlant.gameObject.transform) { if (tr.name != "Generic_plant_seed") { tr.localScale = new Vector3(_origScale.x * _progress, _origScale.y * _progress, _origScale.z * _progress); } } } else { #if DEBUG_FLORA if (id != null) { Logger.Log("DEBUG: PlantGenericController.Update(): gameObject name=[" + _grownPlant.gameObject.name + "] id=[" + id.Id + "] position x=[" + _grownPlant.transform.localPosition.x + "] y=[" + _grownPlant.transform.localPosition.y + "] z=[" + _grownPlant.transform.localPosition.z + "] => Set final size"); } else { Logger.Log("DEBUG: PlantGenericController.Update(): gameObject name=[" + _grownPlant.gameObject.name + "] position x=[" + _grownPlant.transform.localPosition.x + "] y=[" + _grownPlant.transform.localPosition.y + "] z=[" + _grownPlant.transform.localPosition.z + "] => Set final size"); } #endif // Set final size _progress = 1.0f; foreach (Transform tr in _grownPlant.gameObject.transform) { if (tr.name != "Generic_plant_seed") { tr.localScale = new Vector3(_origScale.x, _origScale.y, _origScale.z); } } // Set final colliders if (EnableColliders) { // Disable temporary collider if (_tmpCollider != null) { _tmpCollider.enabled = false; GameObject.DestroyImmediate(_tmpCollider); } // Enable origin colliders Collider[] colliders = _grownPlant.gameObject.GetComponentsInChildren <Collider>(); foreach (Collider collider in colliders) { collider.enabled = true; } } // Enable knifeable LiveMixin liveMixin = _grownPlant.gameObject.GetComponent <LiveMixin>(); liveMixin.data.knifeable = Knifeable; // Disable controller this.enabled = false; } } } } else { #if DEBUG_FLORA if (id != null) { Logger.Log("DEBUG: PlantGenericController.Update(): gameObject name=[" + this.gameObject.name + "] id=[" + id.Id + "] position x=[" + this.gameObject.transform.localPosition.x + "] y=[" + this.gameObject.transform.localPosition.y + "] z=[" + this.gameObject.transform.localPosition.z + "] => No grown plant: Disabling controller"); } else { Logger.Log("DEBUG: PlantGenericController.Update(): gameObject name=[" + this.gameObject.name + "] position x=[" + this.gameObject.transform.localPosition.x + "] y=[" + this.gameObject.transform.localPosition.y + "] z=[" + this.gameObject.transform.localPosition.z + "] => No grown plant: Disabling controller"); } #endif this.enabled = false; } }
public void Update() { #if (DEBUG_FLORA || DEBUG_FLORA_ENTRY || DEBUG_FLORA_ANIMATION) PrefabIdentifier id = GetComponent <PrefabIdentifier>(); #endif #if DEBUG_FLORA_ENTRY if (id != null) { Logger.Log("DEBUG: A) Entering PlantMonoTransformController.Update() for gameObject name=[" + this.gameObject.name + "] id=[" + id.Id + "] position x=[" + this.gameObject.transform.localPosition.x + "] y=[" + this.gameObject.transform.localPosition.y + "] z=[" + this.gameObject.transform.localPosition.z + "]"); } else { Logger.Log("DEBUG: A) Entering PlantMonoTransformController.Update() for gameObject name=[" + this.gameObject.name + "] position x=[" + this.gameObject.transform.localPosition.x + "] y=[" + this.gameObject.transform.localPosition.y + "] z=[" + this.gameObject.transform.localPosition.z + "]"); } #endif if (_plant == null) { _plant = GetComponent <Plantable>(); } if (_grownPlant == null) { _grownPlant = GetComponent <GrownPlant>(); } if (_grownPlant == null && _plant != null) { if (_plant.linkedGrownPlant != null) { #if DEBUG_FLORA Logger.Log("DEBUG: PlantMonoTransformController.Update() Associating grown plant in gameObject name=[" + this.gameObject.name + "] position x=[" + this.gameObject.transform.localPosition.x + "] y=[" + this.gameObject.transform.localPosition.y + "] z=[" + this.gameObject.transform.localPosition.z + "]"); #endif _grownPlant = _plant.linkedGrownPlant; _grownPlant.seed = _plant; } } if (_grownPlant != null) { #if DEBUG_FLORA_ENTRY if (id == null) { id = _grownPlant.gameObject.GetComponent <PrefabIdentifier>(); if (id != null) { Logger.Log("DEBUG: B) Entering PlantMonoTransformController.Update() for gameObject name=[" + _grownPlant.gameObject.name + "] id=[" + id.Id + "] position x=[" + _grownPlant.gameObject.transform.localPosition.x + "] y=[" + _grownPlant.gameObject.transform.localPosition.y + "] z=[" + _grownPlant.gameObject.transform.localPosition.z + "]"); } else { Logger.Log("DEBUG: B) Entering PlantMonoTransformController.Update() for gameObject name=[" + _grownPlant.gameObject.name + "] position x=[" + _grownPlant.gameObject.transform.localPosition.x + "] y=[" + _grownPlant.gameObject.transform.localPosition.y + "] z=[" + _grownPlant.gameObject.transform.localPosition.z + "]"); } } #endif if (!Running) { #if DEBUG_FLORA if (id != null) { Logger.Log("DEBUG: PlantMonoTransformController.Update(): gameObject name=[" + _grownPlant.gameObject.name + "] id=[" + id.Id + "] position x=[" + _grownPlant.gameObject.transform.localPosition.x + "] y=[" + _grownPlant.gameObject.transform.localPosition.y + "] z=[" + _grownPlant.gameObject.transform.localPosition.z + "] => Initializing"); } else { Logger.Log("DEBUG: PlantMonoTransformController.Update(): gameObject name=[" + _grownPlant.gameObject.name + "] position x=[" + _grownPlant.gameObject.transform.localPosition.x + "] y=[" + _grownPlant.gameObject.transform.localPosition.y + "] z=[" + _grownPlant.gameObject.transform.localPosition.z + "] => Initializing"); } #endif // Hide seed model and show plant model PrefabsHelper.ShowPlantAndHideSeed(_grownPlant.gameObject.transform); // Store init values _initTimeValue = DayNightCycle.main.timePassed; if (_origScale == Vector3.zero) { _origScale = new Vector3(_grownPlant.gameObject.transform.localScale.x, _grownPlant.gameObject.transform.localScale.y, _grownPlant.gameObject.transform.localScale.z); } // Init tree size _grownPlant.gameObject.transform.localScale = new Vector3(0.0001f, 0.0001f, 0.0001f); Running = true; } else { // Animation _progress = ((float)(DayNightCycle.main.timePassed - _initTimeValue) / GrowthDuration) + _passedProgress; #if DEBUG_FLORA_ANIMATION if (id != null) { Logger.Log("DEBUG: PlantMonoTransformController.Update(): PROGRESS gameObject name=[" + _grownPlant.gameObject.name + "] id=[" + id.Id + "] position x=[" + _grownPlant.gameObject.transform.localPosition.x + "] y=[" + _grownPlant.gameObject.transform.localPosition.y + "] z=[" + _grownPlant.gameObject.transform.localPosition.z + "] => progress=[" + _progress + "] pastProgress=[" + _passedProgress + "] originScale x=[" + _origScale.x + "] y=[" + _origScale.y + "] z=[" + _origScale.z + "]"); } else { Logger.Log("DEBUG: PlantMonoTransformController.Update(): PROGRESS gameObject name=[" + _grownPlant.gameObject.name + "] position x=[" + _grownPlant.gameObject.transform.localPosition.x + "] y=[" + _grownPlant.gameObject.transform.localPosition.y + "] z=[" + _grownPlant.gameObject.transform.localPosition.z + "] => progress=[" + _progress + "] pastProgress=[" + _passedProgress + "] originScale x=[" + _origScale.x + "] y=[" + _origScale.y + "] z=[" + _origScale.z + "]"); } #endif //if (_grownPlant.gameObject.transform.localPosition.x > 4900.0f && _grownPlant.gameObject.transform.localPosition.x < 5100.0f && _grownPlant.gameObject.transform.localPosition.z > 4900.0f && _grownPlant.gameObject.transform.localPosition.z < 5100.0f) if (_grownPlant.gameObject.transform.localPosition.x > 4500.0f && _grownPlant.gameObject.transform.localPosition.z > 4500.0f) { #if DEBUG_FLORA if (id != null) { Logger.Log("DEBUG: PlantMonoTransformController.Update(): gameObject name=[" + _grownPlant.gameObject.name + "] id=[" + id.Id + "] position x=[" + _grownPlant.gameObject.transform.localPosition.x + "] y=[" + _grownPlant.gameObject.transform.localPosition.y + "] z=[" + _grownPlant.gameObject.transform.localPosition.z + "] => Disabling animation component"); } else { Logger.Log("DEBUG: PlantMonoTransformController.Update(): gameObject name=[" + _grownPlant.gameObject.name + "] position x=[" + _grownPlant.gameObject.transform.localPosition.x + "] y=[" + _grownPlant.gameObject.transform.localPosition.y + "] z=[" + _grownPlant.gameObject.transform.localPosition.z + "] => Disabling animation component"); } #endif this.enabled = false; } else { if (_progress < 1.0f) { _grownPlant.gameObject.transform.localScale = new Vector3(_origScale.x * _progress, _origScale.y * _progress, _origScale.z * _progress); } else { #if DEBUG_FLORA if (id != null) { Logger.Log("DEBUG: PlantMonoTransformController.Update(): gameObject name=[" + _grownPlant.gameObject.name + "] id=[" + id.Id + "] position x=[" + _grownPlant.gameObject.transform.localPosition.x + "] y=[" + _grownPlant.gameObject.transform.localPosition.y + "] z=[" + _grownPlant.gameObject.transform.localPosition.z + "] => Set final size"); } else { Logger.Log("DEBUG: PlantMonoTransformController.Update(): gameObject name=[" + _grownPlant.gameObject.name + "] position x=[" + _grownPlant.gameObject.transform.localPosition.x + "] y=[" + _grownPlant.gameObject.transform.localPosition.y + "] z=[" + _grownPlant.gameObject.transform.localPosition.z + "] => Set final size"); } #endif // Set final size _progress = 1.0f; _grownPlant.gameObject.transform.localScale = new Vector3(_origScale.x, _origScale.y, _origScale.z); // Enable knifeable LiveMixin liveMixin = _grownPlant.gameObject.GetComponent <LiveMixin>(); liveMixin.data.knifeable = Knifeable; // Disable controller this.enabled = false; } } } } else { #if DEBUG_FLORA if (id != null) { Logger.Log("DEBUG: PlantMonoTransformController.Update(): gameObject name=[" + this.gameObject.name + "] id=[" + id.Id + "] position x=[" + this.gameObject.transform.localPosition.x + "] y=[" + this.gameObject.transform.localPosition.y + "] z=[" + this.gameObject.transform.localPosition.z + "] => No grown plant: Replacing seed by plant"); } else { Logger.Log("DEBUG: PlantMonoTransformController.Update(): gameObject name=[" + this.gameObject.name + "] position x=[" + this.gameObject.transform.localPosition.x + "] y=[" + this.gameObject.transform.localPosition.y + "] z=[" + this.gameObject.transform.localPosition.z + "] => No grown plant: Replacing seed by plant"); } #endif this.enabled = false; } }