Example #1
0
        // multiplayer

        public static void DestroyBlockMultiplayer(BlockInfo voxelInfo, NetworkPlayer sender)
        { // received from server, don't use directly
            GameObject  voxelObject = Instantiate(getVoxelGameObject(voxelInfo.GetVoxel())) as GameObject;
            VoxelEvents events      = voxelObject.GetComponent <VoxelEvents>();

            if (events != null)
            {
                events.OnBlockDestroy(voxelInfo);
                events.OnBlockDestroyMultiplayer(voxelInfo, sender);
            }
            voxelInfo.chunk.SetVoxel(voxelInfo.index, 0, true);
            Destroy(voxelObject);
        }
Example #2
0
        public static void PlaceBlockMultiplayer(BlockInfo voxelInfo, ushort data, NetworkPlayer sender)
        { // received from server, don't use directly
            voxelInfo.chunk.SetVoxel(voxelInfo.index, data, true);

            GameObject  voxelObject = Instantiate(getVoxelGameObject(data)) as GameObject;
            VoxelEvents events      = voxelObject.GetComponent <VoxelEvents>();

            if (events != null)
            {
                events.OnBlockPlace(voxelInfo);
                events.OnBlockPlaceMultiplayer(voxelInfo, sender);
            }
            Destroy(voxelObject);
        }
        public void Update()
        {
            // check if chunk is not null
            GameObject chunkObject = MasterEngine.getInstance().PositionToChunk(transform.position);

            if (chunkObject == null)
            {
                return;
            }

            // get the voxelInfo from the transform's position
            Chunk     chunk      = chunkObject.GetComponent <Chunk>();
            Index     voxelIndex = chunk.PositionToVoxelIndex(transform.position);
            BlockInfo voxelInfo  = new BlockInfo(voxelIndex, chunk);

            // create a local copy of the collision voxel so we can call functions on it
            GameObject voxelObject = Instantiate(MasterEngine.getInstance().GetVoxelGameObject(voxelInfo.GetVoxel())) as GameObject;

            VoxelEvents events = voxelObject.GetComponent <VoxelEvents>();

            if (events != null)
            {
                // OnEnter
                if (chunk != LastChunk || voxelIndex.IsEqual(LastIndex) == false)
                {
                    events.OnBlockEnter(this.gameObject, voxelInfo);
                }

                // OnStay
                else
                {
                    events.OnBlockStay(this.gameObject, voxelInfo);
                }
            }

            LastChunk = chunk;
            LastIndex = voxelIndex;

            Destroy(voxelObject);
        }