Example #1
0
 private void TryConnectPivotToObject(BuildableObject _otherObject, PivotObject _pivot)
 {
     if (_otherObject)
     {
         ConnectPivotToObject(_otherObject, _pivot);
     }
 }
Example #2
0
    public void FitForPercent(PivotObject obj, float p)
    {
        Vector2 size = obj.size;

        if (obj.pivot == PivotObject.PIVOT_POSITION.LEFT)
        {
            obj.uvRect = new Rect(0, 0, p, 1);
            size.x = p;
        }
        if (obj.pivot == PivotObject.PIVOT_POSITION.RIGHT)
        {
            obj.uvRect = new Rect(1 - p, 0, p, 1);
            size.x = 1 - p;
        }
        if (obj.pivot == PivotObject.PIVOT_POSITION.BOTTOM)
        {
            obj.uvRect = new Rect(0, 0, 1, p);
            size.y = p;
        }
        if (obj.pivot == PivotObject.PIVOT_POSITION.TOP)
        {
            obj.uvRect = new Rect(0, 1 - p, 1, p);
            size.y = 1 - p;
        }
        obj.size = size;
    }
Example #3
0
    public void FitForPercent(PivotObject obj, float p)
    {
        Vector2 size = obj.size;

        if (obj.pivot == PivotObject.PIVOT_POSITION.LEFT)
        {
            obj.uvRect = new Rect(0, 0, p, 1);
            size.x     = p;
        }
        if (obj.pivot == PivotObject.PIVOT_POSITION.RIGHT)
        {
            obj.uvRect = new Rect(1 - p, 0, p, 1);
            size.x     = 1 - p;
        }
        if (obj.pivot == PivotObject.PIVOT_POSITION.BOTTOM)
        {
            obj.uvRect = new Rect(0, 0, 1, p);
            size.y     = p;
        }
        if (obj.pivot == PivotObject.PIVOT_POSITION.TOP)
        {
            obj.uvRect = new Rect(0, 1 - p, 1, p);
            size.y     = 1 - p;
        }
        obj.size = size;
    }
Example #4
0
    public override void ConnectPivotToObject(BuildableObject _otherObject, PivotObject _pivot)
    {
        base.ConnectPivotToObject(_otherObject, _pivot);

        joint = _otherObject.gameObject.AddComponent <FixedJoint2D>();
        joint.connectedBody = rb;
        joint.anchor        = _otherObject.transform.InverseTransformPoint(_pivot.transform.position);
    }
Example #5
0
 public void AddObject(PivotObject newObject, bool needUpdate = true)
 {
     if(needUpdate)
         newObject.Update();
     newObject.behaviourmodel.Enable();
     _objects.Add(newObject);
     _sceneGraph.AddObject(newObject);
 }
Example #6
0
    public void OnEnable()
    {
        po = target as PivotObject;
        po.InitInfos();

        uv = po.uvRect;
        size = po.size;
        pivot = po.pivot;
    }
Example #7
0
    public void OnEnable()
    {
        po = target as PivotObject;
        po.InitInfos();

        uv    = po.uvRect;
        size  = po.size;
        pivot = po.pivot;
    }
Example #8
0
    public override void DisconnectPivot(PivotObject _pivot)
    {
        base.DisconnectPivot(_pivot);

        if (joint)
        {
            Destroy(joint);
        }
    }
Example #9
0
 public void CasheObject(string __name,
     Matrix? __deltaMatrix,
     bool __needMouseCast,
     bool __needBulletCast,
     PivotObject __parentObject = null,
     PivotObjectDependType __dependType = PivotObjectDependType.Body)
 {
     PivotObject newObject = GameEngine.LoadObject(__name, __deltaMatrix, __needMouseCast, __needBulletCast, __dependType);
     _cashedObjects.Add(__name, newObject);
 }
Example #10
0
    public override void ConnectPivotToObject(BuildableObject _otherObject, PivotObject _pivot)
    {
        base.ConnectPivotToObject(_otherObject, _pivot);

        joint = _otherObject.gameObject.AddComponent <FixedJoint2D>();
        joint.connectedBody = rb;
        joint.anchor        = _otherObject.transform.InverseTransformPoint(_pivot.transform.position);
        joint.autoConfigureConnectedAnchor = false;
        joint.breakForce = breakingForce;
    }
Example #11
0
    public virtual void ConnectPivotToObject(BuildableObject _otherObject, PivotObject _pivot)
    {
        if (_pivot.connectedBody)
        {
            DisconnectPivot(_pivot);
        }
        _pivot.connectedBody = _otherObject;

        spriteR.sortingOrder = selectionPriority = _otherObject.selectionPriority + 1;
        print("Connecting " + gameObject.name + " to " + _otherObject.gameObject.name);
    }
Example #12
0
    public override void ConnectPivotToObject(BuildableObject _otherObject, PivotObject _pivot)
    {
        base.ConnectPivotToObject(_otherObject, _pivot);

        _pivot.joint = _otherObject.gameObject.AddComponent <WheelJoint2D>();
        WheelJoint2D wheelJoint = _pivot.joint as WheelJoint2D;

        wheelJoint.connectedBody = rb;
        wheelJoint.autoConfigureConnectedAnchor = false;
        wheelJoint.anchor          = _otherObject.transform.InverseTransformPoint(_pivot.transform.position);
        wheelJoint.connectedAnchor = transform.InverseTransformPoint(_pivot.transform.position);
    }
Example #13
0
    public override void ConnectPivotToObject(BuildableObject _otherObject, PivotObject _pivot)
    {
        base.ConnectPivotToObject(_otherObject, _pivot);

        wheelJoint = _otherObject.gameObject.AddComponent <WheelJoint2D>();
        wheelJoint.connectedBody = rb;
        wheelJoint.autoConfigureConnectedAnchor = false;
        wheelJoint.anchor     = _otherObject.transform.InverseTransformPoint(_pivot.transform.position);
        wheelJoint.breakForce = breakingForce;
        wheelJoint.suspension = new JointSuspension2D()
        {
            frequency = frquency, dampingRatio = dampening
        };
    }
Example #14
0
        public void CalcParameters(PivotObject __parent)
        {
            if (!_onLevel || _locatedAtLastFrame)
            {
                _locatedAtLastFrame = false;
                return;
            }

            if (_object._needCalcAcxis)
            {
                Vector3 axis = Vector3.UnitY;
                if(__parent != null)
                    axis = Vector3.TransformNormal(Vector3.UnitY, __parent.transform);
                else
                    axis = Vector3.TransformNormal(Vector3.UnitY, _object.transform);
                _object._objectConstrAxis = axis;
            }
        }
Example #15
0
    public static void CreatePivotObject()
    {
        Mesh mesh = new Mesh();

        const float h = 1, w = 1;

        Vector3[] vertices = new Vector3[4];
        vertices[0] = new Vector3(-w / 2, h / 2, 0);
        vertices[1] = new Vector3(w / 2, h / 2, 0);
        vertices[2] = new Vector3(-w / 2, -h / 2, 0);
        vertices[3] = new Vector3(w / 2, -h / 2, 0);

        int[] triangles = new int[] {
            0, 1, 3,
            0, 3, 2
        };

        Rect r = new Rect(0, 0, 1, 1);

        Vector2[] uvs = new Vector2[4];
        uvs[0] = new Vector2(r.x, r.y + r.height);
        uvs[1] = new Vector2(r.x + r.width, r.y + r.height);
        uvs[2] = new Vector2(r.x, r.y);
        uvs[3] = new Vector2(r.x + r.width, r.y);

        mesh.vertices  = vertices;
        mesh.triangles = triangles;
        mesh.uv        = uvs;

        mesh.RecalculateBounds();
        mesh.RecalculateNormals();

        GameObject g = new GameObject("PivotObject");

        g.AddComponent <MeshFilter>().sharedMesh = mesh;
        g.AddComponent <MeshRenderer>();
        PivotObject p = g.AddComponent <PivotObject>();

        p.pivot = PivotObject.PIVOT_POSITION.CENTER;
    }
Example #16
0
    public override void ConnectPivotToObject(BuildableObject _otherObject, PivotObject _pivot)
    {
        base.ConnectPivotToObject(_otherObject, _pivot);

        rb.bodyType = RigidbodyType2D.Static;

        if (targetA == null)
        {
            targetA                     = _otherObject.rb;
            joint                       = _otherObject.gameObject.AddComponent <SpringJoint2D>();
            joint.anchor                = _otherObject.transform.InverseTransformPoint(_pivot.transform.position);
            joint.enableCollision       = true;
            joint.autoConfigureDistance = joint.autoConfigureConnectedAnchor = false;
            joint.breakForce            = breakingForce;
        }
        else
        {
            targetB               = _otherObject.rb;
            joint.connectedBody   = targetB;
            joint.connectedAnchor = _otherObject.transform.InverseTransformPoint(_pivot.transform.position);
            joint.distance        = retractedDistance = Vector2.Distance(targetA.transform.TransformPoint(joint.anchor), _pivot.transform.position);
        }
    }
Example #17
0
 public virtual void SetParentObject(PivotObject __object)
 {
 }
Example #18
0
 public abstract void Update(PivotObject __object);
        public static void UnloadPivotObject(
            PivotObject theobject)
        {
            LevelObject gobject = theobject as LevelObject;
            if (gobject == null)
                return;
            ConsoleWindow.TraceMessage("Content loader: Unloading object: " + theobject.editorAspect.DescriptionName);
            System.Drawing.Point p = new System.Drawing.Point();
            ResourceCollector.PackContent pc  = ResourceCollector.PackList.Instance.findobject(theobject.editorAspect.DescriptionName, ref p);

            ResourceCollector.Content.LevelObjectDescription description = pc as ResourceCollector.Content.LevelObjectDescription;

            if (description != null)
            {
                description.Enginereadedobject.RemoveAt(description.Enginereadedobject.Count - 1);

                //unload ro
                ResourceCollector.Content.RenderObjectDescription rod = ResourceCollector.PackList.Instance.findobject(description.RODName, ref p) as ResourceCollector.Content.RenderObjectDescription;
                RenderObject obj = rod.Enginereadedobject[rod.Enginereadedobject.Count - 1] as RenderObject;
                rod.Enginereadedobject.RemoveAt(rod.Enginereadedobject.Count - 1);
                if (rod.Enginereadedobject.Count == 0)
                {
                    XNAevents.Add("disposing render object " + description.RODName);
                    IDisposable i = obj;
                    i.Dispose();
                }

                //unload material
                ResourceCollector.Content.Material matd = ResourceCollector.PackList.Instance.findobject(description.matname, ref p) as ResourceCollector.Content.Material;

                matd.Enginereadedobject.RemoveAt(matd.Enginereadedobject.Count - 1);

                for (int i = 0; i < matd.lodMats.Count; i++)
                {
                    for (int j = 0; j < matd.lodMats[i].mats.Count; j++)
                    {
                        ResourceCollector.ImageContent inage = ResourceCollector.PackList.Instance.findobject(matd.lodMats[i].mats[j].DiffuseTextureName, ref p) as ResourceCollector.ImageContent;
                        Content.EngineTexture tex = inage.Enginereadedobject[inage.Enginereadedobject.Count - 1] as Content.EngineTexture;
                        inage.Enginereadedobject.RemoveAt(inage.Enginereadedobject.Count - 1);
                        if (inage.Enginereadedobject.Count == 0)
                        {
                            XNAevents.Add("loading texture " + matd.lodMats[i].mats[j].DiffuseTextureName);
                            tex.Dispose();
                        }
                    }
                }

                if (description.IsRCCMEnabled)
                {
                    //unload raycast
                    ResourceCollector.Content.CollisionMesh cm = ResourceCollector.PackList.Instance.findobject(description.RCCMName, ref p) as ResourceCollector.Content.CollisionMesh;
                    cm.Enginereadedobject.RemoveAt(cm.Enginereadedobject.Count - 1);
                }
            }
            gobject.deleted = true;
        }
 public void AddObjectWithoutId(PivotObject newObject)
 {
     objects.Add(newObject);
     sceneGraph.AddObject(newObject);
 }
Example #21
0
 public override void DisconnectPivot(PivotObject _pivot)
 {
     base.DisconnectPivot(_pivot);
 }
Example #22
0
        public void SearchClickedObject()
        {
            //ищем объект на кот тыкнули
            Engine.Logic.PivotObject clickedlo = null;
            Vector3 newpoint = MyGame.Instance._mousepoint;
            float distance = 10000;

            Vector3 camerapos = MyGame.Instance.ray.Position;
            _belowMouseObject = null;
            foreach (Engine.Logic.PivotObject lo in this.gameScene._visibleObjects)
            {
                if (!lo._needMouseCast)
                    continue;
                Vector3? point = lo.raycastaspect.IntersectionClosest(MyGame.Instance.ray, lo.transform, ref MyGame.Instance._mousepointNormal);
                if (point != null)
                {
                    float range = (point.Value - camerapos).Length();
                    if (range < distance)
                    {
                        Vector3 direction = MyGame.Instance.ray.Direction;
                        direction.Normalize();
                        clickedlo = lo;
                        distance = range;
                        newpoint = point.Value;
                        newpoint += (direction * 0.3f);
                        _belowMouseObject = lo;
                    }
                }
            }
            MyGame.Instance._mousepoint = newpoint;
        }
Example #23
0
        /// <summary>
        /// TODO - TEST
        /// </summary>
        /// <param name="__oldObject"></param>
        /// <param name="__newObject"></param>
        /// <param name="__recalculate"></param>
        public bool SwapObjects(PivotObject __oldObject, PivotObject __newObject, bool __recalculate)
        {
            bool finded = false;
            foreach(PivotObject obj in _objects)
                if (obj == __oldObject)
                {
                    finded = true;
                    break;
                }

            if (!finded)
            {
                __newObject.behaviourmodel.Enable();
                _objects.Add(__newObject);
                _sceneGraph.AddObject(__newObject);
                return false;
            }

            List<MyContainer<PivotObject>.MyContainerRule> rules = _objects.FindAllRulesForObject(__oldObject);
            foreach (MyContainer<PivotObject>.MyContainerRule rule in rules)
            {
                if (rule.firstObject == __oldObject)
                {
                    rule.firstObject = __newObject;
                    rule.secondObject.behaviourmodel.SetParentObject(__newObject);
                }
                else if (rule.secondObject == __oldObject)
                    rule.secondObject = __newObject;
            }
            __newObject.behaviourmodel.Enable();
            __oldObject.behaviourmodel.Disable();
            _objects.Swap(__oldObject, __newObject, false);
            _sceneGraph.SwapObjects(__oldObject, __newObject, __recalculate);

            return true;
        }
 // удаление единичного объекта
 public void ObjectDeleted(PivotObject curObject)
 {
 }
Example #25
0
 public void RemoveObject(PivotObject deletingobjects)
 {
     _objects.Remove(deletingobjects);
     _sceneGraph.RemoveObject(deletingobjects);
     deletingobjects.behaviourmodel.Disable();
     // счетчик идов будет начинать все делать с 0
     if (_objects.Count == 0)
     {
         IdGenerator.ClearIdsCounter();
     }
 }
Example #26
0
 public void CasheObject(string __name,
     Matrix? __deltaMatrix,
     bool __needMouseCast,
     bool __needBulletCast, 
     PivotObject __parentObject = null,
     PivotObjectDependType __dependType = PivotObjectDependType.Body)
 {
     _cashe.CasheObject(__name, __deltaMatrix, __needMouseCast, __needBulletCast, __parentObject, __dependType);
 }
Example #27
0
 public override void ConnectPivotToObject(BuildableObject _otherObject, PivotObject _pivot)
 {
     base.ConnectPivotToObject(_otherObject, _pivot);
 }
 public void AddObject(PivotObject newObject)
 {
     newObject.editorAspect.id = idgenertor.NewId();
     objects.Add(newObject);
     sceneGraph.AddObject(newObject);
 }
Example #29
0
 public virtual void DisconnectPivot(PivotObject _pivot)
 {
     _pivot.connectedBody = null;
 }
Example #30
0
        private void AddObjectToScene(PivotObject __object, PivotObject __parentObject = null)
        {
            LevelObject loNew = __object as LevelObject;
            if (loNew == null)
                return;

            if (loNew.renderaspect.isanimated)
            {
                Render.AnimRenderObject ro = loNew.renderaspect as Render.AnimRenderObject;
                AnimationManager.AnimationManager.Manager.AddAnimationUserEnd(ro);
            }

            gameScene.AddObject(__object);

            if (__parentObject != null)
            {
                __object.behaviourmodel.SetParentObject(__parentObject);
                gameScene._objects.AddRule(__parentObject, __object);
            }
        }
Example #31
0
 public abstract void SetGlobalPose(Matrix GlobalPoseMatrix, object Additionaldata, PivotObject __parent = null);
Example #32
0
 public bool SearchPoint(Microsoft.Xna.Framework.Ray __ray, float __distance, out Vector3 __resultPoint, out PivotObject __resultObject, out Vector3 __pointNormal)
 {
     Engine.Logic.PivotObject clickedlo = null;
     Vector3 newpoint = new Vector3();
     Vector3 normal = new Vector3();
     float distance = __distance;
     bool finded = false;
     foreach (Engine.Logic.PivotObject lo in this._intersectedObjects)
     {
         if (!lo._needBulletCast)
             continue;
         Vector3? point = lo.raycastaspect.IntersectionClosest(__ray, lo.transform, ref normal);
         if (point != null)
         {
             StatisticContainer.Instance().UpdateParameter("totalBulletFaces", lo.raycastaspect.RCCM.Indices.Length / 3);
             float range = (point.Value - __ray.Position).Length();
             if (range < distance)
             {
                 clickedlo = lo;
                 distance = range;
                 newpoint = point.Value;
                 finded = true;
             }
         }
     }
     __pointNormal = normal;
     __resultObject = clickedlo;
     __resultPoint = newpoint;
     return finded;
 }
 public override void SetGlobalPose(Matrix GlobalPoseMatrix, object Additionaldata, PivotObject __parent)
 {
     CurrentPosition = GlobalPoseMatrix;
 }
Example #34
0
        public void RemoveObjectFromScene(PivotObject __object)
        {
            LevelObject loNew = __object as LevelObject;
            if (loNew == null)
                return;

            if (loNew.renderaspect.isanimated)
            {
                Render.AnimRenderObject ro = loNew.renderaspect as Render.AnimRenderObject;
                AnimationManager.AnimationManager.Manager.RemoveUser(ro);
            }

            gameScene.RemoveObject(__object);
        }
Example #35
0
 /// <summary>
 /// ПОЛЬЗУЙСЯ ИМ!!!!!!!!!!!!!!
 /// </summary>
 /// <param name="newobject"></param>
 public void AddObject(PivotObject newobject)
 {
     objectstoadd.Add(newobject);
 }
 public void ObjectAdded(PivotObject newObject)
 {
     Console.WriteLine("ObjectAdded");
     levelform.AddObject(newObject.editorAspect.id.ToString(), newObject.editorAspect.DescriptionName, newObject.editorAspect.objtype.ToString(), newObject.editorAspect.isActive);
 }
 public override void SetGlobalPose(Matrix GlobalPoseMatrix, object Additionaldata, PivotObject __parent)
 {
     this.globalpose = GlobalPoseMatrix;
     _actor.GlobalPose = GlobalPoseMatrix.toPhysicM();
 }
Example #38
0
 public static BuildableObject CheckForConnection(PivotObject _pivot, GameObject _ignore = null) => CheckForConnection(_pivot.transform.position, _ignore);