package Ġcom . jetbrains . r ider . plugins . unity . run . configurations Ċ Ċ import Ġcom . intellij . execution . Executor Ċ import Ġcom . intellij . execution . Program Runner Util Ċ import Ġcom . intellij . execution . configurations . Run Profile Ċ import Ġcom . intellij . execution . configurations . Run Profile State Ċ import Ġcom . intellij . execution . exec utors . Default Debug Executor Ċ import Ġcom . intellij . execution . runners . Execution Environment Ċ import Ġcom . intellij . execution . runners . Execution Environment Builder Ċ import Ġcom . intellij . icons . All Icons Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . jetbrains . rd . util . lifetime . Lifetime Ċ import Ġcom . jetbrains . r ider . debugger . Debugger Helper Host Ċ import Ġcom . jetbrains . r ider . debugger . IR ider Debug gable Ċ import Ġcom . jetbrains . r ider . plugins . unity . run .* Ċ import Ġcom . jetbrains . r ider . plugins . unity . util . Unity Installation Finder Ċ import Ġcom . jetbrains . r ider . run . I Debugger Output Listener Ċ import Ġcom . jetbrains . r ider . run . Worker Run Info Ċ import Ġcom . jetbrains . r ider . run . configurations . remote . Mono Connect Remote Profile State Ċ import Ġcom . jetbrains . r ider . run . configurations . remote . Remote Configuration Ċ import Ġorg . jetbrains . concurrency . Promise Ċ import Ġjavax . swing . Icon Ċ Ċ fun Ġattach To Unity Process ( project : ĠProject , Ġprocess : ĠUnity Process ) Ġ{ ĊĠĠĠ Ġval Ġrun Profile Ġ= ĠUnity Process Run Profile ( project , Ġprocess ) ĊĠĠĠ Ġval Ġenvironment Ġ= ĠExecution Environment Builder ĊĠĠĠĠĠĠĠ Ġ. create ( project , ĠDefault Debug Executor . get Debug Executor Instance (), Ġrun Profile ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ ĠProgram Runner Util . execute Configuration ( environment , Ġfalse , Ġtrue ) Ċ } Ċ Ċ class ĠUnity Process Run Profile ( private Ġval Ġproject : ĠProject , Ġprivate Ġval Ġprocess : ĠUnity Process ) ĊĠĠĠ Ġ: ĠRun Profile , ĠIR ider Debug gable Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠgetName (): ĠString Ġ= Ġprocess . displayName ĊĠĠĠ Ġoverride Ġfun Ġget Icon (): ĠIcon Ġ= ĠAll Icons . Actions . Start Debugger ĊĊĠĠĠ Ġoverride Ġfun ĠgetState ( executor : ĠExecutor , Ġenvironment : ĠExecution Environment ): ĠRun Profile State ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( process ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUnity I os Usb Process Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġneed Ġto Ġtell Ġthe Ġdebugger Ġwhich Ġport Ġto Ġconnect Ġto . ĠThe Ġproxy Ġwill Ġopen Ġthis Ġport Ġand Ġforward ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtravel Ġto Ġthe Ġon - device Ġport Ġof Ġ 5 6 0 0 0 . ĠThese Ġport Ġnumbers Ġare Ġhardcoded , Ġand Ġfollow Ġwhat ĠUnity Ġdoes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġin Ġtheir Ġdebugger Ġplugins . ĠThere Ġis Ġa Ġchance Ġthat Ġthe Ġlocal Ġ 1 2 0 0 0 Ġport Ġis Ġin Ġuse , Ġbut Ġthere 's Ġnot ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmuch Ġwe Ġcan Ġdo Ġabout Ġthat Ġ- Ġwe Ġtell Ġthe Ġproxy Ġboth Ġport Ġnumbers Ġand Ġit Ġtries Ġto Ġset Ġthings Ġup . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUnity Attach I os Usb Profile State ( project , ĠMy Remote Configuration (" 1 2 7 . 0 . 0 . 1 ", Ġ 1 2 0 0 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenvironment , Ġprocess . displayName , Ġprocess . deviceId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUnity Remote Connection Details Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUnity Attach Profile State ( My Remote Configuration ( process . host , Ġprocess . port ), Ġenvironment , Ġprocess . displayName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Ġis ĠUnity Editor Ġ|| Ġprocess Ġis ĠUnity Editor Helper ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠMy Remote Configuration ( override Ġvar Ġaddress : ĠString , Ġoverride Ġvar Ġport : ĠInt ) Ġ: ĠRemote Configuration Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġvar Ġlisten Port For Connections : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ Ċ open Ġclass ĠUnity Attach Profile State ( private Ġval Ġremote Configuration : ĠRemote Configuration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecution Environment : ĠExecution Environment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġtarget Name : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Editor : ĠBoolean ) ĊĠĠĠ Ġ: ĠMono Connect Remote Profile State ( remote Configuration , Ġexecution Environment ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Debugger Output Events Listener (): ĠI Debugger Output Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠUnity Debugger Output Listener ( execution Environment . project , Ġremote Configuration . address , Ġtarget Name , Ġis Editor ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠUnity Attach I os Usb Profile State ( private Ġval Ġproject : ĠProject , Ġprivate Ġval Ġremote Configuration : ĠRemote Configuration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecution Environment : ĠExecution Environment , Ġtarget Name : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval ĠdeviceId : ĠString ) ĊĠĠĠ Ġ: ĠUnity Attach Profile State ( remote Configuration , Ġexecution Environment , Ġtarget Name , Ġfalse ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Worker Run Cmd ( lifetime : ĠL ifetime , Ġhelper : ĠDebugger Helper Host , Ġport : ĠInt ): ĠPromise < Worker Run Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . create Worker Run Cmd ( lifetime , Ġhelper , Ġport ). on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠCan Ġwe Ġdo Ġthis Ġover Ġprotocol ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġcould Ġavoid Ġhard Ġcoding Ġport Ġ 1 2 0 0 0 Ġ( Unity Ġuse Ġthis Ġport Ġin Ġtheir Ġdebugger Ġplugins ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUnity Installation Finder . getInstance ( project ). getAdditional Playback En gin es Root ()?. resolve (" i OSS upport ") ?. let Ġ{ Ġproxy FolderPath Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . command Line . with Environment ("_ RID ER _ UN ITY _ IOS _ USB _ PROXY _ PATH ", Ġproxy FolderPath . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . command Line . with Environment ("_ RID ER _ UN ITY _ IOS _ USB _ DEVICE _ ID ", ĠdeviceId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . command Line . with Environment ("_ RID ER _ UN ITY _ IOS _ USB _ LOCAL _ PORT ", Ġ"${ remote Configuration . port }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }