private static void OnDragDropFromHierarchyTransformToHierachyTransform( ushort handleIdxS, ushort handleIdxT) { TransformNative.TransformHandle handleS; handleS.idx = handleIdxS; TransformNative.TransformHandle handleT; handleT.idx = handleIdxT; TransformNative.TransformMove(handleS, handleT); SceneNode nodeS = Scene.GetSceneNode(handleS); SceneNode nodeT = Scene.GetSceneNode(handleT); nodeS.Move(nodeT); }
private void Setup() { int len = input.Length; FFTn = new TransformNative(len); FFTm = new Transform(len); fftn = new Complex[len]; ifftn = new Complex[len]; fftm = new Complex[len]; ifftm = new Complex[len]; inputReal = input.Select(x => (double)x.Real).ToArray(); outputReal = new double[len]; outputImag = new double[len]; }
private static void OnDragDropFromHierarchyTransformToHierachyScene( ushort handleIdxS, ushort handleIdxT) { TransformNative.TransformHandle handleS; handleS.idx = handleIdxS; SceneNative.SceneHandle handleT; handleT.idx = handleIdxT; var root = SceneNative.SceneGetRoot(handleT); TransformNative.TransformMove(handleS, root); SceneNode node = Scene.GetSceneNode(handleS); Scene scene = Scene.GetScene(handleT); node.Move(scene.root); }
public static double[][][] TransformWavetable(double[][] wavetable) { var waveCount = wavetable.Length; var newWavetable = new double[waveCount][][]; if (wavetable.Any(x => x.Length != WaveSize)) { throw new Exception("Wave length must be " + WaveSize); } var trans = new TransformNative(WaveSize); for (var w = 0; w < waveCount; w++) { newWavetable[w] = new double[PartialsTableCount][]; var baseWave = wavetable[w]; var complexIn = baseWave.Select(x => new Complex(x, 0)).ToArray(); var fft = new Complex[complexIn.Length]; var ifft = new Complex[fft.Length]; trans.FFT(complexIn, fft); for (var i = 0; i < PartialsTableCount; i++) { var partials = PartialsPerWave[i]; for (var n = partials + 1; n < fft.Length - partials; n++) { fft[n].Real = 0; fft[n].Imag = 0; } trans.IFFT(fft, ifft); newWavetable[w][i] = ifft.Select(x => x.Real).ToArray(); } } return(newWavetable); }
void OnGUI_RightMenu(SceneNode scene) { // 暂时不支持创建多个场景 if (ImGui.MenuItem("Create Scene", false))//!handle.IsValid())) { int count = SceneNative.SceneCount(); string _name = "Scene"; if (count > 0) { _name = string.Format("Scene ({0})", count); } SceneNative.SceneCreate(_name); } ImGui.Separator(); if (ImGui.MenuItem("Rename", "F2", false, scene != null)) { //curSelectedTransform = handle; renameing = true; } ImGui.Separator(); if (ImGui.MenuItem("Create Empty", scene != null)) { int count = TransformNative.TransformChildCount(scene.handle); string _name = "GameObject"; if (count > 0) { _name = string.Format("GameObject ({0})", count); } var gameObject = GameObject.Inner_Create(scene.handle, _name); SceneNode gameObjectNode = new SceneNode(); gameObjectNode.name = _name; gameObjectNode.handle = gameObject.transform.transformHandle; gameObjectNode.component = gameObject.transform; gameObjectNode.inspector = new InspectorTransform(); Scene.current.root.AddChild(gameObjectNode); } if (ImGui.BeginMenu("3D Object", scene != null)) { if (ImGui.MenuItem("Cube")) { string name = "Cube"; IntPtr native = TransformNative.TransformGetNativeByHandle(scene.handle); IntPtr gameObjectNative = AppNative.InnerGeoCreateCube(native, name); var gameObject = GameObject.CreateFromNative(gameObjectNative); SceneNode gameObjectNode = new SceneNode(); gameObjectNode.name = name; gameObjectNode.handle = gameObject.transform.transformHandle; gameObjectNode.component = gameObject.transform; gameObjectNode.inspector = new InspectorRenderer(); Scene.current.root.AddChild(gameObjectNode); } ImGui.EndMenu(); } if (ImGui.MenuItem("Camera", scene != null)) { Camera mainCamera = Camera.Inner_Create(scene.handle, "Main Camera"); SceneNode sceneCamera = new SceneNode(); sceneCamera.name = "Main Camera"; sceneCamera.handle = mainCamera.transformHandle; sceneCamera.component = mainCamera; sceneCamera.inspector = new InspectorCamera(); Scene.current.root.AddChild(sceneCamera); } }
bool OnGUI_TransformTree(SceneNode scene, int idx, ref bool selected) { int count = scene.children.Count; SceneNode curSelected = null; var _selected = Selector.GetSelected(); if (_selected?.Count > 0) { curSelected = _selected[0] as SceneNode; } for (var i = 0; i < count; i++) { SceneNode node = scene.children[i]; string label = string.Format("{0}##_Transform_{1}_{2}", node.name, idx, i); int childCount = node.children.Count; ImGuiTreeNodeFlags flags = flagsBase | (childCount == 0 ? ImGuiTreeNodeFlags.Leaf : ImGuiTreeNodeFlags.None); flags |= curSelected == node ? ImGuiTreeNodeFlags.Selected : ImGuiTreeNodeFlags.None; if (renameing && curSelected == node) { label = string.Format("###_{0}", label); } if (ImGui.TreeNodeEx(label, flags)) { if (renameing && curSelected == node) { neo_name = node.name; ImGuiInputTextFlags inputFlags = ImGuiInputTextFlags.EnterReturnsTrue | ImGuiInputTextFlags.AutoSelectAll; if (!ImGui.IsAnyItemActive() && !ImGui.IsMouseClicked(0)) { ImGui.SetKeyboardFocusHere(0); } ImGui.SameLine(ImGui.GetCursorPosX()); Vector2 padding = ImGui.GetStyle().FramePadding; padding.Y = 0; ImGui.PushStyleVar(ImGuiStyleVar.FramePadding, padding); if (ImGui.InputText( string.Format("##Transform_{0}_{1}", node.name, i), ref neo_name, 64, inputFlags)) { TransformNative.TransformSetName(curSelected.handle, neo_name); renameing = false; } ImGui.PopStyleVar(); } if (DragDropManager.DragDrop(node.name, node.handle.idx, DragDropWindow.Hierarchy, DragDropTree.Transforms, "_DDTreeWindow", ImGuiDragDropFlags.None, DragDropManager.OnDragDropAction)) { ImGui.TreePop(); return(false); } OnGUI_TransfromMenu(node, label); OnGUI_TransformTree(node, i, ref selected); ImGui.TreePop(); } else { OnGUI_TransfromMenu(node, label); } if (!selected) { bool clicked = ImGui.IsItemClicked(); //bool focused = childCount == 0 ? ImGui.IsItemFocused() : ImGui.IsItemHovered(); if (clicked) { curSelected = node; selected = true; Selector.Select(node); } } } if (curSelected != null) { // F2 if (ImGui.GetIO().KeysDown[113]) { neo_name = TransformNative.TransformGetName(curSelected.handle); renameing = true; } } return(true); }