Ejemplo n.º 1
0
    public override void InsertBetween(DynShelterModule prev, DynShelterModule next)
    {
        if(next == null && prev == null)
            return;

        if(next == null) // la facade est le dernier module
        {
        //			Debug.Log("dernier module");
            //Retourne la facade
        //			Vector3 flip = new Vector3(0,180,0);
        //			Quaternion flipQuat = new Quaternion(0,0,0,0);
        //			flipQuat.eulerAngles = flip;
        //			_moduleGameObj.transform.localRotation = flipQuat;
            foreach(Transform t in _moduleGameObj.transform)
            {
                Vector3 pos = t.localPosition;
                pos.z = -pos.z;
                t.localPosition = pos;
        //			Debug.Log("pos : "+pos);
            }

            prev.SetNextModule(this);
            this.SetPrevModule(prev);
        }
        /*else*/ //prev = null, la facade est le premier module
        if(prev == null)
        {
        //			Debug.Log("premier module");
            next.SetPrevModule(this);
            this.SetNextModule(next);
        }
    }
Ejemplo n.º 2
0
 public override void InsertBetween(DynShelterModule prev, DynShelterModule next)
 {
     if(next == null) // la facade est le dernier module
     {
         SetPos(false,prev.GetExtPos(AR).z);
         prev.SetNextModule(this);
         this.SetPrevModule(prev);
     }
     else //prev = null, la facade est le premier module
     {
         SetPos(false,next.GetExtPos(AV).z);
         next.SetPrevModule(this);
         this.SetNextModule(next);
     }
 }
Ejemplo n.º 3
0
    public override void InsertBetween(DynShelterModule prev, DynShelterModule next)
    {
        int nxtSize = next!=null? next.GetSize() : -1;
        int prvSize = prev!=null? prev.GetSize() : -1;

        float newPos = 0.0f;

        if(next != null && prev != null) //Cas d'ajout entre deux modules
        {
            next.SetPrevModule(this);
            prev.SetNextModule(this);

            SetNextPrevModule(prev,next);

            if(_size == nxtSize && next.GetModuleType() == FunctionConf_Dynshelter.ModuleType.bloc)
            {
                //Add collé au next
                next.MoveModuleV2(-_length/2,next);
                prev.MoveModuleV2(_length/2,prev);

                newPos = next.GetPos().z + (_length/2+next.GetLength()/2);
            }
            if(_size == prvSize && prev.GetModuleType() == FunctionConf_Dynshelter.ModuleType.bloc)
            {
                //Add collé au prev
                if(_size != nxtSize)
                {
                    next.MoveModuleV2(-_length/2,next);
                    prev.MoveModuleV2(_length/2,prev);
                }

                newPos = prev.GetPos().z - (_length/2+prev.GetLength()/2);
            }
            if(_size != nxtSize && _size != prvSize)
            {
                //add a cheval
                float space = Vector3.Distance(prev.GetPos(),next.GetPos());
                if(space > _length)
                {
                    newPos = ((prev.GetPos() + next.GetPos()).z)/2;
                }
                else
                {
                    float off7 = (_length - space)/2;
                    next.MoveModuleV2(-off7,next);
                    prev.MoveModuleV2(off7,prev);

                    newPos = (prev.GetPos().z + next.GetPos().z)/2;
                }
            }
        }
        else //(next == null || prev == null) // Cas d'ajout aux extremites (1er ou dernier)
        {
            if(next !=null)
            {
                next.SetPrevModule(this);
                SetNextModule(next);

                if(_size == nxtSize)
                {
                    //Add collé au next
                    newPos = next.GetPos().z + (_length/2 + next.GetLength()/2);
                }
                else
                {
                    //Add collé au next ou a cheval si pas la place
        //					newPos = next.GetExtPos(AV).z;
                    newPos = /*next.GetPos().z + */next.GetIntPos(AV).z - GetIntPos(AR).z;
                }
            }
            else//(prev != null)
            {
                prev.SetNextModule(this);
                SetPrevModule(prev);

                if(_size == prvSize)
                {
                    //Add collé au prev
                    newPos = prev.GetPos().z - (_length/2 + prev.GetLength()/2);
                }
                else
                {
                    //Add collé au prev ou a cheval si pas la place
        //					newPos = prev.GetExtPos(AR).z;
                    newPos = /*prev.GetPos().z + */prev.GetIntPos(AR).z - GetIntPos(AV).z;
                }
            }
        }

        //Applying
        SetPos(false,newPos);
    }
Ejemplo n.º 4
0
    public override void InsertBetween(DynShelterModule prev, DynShelterModule next)
    {
        int nxtSize = next!=null? next.GetSize() : -1;
        int prvSize = prev!=null? prev.GetSize() : -1;

        float newPos = 0.0f;
        float off7 = 0.0f;
        if(next != null && prev != null) //Cas d'ajout entre deux modules
        {
            //--vv--configuration des modules--vv--
            if(next.GetModuleType() != FunctionConf_Dynshelter.ModuleType.bloc)
            {
                _last = this;
            }
            next.SetPrevModule(this);

            if(prev.GetModuleType() != FunctionConf_Dynshelter.ModuleType.bloc)
            {
                _first = this;
            }
            prev.SetNextModule(this);

        //			SetNextPrevModule(prev,next);
            SetPrevModule(prev);
            SetNextModule(next);

            WhoIs(true);
            WhoIs(false);

            //--vv--Placement--vv--
            if(_size == nxtSize && (_size != prvSize || prev.GetModuleType() != FunctionConf_Dynshelter.ModuleType.bloc)) //Le suivant est de la mm taille mais pas le précedent
            {
                //Add collé au next
                newPos = next.GetPos().z;
                off7 = -_length;
                if(next.GetType() == GetType())
                    off7 += _AvArSize;//TAILLE DU MONTANT

                DynShelterModule nxt = next;
                while(nxt != null)
                {
                    nxt.SetPos(true,off7);
                    nxt = nxt.GetNextModule();
                }
            }
            else if(_size == prvSize && (_size != nxtSize || next.GetModuleType() != FunctionConf_Dynshelter.ModuleType.bloc)) //le précedent est de la meme taille mais pas le suivant
            {
                //Add collé au prev
                newPos = prev.GetPos().z;
                off7 = _length;
                if(prev.GetType() == GetType())
                    off7 -= ((DynShelterMultiBloc)prev).GetAvArSize();//TAILLE DU MONTANT

                DynShelterModule prv = prev;
                while(prv != null)
                {
                    prv.SetPos(true,off7);
                    prv = prv.GetPrevModule();
                }
            }
            else //if(_size == nxtSize && _size == prvSize) // le precedent et le suivant ont la meme taille que le courant
            {
                DynShelterModule nxt = next;
                off7 = -_length;
                if(next.GetType() == GetType())
                    off7 += _AvArSize;//TAILLE DU MONTANT
                while(nxt != null)
                {
                    nxt.SetPos(true,off7/2);
                    nxt = nxt.GetNextModule();
                }

                off7 = _length;
                if(prev.GetType() == GetType())
                    off7 -= ((DynShelterMultiBloc)prev).GetAvArSize();//TAILLE DU MONTANT
                DynShelterModule prv = prev;
                while(prv != null)
                {
                    prv.SetPos(true,off7/2);
                    prv = prv.GetPrevModule();
                }

                newPos = (next.GetPos()+prev.GetPos()).z/2;
            }
        //			else // le precedent et le suivant ont une taille différente du courant
        //			{
        //				DynShelterModule nxt = next;
        //				while(nxt != null)
        //				{
        //					nxt.SetPos(true,-_length/2);
        //					nxt = nxt.GetNextModule();
        //				}
        //
        //				DynShelterModule prv = prev;
        //				while(prv != null)
        //				{
        //					prv.SetPos(true,_length/2);
        //					prv = prv.GetPrevModule();
        //				}
        //
        //				newPos = (next.GetPos()+prev.GetPos()).z/2;
        //			}

        }
        else //(next == null || prev == null) // Cas d'ajout aux extremites (1er ou dernier)
        {
            if(next !=null) // this est le 1er module
            {
                next.SetPrevModule(this);
                SetNextModule(next);

                WhoIs(true);
                WhoIs(false);

                if(_size == nxtSize)
                {
                    //Add collé au next
                    newPos = next.GetPos().z + (_length/2 + next.GetIntOffSet()/*next.GetLength()/2*/);
                }
                else
                {
                    //Add collé au next ou a cheval si pas la place
                    newPos = next.GetExtPos(AV).z;
                }
            }
            else//(prev != null) // this est le dernier module
            {
                prev.SetNextModule(this);
                SetPrevModule(prev);

                WhoIs(true);
                WhoIs(false);

                if(_size == prvSize)
                {
                    //Add collé au prev
                    newPos = prev.GetPos().z - (_length/2 + prev.GetIntOffSet() /*prev.GetLength()/2*/);
                }
                else
                {
                    //Add collé au prev ou a cheval si pas la place
                    newPos = prev.GetExtPos(AR).z;
                }
            }
        }

        //Applying Position
        SetPos(false,newPos);
    }