示例#1
0
 public SalvageRenderData(Material M, MeshRenderer R, Color C, Salvagable S)
 {
     OriginalMaterial = M;
     Renderer         = R;
     SalvageData      = S;
     OriginalColor    = C;
 }
示例#2
0
    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);
            }
        }
    }
示例#3
0
    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;
    }
示例#4
0
 protected override void OnDeselect(ToolController owner)
 {
     //Debug.Log("Salvager DeSelected");
     SalvComp = null; //cleanup
     ToggleBars(false);
     progressBarBG   = null;
     progressBarFill = null;
 }
示例#5
0
    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;
        }
    }
示例#6
0
    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;
        }
    }
示例#7
0
    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);
    }