// retourne un nouveau polygone correspondant a un contour du polygone polygon // calcule a partir de quantity public static Polygon GetOutlinedPolygon(Polygon polygon, float quantity) { Point2Data [] pointsData = new Point2Data[polygon.GetPoints ().Count]; polygon.CopyPoint2DataTo (pointsData); for (int pIndex = 0; pIndex < pointsData.Length; ++pIndex) { Point2 pt2 = polygon.GetPoints ()[pIndex]; Vector2 position = pointsData[pIndex].position; position = position + pt2.GetCalculatedNormal () * quantity; pointsData[pIndex].position = position; } return new Polygon (pointsData); }
public IEnumerator Generate(Polygon polygon) { GameObject pool = _poolGen.GetParentGameObject (); if (_isLoading) { // lors de la copie, on attend le frame suivante // pour que la copie soit complete _isLoading = false; yield return new WaitForEndOfFrame(); } // on conserve les donnees des Function_hideObject de la plage et du Function_PoolInitializer // avant de les detruire et de les reaffecter Function_hideObject [] hiders = pool.GetComponents<Function_hideObject> (); Function_hideObject hider = hiders[0].id == 0 ? hiders[0] : hiders[1]; ArrayList hiderConfig = hider.getConfig (); if (hider != null) { Destroy (hider); } Function_hideObject rimHider = hiders[0].id == 1 ? hiders[0] : hiders[1]; ArrayList rimHiderConfig = rimHider.getConfig (); if (rimHider != null) { Destroy (rimHider); } Function_PoolInitializer initializer = pool.GetComponent <Function_PoolInitializer> (); ArrayList initializerConfig = initializer.getConfig (); if (initializer != null) { if(pool.transform.FindChild ("muret")) { GameObject lowWall = pool.transform.FindChild ("muret").gameObject; if(lowWall) { Destroy (lowWall); } } Transform sidewalk = pool.transform.FindChild ("plage"); if(sidewalk) { Destroy (sidewalk.GetComponent<AABBOutlineResizer> ()); } Destroy (initializer); } // _polygon = polygon.GetMirrorX(); _polygon = polygon; List<Point2Data> tpsList = new List<Point2Data>(); foreach(Point2Data p2d in _polygon._pointsData) { tpsList.Add(p2d); } pointsData = new Point2Data[_polygon.GetPoints ().Count]; _polygon.CopyPoint2DataTo (pointsData); _poolGen.Generate (_polygon); _rimCount = _poolGen.GetRimCount (); for(int i = 0; i < tpsList.Count; i++) { if(tpsList[i].bstairway) { pointsData[i].bstairway = true; } } // on attend la frame suivante que les Function soit prete pour les configurer // avec les valeurs sauvegardées // et que les script soit supprimés yield return new WaitForEndOfFrame(); Function_hideObject addedHider = pool.AddComponent<Function_hideObject> (); addedHider._nameObjectToHide = "plage"; addedHider._strObjectToHide = "plage"; addedHider.setConfig (hiderConfig); Function_hideObject addedRimHider = gameObject.AddComponent<Function_hideObject> (); addedRimHider.id = 1; addedRimHider._nameObjectToHide = "margelle"; addedRimHider._strObjectToHide = "margelle"; addedRimHider.setConfig (rimHiderConfig); addedRimHider.SetObjectToHide (_poolGen.GetRimObjects ()); Function_PoolInitializer addedInitializer = pool.AddComponent<Function_PoolInitializer> (); addedInitializer.setConfig (initializerConfig); // mise a jour des Functions pool.GetComponent ("ObjData").SendMessage ("updateSpecFcns"); gameObject.GetComponent<DesignerDesjoyaux>().blockStairway = false; }
void Awake() { transform.parent = GameObject.Find ("MainNode").transform; transform.localScale = Vector3.one; goParent3DPosition = new GameObject(); //goParent3DPosition.transform.parent = GameObject.Find ("MainNode").transform; goParent3DPosition.name = "3Dposition_" + name; goBloc = GameObject.Instantiate(Resources.Load("GRI181")) as GameObject; goBloc.transform.parent = goParent3DPosition.transform; goBloc.GetComponent<Renderer>().enabled = false; goBloc.name = "GRI181"; foreach(Transform child in goBloc.transform) { child.gameObject.layer = 14; // underwater if(child.GetComponent<Renderer>()) { child.GetComponent<Renderer>().enabled = false; } } _poolGen = new PoolGenerator (gameObject); if (pointsData.Length > 0) { // pointsData = MirrorX(pointsData); _polygon = new Polygon (pointsData); if (!_IsGenerated) { _IsGenerated = true; _pointsDataBackup = new Point2Data[pointsData.Length]; _polygon.CopyPoint2DataTo (_pointsDataBackup); _poolGen.Generate (_polygon); _rimCount = _poolGen.GetRimCount (); DesignerDesjoyaux fb = gameObject.AddComponent<DesignerDesjoyaux> (); fb.gofiltrationBlock = goBloc; fb.poolDesigner = this; Function_hideObject sidewalkHider = gameObject.AddComponent<Function_hideObject> (); sidewalkHider._nameObjectToHide = "plage"; sidewalkHider._strObjectToHide = "plage"; Function_hideObject rimHider = gameObject.AddComponent<Function_hideObject> (); rimHider.id = 1; rimHider._nameObjectToHide = "margelle"; rimHider._strObjectToHide = "margelle"; rimHider._hide = false; rimHider.SetObjectToHide (_poolGen.GetRimObjects ()); gameObject.AddComponent<Function_PoolInitializer> (); //StartCoroutine (Generate ()); } else { // copie _isLoading = true; StartCoroutine (Generate (_polygon)); } } else { _IsGenerated = true; _polygon = new Polygon (); DesignerDesjoyaux fb = gameObject.AddComponent<DesignerDesjoyaux> (); fb.gofiltrationBlock = goBloc; fb.poolDesigner = this; Function_hideObject sidewalkHide = gameObject.AddComponent<Function_hideObject> (); sidewalkHide._nameObjectToHide = "plage"; sidewalkHide._strObjectToHide = "plage"; Function_hideObject rimHider = gameObject.AddComponent<Function_hideObject> (); rimHider.id = 1; rimHider._nameObjectToHide = "margelle"; rimHider._strObjectToHide = "margelle"; rimHider._hide = false; rimHider.SetObjectToHide (_poolGen.GetRimObjects ()); gameObject.AddComponent<Function_PoolInitializer> (); //StartCoroutine (WaitForGameobjectReadyToDoAction ()); } init3DPoints(); nextCurrentStairwayID(pointsData); savedPointsData = new Point2Data[pointsData.Length]; for(int j = 0; j < pointsData.Length; j++) { savedPointsData[j] = pointsData[j]; } if(listDoubleV3.Count > 0) { idDoubleV3 = 0; v3positionBloc = listDoubleV3[0].v3start; goBloc.transform.position = v3positionBloc; moveBloc(); } else { idDoubleV3 = -1; } }
void Awake() { transform.parent = GameObject.Find ("MainNode").transform; if(_uiName != null) { setUI ((FunctionUI_OS3D)GameObject.Find ("MainScene").GetComponent ("PoolUIv2")); // setUI ((FunctionUI_OS3D)GameObject.Find ("MainScene").GetComponent ("PoolDesignerUI")); } transform.localScale = Vector3.one; _poolGen = new PoolGenerator (gameObject); if (pointsData.Length > 0) { // pointsData = MirrorX(pointsData); _polygon = new Polygon (pointsData); if (!_IsGenerated) { _IsGenerated = true; _pointsDataBackup = new Point2Data[pointsData.Length]; _polygon.CopyPoint2DataTo (_pointsDataBackup); _poolGen.Generate (_polygon); _rimCount = _poolGen.GetRimCount (); Function_hideObject sidewalkHider = gameObject.AddComponent<Function_hideObject> (); sidewalkHider._nameObjectToHide = "plage"; sidewalkHider._strObjectToHide = "plage"; Function_hideObject rimHider = gameObject.AddComponent<Function_hideObject> (); rimHider.id = 1; rimHider._nameObjectToHide = "margelle"; rimHider._strObjectToHide = "margelle"; rimHider._hide = false; rimHider.SetObjectToHide (_poolGen.GetRimObjects ()); gameObject.AddComponent<Function_PoolInitializer> (); //StartCoroutine (Generate ()); } else { // copie _isLoading = true; StartCoroutine (Generate (_polygon)); } } else { _IsGenerated = true; _polygon = new Polygon (); Function_hideObject sidewalkHide = gameObject.AddComponent<Function_hideObject> (); sidewalkHide._nameObjectToHide = "plage"; sidewalkHide._strObjectToHide = "plage"; Function_hideObject rimHider = gameObject.AddComponent<Function_hideObject> (); rimHider.id = 1; rimHider._nameObjectToHide = "margelle"; rimHider._strObjectToHide = "margelle"; rimHider._hide = false; rimHider.SetObjectToHide (_poolGen.GetRimObjects ()); gameObject.AddComponent<Function_PoolInitializer> (); StartCoroutine (WaitForGameobjectReadyToDoAction ()); } //gameObject.GetComponent ("ObjData").SendMessage ("updateSpecFcns"); //transform.localPosition = currentPosition; }