source: OniSplit/Objects/TurretClass.cs@ 1119

Last change on this file since 1119 was 1114, checked in by iritscen, 5 years ago

Adding OniSplit source code (v0.9.99.0). Many thanks to Neo for all his work over the years.

File size: 3.3 KB
Line 
1using System;
2using System.Collections.Generic;
3using Oni.Akira;
4using Oni.Motoko;
5using Oni.Physics;
6
7namespace Oni.Objects
8{
9 internal class TurretClass : GunkObjectClass
10 {
11 public string BaseName;
12 public int Flags;
13 public int FreeTime;
14 public int ReloadTime;
15 public int BarrelCount;
16 public int RecoilAnimType;
17 public int ReloadAnimType;
18 public int MaxAmmo;
19 public int AttachmentCount;
20 public int ShooterCount;
21 public float AimingSpeed;
22 public Geometry BaseGeometry;
23 public GunkFlags BaseGunkFlags;
24 public Geometry TurretGeometry;
25 public GunkFlags TurretGunkFlags;
26 public Geometry BarrelGeometry;
27 public GunkFlags BarrelGunkFlags;
28 public Vector3 TurretPosition;
29 public Vector3 BarrelPosition;
30
31 public static TurretClass Read(InstanceDescriptor turr)
32 {
33 var klass = new TurretClass();
34
35 InstanceDescriptor baseGeometryDescriptor;
36 InstanceDescriptor turretGeometryDescriptor;
37 InstanceDescriptor barrelGeometryDescriptor;
38
39 using (var reader = turr.OpenRead())
40 {
41 klass.Name = reader.ReadString(32);
42 klass.BaseName = reader.ReadString(32);
43 klass.Flags = reader.ReadUInt16();
44 klass.FreeTime = reader.ReadUInt16();
45 klass.ReloadTime = reader.ReadUInt16();
46 klass.BarrelCount = reader.ReadUInt16();
47 klass.RecoilAnimType = reader.ReadUInt16();
48 klass.ReloadAnimType = reader.ReadUInt16();
49 klass.MaxAmmo = reader.ReadUInt16();
50 klass.AttachmentCount = reader.ReadUInt16();
51 klass.ShooterCount = reader.ReadUInt16();
52 reader.Skip(2);
53 klass.AimingSpeed = reader.ReadSingle();
54 baseGeometryDescriptor = reader.ReadInstance();
55 reader.Skip(4);
56 klass.BaseGunkFlags = (GunkFlags)reader.ReadInt32();
57 turretGeometryDescriptor = reader.ReadInstance();
58 klass.TurretGunkFlags = (GunkFlags)reader.ReadInt32();
59 barrelGeometryDescriptor = reader.ReadInstance();
60 klass.BarrelGunkFlags = (GunkFlags)reader.ReadInt32();
61 klass.TurretPosition = reader.ReadVector3();
62 klass.BarrelPosition = reader.ReadVector3();
63 }
64
65 if (baseGeometryDescriptor != null)
66 klass.BaseGeometry = GeometryDatReader.Read(baseGeometryDescriptor);
67
68 if (barrelGeometryDescriptor != null)
69 klass.BarrelGeometry = GeometryDatReader.Read(barrelGeometryDescriptor);
70
71 if (turretGeometryDescriptor != null)
72 klass.TurretGeometry = GeometryDatReader.Read(turretGeometryDescriptor);
73
74 return klass;
75 }
76
77 public override ObjectGeometry[] GunkNodes
78 {
79 get
80 {
81 return new[] {
82 new ObjectGeometry {
83 Geometry = BaseGeometry,
84 Flags = BaseGunkFlags
85 }
86 };
87 }
88 }
89 }
90}
Note: See TracBrowser for help on using the repository browser.