Ejemplo n.º 1
0
        private static void InitializeBasicRope()
        {
            int nrOfMasses = (100 / 15) - 1;

            if (nrOfMasses <= 0)
            {
                nrOfMasses = 2;
            }
            BasicRope = DefaultAdder.GetDefaultSpringRope(new Vector3(450, 40, 0),
                                                          StaticData.EngineManager.CookieRB.PositionXNA,
                                                          nrOfMasses,
                                                          20 * nrOfMasses,
                                                          10f,
                                                          0.1f,
                                                          RigidType.SphereRigid,
                                                          new Vector3(5, 5, 0), false,
                                                          SpringType.StrictRope);
            //BasicRope = DefaultAdder.GetDefaultSpringRope(new Vector3(450, 40, 0),
            //                                                    nrOfMasses,
            //                                                    500,
            //                                                    5f,
            //                                                    0.1f,
            //                                                    RigidType.SphereRigid,
            //                                                    new Vector3(10, 10, 0), false,
            //                                                    SpringType.StrictRope);
            BasicRope.ApplyServiceOnRigid(StaticData.EngineManager.CookieRB);
            StaticData.EngineManager.SpringsManagerEngine.AddNewService(BasicRope);
        }
Ejemplo n.º 2
0
 void bAddRope_Click(object sender, EventArgs e)
 {
     try
     {
         StaticData.ManipulationGameMode = ManipulationGameMode.AddRopesMode;
         int        nrOfMasses          = (int)UIControlsParser.GetFloat(tbNrOfMasses);
         float      springConstant      = UIControlsParser.GetFloat(tbSpringConstant);
         float      normalLength        = UIControlsParser.GetFloat(tbNormalLength);
         float      springInnerFriction = UIControlsParser.GetFloat(tbSpringInnerFriction);
         Vector3    initialPosition     = UIControlsParser.GetVector3(tbPositionRope);
         RigidType  rigidType           = (RigidType)UIControlsParser.GetIndexOfSelection(ddTypeRigidRope);
         Vector3    rigidSize           = UIControlsParser.GetVector3(tbRigidSizeRope);
         bool       isCollidable        = cbIsCollidableRope.Checked;
         SpringType type = (SpringType)UIControlsParser.GetIndexOfSelection(cbSpringType);
         if (rigidSize != Vector3.Zero)
         {
             StaticData.EngineManager.SpringsManagerEngine.AddNewService(
                 DefaultAdder.GetDefaultSpringRope(initialPosition,
                                                   StaticData.EngineManager.CookieRB.PositionXNA,
                                                   nrOfMasses,
                                                   springConstant,
                                                   normalLength,
                                                   springInnerFriction,
                                                   rigidType,
                                                   rigidSize,
                                                   isCollidable,
                                                   type));
         }
     }
     catch (Exception)
     {
     }
 }
        public CatchableRopeService(int nrOfMasses,
                                    Vector3 initialPos,
                                    float springConstant,
                                    float springLength,
                                    float springFrictionConstant,
                                    bool isCollide,
                                    Vector3 rigidSize,
                                    SpringType springType,
                                    RigidType rigidType)
            : base(springConstant, springLength, springFrictionConstant, null, springType)
        {
            this._nrOfMasses   = nrOfMasses;
            this._initialPos   = initialPos;
            this._isCollide    = isCollide;
            this._normalLength = springLength;
            this._rigidSize    = rigidSize;
            this._rigidType    = rigidType;

            this.IsVisible = false;
            this.Masses    = DefaultAdder.GetMassesRope(2, _initialPos,
                                                        null, _rigidSize,
                                                        this._normalLength, this._rigidType, this._isCollide);
            this.Masses[0].TextureType  = TextureType.Pin;
            this.Masses[0].IsDrawable   = true;
            this.Masses[0].IsFixedRigid = true;
            BuildSprings(springConstant, springLength, springFrictionConstant);
            //this.Radius = radius;
            SetPinRingFirstTime();
        }
Ejemplo n.º 4
0
        private BubbleService AddBubbleToEngine()
        {
            BubbleService bubbleService = DefaultAdder.GetDefaultBubble(new Vector2(mouseState.X, mouseState.Y));

            StaticData.EngineManager.BubbleManagerEngine.AddNewService(bubbleService);
            return(bubbleService);
        }
Ejemplo n.º 5
0
        public Rod(Vector3 positionXNA, Vector3 gravityVector, int spacing,
                   int rigidHalfSize, float rodLinkHeight, float forgivingFactor)
        {
            SphereRigid rigidOne = DefaultAdder.GetDefaultSphere(positionXNA, Material.Steel,
                                                                 rigidHalfSize, gravityVector, null,
                                                                 null, 0, false);

            SphereRigid rigidTwo = DefaultAdder.GetDefaultSphere(positionXNA + new Vector3(spacing, 0, 0),
                                                                 Material.Steel,
                                                                 rigidHalfSize, gravityVector, null,
                                                                 null, 0, false);

            MakeRod(rigidOne, rigidTwo, spacing, rodLinkHeight, forgivingFactor);
        }
Ejemplo n.º 6
0
        public SphereRigid AddSphereRigidToEngine()
        {
            SphereRigid SphereRigidCreated = DefaultAdder.GetDefaultSphere(
                new Vector3(mouseState.X - 3, (mouseState.Y - 3), 0),
                Material.Steel,
                StaticData.CircleDefaultSize,
                new Vector3(0, -9.8f, 0),
                null,
                null,
                0,
                false);

            StaticData.EngineManager.RigidsManagerEngine.ListOfSphereRigids.Add(SphereRigidCreated);
            return(SphereRigidCreated);
        }
Ejemplo n.º 7
0
        public BoxRigid AddBoxRigidToEngine()
        {
            BoxRigid boxRigidCreated = DefaultAdder.GetDefaultBox(
                new Vector3(mouseState.X - 3, (mouseState.Y - 3), 0),
                Material.Steel,
                StaticData.BoxDefaultSize,
                null,
                null,
                null,
                0,
                false);

            StaticData.EngineManager.RigidsManagerEngine.ListOfBoxRigids.Add(boxRigidCreated);
            return(boxRigidCreated);
        }
Ejemplo n.º 8
0
        public override void AddSelfToEngine()
        {
            int nrOfMasses = (int)Math.Floor(Length / (double)15);

            if (nrOfMasses <= 0)
            {
                nrOfMasses = 2;
            }
            StaticData.EngineManager.SpringsManagerEngine.AddNewService(
                DefaultAdder.GetDefaultSpringRope(new Vector3(X, Y, 0),
                                                  StaticData.EngineManager.CookieRB.PositionXNA,
                                                  nrOfMasses, 25 * nrOfMasses,
                                                  10f, 0.1f,
                                                  RigidType.SphereRigid,
                                                  new Vector3(5, 5, 0), false,
                                                  SpringType.StrictRope));
        }
Ejemplo n.º 9
0
        void bAddRigid_Click(object sender, EventArgs e)
        {
            int      index       = UIControlsParser.GetIndexOfSelection(ddTypeRigid);
            Vector3  positionXNA = UIControlsParser.GetVector3(tbPositionXNARigid);
            Material material    = UIControlsParser.GetMaterial(ddMaterialRigid);

            int     width    = (int)UIControlsParser.GetFloat(tbWidthRigid);
            int     height   = (int)UIControlsParser.GetFloat(tbHeightRigid);
            Vector3 halfSize = new Vector3((int)width / 2, (int)height / 2, 0);

            int     radius           = (int)UIControlsParser.GetFloat(tbRadiusRigid);
            Vector3 acc              = UIControlsParser.GetVector3(tbAccRigid);
            Vector3 initialForce     = UIControlsParser.GetVector3(tbForceRigid);
            Vector3 initialTorque    = UIControlsParser.GetVector3(tbTorqueRigid) * 100000;
            float   orientationValue = UIControlsParser.GetFloat(tbOrientationRigid);
            bool    obInertia        = UIControlsParser.GetBool(ddInertiaRigid);

            if (index == 0 && width != 0 && height != 0)
            {
                StaticData.EngineManager.RigidsManagerEngine.AddRigidBody(
                    DefaultAdder.GetDefaultBox(positionXNA,
                                               material,
                                               halfSize,
                                               acc,
                                               initialForce,
                                               initialTorque,
                                               orientationValue,
                                               obInertia));
            }
            else
            {
                if (radius != 0 && index == 1)
                {
                    StaticData.EngineManager.RigidsManagerEngine.AddRigidBody(
                        DefaultAdder.GetDefaultSphere(positionXNA,
                                                      material,
                                                      radius,
                                                      acc,
                                                      initialForce,
                                                      initialTorque,
                                                      orientationValue,
                                                      obInertia));
                }
            }
        }
Ejemplo n.º 10
0
        public override void AddSelfToEngine()
        {
            int nrOfMasses = (length / 15) - 1;

            if (nrOfMasses <= 0)
            {
                nrOfMasses = 2;
            }
            CatchableRopeService rope = DefaultAdder.GetDefaultCatchableRope(new Vector3(X, Y, 0),
                                                                             StaticData.EngineManager.CookieRB.PositionXNA,
                                                                             nrOfMasses, 30 * nrOfMasses,
                                                                             10f, 0.1f,
                                                                             RigidType.SphereRigid,
                                                                             new Vector3(5, 5, 0), false,
                                                                             SpringType.StrictRope);

            StaticData.EngineManager.SpringsManagerEngine.AddNewService(rope);
        }
Ejemplo n.º 11
0
        private RigidBody GetNewRopeRigid(RigidType rigidType, Vector3 pos)
        {
            switch (rigidType)
            {
            case RigidType.BoxRigid:
                return(DefaultAdder.GetDefaultBox(pos, Material.Wood, new Vector3(5, 5, 0), null, null,
                                                  null));

                break;

            case RigidType.SphereRigid:
                return(DefaultAdder.GetDefaultSphere(pos, Material.Wood, 5, new Vector3(0, -0f, 0), null, null));

                break;

            default:
                throw new ArgumentOutOfRangeException("rigidType");
            }
        }
Ejemplo n.º 12
0
        private CatchableRopeService AddCatchableRopesToEngine()
        {
            int nrOfMasses = (70 / 15) - 1;

            if (nrOfMasses <= 0)
            {
                nrOfMasses = 2;
            }
            CatchableRopeService rope = DefaultAdder.GetDefaultCatchableRope(new Vector3(mouseState.X, mouseState.Y, 0),
                                                                             StaticData.EngineManager.CookieRB.PositionXNA,
                                                                             nrOfMasses, 80 * nrOfMasses,
                                                                             10f, 0.1f,
                                                                             RigidType.SphereRigid,
                                                                             new Vector3(5, 5, 0), false,
                                                                             SpringType.StrictRope);

            StaticData.EngineManager.SpringsManagerEngine.AddNewService(rope);
            return(rope);
        }
Ejemplo n.º 13
0
        private SpringService AddRopesToEngine()
        {
            int nrOfMasses = (100 / 15) - 1;

            if (nrOfMasses <= 0)
            {
                nrOfMasses = 2;
            }
            SpringService springService = DefaultAdder.GetDefaultSpringRope(new Vector3(mouseState.X, mouseState.Y, 0),
                                                                            StaticData.EngineManager.CookieRB.PositionXNA,
                                                                            nrOfMasses, 20 * nrOfMasses,
                                                                            10f, 0.1f,
                                                                            RigidType.SphereRigid,
                                                                            new Vector3(5, 5, 0), false,
                                                                            SpringType.StrictRope);

            springService.ApplyServiceOnRigid(StaticData.EngineManager.CookieRB);
            StaticData.EngineManager.SpringsManagerEngine.AddNewService(springService);
            return(springService);
        }
        private void CatchCookieIfNear()
        {
            if (RigidsHelperModule.IsCloseEnough(StaticData.EngineManager.CookieRB, ring, Length))
            {
                List <RigidBody> lastMasses = new List <RigidBody>(this.Masses);
                this.Springs.Clear();

                this.Masses = DefaultAdder.GetMassesRope(this._nrOfMasses, lastMasses[0].PositionXNA3D,
                                                         StaticData.EngineManager.CookieRB.PositionXNACenter, _rigidSize, this._normalLength, this._rigidType, this._isCollide);
                this.Masses[0].TextureType  = TextureType.Pin;
                this.Masses[0].IsDrawable   = true;
                this.Masses[0].IsFixedRigid = true;
                BuildSprings(this.SpringConstant, this._normalLength, this.SpringFrictionConstant);

                lastMasses.ForEach(m => StaticData.EngineManager.RigidsManagerEngine.DeleteRigid(m));

                this.ApplyServiceOnRigid(StaticData.EngineManager.CookieRB);
                IsVisible   = true;
                IsActivated = true;
            }
        }
Ejemplo n.º 15
0
        public void BuildRope(bool isClosed, int numberOfMasses, Vector3 positionXNA, Vector3 gravityVector,
                              int spacing, int rigidHalfSize, float rodLinkHeight, float forgivingFactor)
        {
            RigidBody r1 = DefaultAdder.GetDefaultSphere(positionXNA, Material.Wood,
                                                         rigidHalfSize, gravityVector, null,
                                                         null, 0, false);

            ListOfMasses.Add(r1);

            Rod rodProperty = null;

            for (int i = 1; i < numberOfMasses; i++)
            {
                r1 = ListOfMasses[ListOfMasses.Count - 1];
                RigidBody r2 = DefaultAdder.GetDefaultSphere(positionXNA + new Vector3(spacing, 0, 0)
                                                             , Material.Wood,
                                                             rigidHalfSize, gravityVector, null,
                                                             null, 0, false);
                rodProperty = new Rod(r1, r2, spacing, rodLinkHeight, forgivingFactor);
                ListOfMasses.Add(rodProperty.RigidTwo);

                StaticData.EngineManager.RigidsManagerEngine.AddRigidBody(rodProperty.RodRigidBody);
                StaticData.EngineManager.RigidsManagerEngine.AddRigidBody(rodProperty.RigidOne);
                StaticData.EngineManager.RigidsManagerEngine.AddRigidBody(rodProperty.RigidTwo);

                ListOfRods.Add(rodProperty);
                positionXNA = positionXNA + new Vector3(spacing, 0, 0);
            }
            if (isClosed)
            {
                rodProperty = new Rod(ListOfRods[0].RigidOne, ListOfRods[ListOfRods.Count - 1].RigidTwo, spacing,
                                      rodLinkHeight, forgivingFactor);
                StaticData.EngineManager.RigidsManagerEngine.AddRigidBody(rodProperty.RodRigidBody);
                ListOfRods.Add(rodProperty);
            }
            AddPairsOfNonCollidableToCollisionEngine();
        }
Ejemplo n.º 16
0
        public void MakeRod(RigidBody r1, RigidBody r2, float?spacing, float rodLinkHeight, float forgivingFactor)
        {
            BoxRigidHardConstraint boxLink;

            if (spacing == null)
            {
                boxLink = DefaultAdder.GetDefaultBoxRigidHardConstraint(r1.PositionXNA, Material.Wood,
                                                                        new Vector3((r1.PositionXNA - r2.PositionXNA).Length(),
                                                                                    rodLinkHeight,
                                                                                    0),
                                                                        new Vector3(0, 0, 0),
                                                                        null,
                                                                        null, 0, false);
            }
            else
            {
                boxLink = DefaultAdder.GetDefaultBoxRigidHardConstraint(r1.PositionXNA, Material.Wood,
                                                                        new Vector3((float)spacing, rodLinkHeight, 0),
                                                                        new Vector3(0, 0, 0),
                                                                        null,
                                                                        null, 0, false);
            }
            //boxLink.SetMass(100000);
            //r1.SetMass(50);
            //r2.SetMass(50);

            //boxLink.IsCollidable = false;
            boxLink.IsDrawable = false;

            int VertexOneIndex = -1;
            int VertexTwoIndex = -1;

            this.RigidOne       = r1;
            this.RigidTwo       = r2;
            this.VertexOneIndex = VertexOneIndex;
            this.VertexTwoIndex = VertexTwoIndex;

            this.RodRigidBody = boxLink;
            this.Joint1       = new RodJoint(forgivingFactor);
            this.Joint2       = new RodJoint(forgivingFactor);

            Vector3 position1, position2 = new Vector3();

            if (VertexOneIndex == -1)
            {
                position1 = r1.PositionCenterEngine;
            }
            else
            {
                position1 = r1.vertices[VertexOneIndex].Position;
            }

            if (VertexTwoIndex == -1)
            {
                position2 = r2.PositionCenterEngine;
            }
            else
            {
                position2 = r2.vertices[VertexTwoIndex].Position;
            }

            int vertexBoxOneIndex = boxLink.FindJointIndex(position1);
            int vertexBoxTwoIndex = boxLink.FindJointIndex(position2);

            this.VertexBoxOneIndex = vertexBoxOneIndex;
            this.VertexBoxTwoIndex = vertexBoxTwoIndex;

            this.Joint1.Set(r1, position1, boxLink, boxLink.vertices[vertexBoxOneIndex].Position);
            this.Joint2.Set(r2, position2, boxLink, boxLink.vertices[vertexBoxTwoIndex].Position);
        }