public override void SendInitialState(BSONObject bsonObj, INetObjectViewer viewer) { base.SendInitialState(bsonObj, viewer); // if we have trunk pieces, send those if (this.trunkPieces.Count > 0) { BSONArray trunkInfo = BSONArray.New; foreach (var trunkPiece in this.trunkPieces) { trunkInfo.Add(trunkPiece.ToInitialBson()); } bsonObj["trunks"] = trunkInfo; } if (this.Controller != null && this.Controller is INetObject) { bsonObj["controller"] = ((INetObject)this.Controller).ID; } if (this.stumpHealth <= 0f) // trunk pieces have their own grounders { bsonObj["noGround"] = true; } bsonObj["mult"] = this.resourceMultiplier; }
public override bool IsNotRelevant(INetObjectViewer viewer) { if (viewer is IWorldObserver) { IWorldObserver observer = viewer as IWorldObserver; var closestWrapped = World.ClosestWrappedLocation(observer.Position, this.Position); var notVisibleDistance = observer.ViewDistance + Eco.Shared.Voxel.Chunk.Size; var v = closestWrapped - observer.Position; if (Mathf.Abs(v.x) >= notVisibleDistance || Mathf.Abs(v.z) >= notVisibleDistance) { if (this.Controller != null && this.Controller.Equals(viewer)) { this.SetPhysicsController(null); } return(true); } else { // Still relevant, Check if viewer would be a better controller if (this.Controller == null) { this.SetPhysicsController(viewer); } else if (this.Controller != viewer && Vector2.WrappedDistance(observer.Position.XZ, this.Position.XZ) < 10f) { IWorldObserver other = this.Controller as IWorldObserver; if (Vector2.WrappedDistance(other.Position.XZ, this.Position.XZ) > 15f) { this.SetPhysicsController(viewer); } } } } return(false); }
public bool SetPhysicsController(INetObjectViewer owner) { // Trees don't need physics until felled if (!this.Fallen) { return(false); } if (Equals(this.Controller, owner)) { return(false); } if (this.Controller != null) { this.Controller.RemoveDestroyAction(this.RemovePhysicsController); } this.Controller = owner; if (this.Controller != null) { this.Controller.AddDestroyAction(this.RemovePhysicsController); } int id = owner == null ? -1 : ((INetObject)owner).ID; this.NetObj.Controller.RPC("UpdateController", id); return(true); }
public override void SendUpdate(BSONObject bsonObj, INetObjectViewer viewer) { if (this.attached == null) { base.SendUpdate(bsonObj, viewer); } }
public override bool IsUpdated(INetObjectViewer viewer) { if (this.LastUpdateTime > viewer.LastSentUpdateTime && SleepManager.Obj.AcceleratingTime) { return(true); } return(this.Fallen && this.trunkPieces.Any(piece => !piece.Collected) && this.LastUpdateTime > viewer.LastSentUpdateTime); }
public override void SendUpdate(BSONObject bsonObj, INetObjectViewer viewer) { base.SendUpdate(bsonObj, viewer); var cage = BSONObject.New; cage["pos"] = new Vector3(0f, this.cagePos, 0f); cage["v"] = new Vector3(0f, this.cageVelocity, 0f); bsonObj["cage"] = cage; }
public override void SendInitialState(BSONObject bsonObj, INetObjectViewer viewer) { base.SendInitialState(bsonObj, viewer); bsonObj["pos"] = this.Position; bsonObj["force"] = this.CastForce; if (this.Controller != null && this.Controller is INetObject) { bsonObj["controller"] = ((INetObject)this.Controller).ID; } }
public override bool IsNotRelevant(INetObjectViewer viewer) { bool isNot = base.IsNotRelevant(viewer); if (this.Controller == null) { this.Destroy(); } return(isNot); }
public override void SendInitialState(BSONObject bsonObj, INetObjectViewer viewer) { base.SendInitialState(bsonObj, viewer); if (this.attached != null) { bsonObj["attached"] = this.attached.ToBson(); } bsonObj["v"] = this.Velocity; if (this.Controller != null && this.Controller is INetObject) { bsonObj["controller"] = ((INetObject)this.Controller).ID; } }
public override bool IsRelevant(INetObjectViewer viewer) { if (this.attached != null) { var obj = NetObjectManager.GetObject <INetObject>(this.attached.ParentID); if (obj != null) { return(obj.IsRelevant(viewer)); } this.Destroy(); return(false); } return(base.IsRelevant(viewer)); }
public override bool IsRelevant(INetObjectViewer viewer) { if (viewer is IWorldObserver) { IWorldObserver observer = viewer as IWorldObserver; var closestWrapped = World.ClosestWrappedLocation(observer.Position, this.Position); var notVisibleDistance = observer.ViewDistance + Eco.Shared.Voxel.Chunk.Size; var v = closestWrapped - observer.Position; if (Mathf.Abs(v.x) >= notVisibleDistance || Mathf.Abs(v.z) >= notVisibleDistance) { if (this.Controller == null) { this.SetPhysicsController(viewer); } return(true); } } return(false); }
public override bool IsNotRelevant(INetObjectViewer viewer) { if (TimeUtil.Seconds > this.DestroyTime) { this.Destroy(); } if (this.attached != null) { var obj = NetObjectManager.GetObject <INetObject>(this.attached.ParentID); if (obj != null) { return(obj.IsNotRelevant(viewer)); } this.Destroy(); return(true); } return(base.IsNotRelevant(viewer)); }
public override void SendUpdate(BSONObject bsonObj, INetObjectViewer viewer) { base.SendUpdate(bsonObj, viewer); if (this.Fallen && this.Controller != viewer) { BSONArray trunkInfo = BSONArray.New; foreach (var trunkPiece in this.trunkPieces) { if (trunkPiece.Position == Vector3.Zero) { continue; } if (trunkPiece.LastUpdateTime < viewer.LastSentUpdateTime) { continue; } trunkInfo.Add(trunkPiece.ToUpdateBson()); } bsonObj["trunks"] = trunkInfo; bsonObj["time"] = this.lastKeyframeTime; } }
public override void SendInitialState(BSONObject bsonObj, INetObjectViewer viewer) { base.SendInitialState(bsonObj, viewer); // if we have trunk pieces, send those var trunkInfo = BSONArray.New; if (this.trunkPieces.Count > 0) { foreach (var trunkPiece in this.trunkPieces) { trunkInfo.Add(trunkPiece.ToInitialBson()); } } bsonObj["trunks"] = trunkInfo; if (this.Controller != null && this.Controller is INetObject) { bsonObj["controller"] = ((INetObject)this.Controller).ID; } bsonObj["mult"] = this.resourceMultiplier; bsonObj["density"] = this.Species.Density; }
public override void SendInitialState(BSONObject bsonObj, INetObjectViewer viewer) { base.SendInitialState(bsonObj, viewer); bsonObj["open"] = this.Open; bsonObj["opensOut"] = this.OpensOut; }
public override void SendInitialState(BSONObject bsonObj, INetObjectViewer viewer) { base.SendInitialState(bsonObj, viewer); this.SendUpdate(bsonObj, viewer); bsonObj["dir"] = this.GetAnimatedState <float>("dir"); }
public override void SendUpdate(BSONObject bsonObj, INetObjectViewer viewer) { base.SendUpdate(bsonObj, viewer); bsonObj["cagePos"] = this.cagePos; bsonObj["v"] = this.v; }
public override bool IsUpdated(INetObjectViewer viewer) => this.Controller != viewer; // Trigger an update to anyone not the owner of this Lure. public override void SendUpdate(BSONObject bsonObj, INetObjectViewer viewer) { bsonObj["pos"] = this.Position; base.SendUpdate(bsonObj, viewer); }
public override bool IsUpdated(INetObjectViewer viewer) => this.Controller != viewer; // Trigger an update to anyone not the owner of this Lure.
public override bool IsUpdated(INetObjectViewer viewer) { return(this.Fallen && this.trunkPieces.Any(piece => !piece.Collected) && this.LastUpdateTime > viewer.LastSentUpdateTime); }
public override bool IsNotRelevant(INetObjectViewer viewer) => base.IsNotRelevant(viewer);
public override void SendInitialState(BSONObject bsonObj, INetObjectViewer viewer) { base.SendInitialState(bsonObj, viewer); bsonObj["noFadeIn"] = true; }