public SalvageRenderData(Material M, MeshRenderer R, Color C, Salvagable S) { OriginalMaterial = M; Renderer = R; SalvageData = S; OriginalColor = C; }
private void UpdateSalvageData() { if (IsScanning == true) { return; } IsScanning = true; ScanResults.Clear(); ScanKeys.Clear(); Collider[] hitColliders = Physics.OverlapSphere(gameObject.transform.position, ScanRange, Mask); for (int i = 0; i < hitColliders.Length; i++) { Salvagable SalvageComp = hitColliders[i].GetComponentInChildren <Salvagable>(); //don't add to salvage data if the game object is already there or if it isn't salvagable if (SalvageComp != null && !ScanResults.ContainsKey(hitColliders[i].gameObject)) { MeshRenderer TempRender = hitColliders[i].GetComponentInChildren <MeshRenderer>(); if (TempRender == null) { Debug.Log($"Mesh Renderer missing on {SalvageComp}"); return; } ScanResults.Add(hitColliders[i].gameObject, new SalvageRenderData(TempRender.material, TempRender, TempRender.material.color, SalvageComp)); ScanKeys.Add(hitColliders[i].gameObject); } } }
protected override void OnDeactivate(ToolController owner, GameObject target) { if (SalvComp == null | SwitchedTargets | !FinishedSalvage | OutOfRange) { return; } Debug.Log("Deactivated"); if (owner.PlayerInventory.AddToResourceBucket(SalvComp.SalvageItem, SalvComp.Amount)) { //Debug.Log(owner.PlayerInventory.GetResourceAmount(SalvComp.SalvageItem.ResourceType)); Destroy(OriginalTarget); //EVAN: Play salvaged success sound here AkSoundEngine.PostEvent("SFX_Debris_Collect", target); //resource gained pop text Instantiate(popText).popText.SetText(SalvComp.SalvageItem.ResourceType.DisplayName + " Gained"); //Debug.Log("Salvaged Object"); } else { Instantiate(popText).popText.SetText(SalvComp.SalvageItem.ResourceType.DisplayName + " Full"); } //EVAN: finish the salvage sound //error pop text //Debug.Log("Not enough space"); SalvComp = null; SwitchedTargets = true; OriginalTarget = null; }
protected override void OnDeselect(ToolController owner) { //Debug.Log("Salvager DeSelected"); SalvComp = null; //cleanup ToggleBars(false); progressBarBG = null; progressBarFill = null; }
protected override void OnActivate(ToolController owner, GameObject target) { Salvagable oldSalvage = target.GetComponentInChildren <Salvagable>(); if (oldSalvage.Instanced) { target.SetActive(false); GameObject NewSalvageObj = GameObject.Instantiate(oldSalvage.UnInstancedPrefab); NewSalvageObj.transform.position = target.transform.position; NewSalvageObj.transform.rotation = target.transform.rotation; Rigidbody NewRB = NewSalvageObj.GetComponent <Rigidbody>(); NewRB.velocity = TargetRB.velocity; NewRB.angularVelocity = TargetRB.angularVelocity; TargetRB = NewRB; } }
private void Update() { //used for showing how far away moused over objects are if (player.mouseCollision == null) { objectDistance.SetText(""); } else { if (player.TargetedObject == null) { objectDistance.SetText(""); } else { Salvagable TargetSalvage = player.TargetedObject.GetComponentInChildren <Salvagable>(); if (TargetSalvage != null) { objectDistance.SetText(TargetSalvage.SalvageItem.Name + " | " + player.collisionDistance.ToString() + "m"); } else { objectDistance.SetText(player.collisionDistance.ToString() + "m"); } } if (playerTools.CurrentTool != null) { if (playerTools.CurrentTool.ToolRange > 0) { if (playerTools.CurrentTool.ToolRange >= player.collisionDistance) { objectDistance.color = Color.green; } else { objectDistance.color = Color.red; } return; } } objectDistance.color = Color.white; } }
protected override void OnActivate(ToolController owner, GameObject target) { Debug.Log("Activated"); SalvComp = target.GetComponent <Salvagable>(); if (SalvComp.Instanced) { Rigidbody TargetRB = target.GetComponent <Rigidbody>(); target.SetActive(false); GameObject NewSalvageObj = GameObject.Instantiate(SalvComp.UnInstancedPrefab); NewSalvageObj.transform.position = target.transform.position; NewSalvageObj.transform.rotation = target.transform.rotation; Rigidbody NewRB = NewSalvageObj.GetComponent <Rigidbody>(); NewRB.velocity = TargetRB.velocity; NewRB.angularVelocity = TargetRB.angularVelocity; target = NewSalvageObj; owner.GetComponent <Player>().SetTarget(NewSalvageObj); TargetRB = NewRB; } OriginalTarget = target; salvageTime = SalvComp.SalvageItem.SalvageTime; SalvageStartTime = Time.unscaledTime; if (SalvComp.SalvageItem.IsSalvage) { if (!owner.PlayerInventory.CanAddToResourceBucket(SalvComp.SalvageItem, SalvComp.Amount)) { Instantiate(popText).popText.SetText(SalvComp.SalvageItem.ResourceType.DisplayName + " Full"); Deactivate(owner, target); return; } } else { //error pop text Instantiate(popText).popText.SetText("Cannot Salvage"); return; //Debug.Log("Could not salvage"); //Debug.Log(SalvComp.SalvageItem + " is not a resource"); } //EVAN: Start the salvage sound AkSoundEngine.PostEvent("SFX_Debris_Select", target); }