示例#1
0
    public void createEntity(string typeName, string entityID, bool isPlayer, float x, float y, float z, float yaw, Hashtable attrs)
    {
        for (int i = 0; i < entityList.Length; i++)
        {
            ClientEntity objModel = entityList [i];

            if (objModel.GetType().Name == typeName)
            {
                Debug.Log("GameObject " + objModel.gameObject + " scene" + objModel.gameObject.scene);
                GameObject   obj    = Instantiate(objModel.gameObject);
                ClientEntity entity = obj.GetComponent(typeName) as ClientEntity;
                Debug.Assert(entity != null);
                Debug.Log("Entity " + typeName + "." + entityID + " created: " + entity);
                entity.Init(this, entityID, isPlayer, x, y, z, yaw, attrs);
                entity.Space = this.space;

                if (isPlayer)
                {
                    this.player = entity;
                    GameObject.DontDestroyOnLoad(entity.gameObject);
                }

                this.entities [entityID] = entity;
                entity.OnCreated();

                return;
            }
        }

        Debug.LogAssertionFormat("Entity type {0} is unknown", typeName);
    }
示例#2
0
        public static void StoreListMetadataValue(Folder phoneClient, ClientEntity list, string fieldName, string value)
        {
            if (phoneClient == null)
            {
                return;
            }

            var listsMetadata = GetListMetadataList(phoneClient);
            var listID        = list.ID.ToString();

            if (phoneClient.Items.Any(i =>
                                      i.ParentID == listsMetadata.ID &&
                                      i.FieldValues.Any(fv => fv.FieldName == FieldNames.EntityRef && fv.Value == listID)))
            {
                var metadataItem = phoneClient.Items.Single(i =>
                                                            i.ParentID == listsMetadata.ID &&
                                                            i.FieldValues.Any(fv => fv.FieldName == FieldNames.EntityRef && fv.Value == listID));
                Item copy       = new Item(metadataItem);
                var  fieldValue = metadataItem.GetFieldValue(fieldName, true);
                fieldValue.Value = value;

                // queue up a server request
                if (phoneClient.ID != Guid.Empty)
                {
                    RequestQueue.EnqueueRequestRecord(RequestQueue.SystemQueue, new RequestQueue.RequestRecord()
                    {
                        ReqType = RequestQueue.RequestRecord.RequestType.Update,
                        Body    = new List <Item>()
                        {
                            copy, metadataItem
                        },
                        BodyTypeName    = "Item",
                        ID              = metadataItem.ID,
                        IsDefaultObject = true
                    });
                }
            }
            else
            {
                Guid     id           = Guid.NewGuid();
                DateTime now          = DateTime.UtcNow;
                var      metadataItem = new Item()
                {
                    ID           = id,
                    Name         = list.Name,
                    ItemTypeID   = SystemItemTypes.Reference,
                    FolderID     = phoneClient.ID,
                    ParentID     = listsMetadata.ID,
                    Created      = now,
                    LastModified = now,
                    FieldValues  = new ObservableCollection <FieldValue>()
                    {
                        new FieldValue()
                        {
                            ItemID    = id,
                            FieldName = FieldNames.EntityRef,
                            Value     = list.ID.ToString(),
                        },
                        new FieldValue()
                        {
                            ItemID    = id,
                            FieldName = FieldNames.EntityType,
                            Value     = list.GetType().Name,
                        },
                        new FieldValue()
                        {
                            ItemID    = id,
                            FieldName = fieldName,
                            Value     = value
                        }
                    }
                };
                phoneClient.Items.Add(metadataItem);

                // queue up a server request
                if (phoneClient.ID != Guid.Empty)
                {
                    RequestQueue.EnqueueRequestRecord(RequestQueue.SystemQueue, new RequestQueue.RequestRecord()
                    {
                        ReqType         = RequestQueue.RequestRecord.RequestType.Insert,
                        Body            = metadataItem,
                        ID              = metadataItem.ID,
                        IsDefaultObject = true
                    });
                }
            }

            // store the phone client folder
            StorageHelper.WritePhoneClient(phoneClient);
        }