sync changes
This commit is contained in:
parent
857b08a39a
commit
1cbad2da04
|
@ -10,8 +10,8 @@ enum ElemType {
|
||||||
water oil lava
|
water oil lava
|
||||||
// Gas(?)
|
// Gas(?)
|
||||||
vapour methane
|
vapour methane
|
||||||
// Extra(?)
|
// Extra(?) / Compounds
|
||||||
soil biomass silt
|
soil biomass silt grass
|
||||||
|
|
||||||
//// Secondary form
|
//// Secondary form
|
||||||
glass concrete brick steel plastic cement
|
glass concrete brick steel plastic cement
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
module bits
|
||||||
|
|
||||||
|
// Material Elem Record
|
||||||
|
struct MaterialElem {
|
||||||
|
mut:
|
||||||
|
// n_bits
|
||||||
|
bits_size int
|
||||||
|
elem &Elem
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Many objects can share the same material
|
||||||
|
// Can be compound / multiple elements per material
|
||||||
|
// XXX TODO: ? bits amount values / calculations in percentages?
|
||||||
|
// XXX like 20% wood 80% grass?
|
||||||
|
// XXX how to calculate the amount of material/bits?
|
||||||
|
// XXX via object mass/weight (must be specified)?
|
||||||
|
|
||||||
|
// XXX or 10% glass 90% concrete?
|
||||||
|
// XXX do we really need such materials?
|
||||||
|
|
||||||
|
struct Material {
|
||||||
|
mut:
|
||||||
|
name string
|
||||||
|
|
||||||
|
//elems map[string]&Elem
|
||||||
|
elems map[string]&MaterialElem
|
||||||
|
}
|
||||||
|
|
||||||
|
fn new_material() &Material {
|
||||||
|
m := &Material{}
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add elem record
|
||||||
|
fn (mut m Material) add_elem(bits_size int, elem &Elem) {
|
||||||
|
|
||||||
|
me := &MaterialElem{bits_size, elem}
|
||||||
|
m.elems[elem.name] = me
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get elem record by name
|
||||||
|
fn (m &Material) get_elem_name(elem_name string) &MaterialElem {
|
||||||
|
|
||||||
|
me := m.elems[elem_name]
|
||||||
|
|
||||||
|
//if isnil(me) {
|
||||||
|
// panic(2)
|
||||||
|
//}
|
||||||
|
|
||||||
|
return me
|
||||||
|
}
|
|
@ -20,7 +20,8 @@ mut:
|
||||||
// XXX use volume to calculate object bounds.
|
// XXX use volume to calculate object bounds.
|
||||||
|
|
||||||
// Material/Elem
|
// Material/Elem
|
||||||
elem &Elem // XXX use id/enum
|
//elem &Elem // XXX use id/enum
|
||||||
|
mat &Material
|
||||||
|
|
||||||
// Position in the world
|
// Position in the world
|
||||||
// XXX in map cells/coords?
|
// XXX in map cells/coords?
|
||||||
|
@ -34,7 +35,7 @@ mut:
|
||||||
|
|
||||||
// Object size/volume in bits
|
// Object size/volume in bits
|
||||||
// amount of bits
|
// amount of bits
|
||||||
bits_size int
|
//bits_size int
|
||||||
|
|
||||||
// Bits of object's voxel model
|
// Bits of object's voxel model
|
||||||
//bits [10][10]ObjectBit
|
//bits [10][10]ObjectBit
|
||||||
|
@ -42,7 +43,8 @@ mut:
|
||||||
|
|
||||||
fn new_object() &Object {
|
fn new_object() &Object {
|
||||||
o := &Object{
|
o := &Object{
|
||||||
elem: &Elem(0),
|
//elem: &Elem(0),
|
||||||
|
mat: &Material(0),
|
||||||
//transform: new_transform(),
|
//transform: new_transform(),
|
||||||
}
|
}
|
||||||
return o
|
return o
|
||||||
|
@ -59,14 +61,22 @@ fn (o &Object) volume() f32 {
|
||||||
return bits_to_m3(o.bits_volume())
|
return bits_to_m3(o.bits_volume())
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calc mass in kg
|
// Calc total mass in kg
|
||||||
fn (o &Object) mass() f32 {
|
fn (o &Object) mass() f32 {
|
||||||
mat_density := o.elem.density
|
|
||||||
mat_volume := o.volume()
|
|
||||||
|
|
||||||
ret := mat_density * mat_volume
|
mut total_mass := 0
|
||||||
|
|
||||||
return ret
|
for _, me in o.mat.elems {
|
||||||
|
|
||||||
|
mat_density := me.elem.density
|
||||||
|
mat_volume := me.bits_size
|
||||||
|
|
||||||
|
mass := mat_density * mat_volume
|
||||||
|
|
||||||
|
total_mass += mass
|
||||||
|
}
|
||||||
|
|
||||||
|
return total_mass
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set size in meters
|
// Set size in meters
|
||||||
|
|
Loading…
Reference in New Issue