ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/OniSplit/Objects/TurretClass.cs
Revision: 1114
Committed: Wed Jan 22 14:08:57 2020 UTC (5 years, 8 months ago) by iritscen
File size: 3363 byte(s)
Log Message:
Adding OniSplit source code (v0.9.99.0). Many thanks to Neo for all his work over the years.

File Contents

# Content
1 using System;
2 using System.Collections.Generic;
3 using Oni.Akira;
4 using Oni.Motoko;
5 using Oni.Physics;
6
7 namespace 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 }