Beispiel #1
0
        public void init()
        {
            string path = "RootGo/AgentGo";
            this.selfGo = UtilApi.GoFindChildByPObjAndName(path);

            m_mazePlayerTrackAniControl = new MazePlayerTrackAniControl(this);
            m_sceneEffect = Ctx.m_instance.m_sceneEffectMgr.addSceneEffect(31, this.selfGo, false, true, true);
            m_sceneEffect.setKeepLastFrame(true);
        }
Beispiel #2
0
    //シーン遷移時の関数
    private IEnumerator SceneChange(string nextScene)
    {
        SceneEffect sceneEfect = GameObject.Find("BlackOut").GetComponent <SceneEffect>();

        sceneEfect.startSceneChange = true;
        yield return(new WaitForSeconds(1.0f));

        SceneManager.LoadScene(nextScene);
    }
Beispiel #3
0
 public Scene(GameContext context, SceneEffect effect)
 {
     _device = context.GraphicsDevice;
     _sceneRenderer = new DefaultSceneRenderer(context, effect);
     _allNodes = new List<SceneNode>();
     _allCameras = new List<Camera>();
     LightDirection = new Vector3(1, -1, -1);
     _spriteBatch = new SpriteBatch(_device);
 }
Beispiel #4
0
        public void init()
        {
            string path = "RootGo/AgentGo";

            this.selfGo = UtilApi.GoFindChildByPObjAndName(path);

            m_mazePlayerTrackAniControl = new MazePlayerTrackAniControl(this);
            m_sceneEffect = Ctx.m_instance.m_sceneEffectMgr.addSceneEffect(31, this.selfGo, false, true, true);
            m_sceneEffect.setKeepLastFrame(true);
        }
Beispiel #5
0
    void Start()
    {
        SceneE = GetComponent <SceneEffect>();
        SceneE.InitSceneObject();

        MainPlayer.name = "MainPlayer";
        MainPlayer.transform.position     = SceneE.SceneNpcPos.StartPos;
        Camera.main.transform.position    = new Vector3(MainPlayer.transform.position.x + 3.5f, MainPlayer.transform.position.y + 5.0f, MainPlayer.transform.position.z + 3.5f);
        Camera.main.transform.eulerAngles = new Vector3(45.0f, 225.0f, 0);
    }
Beispiel #6
0
 public RenderQueue(GameContext context, 
                    Action<Material> handleEffect,
                    Func<IList<DrawableElement>> getDrawableElements,
                    SceneEffect sceneEffect) : base(context)
 {
     _handleEffect = handleEffect;
     _getDrawableElements = getDrawableElements;
     SceneEffect = sceneEffect;
     IsEnabled = true;
     _device = context.GetService<GraphicsDevice>();
 }
Beispiel #7
0
 public RenderQueue(GameContext context,
                    Action <Material> handleEffect,
                    Func <IList <DrawableElement> > getDrawableElements,
                    SceneEffect sceneEffect) : base(context)
 {
     _handleEffect        = handleEffect;
     _getDrawableElements = getDrawableElements;
     SceneEffect          = sceneEffect;
     IsEnabled            = true;
     _device = context.GetService <GraphicsDevice>();
 }
        public ForwardSceneRenderer(GameContext context, SceneEffect effect, RenderSettings settings) : base(context)
        {
            _device                = context.GetService <GraphicsDevice>();
            _sceneEffect           = effect;
            RenderSettings         = settings;
            _allDrawables          = new List <DrawableElement>();
            _initializingDrawables = new List <DrawableElement>();
            _allCameras            = new List <Camera>();
            _allLights             = new List <Light>();

            _directionalLightShadowMap = new RenderTarget2D(_device, RenderSettings.ShadowMapSize, RenderSettings.ShadowMapSize, false, SurfaceFormat.Single, DepthFormat.Depth24);

            var width  = context.ScreenBounds.Width;
            var height = context.ScreenBounds.Height;

            _activeInputSource  = new RenderTarget2D(_device, width, height, false, SurfaceFormat.Color, DepthFormat.Depth24, 0, RenderTargetUsage.PlatformContents);
            _activeRenderTarget = new RenderTarget2D(_device, width, height, false, SurfaceFormat.Color, DepthFormat.Depth24, 0, RenderTargetUsage.PlatformContents);

            _shadowCasterQueueSolid = new RenderQueue(context, HandleShadowCasterObjects, GetShadowCasterSceneNodes, _sceneEffect)
            {
                BlendState           = BlendState.Opaque,
                DepthStencilState    = DepthStencilState.Default,
                RasterizerState      = RasterizerState.CullCounterClockwise,
                IsEnabled            = true,
                SortNodesBackToFront = false,
            };
            _shadowCasterQueueTransparent = new RenderQueue(context, HandleShadowCasterObjects, GetShadowCasterSceneNodesTransparent, _sceneEffect)
            {
                BlendState           = BlendState.AlphaBlend,
                DepthStencilState    = DepthStencilState.DepthRead,
                RasterizerState      = RasterizerState.CullCounterClockwise,
                IsEnabled            = true,
                SortNodesBackToFront = true,
            };

            _renderQueues = new List <RenderQueue>
            {
                new RenderQueue(context, HandleSolidObjects, GetSolidObjects, _sceneEffect)
                {
                    DepthStencilState = DepthStencilState.Default,
                    BlendState        = BlendState.Opaque,
                    RasterizerState   = RasterizerState.CullCounterClockwise,
                },
                new RenderQueue(context, HandleEffectTransparentObjects, GetTransparentObjects, _sceneEffect)
                {
                    DepthStencilState    = DepthStencilState.DepthRead,
                    BlendState           = BlendState.AlphaBlend,
                    RasterizerState      = RasterizerState.CullCounterClockwise,
                    SortNodesBackToFront = true
                }
            };
        }
        public ForwardSceneRenderer(GameContext context, SceneEffect effect, RenderSettings settings) : base(context)
        {
            _device = context.GetService<GraphicsDevice>();
            _sceneEffect = effect;
            RenderSettings = settings;
            _allDrawables = new List<DrawableElement>();
            _initializingDrawables = new List<DrawableElement>();
            _allCameras = new List<Camera>();
            _allLights = new List<Light>();

            _directionalLightShadowMap = new RenderTarget2D(_device, RenderSettings.ShadowMapSize, RenderSettings.ShadowMapSize, false, SurfaceFormat.Single, DepthFormat.Depth24);

            var width = context.ScreenBounds.Width;
            var height = context.ScreenBounds.Height;
            _activeInputSource = new RenderTarget2D(_device, width, height, false, SurfaceFormat.Color, DepthFormat.Depth24, 0, RenderTargetUsage.PlatformContents);
            _activeRenderTarget = new RenderTarget2D(_device, width, height, false, SurfaceFormat.Color, DepthFormat.Depth24, 0, RenderTargetUsage.PlatformContents);

            _shadowCasterQueueSolid = new RenderQueue(context, HandleShadowCasterObjects, GetShadowCasterSceneNodes, _sceneEffect)
            {
                BlendState = BlendState.Opaque,
                DepthStencilState = DepthStencilState.Default,
                RasterizerState = RasterizerState.CullCounterClockwise,
                IsEnabled = true,
                SortNodesBackToFront = false,
            };
            _shadowCasterQueueTransparent = new RenderQueue(context, HandleShadowCasterObjects, GetShadowCasterSceneNodesTransparent, _sceneEffect)
            {
                BlendState = BlendState.AlphaBlend,
                DepthStencilState = DepthStencilState.DepthRead,
                RasterizerState = RasterizerState.CullCounterClockwise,
                IsEnabled = true,
                SortNodesBackToFront = true,
            };

            _renderQueues = new List<RenderQueue>
            {
                new RenderQueue(context, HandleSolidObjects, GetSolidObjects, _sceneEffect)
                {
                    DepthStencilState = DepthStencilState.Default,
                    BlendState = BlendState.Opaque,
                    RasterizerState = RasterizerState.CullCounterClockwise,
                },
                new RenderQueue(context, HandleEffectTransparentObjects, GetTransparentObjects, _sceneEffect)
                {
                    DepthStencilState = DepthStencilState.DepthRead,
                    BlendState = BlendState.AlphaBlend,
                    RasterizerState = RasterizerState.CullCounterClockwise,
                    SortNodesBackToFront = true
                }
            };
        }
Beispiel #10
0
        internal static void DrawElement(Camera camera, DrawableElement element, SceneEffect sceneEffect, float yRotationForBillboards)
        {
            sceneEffect.World          = element.GetWorldMatrix(camera.GlobalEulerAngles.Y);
            sceneEffect.WorldLight     = element.GetWorldMatrix(yRotationForBillboards);
            sceneEffect.DiffuseTexture = element.Material.DiffuseTexture;
            sceneEffect.TexcoordScale  = element.Material.TexcoordScale;
            sceneEffect.TexcoordOffset = element.Material.TexcoordOffset;
            sceneEffect.MaterialColor  = element.Material.Color;

            for (var i = 0; i < sceneEffect.CurrentTechniquePasses.Count; i++)
            {
                sceneEffect.CurrentTechniquePasses[i].Apply();
                element.Mesh.Draw();
            }
        }
Beispiel #11
0
        internal static void DrawElement(Camera camera, DrawableElement element, SceneEffect sceneEffect, float yRotationForBillboards)
        {
            sceneEffect.World = element.GetWorldMatrix(camera.GlobalEulerAngles.Y);
            sceneEffect.WorldLight = element.GetWorldMatrix(yRotationForBillboards);
            sceneEffect.DiffuseTexture = element.Material.DiffuseTexture;
            sceneEffect.TexcoordScale = element.Material.TexcoordScale;
            sceneEffect.TexcoordOffset = element.Material.TexcoordOffset;
            sceneEffect.MaterialColor = element.Material.Color;

            for (var i = 0; i < sceneEffect.CurrentTechniquePasses.Count; i++)
            {
                sceneEffect.CurrentTechniquePasses[i].Apply();
                element.Mesh.Draw();
            }
        }
Beispiel #12
0
    void Awake()
    {
        Ins = this;

        GenNewScene = false;

        PathFind = new PF.Pathfinder();

        SceneNpcPos = new GameCharactorPos();
        SDoor       = new ArrayList();

        RenderSettings.fog        = true;
        RenderSettings.fogMode    = FogMode.ExponentialSquared;
        RenderSettings.fogColor   = Camera.main.backgroundColor;
        RenderSettings.fogDensity = 0.06f;
    }
Beispiel #13
0
        protected override void LoadContent()
        {
            /************************************************************************/
            /* JACOB LOADING SHIT LOL                                                 */
            /************************************************************************/

            /************************************************************************/

            /************************************************************************
             * HACK TODO:
             * Load the scene effects in from some sort of data file.
             *
             * Jay Sternfield	-	2011/11/09
             ************************************************************************/
            /// Add static scene effects.
            SceneEffect effect = new SceneEffect();
            effect.effect = Content.Load<BaseRenderableEffect>("Materials/Forward/background");
            effect.size = new Vector2(200, 200f);
            effect.position = Vector2.Zero;
            effect.depth = 400.0f;
            effect.rotation = MathHelper.Pi;
            mStaticSceneEffects.Add(effect);

            music = Content.Load<SoundEffect>("kat_final");

            //int center = mWorldSize / 2;
            //for (int x = 0; x < mWorldSize; x++)
            //{
            //    for (int y = 0; y < mWorldSize; y++)
            //    {
            //        SceneEffect effect = new SceneEffect();
            //        effect.effect = Content.Load<BaseRenderableEffect>("Materials/Forward/tile_floor");
            //        effect.size = Vector2.One;
            //        effect.position = new Vector2(x-center, y-center);
            //        effect.depth = 1.0f;
            //        mStaticSceneEffects.Add(effect);
            //    }
            //}

            base.LoadContent();

            //SynapseGaming.LightingSystem.Rendering.Scene rig = Content.Load<SynapseGaming.LightingSystem.Rendering.Scene>("Sunburn/light_rig");
            //mSceneInterface.Submit(rig);

            mMenuScreenTextures.Add(GameStateManager_cl.GameState.GAME_STATE_LOADING, Content.Load<Texture2D>("Textures/titleBird"));
            mMenuScreenTextures.Add(GameStateManager_cl.GameState.GAME_STATE_LOADING_2, Content.Load<Texture2D>("Textures/title"));

            mEnvironment = Content.Load<SceneEnvironment>("Sunburn/scene_environment");
        }
 public static SceneRenderer Create(GameContext gameContext, SceneEffect effect, RenderSettings settings)
 {
     return(new ForwardSceneRenderer(gameContext, effect, settings));
 }
Beispiel #15
0
		private void ParseEffect(Scene scene, XElement effect)
		{
			var sceneEffect = new SceneEffect();
			this.ParseIdAndName(effect, sceneEffect);
			var profileCommon = effect.Element(this.schema.profileCommonName);
			if (profileCommon != null)
			{
				var technique = profileCommon.Element(this.schema.techniqueName);
				if (technique != null)
				{
					var techniqueImpl = technique.Element(this.schema.phongName);
					if (techniqueImpl == null)
					{
						techniqueImpl = technique.Element(this.schema.lambertName);
						if (techniqueImpl == null)
						{
							techniqueImpl = technique.Element(this.schema.blinnName);
							if (techniqueImpl == null)
							{
								techniqueImpl = technique.Element(this.schema.constantName);
								if (techniqueImpl == null)
								{
									throw new DaeException(string.Format("Unknow technique at {0}", scene.Name));
								}
							}
						}
					}
					sceneEffect.Diffuse = this.ParseColorSource(scene, techniqueImpl.Element(this.schema.diffuseName));
				}
			}
			scene.Effects.Add(sceneEffect);
		}
Beispiel #16
0
    //オープニングシーンのムービーのコルーチン
    private IEnumerator OPScene()
    {
        //明転開始
        sceneEffect = GameObject.Find("BlackOut").GetComponent <SceneEffect>();
        sceneEffect.startLightUp = true;
        yield return(new WaitForSeconds(2.0f));

        //明転終了
        sceneEffect.startLightUp = false;

        //メッセージ表示
        messageManager.k = 0;
        messageManager.n = 1;
        messageManager.startMessageTrigger = true;
        //メッセージ表示終了
        yield return(new WaitUntil(EndMessage));

        messageManager.isEndMessage = false;

        //暗転開始
        sceneEffect.startBlackOut = true;
        yield return(new WaitForSeconds(2.0f));

        //シーン遷移
        SceneManager.LoadScene("OPScene2");

        //背景のスクロール
        yield return(new WaitForSeconds(0.1f));

        backGround  = GameObject.Find("BackGround");
        movieNumber = 0;
        yield return(new WaitForSeconds(2.0f));

        //メッセージ表示
        messageManager.k = 2;
        messageManager.n = 2;
        messageManager.startMessageTrigger = true;
        //メッセージ表示終了
        yield return(new WaitUntil(EndMessage));

        messageManager.isEndMessage = false;

        //爆発音とエフェクト
        yield return(new WaitForSeconds(1.0f));


        //背景のスクロールの停止
        movieNumber = -1;

        //メッセージ表示
        messageManager.k = 3;
        messageManager.n = 4;
        messageManager.startMessageTrigger = true;
        //メッセージ表示終了
        yield return(new WaitUntil(EndMessage));

        messageManager.isEndMessage = false;

        //暗転、背景のスクロール開始
        scroll      = 0.3f;
        movieNumber = 0;
        sceneEffect = GameObject.Find("BlackOut").GetComponent <SceneEffect>();
        sceneEffect.startSceneChange = true;
        yield return(new WaitForSeconds(1.0f));

        movieNumber = -1;

        //オープニングシーン終了
        endOPMV = true;
    }
 public DefaultSceneRenderer(GameContext context, SceneEffect effect)
 {
     _device = context.GraphicsDevice;
     _sceneEffect = effect;
     _shadowMap = new RenderTarget2D(context.GraphicsDevice, 1024, 1024, false, SurfaceFormat.Single, DepthFormat.Depth24);
 }
Beispiel #18
0
        protected override void LoadContent()
        {
            /************************************************************************/
            /* JACOB LOADING SHIT LOL                                                 */
            /************************************************************************/

            /************************************************************************/

            /************************************************************************
             * HACK TODO:
             * Load the scene effects in from some sort of data file.
             *
             * Jay Sternfield	-	2011/11/09
             ************************************************************************/
            /// Add static scene effects.
            SceneEffect effect = new SceneEffect();
            effect.effect = Content.Load<BaseRenderableEffect>("Materials/Forward/concept7");
            effect.size = new Vector2(750, 482f);
            effect.position = Vector2.Zero;
            effect.depth = 400.0f;
            effect.rotation = MathHelper.Pi;
            mStaticSceneEffects.Add(effect);

            //int center = mWorldSize / 2;
            //for (int x = 0; x < mWorldSize; x++)
            //{
            //    for (int y = 0; y < mWorldSize; y++)
            //    {
            //        SceneEffect effect = new SceneEffect();
            //        effect.effect = Content.Load<BaseRenderableEffect>("Materials/Forward/tile_floor");
            //        effect.size = Vector2.One;
            //        effect.position = new Vector2(x-center, y-center);
            //        effect.depth = 1.0f;
            //        mStaticSceneEffects.Add(effect);
            //    }
            //}

            base.LoadContent();

            //SynapseGaming.LightingSystem.Rendering.Scene rig = Content.Load<SynapseGaming.LightingSystem.Rendering.Scene>("Sunburn/light_rig");
            //mSceneInterface.Submit(rig);

            mEnvironment = Content.Load<SceneEnvironment>("Sunburn/scene_environment");
        }
Beispiel #19
0
		private IMaterial ParseMaterial(AseParser parser, Scene scene)
		{
			var sceneEffect = new SceneEffect() {CullMode = CullMode.Front};
			var m = new SceneMaterial { Effect = sceneEffect };
			parser.Consume("{");
			for (;;)
			{
				var attr = parser.Consume();
				if (attr == null || attr == "}")
				{
					break;
				}
				if (0 == string.Compare(attr, "*MATERIAL_NAME", StringComparison.InvariantCultureIgnoreCase))
				{
					m.Id = m.Name = sceneEffect.Id = sceneEffect.Name = parser.Consume();
					continue;
				}
				if (0 == string.Compare(attr, "*MATERIAL_CLASS", StringComparison.InvariantCultureIgnoreCase))
				{
					parser.Consume();
					continue;
				}
				if (0 == string.Compare(attr, "*MATERIAL_AMBIENT", StringComparison.InvariantCultureIgnoreCase))
				{
					sceneEffect.Ambient = new SolidColorSource { Color = ParseColor(parser) };
					continue;
				}
				if (0 == string.Compare(attr, "*MATERIAL_DIFFUSE", StringComparison.InvariantCultureIgnoreCase))
				{
					sceneEffect.Diffuse = new SolidColorSource { Color = ParseColor(parser) };
					continue;
				}
				if (0 == string.Compare(attr, "*MATERIAL_SPECULAR", StringComparison.InvariantCultureIgnoreCase))
				{
					sceneEffect.Specular = new SolidColorSource { Color = ParseColor(parser) };
					continue;
				}
				if (0 == string.Compare(attr, "*MATERIAL_SHINE", StringComparison.InvariantCultureIgnoreCase))
				{
					sceneEffect.Shininess = parser.ConsumeFloat();
					continue;
				}
				if (0 == string.Compare(attr, "*MATERIAL_SHINESTRENGTH", StringComparison.InvariantCultureIgnoreCase))
				{
					parser.ConsumeFloat();
					continue;
				}
				if (0 == string.Compare(attr, "*MATERIAL_TRANSPARENCY", StringComparison.InvariantCultureIgnoreCase))
				{
					sceneEffect.Transparency = parser.ConsumeFloat();
					continue;
				}
				if (0 == string.Compare(attr, "*MATERIAL_WIRESIZE", StringComparison.InvariantCultureIgnoreCase))
				{
					parser.ConsumeFloat();
					continue;
				}
				if (0 == string.Compare(attr, "*MATERIAL_XP_FALLOFF", StringComparison.InvariantCultureIgnoreCase))
				{
					parser.ConsumeFloat();
					continue;
				}
				if (0 == string.Compare(attr, "*MATERIAL_SELFILLUM", StringComparison.InvariantCultureIgnoreCase))
				{
					parser.ConsumeFloat();
					continue;
				}
				if (0 == string.Compare(attr, "*MATERIAL_SHADING", StringComparison.InvariantCultureIgnoreCase))
				{
					parser.Consume();
					continue;
				}
				if (0 == string.Compare(attr, "*MATERIAL_FALLOFF", StringComparison.InvariantCultureIgnoreCase))
				{
					parser.Consume();
					continue;
				}
				if (0 == string.Compare(attr, "*MATERIAL_XP_TYPE", StringComparison.InvariantCultureIgnoreCase))
				{
					parser.Consume();
					continue;
				}

				if (0 == string.Compare(attr, "*MAP_AMBIENT", StringComparison.InvariantCultureIgnoreCase))
				{
					sceneEffect.Ambient = this.ParseMap(parser, scene);
					continue;
				}
				if (0 == string.Compare(attr, "*MAP_DIFFUSE", StringComparison.InvariantCultureIgnoreCase))
				{
					sceneEffect.Diffuse = this.ParseMap(parser, scene);
					continue;
				}
				if (0 == string.Compare(attr, "*NUMSUBMTLS", StringComparison.InvariantCultureIgnoreCase))
				{
					var numMaterials = parser.ConsumeInt();
					continue;
				}
				if (0 == string.Compare(attr, "*SUBMATERIAL", StringComparison.InvariantCultureIgnoreCase))
				{
					var index = parser.ConsumeInt();
					while (m.Submaterials.Count <= index) m.Submaterials.Add(null);
					var subm = ParseMaterial(parser, scene);
					m.Submaterials[index] = subm;
					continue;
				}
				

				parser.UnknownLexemError();
			}
			return m;
		}
 public static SceneRenderer Create(GameContext gameContext, SceneEffect effect, RenderSettings settings)
 {
     return new ForwardSceneRenderer(gameContext, effect, settings);
 }
Beispiel #21
0
		public IMaterial CreateMaterial(BspMaterialKey material)
		{
			var baseFileName = this.GetMaterialFileName(material.Material);
			var imagePath = baseFileName;
			var texture = new FileReferenceImage { Path = imagePath };
			this.Scene.Images.Add(texture);
			var effect = new SceneEffect
				{
					CullMode = CullMode.None,
					//Diffuse = new ImageColorSource { Image = texture }
				};
			this.Scene.Effects.Add(effect);
			var sceneMaterial = new SceneMaterial { Effect = effect };
			this.Scene.Materials.Add(sceneMaterial);
			return sceneMaterial;
		}
Beispiel #22
0
		private void BuildSubmeshes(int maxTextures, SeparateStreamsSubmesh[] submeshes, SeparateStreamsMesh streamMesh, BspMeshStreams meshStreams)
		{
			int[] textureToMaterial = new int[maxTextures];
			foreach (var quake3Face in this.faces)
			{
				++textureToMaterial[quake3Face.texinfo_id];
			}
			for (int i = 0; i < maxTextures; ++i)
			{
				if (textureToMaterial[i] > 0)
				{
					submeshes[i] = streamMesh.CreateSubmesh();
					int index = this.Scene.Materials.Count;
					var baseFileName = Path.Combine(this.GameRootPath, this.textures[i].name);
					var imagePath = baseFileName;
					if (!File.Exists(imagePath))
					{
						imagePath = baseFileName + ".jpg";
						if (!File.Exists(imagePath))
						{
							imagePath = baseFileName + ".png";
							if (!File.Exists(imagePath))
							{
								imagePath = baseFileName + ".tga";
								if (!File.Exists(imagePath))
								{
									imagePath = this.textures[i].name;
								}
							}
						}
					}
					var texture = new FileReferenceImage { Path = imagePath };
					this.Scene.Images.Add(texture);
					var effect = new SceneEffect { Diffuse = new ImageColorSource { Image = texture }, CullMode = CullMode.Front};
					this.Scene.Effects.Add(effect);
					var sceneMaterial = new SceneMaterial { Effect = effect };
					this.Scene.Materials.Add(sceneMaterial);
					submeshes[i].Material = sceneMaterial;
					textureToMaterial[i] = index;
				}
			}
		}