// ~~ 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 ); } } }