예제 #1
0
        public static AnimationFrame Read(uint numParts, DatReader datReader)
        {
            AnimationFrame a = new AnimationFrame();

            for (uint i = 0; i < numParts; i++)
            {
                Position p = new Position();
                // Origin
                p.PositionX = datReader.ReadSingle();
                p.PositionY = datReader.ReadSingle();
                p.PositionZ = datReader.ReadSingle();
                p.RotationW = datReader.ReadSingle();
                p.RotationX = datReader.ReadSingle();
                p.RotationY = datReader.ReadSingle();
                p.RotationZ = datReader.ReadSingle();
                a.Locations.Add(p);
            }

            uint numHooks = datReader.ReadUInt32();

            for (uint i = 0; i < numHooks; i++)
            {
                a.Hooks.Add(AnimationHook.Read(datReader));
            }

            return(a);
        }
예제 #2
0
        public static PhysicsScriptData Read(DatReader datReader)
        {
            PhysicsScriptData obj = new PhysicsScriptData();

            obj.StartTime = datReader.ReadDouble();
            obj.Hook      = AnimationHook.Read(datReader);

            return(obj);
        }
예제 #3
0
        public void Unpack(BinaryReader reader, uint numParts)
        {
            Frames.Unpack(reader, numParts);

            uint numHooks = reader.ReadUInt32();

            for (uint i = 0; i < numHooks; i++)
            {
                var hook = AnimationHook.ReadHook(reader);
                Hooks.Add(hook);
            }
        }
예제 #4
0
        public static AnimationHook Read(DatReader datReader)
        {
            AnimationHook h = new AnimationHook();

            h.HookType  = (AnimationHookType)datReader.ReadUInt32();
            h.Direction = datReader.ReadUInt32();

            // The following HookTypes have no additional properties:
            // AnimationHookType.AnimationDone
            // AnimationHookType.DefaultScript
            // CreateBlockingParticle

            switch (h.HookType)
            {
            case AnimationHookType.Sound:
                h._hook = SoundHook.ReadHookType(datReader);
                break;

            case AnimationHookType.SoundTable:
                h._hook = SoundTableHook.ReadHookType(datReader);
                break;

            case AnimationHookType.Attack:
                h._hook = AttackHook.ReadHookType(datReader);
                break;

            case AnimationHookType.ReplaceObject:
                h._hook = ReplaceObjectHook.ReadHookType(datReader);
                break;

            case AnimationHookType.Ethereal:
                h._hook = EtherealHook.ReadHookType(datReader);
                break;

            case AnimationHookType.TransparentPart:
                h._hook = TransparentPartHook.ReadHookType(datReader);
                break;

            case AnimationHookType.Luminous:
                h._hook = LuminousHook.ReadHookType(datReader);
                break;

            case AnimationHookType.LuminousPart:
                h._hook = LuminousPartHook.ReadHookType(datReader);
                break;

            case AnimationHookType.Diffuse:
                h._hook = DiffuseHook.ReadHookType(datReader);
                break;

            case AnimationHookType.DiffusePart:
                h._hook = DiffusePartHook.ReadHookType(datReader);
                break;

            case AnimationHookType.Scale:
                h._hook = ScaleHook.ReadHookType(datReader);
                break;

            case AnimationHookType.CreateParticle:
                h._hook = CreateParticleHook.ReadHookType(datReader);
                break;

            case AnimationHookType.DestroyParticle:
                h._hook = DestroyParticleHook.ReadHookType(datReader);
                break;

            case AnimationHookType.StopParticle:
                h._hook = StopParticleHook.ReadHookType(datReader);
                break;

            case AnimationHookType.NoDraw:
                h._hook = NoDrawHook.ReadHookType(datReader);
                break;

            case AnimationHookType.DefaultScriptPart:
                h._hook = DefaultScriptPartHook.ReadHookType(datReader);
                break;

            case AnimationHookType.CallPES:
                h._hook = CallPESHook.ReadHookType(datReader);
                break;

            case AnimationHookType.Transparent:
                h._hook = TransparentHook.ReadHookType(datReader);
                break;

            case AnimationHookType.SoundTweaked:
                h._hook = SoundTweakedHook.ReadHookType(datReader);
                break;

            case AnimationHookType.SetOmega:
                h._hook = SetOmegaHook.ReadHookType(datReader);
                break;

            case AnimationHookType.TextureVelocity:
                h._hook = TextureVelocityHook.ReadHookType(datReader);
                break;

            case AnimationHookType.TextureVelocityPart:
                h._hook = TextureVelocityPartHook.ReadHookType(datReader);
                break;

            case AnimationHookType.SetLight:
                h._hook = SetLightHook.ReadHookType(datReader);
                break;
            }

            return(h);
        }
예제 #5
0
        public static AnimationHook ReadHook(BinaryReader reader)
        {
            // We peek forward to get the hook type, then revert our position.
            var hookType = (AnimationHookType)reader.ReadUInt32();

            reader.BaseStream.Position -= 4;

            AnimationHook hook;

            switch (hookType)
            {
            case AnimationHookType.Sound:
                hook = new SoundHook();
                break;

            case AnimationHookType.SoundTable:
                hook = new SoundTableHook();
                break;

            case AnimationHookType.Attack:
                hook = new AttackHook();
                break;

            case AnimationHookType.ReplaceObject:
                hook = new ReplaceObjectHook();
                break;

            case AnimationHookType.Ethereal:
                hook = new EtherealHook();
                break;

            case AnimationHookType.TransparentPart:
                hook = new TransparentPartHook();
                break;

            case AnimationHookType.Luminous:
                hook = new LuminousHook();
                break;

            case AnimationHookType.LuminousPart:
                hook = new LuminousPartHook();
                break;

            case AnimationHookType.Diffuse:
                hook = new DiffuseHook();
                break;

            case AnimationHookType.DiffusePart:
                hook = new DiffusePartHook();
                break;

            case AnimationHookType.Scale:
                hook = new ScaleHook();
                break;

            case AnimationHookType.CreateParticle:
                hook = new CreateParticleHook();
                break;

            case AnimationHookType.DestroyParticle:
                hook = new DestroyParticleHook();
                break;

            case AnimationHookType.StopParticle:
                hook = new StopParticleHook();
                break;

            case AnimationHookType.NoDraw:
                hook = new NoDrawHook();
                break;

            case AnimationHookType.DefaultScriptPart:
                hook = new DefaultScriptPartHook();
                break;

            case AnimationHookType.CallPES:
                hook = new CallPESHook();
                break;

            case AnimationHookType.Transparent:
                hook = new TransparentHook();
                break;

            case AnimationHookType.SoundTweaked:
                hook = new SoundTweakedHook();
                break;

            case AnimationHookType.SetOmega:
                hook = new SetOmegaHook();
                break;

            case AnimationHookType.TextureVelocity:
                hook = new TextureVelocityHook();
                break;

            case AnimationHookType.TextureVelocityPart:
                hook = new TextureVelocityPartHook();
                break;

            case AnimationHookType.SetLight:
                hook = new SetLightHook();
                break;

            case AnimationHookType.CreateBlockingParticle:
                hook = new CreateBlockingParticle();
                break;

            // The following HookTypes have no additional properties:
            // AnimationHookType.AnimationDone
            // AnimationHookType.DefaultScript
            case AnimationHookType.AnimationDone:
            case AnimationHookType.DefaultScript:
                hook = new AnimationHook();
                break;

            default:
                log.Warn($"Not Implemented Hook type encountered: {hookType}");
                hook = null;
                break;
            }

            if (hook != null)
            {
                hook.Unpack(reader);
            }

            return(hook);
        }
예제 #6
0
        public void Unpack(BinaryReader reader)
        {
            StartTime = reader.ReadDouble();

            Hook = AnimationHook.ReadHook(reader);
        }
예제 #7
0
 static AnimationHook()
 {
     AnimDoneHook          = new AnimationHook();
     AnimDoneHook.HookType = AnimationHookType.AnimationDone;
 }