Exemplo n.º 1
0
    public void CreateShredResources()
    {
        if (currentlyShredding == null)
        {
            return;
        }
        MagnetLiftable component = currentlyShredding.GetComponent <MagnetLiftable>();

        if (component == null)
        {
            return;
        }
        ItemAmount[] shredResources = component.shredResources;
        foreach (ItemAmount itemAmount in shredResources)
        {
            Item  item = ItemManager.Create(itemAmount.itemDef, (int)itemAmount.amount, 0uL);
            float num  = 0.5f;
            if (item.CreateWorldObject(resourceSpawnPoint.transform.position + new Vector3(Random.Range(0f - num, num), 1f, Random.Range(0f - num, num))) == null)
            {
                item.Remove();
            }
        }
        BaseModularVehicle component2 = currentlyShredding.GetComponent <BaseModularVehicle>();

        if (!component2)
        {
            return;
        }
        foreach (BaseVehicleModule attachedModuleEntity in component2.AttachedModuleEntities)
        {
            if (!attachedModuleEntity.AssociatedItemDef || !attachedModuleEntity.AssociatedItemDef.Blueprint)
            {
                continue;
            }
            foreach (ItemAmount ingredient in attachedModuleEntity.AssociatedItemDef.Blueprint.ingredients)
            {
                int num2 = Mathf.FloorToInt(ingredient.amount * 0.5f);
                if (num2 != 0)
                {
                    Item  item2 = ItemManager.Create(ingredient.itemDef, num2, 0uL);
                    float num3  = 0.5f;
                    if (item2.CreateWorldObject(resourceSpawnPoint.transform.position + new Vector3(Random.Range(0f - num3, num3), 1f, Random.Range(0f - num3, num3))) == null)
                    {
                        item2.Remove();
                    }
                }
            }
        }
    }
Exemplo n.º 2
0
 public void ServerUpdate()
 {
     if (base.isClient)
     {
         return;
     }
     SetFlag(Flags.Reserved10, isShredding);
     if (isShredding)
     {
         float num = Time.realtimeSinceStartup - shredStartTime;
         float t   = num / shredDurationPosition;
         float t2  = num / shredDurationRotation;
         shredRail.transform.localPosition = Vector3.Lerp(shredRailStartPos.localPosition, shredRailEndPos.localPosition, t);
         shredRail.transform.rotation      = Quaternion.LookRotation(Vector3.Lerp(shredRailStartRotation, shredRailEndRotation, t2));
         MagnetLiftable component = currentlyShredding.GetComponent <MagnetLiftable>();
         currentlyShredding.transform.position = shredRail.transform.position;
         Vector3 vector = base.transform.TransformDirection(component.shredDirection);
         if (Vector3.Dot(-vector, currentlyShredding.transform.forward) > Vector3.Dot(vector, currentlyShredding.transform.forward))
         {
             vector = base.transform.TransformDirection(-component.shredDirection);
         }
         bool       flag = Vector3.Dot(component.transform.up, Vector3.up) >= -0.95f;
         Quaternion b    = QuaternionEx.LookRotationForcedUp(vector, flag ? (-base.transform.right) : base.transform.right);
         float      num2 = Time.time * shredSwaySpeed;
         float      num3 = Mathf.PerlinNoise(num2, 0f);
         b *= Quaternion.Euler(z: Mathf.PerlinNoise(0f, num2 + 150f) * shredSwayAmount, x: num3 * shredSwayAmount, y: 0f);
         currentlyShredding.transform.rotation = Quaternion.Lerp(entryRotation, b, t2);
         if (num > 5f)
         {
             CreateShredResources();
             currentlyShredding.Kill();
             currentlyShredding = null;
             isShredding        = false;
             SetShredding(false);
         }
     }
 }