Exemple #1
0
        public Partial(Entity e1, Entity e2, Position pos1, Position pos2, Geometry.Manifold m, bool useContact1)
        {
            this.e1 = e1;
            this.e2 = e2;
            var contactWithId = useContact1 ? m.contact1 : (Geometry.Contact)m.contact2;

            float2 contact = contactWithId.point;

            id = contactWithId.id.GetHashCode();

            { // Normal precomputation
                J_n = new Float6(
                    new float3(-m.normal, -Lin.Cross(contact - pos1.pos, m.normal)),
                    new float3(m.normal, Lin.Cross(contact - pos2.pos, m.normal))
                    );

                delta = -m.overlap;
            }


            { // Tangent precomputation (friction)
                float2 tangent = Lin.Cross(m.normal, -1);

                J_t = new Float6(
                    new float3(tangent, Lin.Cross(contact - pos1.pos, tangent)),
                    new float3(-tangent, -Lin.Cross(contact - pos2.pos, tangent)));
            }
        }
Exemple #2
0
        public ActionResult SaveLin(CreateLinVM model)
        {
            if (!ModelState.IsValid)
            {
                return(Json(new { Message = "Try Again" }));
            }

            var userid = User.Identity.GetUserId();
            var user   = db.Users.Find(userid);

            var lin = new Lin()
            {
                Author      = user,
                CreatedOn   = DateTime.UtcNow,
                Text        = model.Text,
                ImageUrl    = model.ImageUrl,
                PinImageUrl = string.IsNullOrEmpty(model.PinImageUrl) ? model.ImageUrl : model.PinImageUrl
            };

            db.Lins.Add(lin);
            db.SaveChanges();

            var result = new
            {
                Owner = lin.Author.Handle,
                lin.ImageUrl,
                lin.PinImageUrl,
                LinId = lin.Id,
                lin.Text,
                CreatedOn     = lin.CreatedOn.Humanize(),
                NumOfComments = lin.Comments.Count()
            };

            return(Json(model));
        }
    private static void DrawWireframeLightEdgeGizmo(World w, Entity e, float2 edgeDir, float2 source, float rotOffset)
    {
        var em  = w.EntityManager;
        var ls  = em.GetComponentData <LightSource>(e);
        var pos = em.GetComponentData <Position>(e);

        Gizmos.DrawRay((Vector2)pos.pos, (Vector2)Lin.Rotate(edgeDir, rotOffset) * 50);
    }
    private static void DrawWireframeOpaqueEdgeGizmo(World w, Entity e, float2 source, float2 mount, float2 posOffset, float rotOffset)
    {
        var em = w.EntityManager;

        DrawWireframeBoxGizmo(w, e, posOffset, rotOffset);

        var box = em.GetComponentData <Box>(e);
        var pos = em.GetComponentData <Position>(e);

        mount = Lin.Rotate(mount - pos.pos, rotOffset) + pos.pos + posOffset;

        var dir = math.normalize(mount - source);

        Gizmos.DrawRay((Vector2)mount, (Vector2)dir * 50);
    }
    public OneWayOneDOFConstraint(TargetVelocityManifold m, Float3 M_inv, float dt)
    {
        e  = m.e;
        id = m.id;

        this.M_inv = M_inv;

        constraint = new OneDOFConstraint <Float3>(
            J: new float3(m.normal, Lin.Cross(m.r, m.normal)),
            M_inv: M_inv,
            bias: -m.targetSpeed,
            softness: m.softness
            );

        lambdaAccum = 0;
    }
    void CheckCornerConstraints()
    {
        var dict = new MultiDict <int, CornerMountTuple>();

        var world = World.DefaultGameObjectInjectionWorld;

        foreach (var cornerMountTuple in world.GetOrCreateSystem <ShadowConstraintSystem>().GetCornerMountsForDebug())
        {
            dict.Add(cornerMountTuple.partialConstraint.id, cornerMountTuple);
        }

        foreach (var kv in dict)
        {
            var id   = kv.Key;
            var list = kv.Value;
            if (list.Count > 1)
            {
                Debug.Log("Duplicate corner contact found with id: " + id);
                foreach (var tup in list)
                {
                    var    manifold  = tup.m;
                    float2 point     = 0;
                    int    numPoints = 0;
                    void AddIfFinite(float2 p)
                    {
                        if (Lin.IsFinite(p))
                        {
                            point += p;
                            numPoints++;
                        }
                    }

                    AddIfFinite(manifold.p);
                    AddIfFinite(manifold.p1);
                    AddIfFinite(manifold.p2);

                    Debug.Assert(numPoints > 0);
                    point /= numPoints;

                    Gizmos.DrawSphere((Vector2)point, drawRadius);
                }
            }
        }
    }
    public TwoWayTwoDOFConstraint(RevoluteJointManifold m, Float6 M_inv, float dt)
    {
        e1 = m.e1;
        e2 = m.e2;
        id = m.id;

        float2 oneCrossR1 = Lin.Cross(1, m.r1);
        float2 oneCrossR2 = Lin.Cross(1, m.r2);

        this.M_inv = M_inv;

        constraint = new TwoDOFConstraint <Float6>(
            J1: new Float6(-1, 0, -oneCrossR1.x, 1, 0, oneCrossR2.x),
            J2: new Float6(0, -1, -oneCrossR1.y, 0, 1, oneCrossR2.y),
            M_inv: M_inv,
            bias: m.delta * m.beta / dt,
            softness: m.softness
            );

        lambdaAccum = float2.zero;
    }
Exemple #8
0
 public float2 GlobalToLocal(float2 point)
 {
     return(Lin.Rotate(point - pos, -rot));
 }
Exemple #9
0
 public float2 LocalDirectionToGlobal(float2 direction)
 {
     return(Lin.Rotate(direction, rot));
 }
Exemple #10
0
 public float2 LocalToGlobal(float2 point)
 {
     return(Lin.Rotate(point, rot) + pos);
 }
    static SnapInfo[] GetSnapInfo(Transform transform, float snapRadius)
    {
        var snapInfos = new List <SnapInfo>();

        void Search(Transform t)
        {
            foreach (var child in t.GetComponentsInChildren <BoxAuthoring>())
            {
                var closestPoint = child.GetRect().ClosestPoint((Vector2)transform.position, ccwVec: out var ccwVec, cwVec: out var cwVec);
                if (math.distance(closestPoint, (Vector2)transform.position) < snapRadius)
                {
                    Vector2 WorldToLocalVec(float2 vec)
                    {
                        return(child.transform.InverseTransformDirection((Vector2)math.normalize(vec)));
                    }

                    ccwVec = WorldToLocalVec(ccwVec);
                    cwVec  = WorldToLocalVec(cwVec);

                    snapInfos.Add(new SnapInfo {
                        pos   = (Vector2)child.transform.InverseTransformPoint((Vector2)closestPoint) + (Vector2)math.normalize(Lin.Cross(ccwVec, 1)) * .1f,
                        ccw   = ccwVec,
                        cw    = cwVec,
                        mount = child.gameObject
                    });
                }
            }
        }

        if (transform.parent == null)
        {
            foreach (var root in SceneManager.GetActiveScene().GetRootGameObjects())
            {
                Search(root.transform);
            }
        }
        else
        {
            Search(transform.parent);
        }

        return(snapInfos.ToArray());
    }
Exemple #12
0
 public void Destory(Lin.Comm.Tcp.Session session)
 {
     Console.WriteLine("session destory.");
 }
Exemple #13
0
 public void Create(Lin.Comm.Tcp.Session session)
 {
     Console.WriteLine("session create.");
 }
 public static void AddValidation(HttpPackage package, Lin.Comm.Http.ValidationErrorData error)
 {
     IDictionary<string, object> param = package.GetParams();
     foreach (KeyValuePair<string,object> vp in param)
     {
         AddValidation(vp.Value as Lin.Core.ViewModel, error, vp.Key + ".");
     }
 }
        public static void AddValidation(Lin.Core.ViewModel obj,ValidationErrorData error,string name="")
        {
            if (obj == null || error == null || error.fieldErrors == null || error.fieldErrors.Count <= 0)
            {
                return;
            }
            Type objType = obj.GetType();

            ValidationErrorData errorTmp = new ValidationErrorData();
            IDictionary<string, string[]>  eErrors = new Dictionary<string, string[]>();
            IDictionary<string, string[]>  fFieldErrors = new Dictionary<string, string[]>();

            foreach (KeyValuePair<string, string[]> item in error.fieldErrors)
            {
                fFieldErrors.Add(item.Key, item.Value);
            }
            errorTmp.errors = eErrors;
            errorTmp.fieldErrors = fFieldErrors;

            IDictionary<string, string> d = new Dictionary<string, string>();
            Type pyType = null;
            PropertyInfo[] pInfo = objType.GetProperties();
            foreach(PropertyInfo py in pInfo)
            {
                if (errorTmp.fieldErrors.Count == 0)
                {
                    break;
                }
                if (errorTmp.fieldErrors.ContainsKey(name + py.Name))
                {
                    d.Add(py.Name, errorTmp.fieldErrors[name + py.Name][0]);
                    error.fieldErrors.Remove(name + py.Name);
                    //d.Add(py.Name, "数据不能为中文");
                    //d.Add(py.Name, "数据长度太长");
                    //d.Add(py.Name, "数据不能字母");
                }
                else
                {
                    try
                    {
                        //pyType = py.DeclaringType;
                        //if (pyType == typeof(Lin.Core.ViewModel.ViewModel) || pyType == typeof(Lin.Core.ViewModel.ViewModelBase) || pyType == typeof(Lin.Core.ViewModel.ViewModelProperty))
                        //{
                        //    continue;
                        //}
                        //object o = py.GetValue(obj, null);
                        //if (o != null)
                        //{
                        //    AddValidation(o as Lin.Core.ViewModel.ViewModel, errorTmp, name + py.Name + ".");
                        //}
                    }
                    catch (Exception) { }
                }
            }

            if (d.Count > 0)
            {
                obj.PropertyChanged += (object sender, PropertyChangedEventArgs e) =>
                        {
                            if (d.ContainsKey(e.PropertyName))
                            {
                                //obj.SetError(e.PropertyName, d[e.PropertyName]);
                                d.Remove(e.PropertyName);
                            }
                        };
            }
        }
        public static Journal GetJournal(IRandomAccessStream stream)
        {
            if (stream == null)
            {
                return(null);
            }
            else
            {
                var Reader = new StreamReader(stream.AsStream());

                var Doc = XDocument.Parse(Reader.ReadToEnd());

                Journal journal;
                try
                {
                    journal = (from Jou in Doc.Descendants("Journal")
                               select new Journal
                    {
                        Name = ( string )Jou.Attribute("Name"),
                        ListOfAuthor = from Aut in Jou.Descendants("Author")
                                       select new Author
                        {
                            FirstName = ( string )Aut.Attribute("FirstName"),
                            FamilyName = ( string )Aut.Attribute("FamilyName"),
                            EmailAddress = ( string )Aut.Attribute("EmailAddress"),
                            Introduction = ( string )Aut.Attribute("Introduction")
                        },
                        ListOfIssue = from Iss in Jou.Descendants("Issue")
                                      select new Issue
                        {
                            Number = ( long )Iss.Attribute("Number"),
                            PublishTime = Convert.ToDateTime(( string )Iss.Attribute("PublishTime")),
                            Price = ( decimal )Iss.Attribute("Price"),
                            ListOfArticle = from Art in Iss.Descendants("Article")
                                            select new Article
                            {
                                Title = ( string )Art.Attribute("Title"),
                                TextLine = from Lin in Art.Descendants("Text").FirstOrDefault().Descendants("Line")
                                           select(string) Lin.Attribute("Run"),
                                ListOfAuthorName = from Aut in Art.Descendants("AuthorName")
                                                   select(string) Aut.Attribute("FirstName") + " " + ( string )Aut.Attribute("FamilyName"),
                            }
                        }
                    }).First();
                }
                catch (System.Exception)
                {
                    return(null);
                }
                foreach (var Aut in journal.ListOfAuthor)
                {
                    foreach (var Iss in journal.ListOfIssue)
                    {
                        foreach (var Art in Iss.ListOfArticle)
                        {
                            foreach (var aut in Art.ListOfAuthor)
                            {
                                if (Aut == aut)
                                {
                                    Aut.ArticleHaveContribute.Add(Art);
                                }
                            }
                        }
                    }
                }
                return(journal);
            }
        }