예제 #1
0
        private MotionEntity CreateUnit(Vector3 position)
        {
            var unit = new MotionEntity
            {
                MainGraphic = new MetaModel
                {
                    SkinnedMesh = new SkinnedMeshFromFile("goblin_blade_master1.x"),
                    Texture     = new TextureFromFile("goblin_blade_master1.png"),
                    World       = SkinnedMesh.InitSkinnedMeshFromMaya * Matrix.Scaling(0.1f, 0.1f, 0.1f),
                    IsBillboard = false,
                },

                /*Animation = "idle1",
                 * AnimationLoop = true,*/
                Translation = position
            };

            var mo = motionSimulation.CreateUnit();
            var lb = new Common.Bounding.Cylinder(Vector3.Zero, 1f, 0.5f);

            mo.LocalBounding  = lb;
            mo.Position       = position;
            unit.MotionObject = mo;

            unit.VisibilityLocalBounding = new MetaBoundingBox
            {
                Mesh           = ((MetaModel)unit.MainGraphic).SkinnedMesh,
                Transformation = ((MetaModel)unit.MainGraphic).World
            };

            Graphics.Renderer.Renderer.EntityAnimation ea = scene.View.Content.Peek <Graphics.Renderer.Renderer.EntityAnimation>(unit.MetaEntityAnimation);
            ea.PlayAnimation(new AnimationPlayParameters("idle1", true));

            return(unit);
        }
예제 #2
0
 public Destructible()
 {
     state = UnitState.Alive;
     EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 0.5f);
     RemoveOnDeath = true;
     RageYield     = 0;
     Armor         = 0;
     Team          = Team.Neutral;
     MaxHitPoints  = HitPoints = 600;
     Updateable    = true;
 }
예제 #3
0
        public DemonLord()
        {
            HitPoints               = MaxHitPoints = 20000;
            Armor                   = 0f;
            RunSpeed                = MaxRunSpeed = 3.5f;
            PhysicalWeight          = 5000;
            HeadOverBarHeight       = 5f;
            SplatRequiredDamagePerc = float.MaxValue;
            RageEnabled             = false;
            RunAnimationSpeed       = 0.3f;
            HitRadius               = 1.5f;
            SilverYield             = 600;
            RageLevel               = 1;

            MainGraphic = new MetaModel
            {
                AlphaRef         = 2,
                SkinnedMesh      = new SkinnedMeshFromFile("Models/Units/DemonLord1.x"),
                Texture          = new TextureFromFile("Models/Units/DemonLord1.png"),
                SpecularTexture  = new TextureFromFile("Models/Units/DemonLordSpecular1.png"),
                World            = SkinnedMesh.InitSkinnedMeshFromMaya * Matrix.Scaling(0.18f, 0.18f, 0.18f),
                HasAlpha         = false,
                IsBillboard      = false,
                CastShadows      = global::Graphics.Content.Priority.Never,
                ReceivesShadows  = global::Graphics.Content.Priority.High,
                ReceivesSpecular = global::Graphics.Content.Priority.High,
                SpecularExponent = 6,
            };
            VisibilityLocalBounding = new MetaBoundingBox
            {
                Mesh           = ((MetaModel)MainGraphic).SkinnedMesh,
                Transformation = ((MetaModel)MainGraphic).World
            };
            PickingLocalBounding = new Common.Bounding.Chain
            {
                Boundings = new object[]
                {
                    VisibilityLocalBounding,
                    new BoundingMetaMesh
                    {
                        SkinnedMeshInstance = MetaEntityAnimation,
                        Transformation      = ((MetaModel)MainGraphic).World
                    }
                },
                Shallow = true
            };
            PhysicsLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 4, 1f);

            AddAbility(new DemonThrust());
            AddAbility(new DemonWrath());
            AddAbility(new DemonLordCharge());
            AddAbility(new LavaDitchBash());
        }
        public GameEntity()
        {
            EditorSelectable = true;
            EditorMinRandomScale = 1;
            EditorMaxRandomScale = 1;
            EditorFollowGroundType = EditorFollowGroupType.Heightmap;
            EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 1f);
            Clickable = false;
            SeeThroughable = false;
            EditorLockTranslation = false;

            fader = new EntityFader(this);
        }
        public GameEntity()
        {
            EditorSelectable             = true;
            EditorMinRandomScale         = 1;
            EditorMaxRandomScale         = 1;
            EditorFollowGroundType       = EditorFollowGroupType.Heightmap;
            EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 1f);
            Clickable             = false;
            SeeThroughable        = false;
            EditorLockTranslation = false;

            fader = new EntityFader(this);
        }
예제 #6
0
 public Leaf1()
 {
     MainGraphic = new MetaModel
     {
         XMesh            = new MeshFromFile("Models/Props/Leaf1.x"),
         Texture          = new TextureFromFile("Models/Props/Leaf1.png"),
         SpecularTexture  = new TextureFromFile("Models/Props/LeafSpecular1.png"),
         World            = Matrix.Scaling(0.09f, 0.09f, 0.09f) * SkinnedMesh.InitSkinnedMeshFromMaya,
         Visible          = Priority.Low,
         CastShadows      = global::Graphics.Content.Priority.Low,
         ReceivesShadows  = Priority.High,
         ReceivesSpecular = Priority.Medium,
     };
     VisibilityLocalBounding      = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
     PickingLocalBounding         = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
     PhysicsLocalBounding         = null;
     EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 1, 0.25f);
     EditorRandomRotation         = true;
 }
예제 #7
0
 public Flower1()
 {
     MainGraphic = new MetaModel
     {
         XMesh           = new MeshFromFile("Models/Props/Flower1.x"),
         Texture         = new TextureFromFile("Models/Props/Flower1.png"),
         World           = Matrix.Scaling(0.1f, 0.1f, 0.1f) * SkinnedMesh.InitSkinnedMeshFromMaya,
         Visible         = Priority.Low,
         CastShadows     = global::Graphics.Content.Priority.Low,
         ReceivesShadows = Priority.Medium,
     };
     VisibilityLocalBounding      = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
     PickingLocalBounding         = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
     PhysicsLocalBounding         = null;
     EditorMinRandomScale         = 0.5f;
     EditorMaxRandomScale         = 2f;
     EditorRandomRotation         = true;
     EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 0.3f);
 }
예제 #8
0
        public Forestplants2()
        {
            MainGraphic = new MetaModel
            {
                XMesh           = new MeshFromFile("Models/Props/Forestplants2.x"),
                Texture         = new TextureFromFile("Models/Props/Forestplants1.png"),
                World           = Matrix.Scaling(0.16f, 0.16f, 0.16f) * SkinnedMesh.InitSkinnedMeshFromMaya,
                AlphaRef        = 4,
                HasAlpha        = true,
                Visible         = Priority.Low,
                CastShadows     = global::Graphics.Content.Priority.Never,
                ReceivesShadows = Priority.Medium,
            };

            VisibilityLocalBounding      = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
            PickingLocalBounding         = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
            PhysicsLocalBounding         = null;
            EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 0.1f);
            EditorRandomRotation         = true;
        }
예제 #9
0
        public AlligatorWine()
        {
            MainGraphic = new MetaModel
            {
                XMesh = new MeshFromFile("Models/Props/Bottle1.x"),
                Texture = new TextureFromFile("Models/Props/AWBottle1.png"),
                SpecularTexture = new TextureFromFile("Models/Props/PebbleSpecular1.png"),
                World = Matrix.Scaling(0.09f, 0.09f, 0.09f) * SkinnedMesh.InitSkinnedMeshFromMaya,
                Visible = Priority.Medium,
                CastShadows = global::Graphics.Content.Priority.Low,
                ReceivesShadows = Priority.High,
                ReceivesSpecular = Priority.Medium,
                SpecularExponent = 4,
            };

            VisibilityLocalBounding = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
            PickingLocalBounding = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
            PhysicsLocalBounding = null;
            EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 0.25f);
            EditorRandomRotation = true;
        }
예제 #10
0
        protected override void OnPaint(PaintEventArgs e)
        {
            e.Graphics.Clear(Color.White);

            var treeRoot = quadtree.DebugReturnRoot;

            heightCount = 0;
            if (treeRoot != null)
            {
                int depth = treeRoot.DebugReturnDepth;
                DrawQuadTreeNodeBackground(e.Graphics, treeRoot, depth);
                DrawQuadTreeNode(e.Graphics, treeRoot, 0, depth);
            }
            //Text = "Cells with height: " + heightCount;

            // draw origo
            int length = 10;

            e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(origo.X, origo.Y - length), new Point(origo.X, origo.Y + length));
            e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(origo.X - length, origo.Y), new Point(origo.X + length, origo.Y));

            if (rightButtonClicked)
            {
                // redraw culled objects with color
                float         radius     = 20f;
                var           pos        = ScreenToWorldCoords(mousePos);
                var           cyl        = new Common.Bounding.Cylinder(new Vector3(pos.X, pos.Y, 0), 1f, radius);
                List <Circle> list       = quadtree.Cull(cyl);
                int           colorIndex = 1;
                foreach (var c in list)
                {
                    c.Draw(e.Graphics, gridColors[colorIndex++ % gridColors.Length]);
                }

                Text = "Found " + list.Count + " element(s).";

                // draw cull circle
                e.Graphics.DrawEllipse(Pens.Red, mousePos.X - radius, mousePos.Y - radius, 2 * radius, 2 * radius);
            }
        }
예제 #11
0
        public override void Update(float dtime)
        {
            base.Update(dtime);

            if (motionSimulation.Running)
            {
                AdvanceFrame();
            }

            sceneRendererConnector.CullScene(null);
            sceneRendererConnector.UpdateAnimations(dtime);

            renderer.PreRender(dtime);
            Device9.Clear(SlimDX.Direct3D9.ClearFlags.Target | SlimDX.Direct3D9.ClearFlags.ZBuffer, Color.DarkSlateGray, 1f, 0);
            Device9.BeginScene();

            renderer.Render(dtime);

            foreach (var o in motionSimulation.All)
            {
                var proj = o as Common.IMotion.IProjectile;
                if (proj != null)
                {
                    Vector3 endpoint = proj.Position + dtime * proj.Velocity;
                    Draw3DLines(scene.Camera, Matrix.Identity, new Vector3[] { proj.Position, endpoint }, Color.Blue);
                }

                var umo = o as Common.IMotion.IUnit;
                if (umo != null)
                {
                    Common.Bounding.Cylinder cyl = (Common.Bounding.Cylinder)umo.WorldBounding;
                    DrawCircle(scene.Camera, Matrix.Identity, cyl.Position, cyl.Radius, 12, Color.Orange);
                    DrawCircle(scene.Camera, Matrix.Identity, cyl.Position + new Vector3(0, 0, cyl.Height), cyl.Radius, 12, Color.Orange);
                }
            }

            Device9.EndScene();

            Application.MainWindow.Text = "FPS: " + FPS + ", Units hit last shot: " + unitsHitLastShot;
        }
예제 #12
0
        public Unit()
        {
            CanControlMovementBlockers = 0;
            CanControlRotationBlockers = 0;
            InRangeRadius           = 6;
            PhysicalWeight          = 1;
            GraphicalTurnSpeed      = 5f;
            RaiseFromCorpseTime     = 2;
            PistolAmmo              = 0;
            InCombat                = false;
            IsDestructible          = true;
            RunAnimationSpeed       = 1;
            BackingAnimationSpeed   = 1;
            RunningBackwards        = false;
            MaxRunSpeed             = 4;
            MaxWaterDepth           = 0.5f;
            RageYield               = 1;
            SplatRequiredDamagePerc = 0;

            MainGraphic = new MetaModel
            {
                SkinnedMesh = new SkinnedMeshFromFile("Models/Units/Zombie1.x"),
                Texture     = new TextureFromFile("Models/Units/Zombie1.png"),
                World       = SkinnedMesh.InitSkinnedMeshFromMaya * Matrix.Scaling(0.1f, 0.1f, 0.1f),
                IsBillboard = false,
                AlphaRef    = 254,
                Opacity     = 1.0f
            };
            PickingLocalBounding = VisibilityLocalBounding = new MetaBoundingBox
            {
                Mesh           = ((MetaModel)MainGraphic).SkinnedMesh,
                Transformation = ((MetaModel)MainGraphic).World
            };
            PhysicsLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 2.5f, 0.5f)
            {
                SolidRayIntersection = true
            };
            EditorRandomRotation = true;
        }
예제 #13
0
 public Swamptree2()
 {
     MainGraphic = new MetaModel
     {
         XMesh            = new MeshFromFile("Models/Props/Swamptree2.x"),
         Texture          = new TextureFromFile("Models/Props/Swamptree1.png"),
         SpecularTexture  = new TextureFromFile("Models/Props/SwamptreeSpecular1.png"),
         World            = Matrix.Scaling(0.09f, 0.09f, 0.09f) * SkinnedMesh.InitSkinnedMeshFromMaya,
         AlphaRef         = 100,
         Visible          = Priority.High,
         CastShadows      = global::Graphics.Content.Priority.High,
         ReceivesShadows  = Priority.High,
         ReceivesSpecular = Priority.Medium,
         SpecularExponent = 4,
     };
     VisibilityLocalBounding      = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
     PickingLocalBounding         = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
     PhysicsLocalBounding         = new Common.Bounding.Cylinder(Vector3.Zero, 3, 0.5f);
     EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 0.6f);
     EditorRandomRotation         = true;
     SeeThroughable = true;
 }
예제 #14
0
        public Rottentree1()
        {
            MainGraphic = new MetaModel
            {
                XMesh           = new MeshFromFile("Models/Props/Rottentree1.x"),
                Texture         = new TextureFromFile("Models/Props/Rottentree1.png"),
                World           = Matrix.Scaling(0.16f, 0.16f, 0.16f) * SkinnedMesh.InitSkinnedMeshFromMaya,
                AlphaRef        = 254,
                Visible         = Priority.High,
                CastShadows     = global::Graphics.Content.Priority.High,
                ReceivesShadows = Priority.High,
            };

            VisibilityLocalBounding = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
            PickingLocalBounding    = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
            PhysicsLocalBounding    = new Common.Bounding.Cylinder(Vector3.Zero, 3, 1.5f);
            EditorMinRandomScale    = 0.5f;
            EditorMaxRandomScale    = 2f;
            EditorRandomRotation    = true;
            IsDestructible          = true;
            MaxHitPoints            = HitPoints = 200;
            Dynamic = true;
        }
예제 #15
0
        protected override void OnPaint(PaintEventArgs e)
        {
            e.Graphics.Clear(Color.White);

            var treeRoot = quadtree.DebugReturnRoot;
            heightCount = 0;
            if (treeRoot != null)
            {
                int depth = treeRoot.DebugReturnDepth;
                DrawQuadTreeNodeBackground(e.Graphics, treeRoot, depth);
                DrawQuadTreeNode(e.Graphics, treeRoot, 0, depth);
            }
            //Text = "Cells with height: " + heightCount;

            // draw origo
            int length = 10;
            e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(origo.X, origo.Y - length), new Point(origo.X, origo.Y + length));
            e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(origo.X - length, origo.Y), new Point(origo.X + length, origo.Y));

            if (rightButtonClicked)
            {
                // redraw culled objects with color
                float radius = 20f;
                var pos = ScreenToWorldCoords(mousePos);
                var cyl = new Common.Bounding.Cylinder(new Vector3(pos.X, pos.Y, 0), 1f, radius);
                List<Circle> list = quadtree.Cull(cyl);
                int colorIndex = 1;
                foreach (var c in list)
                    c.Draw(e.Graphics, gridColors[colorIndex++ % gridColors.Length]);

                Text = "Found " + list.Count + " element(s).";

                // draw cull circle
                e.Graphics.DrawEllipse(Pens.Red, mousePos.X - radius, mousePos.Y - radius, 2 * radius, 2 * radius);
            }
        }
예제 #16
0
        public DemonLord()
        {
            HitPoints = MaxHitPoints = 20000;
            Armor = 0f;
            RunSpeed = MaxRunSpeed = 3.5f;
            PhysicalWeight = 5000;
            HeadOverBarHeight = 5f;
            SplatRequiredDamagePerc = float.MaxValue;
            RageEnabled = false;
            RunAnimationSpeed = 0.3f;
            HitRadius = 1.5f;
            SilverYield = 600;
            RageLevel = 1;

            MainGraphic = new MetaModel
            {
                AlphaRef = 2,
                SkinnedMesh = new SkinnedMeshFromFile("Models/Units/DemonLord1.x"),
                Texture = new TextureFromFile("Models/Units/DemonLord1.png"),
                SpecularTexture = new TextureFromFile("Models/Units/DemonLordSpecular1.png"),
                World = SkinnedMesh.InitSkinnedMeshFromMaya * Matrix.Scaling(0.18f, 0.18f, 0.18f),
                HasAlpha = false,
                IsBillboard = false,
                CastShadows = global::Graphics.Content.Priority.Never,
                ReceivesShadows = global::Graphics.Content.Priority.High,
                ReceivesSpecular = global::Graphics.Content.Priority.High,
                SpecularExponent = 6,
            };
            VisibilityLocalBounding = new MetaBoundingBox
            {
                Mesh = ((MetaModel)MainGraphic).SkinnedMesh,
                Transformation = ((MetaModel)MainGraphic).World
            };
            PickingLocalBounding = new Common.Bounding.Chain
            {
                Boundings = new object[]
                {
                    VisibilityLocalBounding,
                    new BoundingMetaMesh
                    {
                        SkinnedMeshInstance = MetaEntityAnimation,
                        Transformation = ((MetaModel)MainGraphic).World
                    }
                },
                Shallow = true
            };
            PhysicsLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 4, 1f);

            AddAbility(new DemonThrust());
            AddAbility(new DemonWrath());
            AddAbility(new DemonLordCharge());
            AddAbility(new LavaDitchBash());
        }
예제 #17
0
        private MotionEntity CreateUnit(Vector3 position)
        {
            var unit = new MotionEntity
            {
                MainGraphic = new MetaModel
                {
                    SkinnedMesh = new SkinnedMeshFromFile("goblin_blade_master1.x"),
                    Texture = new TextureFromFile("goblin_blade_master1.png"),
                    World = SkinnedMesh.InitSkinnedMeshFromMaya * Matrix.Scaling(0.1f, 0.1f, 0.1f),
                    IsBillboard = false,
                },
                /*Animation = "idle1",
                AnimationLoop = true,*/
                Translation = position
            };

            var mo = motionSimulation.CreateUnit();
            var lb = new Common.Bounding.Cylinder(Vector3.Zero, 1f, 0.5f);
            mo.LocalBounding = lb;
            mo.Position = position;
            unit.MotionObject = mo;

            unit.VisibilityLocalBounding = new MetaBoundingBox
            {
                Mesh = ((MetaModel)unit.MainGraphic).SkinnedMesh,
                Transformation = ((MetaModel)unit.MainGraphic).World
            };

            Graphics.Renderer.Renderer.EntityAnimation ea = scene.View.Content.Peek<Graphics.Renderer.Renderer.EntityAnimation>(unit.MetaEntityAnimation);
            ea.PlayAnimation(new AnimationPlayParameters("idle1", true));

            return unit;
        }
예제 #18
0
 public Cannonball2()
 {
     MainGraphic = new MetaModel
     {
         XMesh = new MeshFromFile("Models/Props/Cannonball2.x"),
         Texture = new TextureFromFile("Models/Props/Cannonball1.png"),
         SpecularTexture = new TextureFromFile("Models/Props/CannonballSpecular1.png"),
         World = Matrix.Scaling(0.13f, 0.13f, 0.13f) * SkinnedMesh.InitSkinnedMeshFromMaya,
         Visible = Priority.Low,
         CastShadows = global::Graphics.Content.Priority.Low,
         ReceivesShadows = Priority.High,
         ReceivesSpecular = Priority.High,
     };
     PickingLocalBounding = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
     PhysicsLocalBounding = null;
     EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 1.3f);
     VisibilityLocalBounding = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
     EditorRandomRotation = true;
 }
예제 #19
0
        public FireplaceBurning1()
        {
            MainGraphic = new MetaModel
            {
                XMesh = new MeshFromFile("Models/Props/Fireplace1.x"),
                Texture = new TextureFromFile("Models/Props/FireplaceBurning1.png"),
                World = Matrix.Scaling(0.14f, 0.14f, 0.14f) * SkinnedMesh.InitSkinnedMeshFromMaya,
                AlphaRef = 254,
                Visible = Priority.High,
                CastShadows = global::Graphics.Content.Priority.Never,
                ReceivesShadows = Priority.Never,
                ReceivesAmbientLight = Priority.Never,
                ReceivesDiffuseLight = Priority.Never,
            };

            AddChild(new Effects.PulsatingLight { Translation = Vector3.UnitZ * 0.5f });

            PickingLocalBounding = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
            PhysicsLocalBounding = null;
            EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 1.3f);

            VisibilityLocalBounding = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
            EditorRandomRotation = true;
            Updateable = true;
            Dynamic = true;
        }
예제 #20
0
 public static bool Intersect(Common.Bounding.Cylinder a, BoundingMetaMesh b, out object intersection)
 {
     // Hack! Only compares position
     return(Common.Intersection.Intersect(a, Common.Boundings.Translation(b), out intersection));
 }
예제 #21
0
        public Shrubbery1()
        {
            MainGraphic = new MetaModel
            {
                XMesh = new MeshFromFile("Models/Props/Shrubbery1.x"),
                Texture = new TextureFromFile("Models/Props/Shrub1.png"),
                World = Matrix.Scaling(0.1f, 0.1f, 0.1f) * SkinnedMesh.InitSkinnedMeshFromMaya,
                AlphaRef = 100,
                Visible = Priority.Medium,
                CastShadows = global::Graphics.Content.Priority.Low,
                ReceivesShadows = Priority.High,

            };
            VisibilityLocalBounding = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
            PickingLocalBounding = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
            PhysicsLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 2, 0.6f);
            EditorPlacementLocalBounding = PhysicsLocalBounding;
            EditorMinRandomScale = 0.5f;
            EditorMaxRandomScale = 2f;
            EditorRandomRotation = true;
        }
예제 #22
0
 public Treetrunk2()
 {
     MainGraphic = new MetaModel
     {
         XMesh = new MeshFromFile("Models/Props/Treetrunk2.x"),
         Texture = new TextureFromFile("Models/Props/Treetrunk1.png"),
         SpecularTexture = new TextureFromFile("Models/Props/TreetrunkSpecular1.png"),
         World = Matrix.Scaling(0.08f, 0.08f, 0.08f) * SkinnedMesh.InitSkinnedMeshFromMaya,
         Visible = Priority.High,
         CastShadows = global::Graphics.Content.Priority.Medium,
         ReceivesShadows = Priority.High,
         ReceivesSpecular = Priority.Medium,
         SpecularExponent = 4,
     };
     VisibilityLocalBounding = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
     PickingLocalBounding = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
     var physicsMesh = new MeshFromFile("Models/Props/Treetrunk2Pathmesh.x");
     PhysicsLocalBounding = CreatePhysicsMeshBounding(new MetaModel { XMesh = physicsMesh, World = ((MetaModel)MainGraphic).World });
     EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 1.5f);
     EditorRandomRotation = true;
 }
예제 #23
0
        public Tallgrass3()
        {
            MainGraphic = new MetaModel
            {
                XMesh = new MeshFromFile("Models/Props/Tallgrass3.x"),
                Texture = new TextureFromFile("Models/Props/Tallgrass1.png"),
                World = Matrix.Scaling(0.12f, 0.08f, 0.12f) * SkinnedMesh.InitSkinnedMeshFromMaya,
                AlphaRef = 100,
                Visible = Priority.Medium,
                CastShadows = global::Graphics.Content.Priority.Never,
                ReceivesShadows = Priority.High,
                Animate = Priority.Never
            };

            VisibilityLocalBounding = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
            PickingLocalBounding = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
            PhysicsLocalBounding = null;
            EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 0.25f);
            EditorRandomRotation = true;
        }
예제 #24
0
 public SpecualSphere1()
 {
     MainGraphic = new MetaModel
     {
         XMesh = new MeshFromFile("Sphere1.x"),
         Texture = new TextureConcretizer { TextureDescription = new global::Graphics.Software.Textures.SingleColorTexture(System.Drawing.Color.Black) },
         SpecularTexture = new TextureConcretizer { TextureDescription = new global::Graphics.Software.Textures.SingleColorTexture(System.Drawing.Color.White) },
         World = Matrix.Scaling(0.1f, 0.1f, 0.1f) * SkinnedMesh.InitSkinnedMeshFromMaya * Matrix.Translation(0, 0, 1),
         AlphaRef = 100,
         Visible = Priority.High,
         CastShadows = global::Graphics.Content.Priority.High,
         ReceivesShadows = Priority.High,
         Animate = Priority.Medium,
         ReceivesSpecular = Priority.Medium,
     };
     VisibilityLocalBounding = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
     PickingLocalBounding = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
     PhysicsLocalBounding = null;
     EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 0.45f);
     EditorRandomRotation = true;
 }
예제 #25
0
        public SkySphere()
        {
            MainGraphic = new MetaModel
            {
                XMesh = new MeshFromFile("Sphere1.x"),
                Texture = new TextureFromFile("background.png"),
                World = Matrix.Scaling(0.1f, 0.1f, 0.1f) * SkinnedMesh.InitSkinnedMeshFromMaya,
                ReceivesAmbientLight = Priority.Never,
                ReceivesDiffuseLight = Priority.Never,
            };

            //VisibilityLocalBounding = CreateBoundingBoxFromModel((MetaModel)Graphic);
            VisibilityLocalBounding = new Common.Bounding.NonfittableBounding(new BoundingBox(new Vector3(-1000, -1000, -1000), new Vector3(1000, 1000, 1000)), false, true);
            PickingLocalBounding = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
            PhysicsLocalBounding = null;
            EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 1f);
            EditorRandomRotation = true;
        }
예제 #26
0
        public Forestplants2()
        {
            MainGraphic = new MetaModel
            {
                XMesh = new MeshFromFile("Models/Props/Forestplants2.x"),
                Texture = new TextureFromFile("Models/Props/Forestplants1.png"),
                World = Matrix.Scaling(0.16f, 0.16f, 0.16f) * SkinnedMesh.InitSkinnedMeshFromMaya,
                AlphaRef = 4,
                HasAlpha = true,
                Visible = Priority.Low,
                CastShadows = global::Graphics.Content.Priority.Never,
                ReceivesShadows = Priority.Medium,
            };

            VisibilityLocalBounding = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
            PickingLocalBounding = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
            PhysicsLocalBounding = null;
            EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 0.1f);
            EditorRandomRotation = true;
        }
예제 #27
0
        public Fence4()
        {
            MainGraphic = new MetaModel
            {
                XMesh = new MeshFromFile("Models/Props/Fence4.x"),
                Texture = new TextureFromFile("Models/Props/Fence1.png"),
                World = Matrix.Scaling(0.14f, 0.14f, 0.18f) * SkinnedMesh.InitSkinnedMeshFromMaya,
                Visible = Priority.High,
                CastShadows = global::Graphics.Content.Priority.Medium,
                ReceivesShadows = Priority.High,
            };

            VisibilityLocalBounding = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
            PickingLocalBounding = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
            PhysicsLocalBounding = new Common.Bounding.Box { LocalBoundingBox = new BoundingBox(new Vector3(-0.31f, -1.4f, -0.5f), new Vector3(0.31f, 1.4f, 0.9f)), Transformation = Matrix.Scaling(1, 1, 0.5f) };

            EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 1f);
            EditorRandomRotation = true;
        }
예제 #28
0
        public Rottentree1()
        {
            MainGraphic = new MetaModel
            {
                XMesh = new MeshFromFile("Models/Props/Rottentree1.x"),
                Texture = new TextureFromFile("Models/Props/Rottentree1.png"),
                World = Matrix.Scaling(0.16f, 0.16f, 0.16f) * SkinnedMesh.InitSkinnedMeshFromMaya,
                AlphaRef = 254,
                Visible = Priority.High,
                CastShadows = global::Graphics.Content.Priority.High,
                ReceivesShadows = Priority.High,
            };

            VisibilityLocalBounding = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
            PickingLocalBounding = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
            PhysicsLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 1.5f);
            EditorMinRandomScale = 0.5f;
            EditorMaxRandomScale = 2f;
            EditorRandomRotation = true;
            IsDestructible = true;
            MaxHitPoints = HitPoints = 200;
            Dynamic = true;
        }
예제 #29
0
 protected Object()
 {
     IsColliding   = false;
     LocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 1, 1);
 }
예제 #30
0
 public Swamptree2()
 {
     MainGraphic = new MetaModel
     {
         XMesh = new MeshFromFile("Models/Props/Swamptree2.x"),
         Texture = new TextureFromFile("Models/Props/Swamptree1.png"),
         SpecularTexture = new TextureFromFile("Models/Props/SwamptreeSpecular1.png"),
         World = Matrix.Scaling(0.09f, 0.09f, 0.09f) * SkinnedMesh.InitSkinnedMeshFromMaya,
         AlphaRef = 100,
         Visible = Priority.High,
         CastShadows = global::Graphics.Content.Priority.High,
         ReceivesShadows = Priority.High,
         ReceivesSpecular = Priority.Medium,
         SpecularExponent = 4,
     };
     VisibilityLocalBounding = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
     PickingLocalBounding = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
     PhysicsLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 0.5f);
     EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 0.6f);
     EditorRandomRotation = true;
     SeeThroughable = true;
 }
예제 #31
0
        public Unit()
        {
            CanControlMovementBlockers = 0;
            CanControlRotationBlockers = 0;
            InRangeRadius = 6;
            PhysicalWeight = 1;
            GraphicalTurnSpeed = 5f;
            RaiseFromCorpseTime = 2;
            PistolAmmo = 0;
            InCombat = false;
            IsDestructible = true;
            RunAnimationSpeed = 1;
            BackingAnimationSpeed = 1;
            RunningBackwards = false;
            MaxRunSpeed = 4;
            MaxWaterDepth = 0.5f;
            RageYield = 1;
            SplatRequiredDamagePerc = 0;

            MainGraphic = new MetaModel
            {
                SkinnedMesh = new SkinnedMeshFromFile("Models/Units/Zombie1.x"),
                Texture = new TextureFromFile("Models/Units/Zombie1.png"),
                World = SkinnedMesh.InitSkinnedMeshFromMaya * Matrix.Scaling(0.1f, 0.1f, 0.1f),
                IsBillboard = false,
                AlphaRef = 254,
                Opacity = 1.0f
            };
            PickingLocalBounding = VisibilityLocalBounding = new MetaBoundingBox
            {
                Mesh = ((MetaModel)MainGraphic).SkinnedMesh,
                Transformation = ((MetaModel)MainGraphic).World
            };
            PhysicsLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 2.5f, 0.5f) { SolidRayIntersection = true };
            EditorRandomRotation = true;
        }
예제 #32
0
 public static bool Intersect(Common.Bounding.Cylinder a, MetaBoundingBox b, out object intersection)
 {
     return(Common.Intersection.Intersect(a, b.GetBoundingBox(content).Value, out intersection));
 }
예제 #33
0
        public Torch1()
        {
            MainGraphic = new MetaModel
            {
                SkinnedMesh = new SkinnedMeshFromFile("Models/Props/Torch1.x"),
                Texture = new TextureFromFile("Models/Props/Torch1.png"),
                World = Matrix.Scaling(0.1f, 0.1f, 0.1f) * SkinnedMesh.InitSkinnedMeshFromMaya,
                AlphaRef = 150,
                Visible = Priority.High,
                CastShadows = global::Graphics.Content.Priority.Never,
                ReceivesShadows = Priority.Never,
                ReceivesSpecular = Priority.Never,
                ReceivesAmbientLight = Priority.Never,
                ReceivesDiffuseLight = Priority.Never,
            };
            VisibilityLocalBounding = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
            EditorRandomRotation = true;

            PickingLocalBounding = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
            PhysicsLocalBounding = null;
            EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 0.45f);

            SeeThroughable = true;
        }
예제 #34
0
        public Bench2()
        {
            MainGraphic = new MetaModel
            {
                XMesh = new MeshFromFile("Models/Props/Bench2.x"),
                Texture = new TextureFromFile("Models/Props/Bench1.png"),
                SpecularTexture = new TextureFromFile("Models/Props/BenchSpecular1.png"),
                World = Matrix.Scaling(0.13f, 0.13f, 0.13f) * SkinnedMesh.InitSkinnedMeshFromMaya,
                Visible = Priority.High,
                CastShadows = global::Graphics.Content.Priority.Medium,
                ReceivesShadows = Priority.High,
                ReceivesSpecular = Priority.Medium,
            };

            VisibilityLocalBounding = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
            PickingLocalBounding = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
            PhysicsLocalBounding = new Common.Bounding.Box { LocalBoundingBox = new BoundingBox(new Vector3(-1.05f, -0.15f, -0.48f), new Vector3(1.05f, 0.76f, 1.14f)) };
            EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 1.1f);
            EditorRandomRotation = true;
        }
예제 #35
0
 protected Object()
 {
     IsColliding = false;
     LocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 1, 1);
 }
예제 #36
0
        public Fireplace1()
        {
            MainGraphic = new MetaModel
            {
                XMesh = new MeshFromFile("Models/Props/Fireplace1.x"),
                Texture = new TextureFromFile("Models/Props/Fireplace1.png"),
                World = Matrix.Scaling(0.14f, 0.14f, 0.14f) * SkinnedMesh.InitSkinnedMeshFromMaya,
                AlphaRef = 254,
                Visible = Priority.Medium,
                CastShadows = global::Graphics.Content.Priority.Low,
                ReceivesShadows = Priority.High,
            };

            VisibilityLocalBounding = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
            PickingLocalBounding = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
            PhysicsLocalBounding = null;
            EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 1.3f);
            EditorRandomRotation = true;
            Dynamic = true;
        }
예제 #37
0
 public MaincharCinematic()
 {
     MainGraphic = new MetaModel
     {
         SkinnedMesh = new SkinnedMeshFromFile("Models/units/MaincharCinematic1.x"),
         Texture = new TextureFromFile("Models/Units/MainCharacter1.png"),
         SpecularTexture = new TextureFromFile("Models/Units/MainCharacterSpecular1.png"),
         World = Matrix.Scaling(0.18f, 0.18f, 0.18f) * SkinnedMesh.InitSkinnedMeshFromMaya,
         Visible = Priority.High,
         CastShadows = global::Graphics.Content.Priority.High,
         ReceivesShadows = Priority.High,
         Animate = Priority.High,
         ReceivesSpecular = Priority.High,
         SpecularExponent = 6,
     };
     VisibilityLocalBounding = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
     PickingLocalBounding = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
     PhysicsLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 0.25f);
     EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 0.45f);
     EditorRandomRotation = true;
     SeeThroughable = true;
 }
예제 #38
0
 public DestructibleChest()
 {
     MainGraphic = new MetaModel
     {
         XMesh = new MeshFromFile("Models/Props/Chest1.x"),
         Texture = new TextureFromFile("Models/Props/Chest1.png"),
         SpecularTexture = new TextureFromFile("Models/Props/ChestSpecular1.png"),
         World = Matrix.Scaling(0.15f, 0.15f, 0.15f) * SkinnedMesh.InitSkinnedMeshFromMaya,
         Visible = Priority.High,
         CastShadows = global::Graphics.Content.Priority.High,
         ReceivesShadows = Priority.High,
         ReceivesSpecular = Priority.Medium,
         SpecularExponent = 8,
     };
     VisibilityLocalBounding = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
     PickingLocalBounding = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
     PhysicsLocalBounding = null;
     EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 1.5f);
     EditorRandomRotation = true;
     IsDestructible = true;
     HitPoints = MaxHitPoints = 30;
     Updateable = true;
     Dynamic = true;
 }
 public void Draw(Matrix world, Common.Bounding.Cylinder bounding, Color color)
 {
     View.DrawCircle(camera, world, bounding.Position, bounding.Radius, 12, color);
     View.DrawCircle(camera, world, bounding.Position + new Vector3(0, 0, bounding.Height), bounding.Radius, 12, color);
 }
예제 #40
0
 public BulletHolePlane1()
 {
     MainGraphic = new MetaModel
     {
         XMesh = new MeshConcretize
         {
             MeshDescription = new Graphics.Software.Meshes.IndexedPlane
             {
                 Position = Vector3.Zero,
                 Size = new Vector2(1, 1),
                 UVMin = new Vector2(0, 0),
                 UVMax = new Vector2(1, 1),
                 Facings = global::Graphics.Facings.Frontside
             },
             Layout = global::Graphics.Software.Vertex.PositionNormalTexcoord.Instance
         },
         World = Matrix.Scaling(0.3f, 0.3f, 1) * Matrix.Translation(0, 0, 0.1f),
         Texture = new TextureFromFile("Models/Effects/BulletHit1.png"),
         HasAlpha = true,
         Opacity = 0.5f,
         DontSort = true,
     };
     VisibilityLocalBounding = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
     PickingLocalBounding = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
     PhysicsLocalBounding = null;
     EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 0.1f);
     EditorRandomRotation = true;
     AutoFadeoutTime = 10f;
     FadeoutTime = 1f;
     Updateable = true;
 }
예제 #41
0
 public LavaMist1()
 {
     MainGraphic = new MetaModel
     {
         SkinnedMesh = new SkinnedMeshFromFile("Models/Effects/LavaMist1.x"),
         World = Matrix.Scaling(0.1f, 0.1f, 0.1f) * SkinnedMesh.InitSkinnedMeshFromMaya,
         Texture = new TextureFromFile("Models/Effects/LavaMist1.png"),
         HasAlpha = true,
         DontSort = true,
         ReceivesAmbientLight = Priority.Never,
         ReceivesDiffuseLight = Priority.Never,
     };
     VisibilityLocalBounding = CreateBoundingBoxFromModel((MetaModel)MainGraphic);
     PickingLocalBounding = CreateBoundingMeshFromModel((MetaModel)MainGraphic);
     PhysicsLocalBounding = null;
     EditorPlacementLocalBounding = new Common.Bounding.Cylinder(Vector3.Zero, 3, 0.1f);
     EditorRandomRotation = true;
     FadeoutTime = 1f;
     Updateable = false;
 }