//Create new point/plane extending to target public CollisionLink Branch(Vector2 point) { CollisionLink link = new CollisionLink(_parent, point); CollisionPlane plane = new CollisionPlane(_parent, this, link); return(link); }
public CollisionLink Split(Vector2 point) { CollisionLink link = new CollisionLink(_parent, point); CollisionPlane plane = new CollisionPlane(_parent, link, _linkRight); LinkRight = link; return(link); }
public void RemoveMember(CollisionPlane plane) { _members.Remove(plane); if (_members.Count == 0) { _parent._points.Remove(this); } }
public CollisionLink Split(Vector2 point) { CollisionLink link = new CollisionLink(_parent, point); CollisionPlane plane = new CollisionPlane(_parent, link, _linkRight); plane._material = _material; plane._flags = _flags; plane._flags2 = _flags2; plane._type = _type; if (IsRightLedge) { IsRightLedge = false; } if (IsLeftLedge) { plane.IsLeftLedge = false; } LinkRight = link; return(link); }
internal unsafe void DrawPlanes(CollisionPlane p) { if (!_render) { return; } Color4 clr = new Color4(1.0f, 0.0f, 1.0f, 1.0f); Vector2 l = _linkLeft.Value; Vector2 r = _linkRight.Value; int lev = 0; if (_linkLeft._highlight) { lev++; } if (_linkRight._highlight) { lev++; } if (lev == 1) { GL.Color4(1.0f, 0.5f, 0.5f, 0.8f); } else { GL.Color4(0.9f, 0.0f, 0.9f, 0.8f); } if (p._type == CollisionPlaneType.Floor && lev == 0 && !IsFallThrough) { GL.Color4(0.0f, 0.9f, 0.9f, 0.8f); } else if (p._type == CollisionPlaneType.Ceiling && lev == 0 && !IsFallThrough) { GL.Color4(0.9f, 0.0f, 0.0f, 0.8f); } else if (p._type == CollisionPlaneType.LeftWall && lev == 0 && !IsFallThrough) { GL.Color4(0.0f, 0.9f, 0.0f, 0.8f); } else if (p._type == CollisionPlaneType.RightWall && lev == 0 && !IsFallThrough) { GL.Color4(0.0f, 0.9f, 0.0f, 0.8f); } else if (p._type == CollisionPlaneType.None && lev == 0 && !IsFallThrough) { GL.Color4(1.0f, 1.0f, 1.0f, 0.6f); } else if (p.IsFallThrough && lev == 0) { GL.Color4(1.0f, 1.0f, 0.0f, 0.8f); } GL.Begin(BeginMode.Quads); GL.Vertex3(l._x, l._y, 10.0f); GL.Vertex3(l._x, l._y, -10.0f); GL.Vertex3(r._x, r._y, -10.0f); GL.Vertex3(r._x, r._y, 10.0f); GL.End(); if (lev == 1) { GL.Color4(0.7f, 0.2f, 0.2f, 0.8f); } else { GL.Color4(0.6f, 0.0f, 0.6f, 0.8f); } if (p._type == CollisionPlaneType.Floor && lev == 0 && !IsFallThrough) { GL.Color4(0.0f, 0.9f, 0.9f, 0.8f); } else if (p._type == CollisionPlaneType.Ceiling && lev == 0 && !IsFallThrough) { GL.Color4(0.9f, 0.0f, 0.0f, 0.8f); } else if (p._type == CollisionPlaneType.LeftWall && lev == 0 && !IsFallThrough) { GL.Color4(0.0f, 0.9f, 0.0f, 0.8f); } else if (p._type == CollisionPlaneType.RightWall && lev == 0 && !IsFallThrough) { GL.Color4(0.0f, 0.9f, 0.0f, 0.8f); } else if (p._type == CollisionPlaneType.None && lev == 0 && !IsFallThrough) { GL.Color4(1.0f, 1.0f, 1.0f, 0.6f); } else if (p.IsFallThrough && lev == 0) { GL.Color4(1.0f, 1.0f, 0.0f, 0.8f); } GL.Begin(BeginMode.Lines); GL.Vertex3(l._x, l._y, 10.0f); GL.Vertex3(r._x, r._y, 10.0f); GL.Vertex3(l._x, l._y, -10.0f); GL.Vertex3(r._x, r._y, -10.0f); GL.End(); if (p.IsRightLedge && p.IsLeftLedge) { _linkLeft.Render(clr, 3.0f); _linkRight.Render(clr, 3.0f); } else if (p.IsLeftLedge && !p.IsRightLedge) { _linkLeft.Render(clr, 3.0f); _linkRight.Render(); } else if (p.IsRightLedge && !p.IsLeftLedge) { _linkLeft.Render(); _linkRight.Render(clr, 3.0f); } else { _linkLeft.Render(); _linkRight.Render(); } }
//Create new point/plane extending to target public CollisionLink Branch(Vector2 point) { CollisionLink link = new CollisionLink(_parent, point); CollisionPlane plane = new CollisionPlane(_parent, this, link); return link; }
public CollisionLink Split(Vector2 point) { CollisionLink link = new CollisionLink(_parent, point); CollisionPlane plane = new CollisionPlane(_parent, link, _linkRight); LinkRight = link; return link; }
public void RemoveMember(CollisionPlane plane) { _members.Remove(plane); if (_members.Count == 0) _parent._points.Remove(this); }