Example #1
0
        public void Instantiate(byte[] data)
        {
            EiBuffer buffer   = new EiBuffer(data);
            var      unpack   = (EiNetworkInstantiateMask)buffer.ReadByte();
            var      prefabId = buffer.ReadInt();
            var      viewId   = buffer.ReadInt();
            var      ownerId  = buffer.ReadInt();
            EiPrefab prefab   = Eitrum.Database.EiPrefabDatabase.Instance [prefabId];

            // Calculate Unpack type
            Vector3    position = unpack.HasFlag(EiNetworkInstantiateMask.Position) ? buffer.ReadVector3() : Vector3.zero;
            Quaternion rotation = unpack.HasFlag(EiNetworkInstantiateMask.Rotation) ? buffer.ReadQuaternion() : Quaternion.identity;
            float      scale    = unpack.HasFlag(EiNetworkInstantiateMask.Scale) ? buffer.ReadFloat() : 1f;
            Vector3    scale3D  = unpack.HasFlag(EiNetworkInstantiateMask.Scale3D) ? buffer.ReadVector3() : new Vector3(scale, scale, scale);
            Transform  parent   = null;

            if (unpack.HasFlag(EiNetworkInstantiateMask.Parent))
            {
                var parentViewId = buffer.ReadInt();
                var parentView   = EiNetworkView.Find(parentViewId);
                if (parentView)
                {
                    parent = parentView.transform;
                }
            }

            // Instantiate Prefab
            var go   = prefab.Instantiate(position, rotation, scale3D, parent);
            var view = go.GetComponent <EiNetworkView> ();

            if (view)
            {
                EiNetworkView.SetViewId(view, viewId);
                EiNetworkView.SetOwnerId(view, ownerId);
                EiNetworkView.SetNetwork(view, this);
            }
        }
Example #2
0
 public void NetReadFrom(EiBuffer buffer)
 {
     baseMaxStamina.Value           = buffer.ReadFloat();
     maxStaminaMultiplier.Value     = buffer.ReadFloat();
     currentStaminaPercentage.Value = buffer.ReadFloat();
 }