Beispiel #1
0
        public GenericBinding FindBinding(int index)
        {
            int curves = 0;

            for (int i = 0; i < genericBindings.Count; i++)
            {
                GenericBinding b = genericBindings[i];
                curves += b.attribute == 2 ? 4 : b.attribute <= 4 ? 3 : 1;
                if (curves > index)
                {
                    return(b);
                }
            }

            return(null);
        }
Beispiel #2
0
        public AnimationClipBindingConstant(ObjectReader reader)
        {
            int numBindings = reader.ReadInt32();

            genericBindings = new GenericBinding[numBindings];
            for (int i = 0; i < numBindings; i++)
            {
                genericBindings[i] = new GenericBinding(reader);
            }

            int numMappings = reader.ReadInt32();

            pptrCurveMapping = new PPtr <Object> [numMappings];
            for (int i = 0; i < numMappings; i++)
            {
                pptrCurveMapping[i] = new PPtr <Object>(reader);
            }
        }
Beispiel #3
0
        public AnimationClipBindingConstant ConvertValueArrayToGenericBinding()
        {
            var bindings        = new AnimationClipBindingConstant();
            var genericBindings = new List <GenericBinding>();
            var values          = m_Binding;

            for (int i = 0; i < values.m_ValueArray.Length;)
            {
                var curveID     = values.m_ValueArray[i].m_ID;
                var curveTypeID = values.m_ValueArray[i].m_TypeID;
                var binding     = new GenericBinding();
                genericBindings.Add(binding);
                if (curveTypeID == 4174552735) //CRC(PositionX))
                {
                    binding.path      = curveID;
                    binding.attribute = 1; //kBindTransformPosition
                    binding.typeID    = ClassIDType.Transform;
                    i += 3;
                }
                else if (curveTypeID == 2211994246) //CRC(QuaternionX))
                {
                    binding.path      = curveID;
                    binding.attribute = 2; //kBindTransformRotation
                    binding.typeID    = ClassIDType.Transform;
                    i += 4;
                }
                else if (curveTypeID == 1512518241) //CRC(ScaleX))
                {
                    binding.path      = curveID;
                    binding.attribute = 3; //kBindTransformScale
                    binding.typeID    = ClassIDType.Transform;
                    i += 3;
                }
                else
                {
                    binding.typeID    = ClassIDType.Animator;
                    binding.path      = 0;
                    binding.attribute = curveID;
                    i++;
                }
            }
            bindings.genericBindings = genericBindings.ToArray();
            return(bindings);
        }