Beispiel #1
0
        public override void Initialize(Core.Architecture.Scene scene)
        {
            // Setup materials from globals
            this.adhocMaterials.Clear();
            this.materialList = world.Components <MaterialListComponent>().FirstOrDefault();
            Debug.Assert(this.materialList != null);
            var allMaterials = this.materialList.GetPhysicsMaterials();

            this.globalMaterials    = new Material[allMaterials.Length + 1];
            this.globalMaterials[0] = this.defaultMat;
            Debug.Assert(allMaterials.Length > allMaterials.Max(m => m.Id));

            foreach (var mat in allMaterials)
            {
                this.GetOrCreateMaterial(mat.Id);
            }

            // Cook terrain and static geom meshes
            var terrains = world.Components <StaticTerrainComponent>();

            foreach (var terrain in terrains)
            {
                AddTerrain(terrain);
            }

            var sceneries = world.Components <StaticGeometryComponent>();

            foreach (var scenery in sceneries)
            {
                AddStaticGeom(scenery);
            }

            var rigidBodies = this.world.Components <RigidBodyComponent>();

            foreach (var body in rigidBodies)
            {
                AddRigidBodyComponent(body);
            }

            var movers = this.world.Components <MoverComponent>();

            foreach (var mover in movers)
            {
                AddCharacterController(mover);
            }

            var triggers = this.world.Components <TriggerGeometryComponent>();

            foreach (var trigger in triggers)
            {
                AddTrigger(trigger);
            }

            scene.OnEntityAdd    += this.AddEntity;
            scene.OnEntityRemove += this.RemoveEntity;
        }
Beispiel #2
0
        public Entity FromGlobals()
        {
            var globalEntity = new GlobalSettings();

            globalEntity.FriendlyName = "Globals";
            var globalMaterials = new MaterialListComponent(globalEntity);

            for (var i = 0; i < this.Map.Globals.MaterialDefinitions.Length; i++)
            {
                var def = this.Map.Globals.MaterialDefinitions[i];
                var mat = new PhysicsMaterial(i, def.Friction, def.Friction, def.Restitution);

                globalMaterials.AddPhysicsMaterial(mat);
            }

            globalEntity.SetComponents(new Component[] { globalMaterials });
            return(globalEntity);
        }