void initMarkers() { /* get CoM */ if (vesselOverlays.CoMmarker == null) { throw new Exception("CoM marker is null, this shouldn't happen."); } CoM = vesselOverlays.CoMmarker.gameObject; protoMarker = (GameObject)UnityEngine.Object.Instantiate(CoM); Destroy(protoMarker.GetComponent <EditorMarker_CoM> ()); /* we don't need this */ protoMarker.name = "Marker Prototype"; if (protoMarker.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 < protoMarker.transform.childCount; i++) { Destroy(protoMarker.transform.GetChild(i).gameObject); } } /* init DCoM */ DCoM = (GameObject)UnityEngine.Object.Instantiate(protoMarker); DCoM.name = "DCoM Marker"; /* init ACoM */ ACoM = (GameObject)UnityEngine.Object.Instantiate(protoMarker); ACoM.name = "ACoM Marker"; /* init CoD */ CoD = (GameObject)UnityEngine.Object.Instantiate(protoMarker); referenceDict [MarkerType.CoM] = CoM; referenceDict [MarkerType.DCoM] = DCoM; referenceDict [MarkerType.ACoM] = ACoM; /* CoM setup, replace stock component with our own */ CoMMarker comMarker = CoM.AddComponent <CoMMarker> (); comMarker.posMarkerObject = vesselOverlays.CoMmarker.posMarkerObject; Destroy(vesselOverlays.CoMmarker); vesselOverlays.CoMmarker = comMarker; WetMass = comMarker; /* setup DCoM */ DCoMMarker dcomMarker = DCoM.AddComponent <DCoMMarker> (); /* we do need this */ dcomMarker.posMarkerObject = DCoM; DryMass = dcomMarker; /* setup ACoM */ var acomMarker = ACoM.AddComponent <AverageMarker> (); acomMarker.posMarkerObject = ACoM; acomMarker.CoM1 = comMarker; acomMarker.CoM2 = dcomMarker; /* setup CoD */ var codMarker = CoD.AddComponent <CoDMarker> (); codMarker.posMarkerObject = CoD; CoD.SetActive(false); /* attach our method to the CoM toggle button */ vesselOverlays.toggleCoMbtn.onClick.AddListener(delegate { comButtonClick(); }); try { /* scaling for CoL and CoT markers */ vesselOverlays.CoLmarker.gameObject.AddComponent <MarkerScaler> (); vesselOverlays.CoTmarker.gameObject.AddComponent <MarkerScaler> (); } catch (NullReferenceException) { Debug.LogWarning("CoL/CoT marker is null, this shouldn't happen."); } }
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"; /* init CoD */ CoD = (GameObject)UnityEngine.Object.Instantiate(DCoM); referenceDict[MarkerType.CoM] = CoM; referenceDict[MarkerType.DCoM] = DCoM; referenceDict[MarkerType.ACoM] = ACoM; /* CoM setup, replace stock component with our own */ CoMMarker comMarker = CoM.AddComponent <CoMMarker> (); comMarker.posMarkerObject = vesselOverlays.CoMmarker.posMarkerObject; Destroy(vesselOverlays.CoMmarker); vesselOverlays.CoMmarker = comMarker; /* setup DCoM */ DCoMMarker dcomMarker = DCoM.AddComponent <DCoMMarker> (); /* we do need this */ dcomMarker.posMarkerObject = DCoM; /* setup ACoM */ var acomMarker = ACoM.AddComponent <AverageMarker> (); acomMarker.posMarkerObject = ACoM; acomMarker.CoM1 = comMarker; acomMarker.CoM2 = dcomMarker; /* setup CoD */ var codMarker = CoD.AddComponent <CoDMarker> (); codMarker.posMarkerObject = CoD; CoD.SetActive(false); var obj = new GameObject("Vessel Forces Object"); obj.layer = CoM.layer; vesselForces = obj.AddComponent <MarkerForces> (); SetReferenceMarker(ReferenceType); /* 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(); }); }