BEPUphysicsDrawer.Models.InstancedModelDrawer.Add C# (CSharp) Метод

Add() публичный Метод

public Add ( BEPUphysicsDrawer.Models.ModelDisplayObject displayObject ) : void
displayObject BEPUphysicsDrawer.Models.ModelDisplayObject
Результат void
        public override void Add(ModelDisplayObject displayObject)
        {
            foreach (ModelDisplayObjectBatch batch in batches)
            {
                if (batch.Add(displayObject, this))
                    return;
            }
            //If we made it here, that means there was no batch that could handle the display object.
            //This could be because the batches were full, or it could be that this
            //display object is just really large (like a terrain) and violated the 
            //primitive count limit.

            //So throw the object in a new batch.
            //This will also allow a display object that is too large (like a 512x512 terrain) to be added to a batch,
            //so long as it is alone.

            var batchToAdd = new ModelDisplayObjectBatch(Game.GraphicsDevice);
            batches.Add(batchToAdd);
            batchToAdd.Add(displayObject, this);
        }

Usage Example

        /// <summary>
        /// Constructs a new demo.
        /// </summary>
        /// <param name="game">Game owning this demo.</param>
        public InverseKinematicsTestDemo(DemosGame game)
            : base(game)
        {
            cameraControl = new FreeCameraControlScheme(10, game.Camera, game);
            whitePixel = game.Content.Load<Texture2D>("whitePixel");
            game.Camera.Position = new Vector3(0, 3, 5);
            Box ground = new Box(new Vector3(0, 0, 0), 30, 1, 30);
            Space.Add(ground);
            Space.ForceUpdater.Gravity = new Vector3(0, -9.81f, 0);

            stateControlGroup = new StateControlGroup(game.Camera, controls);

            drawer = new InstancedModelDrawer(game);

            solver.ActiveSet.UseAutomass = true;
            solver.AutoscaleControlImpulses = true;
            solver.AutoscaleControlMaximumForce = float.MaxValue;
            solver.TimeStepDuration = .1f;
            solver.ControlIterationCount = 100;
            solver.FixerIterationCount = 10;
            solver.VelocitySubiterationCount = 3;

            BuildChain(new Vector3(-5, 2, 0));

            BuildStick(new Vector3(-10, 2, 0));

            BuildActionFigure(new Vector3(5, 6, -8));
            BuildActionFigure(new Vector3(5, 6, -3));
            BuildActionFigure(new Vector3(5, 6, 3));
            BuildActionFigure(new Vector3(5, 6, 8));

            BuildCyclicMesh(new Vector3(-5, 5, -5));

            //BuildJointTest(new Vector3(0, 5, 0));
            //BuildTinyTest(new Vector3(0, 15, 0));

            BuildRoboArmThing(new Vector3(0, 5, 0));

            BuildRing(new Vector3(0, 10, 8));

            //Create the display objects.
            Model cylinder = game.Content.Load<Model>("cylinder");
            for (int i = 0; i < bones.Count; i++)
            {
                var displayBone = new DisplayModel(cylinder, drawer);
                var completedBone = bones[i];
                completedBone.DisplayBone = displayBone;
                bones[i] = completedBone;
                drawer.Add(displayBone);
            }
        }