コード例 #1
0
// ~~ private

// INDEXERS ~~~~~~~~~~

// ~ Static

// ~~ public

// ~~ private

// ~ Non-Static

// ~~ public

// ~~ private

// METHODS ~~~~~~~~~

// ~ Static

// ~~ public

// ~~ private

// ~ Non-Static

// ~~ public

    public static void AttachCamera(HexMap map, float hexSize)
    {
        HexGridCamera resultMono;

        _hexOuterRadius = hexSize;

        if (InstanceValidation.InstanceExists <HexGridCamera>())
        {
            resultMono = InstanceValidation.GetFirstInstance <HexGridCamera>();
            resultMono.transform.SetParent(map.transform, false);
            resultMono.TargetGrid = map;
            resultMono.enabled    = true;
            if (InstanceValidation.SingleInstanceExists <HexGridCamera>())
            {
                RootLog.Log(
                    "Single instance of camera already exists. " +
                    "Attaching instance to grid.",
                    Severity.Information,
                    "HexGridCamera"
                    );
            }
            else
            {
                RootLog.Log(
                    "Multiple instances of camera already exist. " +
                    "Attaching first instance to grid.",
                    Severity.Information,
                    "HexGridCamera"
                    );
            }
        }
        else
        {
            GameObject resultObj = new GameObject("HexGridCamera");
            resultMono = resultObj.AddComponent <HexGridCamera>();
            resultMono.transform.SetParent(map.transform, false);
            resultMono.TargetGrid = map;
            resultMono.enabled    = true;

            GameObject swivelObj = new GameObject("Swivel");
            swivelObj.SetParent(resultObj, false);
            swivelObj.transform.localRotation = Quaternion.Euler(45, 0, 0);

            resultMono.Swivel = swivelObj.transform;

            GameObject stickObj = new GameObject("Stick");
            stickObj.SetParent(swivelObj, false);
            stickObj.transform.localPosition = new Vector3(
                0, 0, -45
                );

            resultMono.Stick = stickObj.transform;

            GameObject cameraObj = new GameObject("Camera");
            cameraObj.SetParent(stickObj, false);
            cameraObj.tag = "MainCamera";
            cameraObj.transform.localRotation = Quaternion.Euler(5, 0, 0);

            Camera cameraMono = cameraObj.AddComponent <Camera>();
            cameraObj.AddComponent <PhysicsRaycaster>();
            cameraMono.nearClipPlane = 0.3f;
            cameraMono.farClipPlane  = 1000f;
            cameraMono.depth         = -1f;

            resultMono.transform.SetParent(map.transform, false);

            if (map.GridCenter)
            {
                resultMono.SetPosition(
                    map,
                    map.GridCenter.transform.position.x,
                    map.GridCenter.transform.position.z,
                    _hexOuterRadius
                    );
            }
        }
    }