public override void Trigger(ObjectMetaData reciever)
        {
            base.Trigger(reciever);

            InstantiateProjectile();
            AddEffects();
        }
예제 #2
0
        public NetworkObjectListObjectMetaDataList Serialize()
        {
            var list = new NetworkObjectListObjectMetaDataList();

            var sortedTypes = _types.Values.ToList();

            sortedTypes.Sort((lhs, rhs) => Comparer <uint> .Default.Compare(lhs.Id, rhs.Id));

            foreach (var type in sortedTypes)
            {
                var metaData = new ObjectMetaData
                {
                    TypeId   = type.Id,
                    TypeName = type.Type.FullName
                };

                foreach (var member in type.Members)
                {
                    metaData.Members.Add(new ObjectMember
                    {
                        TypeId = member.MetaData.Id
                    });
                }

                list.MetaData.Add(metaData);
            }

            return(list);
        }
 public CSharpCodeProviderForProxyOjectSerialization(Type type)
 {
     if (type.IsSimple())
     {
         throw new ArgumentException();
     }
     Type           = type;
     ObjectMetaData = ObjectMetaData.GetEntityMetaData(type);
 }
예제 #4
0
        public override BinaryConverterBase Copy(Type type)
        {
            var binaryConverter = new ArrayBinaryConverter();

            binaryConverter.Init(type);
            binaryConverter.ElementType    = binaryConverter.CurrentType.GetElementType();
            binaryConverter.EntityMetaData = ObjectMetaData.GetEntityMetaData(type);
            return(binaryConverter);
        }
예제 #5
0
        public override BinaryConverterBase Copy(Type type)
        {
            var binaryConverter = new UserDefinedTypeBinaryConverter();

            binaryConverter.Init(type);
            binaryConverter.ObjectType     = type;
            binaryConverter.EntityMetaData = ObjectMetaData.GetEntityMetaData(type);
            return(binaryConverter);
        }
예제 #6
0
        public override BinaryConverterBase Copy(Type type)
        {
            var binaryConverter = new HashSetBinaryConverter <T>();

            binaryConverter.Init(type);
            binaryConverter.ElementType    = type.GetGenericArguments().First();
            binaryConverter.EntityMetaData = ObjectMetaData.GetEntityMetaData(type);
            return(binaryConverter);
        }
예제 #7
0
        public override BinaryConverterBase Copy(Type type)
        {
            var binaryConverter = new DictionaryBinaryConverter();

            binaryConverter.Init(type);
            binaryConverter.KeyType        = binaryConverter.CurrentType.GetGenericArguments().First();
            binaryConverter.ValueType      = binaryConverter.CurrentType.GetGenericArguments().Last();
            binaryConverter.EntityMetaData = ObjectMetaData.GetEntityMetaData(type);
            return(binaryConverter);
        }
예제 #8
0
        // ******************************************************************
        // *																*
        // *			              Public Methods                        *
        // *																*
        // ******************************************************************

        /// <summary>
        /// Decomposes an object into a metadata tree expression that describes the structure
        /// and contents of the specified object
        /// </summary>
        /// <param name="obj">
        /// An object that must be decomposed
        /// </param>
        /// <returns>
        /// An ObjectMetaData instance that holds the metadata structure and contents of the
        /// specified object
        /// </returns>
        public static ObjectMetaData DecomposeObject(object obj)
        {
            // Create root entry
            var entry = ObjectMetaData.CreateRootType(obj);

            // Recurse down object's metadata structure
            DecomposeObjectRecurse(obj, entry, new List <object>());

            // Return root entry
            return(entry);
        }
예제 #9
0
 protected override void BeforSerialize(SerializableEntity obj, BinaryWriter writer, SerializeContext context)
 {
     if (SerializeItems == null)
     {
         ObjectType         = obj.GetEntityMetaData.ObjectType;
         CurrentType        = ObjectType;
         EntityMetaData     = ObjectMetaData.GetEntityMetaData(ObjectType);
         SerializeItems     = EntityMetaData.SerializeItemList;
         SerializableEntity = Activator.CreateInstance(ObjectType) as SerializableEntity;
     }
 }
예제 #10
0
 protected override void BeforDeserialize(BinaryReader reader, Type objectType, DeserializeContext context)
 {
     if (SerializeItems == null)
     {
         ObjectType         = objectType;
         CurrentType        = ObjectType;
         EntityMetaData     = ObjectMetaData.GetEntityMetaData(ObjectType);
         SerializeItems     = EntityMetaData.SerializeItemList;
         SerializableEntity = Activator.CreateInstance(objectType) as SerializableEntity;
     }
 }
        public override void OnUpdate(float input, ObjectMetaData reciever)
        {
            base.OnUpdate(input, reciever);

            if (projectile.instantiatedObject != null)
            {
                foreach (Projectiles.ProjectileEffect PE in projectileEffects)
                {
                    PE.OnUpdate();
                }
            }
        }
예제 #12
0
        public override void Trigger(ObjectMetaData reciever)
        {
            base.Trigger(reciever);


            foreach (ObjectAffect item in toReciever)
            {
                reciever.AddAffect(item);
            }

            foreach (ObjectAffect item in toSender)
            {
                sender.AddAffect(item);
            }
        }
예제 #13
0
        public void SyncViewPath()
        {
            if (SCUtility.m_AppDef == null || SCUtility.m_AppDef.ArrClients == null)
            {
                return;
            }

            ArrayList meta = null;
            var       vm   = this.DataContext as MainViewModel;

            if (vm != null && vm.CurrentViewItem != null && vm.CurrentViewItem.ObjectViewer != null)
            {
                meta = vm.CurrentViewItem.ObjectViewer.GetMetaData();
            }

            QueryData StatusQueryData = new QueryData();

            StatusQueryData.Type = Consts.SectionType.DoAction;
            ObjectMetaData obj = new ObjectMetaData();

            obj.Text = bar.Path.Clone().ToString();
            obj.Tag  = "Path";
            StatusQueryData.ArrCounter.Add(obj);


            if (meta != null)
            {
                foreach (var itm in meta)
                {
                    StatusQueryData.ArrCounter.Add(itm);
                }
            }

            foreach (BaseClass.ClientInfo row in SCUtility.m_AppDef.ArrClients)
            {
                // this.Text = "Waiting for reply...";
                string     strPath           = bar.Path.Clone().ToString();
                ClientInfo CliInfoS          = new ClientInfo(row.IP, row.Name);
                Thread     ClientStatusQuery = new Thread(delegate() { ExecutingPathQueries(StatusQueryData, CliInfoS); });
                //  Thread ClientStatusQuery = new Thread(UpdateStatusDelegate() {});
                ClientStatusQuery.Start();
            }
        }
예제 #14
0
        public override void AtStart(ObjectMetaData objectData)
        {
            base.AtStart(objectData);

            // record the check distance, and set the check distance to negative
            // in order for
            originalStickHeight = objectData.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().advancedSettings.groundCheckDistance;
            objectData.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().advancedSettings.groundCheckDistance = -10;

            //add force
            if (space == Space.World)
            {
                objectData.GetComponent <Rigidbody>().AddForce(direction * force);
            }
            else
            {
                objectData.GetComponent <Rigidbody>().AddRelativeForce(direction * force);
            }
        }
예제 #15
0
        public override void AtStart(ObjectMetaData objectData)
        {
            base.AtStart(objectData);

            if (lifeTime == 0 && !oneTime)
            {
                Debug.Log("<color=olive>Warning ! Lifetime too short</color>\n" +
                          "Add some lifetime to health over time or remove oneTime");
            }

            if (oneTime)
            {
                objectData.GiveResource(amount);
                resourcePerSecond = 0;
            }
            else
            {
                resourcePerSecond = amount / lifeTime;
            }
        }
예제 #16
0
        private void tsbtnShutdownPC_Click(object sender, EventArgs e)
        {
            QueryData StatusQueryData = new QueryData();

            StatusQueryData.Type = Consts.SectionType.DoAction;
            ObjectMetaData obj = new ObjectMetaData();

            obj.Text = "";
            obj.Tag  = "Shutdown";
            StatusQueryData.ArrCounter.Add(obj);


            Collection <BaseClass.ClientInfo> AllCliecnt = new Collection <ClientInfo>();

            foreach (DataGridViewRow itm in dataGridClients.SelectedRows)
            {
                BaseClass.ClientInfo ClientInfoTemp = null;
                foreach (ClientInfo CurrClient in SCUtility.m_AppDef.ArrClients)
                {
                    if (CurrClient.IP.CompareTo(itm.Cells["IP"].Value.ToString()) == 0)
                    {
                        ClientInfoTemp = CurrClient;
                    }
                }

                if (ClientInfoTemp != null)
                {
                    AllCliecnt.Add(ClientInfoTemp);
                }
            }

            foreach (BaseClass.ClientInfo row in AllCliecnt)//SCUtility.m_AppDef.ArrClients)
            {
                // this.Text = "Waiting for reply...";

                ClientInfo CliInfoS          = new ClientInfo(row.IP, row.Name);
                Thread     ClientStatusQuery = new Thread(delegate() { ExecutingPathQueries(StatusQueryData, CliInfoS); });
                //  Thread ClientStatusQuery = new Thread(UpdateStatusDelegate() {});
                ClientStatusQuery.Start();
            }
        }
예제 #17
0
            /// <summary>
            /// Creates a new ObjectMetaData for the specified type
            /// </summary>
            /// <param name="obj">
            /// An object reference
            /// </param>
            /// <param name="field">
            /// A FieldInfo instance that holds details about the public field
            /// </param>
            /// <returns>
            /// A new ObjectMetaData instance
            /// </returns>
            public static ObjectMetaData CreateFieldType(object obj, FieldInfo field)
            {
                // Create 'Property' entry
                var entry = new ObjectMetaData(ObjectMetaDataType.FieldType);

                try
                {
                    // Try to resolve value properties
                    entry.Field             = field;
                    entry.ValueType         = field.FieldType;
                    entry.ValueIsEnumerable = entry.Value is IEnumerable;
                    entry.Value             = field.GetValue(obj);
                }
                catch (Exception ex)
                {
                    // Store exception that occured while resolving value
                    entry.ValueException = ex;
                }

                // Return reference to new entry
                return(entry);
            }
예제 #18
0
            // ******************************************************************
            // *																*
            // *			              Public Methods                        *
            // *																*
            // ******************************************************************

            /// <summary>
            /// Creates a new ObjectMetaData instance for the class type of the specified object
            /// </summary>
            /// <param name="obj">
            /// An object reference
            /// </param>
            /// <returns>
            /// A new ObjectMetaData instance
            /// </returns>
            public static ObjectMetaData CreateRootType(object obj)
            {
                // Create 'RootType' entry
                var entry = new ObjectMetaData(ObjectMetaDataType.RootType);

                try
                {
                    // Try to resolve value properties
                    entry.Value     = obj;
                    entry.ValueType = obj != null?obj.GetType() : null;

                    entry.ValueIsEnumerable = obj is IEnumerable;
                }
                catch (Exception ex)
                {
                    // Store exception that occured while resolving value
                    entry.ValueException = ex;
                }

                // Return reference to new entry
                return(entry);
            }
예제 #19
0
            /// <summary>
            /// Creates a new ObjectMetaData instance for the class type of the specified object
            /// </summary>
            /// <param name="obj">
            /// An object reference
            /// </param>
            /// <param name="property">
            /// A PropertyInfo instance that holds details about the public property
            /// </param>
            /// <returns>
            /// A new ObjectMetaData instance
            /// </returns>
            public static ObjectMetaData CreatePropertyType(object obj, PropertyInfo property)
            {
                // Create 'Property' entry
                var entry = new ObjectMetaData(ObjectMetaDataType.PropertyType);

                try
                {
                    // Try to resolve value properties
                    entry.Property          = property;
                    entry.ValueType         = property.PropertyType;
                    entry.ValueIsEnumerable = entry.Value is IEnumerable;
                    entry.Value             = property.GetValue(obj, null);
                }
                catch (Exception ex)
                {
                    // Store exception that occured while resolving value
                    entry.ValueException = ex;
                }

                // Return reference to new entry
                return(entry);
            }
예제 #20
0
        public override BinaryConverterBase Copy(Type type)
        {
            var binaryConverter = new ISerializableTypeBinaryConverter();

            binaryConverter.ObjectType = type;
            binaryConverter.Init(type);
            var createInstanceReturnType  = typeof(object);
            var createInstanceParamsTypes = new[] { typeof(SerializationInfo), typeof(StreamingContext) };

            binaryConverter.TargetCreateInstanceMethod = binaryConverter.CurrentType.GetConstructor(createInstanceParamsTypes);
            if (binaryConverter.TargetCreateInstanceMethod == null)
            {
                binaryConverter.TargetCreateInstanceMethod = binaryConverter.CurrentType.GetConstructor(
                    BindingFlags.NonPublic | BindingFlags.CreateInstance | BindingFlags.Instance,
                    null,
                    createInstanceParamsTypes,
                    null
                    );
            }
            binaryConverter.EntityMetaData    = ObjectMetaData.GetEntityMetaData(type);
            binaryConverter.UserDefinedObject = Activator.CreateInstance(type);
            return(binaryConverter);
        }
예제 #21
0
        // ******************************************************************
        // *																*
        // *			             Private Methods                        *
        // *																*
        // ******************************************************************

        /// <summary>
        /// Recursively decomposes the specified object into a metadata instance
        /// </summary>
        /// <param name="obj">
        /// An object reference to the instance to decompose
        /// </param>
        /// <param name="parentEntry">
        /// A ObjectMetaData to the parent of the specified object
        /// </param>
        /// <param name="processedReferences">
        /// A collection of processed objects that is used to avoid infinite recursions
        /// </param>
        private static void DecomposeObjectRecurse(
            object obj,
            ObjectMetaData parentEntry,
            List <object> processedReferences)
        {
            // We do not recurse down certain value types
            if (obj == null ||
                obj is string ||
                obj is Type ||
                obj is IConvertible)
            {
                return;
            }

            // Are we recursing reference type?
            if (!(obj is ValueType))
            {
                // Avoid re-processing same objects
                if (processedReferences.Contains(obj))
                {
                    // Add to parent list
                    var entry = ObjectMetaData.CreateDuplicateType(obj);
                    parentEntry.ChildEntries.Add(entry);
                    return;
                }

                // Add object to list of processed ones
                processedReferences.Add(obj);
            }

            // Check if object is reference type
            var props = obj.GetType().GetProperties(
                BindingFlags.Instance |
                BindingFlags.GetProperty |
                BindingFlags.Public |
                BindingFlags.FlattenHierarchy);

            props = props.OrderBy(o => o.Name).ToArray();
            foreach (var prop in props)
            {
                // Skip accessor properties
                if (prop.GetIndexParameters().Length == 0)
                {
                    // Add to parent list
                    var entry = ObjectMetaData.CreatePropertyType(obj, prop);
                    parentEntry.ChildEntries.Add(entry);

                    // Recurse down
                    DecomposeObjectRecurse(entry.Value, entry, processedReferences);
                }
            }

            // Check if object is reference type
            var fields = obj.GetType().GetFields(
                BindingFlags.Instance |
                BindingFlags.GetProperty |
                BindingFlags.Public |
                BindingFlags.FlattenHierarchy);

            fields = fields.OrderBy(o => o.Name).ToArray();
            foreach (var field in fields)
            {
                // Add to parent list
                var entry = ObjectMetaData.CreateFieldType(obj, field);
                parentEntry.ChildEntries.Add(entry);

                // Recurse down
                DecomposeObjectRecurse(entry.Value, entry, processedReferences);
            }

            // Check if object is enumerable type
            var iEnumerable = obj as IEnumerable;

            if (iEnumerable != null)
            {
                // Iterate
                int i = 0;
                foreach (var o in iEnumerable)
                {
                    // Add to parent list
                    var entry = ObjectMetaData.CreateEnumerableType(o, i++);
                    parentEntry.ChildEntries.Add(entry);

                    // Recurse down
                    DecomposeObjectRecurse(entry.Value, entry, processedReferences);
                }
            }
        }
 public override void AtDestroy(ObjectMetaData objectData)
 {
     objectData.Targetable(!state);
     base.AtDestroy(objectData);
 }
예제 #23
0
        private void StartVoting()
        {
            var govSessionMemOpinion = new Sbn.Products.GEP.GEPObject.GovSessionMemberOpinion();

            govSessionMemOpinion.CorrelateOffer           = new Sbn.Products.GEP.GEPObject.Offer();
            govSessionMemOpinion.CorrelateOffer.ID        = 1;
            govSessionMemOpinion.CorrelateOffer.AliasCode = "54471";
            govSessionMemOpinion.CorrelateOffer.Title     = "پیشنهاد تستی";

            var xmlString = govSessionMemOpinion.GetXML("GovSessionMemberOpinion");



            if (SCUtility.m_AppDef == null || SCUtility.m_AppDef.ArrClients == null)
            {
                return;
            }



            CurrentModel.Session = new Session();

            //Register Voting

            // CurrentModel.VotingSubject = govSessionMemOpinion.CorrelateOffer.Title;
            // CurrentModel.VotingSubjectMetaData = SessionItem.ObjectViewer.GetVotingMetaData();// govSessionMemOpinion.CorrelateOffer.GetXML("Offer");
            CurrentModel.VotingDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
            CurrentModel.VotingTime = DateTime.Now.TimeOfDay;
            var ballot = new Model.Ballot();

            ballot.Voting = CurrentModel;
            // ballot.BollotMetaData = SessionItem.ObjectViewer.GetBallotMetaData();// xmlString;
            ballot.OpinionType           = OpinionType.NoneIdea;
            ballot.RefrenceAssemblly     = SessionItem.RefrenceAssemblly;
            ballot.BallotViewerClassName = SessionItem.BallotViewerClassName;



            var StatusQueryData = new QueryData();

            StatusQueryData.Type = Consts.SectionType.DoAction;
            var obj = new ObjectMetaData();

            obj.Tag = "Voting";



            var XmlDoc = new XmlDocument();
            var type   = typeof(Ballot);

            var XmlSerializer = new XmlSerializer(type);

            using (var ms = new MemoryStream())
            {
                XmlSerializer.Serialize(ms, ballot);
                ms.Position = 0;
                XmlDoc.Load(ms);
                obj.Text = XmlDoc.InnerXml;
            }



            StatusQueryData.ArrCounter.Add(obj);

            foreach (BaseClass.ClientInfo row in SCUtility.m_AppDef.ArrClients)
            {
                // this.Text = "Waiting for reply...";

                ClientInfo CliInfoS          = new ClientInfo(row.IP, row.Name);
                Thread     ClientStatusQuery = new Thread(delegate()
                {
                    ReplyData ReplyDataObj;

                    try
                    {
                        string QueryString = StatusQueryData.Serialize();
                        String ReplyString = MonitorInfoViewer.Comm.SendQuery(CliInfoS.IP, SCUtility.m_AppDef.m_Port, QueryString);
                        ReplyDataObj       = ReplyData.Deserialize(ReplyString);
                    }
                    catch (Exception)
                    {
                        ReplyDataObj = null;
                    }
                });
                //  Thread ClientStatusQuery = new Thread(UpdateStatusDelegate() {});
                ClientStatusQuery.Start();
            }
        }
예제 #24
0
        public override void AtUpdate(ObjectMetaData objectData)
        {
            base.AtUpdate(objectData);

            objectData.GiveResource(resourcePerSecond * Time.deltaTime);
        }
 public override void OnUpdate(float input, ObjectMetaData reciever)
 {
     base.OnUpdate(input, reciever);
 }
 public override void Trigger(ObjectMetaData reciever)
 {
     base.Trigger(reciever);
 }
예제 #27
0
 public override void AtDestroy(ObjectMetaData objectData)
 {
     objectData.GetComponent <UnityStandardAssets.Characters.FirstPerson.RigidbodyFirstPersonController>().advancedSettings.groundCheckDistance = originalStickHeight;
     base.AtDestroy(objectData);
 }
예제 #28
0
        public override void AtUpdate(ObjectMetaData objectData)
        {
            base.AtUpdate(objectData);

            objectData.GiveHealth(healthPerSecond * Time.deltaTime);
        }
예제 #29
0
 public void SerializablePropertiesGetterIsCorrectForUserEntity()
 {
     Assert.AreEqual(ObjectMetaData.GetEntityMetaData(typeof(ObjectMetadataTests.User <UserRole>)).WritablePropertyList.Count, 12);
     Assert.AreEqual(ObjectMetaData.GetEntityMetaData(typeof(ObjectMetadataTests.User <UserRole>)).WritablePropertyList.First().Name, "Active");
 }
예제 #30
0
        public static ReplyData executeQuery(QueryData receivedQueryData)
        {
            ReplyData returnedReplyData = new ReplyData();

            ObjectMetaData ProcessNameCounter = (ObjectMetaData)receivedQueryData.ArrCounter[0];

            Process CurrProcess = Process.GetProcessById(Convert.ToInt32(ProcessNameCounter.Tag));

            if (CurrProcess != null)
            {
                StringDictionary Vars = CurrProcess.StartInfo.EnvironmentVariables;
                DataContainer    EnvsDataContianer = new DataContainer();
                EnvsDataContianer.Name = "EnvironmentVariables";

                foreach (string s in Vars.Keys)
                {
                    EnvsDataContianer.ArrCounters.Add(new Counter(s, Vars[s]));
                }

                returnedReplyData.ArrDataContainers.Add(EnvsDataContianer);

                foreach (ProcessThread CurrThread in CurrProcess.Threads)
                {
                    DataContainer ThreadDataContianer = new DataContainer();
                    ThreadDataContianer.Name = CurrThread.Id.ToString();

                    try
                    {
                        ThreadDataContianer.ArrCounters.Add(new Counter("CPU", CurrThread.TotalProcessorTime.ToString()));
                        ThreadDataContianer.ArrCounters.Add(new Counter("StartTime", CurrThread.StartTime.ToString()));
                        ThreadDataContianer.ArrCounters.Add(new Counter("UserProcessorTime", CurrThread.UserProcessorTime.ToString()));
                    }
                    catch (Exception)
                    {
                        ThreadDataContianer.ArrCounters.Add(new Counter("CPU", Convert.ToString(0)));
                        ThreadDataContianer.ArrCounters.Add(new Counter("StartTime", DateTime.MinValue.ToString()));
                        ThreadDataContianer.ArrCounters.Add(new Counter("UserProcessorTime", ""));
                    }

                    ThreadDataContianer.ArrCounters.Add(new Counter("StartAddress", CurrThread.StartAddress.ToString()));
                    ThreadDataContianer.ArrCounters.Add(new Counter("ThreadState", CurrThread.ThreadState.ToString()));
                    ThreadDataContianer.ArrCounters.Add(new Counter("BasePriority", CurrThread.BasePriority.ToString()));
                    ThreadDataContianer.ArrCounters.Add(new Counter("CurrentPriority", CurrThread.CurrentPriority.ToString()));

                    if (CurrThread.ThreadState == ThreadState.Wait)
                    {
                        ThreadDataContianer.ArrCounters.Add(new Counter("WaitReason", CurrThread.WaitReason.ToString()));
                    }
                    else
                    {
                        ThreadDataContianer.ArrCounters.Add(new Counter("WaitReason", ""));
                    }

                    returnedReplyData.ArrDataContainers.Add(ThreadDataContianer);
                }
            }
            else
            {
                Log.WriteToLog(string.Format("Process {0} does not exists.", ProcessNameCounter.Tag));
            }

            return(returnedReplyData);
        }