示例#1
0
        public Chopper() : base("chopper")
        {
            Color chopperColor = Color.Red;

            this.AddComponent(new ChopperController());

            ProceduralShape body = new ProceduralCuboid(0.15f, 0.3f, 0.15f);

            body.SetColor(chopperColor);
            RenderGeometryComponent renderGeom = new RenderGeometryComponent(body);
            EffectRenderComponent   effectComp = new EffectRenderComponent(EffectLoader.LoadSM5Effect("flatshaded"));
            ShadowCasterComponent   shadowComp = new ShadowCasterComponent();

            AddComponent(new PhysicsComponent(true, true, PhysicsMeshType.box));


            AddComponent(renderGeom);
            AddComponent(effectComp);
            AddComponent(shadowComp);

            var rotorCuboid = new ProceduralCuboid(0.03f, 0.6f, 0.03f);

            rotorCuboid.SetColor(chopperColor);
            GameObject rotor = GameObjectFactory.CreateRenderableGameObjectFromShape(rotorCuboid, EffectLoader.LoadSM5Effect("flatshaded"));

            rotor.Transform.RelativeTransform.Translation = new Vector3(0, 0.2f, 0);
            rotor.AddComponent(new RotatorComponent(Vector3.Up, 0.1f));
            rotor.AddComponent(new ShadowCasterComponent());
            SystemCore.GameObjectManager.AddAndInitialiseGameObject(rotor);
            AddChild(rotor);
        }
示例#2
0
        public Carrier() : base()
        {
            Color carrierColor = Color.Red;

            this.AddComponent(new CarrierController());

            ProceduralShape body = new ProceduralCuboid(1f, 2f, 0.5f);

            body.SetColor(carrierColor);
            RenderGeometryComponent renderGeom = new RenderGeometryComponent(body);
            EffectRenderComponent   effectComp = new EffectRenderComponent(EffectLoader.LoadSM5Effect("flatshaded"));
            ShadowCasterComponent   shadowComp = new ShadowCasterComponent();

            AddComponent(new PhysicsComponent(true, true, PhysicsMeshType.box));
            AddComponent(renderGeom);
            AddComponent(effectComp);
            AddComponent(shadowComp);



            var conTower = new ProceduralCuboid(0.25f, 0.25f, 0.35f);

            conTower.SetColor(carrierColor);
            GameObject conT = GameObjectFactory.CreateRenderableGameObjectFromShape(conTower, EffectLoader.LoadSM5Effect("flatshaded"));

            conT.Transform.RelativeTransform.Translation = new Vector3(0.8f, 0.8f, 0);
            conT.AddComponent(new ShadowCasterComponent());
            SystemCore.GameObjectManager.AddAndInitialiseGameObject(conT);
            AddChild(conT);
        }
示例#3
0
        public MiniPlanet(Vector3 startPosition, float planetRadius, IModule noiseModule, int heightMapVertCount, float heightMapScale, Color landColor, Color oceanColour, bool useAtmosphere = false,
                          float innerAtmosphereRatio = 0.97f, float outerAtmosphereRatio = 1.1f, float atmosphericScale = 30, float groundScale = 20, float verticalScale = 1f)
        {
            this.verticalScale = verticalScale;
            this.startPosition = startPosition;
            this.planetRadius  = planetRadius;

            this.noiseModule            = noiseModule;
            this.heightMapVertCount     = heightMapVertCount;
            this.heightMapScale         = heightMapScale;
            this.originalHeightMapScale = heightMapScale;
            this.terrainColor           = landColor;
            this.oceanColour            = oceanColour;
            this.useAtmosphere          = useAtmosphere;
            this.innerAtmosphereRatio   = innerAtmosphereRatio;
            this.outerAtmosphereRatio   = outerAtmosphereRatio;
            this.atmosphericScale       = atmosphericScale;
            this.groundScale            = groundScale;

            if (!useAtmosphere)
            {
                planetEffect = EffectLoader.LoadSM5Effect("flatshaded").Clone();
                GenerateGeometry();
            }
            else
            {
                GenerateAtmosphereAndGeometry(innerAtmosphereRatio, outerAtmosphereRatio, atmosphericScale, groundScale);
            }


            childPlanets = new List <MiniPlanet>();
        }
    // 从XML中载入效果信息
    public void LoadEffectFromXML()
    {
        // 为Effect类以及全部子类初始化静态变量
        Effect InitEffect = new Effect();

        InitEffect.SetMainGameController(MainGameController);

        string filePath = Application.dataPath + "/Resources/Effect.xml";

        EffectLoader NewEffectLoader = new EffectLoader();

        if (File.Exists(filePath))
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(filePath);
            XmlNodeList node = xmlDoc.SelectSingleNode("Effect").ChildNodes;
            foreach (XmlElement EffectInfo in node)
            {
                Effect NewEffect = null;

                foreach (XmlElement EffectInfoItem in EffectInfo.ChildNodes)
                {
                    if (EffectInfoItem.Name == "EffectType")
                    {
                        NewEffect = NewEffectLoader.GetNewEffectByType(EffectInfoItem.InnerText);
                    }
                    else if (EffectInfoItem.Name == "EffectSubInfo")
                    {
                        NewEffect.LoadInfoFromXML(EffectInfoItem);
                    }
                }
                AddEffect(NewEffect);
            }
        }
    }
示例#5
0
        private void SetUpGameWorld()
        {
            //AtmosphericScatteringGround

            float radius = 6000;

            earth = new Planet("earth", new Vector3(0, 0, 0),
                               NoiseGenerator.FastPlanet(radius),
                               EffectLoader.LoadSM5Effect("flatshaded").Clone(),
                               radius, Color.DarkSeaGreen.ChangeTone(-100), Color.SaddleBrown, Color.SaddleBrown.ChangeTone(-10), 0);
            //earth.AddAtmosphere();
            SystemCore.GameObjectManager.AddAndInitialiseGameObject(earth);


            mouseCamera.SetPositionAndLook(new Vector3(0, radius + 200, 0), (float)Math.PI, (float)-Math.PI / 5);


            duneBuggyOne = new DuneBuggy(PlayerIndex.One, Color.Red, new Vector3(0, radius + 100, 0));
            spaceShipOne = new SpaceShip(PlayerIndex.One, Color.Red, new Vector3(0, radius + 200, 0));


            field = new GravitationalField(new InfiniteForceFieldShape(), Vector3.Zero.ToBepuVector(), 100000 * radius, 100);
            SystemCore.PhysicsSimulation.Add(field);

            spaceShipOne.Activate();

            duneBuggyCamera = new DuneBuggyPlanetCamera(duneBuggyOne);
            spaceShipCamera = new SpaceShipCamera(spaceShipOne);
        }
示例#6
0
        public void Initalise()
        {
            currentVertices = new List <Vector3>();

            SystemCore.ActiveScene.SetUpAmbientAndFullLightingRig();

            SystemCore.ActiveScene.AddPointLight(new Vector3(0, 15, 0), Color.White, 20, 20, 1, PointLightNumber.One);
            SystemCore.ActiveScene.AddPointLight(new Vector3(0, -15, 0), Color.White, 20, 20, 1, PointLightNumber.Two);
            SystemCore.ActiveScene.AddPointLight(new Vector3(0, 0, 15), Color.White, 20, 20, 1, PointLightNumber.Three);
            SystemCore.ActiveScene.AddPointLight(new Vector3(0, 0, -15), Color.White, 20, 20, 1, PointLightNumber.Four);

            SystemCore.AddNewUpdateRenderSubsystem(new SkyDome(Color.LightGray, Color.Gray, Color.DarkBlue));

            shapeBuilder = new ProceduralShapeBuilder();
            CurrentMode  = EditMode.Voxel;
            shapesToBake = new Dictionary <GameObject.GameObject, ProceduralShape>();


            cameraGameObject = new GameObject.GameObject("camera");
            cameraGameObject.AddComponent(new ComponentCamera());
            cameraGameObject.Transform.SetPosition(new Vector3(0, 0, 20));
            cameraGameObject.Transform.SetLookAndUp(new Vector3(0, 0, -1), new Vector3(0, 1, 0));
            SystemCore.GameObjectManager.AddAndInitialiseGameObject(cameraGameObject);
            SystemCore.SetActiveCamera(cameraGameObject.GetComponent <ComponentCamera>());


            mouseCursor = GameObjectFactory.CreateRenderableGameObjectFromShape(new ProceduralCube(),
                                                                                EffectLoader.LoadSM5Effect("flatshaded"));
            SystemCore.GameObjectManager.AddAndInitialiseGameObject(mouseCursor);



            AddGUI();
        }
示例#7
0
        private void AddEffect(string filePath)
        {
            var copyPath = Path.Combine(Path.Combine(WindowUtility.MainForm.CurrentProjectDir, EffectDirPath), Path.GetFileName(filePath));

            if (File.Exists(copyPath))
            {
                MessageBox.Show(String.Format("{0}\n{1}", Utility.Language["AlreadyExistResource"], filePath));
                return;
            }

            CheckResourceDir();
            File.Copy(filePath, copyPath, true);
            foreach (string imagePath in Directory.GetFiles(Path.Combine(Path.GetDirectoryName(filePath), Path.GetFileNameWithoutExtension(filePath))))
            {
                var newPath = Path.Combine(Path.Combine(Path.GetDirectoryName(copyPath), Path.GetFileNameWithoutExtension(filePath)), Path.GetFileName(imagePath));
                Utility.RecursiveCreateFolder(newPath);
                File.Copy(imagePath, newPath, true);
            }

            CreateNode(EffectNode.Nodes, Path.GetFileName(filePath), NodeType.Effect);

            var dir = Path.GetDirectoryName(filePath);

            foreach (string fileName in EffectLoader.GetEffectReference(filePath))
            {
                var path = Path.Combine(dir, fileName);
                if (File.Exists(path))
                {
                    AddEffect(path);
                }
            }
        }
示例#8
0
        private void GenerateFloorObjectFromFloorShapes(List <GameTile> tiles)
        {
            GameObject      finalFloorShape = new GameObject();
            ProceduralShape finalShape      = new ProceduralShape();

            ProceduralPlane plane = new ProceduralPlane();

            plane.SetColor(Color.LightGray.ChangeTone(RandomHelper.GetRandomInt(-20, 20)));
            plane.Scale(tiles[0].Scale);
            plane.Translate(tiles[0].Center);


            finalShape = plane;
            AddLineBatch(plane);


            for (int i = 1; i < tiles.Count; i++)
            {
                ProceduralPlane newPlane = new ProceduralPlane();
                newPlane.SetColor(Color.LightGray.ChangeTone(RandomHelper.GetRandomInt(-20, 20)));
                newPlane.Scale(tiles[i].Scale);
                newPlane.Translate(tiles[i].Center);
                finalShape = ProceduralShape.Combine(finalShape, newPlane);
                AddLineBatch(newPlane);
            }

            finalFloorShape.AddComponent(new RenderGeometryComponent(finalShape));
            finalFloorShape.AddComponent(new EffectRenderComponent(EffectLoader.LoadSM5Effect("flatshaded")));
            finalFloorShape.AddComponent(new ShadowCasterComponent());
            SystemCore.GameObjectManager.AddAndInitialiseGameObject(finalFloorShape);
        }
示例#9
0
        public Skybox(GraphicsDevice device)
        {
            float x = 0.525731f;
            float z = 0.850651f;

            var vertices = new SkyboxVertex[12]
            {
                new SkyboxVertex(-x, 0f, z), new SkyboxVertex(x, 0f, z),
                new SkyboxVertex(-x, 0f, -z), new SkyboxVertex(x, 0f, -z),
                new SkyboxVertex(0f, z, x), new SkyboxVertex(0f, z, -x),
                new SkyboxVertex(0f, -z, x), new SkyboxVertex(0f, -z, -x),
                new SkyboxVertex(z, x, 0f), new SkyboxVertex(-z, x, 0f),
                new SkyboxVertex(z, -x, 0f), new SkyboxVertex(-z, -x, 0f),
            };

            var indices = new int[60]
            {
                1, 4, 0, 4, 9, 0, 4, 5, 9, 8, 5, 4, 1, 8, 4,
                1, 10, 8, 10, 3, 8, 8, 3, 5, 3, 2, 5, 3, 7, 2,
                3, 10, 7, 10, 6, 7, 6, 11, 7, 6, 0, 11, 6, 1, 0,
                10, 1, 6, 11, 0, 9, 2, 11, 9, 5, 2, 9, 11, 2, 7
            };

            vertexBuffer = Buffer <SkyboxVertex> .New(device, vertices, BufferFlags.VertexBuffer);

            indexBuffer = Buffer <int> .New(device, indices, BufferFlags.IndexBuffer);

            skyboxEffect = EffectLoader.Load(@"Graphics/Shaders/Skybox.fx");
            skyboxTex    = Texture2D.Load(device, @"G:\Users\Athrun\Documents\Stratum\trunk\src\Stratum\WorldEngine\Earth\milkyWay.tif");
        }
示例#10
0
        public Player(Color?color, bool manualControl = false)
        {
            var shape = new ProceduralSphere(10, 10);

            if (color.HasValue)
            {
                PlayerColor = color.Value;
                shape.SetColor(color.Value);
            }

            if (!manualControl)
            {
                this.AddComponent(new PlayerControlComponent());
            }
            else
            {
                this.AddComponent(new ManualControlComponent());
            }
            this.AddComponent(new RenderGeometryComponent(shape));
            this.AddComponent(new EffectRenderComponent(EffectLoader.LoadSM5Effect("flatshaded")));
            this.AddComponent(new PhysicsComponent(true, true, PhysicsMeshType.sphere));
            this.AddComponent(new ShadowCasterComponent());
            Health  = maxHealth;
            Weapons = new List <Weapon>();
            Weapons.Add(WeaponFactory.CreatePistol());
            CurrentWeapon = Weapons[0];


            PlayerLabel = new Label(GUIFonts.Fonts["neurosmall"], "");
            SystemCore.GUIManager.AddControl(PlayerLabel);
        }
示例#11
0
 public RayAttack(Vector2D position) : base(position)
 {
     gridStartPosition = new Vector2D(position.X, Level.Current.Size.Height);
     gridExitPosition  = new Vector2D(position.X, 0.0f);
     timeToPassGrid    = gridExitPosition.DistanceTo(gridStartPosition) / AuraCannonSpeed;
     AddChild(EffectLoader.GetAvatarSkillEffect(AvatarAttack.DragonAuraCannon));
     Orientation = Quaternion.CreateLookAt(gridExitPosition, gridStartPosition, -Vector3D.UnitZ);
 }
示例#12
0
 public Fireball(Vector2D gridPosition) : base(Vector3D.Zero)
 {
     targetPosition = new Vector3D(gridPosition);
     startPosition  = new Vector3D(Randomizer.Current.Get(-1.0f, 1.0f),
                                   Randomizer.Current.Get(-1.0f, 1.0f), 5.0f);
     Position = startPosition;
     AddChild(EffectLoader.GetAvatarSkillEffect(AvatarAttack.DragonBreathOfFire));
 }
示例#13
0
        public virtual void Initialize()
        {
            GraphicsDevice device = Engine.GraphicsContext.Device;

            wireFrame = EffectLoader.Load(@"World/Earth/Shaders/DeferredTerrain.fx");

            vertexBuffer = Buffer <TerrainVertex> .New <TerrainVertex>(device, SharpDX.Utilities.SizeOf <TerrainVertex>() * 4 * 1000, BufferFlags.VertexBuffer, SharpDX.Direct3D11.ResourceUsage.Dynamic);
        }
示例#14
0
 private void GetAndAttachAttackEffect()
 {
     if (AttackType == AttackType.DirectShot)
     {
         return;
     }
     attackEffect = EffectLoader.GetAttackEffect(Type, AttackType);
     AddChild(attackEffect);
 }
示例#15
0
        public static void ApplyMaterialComponent(GameObject go, string materialName)
        {
            var    mat    = matDictionary[materialName];
            Effect effect = EffectLoader.LoadSM5Effect(mat.ShaderName).Clone();
            EffectRenderComponent effectComponent = new EffectRenderComponent(effect);

            go.AddComponent(mat);
            go.AddComponent(effectComponent);
        }
示例#16
0
 void OnEnable()
 {
     effectLoader = target as EffectLoader;
     effectLoader.Init();
     if (effectLoader.effectObj)
     {
         SpriteAnim spriteAnim = effectLoader.effectObj.GetComponent <SpriteAnim>();
         spriteAnim.Awake();
     }
 }
示例#17
0
        private void GenerateAtmosphereAndGeometry(float innerAtmosphereRatio, float outerAtmosphereRatio, float atmosphericScale, float groundScale)
        {
            planetEffect           = EffectLoader.LoadSM5Effect("AtmosphericScatteringGround").Clone();
            groundScatteringHelper = new GroundScatteringHelper(planetEffect, planetRadius * outerAtmosphereRatio,
                                                                planetRadius * innerAtmosphereRatio, groundScale);

            atmosphere = new Atmosphere(planetRadius * outerAtmosphereRatio, planetRadius * innerAtmosphereRatio, atmosphericScale);
            SystemCore.GameObjectManager.AddAndInitialiseGameObject(atmosphere);

            GenerateGeometry();
        }
示例#18
0
 private void VisualizeAttackDependingOnType(Creep targetCreep)
 {
     if (attackEffect != null)
     {
         attackEffect.FireBurstOfAllEmitters();                 //ncrunch: no coverage
     }
     if (AttackType == AttackType.DirectShot || Type == TowerType.Slice)
     {
         new InterpolatingProjectile(this, targetCreep,
                                     EffectLoader.GetProjectileEffect(Type, AttackType.DirectShot));
     }
 }
示例#19
0
            private void ExplodeOnImpact()
            {
                EffectLoader.GetAvatarSkillHitEffect(AvatarAttack.DragonBreathOfFire).
                FireBurstAtRelativePosition(targetPosition);
                var creepsWithinRange = GetCreepsWithinRange(Position.GetVector2D(), BreathOfFireRange);

                foreach (var creep in creepsWithinRange)
                {
                    creep.ReceiveAttack(TowerType.Fire, BreathOfFireDamage);
                }
                Dispose();
            }
示例#20
0
        private static void CreateTestArena()
        {
            float arenaSize = 40f;


            ProceduralCuboid a = new ProceduralCuboid(arenaSize, 1, arenaSize / 5);

            a.Translate(new Vector3(0, arenaSize / 5, arenaSize));
            a.SetColor(Color.LightGray);

            ProceduralShape b = a.Clone();

            b.Translate(new Vector3(0, 0, -arenaSize * 2));

            ProceduralShape c = ProceduralShape.Combine(a, b);
            ProceduralShape d = b.Clone();

            d.Transform(MonoMathHelper.RotateNinetyDegreesAroundUp(true));

            ProceduralShape e = ProceduralShape.Combine(c, d);



            var side2 = e.Clone();
            var side3 = e.Clone();
            var side4 = e.Clone();

            e.Translate(new Vector3(-arenaSize * 2, 0, 0));

            side2.Transform(MonoMathHelper.RotateHundredEightyDegreesAroundUp(true));
            side2.Translate(new Vector3(arenaSize * 2, 0, 0));
            side3.Transform(MonoMathHelper.RotateNinetyDegreesAroundUp(true));
            side3.Translate(new Vector3(0, 0, arenaSize * 2));
            side4.Transform(MonoMathHelper.RotateNinetyDegreesAroundUp(false));
            side4.Translate(new Vector3(0, 0, -arenaSize * 2));



            var final = ProceduralShape.Combine(e, side2, side3, side4);

            var arenaObject = GameObjectFactory.CreateRenderableGameObjectFromShape(final,
                                                                                    EffectLoader.LoadSM5Effect("flatshaded"));


            arenaObject.AddComponent(new StaticMeshColliderComponent(arenaObject, final.GetVertices(),
                                                                     final.GetIndicesAsInt().ToArray(), Vector3.Zero));

            arenaObject.AddComponent(new ShadowCasterComponent());


            SystemCore.GameObjectManager.AddAndInitialiseGameObject(arenaObject);
        }
示例#21
0
 /// <summary>
 /// コンストラクタ
 /// </summary>
 /// <param name="device"></param>
 /// <param name="filename">エフェクトパス</param>
 /// <param name="resourceManager">リソースマネージャー</param>
 public EffectObject(PPDDevice device, Resource.ResourceManager resourceManager, PathObject filename) : base(device)
 {
     this.resourceManager = resourceManager;
     manager = EffectLoader.Load(filename, LoadFunc);
     if (manager == null)
     {
         MessageBox.Show("Failed to load effect:" + filename);
         return;
     }
     manager.Finish += manager_Finish;
     Alignment       = EffectAlignment.Center;
     PlayType        = EffectManager.PlayType.Once;
 }
示例#22
0
        private void CreateLocalWorldObject(double id, string type, out GameObject worldObject, out DoomComponent component)
        {
            var shape = CreateShape(type);

            worldObject = GameObjectFactory.CreateRenderableGameObjectFromShape(
                shape, EffectLoader.LoadSM5Effect("flatshaded"));

            component = new DoomComponent();
            worldObject.AddComponent(component);
            worldObject.ID = (int)id;
            SystemCore.GameObjectManager.AddAndInitialiseGameObject(worldObject);
            worldObjects.Add(worldObject.ID, worldObject);
        }
示例#23
0
        private void AddPhysicsCube()
        {
            ProceduralCube shape      = new ProceduralCube();
            var            gameObject = new GameObject();

            gameObject.AddComponent(new RenderGeometryComponent(BufferBuilder.VertexBufferBuild(shape),
                                                                BufferBuilder.IndexBufferBuild(shape), shape.PrimitiveCount));
            gameObject.AddComponent(new EffectRenderComponent(EffectLoader.LoadSM5Effect("flatshaded")));
            gameObject.AddComponent(new ShadowCasterComponent());
            gameObject.AddComponent(new PhysicsComponent(true, true, PhysicsMeshType.box));
            gameObject.Transform.SetPosition(RandomHelper.GetRandomVector3(10, 100));
            SystemCore.GetSubsystem <GameObjectManager>().AddAndInitialiseGameObject(gameObject);
        }
示例#24
0
        public SimpleEnemy()
        {
            ProceduralCube shape = new ProceduralCube();

            AddComponent(new RenderGeometryComponent(BufferBuilder.VertexBufferBuild(shape),
                                                     BufferBuilder.IndexBufferBuild(shape), shape.PrimitiveCount));
            AddComponent(new EffectRenderComponent(EffectLoader.LoadSM5Effect("flatshaded")));
            AddComponent(new ShadowCasterComponent());
            var physicsComponent = new PhysicsComponent(true, true, PhysicsMeshType.box);

            AddComponent(physicsComponent);

            AddComponent(new SimpleEnemyComponent(physicsComponent));
        }
示例#25
0
        public Renderer()
        {
            IGraphicsContext context = Engine.GraphicsContext;
            int width  = context.Device.BackBuffer.Width;
            int height = context.Device.BackBuffer.Height;

            sceneTarget       = RenderTarget2D.New(context.Device, width, height, PixelFormat.R8G8B8A8.UNorm);
            texToTargetEffect = EffectLoader.Load(@"Graphics/Shaders/CopyTextureToTarget.fx");
            gbuffer           = context.GBuffer;

            font     = FontLoader.Load(@"Graphics/Fonts/Arial16.xml");
            fpsClock = new Stopwatch();
            fpsText  = string.Empty;
        }
示例#26
0
        private void AddEffectInfo()
        {
            var path = Path.Combine(WindowUtility.MainForm.CurrentProjectDir, Path.Combine("Resource", treeView1.SelectedNode.FullPath));

            if (!File.Exists(path))
            {
                return;
            }

            try
            {
                var refs    = EffectLoader.GetEffectReference(path);
                var manager = EffectLoader.Load(path, false, (fn) =>
                {
                });
                AddInfo(Utility.Language["ReferenceEffect"], String.Join(", ", refs));
                AddInfo(Utility.Language["FrameCount"], manager.FrameLength);
                AddInfo(Utility.Language["StartFrame"], manager.StartFrame);
                int layerCount = 0;
                var effects    = new Queue <IEffect>();
                effects.Enqueue(manager);
                while (effects.Count > 0)
                {
                    var effect = effects.Dequeue();
                    if (effect.Effects.Count == 0)
                    {
                        layerCount++;
                    }
                    else
                    {
                        foreach (IEffect childEffect in effect.Effects)
                        {
                            effects.Enqueue(childEffect);
                        }
                    }
                }
                AddInfo(Utility.Language["LayerCount"], layerCount);
                AddInfo(Utility.Language["FPS"], manager.FPS);

                var effectPanel = new EffectPanel();
                effectPanel.SetLang();
                effectPanel.OpenFile(path);
                ChangePanel(effectPanel);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
        }
示例#27
0
        public static GameObject CreateGradientSkyDomeObject(int complexity)
        {
            ProceduralSphere sphere = new ProceduralSphere(complexity, complexity);

            sphere.Indices = sphere.Indices.Reverse().ToArray();

            var ob = new GameObject();

            ob.Name = "skydome";

            ob.AddComponent(new RenderGeometryComponent(BufferBuilder.VertexBufferBuild(sphere), BufferBuilder.IndexBufferBuild(sphere), sphere.PrimitiveCount));
            ob.AddComponent(new GradientSkyDomeRenderer(EffectLoader.LoadSM5Effect("skydome2")));

            return(ob);
        }
示例#28
0
        public static GameObject CreateSkyDomeObject(Color color, int complexity, float scale)
        {
            ProceduralSphere sphere = new ProceduralSphere(complexity, complexity);

            sphere.Indices = sphere.Indices.Reverse().ToArray();

            var ob = new GameObject();

            ob.Name            = "skydome";
            ob.Transform.Scale = scale;
            sphere.SetColor(color);
            ob.AddComponent(new RenderGeometryComponent(BufferBuilder.VertexBufferBuild(sphere), BufferBuilder.IndexBufferBuild(sphere), sphere.PrimitiveCount));
            ob.AddComponent(new SkyDomeRenderer(EffectLoader.LoadSM5Effect("skydome")));

            return(ob);
        }
示例#29
0
        private static void PerformAuraCannonAttack(Vector2D position)
        {
            new RayAttack(position);
            Vector2D     positionUp = position - Vector2D.UnitY;
            List <Creep> creeps     = EntitiesRunner.Current.GetEntitiesOfType <Creep>();

            foreach (var creep in creeps)
            {
                if (DistanceToLineSquared(creep, position, positionUp) <= AuraCannonRangeSquared)
                {
                    creep.ReceiveAttack(TowerType.Fire, AuraCannonDamage);
                    EffectLoader.GetAvatarSkillHitEffect(AvatarAttack.DragonAuraCannon).
                    FireBurstAtRelativePosition(creep.Position);
                }
            }
        }
示例#30
0
        public RenderTestScreen()
            : base()
        {
            SystemCore.CursorVisible = false;
            fpsLabel.Visible         = true;
            SystemCore.ActiveScene.SetUpBasicAmbientAndKey();

            var effect = EffectLoader.LoadSM5Effect("FlatShaded");


            mouseCamera = new MouseFreeCamera(new Vector3(0, 0, 0));
            SystemCore.SetActiveCamera(mouseCamera);

            var shape = new ProceduralSphere(20, 20);

            shape.SetColor(SystemCore.ActiveColorScheme.Color5);



            //create 100 cubes, add collision and collision visualiser components, give them random position and velocity
            for (int i = 0; i < 100; i++)
            {
                var gameObject = new GameObject();
                gameObject.AddComponent(new RenderGeometryComponent(BufferBuilder.VertexBufferBuild(shape), BufferBuilder.IndexBufferBuild(shape), shape.PrimitiveCount));

                gameObject.AddComponent(new EffectRenderComponent(effect));
                //gameObject.AddComponent(new BasicEffectRenderComponent(effect));
                gameObject.Transform.SetPosition(RandomHelper.GetRandomVector3(Vector3.One * -100, Vector3.One * 100));
                gameObject.AddComponent(new RotatorComponent(Vector3.Up));
                SystemCore.GetSubsystem <GameObjectManager>().AddAndInitialiseGameObject(gameObject);

                gameObject.Transform.Scale    = 5f;
                gameObject.Transform.Velocity = RandomHelper.GetRandomVector3(-Vector3.One, Vector3.One) * 0.01f;
            }


            AddInputBindings();

            Model           geoDesicModel = SystemCore.ContentManager.Load <Model>("Models/geodesic");
            ProceduralShape geodesicShape = ModelMeshParser.GetShapeFromModelNoUVs(geoDesicModel);

            geodesicShape.Scale(20f);
            geodesicShape.InsideOut();
            GameObject geoDesic = GameObjectFactory.CreateRenderableGameObjectFromShape(geodesicShape, EffectLoader.LoadSM5Effect("cockpitscreen"));

            SystemCore.GameObjectManager.AddAndInitialiseGameObject(geoDesic);
        }