public static async Task LoadDude(EngineContext engineContext) { var mainPlugin = engineContext.RenderContext.RenderPassPlugins.OfType <MainPlugin>().FirstOrDefault(); EffectOld effect = engineContext.RenderContext.BuildEffect("SimpleSkinning") .Using(new BasicShaderPlugin("ShaderBase") { RenderPassPlugin = mainPlugin }) .Using(new BasicShaderPlugin("TransformationWVP") { RenderPassPlugin = mainPlugin }) .Using(new BasicShaderPlugin(new ShaderMixinSource() { new ShaderClassSource("AlbedoDiffuseBase"), new ShaderComposition("albedoDiffuse", new ShaderClassSource("ComputeColorTexture", TexturingKeys.DiffuseTexture, "TEXCOORD")), new ShaderComposition("albedoSpecular", new ShaderClassSource("ComputeColor")), // TODO: Default values! }) { RenderPassPlugin = mainPlugin }) .Using(new BasicShaderPlugin("AlbedoFlatShading") { RenderPassPlugin = mainPlugin }) ; var characterEntity = await AnimScript.LoadFBXModel(engineContext, "/global_data/fbx/test_mesh.hotei#"); await AnimScript.AnimateFBXModel(engineContext, characterEntity); }
public int checkTime; //時間制限(float)をswitch文で使えるようにする変数 // Use this for initialization void Start() { cntTime = 0.0f; //時間に関する数値の変数を初期化 checkTime = 0; teacherImg.SetBool("TimerStart", false); //タイマー(先生)を起動 animScript = AnimMas.GetComponent <AnimScript>(); //アニメーションスクリプトを指定 }
/// <summary> /// 初始化 /// </summary> /// <param name="rb"></param> /// <param name="animScript"></param> public void Init(Rigidbody2D rb, AnimScript animScript, Collion coll, BetterJump betterJump) { this.rb = rb; this.animScript = animScript; this.coll = coll; this.betterJump = betterJump; ResetFunction(); }
// Use this for initialization void Awake() { m_animScript = GetComponent <AnimScript>(); m_AllGenericStates = GetComponentsInChildren <GenericState>(); // Then loop through all the state and make sure the states can recognise their owner foreach (GenericState state in m_AllGenericStates) { state.m_FSMOwner = this; } }
// Start is called before the first frame update void Start() { nextQuestions = FindObjectOfType <PlayerText>(); perdiste.SetActive(false); initialPosition = transform.position; ShowLives.livesAmount = 3; ShowScore.scoreValue = 0; animedBar(); canvasAnimation = GameObject.FindGameObjectWithTag("CanvasShake").GetComponent <AnimScript>(); livesSprite = GameObject.FindObjectOfType <LivesSprite>(); }
void Start() { rb = GetComponent <Rigidbody2D>(); coll = GetComponent <CollisionCheck>(); anim = GetComponentInChildren <AnimScript>(); coll2D = GetComponent <BoxCollider2D>(); sound = FindObjectOfType <AudioManager>(); if (MasterControl.Instance.checkpointed == true) { CheckpointRespawn(); } }
void Start() { cam = GameObject.Find("ARCamera"); player_script = cam.GetComponent <Player>(); healthBar = GameObject.Find("Cube"); hp_script = healthBar.GetComponent <FighterHealthBar>(); fighter = GameObject.Find("littleswordfighter"); anim_script = fighter.GetComponent <AnimScript>(); damage_script = GameObject.Find("Canvas").GetComponent <DamageText>(); isDead = false; isVictorious = false; currentHealth = maxHealth; }
public static async void LoadScene(EngineContext engineContext) { //var contentManager = new ContentManager(new ContentSerializerContextGenerator(VirtualFileStorage, engineContext.PackageManager, ParameterContainerExtensions.DefaultSceneSerializer)); var contentManager = engineContext.AssetManager; engineContext.EntityManager.GetSystem <HierarchicalProcessor>().RootEntities.Clear(); var sceneData = contentManager.Load <EntityGroup>("/sync/package_scene.hotei#"); foreach (var entity in sceneData.Entities) { engineContext.EntityManager.AddEntity(entity); if (entity.ContainsKey(AnimationComponent.Key)) { var entityCopy = entity; Scheduler.Current.Add(() => AnimScript.AnimateFBXModel(engineContext, entityCopy)); } } }
public async static Task ProcessClient(EngineContext engineContext, SocketContext socketContext, SocketContext socketContextAsync) { socketContext.AddPacketHandler <DownloadFileQuery>( async(packet) => { var stream = await VirtualFileSystem.OpenStreamAsync(packet.Url, VirtualFileMode.Open, VirtualFileAccess.Read); var data = new byte[stream.Length]; await stream.ReadAsync(data, 0, data.Length); stream.Close(); socketContext.Send(new DownloadFileAnswer { StreamId = packet.StreamId, Data = data }); }); socketContext.AddPacketHandler <UploadFilePacket>( async(packet) => { var stream = await VirtualFileSystem.OpenStreamAsync(packet.Url, VirtualFileMode.Create, VirtualFileAccess.Write); await stream.WriteAsync(packet.Data, 0, packet.Data.Length); stream.Close(); }); var viewModelGlobalContext = new ViewModelGlobalContext(); selectedEntitiesContext = new ViewModelContext(viewModelGlobalContext); selectedEntitiesContext.ChildrenPropertyEnumerators.Add(new EntityComponentEnumerator(engineContext)); selectedEntitiesContext.ChildrenPropertyEnumerators.Add(new RenderPassPluginEnumerator()); selectedEntitiesContext.ChildrenPropertyEnumerators.Add(new ChildrenPropertyInfoEnumerator()); //selectedEntitiesContext.ChildrenPropertyEnumerators.Add(new EffectPropertyEnumerator(engineContext)); var renderPassHierarchyContext = new ViewModelContext(viewModelGlobalContext); renderPassHierarchyContext.ChildrenPropertyEnumerators.Add(new RenderPassHierarchyEnumerator()); renderPassHierarchyContext.Root = new ViewModelNode("Root", engineContext.RenderContext.RootRenderPass).GenerateChildren(renderPassHierarchyContext); var renderPassPluginsContext = new ViewModelContext(viewModelGlobalContext); renderPassPluginsContext.ChildrenPropertyEnumerators.Add(new RenderPassPluginsEnumerator { SelectedRenderPassPluginContext = selectedEntitiesContext }); renderPassPluginsContext.Root = new ViewModelNode("Root", new EnumerableViewModelContent <ViewModelReference>( () => engineContext.RenderContext.RenderPassPlugins.Select(x => new ViewModelReference(x, true)))); var entityHierarchyEnumerator = new EntityHierarchyEnumerator(engineContext.EntityManager, selectedEntitiesContext); var entityHierarchyContext = new ViewModelContext(viewModelGlobalContext); entityHierarchyContext.ChildrenPropertyEnumerators.Add(entityHierarchyEnumerator); entityHierarchyContext.ChildrenPropertyEnumerators.Add(new ChildrenPropertyInfoEnumerator()); entityHierarchyContext.Root = new ViewModelNode("EntityHierarchyRoot", new EnumerableViewModelContent <ViewModelReference>( () => engineContext.EntityManager.Entities .Where(x => { var transformationComponent = x.Transformation; return(transformationComponent == null || transformationComponent.Parent == null); }) .Select(x => new ViewModelReference(x, true)))); entityHierarchyEnumerator.SelectedEntities.CollectionChanged += (sender, args) => { SelectEntity(entityHierarchyEnumerator.SelectedEntities); }; //entityHierarchyContext.Root.Children.Add(new ViewModelNode("SelectedItems", EnumerableViewModelContent.FromUnaryLambda<ViewModelReference, ViewModelReference>(new NullViewModelContent(), // (x) => { return new[] { new ViewModelReference(pickingSystem.SelectedEntity) }; }))); /*(value) => * { * var entityModelView = value != null ? entityHierarchyContext.GetModelView(value.Guid) : null; * var entity = entityModelView != null ? (Entity)entityModelView.NodeValue : null; * SelectEntity(entity); * })));*/ entityHierarchyContext.Root.Children.Add(new ViewModelNode("DropEntity", new RootViewModelContent((ExecuteCommand)((viewModel2, parameter) => { var dropParameters = (DropCommandParameters)parameter; var movedItem = dropParameters.Data is Guid ? entityHierarchyContext.GetModelView((Guid)dropParameters.Data) : null; var newParent = dropParameters.Parent is Guid ? entityHierarchyContext.GetModelView((Guid)dropParameters.Parent) : null; if (newParent == null || movedItem == null) { return; } var parent = ((Entity)newParent.NodeValue).Transformation; if (dropParameters.TargetIndex > parent.Children.Count) { return; } var transformationComponent = ((Entity)movedItem.NodeValue).Transformation; transformationComponent.Parent = null; parent.Children.Insert(dropParameters.TargetIndex, transformationComponent); })))); entityHierarchyContext.Root.Children.Add(new ViewModelNode("DropAsset", new RootViewModelContent((ExecuteCommand)(async(viewModel2, parameter) => { var dropParameters = (DropCommandParameters)parameter; var assetUrl = (string)dropParameters.Data; /*var newParent = entityHierarchyContext.GetModelView((Guid)dropParameters.Parent); * * if (newParent == null || assetUrl == null) * return; * * var parent = ((Entity)newParent.NodeValue).Transformation; * if (dropParameters.ItemIndex > parent.Children.Count) * return;*/ engineContext.Scheduler.Add(async() => { // Load prefab entity var loadedEntityPrefab = await engineContext.AssetManager.LoadAsync <Entity>(assetUrl + "#"); // Build another entity from prefab var loadedEntity = Prefab.Inherit(loadedEntityPrefab); // Add it to scene engineContext.EntityManager.AddEntity(loadedEntity); if (loadedEntity.ContainsKey(AnimationComponent.Key)) { Scheduler.Current.Add(() => AnimScript.AnimateFBXModel(engineContext, loadedEntity)); } }); })))); var scriptEngineContext = new ViewModelContext(viewModelGlobalContext); scriptEngineContext.ChildrenPropertyEnumerators.Add(new ScriptAssemblyEnumerator(engineContext)); scriptEngineContext.ChildrenPropertyEnumerators.Add(new ChildrenPropertyInfoEnumerator()); scriptEngineContext.Root = new ViewModelNode(new EnumerableViewModelContent <ViewModelReference>( () => engineContext.ScriptManager.ScriptAssemblies.Select(x => new ViewModelReference(x, true)))); scriptEngineContext.Root.Children.Add(new ViewModelNode("RunScript", new RootViewModelContent((ExecuteCommand)(async(viewModel2, parameter) => { var scriptName = (string)parameter; var matchingScript = engineContext.ScriptManager.Scripts.Where(x => x.TypeName + "." + x.MethodName == scriptName); if (matchingScript.Any()) { var scriptEntry = matchingScript.Single(); var microThread = engineContext.ScriptManager.RunScript(scriptEntry, null); } })))); var runningScriptsContext = new ViewModelContext(viewModelGlobalContext); runningScriptsContext.ChildrenPropertyEnumerators.Add(new MicroThreadEnumerator(selectedEntitiesContext)); runningScriptsContext.ChildrenPropertyEnumerators.Add(new ChildrenPropertyInfoEnumerator()); runningScriptsContext.Root = new ViewModelNode("MicroThreads", new EnumerableViewModelContent <ViewModelReference>( () => engineContext.Scheduler.MicroThreads.Select(x => new ViewModelReference(x, true)) )); var effectsContext = new ViewModelContext(viewModelGlobalContext); effectsContext.ChildrenPropertyEnumerators.Add(new EffectEnumerator(selectedEntitiesContext)); effectsContext.ChildrenPropertyEnumerators.Add(new ChildrenPropertyInfoEnumerator()); effectsContext.Root = new ViewModelNode("Effects", new EnumerableViewModelContent <ViewModelReference>( () => engineContext.RenderContext.Effects.Select(x => new ViewModelReference(x, true)) )); //effectsContext.Root.Children.Add(new ViewModelNode("PluginDefinitions", new RootViewModelContent())); var assetBrowserContext = new ViewModelContext(viewModelGlobalContext); assetBrowserContext.ChildrenPropertyEnumerators.Add(new AssetBrowserEnumerator(engineContext)); assetBrowserContext.ChildrenPropertyEnumerators.Add(new ChildrenPropertyInfoEnumerator()); assetBrowserContext.Root = new ViewModelNode("Root", "Root").GenerateChildren(assetBrowserContext); var editorContext = new ViewModelContext(viewModelGlobalContext); editorContext.Root = new ViewModelNode("Root"); editorContext.Root.Children.Add(new ViewModelNode("SwitchSelectionMode", new CommandViewModelContent((sender, parameters) => { pickingSystem.ActiveGizmoActionMode = PickingSystem.GizmoAction.None; }))); editorContext.Root.Children.Add(new ViewModelNode("SwitchTranslationMode", new CommandViewModelContent((sender, parameters) => { pickingSystem.ActiveGizmoActionMode = PickingSystem.GizmoAction.Translation; }))); editorContext.Root.Children.Add(new ViewModelNode("SwitchRotationMode", new CommandViewModelContent((sender, parameters) => { pickingSystem.ActiveGizmoActionMode = PickingSystem.GizmoAction.Rotation; }))); var contexts = new Dictionary <string, Tuple <ViewModelContext, ViewModelState> >(); contexts.Add("Editor", Tuple.Create(editorContext, new ViewModelState())); contexts.Add("RenderPassPlugins", Tuple.Create(renderPassPluginsContext, new ViewModelState())); contexts.Add("RenderPasses", Tuple.Create(renderPassHierarchyContext, new ViewModelState())); contexts.Add("SelectedEntities", Tuple.Create(selectedEntitiesContext, new ViewModelState())); contexts.Add("EntityHierarchy", Tuple.Create(entityHierarchyContext, new ViewModelState())); contexts.Add("ScriptEngine", Tuple.Create(scriptEngineContext, new ViewModelState())); contexts.Add("MicroThreads", Tuple.Create(runningScriptsContext, new ViewModelState())); contexts.Add("AssetBrowser", Tuple.Create(assetBrowserContext, new ViewModelState())); contexts.Add("Effects", Tuple.Create(effectsContext, new ViewModelState())); int lastAckPacket = 0; var entitiesChangePackets = new ConcurrentQueue <EntitiesChangePacket>(); socketContext.AddPacketHandler <EntitiesChangePacket>( (packet) => { entitiesChangePackets.Enqueue(packet); entitiesChangePacketEvent.Set(); }); Action asyncThreadStart = () => { while (true) { Thread.Sleep(100); foreach (var context in contexts) { // Process async data Guid[] path = null; object value = null; lock (context.Value.Item1) { var pendingNode = context.Value.Item1.GetNextPendingAsyncNode(); if (pendingNode != null) { value = pendingNode.Value; path = ViewModelController.BuildPath(pendingNode); } } if (path != null) { // Temporary encoding through our serializer (until our serializer are used for packets) var memoryStream = new MemoryStream(); var writer = new BinarySerializationWriter(memoryStream); writer.SerializeExtended(null, value, ArchiveMode.Serialize); var change = new NetworkChange { Path = path.ToArray(), Type = NetworkChangeType.ValueUpdateAsync, Value = memoryStream.ToArray() }; var packet = new EntitiesChangePacket { GroupKey = context.Key, Changes = new NetworkChange[] { change } }; socketContextAsync.Send(packet); break; } } } }; new Thread(new ThreadStart(asyncThreadStart)).Start(); // TODO: Move some of this code directly inside ViewModelContext/Controller classes while (true) { await TaskEx.WhenAny(TaskEx.Delay(250), entitiesChangePacketEvent.WaitAsync()); EntitiesChangePacket packet; while (entitiesChangePackets.TryDequeue(out packet)) { ViewModelController.NetworkApplyChanges(contexts[packet.GroupKey].Item1, packet.Changes); lastAckPacket = packet.Index; } // Wait a single frame so that network updates get applied properly by all rendering systems for next update await Scheduler.Current.NextFrame(); // If entity disappeared, try to replace it with new one (happen during file reload) // It's little bit cumbersome to test, need some simplification of this specific entity view model root. if (selectedEntitiesContext.Root != null && selectedEntitiesContext.Root.Parent != null && selectedEntitiesContext.Root.Parent.NodeValue is Entity) { var entity = (Entity)selectedEntitiesContext.Root.Parent.NodeValue; if (!engineContext.EntityManager.Entities.Contains(entity)) { entity = engineContext.EntityManager.Entities.FirstOrDefault(x => x.Guid == entity.Guid); if (entity != null) { selectedEntitiesContext.ViewModelByGuid.Clear(); selectedEntitiesContext.Root = selectedEntitiesContext.GetModelView(entity).Children.First(x => x.PropertyName == "Components"); } } } var data = new Dictionary <string, byte[]>(); foreach (var context in contexts) { lock (context.Value.Item1) { if (context.Value.Item1.Root != null) { context.Value.Item1.AddModelView(context.Value.Item1.Root); } ViewModelController.UpdateReferences(context.Value.Item1, true); data[context.Key] = ViewModelController.NetworkSerialize(context.Value.Item1, context.Value.Item2); } } viewModelGlobalContext.UpdateObjects(contexts.Select(x => x.Value.Item1)); //Console.WriteLine("DataSize: {0}", data.Sum(x => x.Value.Length)); await Task.Factory.StartNew(() => socketContext.Send(new EntitiesUpdatePacket { AckIndex = lastAckPacket, Data = data })); } }
private void Start() { anim = FindObjectOfType <AnimScript>(); move = FindObjectOfType <PlayerControl>(); sr = GetComponent <SpriteRenderer>(); }
private void Start() { anim = FindObjectOfType <AnimScript>(); move = FindObjectOfType <MoveFunction>(); sr = GetComponent <SpriteRenderer>(); }
public static async Task Run(EngineContext engineContext) { var renderingSetup = RenderingSetup.Singleton; renderingSetup.RegisterLighting(engineContext); ParticlePlugin particlePlugin; if (engineContext.DataContext.RenderPassPlugins.TryGetValueCast("ParticlePlugin", out particlePlugin)) { ScriptParticleSmoke.Run(engineContext); } var yebisPlugin = engineContext.RenderContext.RenderPassPlugins.OfType <YebisPlugin>().FirstOrDefault(); if (yebisPlugin != null) { var yebisConfig = AppConfig.GetConfiguration <YebisConfig>("Yebis"); // yebisPlugin.ToneMap.Type = ToneMapType.Linear; yebisPlugin.ToneMap.Gamma = yebisConfig.Gamma; yebisPlugin.ColorCorrection.Saturation = yebisConfig.Saturation; yebisPlugin.ColorCorrection.Contrast = yebisConfig.Contrast; yebisPlugin.ColorCorrection.Brightness = yebisConfig.Brightness; yebisPlugin.ColorCorrection.ColorTemperature = yebisConfig.ColorTemperature; yebisPlugin.Lens.Vignette.Enable = true; yebisPlugin.Lens.Vignette.PowerOfCosine = 5.0f; yebisPlugin.Lens.Distortion.Enable = true; yebisPlugin.Lens.Distortion.EdgeRoundness = 0.1f; yebisPlugin.Lens.Distortion.EdgeSmoothness = 1.0f; } // Run the script to animate the intro fade-in/fade-out engineContext.Scheduler.Add(async() => await AnimateIntroAndEndScene(engineContext)); var cameraEntityRootPrefab = await engineContext.AssetManager.LoadAsync <Entity>("/global_data/gdc_demo/char/camera.hotei#"); var lightCamEntityRootPrefab = await engineContext.AssetManager.LoadAsync <Entity>("/global_data/gdc_demo/char/light_cam.hotei#"); var lightCamEntityRoot = Prefab.Inherit(lightCamEntityRootPrefab); var cameraEntityRoot = Prefab.Inherit(cameraEntityRootPrefab); engineContext.EntityManager.AddEntity(cameraEntityRoot); engineContext.EntityManager.AddEntity(lightCamEntityRoot); Scheduler.Current.Add(() => AnimScript.AnimateFBXModel(engineContext, cameraEntityRoot, CaveSceneTotalTime, CaveSceneRestart)); Scheduler.Current.Add(() => AnimScript.AnimateFBXModel(engineContext, lightCamEntityRoot, CaveSceneTotalTime, CaveSceneRestart)); foreach (var light in ParameterContainerExtensions.CollectEntityTree(lightCamEntityRoot)) { var lightComp = light.Get(LightComponent.Key); if (lightComp != null) { if (!lightComp.ShadowMap && lightComp.Type == LightType.Directional) { lightComp.Intensity *= 0.1f; } } } var config = AppConfig.GetConfiguration <Script1.Config>("Script1"); var shadowMap1 = new Entity(); var shadowMap2 = new Entity(); shadowMap1.Set(TransformationComponent.Key, TransformationTRS.CreateComponent()); shadowMap2.Set(TransformationComponent.Key, TransformationTRS.CreateComponent()); shadowMap1.Set(LightComponent.Key, new LightComponent { Type = LightType.Directional, Intensity = 0.9f, Color = new Color3(0.9f, 0.9f, 1.0f), LightDirection = new Vector3(-0.2f, -0.1f, -1.0f), ShadowMap = true, DecayStart = 40000.0f }); shadowMap2.Set(LightComponent.Key, new LightComponent { Type = LightType.Directional, Color = new Color3(1.0f, 1.0f, 1.0f), LightDirection = new Vector3(-0.5f, 0.1f, -1.0f), ShadowMap = true, DecayStart = 40000.0f }); shadowMap1.Set(LightShaftsComponent.Key, new LightShaftsComponent { Color = new Color3(1.0f, 1.0f, 1.0f), LightShaftsBoundingBoxes = { new EffectMeshData { MeshData = MeshDataHelper.CreateBox(1, 1, 1, Color.White, true), Parameters = new ParameterCollection{ { TransformationKeys.World, Matrix.Scaling(3000, 3500, 3000) * Matrix.Translation(-2500, 0, 1500) } } } } }); shadowMap2.Set(LightShaftsComponent.Key, new LightShaftsComponent { Color = new Color3(1.0f, 1.0f, 1.0f), LightShaftsBoundingBoxes = { new EffectMeshData { MeshData = MeshDataHelper.CreateBox(1, 1, 1, Color.White, true), Parameters = new ParameterCollection{ { TransformationKeys.World, Matrix.Scaling(3500, 3500, 3000) * Matrix.Translation(-3000, 0, 1500) } } } } }); engineContext.EntityManager.AddEntity(shadowMap1); engineContext.EntityManager.AddEntity(shadowMap2); var dragon = await LoadDragon(engineContext); await LoadCave(engineContext, dragon); var dragonHead = engineContext.EntityManager.Entities.FirstOrDefault(x => x.Name == "English DragonHead"); TransformationTRS headCameraTransfo = null; if (dragonHead != null) { var headCamera = new Entity("Head camera"); headCamera.Set(CameraComponent.Key, new CameraComponent { AspectRatio = 16.0f / 9.0f, VerticalFieldOfView = (float)Math.PI * 0.3f, Target = dragonHead, AutoFocus = true, NearPlane = 10.0f }); headCamera.Set(TransformationComponent.Key, new TransformationComponent(new TransformationTRS { Translation = new Vector3(100.0f, -100.0f, 300.0f) })); //engineContext.EntitySystem.Entities.Add(headCamera); dragonHead.Transformation.Children.Add(headCamera.Transformation); } engineContext.Scheduler.Add(() => AnimateLights(engineContext)); // Performs several full GC after the scene has been loaded for (int i = 0; i < 10; i++) { GC.Collect(); Thread.Sleep(1); } while (true) { await engineContext.Scheduler.NextFrame(); if (headCameraTransfo != null) { var time = (double)DateTime.UtcNow.Ticks / (double)TimeSpan.TicksPerSecond; float rotationSpeed = 0.317f; var position = new Vector2((float)Math.Cos(time * rotationSpeed), (float)Math.Sin(time * rotationSpeed)) * 330.0f * ((float)Math.Sin(time * 0.23f) * 0.4f + 0.9f); headCameraTransfo.Translation = new Vector3(position.X, -150.0f + (float)Math.Cos(time * rotationSpeed) * 50.0f, position.Y); } if (engineContext.InputManager.IsKeyPressed(Keys.F1)) { bool isWireframeEnabled = renderingSetup.ToggleWireframe(); if (yebisPlugin != null) { yebisPlugin.DepthOfField.Enable = !isWireframeEnabled; yebisPlugin.Lens.Vignette.Enable = !isWireframeEnabled; yebisPlugin.Lens.Distortion.Enable = !isWireframeEnabled; } } if (engineContext.InputManager.IsKeyPressed(Keys.D1)) { engineContext.CurrentTime = TimeSpan.FromSeconds(0); } if (engineContext.InputManager.IsKeyPressed(Keys.D2)) { engineContext.CurrentTime = TimeSpan.FromSeconds(10); } if (engineContext.InputManager.IsKeyPressed(Keys.D3)) { engineContext.CurrentTime = TimeSpan.FromSeconds(20); } if (engineContext.InputManager.IsKeyPressed(Keys.D4)) { engineContext.CurrentTime = TimeSpan.FromSeconds(30); } if (engineContext.InputManager.IsKeyPressed(Keys.D5)) { engineContext.CurrentTime = TimeSpan.FromSeconds(40); } if (engineContext.InputManager.IsKeyPressed(Keys.D6)) { engineContext.CurrentTime = TimeSpan.FromSeconds(50); } if (engineContext.InputManager.IsKeyPressed(Keys.D7)) { engineContext.CurrentTime = TimeSpan.FromSeconds(60); } if (engineContext.InputManager.IsKeyPressed(Keys.D8)) { engineContext.CurrentTime = TimeSpan.FromSeconds(70); } if (engineContext.InputManager.IsKeyPressed(Keys.T)) { if (particlePlugin != null) { particlePlugin.EnableSorting = !particlePlugin.EnableSorting; } } } }
//[ParadoxScript] public static async Task <Entity> LoadDragon(EngineContext engineContext) { var renderingSetup = RenderingSetup.Singleton; renderingSetup.RegisterLighting(engineContext); var characterEntity = await AnimScript.LoadFBXModel(engineContext, "/global_data/gdc_demo/char/dragon_camera.hotei#"); characterEntity.Name = "Dragon"; Scheduler.Current.Add(() => AnimScript.AnimateFBXModel(engineContext, characterEntity, CaveSceneTotalTime, CaveSceneRestart)); // Setup predefined specular intensities/power for dragon foreach (var entity in ParameterContainerExtensions.CollectEntityTree(characterEntity)) { var meshComponent = entity.Get(ModelComponent.Key); if (meshComponent == null) { continue; } foreach (var effectMesh in meshComponent.InstantiatedSubMeshes) { effectMesh.Value.Parameters.Set(TessellationKeys.DesiredTriangleSize, 4.0f); switch (effectMesh.Key.EffectData.Part) { case "skin": effectMesh.Value.Parameters.Set(MaterialKeys.SpecularPower, 0.4f); effectMesh.Value.Parameters.Set(MaterialKeys.SpecularIntensity, 0.4f); break; case "mouth": effectMesh.Value.Parameters.Set(MaterialKeys.SpecularPower, 0.3f); effectMesh.Value.Parameters.Set(MaterialKeys.SpecularIntensity, 0.3f); break; case "skin2": effectMesh.Value.Parameters.Set(MaterialKeys.SpecularPower, 0.5f); effectMesh.Value.Parameters.Set(MaterialKeys.SpecularIntensity, 0.5f); break; case "wing": effectMesh.Value.Parameters.Set(MaterialKeys.SpecularPower, 0.4f); effectMesh.Value.Parameters.Set(MaterialKeys.SpecularIntensity, 0.5f); break; case "tooth": effectMesh.Value.Parameters.Set(MaterialKeys.SpecularPower, 0.4f); effectMesh.Value.Parameters.Set(MaterialKeys.SpecularIntensity, 0.7f); break; case "eye": effectMesh.Value.Parameters.Set(MaterialKeys.SpecularPower, 0.7f); effectMesh.Value.Parameters.Set(MaterialKeys.SpecularIntensity, 0.7f); break; default: effectMesh.Value.Parameters.Set(MaterialKeys.SpecularPower, 0.3f); effectMesh.Value.Parameters.Set(MaterialKeys.SpecularIntensity, 0.3f); break; } } } return(characterEntity); }