protected void MasterTick(object sender, EventArgs e) { deltaTime = (double)DateTime.Now.Millisecond * 0.001 + (double)DateTime.Now.Second - totalTime; totalTime = (double)DateTime.Now.Millisecond * 0.001 + (double)DateTime.Now.Second; TitleText.Text = Title + "FPS: " + (uint)(1 / deltaTime); SakuraCore.TickSakuraCore(deltaTime); }
public void Initialize(SakuraCore.SPropertyData property) { PropertyData = property; ParamName.Text = property.PropName; string val = SakuraCore.GetStringProp(property.SObject, property.PropName, property.SourceType); ValueBox.Text = val; }
public void Initialize(SakuraCore.SPropertyData property) { PropertyData = property; ParamName.Text = property.PropName; SakuraCore.SVector val; SakuraCore.GetSVectorProp(property.SObject, property.PropName, out val, property.SourceType); ValueBoxX.Text = val.x.ToString(); ValueBoxY.Text = val.y.ToString(); ValueBoxZ.Text = val.z.ToString(); }
public void InitializeSceneView() { SceneRootNode = SakuraCore.GetSceneNode(IntPtr.Zero); ActiveNode = SakuraCore.GetSceneNode(IntPtr.Zero); SakuraCore.GetObjectProperties(SceneRootNode); List<SceneNodeProp> itemList = new List<SceneNodeProp>(); RootProp = new SceneNodeProp(SceneRootNode); itemList.Add(RootProp); SceneViewTree.ItemsSource = itemList; }
public ISPropertyInterface RegistSubMember(SakuraCore.SPropertyData submem) { ISPropertyInterface newset = new DetailView(); IntPtr memobj; SakuraCore.GetSubmemberProp(ActiveNode, submem.PropName, out memobj, submem.SourceType); if (memobj != IntPtr.Zero) { (newset as DetailView).RefreshActiveNode(memobj); } return(newset); }
public void RegistNewSetter(SakuraCore.SPropertyData property) { ISPropertyInterface newset; switch (property.PropType) { case "bool": { newset = new BoolSwitch() as ISPropertyInterface; break; } case "float": { newset = new FloatSet() as ISPropertyInterface; break; } case "const SVector&": case "SVector": case "structSakuraMath::SVector": { newset = new SVectorSet() as ISPropertyInterface; break; } case "const std::string&": case "std::string": case "string": case "std:string": { newset = new StringSet() as ISPropertyInterface; break; } default: { // Containers if (SakuraCore.PropIsContainer(property)) { RegistContainer(property); return; } else { // newset = RegistSubMember(property); break; } } } newset.Initialize(property); PropertySetters.Add(newset); DetailsDock.Children.Add(newset as UserControl); (newset as UserControl).SetValue(DockPanel.DockProperty, Dock.Top); }
public void RefreshActiveNode(IntPtr NewNode) { ActiveNode = NewNode; SceneViewTab.Header = SakuraCore.GetStringProp(NewNode, "Name"); var props = SakuraCore.GetObjectProperties(NewNode); PropertySetters.Clear(); DetailsDock.Children.Clear(); foreach (var prop in props) { RegistNewSetter(prop); } }
private void MenuItem_Click(object sender, RoutedEventArgs e) { if (!bInitialized) { bInitialized = true; SakuraCore.CreateSakuraCore((uint)CORE_GRAPHICS_API_CONF.SAKURA_DRAW_WITH_D3D12); MainViewPort.BorderStyle = BorderStyle.None; viewportHost.Child = MainViewPort; IntPtr Hwnd = MainViewPort.Handle; SakuraCore.InitSakuraGraphicsCore(Hwnd, (uint)MainViewPort.Width, (uint)MainViewPort.Height); sceneView.InitializeSceneView(); SakuraCore.Run(); } }
public void UpdateValue() { try { SakuraCore.SVector val = new SakuraCore.SVector(); val.x = float.Parse(ValueBoxX.Text); val.y = float.Parse(ValueBoxY.Text); val.z = float.Parse(ValueBoxZ.Text); SakuraCore.SetSVectorProp(PropertyData.SObject, PropertyData.PropName, val); } catch { } }
public SceneNodeProp(IntPtr node) { SceneNode = node; DisplayName = SakuraCore.GetStringProp(SceneNode, "Name"); Children = new List<SceneNodeProp>(); if (node != null) { for(uint i = 0; i < SakuraCore.GetChildrenNum(SceneNode); i++) { IntPtr cd = SakuraCore.GetSceneNode(SceneNode, i); var childNode = new SceneNodeProp(cd); Children.Add(childNode); } } }
private void ExitButton_Click(object sender, RoutedEventArgs e) { SakuraCore.ShutDown(); SakuraWPF.App.Current.Shutdown(); }