Esempio n. 1
0
        public bool Refresh(string schema)
        {
            OracleCommand cmd = new OracleCommand(ALL_CONSTRAINTS_SCHEMA_SELECT, conn);

            cmd.BindByName = true;
            // set up parameters
            OracleParameter schemaParam = cmd.CreateParameter();

            schemaParam.ParameterName = "owner";
            schemaParam.OracleDbType  = OracleDbType.Char;
            schemaParam.Direction     = System.Data.ParameterDirection.Input;
            schemaParam.Value         = schema;
            // add it
            cmd.Parameters.Add(schemaParam);
            // execute
            OracleDataReader odr = cmd.ExecuteReader();

            if (!odr.HasRows)
            {
                return(false);
            }

            // purge old data
            purgeConstraintData(schema);

            while (odr.Read())
            {
                ConstraintBase constraint = LoadConstraint(odr);
                constraints.Add(constraint);
            }

            return(true);
        }
Esempio n. 2
0
        private void DrawConstraints(Rect inRect)
        {
            ConstraintBase toRemove         = null;
            var            listing          = new Listing_Standard();
            int            totalConstraints = _constraints.Count;
            Rect           viewRect         = new Rect(0f, 0f, inRect.width - 16f, LineHeight * totalConstraints).Rounded();

            Widgets.BeginScrollView(inRect, ref _constraintsScrollPos, viewRect);
            listing.Begin(viewRect);

            for (var i = 0; i < _constraints.Count; i++)
            {
                ConstraintBase constraint = _constraints[i];
                Rect           lineRect   = listing.GetRect(LineHeight);

                if (!lineRect.IsVisible(viewRect, _constraintsScrollPos))
                {
                    continue;
                }

                if (i % 2 == 0)
                {
                    Widgets.DrawLightHighlight(lineRect);
                }

                var constraintRect = new Rect(lineRect.x, lineRect.y, lineRect.width - _removeButtonWidth - 20f, lineRect.height);
                var removeRect     = new Rect(lineRect.width - _removeButtonWidth, lineRect.y, _removeButtonWidth, lineRect.height);

                constraint.Draw(constraintRect);

                if (Widgets.ButtonText(removeRect, _removeText))
                {
                    toRemove = constraint;
                }
            }

            if (toRemove != null)
            {
                _constraints.Remove(toRemove);
            }

            listing.End();
            Widgets.EndScrollView();
        }
Esempio n. 3
0
        public void Refresh()
        {
            OracleCommand    cmd = new OracleCommand(ALL_CONSTRAINTS_SELECT, conn);
            OracleDataReader odr = cmd.ExecuteReader();

            if (!odr.HasRows)
            {
                return;
            }

            // purge old data
            constraints.Clear();

            while (odr.Read())
            {
                ConstraintBase constraint = LoadConstraint(odr);
                constraints.Add(constraint);
            }
        }
Esempio n. 4
0
            public void ApplySolution <TBlocks, TConstraints>(TBlocks blocks, TConstraints constraints)
                where TBlocks : struct, IEnumerator <BlockState>
                where TConstraints : struct, IEnumerator <ConstraintBase>
            {
                ProfilerShort.Begin("SolverFast.ApplySolution");
                while (blocks.MoveNext())
                {
                    var current = blocks.Current;
                    int idx     = current.Index;
                    current.LinearAcceleration  += m_bodies[idx].DeltaLinearAcceleration;
                    current.AngularAcceleration += m_bodies[idx].DeltaAngularAcceleration;
                }

                ConstraintBase.ResetMaxStrain();
                while (constraints.MoveNext())
                {
                    constraints.Current.ReadStrain(m_constraints);
                }
                ProfilerShort.End();
            }
Esempio n. 5
0
        public bool Refresh(TableManager.Table table)
        {
            OracleCommand cmd = new OracleCommand(ALL_CONSTRAINTS_TABLE_SELECT, conn);

            cmd.BindByName = true;
            // set up parameters
            // schemaParam
            OracleParameter schemaParam = cmd.CreateParameter();

            schemaParam.ParameterName = "owner";
            schemaParam.OracleDbType  = OracleDbType.Char;
            schemaParam.Direction     = System.Data.ParameterDirection.Input;
            schemaParam.Value         = table.Owner;
            cmd.Parameters.Add(schemaParam);
            // tableParam
            OracleParameter tableParam = cmd.CreateParameter();

            tableParam.ParameterName = "table_name";
            tableParam.OracleDbType  = OracleDbType.Char;
            tableParam.Direction     = System.Data.ParameterDirection.Input;
            tableParam.Value         = table.Name;
            cmd.Parameters.Add(tableParam);
            // execute
            OracleDataReader odr = cmd.ExecuteReader();

            if (!odr.HasRows)
            {
                return(false);
            }

            // purge old data
            purgeConstraintData(table);

            while (odr.Read())
            {
                ConstraintBase constraint = LoadConstraint(odr);
                constraints.Add(constraint);
            }

            return(true);
        }
Esempio n. 6
0
        private void GetPrimaryKeyAndIndex(string constraint)
        {
            string tName, tAlias;

            GetTableDefinition(constraint, "\"", "\"", out tName, out tAlias);
            var            constraintName = constraint.GetSlice(" ADD CONSTRAINT \"", "\"");
            var            columns        = new List <string>();
            ConstraintBase c     = null;
            var            table = TableList.FirstOrDefault(x => x.Name == tName);

            if (constraint.Contains("PRIMARY KEY"))
            {
                c = GetPrimaryKey(constraint, out columns, table);
            }
            else if (constraint.Contains("UNIQUE"))
            {
                c = GetUniqueIndex(constraint, out columns, table);
            }
            c.Name  = constraintName;
            c.Table = table;
        }
Esempio n. 7
0
        private void GetForeignKey(string constraint)
        {
            if (constraint.Contains("FOREIGN KEY ()") || constraint.Contains("REFERENCES  ()"))
            {
                return;
            }

            string tName, tAlias;

            GetTableDefinition(constraint, "\"", "\"", out tName, out tAlias);
            var constraintName = constraint.GetSlice(" ADD CONSTRAINT \"", "\"");

            ConstraintBase c      = null;
            var            table1 = TableList.FirstOrDefault(x => x.Name == tName);

            var column1 = constraint.GetSlice("FOREIGN KEY (\"", "\")");

            c = new ForeignKey();
            (c as ForeignKey).Column = table1.Columns.FirstOrDefault(x => x.Name == column1);
            (c as ForeignKey).Column.Constraints.Add(c);


            string tName2, tAlias2;

            GetTableDefinition(constraint, "REFERENCES \"", "\"", out tName2, out tAlias2);
            var table2FullName = string.IsNullOrEmpty(tAlias2) ? tName2 : tName2 + " (" + tAlias2 + ")";
            var column2        = constraint.GetSlice($"REFERENCES \"{table2FullName}\" (\"", "\")");
            var table2         = TableList.FirstOrDefault(x => x.Name == tName2);

            (c as ForeignKey).ReferenceColumn = table2.Columns.FirstOrDefault(x => x.Name == column2);
            (c as ForeignKey).ReferenceColumn.Constraints.Add(c);


            c.Name  = constraintName;
            c.Table = table1;
        }
Esempio n. 8
0
            private void AddConstraint(ConstraintBase constraint)
            {
                constraint.SetAtoms(m_constraints, m_invDeltaTime);
                int start = constraint.Index;
                int end   = constraint.Index + constraint.AtomCount;
                var rbA   = constraint.BlockA;
                var rbB   = constraint.BlockB;

                for (int i = start; i < end; ++i)
                {
                    int idA = rbA.Index;
                    int idB = rbB.Index;
                    m_constraints[i].m_solverBodyIdA = idA;
                    m_constraints[i].m_solverBodyIdB = idB;

                    Vector3.TransformNormal(ref m_constraints[i].m_JaAngularAxis, ref m_bodies[idA].InvInertiaWorld, out m_constraints[i].m_angularComponentA);
                    Vector3.TransformNormal(ref m_constraints[i].m_JbAngularAxis, ref m_bodies[idB].InvInertiaWorld, out m_constraints[i].m_angularComponentB);

                    {
                        Vector3 iMJlA, iMJlB;
                        iMJlA = m_constraints[i].m_JaLinearAxis * m_bodies[idA].InvMass;
                        iMJlB = m_constraints[i].m_JbLinearAxis * m_bodies[idB].InvMass;
                        Vector3 iMJaA, iMJaB;
                        Vector3.TransformNormal(ref m_constraints[i].m_JaAngularAxis, ref m_bodies[idA].InvInertiaWorld, out iMJaA);
                        Vector3.TransformNormal(ref m_constraints[i].m_JbAngularAxis, ref m_bodies[idB].InvInertiaWorld, out iMJaB);
                        float sum = iMJlA.Dot(ref m_constraints[i].m_JaLinearAxis);
                        sum += iMJlB.Dot(ref m_constraints[i].m_JbLinearAxis);
                        sum += iMJaA.Dot(ref m_constraints[i].m_JaAngularAxis);
                        sum += iMJaB.Dot(ref m_constraints[i].m_JbAngularAxis);
                        sum  = Math.Abs(sum);
                        m_constraints[i].m_jacDiagABInv = (sum > MyMathConstants.EPSILON) ? (1f / sum) : 0f;
                    }

                    {
                        float acc1Dotn = m_constraints[i].m_JaLinearAxis.Dot(m_invDeltaTime * rbA.LinearVelocity + rbA.LinearAcceleration);
                        float acc2Dotn = m_constraints[i].m_JbLinearAxis.Dot(m_invDeltaTime * rbB.LinearVelocity + rbB.LinearAcceleration);

                        acc1Dotn += m_constraints[i].m_JaAngularAxis.Dot(m_invDeltaTime * rbA.AngularVelocity + rbA.AngularAcceleration);
                        acc2Dotn += m_constraints[i].m_JbAngularAxis.Dot(m_invDeltaTime * rbB.AngularVelocity + rbB.AngularAcceleration);

                        float posError   = m_constraints[i].m_rhs; // filled by constraint
                        float accError   = acc1Dotn + acc2Dotn;
                        float posImpulse = posError * m_constraints[i].m_jacDiagABInv;
                        float accImpulse = accError * m_constraints[i].m_jacDiagABInv;
                        m_constraints[i].m_rhs = posImpulse - accImpulse;
                    }

                    const bool WARMSTARTING = true;
                    if (WARMSTARTING)
                    {
                        m_constraints[i].m_appliedImpulse *= 0.25f;
                        var linearComponentA = m_constraints[i].m_JaLinearAxis * m_bodies[idA].InvMass;
                        var linearComponentB = m_constraints[i].m_JbLinearAxis * m_bodies[idB].InvMass;
                        m_bodies[idA].ApplyImpulse(ref linearComponentA, ref m_constraints[i].m_angularComponentA, m_constraints[i].m_appliedImpulse);
                        m_bodies[idB].ApplyImpulse(ref linearComponentB, ref m_constraints[i].m_angularComponentB, m_constraints[i].m_appliedImpulse);
                    }
                    else
                    {
                        m_constraints[i].m_appliedImpulse = 0f;
                    }
                }
            }
Esempio n. 9
0
 public void add_weight(string name                     = null, TensorShape shape = null, string dtype = null, Initializer initializer = null,
                        Regularizer regularizer         = null, bool?trainable    = null, ConstraintBase constraint = null,
                        dynamic partitioner             = null, bool?use_resource = null, VariableSynchronization synchronization = VariableSynchronization.Auto,
                        VariableAggregation aggregation = VariableAggregation.None, Dictionary <string, object> kwargs = null) => throw new NotImplementedException();
Esempio n. 10
0
 protected void AddConstraint(ConstraintBase constraint)
 {
     ConstraintList.Add(constraint);
 }
Esempio n. 11
0
 public void AddConstraint(ConstraintBase constraint)
 {
     _constraintList.Add(constraint);
 }