public void Deserialize_Jagged_ArrayObject()
        {
            ArrayObject arr = new ArrayObject();

            arr.ID   = 0;
            arr.Type = typeof(int[][]);

            ArrayObject[] arrObjects = new ArrayObject[4];
            arrObjects[0] = GetIntegerArrayObject();
            arrObjects[1] = GetIntegerArrayObject();
            arrObjects[2] = GetIntegerArrayObject();
            arrObjects[3] = GetIntegerArrayObject();

            arr.Items = new ObjectBase[4] {
                arrObjects[0], arrObjects[1], arrObjects[2], arrObjects[3]
            };


            int[][] res = (int[][])arr.GetValue();

            for (int i = 0; i < 4; i++)
            {
                for (int j = 0; j < 4; j++)
                {
                    Assert.AreEqual(j, res[i][j]);
                }
            }
        }
Example #2
0
        public void Evaluate_CanEvaluateMap()
        {
            string input = @"
let map = fn(arr, f) {
    let iter = fn(arr, accumulated) {
        if (len(arr) == 0) {
            accumulated
        } else {
            iter(rest(arr), push(accumulated, f(first(arr))));
        }
    };
    iter(arr, []);
};
map([2,3], fn(x) { x * 2 });
";

            ArrayObject actual = this.AssertAndCast <ArrayObject>(this.subject.Evaluate(input, this.environment));

            Assert.Equal(2, actual.Elements.Count);
            IntegerObject intResult = this.AssertAndCast <IntegerObject>(actual.Elements[0]);

            Assert.Equal(4, intResult.Value);
            intResult = this.AssertAndCast <IntegerObject>(actual.Elements[1]);
            Assert.Equal(6, intResult.Value);
        }
        public static object ToCouchbaseObject(FLValue *value, Database database, bool dotNetTypes, Type hintType1 = null)
        {
            switch (Native.FLValue_GetType(value))
            {
            case FLValueType.Array: {
                if (dotNetTypes)
                {
                    return(ToObject(value, database.SharedStrings, 0, hintType1));
                }

                var array = new ArrayObject(new MArray(new MValue(value), null), false);
                return(array);
            }

            case FLValueType.Dict: {
                var dict = Native.FLValue_AsDict(value);
                var type = TypeForDict(dict, database.SharedStrings);
                if (!dotNetTypes && type.buf == null && !IsOldAttachment(database, dict))
                {
                    return(new DictionaryObject(new MDict(new MValue(value), null), false));
                }

                var result = ToObject(value, database.SharedStrings, 0, hintType1) as IDictionary <string, object>;
                return(ConvertDictionary(result, database));
            }

            case FLValueType.Undefined:
                return(null);

            default:
                return(ToObject(value, database.SharedStrings));
            }
        }
Example #4
0
 /// <summary>
 /// <see>http://nodejs.org/docs/v0.4.8/api/buffers.html#new_Buffer</see>
 /// </summary>
 public static NodeBuffer Create(IronJS.Environment env, ArrayObject array)
 {
     NodeBuffer n = new NodeBuffer(env, array.Length);
     for (int i = 0; i < array.Length; i += 1)
         n.Data[i] = (byte)(uint)array.Get(i).Number;
     return n;
 }
        public static object ToCouchbaseObject(FLValue *value, Database database, bool dotNetTypes, Type hintType1 = null)
        {
            switch (Native.FLValue_GetType(value))
            {
            case FLValueType.Array: {
                if (dotNetTypes)
                {
                    return(ToObject(value, database, 0, hintType1));
                }

                var array = new ArrayObject(new FleeceMutableArray(new MValue(value), null), false);
                return(array);
            }

            case FLValueType.Dict: {
                var dict = Native.FLValue_AsDict(value);
                var type = TypeForDict(dict);
                if (!dotNetTypes && type.buf == null && !IsOldAttachment(dict))
                {
                    return(new DictionaryObject(new MDict(new MValue(value), null), false));
                }

                return(ToObject(value, database, 0, hintType1));
            }

            case FLValueType.Undefined:
                return(null);

            default:
                return(ToObject(value, database));
            }
        }
        public static void TerrainImportGuiAddOpacityMap(string name)
        {
            // TODO: Need to actually look at
            // the file here and figure
            // out how many channels it has.
            string txt = omni.Util.makeRelativePath(name, omni.Util.getWorkingDirectory());
            // Will need to do this stuff
            // once per channel in the file
            // currently it works with just grayscale.

            string channelsTxt = "R\tG\tB\tA";
            string bitmapInfo  = omni.Util.getBitmapInfo(name);

            string channelCount = omni.Util.getWord(bitmapInfo, 2);

            GuiTextListCtrl opacityList =
                ((GuiControl)"TerrainImportGui").findObjectByInternalName("OpacityLayerTextList", true);

            guiTerrainImportGui TerrainImportGui = "TerrainImportGui";
            ArrayObject         namesArray       = TerrainImportGui["namesArray"];
            ArrayObject         channelsArray    = TerrainImportGui["channelsArray"];


            for (int i = 0; i < channelCount.AsInt(); i++)
            {
                namesArray.push_back(txt, name);
                channelsArray.push_back(txt, omni.Util.getWord(channelsTxt, i) + "/t" + channelCount);
                //TerrainImportGui.namesArray.echo();
                int count = opacityList.rowCount();
                opacityList.addRow(count, txt + "/t" + omni.Util.getWord(channelsTxt, i), -1);
            }
            //OpacityMapListBox.addItem( %name );
        }
Example #7
0
        public void ReadWithArray()
        {
            JsonSerializerOptions options = new JsonSerializerOptions();

            options.SetupExtensions();

            const string json = @"{""IntArray"":[1,2],""ObjectArray"":[{""IntValue"":1},{""IntValue"":2}],""StringArray"":[""a"",""b""]}";
            ArrayObject  obj  = Helper.Read <ArrayObject>(json, options);

            Assert.NotNull(obj);

            Assert.NotNull(obj.IntArray);
            Assert.Equal(2, obj.IntArray.Length);
            Assert.Equal(1, obj.IntArray[0]);
            Assert.Equal(2, obj.IntArray[1]);

            Assert.NotNull(obj.ObjectArray);
            Assert.Equal(2, obj.ObjectArray.Length);
            Assert.NotNull(obj.ObjectArray[0]);
            Assert.Equal(1, obj.ObjectArray[0].IntValue);
            Assert.NotNull(obj.ObjectArray[1]);
            Assert.Equal(2, obj.ObjectArray[1].IntValue);

            Assert.NotNull(obj.StringArray);
            Assert.Equal(2, obj.StringArray.Length);
            Assert.Equal("a", obj.StringArray[0]);
            Assert.Equal("b", obj.StringArray[1]);
        }
Example #8
0
        unsafe void PrepareState()
        {
            if (m_AttributeState != null)
            {
                UpdateGrid ();
                PositionBuffer.Publish ();
                ParameterBuffer.Publish ();
                m_State.Activate ();
                return;
            }

            m_Count = m_GridDiameter / m_GridDensity + 1;

            unsafe
            {
                PositionBuffer = new BufferObjectCompact<Vector3> (sizeof(Vector3), 4 * m_Count + 2) { Name = "position_buffer", Usage = BufferUsageHint.DynamicDraw };
                ParameterBuffer = new BufferObjectCompact<float> (sizeof(float), 4 * m_Count + 2) { Name = "parameter_buffer", Usage = BufferUsageHint.DynamicDraw };
            }

            m_UniformState = new UniformState ().Set ("modelview_transform", m_CameraMvp.ModelViewProjection);
            m_AttributeState = new ArrayObject (new VertexAttribute { AttributeName = "pos", Buffer = PositionBuffer, Size = 3, Type = VertexAttribPointerType.Float }, new VertexAttribute { AttributeName = "param", Buffer = ParameterBuffer, Size = 1, Type = VertexAttribPointerType.Float });

            m_Program = new Program ("coordinate_grid_program", GetShaders ("GridRenderPass", "").ToArray ());
            m_State = new State (null, m_AttributeState, m_Program, m_UniformState);

            PrepareState ();
        }
Example #9
0
        private void button1_Click(object sender, EventArgs e)
        {
            textBox1.Text = "";

            string script = textBox2.Text + textEditorControl1.Text;

            try
            {
                Object Result = Microsoft.JScript.Eval.JScriptEvaluate(script, Microsoft.JScript.Vsa.VsaEngine.CreateEngine());

                if (Result.GetType().Name == "ConcatString" || Result.GetType().Name == "String")
                {
                    textBox1.Text = Result.ToString();
                }
                else if (Result.GetType().Name == "ArrayObject")
                {
                    ArrayObject obj = Result as ArrayObject;

                    for (int i = 0; i < int.Parse(obj.length.ToString()); i++)
                    {
                        textBox1.Text += obj[i];
                    }
                }
                else
                {
                    MessageBox.Show("Type is " + Result.GetType().Name);
                }
            }
            catch (Exception ex)
            {
                textBox1.Text = ex.Message + " \r\n\r\n***" + ex.StackTrace;
            }
        }
Example #10
0
        public void WriteWithArray()
        {
            JsonSerializerOptions options = new JsonSerializerOptions();

            options.SetupExtensions();

            const string json = @"{""IntArray"":[1,2],""ObjectArray"":[{""IntValue"":1},{""IntValue"":2}],""StringArray"":[""a"",""b""]}";

            ArrayObject obj = new ArrayObject
            {
                IntArray    = new[] { 1, 2 },
                ObjectArray = new[]
                {
                    new IntObject {
                        IntValue = 1
                    },
                    new IntObject {
                        IntValue = 2
                    }
                },
                StringArray = new[] { "a", "b" }
            };

            Helper.TestWrite(obj, json, options);
        }
        public void Deserialize_2D_ArrayObject()
        {
            int z = 0;

            ArrayObject arr = new ArrayObject();

            arr.ID   = 0;
            arr.Type = typeof(int[, ]);

            ObjectBase[,] items = new ObjectBase[4, 4];

            for (int x = 0; x < 4; x++)
            {
                for (int y = 0; y < 4; y++)
                {
                    items[x, y] = GetIntegerValueObject(z++);
                }
            }

            arr.Items = items;

            int[,] res = (int[, ])arr.GetValue();

            z = 0;
            for (int x = 0; x < 4; x++)
            {
                for (int y = 0; y < 4; y++)
                {
                    Assert.AreEqual(z, res[x, y]);
                    z++;
                }
            }
        }
Example #12
0
        public static ArrayObject ConstructArrayFromArrayLiteral(CodeContext context, object [] values)
        {
            ArrayObject result = new ArrayObject();

            foreach (object obj in values)
            {
                result.AddObjectKey(obj.ToString(), obj);
            }
            return(result);
        }
Example #13
0
        public static List <object> EvalArrayObject(string expression)
        {
            List <object> list = new List <object>();
            ArrayObject   ar   = EvalObject(expression) as ArrayObject;

            foreach (object i in ar)
            {
                list.Add(ar[i]);
            }
            return(list);
        }
Example #14
0
        public void Evaluate_CanEvaluateArrays()
        {
            string input = "[1, 2 * 2, 3 + 3]";

            IObject     actual      = this.subject.Evaluate(input, this.environment);
            ArrayObject arrayObject = this.AssertAndCast <ArrayObject>(actual);

            Assert.Equal(arrayObject.Elements[0], new IntegerObject(1));
            Assert.Equal(arrayObject.Elements[1], new IntegerObject(4));
            Assert.Equal(arrayObject.Elements[2], new IntegerObject(6));
        }
        public void Deserialize_1D_ArrayObject()
        {
            ArrayObject arr = GetIntegerArrayObject();

            int[] res = (int[])arr.GetValue();

            for (int i = 0; i < res.Length; i++)
            {
                Assert.AreEqual(i, res[i]);
            }
        }
Example #16
0
        private List <PayloadObject> ParseJsonArray(ArrayObject jsonData)
        {
            List <PayloadObject> payloadObjects = new List <PayloadObject>();

            for (int i = 0; i < (int)jsonData.length; i++)
            {
                JSObject resource = (JSObject)jsonData[i];
                payloadObjects.Add(parseJsonObject(resource));
            }

            return(payloadObjects);
        }
 public static IObject GetObject(string name, string index)
 {
     if (dictionary.ContainsKey(name) && dictionary[name] is ArrayObject)
     {
         ArrayObject array = (ArrayObject)dictionary[name];
         return(array[index]);
     }
     else
     {
         throw new Exception("Error in calling arrayobject");
     }
 }
Example #18
0
        public static void Should_Clone_ArrayObject()
        {
            var original = new ArrayObject
            {
                ByteArray   = new byte[] { 0x01, 0x02, 0x03, 0x04 },
                IntArray    = new int[] { 1, 2, 3, 4 },
                DoubleArray = new double[] { 1.0, 2.0, 3.0, 4.0, 5.0 },
            };
            ArrayObject cloned = original.Clone();

            cloned.ShouldBe(original);
        }
Example #19
0
        public void Should_Clone_ArrayObject()
        {
            var original = new ArrayObject
            {
                ByteArray   = new byte[] { 0x01, 0x02, 0x03, 0x04 },
                IntArray    = new [] { 1, 2, 3, 4 },
                DoubleArray = new [] { 1.0, 2.0, 3.0, 4.0, 5.0 },
            };
            var cloned = original.Clone();

            Assert.AreEqual(original, cloned);
        }
    public void OnLeadDance(SocketIOEvent e)
    {
        test.text = "On lead dance";
        movetMentController play = players[pos[0]].GetComponent <movetMentController>();

        ArrayObject a = ArrayObject.createFromJson(e.data.ToString());

        foreach (int x in a.lead_dances)
        {
            play.setDance(x);
        }
        phase2();
    }
Example #21
0
        public static void ModifiedClone_Array_ShouldNotBeEqual()
        {
            var original = new ArrayObject
            {
                ByteArray   = new byte[] { 0x01, 0x02, 0x03, 0x04 },
                IntArray    = new int[] { 1, 2, 3, 4 },
                DoubleArray = new double[] { 1.0, 2.0, 3.0, 4.0, 5.0 },
            };
            ArrayObject cloned = original.Clone();

            cloned.ByteArray[2] = 0x10;

            cloned.ShouldNotBe(original);
        }
Example #22
0
        public void ModifiedClone_Array_ShouldNotBeEqual()
        {
            var original = new ArrayObject
            {
                ByteArray   = new byte[] { 0x01, 0x02, 0x03, 0x04 },
                IntArray    = new [] { 1, 2, 3, 4 },
                DoubleArray = new [] { 1.0, 2.0, 3.0, 4.0, 5.0 },
            };
            var cloned = original.Clone();

            cloned.ByteArray[2] = 0x10;

            Assert.AreNotEqual(original, cloned);
        }
Example #23
0
        public unsafe void TestReadOnlyArray()
        {
            var now         = DateTimeOffset.UtcNow;
            var nestedArray = new[] { 1L, 2L, 3L };
            var nestedDict  = new Dictionary <string, object> {
                ["foo"] = "bar"
            };
            var masterData = new object[] { 1, "str", nestedArray, now, nestedDict };

            var flData = new FLSliceResult();

            Db.InBatch(() =>
            {
                flData = masterData.FLEncode();
            });

            try {
                var context = new DocContext(Db, null);
                using (var mRoot = new MRoot(context)) {
                    mRoot.Context.Should().BeSameAs(context);
                    FLDoc *fleeceDoc = Native.FLDoc_FromResultData(flData,
                                                                   FLTrust.Trusted,
                                                                   Native.c4db_getFLSharedKeys(Db.c4db), FLSlice.Null);
                    var flValue           = Native.FLDoc_GetRoot(fleeceDoc);
                    var mArr              = new FleeceMutableArray(new MValue(flValue), mRoot);
                    var deserializedArray = new ArrayObject(mArr, false);
                    deserializedArray.GetArray(2).Should().Equal(1L, 2L, 3L);
                    deserializedArray.GetArray(3).Should().BeNull();
                    deserializedArray.GetBlob(1).Should().BeNull();
                    deserializedArray.GetDate(3).Should().Be(now);
                    deserializedArray.GetDate(4).Should().Be(DateTimeOffset.MinValue);
                    deserializedArray[1].ToString().Should().Be("str");
                    deserializedArray.GetString(2).Should().BeNull();
                    deserializedArray.GetDictionary(4).Should().BeEquivalentTo(nestedDict);
                    deserializedArray[0].Dictionary.Should().BeNull();

                    var list = deserializedArray.ToList();
                    list[2].Should().BeAssignableTo <IList <object> >();
                    list[4].Should().BeAssignableTo <IDictionary <string, object> >();

                    var mVal = new MValue();
                    mVal.Dispose();
                    Native.FLDoc_Release(fleeceDoc);
                }
            } finally {
                Native.FLSliceResult_Release(flData);
            }

            var mroot = new MRoot();
        }
Example #24
0
        public static ArrayObject EvalJScript(string JScript)
        {
            VsaEngine   Engine = VsaEngine.CreateEngine();
            ArrayObject Result = null;

            try
            {
                Result = Microsoft.JScript.Eval.JScriptEvaluate(JScript, Engine) as ArrayObject;
            }
            catch (Exception ex)
            {
                return(null);
            }
            return(Result);
        }
        public void create()
        {
            //server scripts

            //add DBs
            if (Global.IsObject("DatablockFilesList"))
            {
                ArrayObject datablockFilesList = Core.SimObjects.Collections.DatablockFilesList;
                datablockFilesList.Add("data/spectatorGameplay/scripts/datablocks/camera.cs");
                datablockFilesList.Add("data/spectatorGameplay/scripts/datablocks/defaultParticle.cs");
                datablockFilesList.Add("data/spectatorGameplay/scripts/datablocks/lights.cs");
                datablockFilesList.Add("data/spectatorGameplay/scripts/datablocks/managedDatablocks.cs");
                datablockFilesList.Add("data/spectatorGameplay/scripts/datablocks/managedDecalData.cs");
                datablockFilesList.Add("data/spectatorGameplay/scripts/datablocks/managedForestItemData.cs");
                datablockFilesList.Add("data/spectatorGameplay/scripts/datablocks/managedParticleData.cs");
                datablockFilesList.Add("data/spectatorGameplay/scripts/datablocks/managedParticleEmitterData.cs");
                datablockFilesList.Add("data/spectatorGameplay/scripts/datablocks/markers.cs");
                datablockFilesList.Add("data/spectatorGameplay/scripts/datablocks/ribbons.cs");
                datablockFilesList.Add("data/spectatorGameplay/scripts/datablocks/sounds.cs");
            }

            if (Global.IsObject("LevelFilesList"))
            {
                for (string file = Global.FindFirstFile("data/spectatorGameplay/levels/*.mis");
                     file != "";
                     file = Global.FindNextFile("data/spectatorGameplay/levels/*.mis"))
                {
                    Core.SimObjects.Collections.LevelFilesList.Add(file);
                }
            }

            if (!Global.GetConsoleBool("Server::Dedicated"))
            {
                //client scripts
                Keybinds.Init();

                string prefPath = Core.Functions.Paths.GetPrefPath();
                if (Global.IsFile(prefPath + "/keybinds.cs"))
                {
                    Global.Exec(prefPath + "/keybinds.cs");
                }

                Client.InputCommands.Variables.Init();

                //guis
                Global.Exec("data/spectatorGameplay/scripts/gui/playGui.gui");
            }
        }
Example #26
0
        public void CloneArrayOfClasses()
        {
            var sut     = this.SetupMapper();
            var persons = new ArrayObject()
            {
                ChildrenArray = new ArrayObject[]
                {
                    new ArrayObject(), new ArrayObject()
                }
            };

            var clone = sut.Clone(persons);

            Assert.IsNotNull(clone.ChildrenArray);
            Assert.AreNotSame(persons.ChildrenArray, clone.ChildrenArray);
        }
Example #27
0
        public void CloneArrayOfPrimitives()
        {
            var sut = this.SetupMapper();

            var persons = new ArrayObject();

            persons.Array = new int[]
            {
                0, 1, 2, 3, 4, 5
            };

            var clone = sut.Clone(persons);

            Assert.IsNotNull(clone.Array);
            Assert.AreNotSame(persons.Array, clone.Array);
        }
Example #28
0
        public async Task ReturnResultWithSum1357()
        {
            var usedArray = new ArrayObject
            {
                Action = "Sum",
                Number = new int[] { 1, 3, 5, 7 }
            };

            string convertedUsedArray = JsonConvert.SerializeObject(usedArray);
            var    content            = new StringContent(convertedUsedArray,
                                                          encoding: Encoding.UTF8, mediaType: "application/json");
            var response = await Client.PostAsync("array", content);

            string responseJson = await response.Content.ReadAsStringAsync();

            Assert.Equal("{\"result\":16}", responseJson);
        }
Example #29
0
    public override bool Equals(object obj)
    {
        if (object == null || GetType() != obj.GetType())
        {
            return(false);
        }
        ArrayObject other = (ArrayObject)obj;

        // compare two BitArray objects
        for (var i = 0; i < theBits.Length; ++i)
        {
            if (theBits[i] != other.theBits[i])
            {
                return(false);
            }
        }
        return(true);
    }
        public void removeOpacitymap()
        {
            GuiTextListCtrl opacityList =
                ((GuiControl)"TerrainImportGui").findObjectByInternalName("OpacityLayerTextList", true);
            int itemIdx = opacityList.getSelectedId();

            if (itemIdx < 0)
            {
                return;
            }

            ArrayObject namesArray    = this["namesArray"];
            ArrayObject channelsArray = this["channelsArray"];

            namesArray.erase(itemIdx);
            channelsArray.erase(itemIdx);

            opacityList.removeRowById(itemIdx);
        }
Example #31
0
        public void CloneArrayOfClassesAndTheirClasses()
        {
            var sut     = this.SetupMapper();
            var persons = new ArrayObject();

            persons.ChildrenArray = new ArrayObject[]
            {
                new ArrayObject(), new ArrayObject()
            };

            var clone = sut.Clone(persons);

            for (int i = 0; i < persons.ChildrenArray.Length; i++)
            {
                var n1 = persons.ChildrenArray[i];
                var n2 = clone.ChildrenArray[i];

                Assert.AreNotSame(n1, n2);
            }
        }
Example #32
0
 public static void FinalizeApplication()
 {
     mGlobalStringMap = null;
     mNativeClassNames?.Clear();
     mNativeClassNames = null;
     mConsoleOutput    = null;
     mMessageMapper    = null;
     mStorage          = null;
     mArrayClass       = null;
     mDictionaryClass  = null;
     mVAPool           = null;
     NULL_ARG          = null;
     ArrayObject.FinalizeApplication();
     TjsByteCodeLoader.FinalizeApplication();
     CustomObject.FinalizeApplication();
     DictionaryObject.FinalizeApplication();
     MathClass.FinalizeApplication();
     Variant.FinalizeApplication();
     LexicalAnalyzer.FinalizeApplication();
 }
Example #33
0
        unsafe void PrepareState()
        {
            if (m_ParticleRenderingState != null)
            {
                Simulate (DateTime.Now);

                PositionBuffer.Publish ();
                ColorAndSizeBuffer.Publish ();
                m_SystemState.Activate ();
                return;
            }

            unsafe
            {
                //VelocityBuffer = new BufferObject<Vector4> (sizeof(Vector4), size) { Name = "velocity_buffer", Usage = BufferUsageHint.DynamicDraw };
                PositionBuffer = new BufferObject<Vector4> (sizeof(Vector4), PARTICLES_COUNT) { Name = "position_buffer", Usage = BufferUsageHint.DynamicDraw };
                ColorAndSizeBuffer = new BufferObject<Vector4> (sizeof(Vector4), PARTICLES_COUNT) { Name = "colorandsize_buffer", Usage = BufferUsageHint.DynamicDraw };
            }

            m_Projection = new MatrixStack ().Push (Matrix4.CreateOrthographic (14, 14, -1, 1));

            m_TransformationStack = new MatrixStack (m_Projection).Push (Matrix4.Identity).Push (Matrix4.Identity);

            m_UniformState = new UniformState ().Set ("color", new Vector4 (0, 0, 1, 1)).Set ("red", 1.0f).Set ("green", 0.0f).Set ("blue", 1.0f).Set ("colors", new float[] { 0, 1, 0, 1 }).Set ("colors2", new Vector4[] { new Vector4 (1, 0.1f, 0.1f, 0), new Vector4 (1, 0, 0, 0), new Vector4 (1, 1, 0.1f, 0) }).Set ("modelview_transform", m_TransformationStack);

            var sprite = new[] { new Vector3 (-1, -1, 0), new Vector3 (-1, 1, 0), new Vector3 (1, 1, 0), new Vector3 (1, -1, 0) };

            var vdata_buffer = new BufferObject<Vector3> (sizeof(Vector3)) { Name = "vdata_buffer", Usage = BufferUsageHint.DynamicDraw, Data = sprite };

            m_ParticleRenderingState = new ArrayObject (new VertexAttribute { AttributeName = "vertex_pos", Buffer = vdata_buffer, Size = 3, Type = VertexAttribPointerType.Float }, new VertexAttribute { AttributeName = "sprite_pos", Buffer = PositionBuffer, Divisor = 1, Size = 4, Stride = 0, Type = VertexAttribPointerType.Float }, new VertexAttribute { AttributeName = "sprite_colorandsize", Buffer = ColorAndSizeBuffer, Divisor = 1, Size = 4, Type = VertexAttribPointerType.Float });
            m_ParticleRenderingProgram = new Program ("main_program", opentk.ShadingSetup.RenderPass.GetResourceShaders(string.Empty, GetType ().Namespace.Split ('.').Last ()).ToArray ());

            m_SystemState = new State (null, m_ParticleRenderingState, m_ParticleRenderingProgram, m_UniformState);

            var hnd = PositionBuffer.Handle;
            hnd = ColorAndSizeBuffer.Handle;

            m_DebugView = new opentk.QnodeDebug.QuadTreeDebug(10000, m_TransformationStack);
            InitializeSystem();
            PrepareState ();
        }
Example #34
0
 static ArrayObject GetChildren(FunctionObject func, CommonObject that)
 {
     var children = that.CastTo<CommandObject>().Children;
     var array = new ArrayObject(func.Env, (uint)children.Count);
     for (int i = 0; i < children.Count; i++)
         array.Put(i, BoxingUtils.JsBox(children[i]));
     return array;
 }
Example #35
0
        unsafe void PrepareState()
        {
            if (m_AttributeState != null)
            {
                FillBuffers();

                PositionBuffer.Publish ();
                DimensionBuffer.Publish ();
                m_State.Activate ();
                return;
            }

            unsafe
            {
                PositionBuffer = new BufferObjectCompact<Vector3> (sizeof(Vector3), m_MaxSize) { Name = "position_buffer", Usage = BufferUsageHint.DynamicDraw };
                DimensionBuffer = new BufferObjectCompact<Vector3> (sizeof(Vector3), m_MaxSize) { Name = "dimension_buffer", Usage = BufferUsageHint.DynamicDraw };
            }

            m_UniformState = new UniformState ()
                .Set ("modelview_transform", m_TransformationStack);

            m_AttributeState = new ArrayObject (
            new VertexAttribute { AttributeName = "cube_pos", Buffer = PositionBuffer, Size = 3, Type = VertexAttribPointerType.Float },
            new VertexAttribute { AttributeName = "cube_dimensions", Buffer = DimensionBuffer, Size = 3, Type = VertexAttribPointerType.Float });

            m_Program = new Program ("debug_qnode_program", GetShaders("QnodeDebug", "").ToArray ());
            m_State = new State (null, m_AttributeState, m_Program, m_UniformState);

            var hnd = PositionBuffer.Handle;
            hnd = DimensionBuffer.Handle;

            PrepareState ();
        }
        /// <summary>
        /// given color and depth textures, render them.
        /// </summary>
        private static RenderPass CreateSolidSphere(
			 FramebufferBindingSet targets,
			 BufferObject<Vector4> sprite_pos_buffer,
			 BufferObject<Vector4> sprite_color_buffer,
			 BufferObject<Vector4> sprite_dimensions_buffer,
			 IValueProvider<Vector2> viewport,
			 IValueProvider<int> particles_count,
			 IValueProvider<float> particle_scale_factor,
			 IValueProvider<string> fragdepthroutine,
			 IValueProvider<string> outputroutine,
			 ModelViewProjectionParameters mvp,
			 UniformState subroutineMapping,
			 IEnumerable<Shader> subroutines
		)
        {
            var uniform_state = subroutineMapping != null? new UniformState (subroutineMapping): new UniformState();
            uniform_state.Set ("viewport_size", viewport);
            uniform_state.Set ("particle_scale_factor", particle_scale_factor);
            uniform_state.Set ("u_SetFragmentDepth", ShaderType.FragmentShader, fragdepthroutine);
            uniform_state.Set ("u_SetOutputs", ShaderType.FragmentShader, outputroutine);
            uniform_state.SetMvp("", mvp);

            var array_state =
                new ArrayObject (
                    new VertexAttribute { AttributeName = "sprite_pos", Buffer = sprite_pos_buffer, Size = 3, Stride = 16, Type = VertexAttribPointerType.Float },
                    new VertexAttribute { AttributeName = "sprite_color", Buffer = sprite_color_buffer, Size = 3, Stride = 16, Type = VertexAttribPointerType.Float },
                    new VertexAttribute { AttributeName = "sprite_dimensions", Buffer = sprite_dimensions_buffer, Size = 3, Stride = 16, Type = VertexAttribPointerType.Float }
                );

            var shaders = SeparateProgramPass.GetShaders("solid_sphere", "RenderPassFactory");
            shaders = shaders.Concat(subroutines ?? new Shader[0]).ToArray();

            //
            var resultPass = new SeparateProgramPass
            (
                 //the name of the pass-program
                 "solid_sphere_RenderPassFactory",
                 //before state
                 null,
                 //before render
                 null,
                 //render code
                 (window) =>
                 {
                    GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
                  GL.Enable (EnableCap.DepthTest);
                    GL.DepthMask(true);
                    GL.DepthFunc (DepthFunction.Less);
                    GL.Disable (EnableCap.Blend);

                    //setup viewport
                    GL.Viewport(0, 0, (int)viewport.Value.X, (int)viewport.Value.Y);
                    GL.DrawArrays (BeginMode.Points, 0, particles_count.Value);
                 },
                 //shaders
                 shaders,

                 //pass state
                 array_state,
                 uniform_state,
                 targets
            );

            return resultPass;
        }
        //
        private void PrepareState()
        {
            if (m_Initialized)
            {
                if (PARTICLES_COUNT != m_PositionBuffer.Data.Length)
                {
                    Position = m_PositionBuffer.Data = new Vector4[PARTICLES_COUNT];
                    Dimension = m_DimensionBuffer.Data = new Vector4[PARTICLES_COUNT];
                    Color = m_ColorBuffer.Data = new Vector4[PARTICLES_COUNT];
                    Rotation = m_RotationBuffer.Data = new Matrix4[PARTICLES_COUNT];
                    RotationLocal = m_RotationLocalBuffer.Data = new Matrix4[PARTICLES_COUNT];

                    InitializeSystem ();
                }

                Simulate (DateTime.Now);

                switch (PublishMethod){
                case PublishMethod.AllAtOnce:

                    m_PositionBuffer.Publish ();
                    m_DimensionBuffer.Publish ();
                    m_ColorBuffer.Publish ();
                    m_RotationBuffer.Publish();
                    m_RotationLocalBuffer.Publish();

                    Publish (0, PARTICLES_COUNT);
                    break;
                case PublishMethod.Incremental:
                    {
                      m_PublishCounter %= PARTICLES_COUNT;

                        var start = m_PublishCounter;
                        var end = Math.Min(start + PublishSize, PARTICLES_COUNT);
                        var cnt = end - start;

                        m_PositionBuffer.PublishPart (start, cnt);
                        m_DimensionBuffer.PublishPart (start, cnt);
                        m_ColorBuffer.PublishPart (start, cnt);
                        m_RotationBuffer.PublishPart (start, cnt);
                        m_RotationLocalBuffer.PublishPart (start, cnt);

                      Publish (start, cnt);
                        m_PublishCounter = end;
                    }
                    break;
                default:
                    break;
                }

                return;
            }

            unsafe
            {
                m_PositionBuffer = new BufferObject<Vector4> (sizeof(Vector4), 0) { Name = "position_buffer", Usage = BufferUsageHint.DynamicDraw };
                m_DimensionBuffer = new BufferObject<Vector4> (sizeof(Vector4), 0) { Name = "dimension_buffer", Usage = BufferUsageHint.DynamicDraw };
                m_ColorBuffer = new BufferObject<Vector4> (sizeof(Vector4), 0) { Name = "color_buffer", Usage = BufferUsageHint.DynamicDraw };
                m_RotationBuffer = new BufferObject<Matrix4> (sizeof(Matrix4), 0) { Name = "rotation_buffer", Usage = BufferUsageHint.DynamicDraw };
                m_RotationLocalBuffer = new BufferObject<Matrix4> (sizeof(Matrix4), 0) { Name = "rotation_local_buffer", Usage = BufferUsageHint.DynamicDraw };
            }

            ParticleStateArrayObject =
                new ArrayObject (
                    new VertexAttribute { AttributeName = "sprite_pos", Buffer = m_PositionBuffer, Size = 3, Stride = 16, Type = VertexAttribPointerType.Float },
                    new VertexAttribute { AttributeName = "sprite_color", Buffer = m_ColorBuffer, Size = 3, Stride = 16, Type = VertexAttribPointerType.Float },
                    new VertexAttribute { AttributeName = "sprite_dimensions", Buffer = m_DimensionBuffer, Size = 3, Stride = 16, Type = VertexAttribPointerType.Float },
                    new VertexAttribute { AttributeName = "sprite_rotation_local", Buffer = m_RotationLocalBuffer, Size = 16, Stride = 64, Type = VertexAttribPointerType.Float },
                    new VertexAttribute { AttributeName = "sprite_rotation", Buffer = m_RotationBuffer, Size = 16, Stride = 64, Type = VertexAttribPointerType.Float }
                );

            //
            PublishSize = 100000;
            ModelScaleFactor = 1;

            TransformationStack = new MatrixStack(2);
            ProjectionStack = new MatrixStack(1);
            CameraMvp = new ModelViewProjectionParameters("", TransformationStack, ProjectionStack);

            //
            m_Manip = new OrbitManipulator (ProjectionStack);
            m_Grid = new Grid (CameraMvp);
            TransformationStack[0] = m_Manip.RT;
            TransformationStack.ValueStack[1] = Matrix4.Scale(ModelScaleFactor);

            //
            Uniforms = new UniformState
            {
                {"particle_scale_factor", () => this.ParticleScaleFactor},
                {CameraMvp}
            };

            //
            Shading = GlobalContext.Container.GetExportedValues<IShadingSetup>().FirstOrDefault();
            PrepareStateCore();

            m_Initialized = true;
            PrepareState ();
        }