/// <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(); }
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; }); }
internal void SetEntity(NetworkedEntity e, bool?related) { entity = e; relatedClient = related; }