void setupMarker() { /* get CoM */ if (vesselOverlays.CoMmarker == null) { gameObject.SetActive(false); throw new Exception("CoM marker is null, this shouldn't happen."); } CoM = vesselOverlays.CoMmarker.gameObject; /* init DCoM */ DCoM = (GameObject)UnityEngine.Object.Instantiate(CoM); Destroy(DCoM.GetComponent <EditorMarker_CoM> ()); /* we don't need this */ DCoM.name = "DCoM Marker"; if (DCoM.transform.childCount > 0) { /* Stock CoM doesn't have any attached objects, if there's some it means * there's a plugin doing the same thing as us. We don't want extra * objects */ for (int i = 0; i < DCoM.transform.childCount; i++) { Destroy(DCoM.transform.GetChild(i).gameObject); } } /* init ACoM */ ACoM = (GameObject)UnityEngine.Object.Instantiate(DCoM); ACoM.name = "ACoM Marker"; referenceDict[MarkerType.CoM] = CoM; referenceDict[MarkerType.DCoM] = DCoM; referenceDict[MarkerType.ACoM] = ACoM; /* CoM setup, replace stock component with our own */ CoM_Marker comMarker = CoM.AddComponent <CoM_Marker> (); comMarker.posMarkerObject = vesselOverlays.CoMmarker.posMarkerObject; Destroy(vesselOverlays.CoMmarker); vesselOverlays.CoMmarker = comMarker; /* setup DCoM */ DCoM_Marker dcomMarker = DCoM.AddComponent <DCoM_Marker> (); /* we do need this */ dcomMarker.posMarkerObject = DCoM; /* setup ACoM */ var acomMarker = ACoM.AddComponent <Average_Marker> (); acomMarker.posMarkerObject = ACoM; acomMarker.CoM1 = comMarker; acomMarker.CoM2 = dcomMarker; GameObject obj = new GameObject("Vessel Forces Object"); obj.layer = CoM.layer; vesselForces = obj.AddComponent <MarkerForces> (); SetReferenceMarker(referenceMarker); /* scaling for CoL and CoT markers */ vesselOverlays.CoLmarker.gameObject.AddComponent <MarkerScaler> (); vesselOverlays.CoTmarker.gameObject.AddComponent <MarkerScaler> (); /* attach our method to the CoM toggle button */ vesselOverlays.toggleCoMbtn.AddValueChangedDelegate(delegate { CoMButtonClick(); }); }
public DCoM_Marker() { instance = this; }