예제 #1
0
    public bool[,,] TransformDataType(List <GameObject> targetBlockList, int size)
    {
        bool[,,] targetBlockExist = new bool[size, size, size];
        for (int x = 0; x < size; x++)
        {
            for (int y = 0; y < size; y++)
            {
                for (int z = 0; z < size; z++)
                {
                    targetBlockExist[x, y, z] = false;
                }
            }
        }

        foreach (GameObject targetblock in targetBlockList)
        {
            if (targetblock.gameObject != null)
            {
                int tempX = 0;
                int tempY = 0;
                int tempZ = 0;
                RaycastForFindingRaycastReceiver raycastForFindingRaycastReceiverScript = targetblock.gameObject.GetComponent <RaycastForFindingRaycastReceiver>();
                Dictionary <string, string>      hitRaycastReceiver = raycastForFindingRaycastReceiverScript.raycastReceiverChecker();
                for (int x = 0; x < size; x++)
                {
                    if (hitRaycastReceiver["X"] == "RaycastReceiverX" + x.ToString())
                    {
                        tempX = x;
                        break;
                    }
                }
                for (int y = 0; y < size; y++)
                {
                    if (hitRaycastReceiver["Y"] == "RaycastReceiverY" + y.ToString())
                    {
                        tempY = y;
                        break;
                    }
                }
                for (int z = 0; z < size; z++)
                {
                    if (hitRaycastReceiver["Z"] == "RaycastReceiverZ" + z.ToString())
                    {
                        tempZ = z;
                        break;
                    }
                }
                targetBlockExist[tempX, tempY, tempZ] = true;
            }
        }
        return(targetBlockExist);
    }
예제 #2
0
    public void CheckSimilarity()
    {
        //IsNowExist초기화
        for (int x = 0; x < lengthX; x++)
        {
            for (int y = 0; y < lengthY; y++)
            {
                for (int z = 0; z < lengthZ; z++)
                {
                    IsNowExist[x, y, z] = false;
                }
            }
        }

        List <Dictionary <string, string> > targetPosition = new List <Dictionary <string, string> >();

        Transform[] targetBlocks = targetBlockMother.GetComponentsInChildren <Transform>();
        Debug.Log(targetBlocks[2]);
        for (int i = 0; i < targetBlocks.Length; i++)
        {
            RaycastForFindingRaycastReceiver targetBlockRaycastReceiverScript = targetBlocks[i].gameObject.GetComponent <RaycastForFindingRaycastReceiver>();
            Dictionary <string, string>      hitRaycastReceiver
                = targetBlockRaycastReceiverScript.raycastReceiverChecker();
            targetPosition.Add(hitRaycastReceiver);
        }

        for (int x = 0; x < lengthX; x++)
        {
            for (int y = 0; y < lengthY; y++)
            {
                for (int z = 0; z < lengthZ; z++)
                {
                    for (int i = 0; i < targetPosition.Count; i++)
                    {
                        if (targetPosition[i]["X"] == "RaycastReceiverX" + x.ToString() && targetPosition[i]["Y"] == "RaycastReceiverY" + y.ToString() && targetPosition[i]["Z"] == "RaycastReceiverZ" + z.ToString())
                        {
                            IsNowExist[x, y, z] = true;
                        }
                    }
                }
            }
        }


        IsMission = missionBlockGenerator.IsExist;
        for (int x = 0; x < size; x++)
        {
            for (int y = 0; y < size; y++)
            {
                for (int z = 0; z < size; z++)
                {
                    if (IsNowExist[x, y, z] != IsMission[x, y, z])
                    {
                        NumberOfSameBlock++;
                    }
                }
            }
        }

        Similarity = NumberOfSameBlock / NumberOfAllBlock;
        Debug.Log(Similarity);
    }
    public IEnumerator MakeObjectCheckerBox(int size)
    {
        boxShouldNotExist = new bool[size, size, size];
        List <GameObject> checkColliderList = new List <GameObject>();

        objectCheckerStartPosition = motherStatue.transform.position - new Vector3((size - 1) / 2f, (size - 1) / 2f, (size - 1) / 2f);

        for (int x = 0; x < size; x++)
        {
            for (int y = 0; y < size; y++)
            {
                for (int z = 0; z < size; z++)
                {
                    var newCheckCollider = Instantiate(checkCollider, objectCheckerStartPosition + new Vector3(x, y, z), Quaternion.identity);
                    checkColliderList.Add(newCheckCollider.gameObject);
                    boxShouldNotExist[x, y, z] = true;
                }
            }
        }

        yield return(null);

        yield return(null);

        foreach (GameObject checkCollider in checkColliderList)
        {
            if (checkCollider.gameObject != null)
            {
                int tempX = 0;
                int tempY = 0;
                int tempZ = 0;
                RaycastForFindingRaycastReceiver raycastForFindingRaycastReceiverScript = checkCollider.gameObject.GetComponent <RaycastForFindingRaycastReceiver>();
                Dictionary <string, string>      hitRaycastReceiver = raycastForFindingRaycastReceiverScript.raycastReceiverChecker();
                for (int x = 0; x < size; x++)
                {
                    if (hitRaycastReceiver["X"] == "RaycastReceiverX" + x.ToString())
                    {
                        tempX = x;
                        break;
                    }
                }
                for (int y = 0; y < size; y++)
                {
                    if (hitRaycastReceiver["Y"] == "RaycastReceiverY" + y.ToString())
                    {
                        tempY = y;
                        break;
                    }
                }
                for (int z = 0; z < size; z++)
                {
                    if (hitRaycastReceiver["Z"] == "RaycastReceiverZ" + z.ToString())
                    {
                        tempZ = z;
                        break;
                    }
                }
                boxShouldNotExist[tempX, tempY, tempZ] = false;
            }
        }
    }