/// <summary>
        /// Store MetaDataObjects for each method part of this member
        /// </summary>
        private void BuildBodies()
        {
            switch (Member.MemberType)
            {
            case MemberTypes.Constructor:
                Bodies.Add(new MetadataObject(Member, null));
                break;

            case MemberTypes.Event:
                EventInfo         E = (EventInfo)Member;
                List <MethodInfo> methods = new MethodInfo[3] {
                    E.GetAddMethod(), E.GetRemoveMethod(), E.GetRaiseMethod()
                }.ToList();
                methods.AddRange(E.GetOtherMethods());
                methods.FindAll(m => m.GetMethodBody() != null).ForEach(m => Bodies.Add(new MetadataObject(Member, m)));
                break;

            case MemberTypes.Method:
                Bodies.Add(new MetadataObject(Member, (MethodInfo)Member));
                break;

            case MemberTypes.Property:
                PropertyInfo P = (PropertyInfo)Member;
                new MethodInfo[2] {
                    P.GetGetMethod(), P.GetSetMethod()
                }.ToList().FindAll(
                    m => m != null).ForEach(m => Bodies.Add(new MetadataObject(Member, m)));
                break;

            default:
                break;
            }
        }
예제 #2
0
 public void AddBody(IAstronomicalObject obj)
 {
     if (obj != null)
     {
         Bodies.Add(obj);
     }
 }
예제 #3
0
        public RouteSpecBuilder WithBody(JSchema schema, bool required = false)
        {
            var body = new RouteSpecRequestBody("application/json", required, schema, new List <string>());

            Bodies.Add(body);
            return(this);
        }
예제 #4
0
        public ParkingSpaceObstacle(World world, Vector2 position, float rotation)
        {
            Vector2[] vertices = new Vector2[8];
            vertices[0] = new Vector2(-3.5f, 1.5f);
            vertices[1] = new Vector2(3.5f, 1.5f);
            vertices[2] = new Vector2(3.5f, -1.5f);
            vertices[3] = new Vector2(-3.5f, -1.5f);
            vertices[4] = new Vector2(-3.5f, -1.45f);
            vertices[5] = new Vector2(3.45f, -1.45f);
            vertices[6] = new Vector2(3.45f, 1.45f);
            vertices[7] = new Vector2(-3.45f, 1.45f);

            for (int i = 0; i < 8; i++)
            {
                vertices[i] *= 10;
            }

            LinkedList <Vertices> vertexSet = new LinkedList <Vertices>();

            vertexSet.AddAll(EarclipDecomposer.ConvexPartition(new Vertices(vertices)));

            foreach (Vertices v in vertexSet)
            {
                Body b = BodyFactory.CreatePolygon(world, v, 1f, position);
                b.BodyType = BodyType.Static;
                b.Rotation = rotation;

                Bodies.Add(b);
            }
        }
예제 #5
0
        private void CreatePlayerPhysicsObjects(Vector2 gameWorldPosition)
        {
            MainFixture = FixtureFactory.CreateRectangle(Engine.Physics.World, 0.5f, 0.5f, 1);
            MainFixture.CollisionFilter.CollisionCategories = (Category)(Global.CollisionCategories.Player);
            Bodies.Add(MainFixture.Body);
            MainFixture.Body.Position        = Engine.Physics.PositionToPhysicsWorld(gameWorldPosition);
            MainFixture.Body.BodyType        = BodyType.Dynamic;
            MainFixture.Body.SleepingAllowed = false;

            WheelFixture = FixtureFactory.CreateCircle(Engine.Physics.World, 0.3f, 1.0f);
            WheelFixture.CollisionFilter.CollisionCategories = (Category)(Global.CollisionCategories.Player);
            Bodies.Add(WheelFixture.Body);
            WheelFixture.Body.Position = MainFixture.Body.Position + new Vector2(0.0f, 0.6f);
            WheelFixture.Body.BodyType = BodyType.Dynamic;

            WheelFixture.Body.SleepingAllowed = false;
            WheelFixture.Friction             = 0.5f;

            playerFAJ       = JointFactory.CreateFixedAngleJoint(Engine.Physics.World, MainFixture.Body);
            playerFAJ.BodyB = WheelFixture.Body;

            wheelMotorRevJoint = JointFactory.CreateRevoluteJoint(MainFixture.Body, WheelFixture.Body, Vector2.Zero);
            wheelMotorRevJoint.MaxMotorTorque = 10.0f;
            wheelMotorRevJoint.MotorEnabled   = true;
            Engine.Physics.World.AddJoint(wheelMotorRevJoint);
        }
예제 #6
0
        private void GeneratePlanets()
        {
            int numPlanets = 3;

            switch (size)
            {
            case "small":
                numPlanets = UnityEngine.Random.Range(3, 5);
                break;

            case "medium":
                numPlanets = UnityEngine.Random.Range(4, 6);
                break;

            case "large":
                numPlanets = UnityEngine.Random.Range(5, 7);
                break;

            case "huge":
                numPlanets = UnityEngine.Random.Range(7, 11);
                break;
            }

            for (int i = 0; i < numPlanets; i++)
            {
                if (i == 2) // third rock from the sun! Randomise this eventually
                {
                    Bodies.Add(new Planet(true, Planet.GetPlanetType(), i.ToString()));
                }
                else
                {
                    Bodies.Add(new Planet(false, Planet.GetPlanetType(), i.ToString()));
                }
            }
        }
예제 #7
0
 public RectangleBody(Rectangle rect)
 {
     this.Position = new Vector2(rect.X, rect.Y);
     Shape         = ShapeType.Rectangle;
     this.Size     = new Vector2(rect.Width, rect.Height);
     ID            = NextId();
     Bodies.Add(ID, this);
 }
예제 #8
0
 public CircleBody(Vector2 Position, float Radius)
 {
     this.Position = Position;
     Shape         = ShapeType.Circle;
     this.Radius   = Radius;
     ID            = NextId();
     Bodies.Add(ID, this);
 }
예제 #9
0
 public RectangleBody(Vector2 Position, Vector2 Size)
 {
     this.Position = Position;
     Shape         = ShapeType.Rectangle;
     this.Size     = Size;
     ID            = NextId();
     Bodies.Add(ID, this);
 }
예제 #10
0
 public void AddBody(Body3d body)
 {
     if (Bodies.Contains(body))
     {
         return;
     }
     Bodies.Add(body);
 }
예제 #11
0
        public void AddBody(IVehicleComponent component)
        {
            if (BodyNeedsToAdd && component.Type == VehicleComponentType.Body)
            {
                Bodies.Add(component);

                BodyNeedsToAdd = false;
            }
        }
예제 #12
0
        // Construct a new rigid body. The BodyDef can be reused at the user's
        // discretion, as no reference to the BodyDef is kept.
        public Body CreateBody(BodyDef def)
        {
            Body body = new Body(def, this);

            // Add body to scene Bodies


            Bodies.Add(body);

            return(body);
        }
        public BulletPhysicsComponent(Engine engine, Vector2 initialGameWorldPosition, Vector2 directionalVector, float angle, Global.CollisionCategories category)
            : base(engine)
        {
            MainFixture = FixtureFactory.CreateCircle(Engine.Physics.World, 0.05f, 1.0f);
            Bodies.Add(MainFixture.Body);
            MainFixture.Body.Rotation      = angle;
            MainFixture.Body.BodyType      = BodyType.Dynamic;
            MainFixture.Body.IgnoreGravity = true;
            MainFixture.Body.IsBullet      = true;
            MainFixture.Body.Position      = Engine.Physics.PositionToPhysicsWorld(initialGameWorldPosition);
            MainFixture.CollisionFilter.CollisionCategories = (Category)category;

            MainFixture.Body.LinearVelocity = directionalVector;
        }
예제 #14
0
        /// <summary>
        /// Добавляет информацию о совместных играх с игроком
        /// </summary>
        /// <param name="body">Союзник</param>
        /// <param name="wins">Победы</param>
        /// <param name="looses">Поражения</param>
        public void Addbody(Gamer body, int wins, int looses)
        {
            var findBody = Bodies.Find(e => e.GamerName == body.Name);

            if (findBody == null)
            {
                Bodies.Add(new Relative(body.Name, wins, looses));
            }
            else
            {
                findBody.Wins   += wins;
                findBody.Looses += looses;
            }
        }
예제 #15
0
        public void ErzeugeKreismusterAußenverzahnung(Data dat)
        {
            ShapeFactory       SF  = (ShapeFactory)hsp_catiaPart.Part.ShapeFactory;
            HybridShapeFactory HSF = (HybridShapeFactory)hsp_catiaPart.Part.HybridShapeFactory;

            //Skizze und Referenzen
            Factory2D Factory2D1 = hsp_catiaProfil.Factory2D;

            HybridShapePointCoord Ursprung    = HSF.AddNewPointCoord(0, 0, 0);
            Reference             RefUrsprung = hsp_catiaPart.Part.CreateReferenceFromObject(Ursprung);
            HybridShapeDirection  XDir        = HSF.AddNewDirectionByCoord(1, 0, 0);
            Reference             RefXDir     = hsp_catiaPart.Part.CreateReferenceFromObject(XDir);

            //Kreismuster mit Daten füllen
            CircPattern Kreismuster = SF.AddNewSurfacicCircPattern(Factory2D1, 1, 2, 0, 0, 1, 1, RefUrsprung, RefXDir, false, 0, true, false);

            Kreismuster.CircularPatternParameters = CatCircularPatternParameters.catInstancesandAngularSpacing;
            AngularRepartition angularRepartition1 = Kreismuster.AngularRepartition;
            Angle angle1 = angularRepartition1.AngularSpacing;

            angle1.Value = Convert.ToDouble(360 / dat.getZaehnezahlZahnrad1());
            AngularRepartition angularRepartition2 = Kreismuster.AngularRepartition;
            IntParam           intParam1           = angularRepartition2.InstancesCount;

            intParam1.Value = Convert.ToInt32(dat.getZaehnezahlZahnrad1()) + 1;

            //geschlossene Kontur
            Reference           Ref_Kreismuster = hsp_catiaPart.Part.CreateReferenceFromObject(Kreismuster);
            HybridShapeAssemble Verbindung      = HSF.AddNewJoin(Ref_Kreismuster, Ref_Kreismuster);
            Reference           Ref_Verbindung  = hsp_catiaPart.Part.CreateReferenceFromObject(Verbindung);

            HSF.GSMVisibility(Ref_Verbindung, 0);

            hsp_catiaPart.Part.Update();

            Bodies bodies = hsp_catiaPart.Part.Bodies;
            Body   myBody = bodies.Add();

            myBody.set_Name("Zahnrad");
            myBody.InsertHybridShape(Verbindung);

            hsp_catiaPart.Part.Update();

            //Erzeuge Block aus Skizze
            hsp_catiaPart.Part.InWorkObject = myBody;
            Pad myPad = SF.AddNewPadFromRef(Ref_Verbindung, dat.getBreiteZahnrad1());

            hsp_catiaPart.Part.Update();
        }
예제 #16
0
        public EnemyPhysicsComponent(Engine engine, Vector2 gameWorldPosition, Global.Shapes shape)
            : base(engine)
        {
            switch (shape)
            {
            case Global.Shapes.Circle:
                MainFixture          = FixtureFactory.CreateCircle(Engine.Physics.World, 0.25f, 1.0f);
                MainFixture.Friction = 0.5f;
                break;

            case Global.Shapes.Player:
                MainFixture = FixtureFactory.CreateRectangle(Engine.Physics.World, 0.5f, 0.5f, 1);
                Bodies.Add(MainFixture.Body);
                MainFixture.Body.Position        = Engine.Physics.PositionToPhysicsWorld(gameWorldPosition);
                MainFixture.Body.BodyType        = BodyType.Dynamic;
                MainFixture.Body.SleepingAllowed = false;

                Fixture WheelFixture = FixtureFactory.CreateCircle(Engine.Physics.World, 0.3f, 1.0f);
                Bodies.Add(WheelFixture.Body);
                WheelFixture.Body.Position = MainFixture.Body.Position + new Vector2(0.0f, 0.6f);
                WheelFixture.Body.BodyType = BodyType.Dynamic;

                WheelFixture.Body.SleepingAllowed = false;
                WheelFixture.Friction             = 0.5f;

                FixedAngleJoint playerFAJ = JointFactory.CreateFixedAngleJoint(Engine.Physics.World, MainFixture.Body);
                playerFAJ.BodyB = WheelFixture.Body;

                RevoluteJoint wheelMotorRevJoint = JointFactory.CreateRevoluteJoint(MainFixture.Body, WheelFixture.Body, Vector2.Zero);
                wheelMotorRevJoint.MaxMotorTorque = 10.0f;
                wheelMotorRevJoint.MotorEnabled   = true;
                Engine.Physics.World.AddJoint(wheelMotorRevJoint);
                break;

            case Global.Shapes.Square:
                MainFixture = FixtureFactory.CreateRectangle(Engine.Physics.World, 0.5f, 0.5f, 1.0f);
                break;

            default:
                throw new Exception("shape " + shape.ToString() + " not recognized when creating EnemyPhysicsComponent");
            }

            Bodies.Add(MainFixture.Body);
            MainFixture.Body.Position = Engine.Physics.PositionToPhysicsWorld(gameWorldPosition);
            MainFixture.Body.BodyType = BodyType.Dynamic;
        }
        /// <summary>
        /// Add a range of bodies.
        /// Commit it to storage if required.
        /// </summary>
        /// <param name="bodies"></param>
        /// <param name="commit"></param>
        public static void AddRange(List <Body> bodies, bool commit = false)
        {
            foreach (var body in bodies)
            {
                var doesExist = Bodies.FirstOrDefault(x => x.BodyNo == body.BodyNo && x.KillDate == body.KillDate) != null;
                if (doesExist)
                {
                    continue;
                }

                Bodies.Add(body);
            }

            if (commit)
            {
                Commit();
            }
        }
예제 #18
0
        public void ErzeugeZahnrad(int Zaehnezahl, double Dicke, double Modul)
        {
            ShapeFactory       SF = (ShapeFactory)hsp_catiaPart.Part.ShapeFactory;
            HybridShapeFactory HSF = (HybridShapeFactory)hsp_catiaPart.Part.HybridShapeFactory; Part myPart = hsp_catiaPart.Part;
            Factory2D          Factory2D1 = hsp_catiaProfil.Factory2D;


            HybridShapePointCoord Ursprung    = HSF.AddNewPointCoord(0, 0, 0);
            Reference             RefUrsprung = myPart.CreateReferenceFromObject(Ursprung);
            HybridShapeDirection  XDir        = HSF.AddNewDirectionByCoord(1, 0, 0);
            Reference             RefXDir     = myPart.CreateReferenceFromObject(XDir);


            CircPattern Kreismuster = SF.AddNewSurfacicCircPattern(Factory2D1, 1, 2, 0, 0, 1, 1, RefUrsprung, RefXDir, false, 0, true, false);

            Kreismuster.CircularPatternParameters = CatCircularPatternParameters.catInstancesandAngularSpacing;
            AngularRepartition angularRepartition1 = Kreismuster.AngularRepartition;
            Angle angle1 = angularRepartition1.AngularSpacing;

            angle1.Value = Convert.ToDouble(360 / Convert.ToDouble(Zaehnezahl));
            AngularRepartition angularRepartition2 = Kreismuster.AngularRepartition;
            IntParam           intParam1           = angularRepartition2.InstancesCount;

            intParam1.Value = Convert.ToInt32(Zaehnezahl) + 1;


            Reference           Ref_Kreismuster = myPart.CreateReferenceFromObject(Kreismuster);
            HybridShapeAssemble Verbindung = HSF.AddNewJoin(Ref_Kreismuster, Ref_Kreismuster); Reference Ref_Verbindung = myPart.CreateReferenceFromObject(Verbindung);

            HSF.GSMVisibility(Ref_Verbindung, 0);

            myPart.Update();

            Bodies bodies = myPart.Bodies;
            Body   myBody = bodies.Add();

            myBody.set_Name("Zahnrad");
            myBody.InsertHybridShape(Verbindung);
            myPart.Update();
            myPart.InWorkObject = myBody;
            Pad myPad = SF.AddNewPadFromRef(Ref_Verbindung, Dicke);

            myPart.Update();
        }
예제 #19
0
        public virtual CCPhysicsBody AddBody(CCPhysicsBody body)
        {
            cp.AssertWarn(body != null, "the body can not be nullptr");

            if (body.GetWorld() == this)
            {
                return(null);
            }

            if (body.GetWorld() != null)
            {
                body.RemoveFromWorld();
            }

            AddBodyOrDelay(body);
            Bodies.Add(body);
            body._world = this;

            return(body);
        }
예제 #20
0
        public virtual bool AddBody(Body body, string name)
        {
            bool added = false;

            if (!Bodies.ContainsKey(name))
            {
                Bodies.Add(name, body);

                //We can only ever have one primary body in an IPhysicsComponent.
                //Let's assume that if the new body coming in is Primary then the user
                //wants to replace the old primary body.
                if (primaryBody == null || ((FarseerUserData)body.UserData).Primary)
                {
                    primaryBody = body;
                }

                added = true;
            }

            return(added);
        }
예제 #21
0
        private void GenerateBodies()
        {
            double halfWidth = ElementValues["AX"];
            double halfDepth = ElementValues["AY"];

            Body body;

            if (!Accuracy.LengthIsZero(halfWidth * 2) && !Accuracy.LengthIsZero(halfDepth * 2))
            {
                body = CreateFace(Point.Origin, halfWidth, halfDepth);
                body.Transform(Transform);
                Bodies.Add(body);

                double curvature = ElementValues["C"] * 1000000;                            // we read all values as mm and converted them to meters, but the units for curvature are 1/mm
                double thickness = ElementValues["K"];
                if (!Accuracy.LengthIsZero(curvature) && !Accuracy.LengthIsZero(thickness)) // TBD figure out how to establish thickness when it is zero
                {
                    body = CreateSphericalSegment(Point.Origin, Direction.DirZ, 1 / curvature, halfWidth, thickness);
                    body.Transform(Transform);
                    Bodies.Add(body);
                }
            }
        }
예제 #22
0
파일: Body.cs 프로젝트: KeesPolling/Popmail
        private async Task ReadMultiPart(BufferedByteReader reader)
        {
            if (ContentType.Boundary.Length > _maxBoundaryLength)
            {
                _maxBoundaryLength = ContentType.Boundary.Length;
            }
            await ReadToStart(reader);

            while (!_completed)
            {
                var body = new Body(this, _maxBoundaryLength);
                await body.Header.ReadHeader(reader);

                await body.ReadBody(reader, Header.ContentTransferEncoding);

                Bodies.Add(body);
            }
            if (!_completed)
            {
                Complete();
            }
            return;
        }
예제 #23
0
 public void AddBody(Body body)
 {
     Bodies.Add(body);
 }
예제 #24
0
        public void Stirnzahnrad(Außenverzahnung av)
        {
            //Profil erstellen
            //Nullpunkt
            double x0 = 0;
            double y0 = 0;

            //Hilfsgrößen
            double Teilkreisradius   = av.d / 2;
            double Hilfskreisradius  = Teilkreisradius * 0.94;
            double Fußkreisradius    = Teilkreisradius - (1.25 * av.m);
            double Kopfkreisradius   = Teilkreisradius + av.m;
            double Verrundungsradius = 0.35 * av.m;

            double Alpha         = 20;
            double Beta          = 90 / av.z;
            double Betarad       = Math.PI * Beta / 180;
            double Gamma         = 90 - (Alpha - Beta);
            double Gammarad      = Math.PI * Gamma / 180;
            double Totalangel    = 360.0 / av.z;
            double Totalangelrad = Math.PI + Totalangel / 180;

            //Punkte erzeugen
            //Kleiner Kreis
            double xMittelpunktaufEvol_links = Hilfskreisradius * Math.Cos(Gammarad);
            double yMittelpunktaufEvol_links = Hilfskreisradius * Math.Sin(Gammarad);

            //Schnittpunkt auf Evolvente und Teilkreisradius
            double xPunktaufEvolvente = -Teilkreisradius *Math.Sin(Betarad);

            double yPunktaufEvolvente = Teilkreisradius * Math.Cos(Betarad);

            //Evolventenkreis Radius
            double EvolventenkreisRadius = Math.Sqrt(Math.Pow((xMittelpunktaufEvol_links - xPunktaufEvolvente), 2) + Math.Pow((yMittelpunktaufEvol_links - yPunktaufEvolvente), 2));

            //Koordinaten Schnittpunkt Kopfkreis und Evolventenkreis
            double xEvolventenkopfkreis_links = Schnittpunkt_X(x0, y0, Kopfkreisradius, xMittelpunktaufEvol_links, yMittelpunktaufEvol_links, EvolventenkreisRadius);
            double yEvolventenkopfkreis_links = Schnittpunkt_Y(x0, y0, Kopfkreisradius, xMittelpunktaufEvol_links, yMittelpunktaufEvol_links, EvolventenkreisRadius);

            //Mittelpunktkoordinaten Verrundung
            double xMittelpunktVerrundung_links = Schnittpunkt_X(x0, y0, Fußkreisradius + Verrundungsradius, xMittelpunktaufEvol_links, yMittelpunktaufEvol_links, EvolventenkreisRadius + Verrundungsradius);
            double yMittelpunktVerrundung_links = Schnittpunkt_Y(x0, y0, Fußkreisradius + Verrundungsradius, xMittelpunktaufEvol_links, yMittelpunktaufEvol_links, EvolventenkreisRadius + Verrundungsradius);

            //Schnittpunktkoordinaten Verrundung - Evolventenkreis
            double x_SP_EvolventeVerrundung_links = Schnittpunkt_X(xMittelpunktaufEvol_links, yMittelpunktaufEvol_links, EvolventenkreisRadius, xMittelpunktVerrundung_links, yMittelpunktVerrundung_links, Verrundungsradius);
            double y_SP_EvolventeVerrundung_links = Schnittpunkt_Y(xMittelpunktaufEvol_links, yMittelpunktaufEvol_links, EvolventenkreisRadius, xMittelpunktVerrundung_links, yMittelpunktVerrundung_links, Verrundungsradius);

            //Schnittpunktkoordinaten Verrundung - Fußkreis
            double x_SP_FußkreisradiusVerrundung_links = Schnittpunkt_X(x0, y0, Fußkreisradius, xMittelpunktVerrundung_links, yMittelpunktVerrundung_links, Verrundungsradius);
            double y_SP_FußkreisradiusVerrundung_links = Schnittpunkt_Y(x0, y0, Fußkreisradius, xMittelpunktVerrundung_links, yMittelpunktVerrundung_links, Verrundungsradius);

            //Koordinaten Anfangspunkt Fußkreis
            double Hilfswinkel            = Totalangelrad - Math.Atan(Math.Abs(x_SP_FußkreisradiusVerrundung_links) / Math.Abs(y_SP_FußkreisradiusVerrundung_links));
            double x_AnfangspunktFußkreis = -Fußkreisradius *Math.Sin(Hilfswinkel);

            double y_AnfangspunktFußkreis = Fußkreisradius * Math.Cos(Hilfswinkel);

            //Ende

            //Skizze umbenennen
            hsp_catiaProfil.set_Name("Zahnrad-Test");
            Factory2D catfactory2D1 = hsp_catiaProfil.OpenEdition();

            //Punkte in Skizze
            Point2D point_Ursprung                   = catfactory2D1.CreatePoint(x0, y0);
            Point2D pointAnfangFußkreisLinks         = catfactory2D1.CreatePoint(x_AnfangspunktFußkreis, y_AnfangspunktFußkreis);
            Point2D pointFußkreisVerrundungLinks     = catfactory2D1.CreatePoint(x_SP_FußkreisradiusVerrundung_links, y_SP_FußkreisradiusVerrundung_links);
            Point2D pointFußkreisVerrundungRechts    = catfactory2D1.CreatePoint(-x_SP_FußkreisradiusVerrundung_links, y_SP_FußkreisradiusVerrundung_links);
            Point2D pointMittelpunktVerrundungLinks  = catfactory2D1.CreatePoint(xMittelpunktVerrundung_links, yMittelpunktVerrundung_links);
            Point2D pointMittelpunktVerrundungRechts = catfactory2D1.CreatePoint(-xMittelpunktVerrundung_links, yMittelpunktVerrundung_links);
            Point2D pointVerrundungEvolventeLinks    = catfactory2D1.CreatePoint(x_SP_EvolventeVerrundung_links, y_SP_EvolventeVerrundung_links);
            Point2D pointVerrundungEvolventeRechts   = catfactory2D1.CreatePoint(-x_SP_EvolventeVerrundung_links, y_SP_EvolventeVerrundung_links);
            Point2D pointMittelpunktevolventeLinks   = catfactory2D1.CreatePoint(xMittelpunktaufEvol_links, xMittelpunktaufEvol_links);
            Point2D pointMittelpunktevolventeRechts  = catfactory2D1.CreatePoint(-xMittelpunktaufEvol_links, yMittelpunktaufEvol_links);
            Point2D pointEvolventenKopfkreisLinks    = catfactory2D1.CreatePoint(xEvolventenkopfkreis_links, yEvolventenkopfkreis_links);
            Point2D pointEvolventenKopfkreisRechts   = catfactory2D1.CreatePoint(-xEvolventenkopfkreis_links, yEvolventenkopfkreis_links);

            //Kreise
            Circle2D KreisFußkreis = catfactory2D1.CreateCircle(x0, y0, Fußkreisradius, 0, Math.PI * 2);

            KreisFußkreis.CenterPoint = point_Ursprung;
            KreisFußkreis.StartPoint  = pointFußkreisVerrundungLinks;
            KreisFußkreis.EndPoint    = pointAnfangFußkreisLinks;

            Circle2D KreisVerrundungLinks = catfactory2D1.CreateCircle(xMittelpunktVerrundung_links, yMittelpunktVerrundung_links, Verrundungsradius, 0, Math.PI * 2);

            KreisVerrundungLinks.CenterPoint = pointMittelpunktVerrundungLinks;
            KreisVerrundungLinks.StartPoint  = pointFußkreisVerrundungLinks;
            KreisVerrundungLinks.EndPoint    = pointVerrundungEvolventeLinks;

            Circle2D KreisEvolventenkreisLinks = catfactory2D1.CreateCircle(xMittelpunktaufEvol_links, yMittelpunktaufEvol_links, EvolventenkreisRadius, 0, Math.PI * 2);

            KreisEvolventenkreisLinks.CenterPoint = pointMittelpunktevolventeLinks;
            KreisEvolventenkreisLinks.StartPoint  = pointEvolventenKopfkreisLinks;
            KreisEvolventenkreisLinks.EndPoint    = pointVerrundungEvolventeLinks;

            Circle2D KreisKopfkreis = catfactory2D1.CreateCircle(x0, y0, Kopfkreisradius, 0, Math.PI * 2);

            KreisKopfkreis.CenterPoint = point_Ursprung;
            KreisKopfkreis.StartPoint  = pointEvolventenKopfkreisRechts;
            KreisKopfkreis.EndPoint    = pointEvolventenKopfkreisLinks;

            Circle2D KreisEvolventenkreisRechts = catfactory2D1.CreateCircle(-xMittelpunktaufEvol_links, yMittelpunktaufEvol_links, EvolventenkreisRadius, 0, Math.PI * 2);

            KreisEvolventenkreisRechts.CenterPoint = pointMittelpunktVerrundungRechts;
            KreisEvolventenkreisRechts.StartPoint  = pointVerrundungEvolventeRechts;
            KreisEvolventenkreisRechts.EndPoint    = pointEvolventenKopfkreisRechts;

            Circle2D KreisVerrundungRechts = catfactory2D1.CreateCircle(-xMittelpunktVerrundung_links, yMittelpunktVerrundung_links, Verrundungsradius, 0, Math.PI * 2);

            KreisVerrundungRechts.CenterPoint = pointMittelpunktVerrundungRechts;
            KreisVerrundungRechts.StartPoint  = pointVerrundungEvolventeRechts;
            KreisVerrundungRechts.EndPoint    = pointFußkreisVerrundungRechts;

            //Skizzierer schließen
            hsp_catiaProfil.CloseEdition();

            //Aktualisieren
            hsp_catiaPart.Part.Update();



            //Kreismuster erstellen
            //Deklarierung
            ShapeFactory       SF  = (ShapeFactory)hsp_catiaPart.Part.ShapeFactory;
            HybridShapeFactory HSF = (HybridShapeFactory)hsp_catiaPart.Part.HybridShapeFactory;
            Part myPart            = hsp_catiaPart.Part;

            Factory2D             Factory2D1  = hsp_catiaProfil.Factory2D;
            HybridShapePointCoord Ursprung    = HSF.AddNewPointCoord(0, 0, 0);
            Reference             RefUrsprung = myPart.CreateReferenceFromObject(Ursprung);
            HybridShapeDirection  XDir        = HSF.AddNewDirectionByCoord(1, 0, 0);
            Reference             RefXDir     = myPart.CreateReferenceFromObject(XDir);

            //Kreismuster Daten ausfüllen
            CircPattern Kreismuster = SF.AddNewSurfacicCircPattern(Factory2D1, 1, 2, 0, 0, 1, 1, RefUrsprung, RefXDir, false, 0, true, false);

            Kreismuster.CircularPatternParameters = CatCircularPatternParameters.catInstancesandAngularSpacing;
            AngularRepartition angularRepartition1 = Kreismuster.AngularRepartition;
            Angle angle1 = angularRepartition1.AngularSpacing;

            angle1.Value = Convert.ToDouble(360 / Convert.ToDouble(av.z));
            AngularRepartition angularRepartition2 = Kreismuster.AngularRepartition;
            IntParam           intParam1           = angularRepartition2.InstancesCount;

            intParam1.Value = Convert.ToInt32(av.z) + 1;

            //geschlossene Kontur herstellen
            Reference           Ref_Kreismuster = myPart.CreateReferenceFromObject(Kreismuster);
            HybridShapeAssemble Verbindung      = HSF.AddNewJoin(Ref_Kreismuster, Ref_Kreismuster);
            Reference           Ref_Verbindung  = myPart.CreateReferenceFromObject(Verbindung);

            HSF.GSMVisibility(Ref_Verbindung, 0);
            myPart.Update();
            Bodies bodies = myPart.Bodies;
            Body   myBody = bodies.Add();

            myBody.set_Name("Zahnrad");
            myBody.InsertHybridShape(Verbindung);
            myPart.Update();
        }
예제 #25
0
        public void Stirnzahnrad(MainWindow.Außenverzahnung av)
        {
            //Profil Erstellen

            //Nullpunkt
            double x0 = 0;
            double y0 = 0;

            //Hilfsgrößen
            double Teilkreisradius   = av.d / 2;
            double Hilfskreisradius  = Teilkreisradius * 0.94;
            double Fußkreisradius    = Teilkreisradius - (1.25 * av.m);
            double Kopfkreisradius   = Teilkreisradius + av.m;
            double Verrundungsradius = 0.35 * av.m;

            double Alpha         = 2;
            double Alpharad      = Math.PI * Alpha / 180;
            double Beta          = 140 / av.z;
            double Betarad       = Math.PI * Beta / 180;
            double Gamma         = 90 - (Alpha - Beta);
            double Gammarad      = Math.PI * Gamma / 180;
            double Totalangel    = 360.0 / av.z;
            double Totalangelrad = Math.PI * Totalangel / 180;


            //Punkte
            //Kopfkreis
            double xKopfkreis = -Kopfkreisradius *Math.Sin(Alpharad);

            double yKopfkreis = Kopfkreisradius * Math.Cos(Alpharad);

            //Fußkreis
            double xFußkreis = -Fußkreisradius *Math.Sin(Betarad);

            double yFußkreis = Fußkreisradius * Math.Cos(Betarad);

            //Koordinaten Anfangspunkt Fußkreis
            double Hilfswinkel            = Totalangelrad - Math.Atan(Math.Abs(xFußkreis) / Math.Abs(yFußkreis));
            double x_AnfangspunktFußkreis = Fußkreisradius * Math.Sin(Hilfswinkel);
            double y_AnfangspunktFußkreis = Fußkreisradius * Math.Cos(Hilfswinkel);

            //Skizze umbenennen und öffnen
            hsp_catiaProfil.set_Name("Zahnradskizze");
            Factory2D catfactory2D1 = hsp_catiaProfil.OpenEdition();

            //Nun die Punkte in die Skizze
            Point2D point_Ursprung          = catfactory2D1.CreatePoint(x0, y0);
            Point2D point_KopfkreisLinks    = catfactory2D1.CreatePoint(xKopfkreis, yKopfkreis);
            Point2D point_FußkreisLinks     = catfactory2D1.CreatePoint(xFußkreis, yFußkreis);
            Point2D point_KopfkreisRechts   = catfactory2D1.CreatePoint(-xKopfkreis, yKopfkreis);
            Point2D point_FußkreisRechts    = catfactory2D1.CreatePoint(-xFußkreis, yFußkreis);
            Point2D point_AnfangspunktLinks = catfactory2D1.CreatePoint(-x_AnfangspunktFußkreis, y_AnfangspunktFußkreis);

            //Linien
            Line2D line_FußkreisKopfkreis = catfactory2D1.CreateLine(xFußkreis, yFußkreis, xKopfkreis, yKopfkreis);

            line_FußkreisKopfkreis.StartPoint = point_FußkreisLinks;
            line_FußkreisKopfkreis.EndPoint   = point_KopfkreisLinks;

            Line2D line_KopfkreisFußkreis = catfactory2D1.CreateLine(-xKopfkreis, yKopfkreis, -xFußkreis, yFußkreis);

            line_KopfkreisFußkreis.StartPoint = point_KopfkreisRechts;
            line_KopfkreisFußkreis.EndPoint   = point_FußkreisRechts;


            //Kreise
            Circle2D circle_KopfkreisLinksRechts = catfactory2D1.CreateCircle(x0, y0, Kopfkreisradius, 0, Math.PI * 2);

            circle_KopfkreisLinksRechts.CenterPoint = point_Ursprung;
            circle_KopfkreisLinksRechts.EndPoint    = point_KopfkreisLinks;
            circle_KopfkreisLinksRechts.StartPoint  = point_KopfkreisRechts;

            Circle2D circle_AnfangFußkreis = catfactory2D1.CreateCircle(x0, x0, Fußkreisradius, 0, Math.PI * 2);

            circle_AnfangFußkreis.CenterPoint = point_Ursprung;
            circle_AnfangFußkreis.EndPoint    = point_AnfangspunktLinks;
            circle_AnfangFußkreis.StartPoint  = point_FußkreisLinks;

            hsp_catiaProfil.CloseEdition();

            hsp_catiaPart.Part.Update();


            //Profilerstellen Ende

            //Kreismuster

            ShapeFactory       SF  = (ShapeFactory)hsp_catiaPart.Part.ShapeFactory;
            HybridShapeFactory HSF = (HybridShapeFactory)hsp_catiaPart.Part.HybridShapeFactory;
            Part myPart            = hsp_catiaPart.Part;

            Factory2D             Factory2D2  = hsp_catiaProfil.Factory2D;
            HybridShapePointCoord Ursprung    = HSF.AddNewPointCoord(0, 0, 0);
            Reference             RefUrsprung = myPart.CreateReferenceFromObject(Ursprung);
            HybridShapeDirection  XDir        = HSF.AddNewDirectionByCoord(1, 0, 0);
            Reference             RefXDir     = myPart.CreateReferenceFromObject(XDir);

            CircPattern Kreismuster = SF.AddNewSurfacicCircPattern(Factory2D2, 1, 2, 0, 0, 1, 1, RefUrsprung, RefXDir, false, 0, true, false);

            Kreismuster.CircularPatternParameters = CatCircularPatternParameters.catInstancesandAngularSpacing;
            AngularRepartition angularRepartition1 = Kreismuster.AngularRepartition;
            Angle angle1 = angularRepartition1.AngularSpacing;

            angle1.Value = Convert.ToDouble(360 / Convert.ToDouble(av.z));
            AngularRepartition angularRepartition2 = Kreismuster.AngularRepartition;
            IntParam           intParam1           = angularRepartition2.InstancesCount;

            intParam1.Value = Convert.ToInt32(av.z) + 1;

            Reference           Ref_Kreismuster = myPart.CreateReferenceFromObject(Kreismuster);
            HybridShapeAssemble Verbindung      = HSF.AddNewJoin(Ref_Kreismuster, Ref_Kreismuster);
            Reference           Ref_Verbindung  = myPart.CreateReferenceFromObject(Verbindung);

            HSF.GSMVisibility(Ref_Verbindung, 0);
            myPart.Update();
            Bodies bodies = myPart.Bodies;
            Body   myBody = bodies.Add();

            myBody.set_Name("Zahnrad");
            myBody.InsertHybridShape(Verbindung);
            myPart.Update();

            myPart.InWorkObject = myBody;
            Pad myPad = SF.AddNewPadFromRef(Ref_Verbindung, av.t);

            myPart.Update();


            //Bohrung
            Reference RefBohrung1       = hsp_catiaPart.Part.CreateReferenceFromBRepName("FSur:(Face:(Brp:(Pad.1;2);None:();Cf11:());WithTemporaryBody;WithoutBuildError;WithInitialFeatureSupport;MonoFond;MFBRepVersion_CXR15)", myPad);
            Hole      catBohrung1       = SF.AddNewHoleFromPoint(0, 0, 0, RefBohrung1, 0);
            Length    catLengthBohrung1 = catBohrung1.Diameter;

            catLengthBohrung1.Value = Convert.ToDouble(av.d / 2);

            hsp_catiaPart.Part.Update();
        }
예제 #26
0
        public void ErzeugeKreismusterMitBohrung(Data dat)
        {
            //Erzeuge Kreismuster

            ShapeFactory       SF  = (ShapeFactory)hsp_catiaPart.Part.ShapeFactory;
            HybridShapeFactory HSF = (HybridShapeFactory)hsp_catiaPart.Part.HybridShapeFactory;

            //Skizze und Referenzen
            Factory2D Factory2D1 = hsp_catiaProfil.Factory2D;

            HybridShapePointCoord Ursprung    = HSF.AddNewPointCoord(0, 0, 0);
            Reference             RefUrsprung = hsp_catiaPart.Part.CreateReferenceFromObject(Ursprung);
            HybridShapeDirection  XDir        = HSF.AddNewDirectionByCoord(1, 0, 0);
            Reference             RefXDir     = hsp_catiaPart.Part.CreateReferenceFromObject(XDir);

            //Kreismuster mit Daten füllen
            CircPattern Kreismuster = SF.AddNewSurfacicCircPattern(Factory2D1, 1, 2, 0, 0, 1, 1, RefUrsprung, RefXDir, false, 0, true, false);

            Kreismuster.CircularPatternParameters = CatCircularPatternParameters.catInstancesandAngularSpacing;
            AngularRepartition angularRepartition1 = Kreismuster.AngularRepartition;
            Angle angle1 = angularRepartition1.AngularSpacing;

            angle1.Value = Convert.ToDouble(360 / dat.getZaehnezahlZahnrad1());
            AngularRepartition angularRepartition2 = Kreismuster.AngularRepartition;
            IntParam           intParam1           = angularRepartition2.InstancesCount;

            intParam1.Value = Convert.ToInt32(dat.getZaehnezahlZahnrad1()) + 1;

            //geschlossene Kontur
            Reference           Ref_Kreismuster = hsp_catiaPart.Part.CreateReferenceFromObject(Kreismuster);
            HybridShapeAssemble Verbindung      = HSF.AddNewJoin(Ref_Kreismuster, Ref_Kreismuster);
            Reference           Ref_Verbindung  = hsp_catiaPart.Part.CreateReferenceFromObject(Verbindung);

            HSF.GSMVisibility(Ref_Verbindung, 0);

            hsp_catiaPart.Part.Update();

            Bodies bodies = hsp_catiaPart.Part.Bodies;
            Body   myBody = bodies.Add();

            myBody.set_Name("Zahnrad");
            myBody.InsertHybridShape(Verbindung);

            hsp_catiaPart.Part.Update();

            //Erzeuge Block aus Skizze
            hsp_catiaPart.Part.InWorkObject = myBody;
            Pad myPad = SF.AddNewPadFromRef(Ref_Verbindung, dat.getBreiteZahnrad1());

            hsp_catiaPart.Part.Update();


            //Erzeuge Skizze für Bohrung
            Reference RefBohrung1       = hsp_catiaPart.Part.CreateReferenceFromBRepName("FSur:(Face:(Brp:(Pad.1;2);None:();Cf11:());WithTemporaryBody;WithoutBuildError;WithInitialFeatureSupport;MonoFond;MFBRepVersion_CXR15)", myPad);
            Hole      catBohrung1       = SF.AddNewHoleFromPoint(0, 0, 0, RefBohrung1, dat.getBreiteZahnrad1());
            Length    catLengthBohrung1 = catBohrung1.Diameter;

            catLengthBohrung1.Value = Convert.ToDouble(dat.getTeilkreisdurchmesserZahnrad1() / 2);

            hsp_catiaPart.Part.Update();
        }
예제 #27
0
 private PlanetarySystem(Planets planets) : base(planets.ToBodies())
 {
     Bodies.Add(new Sun());
 }
예제 #28
0
        private Body CreateRectBody(Rectangle rect, bool createConvexHull)
        {
            float diffFromCenter;

            if (IsHorizontal)
            {
                diffFromCenter = (rect.Center.X - this.rect.Center.X) / (float)this.rect.Width * BodyWidth;
                if (BodyWidth > 0.0f)
                {
                    rect.Width = Math.Max((int)Math.Round(BodyWidth * (rect.Width / (float)this.rect.Width)), 1);
                }
                if (BodyHeight > 0.0f)
                {
                    rect.Height = (int)BodyHeight;
                }
            }
            else
            {
                diffFromCenter = ((rect.Y - rect.Height / 2) - (this.rect.Y - this.rect.Height / 2)) / (float)this.rect.Height * BodyHeight;
                if (BodyWidth > 0.0f)
                {
                    rect.Width = (int)BodyWidth;
                }
                if (BodyHeight > 0.0f)
                {
                    rect.Height = Math.Max((int)Math.Round(BodyHeight * (rect.Height / (float)this.rect.Height)), 1);
                }
            }
            if (FlippedX)
            {
                diffFromCenter = -diffFromCenter;
            }

            Vector2 bodyOffset = ConvertUnits.ToSimUnits(Prefab.BodyOffset);

            if (FlippedX)
            {
                bodyOffset.X = -bodyOffset.X;
            }
            if (FlippedY)
            {
                bodyOffset.Y = -bodyOffset.Y;
            }

            Body newBody = BodyFactory.CreateRectangle(GameMain.World,
                                                       ConvertUnits.ToSimUnits(rect.Width),
                                                       ConvertUnits.ToSimUnits(rect.Height),
                                                       1.5f);

            newBody.BodyType = BodyType.Static;
            //newBody.Position = ConvertUnits.ToSimUnits(new Vector2(rect.X + rect.Width / 2.0f, rect.Y - rect.Height / 2.0f));
            newBody.Friction            = 0.5f;
            newBody.OnCollision        += OnWallCollision;
            newBody.CollisionCategories = (Prefab.Platform) ? Physics.CollisionPlatform : Physics.CollisionWall;
            newBody.UserData            = this;

            Vector2 structureCenter = ConvertUnits.ToSimUnits(Position);

            if (BodyRotation != 0.0f)
            {
                newBody.Position = structureCenter + bodyOffset + new Vector2(
                    (float)Math.Cos(IsHorizontal ? -BodyRotation : MathHelper.PiOver2 - BodyRotation),
                    (float)Math.Sin(IsHorizontal ? -BodyRotation : MathHelper.PiOver2 - BodyRotation)) * ConvertUnits.ToSimUnits(diffFromCenter);
                newBody.Rotation = -BodyRotation;
            }
            else
            {
                newBody.Position = structureCenter + (IsHorizontal ? Vector2.UnitX : Vector2.UnitY) * ConvertUnits.ToSimUnits(diffFromCenter) + bodyOffset;
            }

            if (createConvexHull)
            {
                CreateConvexHull(ConvertUnits.ToDisplayUnits(newBody.Position), rect.Size.ToVector2(), newBody.Rotation);
            }

            Bodies.Add(newBody);
            bodyDebugDimensions.Add(new Vector2(ConvertUnits.ToSimUnits(rect.Width), ConvertUnits.ToSimUnits(rect.Height)));

            return(newBody);
        }
예제 #29
0
    public Player_save(PlayerStats player)
    {
        hp_max     = player.hp_max;
        hp         = player.GetHP();
        mp_max     = player.mp_max;
        mp         = player.GetMP();
        sp_max     = player.sp_max;
        sp         = player.GetSP();
        strenght   = player.strenght;
        intellect  = player.intellect;
        defence    = player.defence;
        resistance = player.resistance;
        hp_cost    = player.hp_cost_percent;
        level      = player.level;
        souls      = player.souls;
        level_h    = player.level_health;
        level_m    = player.level_magic;
        level_c    = player.level_capability;
        keys       = player.keys;

        if (player.Ability_typs[0].abilities.Count != 0)
        {
            slots[0] = player.Ability_typs[0].slots;
            foreach (Ability ability in player.Ability_typs[0].abilities)
            {
                if (ability == null)
                {
                    Weapons.Add("null");
                    continue;
                }
                Weapons.Add(ability._name);
            }
        }
        if (player.Ability_typs[1].abilities.Count != 0)
        {
            slots[1] = player.Ability_typs[1].slots;
            foreach (Ability ability in player.Ability_typs[1].abilities)
            {
                if (ability == null)
                {
                    Magic.Add("null");
                    continue;
                }
                Magic.Add(ability._name);
            }
        }
        if (player.Ability_typs[2].abilities.Count != 0)
        {
            slots[2] = player.Ability_typs[2].slots;
            foreach (Ability ability in player.Ability_typs[2].abilities)
            {
                if (ability == null)
                {
                    Skills.Add("null");
                    continue;
                }
                Skills.Add(ability._name);
            }
        }
        if (player.Ability_typs[3].abilities.Count != 0)
        {
            slots[3] = player.Ability_typs[3].slots;
            foreach (Ability ability in player.Ability_typs[3].abilities)
            {
                if (ability == null)
                {
                    Items.Add("null");
                    continue;
                }
                Items.Add(ability._name);
            }
        }
        if (player.Ability_typs[4].abilities.Count != 0)
        {
            slots[4] = player.Ability_typs[4].slots;
            foreach (Ability ability in player.Ability_typs[4].abilities)
            {
                if (ability == null)
                {
                    Items_perma.Add("null");
                    continue;
                }
                Items_perma.Add(ability._name);
            }
        }
        if (player.playerBodies.Count != 0)
        {
            currentBody = player.currentBody;
            foreach (PlayerBody body in player.playerBodies)
            {
                if (body == null)
                {
                    Bodies.Add("null");
                    continue;
                }
                Bodies.Add(body._name);
            }
        }
    }
예제 #30
0
    public Backpack_Save(Backpack backpack)
    {
        if (backpack.abilities[0].abilities.Count != 0)
        {
            foreach (Ability ability in backpack.abilities[0].abilities)
            {
                if (ability == null)
                {
                    Weapons.Add("null");
                    continue;
                }
                Weapons.Add(ability._name);
            }
        }
        if (backpack.abilities[1].abilities.Count != 0)
        {
            foreach (Ability ability in backpack.abilities[1].abilities)
            {
                if (ability == null)
                {
                    Magic.Add("null");
                    continue;
                }
                Magic.Add(ability._name);
            }
        }
        if (backpack.abilities[2].abilities.Count != 0)
        {
            foreach (Ability ability in backpack.abilities[2].abilities)
            {
                if (ability == null)
                {
                    Skills.Add("null");
                    continue;
                }
                Skills.Add(ability._name);
            }
        }
        if (backpack.abilities[3].abilities.Count != 0)
        {
            foreach (Ability ability in backpack.abilities[3].abilities)
            {
                if (ability == null)
                {
                    Items.Add("null");
                    continue;
                }
                Items.Add(ability._name);
            }
        }

        if (backpack.playerBodies.Count != 0)
        {
            foreach (PlayerBody body in backpack.playerBodies)
            {
                if (body == null)
                {
                    Bodies.Add("null");
                    continue;
                }
                Bodies.Add(body._name);
                Debug.Log(body._name + " bodieSaved");
            }
        }
    }