/*void OnDrawGizmosSelected() { Gizmos.color = Color.yellow; if(_transforms.Count>0) Gizmos.DrawWireCube(_center, _extents*2); } */ public void DoAction() { Transform jupe = transform.Find("jupe"); if (jupe!=null) { //Bounds b = getMeshBounds(jupe); Bounds b = jupe.GetComponent<Renderer>().bounds;//getMeshBounds(child); _zUpValue = b.extents.y*2; _extents = b.extents; _center = b.center; } else { Transform paroi = transform.Find("paroi"); if (paroi!=null) { Bounds b = paroi.GetComponent<Renderer>().bounds; _zUpValue = b.extents.y*2; _extents = b.extents; _center = b.center; } } Vector3 vectDelta = new Vector3(); switch (_lastPosition) { case PositionSpa.AboveGround : for (int i=0; i<_transforms.Count;i++) { Transform child = (Transform)_transforms[i]; vectDelta.y = /*child.localPosition.z*/ - _zUpValue/2; child.Translate(vectDelta); } _lastPosition=PositionSpa.HalfBurried; for (int i=0; i<_transformsNoPos.Count;i++) { ((Transform)_transformsNoPos[i]).gameObject.layer = 2; } break; case PositionSpa.HalfBurried : for (int i=0; i<_transforms.Count;i++) { Transform child = (Transform)_transforms[i]; vectDelta.y = /*child.localPosition.z*/ - _zUpValue/2; child.Translate(vectDelta); } _lastPosition=PositionSpa.Burried; for (int i=0; i<_transformsNoPos.Count;i++) { ((Transform)_transformsNoPos[i]).gameObject.layer = 2; } break; case PositionSpa.Burried : for (int i=0; i<_transforms.Count;i++) { Transform child = (Transform)_transforms[i]; vectDelta.y = /*child.localPosition.z*/ + _zUpValue; child.Translate(vectDelta); } _lastPosition=PositionSpa.AboveGround; for (int i=0; i<_transformsNoPos.Count;i++) { ((Transform)_transformsNoPos[i]).gameObject.layer = 0; } break; default : break; } _position = _lastPosition; }
public void load(BinaryReader buf) { //start _transforms = new ArrayList(); _zInits = new ArrayList(); foreach (Transform child in transform) { if(child.name.CompareTo(_maskName)==0) continue; if(child.name.CompareTo(_plageName)==0) continue; if(child.name.CompareTo(_occlusionName)==0) continue; if(child.name.CompareTo(_skirtName)==0) { //Bounds b = getMeshBounds(child); Bounds b = child.GetComponent<Renderer>().bounds;//getMeshBounds(child); _zUpValue = b.extents.y*2; _extents = b.extents; } if(child.name.CompareTo(_paroisName)==0) { //Bounds b = getMeshBounds(child); Bounds b = child.GetComponent<Renderer>().bounds;//getMeshBounds(child); _zUpValue = b.extents.y*2; _extents = b.extents; } _transforms.Add(child); _zInits.Add(child.localPosition.y); //Debug.Log ("child : "+child.name); } //load _lastPosition = PositionSpa.HalfBurried; _position = (PositionSpa)buf.ReadInt32(); // Debug.Log("LastPosition "+_lastPosition); Init (true); //DoAction(); }
public void setConfig(ArrayList config) { _position = (PositionSpa)config[0]; _lastPosition = PositionSpa.HalfBurried; Init (true); }
public void Init(bool fromload) { Vector3 vectDelta = new Vector3 (); if (_lastPosition != _position) { Transform jupe = transform.Find ("jupe"); bool copy = false; if (jupe != null) { // Bounds b = getMeshBounds (jupe); Bounds b = jupe.GetComponent<Renderer>().bounds;//getMeshBounds(child); _zUpValue = b.extents.y * 2 ;// 2; _extents = b.extents; _center = b.center; if(jupe.position.y<-_zUpValue/3.0f) copy=true; } else { Transform paroi = transform.Find ("paroi"); if (paroi != null) { Bounds b = paroi.GetComponent<Renderer>().bounds; _zUpValue = b.extents.y * 2 ; _extents = b.extents; _center = b.center; if(paroi.position.y<-_zUpValue/3.0f) copy=true; } } if((copy==false)|| (fromload==true)) { switch (_position) { case PositionSpa.AboveGround: switch (_lastPosition) { case PositionSpa.HalfBurried: for (int i = 0; i < _transforms.Count; i++) { Transform child = (Transform)_transforms[i]; vectDelta.y = +_zUpValue / 2; child.Translate (vectDelta); } _lastPosition = PositionSpa.AboveGround; break; case PositionSpa.Burried: for (int i = 0; i < _transforms.Count; i++) { Transform child = (Transform)_transforms[i]; vectDelta.y = +_zUpValue; child.Translate (vectDelta); } _lastPosition = PositionSpa.AboveGround; break; default: break; } for (int i=0; i<_transformsNoPos.Count;i++) { ((Transform)_transformsNoPos[i]).gameObject.layer = 0; } break; case PositionSpa.HalfBurried: switch (_lastPosition) { case PositionSpa.AboveGround: for (int i = 0; i < _transforms.Count; i++) { Transform child = (Transform)_transforms[i]; vectDelta.y = -_zUpValue / 2; child.Translate (vectDelta); } _lastPosition = PositionSpa.HalfBurried; break; case PositionSpa.Burried: for (int i = 0; i < _transforms.Count; i++) { Transform child = (Transform)_transforms[i]; vectDelta.y = +_zUpValue/2; child.Translate (vectDelta); } _lastPosition = PositionSpa.HalfBurried; break; default: break; } for (int i=0; i<_transformsNoPos.Count;i++) { ((Transform)_transformsNoPos[i]).gameObject.layer = 2; } break; case PositionSpa.Burried: switch (_lastPosition) { case PositionSpa.HalfBurried: for (int i = 0; i < _transforms.Count; i++) { Transform child = (Transform)_transforms[i]; vectDelta.y = -_zUpValue / 2; child.Translate (vectDelta); } _lastPosition = PositionSpa.Burried; break; case PositionSpa.AboveGround: for (int i = 0; i < _transforms.Count; i++) { Transform child = (Transform)_transforms[i]; vectDelta.y = -_zUpValue; child.Translate (vectDelta); } _lastPosition = PositionSpa.Burried; break; default: break; } for (int i=0; i<_transformsNoPos.Count;i++) { ((Transform)_transformsNoPos[i]).gameObject.layer = 2; } break; default: break; } } } _lastPosition = _position; }