コード例 #1
0
    private bool CheckWaterInRange(ItemActionData itemActionData, ref Vector3 ptr)
    {
        ItemActionSpawnCustomVehicle.ItemActionDataSpawnCustomVehicle itemActionDataSpawnMinibike = (ItemActionSpawnCustomVehicle.ItemActionDataSpawnCustomVehicle)itemActionData;
        Ray lookRay = itemActionDataSpawnMinibike.invData.holdingEntity.GetLookRay();

        //if (Voxel.Raycast(GameManager.Instance.World, lookRay, 5f, 65536, 64, 0f))
        if (Voxel.Raycast(GameManager.Instance.World, lookRay, 10f, false, true))
        {
            ptr = Voxel.voxelRayHitInfo.hit.pos;
            Vector3 vector = new Vector3(ptr.x + 0.5f, ptr.y, ptr.z + 0.5f);

            BlockValue valor = GameManager.Instance.World.GetBlock(new Vector3i(vector));
            Block      block = Block.list[valor.type];
            if (block.GetType().IsSubclassOf(typeof(BlockLiquid)) || block.GetType() == typeof(BlockLiquidv2))
            {
                //DebugMsg("Hitting Liquid Block");
                // needs to check if there's air on top of water
                valor = GameManager.Instance.World.GetBlock(new Vector3i(vector.x, vector.y + 1, vector.z));
                block = Block.list[valor.type];
                if (valor.type == 0)
                {
                    //DebugMsg("Liquid Block has Air on top");
                    ptr = vector;
                    return(true);
                }
            }
        }
        return(false);
    }
コード例 #2
0
    private void BB(ItemActionData itemActionData)
    {
        ItemActionSpawnCustomVehicle.ItemActionDataSpawnCustomVehicle itemActionDataSpawnMinibike = (ItemActionSpawnCustomVehicle.ItemActionDataSpawnCustomVehicle)itemActionData;
        if (itemActionDataSpawnMinibike.PreviewRenderers == null || itemActionDataSpawnMinibike.PreviewRenderers.Length == 0 || itemActionDataSpawnMinibike.PreviewRenderers[0] == null)
        {
            itemActionDataSpawnMinibike.PreviewRenderers = itemActionDataSpawnMinibike.MinibikePreview.GetComponentsInChildren <Renderer>();
        }
        World world = itemActionData.invData.world;
        bool  flag  = this.UB(itemActionData, ref itemActionDataSpawnMinibike.Position) && world.CanPlaceBlockAt(itemActionDataSpawnMinibike.invData.hitInfo.hit.blockPos, world.GetGameManager().GetPersistentLocalPlayer(), true);

        if (!flag && IsCustomBoat(itemActionData))
        {
            flag = CheckWaterInRange(itemActionData, ref itemActionDataSpawnMinibike.Position);
        }

        if (itemActionDataSpawnMinibike.ValidPosition != flag)
        {
            itemActionDataSpawnMinibike.ValidPosition = flag;
            for (int i = 0; i < itemActionDataSpawnMinibike.PreviewRenderers.Length; i++)
            {
                itemActionDataSpawnMinibike.PreviewRenderers[i].material.color = ((!flag) ? new Color(2f, 0.25f, 0.25f) : new Color(0.25f, 2f, 0.25f));
            }
        }
        Quaternion localRotation = itemActionDataSpawnMinibike.MinibikePreview.localRotation;

        localRotation.eulerAngles = new Vector3(-90f, itemActionData.invData.holdingEntity.rotation.y + 90f, 0f);
        itemActionDataSpawnMinibike.MinibikePreview.localRotation = localRotation;
        itemActionDataSpawnMinibike.MinibikePreview.position      = itemActionDataSpawnMinibike.Position;
    }
コード例 #3
0
 public override void CancelAction(ItemActionData _actionData)
 {
     ItemActionSpawnCustomVehicle.ItemActionDataSpawnCustomVehicle itemActionDataSpawnMinibike = (ItemActionSpawnCustomVehicle.ItemActionDataSpawnCustomVehicle)_actionData;
     if (itemActionDataSpawnMinibike.MinibikePreview != null && itemActionDataSpawnMinibike.invData.holdingEntity is EntityPlayerLocal)
     {
         UnityEngine.Object.Destroy(itemActionDataSpawnMinibike.MinibikePreview.gameObject);
     }
 }
コード例 #4
0
 public override void OnHoldingUpdate(ItemActionData _actionData)
 {
     ItemActionSpawnCustomVehicle.ItemActionDataSpawnCustomVehicle itemActionDataSpawnMinibike = (ItemActionSpawnCustomVehicle.ItemActionDataSpawnCustomVehicle)_actionData;
     if (itemActionDataSpawnMinibike.MinibikePreview != null && itemActionDataSpawnMinibike.invData.holdingEntity is EntityPlayerLocal)
     {
         this.BB(_actionData);
     }
 }
コード例 #5
0
 public override void Cleanup(ItemActionData _data)
 {
     base.Cleanup(_data);
     ItemActionSpawnCustomVehicle.ItemActionDataSpawnCustomVehicle itemActionDataSpawnMinibike = _data as ItemActionSpawnCustomVehicle.ItemActionDataSpawnCustomVehicle;
     if (itemActionDataSpawnMinibike != null && itemActionDataSpawnMinibike.MinibikePreview != null && itemActionDataSpawnMinibike.invData != null && itemActionDataSpawnMinibike.invData.holdingEntity is EntityPlayerLocal)
     {
         UnityEngine.Object.Destroy(itemActionDataSpawnMinibike.MinibikePreview.gameObject);
     }
 }
コード例 #6
0
 public override void StartHolding(ItemActionData _actionData)
 {
     ItemActionSpawnCustomVehicle.ItemActionDataSpawnCustomVehicle itemActionDataSpawnMinibike = (ItemActionSpawnCustomVehicle.ItemActionDataSpawnCustomVehicle)_actionData;
     if (itemActionDataSpawnMinibike.MinibikePreview == null && itemActionDataSpawnMinibike.invData.holdingEntity is EntityPlayerLocal)
     {
         GameObject gameObject = (GameObject)ResourceWrapper.Load1P(itemActionDataSpawnMinibike.invData.holdingEntity.inventory.holdingItem.MeshFile);
         itemActionDataSpawnMinibike.MinibikePreview = UnityEngine.Object.Instantiate <Transform>(gameObject.transform);
         this.BB(_actionData);
     }
 }
コード例 #7
0
    private bool UB(ItemActionData itemActionData, ref Vector3 ptr)
    {
        ItemActionSpawnCustomVehicle.ItemActionDataSpawnCustomVehicle itemActionDataSpawnMinibike = (ItemActionSpawnCustomVehicle.ItemActionDataSpawnCustomVehicle)itemActionData;
        Ray lookRay = itemActionDataSpawnMinibike.invData.holdingEntity.GetLookRay();

        if (Voxel.Raycast(GameManager.Instance.World, lookRay, 5f, 65536, 64, 0f))
        {
            ptr = Voxel.voxelRayHitInfo.hit.pos;
            Vector3 vector = new Vector3(ptr.x + 0.5f, ptr.y, ptr.z + 0.5f);
            return(GameManager.Instance.World.GetBlock(new Vector3i(vector)).type == 0 && GameManager.Instance.World.GetBlock(new Vector3i(vector + Vector3.down)).type != 0 && GameManager.Instance.World.GetBlock(new Vector3i(vector + Vector3.up)).type == 0);
        }
        return(false);
    }
コード例 #8
0
    public override void ExecuteAction(ItemActionData _actionData, bool _bReleased)
    {
        ItemActionSpawnCustomVehicle.ItemActionDataSpawnCustomVehicle itemActionDataSpawnMinibike = (ItemActionSpawnCustomVehicle.ItemActionDataSpawnCustomVehicle)_actionData;
        if (!(_actionData.invData.holdingEntity is EntityPlayerLocal))
        {
            return;
        }
        if (!_bReleased)
        {
            return;
        }
        if (Time.time - _actionData.lastUseTime < this.Delay)
        {
            return;
        }
        if (Time.time - _actionData.lastUseTime < Constants.cBuildIntervall)
        {
            return;
        }
        if (!itemActionDataSpawnMinibike.ValidPosition)
        {
            return;
        }
        ItemInventoryData invData = _actionData.invData;

        if (this.entityId < 0)
        {
            foreach (int v in EntityClass.list.Keys)
            {
                if (EntityClass.list[v].entityClassName == this.entityToSpawn)
                {
                    this.entityId = v;
                    break;
                }
            }
            if (this.entityId == 0)
            {
                return;
            }
        }
        if (!Steam.Network.IsServer)
        {
            SingletonMonoBehaviour <ConnectionManager> .Instance.SendToServer(new NetPackageVehicleSpawn(this.entityId, itemActionDataSpawnMinibike.Position, new Vector3(0f, _actionData.invData.holdingEntity.rotation.y + 90f, 0f), invData.holdingEntity.inventory.holdingItemItemValue.Clone(), _actionData.invData.holdingEntity.entityId), true);
        }
        else
        {
            EntityVehicle entityVehicle = (EntityVehicle)EntityFactory.CreateEntity(this.entityId, itemActionDataSpawnMinibike.Position, new Vector3(0f, _actionData.invData.holdingEntity.rotation.y + 90f, 0f));
            entityVehicle.SetSpawnerSource(EnumSpawnerSource.StaticSpawner);
            Vehicle vehicle = entityVehicle.GetVehicle();
            string  tag     = "chassis";
            if (invData.holdingEntity.inventory.holdingItem != null)
            {
                tag = invData.holdingEntity.inventory.holdingItem.VehicleSlotType;
            }
            vehicle.SetPartInSlot(tag, invData.holdingEntity.inventory.holdingItemItemValue.Clone());
            vehicle.SaveVehiclePartsToInventory();
            entityVehicle.SetOwner(GamePrefs.GetString(EnumGamePrefs.PlayerId));
            GameManager.Instance.World.SpawnEntityInWorld(entityVehicle);
        }
        invData.holdingEntity.RightArmAnimationUse = true;
        GameManager.Instance.StartCoroutine(this.EB(invData, invData.holdingEntity.inventory.holdingItemIdx));
    }