Exemple #1
0
        /// <inheritdoc />
        protected sealed override void OnInitialize()
        {
            identity = new NetworkIdentity();
            Sprite sprite = new Sprite(AssetManager.Get <SpriteTexture>(this, "player"), Color.Blue, new Vector2(26, 26), 0.2f);

            Physics = new PhysicsObject(new Rectangle(26, 26, 50, 50), 1.0f, BodyType.Dynamic);
            Physics.Body.FixedRotation = true;
            Physics.Body.SetFriction(0.0f);
            Physics.Body.LinearDampening = 0.0f;

            AddComponent(sprite);
            AddComponent(Physics);
            AddComponent(identity);
            identity.OnSetup += isOwner => {
                if (!identity.IsOwner)
                {
                    Physics.Body.BodyType = BodyType.Kinematic;
                }

                AddComponent(new NetTransform(NetTransform.CompensationQuality.High));
                if (isOwner)
                {
                    //AddComponent(new PathfinderAgent());
                    NetworkedEntity player = new NetworkedEntity();
                    player.PlayerIndex = PlayerIndex;
                    PlayerIndex       += 1;
                    AddComponent(player);
                }
            };
            base.OnInitialize();
        }
Exemple #2
0
    public override void Execute()
    {
        NetworkedEntity tx            = t;
        uint            myEntityIndex = tx.EntityIndex;

        if (t == null)
        {
            return;
        }
        //   Debug.Log("Attempting to move ent " + t.EntityIndex + " : " + position);

        Vector3 endPos   = position;
        Vector3 endEuler = euler;
        Vector3 endScale = scale;

        Vector3 startPos    = tx.transform.position;
        Vector3 startScale  = tx.transform.localScale;
        Vector3 startRotate = tx.transform.eulerAngles;


        tx.gameObject.Tween("SyncTransfom" + t.EntityIndex, 0f, 1f, 0.21f, TweenScaleFunctions.Linear, (x) =>
        {
            //   Debug.Log("Now tx is " + tx.EntityIndex);
            //    Debug.Log("But I wanted " + myEntityIndex);
            tx.transform.position    = startPos + (endPos - startPos) * x.CurrentProgress;
            tx.transform.eulerAngles = startRotate + (endEuler - startRotate) * x.CurrentProgress;
            tx.transform.localScale  = startScale + (endScale - startScale) * x.CurrentProgress;
        },
                            (x) =>
        {
            tx.transform.position    = endPos;
            tx.transform.eulerAngles = endEuler;
            tx.transform.localScale  = endScale;
        });
    }
Exemple #3
0
 internal void SetEntity(NetworkedEntity e, bool?related)
 {
     entity        = e;
     relatedClient = related;
 }